Термистор показывает температуру "Наоборот" (показания уменьшаются при нагреве)
- Войдите на сайт для отправки комментариев
Добрый день!
Такая проблема - подключаю терморезистор на 100К Ом по схеме делителя, с постоянным резистором на 93К ОМ.
Скетч нашел в сети - примеров много везде принцип один и тот же, получаем сопротивление и переводим его в температуру по формуле Стейнхарта-харта.
Вот простейший найденный скетч который должен выводить сопротивление термистора для дальнейшего вычисления температуры:
// значение 'другого' резистора #define SERIESRESISTOR 93000 // к какому пину подключается термистор #define THERMISTORPIN A0 void setup(void) { Serial.begin(9600); } void loop(void) { float reading; reading = analogRead(THERMISTORPIN); Serial.print("Analog reading "); Serial.println(reading); // преобразуем полученные значения в сопротивление reading = (1023 / reading) - 1; reading = SERIESRESISTOR / reading; Serial.print("Thermistor resistance "); Serial.println(reading); delay(1000); }
Проблема заключается в том, что этот скетч показывает значения сопротивления которые растут, при нагреве термистора, причем растут выше 100К Ом. Соотвтественно и температура после преобразований уменьшается при нагреве датчика...
Причем термистор точно NTC : при замере сопротивления мультиметром оно падает при нагреве!
Пробовал подключать датчик не к +5, а к земле, и соотвтественно конец другого плеча (постоянного резистора) - к +5v - не помогло, выдает чушь.
Проблема очевидно в програмной части, но что-то не пойму где именно..
https://ru.wikipedia.org/wiki/%D0%A3%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD...
А слабо самому формулу пересчёта вывести? Может тогда в 15 строке будет другое действие?
Поменяйте местами термистор и резистор, а потом отпишитесь что получится
qwone,
Не совсем понял ссылку, т.к. в скетче нет преобразования сопротивления в температуру - ошибка в самом измерении сопротивления.
Baks
Благодарю! Так заработало с этим скетчем - считает в правильную сторону.
nik182
Спасибо, да действительно, поменял на умножение и заработало.
http://arduino-diy.com/arduino-thermistor и теория и пример скетча. У меня на 3D принтере и стол и хотэнд на основе этого работают.
svm
По этой статье и делал) скетч тот же самый.
Дальше по тексту статьи есть скетч, который выдает температуру в градусах цельсия. Сравнивал с термопарой, разница показаний от 20 до 250 градусов 1-2 градуса
попытался откалибровать этот датчик по формуле апроксимации полученной из экселя по 3м точкам (знаю что мало) -
формула получилась такая: y=6E+07х^-1,975
попытался вставить это в код вот в таком виде:
termres - это сопротивление резистора, полученное ранее (тип flоat)
termistor1 имеет тип double.
конечный вывод показывает "inf *С"...
думаю проблема в том, что после деления единицы на сопротивление в степени 1,975 (для получения отрицательной степени) - в сериал выдается 0.0 - почему так? нехватает разрядности чтобы вычислить? как быть тогда?
формула получилась такая: y=6E+07^-1,975
это не формула, это константа.
да, пропустил х в уравнении. поправил.
Вот кусочек скетча, который измеряет температуру и управляет нагревателем
Разница показаний с китайским тестером с термопарой практически совпадает и зависит в основном от качества теплового контакта
Это расчет по формуле стенхарта-харта, только переменные не такие как в моем примере...
Вчера тоже вернулся к рассчету по формуле, но использовал не номинальные значения резисторов и В-констранту, а подогнал их под показания датчика ds18b20 (скрутил их изолентой вместе). В итоге в программе учитываются следующие вводные:
Номинал термистора 105 000 Ом (Ro)
Номинальная температура 23С (То)
Резистор-делитель 103000 Ом
В-коэффициент 4020
С этими параметрами, а также с учетом выборки из 50 значений - удалось достичь расхождения с ds18b20 не более 0,3 С - что очень охороший результат для меня.
К сожалению термистор более инертный и при быстром охлаждении или нагреве, показатели разнятся до 2С, но когда температура стабилизируется - практически идентичны.
Хочу подключить 2 Термистора (одинаковых) - подскажите можно ли сделать это через 1 резистор (паралельно подключить, только к разным пинам) или нужно отдельный, на каждый?
Однозначно два резистора. Попробуйте нарисовать схему подключения для Вашего варианта. Если получится - смело патентуйте.