• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь АЦП уплывает вверх

DTsurkov

New member
Всем добрый день!

Собрал на esp12e метеостанцию. Питание от lipo с зарядкой от солнца. Единственный АЦП вход esp12e используется для контроля заряда аккумулятора. Схема работы такая: модуль проснулся из deep sleep, подключился к wi-fi, опросил датчики, передал всё с помощью get запроса мне на сервер и снова уснул на 8 минут. За полгода работы заметил, что значения АЦП начинает сильно уплывать вверх.
У меня стоит делитель, который делит в ~5 раз напряжение акб для входа на АЦП. Для расчёта напряжения использую линейную аппроксимацию (построил по 20 точкам с помощью мультиметра).
Так вот. На старте работы полностью заряженая акб даёт 4.21 вольта. Что отлично измеряет АЦП. Далее я вижу по данным станции что в пасмурную погоду (и ночью) акб разряжается, днём под солнцем опять заряжается — всё хорошо. Но вот спустя несколько месяцев максимальное значение напряжения АЦП уже показывает не 4.21В (что ограничивается специальной схемой, к слову), а 4.8В!

В итоге за полгода работы АЦП стал завышать значение где-то на 0.5В. От чего это может происходить?

Да, код написан в arduino ide.
 

Jury_78

New member
готовый модуль для зарядки на TP4056 с ali за 20р =)

Да и не может всё равно быть 4.8В на батарейке. К тому же, я доставал станцию из за окна, смотрел мультиметром, на батарейке было 4.1...
А делитель проверяли? Как вообще с защитой от влажности?
 

rst

Member
делитель — два резистора. Не думаю, что с ними могло что-то случиться, но проверю вечером.
За полгода что произошло? Точно! - наступила весна! ;)
Ваша метеостанция случайно не на солнечной стороне висит? :eek:
ещё и комплектация с али....
 

pvvx

Активный участник сообщества
За полгода что произошло? Точно! - наступила весна! ;)
Ваша метеостанция случайно не на солнечной стороне висит? :eek:
ещё и комплектация с али....
В Arduino идут не сырые данные с ADC, а с пересчетом. Коэф. записан отдельно и в писаниях Espressif указано, как их откалибровать и где он хранится...
Влажность тоже надо учитывать, но наверно там не совсем всё тяп-ляп и в кислотном флюсе... :)
 

rst

Member
В Arduino идут не сырые данные с ADC, а с пересчетом. Коэф. записан отдельно и в писаниях Espressif указано, как их откалибровать и где он хранится...
Я не о том совсем...
Температурный диапазон использованных компонентов почти наверняка - Commercial, т.е. - верхний температурный предел ==80 градусов (или около того). На солнце, да в закрытом корпусе без вентиляции может быть больше.

Да даже если говорить о температурной компенсации: ну и что что компенсируется АЦП внутри ESP, а внешние цепи (у автора там некий "делитель") кто-нить компенсировал? А температурную характеристику этого делителя - учёл?
А с температурной стабильностью источника опоры для АЦП всё в порядке?
 
Последнее редактирование:

pvvx

Активный участник сообщества
Я не о том совсем...
А как не крутите - разница в процентах выдает, что что-то не то в другом. Более походит на программный сбой/глюк или из-за влажности (отвалилось/окислилось). Уход -22% и +14% - смотря от чего брать %...
Для программного глюка в этом деле (на ESP8266) больше вероятность - Данные в Flash перезаписываются при каждом старте, а сбойнуть в этот момент по питанию или ещё как SDK там может всегда (так оно коряво написано у Espressif). Калибровки переписываются, до дырки...
Далее, если брать вероятности - влажность и реакция с флюсом...
Потом уже остальное.
На +80С, если чип ESP8266 работает - то больше вероятность, что он уже не будет работать никогда. Выход чипа из строя из-за перегрева передатчика там част (судя по статистике форума и экспериментов). Тут есть прямая зависимость от типа модуля и версии SDK (проверка на перегрев вставлена в более поздних SDK, после попытки сертификации его Espressif). Как пример - ESP-01 при помещении в экран выходит на потребление в 1.5Вт. Это данный модуль рассеять от пятна в 5x5 мм не может и при внешних -20С -> температура кристалла уходит за +130С и наступает деградация (примесей)... Ну а при внешке +80С - сразу пробой :)
 
Последнее редактирование:

rst

Member
А как не крутите - разница в процентах выдает, что что-то не то в другом. Более походит на программный сбой/глюк или из-за влажности (отвалилось/окислилось). Уход -22% и +14% - смотря от чего брать %...
Я ничего не утверждаю и не пытаюсь гадать на кофейной гуще. Просто привёл одну из возможных причин автору для изучения.
А программный баг - он всегда возможен и, в зависимости от опыта разработчика, как правило имеет наибольшую вероятность.
И влажность - то же самое. Да что угодно, хоть даже: птички вернулись с зимовки и свили гнёздышко на девайсе автора и перегревают его :D
 

pvvx

Активный участник сообщества
Я ничего не утверждаю и не пытаюсь гадать на кофейной гуще. Просто привёл одну из возможных причин автору для изучения.
Это и есть гадание на кофейной гуще.
А программный баг - он всегда возможен и, в зависимости от опыта разработчика, как правило имеет наибольшую вероятность.
И влажность - то же самое. Да что угодно, хоть даже: птички вернулись с зимовки и свили гнёздышко на девайсе автора и перегревают его :D
У вас всё с весной повязано?
Тут только автор сможет раскрыть сикрет. Ставки будем делать? :)
 

DTsurkov

New member
Наконец нашёл время снять станцию из-за окна. Делителю хоть бы что. Делит верно =) Перезалил скетч — всё стало нормально. Вывод: беда самой платы контроллера. Скорее всего, как писали выше, программная — уплывают константы при постоянных рестартах. Появилась идея взять внешний ацп и через и2ц подключить. Так как датчики с и2ц нормально работают и не сбоят. А все расчёты вести на стороне сервера (куда станция гонит данные).

Внизу фотки платы станции. Делитель — те два резистора возле джампера.
 

Вложения

Nikitos210

New member
Наконец нашёл время снять станцию из-за окна. Делителю хоть бы что. Делит верно =) Перезалил скетч — всё стало нормально. Вывод: беда самой платы контроллера. Скорее всего, как писали выше, программная — уплывают константы при постоянных рестартах. Появилась идея взять внешний ацп и через и2ц подключить. Так как датчики с и2ц нормально работают и не сбоят. А все расчёты вести на стороне сервера (куда станция гонит данные).

Внизу фотки платы станции. Делитель — те два резистора возле джампера.
У esp8266 плавает АЦП и не только
из-за температуры окружающей среды особенно
это подробно описано в даташите
используйте 16 битный i2c ads1115 например
 

enjoynering

Well-known member
Калибровки переписываются, до дырки...
чтоб этого не происходило есть команда:

Код:
  WiFi.persistent(false);   //disable saving wifi config into SDK flash area
 
Последнее редактирование:

nikolz

Well-known member
А у меня совсем глупый вопрос. Зачем измерять напряжение при заряде батареи через TP4056 .
Какой смысл в этом измерении? проверяете исправность TP4056?
Измеряйте внутреннее напряжение питание ESP. ESP работает без проблем в диапазоне от 2.6 до 3.6 вольт (использовал даже до 4.2)
смысл измерения есть если не включать WIFI при низком напряжении питании (это 2.3 вольта)
 
Сверху Снизу