Здравствуйте. Подскажите, пожалуйста, что не так? Подключаю все так же, как на схеме. Использую такой же код: Код (C++): #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?
100ms - это как часто измеряется температура внутри микросхемы. А ваши 10 секунд - это время за которое микросхема прогревается до температуры окружающей среды.
Спасибо, я понял. Но это слишком много времени, чтоб узнать текущую температуру. Может, посоветуете датчик который делает это более быстрее? DHT11/22 слишком большой. А что насчет негерметичного DS18B20? Подойдет ли он, сможет ли он быстро реагировать на даже не значительное изменение внешней среды?
DS18B20 довольно шустрый, тепло от руки сразу распознает. Но учтите, что у него пауза между измерениями уже 750 мс, а не 100.
Да, но это если измерять разрешением 12 бит. А если 9, то это уже не 750, а 93,75. Остается вопрос, как это изменить?) Потому что по стандарту везде написано что время - 750мс. А ещё вопрос: тепло от руки распознает который герметичный (1), или простой (2)? В приложении представлены оба. 1) 2)
задержка тупо прописана в скетче. Распознает простой, но, думаю, герметичный будет не сильно медленее - гильза небольшая и пустотелая, прогреется быстро.
температуру воды хочу померить. а скорость важна чтоб не перегрелась и по нагреву в бойлере до определенной температуры - отключалась. есть варианты как это можно сделать изящнее и интереснее?)
<sarcasm> А что за марка бойлера, который за 3 секунды 50 литров воды превращает в кипяток? Скромные расчеты показывают что в эти три секунды мощность 5 мегаватт нужна </sarcasm> Если серьезно, то: - если датчик в бойлере с водой, то хватит и любого интегрального датчика про которые упоминалось выше - если вода проточная и надо быстро реагировать на изменение, то можно посмотреть в сторону RTD, т.е. связка из платинового термодатчика PT100 или PT1000 и АЦП к нему: http://datasheets.maximintegrated.com/en/ds/MAX31865.pdf
Спасибо большое. Прочитал про платиновый термодатчик - то что нужно! А главное - стоимость: 150рублей за термопару, удивился) Датчик ~400р +- 50р. Спасибо большое ещё раз ВСЕМ! Получил именно то, что хотел, то, зачем пришел. Очень интересная тема. Всем участникам беседы БЛАГОДАРНОСТЬ!