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

Точность ADC

patrick-239

New member
Дорый вечер.

Решил я попробовать как работает ADC. Собрал простенькую схемку делитиля напряжения и написал прошивку для считывания ADC. Итог: вольтметр показывает 0.786 В, а ADC 0.809 В (после деления на 1024). Мне кажется это большая разница.

Кто то пробовал работать с ADC и проверять его показания?
 

pvvx

Активный участник сообщества
Дорый вечер.

Решил я попробовать как работает ADC. Собрал простенькую схемку делитиля напряжения и написал прошивку для считывания ADC. Итог: вольтметр показывает 0.786 В, а ADC 0.809 В (после деления на 1024). Мне кажется это большая разница.

Кто то пробовал работать с ADC и проверять его показания?
Все ADC показывают относительно источника Vref. В чипе ESP8266ex он внутренний. Указаний точности этого источника нигде не значится.
Кроме того данный ADC, типа полупрограмный SAR и не имеет входного буфера. Т.е. он имеет нелинейные "утечки" тока по входу в зависимости от входного напряжения. Простого делителя на резисторах для точных замеров недостаточно ни для какого типа ADC, тем более не имеющего входного буфера (входного усилителя).
Если проще - от номиналов вашего делителя будет зависеть входное напряжение на входе ADC как сумма токов коммутатора SAR и внешнего тока через делитель и соответственно показания ADC будут отличаться при разных номиналах резисторов, но с одинаковым коэф. деления.
Вы не указали номиналы и судить почему такая разница невозможно. Может у вас резисторы на МагаОмы и собственный ток входа превышает в сотни раз измеряемый...
Найдите литературу по подключению к ADC типа SAR и сделайте всё правильно.
1) Измерьте паразитные коммуникационные токи данного SAR на входе по всей шкале входных напряжений и разной частоте активности управления.
2) Подключите прецизионный источник напряжения, учтя гальванические связи контактов из разного металла. Измерьте показания на всей шкале применяя разные фильтры и фиксируя сырые отклонения для разных частот коммутации SAR.
3) Опубликуйте тут полученные значения.
Espressif этих данных не дает, т.к. не знает - скорее всего это не их чип и не их разработка.

... продолжение следует :)
 
Последнее редактирование:

patrick-239

New member
В данный момент я проверяю напряжение питания (USB->LM1117), те оно стабильно 3.3. Для делителя использовал резисторы 1470 (1000+470) и 470 с погрешностью 1%. Жаль образование у меня совсем из другой области, так что все написанное полностью пока не понимаю. Попробую почитать литературу. А
Интересно еще попробовать будут ли отличаться результаты на других esp с аналогичным подключением.
 

pvvx

Активный участник сообщества
В данный момент я проверяю напряжение питания (USB->LM1117), те оно стабильно 3.3. Для делителя использовал резисторы 1470 (1000+470) и 470 с погрешностью 1%. Жаль образование у меня совсем из другой области, так что все написанное полностью пока не понимаю. Попробую почитать литературу. А
Интересно еще попробовать будут ли отличаться результаты на других esp с аналогичным подключением.
В старых SDK коррекции линейности ADC не было. В новых китайцы ввели. Но наверняка что-то среднее, на определенную партию чипов или даже на один, тот который был у их программиста :)
Полная шкала, максимальное значение у разных чипов отличается - разный внутренний Vref. Он зависит от температуры и, главное, от работает или нет в данный момент WiFi. Ещё немного зависит от напряжения питания.
Т.е. для каждого чипа требуется своя калибровка, тогда точность наверно возможно свести к 5%.
Про шумы ADC последний раз писали тут http://esp8266.ru/forum/threads/raz...go-webservera-na-esp8266.56/page-37#post-9214
 
Последнее редактирование:

patrick-239

New member
Текущая погрешность 2,5%. Если в момент запуска чипа (каждого или первого + запись в ПЗУ) делать калибровку, то можно получить более менее верные значения. Попробовал поискать литературу, но ничего кардинально нового не вычитал. Есть несколько вопросов:
1. На что влияет переменная vdd33_const? Пробовал ее менять, но ничего не происходило.
2. Если использовать внешний ADC, будут ли лучше результаты?
3. Как правильно подключать что то к ADC?
 

Tomahawk

New member
Итог: вольтметр показывает 0.786 В, а ADC 0.809 В
А вольтметр у вас эталонный? o_O Внутри вольтметра есть переменные резисторы, которые нужно ещё настроить для точности, на заводе (или в подвале дяди Луй-Цзяо) они как-то подкручены, но не факт что точность будет составлять 100%.
 

patrick-239

New member
А вольтметр у вас эталонный? o_O Внутри вольтметра есть переменные резисторы, которые нужно ещё настроить для точности, на заводе (или в подвале дяди Луй-Цзяо) они как-то подкручены, но не факт что точность будет составлять 100%.
Ну точный вольтметр это не проблема, в нынешние времена их погрешность не очень велика (если конечно он не стоит 1$). А для проверки есть математика и физика - с их помошью можно вычислить достаточно точно ожидаемое напряжение на делителе (погрешность резисторов 1%, а сопротивлением проводов и контактов можно пренебречь). Тк показания вольтметра и математики совпали, то врет явно adc.
 

pvvx

Активный участник сообщества
Ну точный вольтметр это не проблема, в нынешние времена их погрешность не очень велика (если конечно он не стоит 1$). А для проверки есть математика и физика - с их помошью можно вычислить достаточно точно ожидаемое напряжение на делителе (погрешность резисторов 1%, а сопротивлением проводов и контактов можно пренебречь). Тк показания вольтметра и математики совпали, то врет явно adc.
Похоже вы ещё не прочитали и не изучили типы ADC. Для SAR без входного буфера ( а точно мы тип мы не знаем, т.к. китайцы не дают документации и неизвестно есть ли она у них) простого делителя недостаточно. Заряд емкостей будет ограничен вашим делителем... Какая точность при этом? ...
Пример SAR ADC:

Как строится входная цепь для такого ADC:

Для R(iso) и С(iso) существует специальный расчет...
Что твориться на входе при заряде внутренних емкостей SAR:

И как итог:
Пока китаёзы не дадут спецификации на вход ADC использовать его для точных измерений невозможно.
Возможно, и скорее всего, кто другой сделает и опишет тип ADC и его параметры, включая описание входа. Но явно это будет не Espressif, т.к. в данной фирме нет никаких технических специалистов (они уже год пишут SDK и до-сих пор он имеет тысячи ошибок, а то, что они публикуют обычно украдено у других :) ).
 
Последнее редактирование:
Сверху Снизу