• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Работа с ADC esp8266

funny59

New member
Хочу с помощью ADC измерять заряд батареи. Как работать с ADC на esp в arduino ide? Какие особенности есть у ADC? Я правильно понял, что максимальное входное напряжение один вольт?
 

enjoynering

Well-known member
Да один вольт. Поэтому нужен делитель на входе, иначе спалите порт. У популярных карт аля wimos он уже распаян. Также можно мерять напряжение питание с помощью внутренних цепей чипа (без делителя и не подключая ничего на вход 10-bit adc). Но тут возникает проблема при использовании все тех же wimos - их распаянный делитель вносит искажения в измеряемою величину.

Команда считывает значение ADC (АЦП) с TOUT:

Код:
analogRead(A0);
возвращает значения (0 = 0V, 1023 = 1.0V)

The ESP can also use the ADC to measure the supply voltage (VCC). To do this, include at the top of your sketch

Код:
ADC_MODE(ADC_VCC);
and use

Код:
ESP.getVcc();
to actually get the voltage. If you use it to read the supply voltage, you can’t connect anything else to the analog pin!!!
 
Последнее редактирование:

andrik_zp

Member
Поставить на вход ацп конденсатор 0.1 мк, так-же можно делать несколько выборок и высчитывать среднее значение.
 

nikolz

Well-known member
А что делать со скачущими показаниями?
вот результат измерения напряжения питания ESP через АЦП
команда: vdd33 = readvdd33();
это лог сервера на компе , на который ESP отсылаете по UDP свои данные.
-----------------------------------
03/17/18 17:02:26 test;3181;29;39;2/56;0/190_3
03/17/18 17:02:29 test;3182;29;39;2/55;0/190_3
03/17/18 17:02:33 test;3181;29;39;2/56;0/189_3
03/17/18 17:02:35 test;3182;29;39;2/56;0/191_3
03/17/18 17:02:39 test;3182;29;39;2/57;0/192_3
03/17/18 17:02:43 test;3181;29;39;2/56;0/189_3
03/17/18 17:02:47 test;3181;29;39;2/56;0/189_3

03/17/18 17:03:20 test;3178;29;39;2/56;0/189_3
03/17/18 17:03:23 test;3178;29;39;2/56;0/189_3
03/17/18 17:03:27 test;3179;29;39;2/56;0/202_3
03/17/18 17:03:32 test;3181;29;39;2/54;0/189_3
03/17/18 17:03:34 test;3181;29;39;2/57;0/189_3
03/17/18 17:03:36 test;3181;29;39;2/56;0/190_3
03/17/18 17:03:38 test;3181;29;39;2/56;0/189_3
03/17/18 17:03:40 test;3182;29;39;2/87;0/189_3

03/17/18 17:04:20 test;3181;29;39;2/56;0/189_3
03/17/18 17:04:23 test;3181;29;39;2/56;0/191_3
03/17/18 17:04:26 test;3182;29;39;2/55;0/191_3
03/17/18 17:04:29 test;3182;29;39;2/56;0/189_3
03/17/18 17:04:32 test;3182;29;39;2/56;0/189_3
03/17/18 17:04:36 test;3182;29;39;2/56;0/190_3
03/17/18 17:04:40 test;3182;29;39;2/56;0/189_3
03/17/18 17:04:43 test;3181;29;39;2/55;0/190_3

03/17/18 17:05:08 test;3182;29;39;2/56;0/197_3
03/17/18 17:05:11 test;3181;29;39;2/56;0/189_3
03/17/18 17:05:14 test;3181;29;39;2/56;0/189_3
03/17/18 17:05:19 test;3178;29;39;2/56;0/189_3

03/17/18 17:05:54 test;3181;29;39;2/56;0/190_3
03/17/18 17:05:57 test;3182;29;39;2/56;0/192_3
03/17/18 17:06:00 test;3182;29;39;2/55;0/189_3
03/17/18 17:06:03 test;3181;29;39;2/56;0/190_3

03/17/18 17:07:14 test;3182;29;39;2/137;0/191_3
03/17/18 17:07:18 test;3181;29;39;2/56;0/190_3

03/17/18 17:13:28 test;3186;29;39;2/55;0/190_3
03/17/18 17:13:43 test;3186;29;39;2/55;0/189_3
03/17/18 17:13:58 test;3185;29;39;2/55;0/189_3
03/17/18 17:14:12 test;3185;29;39;2/55;0/189_3
03/17/18 17:14:27 test;3187;29;39;2/59;0/189_3
03/17/18 17:14:41 test;3186;29;39;2/55;0/190_3

03/17/18 17:20:01 test;3186;29;39;2/55;0/194_3
03/17/18 17:20:16 test;3186;29;39;2/55;0/190_3
03/17/18 17:20:30 test;3187;29;39;2/57;0/190_3
03/17/18 17:20:45 test;3188;29;39;2/55;0/189_3

03/17/18 19:59:14 test;3186;29;39;2/59;0/191_3
03/17/18 19:59:17 test;3187;29;39;2/55;0/189_3
03/17/18 19:59:20 test;3186;29;39;2/55;0/190_3
03/17/18 19:59:23 test;3186;29;39;2/55;0/189_3

03/17/18 20:01:00 test;3187;29;39;2/55;0/189_3
03/17/18 20:01:02 test;3186;29;39;2/55;0/189_3

03/17/18 20:01:44 test;3186;29;39;2/56;0/189_3
03/17/18 20:01:47 test;3187;29;39;2/55;0/189_3
03/17/18 20:01:50 test;3186;29;39;2/56;0/189_3
03/17/18 20:01:53 test;3186;29;39;2/56;0/196_3
03/17/18 20:01:56 test;3186;29;39;2/56;0/191_3
--------------------------------
выделено напряжение в мв.
Видно, что ничего особливо не скачет.
 
Последнее редактирование:

andrik_zp

Member
Так вас скачущие миливольты не устраивают? А вы пробовали посмотреть на питание вашего модуля с помощью осциллографа? Округляйте до десятых долей вольта и не заморачивайтесь.
 

funny59

New member
Так вас скачущие миливольты не устраивают? А вы пробовали посмотреть на питание вашего модуля с помощью осциллографа? Округляйте до десятых долей вольта и не заморачивайтесь.
Ну так-то да, не очень важно, но осцилом посмотрю
 

Алексей.

Active member
К одному источнику питания подключил два модуля, есп-12 и есп-01, выполнял одновременно замеры напряжения питания, на одном получил 3410-3413, на другом 3508-3511.
Жестокий разброс в 0.1 В.
Теперь уж и не знаю как определить когда менять батарейку...
 

nikolz

Well-known member
К одному источнику питания подключил два модуля, есп-12 и есп-01, выполнял одновременно замеры напряжения питания, на одном получил 3410-3413, на другом 3508-3511.
Жестокий разброс в 0.1 В.
Теперь уж и не знаю как определить когда менять батарейку...
А в чем проблема?
ESP работает при 2.6 в.
меняйте когда показывает 2.7
 

Алексей.

Active member
Проблема я том, что измеренное значение самим модулем может сильно отличаться от реального значения. Я ещё лабораторным прибром не измерял пока ;)
Динамику разряда оценить можно, а получить значение напряжения с точностью в 1% нельзя.
А в чем проблема?
ESP работает при 2.6 в.
меняйте когда показывает 2.7
Предположим показывает 2.7 а реальное 2.8, менять рано.
Батарейка 3.6 В стоит дороже модуля однако.
 
Последнее редактирование:

nikolz

Well-known member
Проблема я том, что измеренное значение самим модулем может сильно отличаться от реального значения. Я ещё лабораторным прибром не измерял пока ;)
Динамику разряда оценить можно, а получить значение напряжения с точностью в 1% нельзя.

Предположим показывает 2.7 а реальное 2.8, менять рано.
Батарейка 3.6 В стоит дороже модуля однако.
А вы измеряйте напряжение внутри ESP.
А меняйте, когда перестанет работать.
 

Алексей.

Active member
А вы измеряйте напряжение внутри ESP.
Как это внутри? Я вроде и начал с этого
1) для измерения напряжения питания ESP есть функция SDK
system_get_vdd33
Куда уж глубже.

Устройство с автономным питанием в основном спит, очень глубоко, раз в час просыпается (секунд на 5-8) снимает показания, передает их на удаленный сервер (вместе с показаниями передается измеренное напряжение батареи) и засыпает.
А меняйте, когда перестанет работать.
Когда перестает работать это ещё не означает что батарея разряжена, может проблемы со связью или устройство просто украли. В том и другом случае действуют немножко разные регламенты решения инцидента.
 

nikolz

Well-known member
Как это внутри? Я вроде и начал с этого

Куда уж глубже.

Устройство с автономным питанием в основном спит, очень глубоко, раз в час просыпается (секунд на 5-8) снимает показания, передает их на удаленный сервер (вместе с показаниями передается измеренное напряжение батареи) и засыпает.

Когда перестает работать это ещё не означает что батарея разряжена, может проблемы со связью или устройство просто украли. В том и другом случае действуют немножко разные регламенты решения инцидента.
я тестировал ESP получилось что перестает работать когда внутри напряжение показывает менее 2 вольт.
Но и тогда можно еще работать но без WIFI
Если в основном спит то делайте без батарейки
солнечная панелька и суперкондер. Полного заряда 1 f хватит на 20 коротких сообщений.
---------------------
Или создайте корректировочную таблицу для напряжения
 

Алексей.

Active member
Интересная тема, тем более солнечная панелька 3В 30ма и суперкап на 1f дешевле литиевой батарейки получится, только солнца останется найти.
 

nikolz

Well-known member
Интересная тема, тем более солнечная панелька 3В 30ма и суперкап на 1f дешевле литиевой батарейки получится, только солнца останется найти.
днем всегда светло да если пасмурно.
Я делал так.
При просыпании запускается прошивка без WIFI и измеряется напряжение питания если мало то спать и накапливать При этом можно измерять с датчика и сохранять данные в RAM RTC
если хватит то рестарт с WIFI и передача
 

Zhenya88

Member
Ребят, поделитесь знаниями.
Использую ESP8266 Witty Cload.
Выпаян фоторезистор, и стабилизатор AMS1117, питание напрямую на VCC от аккумулятор (3,7-4,2V). При получении данных через ESP.getVcc() в переменную long получаю значение 65535.
Если я в начале вставляю "ADC_MODE (ADC_VCC);", то при компиляции получаю ошибку в строке
"
Код:
void callback(const MQTT::Publish& pub)
" (бибилиотека MQTT PubSub), что MQTT не определена (противоречия библиотек?)

Что я делаю не так?
 

Сергей_Ф

Moderator
Команда форума
Можно вместо фоторезистора впаятт постоянный и мерить аналог. По поводу ошибки - не подскажу.
 

Zhenya88

Member
Можно вместо фоторезистора впаятт постоянный и мерить аналог. По поводу ошибки - не подскажу.
я никак не пойму почему я значение 65000 получаю, т.е. предел значения long…
постоянный резистор будет ток жрать, а устройство батарейное с дипслипами.
 

nikolz

Well-known member
я никак не пойму почему я значение 65000 получаю, т.е. предел значения long…
постоянный резистор будет ток жрать, а устройство батарейное с дипслипами.
максимальное значение на выходе однополярного АЦП - это число со всеми единицами в разрядах.
Если взять число размером в байт т е 11111111 (255,0xFF) и преобразовать в short
то преобразование будет выполнено путем расширения знака т е получим 1111111111111111 или ,в формате unsigned short 65535
а long - это 4 байта т е в формате unsigned long 4294967295
 
Сверху Снизу