терморезистор, неправильное чтение данных
- Войдите на сайт для отправки комментариев
Сб, 14/04/2018 - 01:06
Доброй ночи, люди уже волосы на голове рву... подключаю 10 кОм терморезистор на ардуино уно, мерит температуру с точностью до второго знака, подмышкой показывает 36.63!!! подключаю точно ТАК ЖЕ к ардуино нано или ESP8266 через ADS1115 I2C и вместо 36.6 появляется 49, комнатная - вместо 25 показывает 27, пробовал разные библиотеки результат не меняется :( что делать, куда копать?...
Спросите у того, кто видел Ваши схему подключения и скетч.
схема стандартная,

скетчи перебробовал штук 20 из инета - результат один и тот же, правльное измерение только на уно
или же этот
А где у вас в скетчах присутствует фиговина которую вы обозвали ADS1115?
1скетч строка 19, читаете с цифрового пина 0 ?, может надо A0
1скетч строка 19, читаете с цифрового пина 0 ?, может надо A0
Можно и так если это аналоговый вход.
Именно нулевой аналоговый вход.
1скетч строка 19, читаете с цифрового пина 0 ?, может надо A0
особенно точность до 2 знака :)
В одном скетче он читает с A0, в другом с A1, Wire не используется, но анонсировано применение ADS1115. Сдается мне, что мы проходим какой-то квест.
скорее всего у него нет УНО :)
1скетч строка 19, читаете с цифрового пина 0 ?, может надо A0
особенно точность до 2 знака :)
Там вообще-то Thermister с точностью до одного знака, смотрите внимательней, пожалуйста.
1скетч строка 19, читаете с цифрового пина 0 ?, может надо A0
особенно точность до 2 знака :)
надо подождать когда схему и скетч с ADS1115 выложит
надо подождать когда схему и скетч с ADS1115 выложит
Все 20 скетчей мы не переживём. ;)
igorlab, а откуда Вы взяли константы в 5 и 6 строках скетча?
И еще: насколько я понял, Вы выложили схему, которая работает. А где схема, которая не работает?
Да, и еще: Ваша схема при таком подключении работать не будет. Ни одна схемиа не может работать, если на нее не подать питание. Только не надо говрить, что это само собой разщумеется. Совершанно очевидно, что Вы где-то допустили глупую ошибку, а где именно - можно понять только если обладать всей информацией, а не только той, которую Вы сочли нужным опубликовать. Если бы Вы знали, что нужно публиковать, а что нет - Вы бы сами справились с задачей без посторонней помощи.
Например, вполне вероятно, что Вы питаете делитель не от 5 Вольт, а от Vin, или еще что-нибудь подобное.
Особо не вникал в тему... Вот навскидку что нашёл, может поможет.
http://www.14core.com/wiring-the-ads1115-analog-to-digital-converter-with-thermistor-on-microcontroller/
http://www.instructables.com/id/16-bit-I2C-Temperature-Monitor-Using-Ard...
Какой конкретно терморезистор у вас? Например здесь параметры.
https://static.chipdip.ru/lib/051/DOC000051122.pdf
Судя по приведённой в #2 картинке точность мах 5% , т.е. без калибровки кривой нагрева точность со знаками после запятой не получить. Коэффициенты в скетчах либо некое среднее по больнице, либо подобранные под конкретные экземпляры. Если второе,то на других детальках ошибка может быть ещё больше. На форуме уже обсуждалось как калибровать терморезистор. По крайней мере по точкам 100, 36.6, 0 градусов можно довольно точно построить кривую нагрева. Тогда и ошибки будут минимальными.
спасибо за ответы! :)
разные пины потому что сейчас вокруг меня 4 контролера и на них пытаюсь что-то померить,
для АЦП изменил библиотеку #include "thermistor.h"
прикол в том что все скетчи работают на уно! :( на нано и есп8266 читает но не правильно показывает температуру :(
схема стандартная,
А стандартная здесь никому не нужна. Нужна та, которая у Вас не работает (с ADS1115).
А это не схема - это Ваша ленивая задница, которой лень нарисовать свою схему и сделать фото своей сборки.
Но если Вам лень решать свою проблему, какие у Вас основания ожидать, что кому-то не лень решать Вашу?
Евгений, схема действительно стандартная :) не работает и с ардуино нано,
в RO впаян обычный 10 кОм резистор, в разъем RT вставляется штекер терморезистора
Можно померить тестером +5 вольт и напряжение на А0?
Можно померить тестером +5 вольт и напряжение на А0?
Почти невозможно.
Точно также как и поменять терморезистор на 10кОм постоянный
и искать почему показания не равны 25 градусов.
Проще подмышку как эталон температуры использовать.
Ну и на десерт, 1115, 1015 -. какая разница.........
Впечатление что скетч никто и не запускал.......
Проще подмышку как эталон температуры использовать.
...подмышку мамки. о_О
igorlab, приведенная Вами схема не дает представления, ка4к именно у Вас разведены питение и земля, но похоже, что Ваша проблема связана с тем, что Вы на Vin подаете 5 Вольт.
Измерьте, какое на самом деле напряжение на контакте Ардуино, подписанном "5V" (27 нога).
Ну и на десерт, 1115, 1015 -. какая разница.........
Впечатление что скетч никто и не запускал.......
разница в рязрядности АЦП, запускал и он даже работал, но температуру показывал неправильно.
СПАСИБО ЗА ПОДСКАЗКИ, с нано РАЗОБРАЛСЯ! проблема была в том что на терморезистор подавалось стабилизированное напряжение от БП, а на ардуине после линейника было 4.68, когда на терморезистор стал подавать напряжение с ноги +5 ардуино, то температура начала читаться правильно аж до десятых! идею ЕСП с АЦП забросил...
Делаю, не пинайте ногами, очередной контроллер для аквариума, он будет следить за температурой воды в акве, температурой и влажностью в тумбе с сампом, при необходимости вентилировать тумбу кулером, вкл и откл УФ для обеззараживания воды, измерять рН, автоматически доливать испарившийся объем воды и следить за уровнем воды в емкости автодолива, оповещть о заполнении емкости скимера. Оповещать планирую по с помощью бота телеграма. Идея такова - нано отправляет в порт Тх Rx строку со всеми параметрами, ЕСП ее читает и парсит, в случае недопусимых параметров - к примеру сработал датчик низкого уровня воды в емкости автодолива бот отправляет сообщение. формирование строки на нано сделал, парсинг строки на ЕСП тоже работает, но вот с порта пока читать не хочет, так что у меня будет еще много вопросов :)
пршу прощения - тему создал без необходимых деталей, постараюсь дальше так не туканить :)
Вот блокирнут телеграм, и как рыбки будут привет передавать :(
А корованы? Не?
Не заблокируют,
Добрый вечер!
К сожалению, решение так и не нашлось. Как подключить термистор к ESP8266 через ADS1115, поэтому хочется возобновить тему.
У меня задача подключить 3 датчика к ESP8266. При подключении к А0 на ESP проблем нет, но вот с ADS1115 не могу подружиться.
Термисторы использую
https://aliexpress.ru/item/1885494206.html?spm=a2g0s.9042311.0.0.264d33edrgNwFT
При комнатной температуре приблизительно 23 градуса
temp1 показывает 23 (analogRead(А0)
temp2 показывает -9.8
temp3 показывает 47.7
adc.readADC_SingleEnded(0) считывает 7750
напряжение с ADS на A0 1.43В
Напряжение с пина 3.3 - 3 Вольта при подключённом дисплее
и 3.2 В при выключенном
Множество скетчей перепробовал, но без результатно. ПОМОГИТЕ кто чем может.
А зачем же вы 123 строку-то закоментировали? В итоге по умолчанию gain ставится 2/3, а при питании от 3В это вообще-то недопустимо.
меня смутило +/- 2.048V при GAIN_TWO
Спасибо за подсказку, убрал коммент и всё заработало :)
правда показания немного отличаются в 0.6 градуса, но это я уже сам разберусь.
Ещё раз спасибо
При измерении температуры термистором, фактически происходит измерение сопротивления термистора. Для того чтобы получить адекватные измерения с помощью внешнего АЦП необходимо знать точное значение напряжения питания делителя и постоянного резистора. Принимать его 3,3 В - это заведомо ошибочно. Мало того что стабилизаторы 3,3 В имеют значительный разброс по напряжению, оно еще и во времени болтается, внося хаотичное изменение показаний. Максимальная стабильность показаний возможна только если AREF = напряжению питания делителя термистора. Так как при вычислении сопротивления термистора не важны абсолютные значения напряжения питания и напряжение на термисторе. Важно их соотношение. В формулах расчета напряжение питания уничтожается. Поэтому лучшую стабильность даст схема, когда делитель подключен напрямую к источнику питания, и AREF тоже выбран от источника питания. Я пробовал для увеличения разрядности брать опорное 1,1В , а делитель (даже из двух постоянных резисторов) питать от отдельного стабилизатора, но ни разу не получил одинаковых показаний, тогда как питание от 5В и опорное 5В при одном и том-же делителе на любой ардуинке дает одно и то-же значение.
При измерении температуры термистором, фактически происходит измерение сопротивления термистора. Для того чтобы получить адекватные измерения с помощью внешнего АЦП необходимо знать точное значение напряжения питания делителя и постоянного резистора. Принимать его 3,3 В - это заведомо ошибочно. Мало того что стабилизаторы 3,3 В имеют значительный разброс по напряжению, оно еще и во времени болтается, внося хаотичное изменение показаний. Максимальная стабильность показаний возможна только если AREF = напряжению питания делителя термистора. Так как при вычислении сопротивления термистора не важны абсолютные значения напряжения питания и напряжение на термисторе. Важно их соотношение. В формулах расчета напряжение питания уничтожается. Поэтому лучшую стабильность даст схема, когда делитель подключен напрямую к источнику питания, и AREF тоже выбран от источника питания. Я пробовал для увеличения разрядности брать опорное 1,1В , а делитель (даже из двух постоянных резисторов) питать от отдельного стабилизатора, но ни разу не получил одинаковых показаний, тогда как питание от 5В и опорное 5В при одном и том-же делителе на любой ардуинке дает одно и то-же значение.
Это все абсолютно правильно. Проблема только в том, что у ADS11x5 нет пина Аref. А также нельзя выбрать напряжение питания в качестве опорного.напряжение . При использовании этого АЦП можно завести напряжение питания через делитель на один из входов и испозовать в рассчетах для компенсации.
Это все абсолютно правильно. Проблема только в том, что у ADS11x5 нет пина Аref. А также нельзя выбрать напряжение питания в качестве опорного.напряжение . При использовании этого АЦП можно завести напряжение питания через делитель на один из входов и испозовать в рассчетах для компенсации.
Это наверное будет самое оптимальное решение. Больше никак.