Работа с LM75

enclouder
Offline
Зарегистрирован: 22.09.2014

Здравствуйте.

Подскажите, пожалуйста, что не так?

Подключаю все так же, как на схеме.

  

Использую такой же код:

#include <Wire.h>

#define LM75 (0x90 >> 1)

void setup()
{
  Wire.begin();
  Serial.begin(9600);
  Serial.println("LM75 temp");
}

void loop()
{
  byte msb,lsb=0;
  
  float Grad=0;
  Wire.beginTransmission(LM75);
  Wire.write(0x00);
  Wire.endTransmission(LM75);
  Wire.requestFrom(LM75, 2);
  while(Wire.available() < 2);
    msb = Wire.read();
    lsb = Wire.read();
    

  if(msb<0x80)
  {
    Grad=((msb*10)+(((lsb&0x80)>>7)*5));
  }
  else
  {
    Grad=((msb*10)+(((lsb&0x80)>>7)*5));
    Grad=(2555.0-Grad);
  }
  
  Grad=Grad/10;
  
  Serial.print(Grad);
  Serial.println(" Grad");
  
  delay(400);
}

Залил контакты специальным клеем, чтоб не коротило и окунаю в воду сам датчик в открытом виде.

Открываю горячую воду, даю ей пробежать чтоб температура устаканилась. Сую под воду, показывает 45,46,47..52. Такой рост наблюдается не так, как указано в даташите - 100мс, а с момента попадания в воду (45*С) до конечной температуры (52*С) проходит порядка 10 секунд. Отключаю воду, температура медленно снижается до 35-30-26 градусов. Даю пробежать опять горячей воде чтоб сразу была горячая. Подставляю под воду и он опять с такой же скоростью медленно набирает обороты до конечной температуры. В чем может быть причина? Вода бежит одной температуры постоянно, а он так медленно "ростит" температуру. Тоже самое и с холодной. КОгда она уже пробежала, он с 26*С до 12*С снижается постепенно, хоть и все время находится под холодной водой одной температуры, проходит так же порядка 10 секунд. Однако если его не убирать из под воды и резко сменить на горячую, с холодной, то он с 12 прыгает до 40 и опять до 52 медленно раскачивается. 

Где-то читал, что нужно ставить кондеры, может изза их отсутствия он так себя ведет?. А может, он просто так долго соображает по факту, в отличие от даташита?) Но кажется я просто чет не так сделал. Может использовать например DS18B20? 

tpg_k156
Offline
Зарегистрирован: 03.10.2012

А вам собственно говоря не кажется, что корпус микрухи добавляет инертность данной системе, и чем больше корпус, тем больше времени надо на  прогреть/остудить.

enclouder
Offline
Зарегистрирован: 22.09.2014

Нет, мне это не казалось пока я задавал этот вопрос, грешил на что угодно, только не на это.

10 секунд - это слишком много времени, чтоб узнать текущую температуру. Может, посоветуете датчик который делает это более быстрее? DHT11/22 слишком большой. А что насчет негерметичного DS18B20? Подойдет ли он, сможет ли он быстро реагировать на даже не значительное изменение внешней среды?

tpg_k156
Offline
Зарегистрирован: 03.10.2012

enclouder пишет:

10 секунд - это слишком много времени, чтоб узнать текущую температуру. Может, посоветуете датчик который делает это более быстрее? DHT11/22 слишком большой. А что насчет негерметичного DS18B20? Подойдет ли он, сможет ли он быстро реагировать на даже не значительное изменение внешней среды?

Если задача только в измерении температуры окружающей среды, то 10сек - нормально. Сомневаюсь, что у вас будет настолько динамично меняющаяся температура.

enclouder
Offline
Зарегистрирован: 22.09.2014

Речь идет об измерении температуры воды. И да, она будет постоянно меняться и желательная точность измерения не более 2х секунд.

tpg_k156
Offline
Зарегистрирован: 03.10.2012

Ну тогда что нибудь типа термопары, покрытого очень тонким слоем диэлектрика с максимальной термопередачей.

Duino A.R.
Offline
Зарегистрирован: 25.05.2015

enclouder пишет:

Речь идет об измерении температуры воды. И да, она будет постоянно меняться и желательная точность измерения не более 2х секунд.

Промышленная термопара в герметичном корпусе, которую используют для регулировки температуры воды в котельных, имеет паспортную постоянную времени измерения 80 секунд.

enclouder
Offline
Зарегистрирован: 22.09.2014

tpg_k156 пишет:

Ну тогда что нибудь типа термопары, покрытого очень тонким слоем диэлектрика с максимальной термопередачей.

Приведите, пожалуйста, пример (ссылку) термопары, которая подойдет для arduino с питанием до 12В. Я нашел в интернете только с отдельным выводом на конкретные дисплеи. Может плохо искал. Если не сложно - будьте добры более точную ссылку с описанием.

enclouder
Offline
Зарегистрирован: 22.09.2014

Duino A.R. пишет:

enclouder пишет:

Речь идет об измерении температуры воды. И да, она будет постоянно меняться и желательная точность измерения не более 2х секунд.

Промышленная термопара в герметичном корпусе, которую используют для регулировки температуры воды в котельных, имеет паспортную постоянную времени измерения 80 секунд.

Вы хотите сказать, что мое желание об измерении температуры в течение 2х секунд - технически невозможно?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Почему нет?

Только нужно использовать не контактный, а оптический датчик.

Правда, не уверен, что он окажется в приемлемом для Вас ценовом диапазоне.

 

В принципе, насет двух секунд - не исключаю, что можно все-таки обойтись и контактным датчиком. Только его нужно выбирать по критерию максимума отношения контактной площади к теплоемкости (в первом приближении к массе). Т.е. датчик должен иметь вид тонкой плстины существенной площади.

enclouder
Offline
Зарегистрирован: 22.09.2014

andriano пишет:

Почему нет?

Только нужно использовать не контактный, а оптический датчик.

Правда, не уверен, что он окажется в приемлемом для Вас ценовом диапазоне.

 

В принципе, насет двух секунд - не исключаю, что можно все-таки обойтись и контактным датчиком. Только его нужно выбирать по критерию максимума отношения контактной площади к теплоемкости (в первом приближении к массе). Т.е. датчик должен иметь вид тонкой плстины существенной площади.

Вы правы, ценовой диапозон очень важен. Но все же, примерная цена и ссылку на датчик, можете дать?

 

Что касается тонкой пластины и существенной площади: имеете ввиду что то конкретное или просто описали принцип действия датчика? Просто, если есть что либо похожее, можете ли вы привести ссылку?

Duino A.R.
Offline
Зарегистрирован: 25.05.2015

enclouder пишет:

Вы хотите сказать, что мое желание об измерении температуры в течение 2х секунд - технически невозможно?

Может быть и возможно. Для этого датчик должен иметь минимиальную массу. "Капельная" термопара одна из самых быстродействующих, но каковы будут реальные характеристики - неизвестно. Тем более, если ее покрыть для изоляции лаком.

Термопара весьма специфичный прибор, и чтобы использовать ее именно как прибор, а не как игрушку-демонстратор, нужно весьма серьезную электронику и программную обработку.

Требование быстродействия измерения в 2 секунды температуры потока воды наводит на мысли о возможной ошибочной постановке задачи.

enclouder
Offline
Зарегистрирован: 22.09.2014

Duino A.R. пишет:

Может быть и возможно. Для этого датчик должен иметь минимиальную массу. "Капельная" термопара одна из самых быстродействующих, но каковы будут реальные характеристики - неизвестно. Тем более, если ее покрыть для изоляции лаком.

Термопара весьма специфичный прибор, и чтобы использовать ее именно как прибор, а не как игрушку-демонстратор, нужно весьма серьезную электронику и программную обработку.

Требование быстродействия измерения в 2 секунды температуры потока воды наводит на мысли о возможной ошибочной постановке задачи.

Arduino  в данном случае не такая уж и серьезная электроника как я понимаю? Серьезная программная обработка - обработка на машинном языке или просто сложные программные математические подходы?

Можете привести пример со ссылкой работы "термопары" и ардуино в совокупности?

Что скажете насчет ds18b20? Разве он не удовлетворит этим требованиям?

Duino A.R.
Offline
Зарегистрирован: 25.05.2015

enclouder пишет:

Arduino  в данном случае не такая уж и серьезная электроника как я понимаю? Серьезная программная обработка - обработка на машинном языке или просто сложные программные математические подходы?

Ардуино - это другая электроника. Типичное напряжение на выходе термопары - десятки милливольт. Здесь нужна специфичная - усилители-преобразователи с компенсацией холодного спая. В школе учат, что напряжение на выходе термопары линейно зависит от температуры. В известных мне промышленных контроллерах, чтобы выпрямить линейную термопару, используют полиномы 5-й степени.

enclouder пишет:

Можете привести пример со ссылкой работы "термопары" и ардуино в совокупности?

Термопарами в купе с Ардуино я не занимался. По-простому, это игрушка, а по-взрослому, выходит дороже самой Ардуины.

enclouder пишет:

Что скажете насчет ds18b20? Разве он не удовлетворит этим требованиям?

Вы внимательно посмотрите даташит на ds18b20. Точности, время преобразования (очень не мгновенно) и т.д. Подходит это Вам или нет. С учетом того, что измерительный элемент в пластиковом корпусе, время прогрева у него будет больше, чем у "капельной" термопары.

Duino A.R.
Offline
Зарегистрирован: 25.05.2015

enclouder, посмотрите, что такое термопара, на мой взгляд, неплохая статья.

Термопара. Устройство, принцип работы, измерения термопар.

http://www.eti.su/articles/izmeritelnaya-tehnika/izmeritelnaya-tehnika_4...

 

bwn
Offline
Зарегистрирован: 25.08.2014

Стабилизация DS18 по температуре, тоже в районе 20 секунд. Простой скетч + датчик подмышку. И чем меньше дельта температур и выше масса регистрирующего элемента, тем это время длительнее.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

enclouder пишет:

Такой рост наблюдается не так, как указано в даташите - 100мс, а с момента попадания в воду (45*С) до конечной температуры (52*С) проходит порядка 10 секунд. 

В даташите указано, что темпераьура обновляется раз в 100ms, а вовсе не то, что датчик за это время успеет остыть с горячей воды на холодную.

Всё у Вас нормально - охлаждается он 10с. Обновления показаний происходят раз в 100ms. как в даташите.

enclouder пишет:

10 секунд - это слишком много времени, чтоб узнать текущую температуру. 

Так Вы узнаёте её гораздо быстрее. Просто сама по себе температура меняется в течение 10с. Каждый раз (раз в 100ms) Вы узнаёте как раз текущую температуру датчика, которая (текущая температура) постепенно меняется. Датчик не может нагреваться и охлаждаться мгновенно.

Всё нормально у Вас.