ESP, IoT Вольтметр на ESP32 «ВольтМИ»: четыре канала, журналирование, анализ грфиков, точность на ваше усмотрение…

Борисыч

✩✩✩✩✩✩✩
17 Дек 2020
19
8
lookatmusic.com
Возможности
Сбор данных с четырёх каналов АЦП с частотой 1000 измерений в секунду. Первое преобразование — среднее квадратичное на каждых 50 измерениях.

Получающиеся 20 измерений в секунду отправляются в веб — интерфейс для визуального отображения в реальном времени. Параллельно на основании этих 20 измерений накапливается десятисекундное значение для журнала. Журнал записывается во внутреннюю файловую систему микроконтроллера — SPIFFS.

Управлять файлами журналов можно через веб — интерфейс вольтметра.

Готовые устройства
Вольтметры ВольтМИ

Схема
Схема вольметра ВольтМИ


Вольтметр прошивается и из среды PlatformIO и из Arduino — в архиве две отдельных папки. Библиотеки для Arduino в папке Arduino\libraries.
Перед прошивкой не забудьте указать логин и пароль вашей локальной сети - строки 61, 62 в main.cpp для PlatformIO или в VoltMI.ino для Arduino.

Калибровка сводится к заполнению таблиц соответствия напряжения в вольтах отсчётам АЦП. Выполняются, калибровка крайне просто. Вам понадобится источник питания с плавной регулировкой напряжения и эталонный вольтметр. Тот, которым вы чаще всего пользуетесь.
Процесс калибровки
В процессе калибровки программа создаст С-код таблицы соответствий напряжений отсчётам АЦП.

Обработка результатов 27-часового эксперимента:
анализ.JPG


Полное описание и свежие версии прошивки - http://lookatmusic.com/voltmi/skachat-voltmetr-voltmi.html
 
Изменено:

Un_ka

★✩✩✩✩✩✩
13 Июл 2020
205
43
других форумов.
Использование линейных понижающих преобразователей на вход АЦП, я ещё не где не видел.
Вроде у ESP плохой ЦАП. Если вы знаете, что ЦАП в 12 битном режиме, выдаёт 10-11 бит ( а может и меньше ) точно, то почему бы не использовать 10 битный режим?
 

Борисыч

✩✩✩✩✩✩✩
17 Дек 2020
19
8
lookatmusic.com
Использование линейных понижающих преобразователей на вход АЦП, я ещё не где не видел.
Вроде у ESP плохой ЦАП. Если вы знаете, что ЦАП в 12 битном режиме, выдаёт 10-11 бит ( а может и меньше ) точно, то почему бы не использовать 10 битный режим?
Удивил, да? )) В моём случае на вход до 400V прилететь может, так что вариант с линейным преобразователем оправдан, он есть в книжках. Не помню где попалось лет 5 назад.

На счёт качества АЦП - здесь точность оцифровки вообще не важна, очень важна стабильность. Т.е. если АЦП ошибается на 20%, но ошибается всегда именно на 20, то всё хорошо. Программно точность будет выведена до долей процента.

Во, нашёл: Рюмик 1000 и одна микроконтроллерная схема Вып. 1 2010, стр 93
вход.JPG
 
Изменено:

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
1,550
547
55
Марий-Эл
"Точность на ваше усмотрение..."
"эталонный вольтметр. Тот, которым вы чаще всего пользуетесь. "
При этом на входе нет обработки сигнала. АЦП фуфло.
Ржу нимагу :ROFLMAO: :ROFLMAO: :ROFLMAO:
 

ТехнарьКто

★★★✩✩✩✩
13 Янв 2020
140
182
Удивил, да? )) В моём случае на вход до 400V прилететь может, так что вариант с линейным преобразователем оправдан, он есть в книжках. Не помню где попалось лет 5 назад.
Не удивил, заинтересовал. Специально нашел и прочитал.

На счёт качества АЦП - здесь точность оцифровки вообще не важна, очень важна стабильность. Т.е. если АЦП ошибается на 20%, но ошибается всегда именно на 20, то всё хорошо. Программно точность будет выведена до долей процента.
Качество АЦП важно потому, что именно уровень выбранной величины оцифровки и дает ту самую нестабильность, которую
программно побеждать равнозначно борьбе Дон Кихота с мельницами.

Во, нашёл: Рюмик 1000 и одна микроконтроллерная схема Вып. 1 2010, стр 93
Посмотреть вложение 24424
И если читать сначала и вдумчиво, то автор пишет про цифровой вход микросхемы. Такая схема приведена автором как пример защиты цифрового входа микроконтроллера ( для сигналов логический ноль и логическая единица) от напряжений которые могут сжечь цифровой вход микроконтроллера. Дословно из книги "стабилизатор DA1 защищает MK от всплесков напряжения амплитудой до 30 В." Это для случая, если взамен логической единицы с максимальным уровнем напряжения возможна подача напряжения с большим уровнем, в приведенной схеме напряжения вплоть до 30V будут ограничены в 5V.

Во первых у Вас по идее должен использоваться и наверное используется аналоговый вход. И защита активным буферным каскадом Вам не подходит. Во вторых, защита должна ограничивать на уровне максимально допустимого для используемой микросхемы, а по приведенной схеме, вход в момент срабатывания защиты при R2=0 (так можно исходя из схемы), будет все равно сожжен, поскольку максимальное для ESP32 всего то 3,6V, а защита ограничит до 5V и этого будет достаточно, чтобы схема умерла.

Возможно Вы замечательный программист, программу просто не смотрел, но аппаратную часть надо обязательно переделывать.

Успехов.
 

Борисыч

✩✩✩✩✩✩✩
17 Дек 2020
19
8
lookatmusic.com
Качество АЦП важно потому, что именно уровень выбранной величины оцифровки и дает ту самую нестабильность, которую
программно побеждать равнозначно борьбе Дон Кихота с мельницами.
Программно можно исправить всё. С заданной точностью.
Качество АЦП состоит из линейности и стабильности. Или нет?
В моей реализации линейность АЦП не имеет ни какого значения. Значение имеет стабильность его работы. Со стабильностью у ESP вроде всё нормально. Пока мои экземпляры меня устраивают. У AMS1117 есть температурный дрейф, но это решается включением вольтметра заранее, «на прогрев».
Теперь о линейности.

Абстракция программы
Есть черный ящик: с одной стороны цифры моего любимого вольтметра, с другой -- цифры от АЦП.
Внутри чёрного ящика входные цепи и сам АЦП. Выполняя калибровку, я создаю таблицу соответствий цифр вольтметра с цифрами АЦП.
Вот кусок моей таблицы:
...
{volt:2.4, k:0.0, adc:17},
{volt:2.5, k:0.0, adc:31},
{volt:2.6, k:0.0, adc:45},
{volt:2.7, k:0.0, adc:57},
{volt:2.8, k:0.0, adc:68}...
Вот таблицы соответствия в графике:
calibrate-voltmi.jpg

Что происходит в чёрном ящике - мне совсем не интересно, мне очень важно чтоб всегда происходило одно и то же.

К слову, если возникнет необходимость, в чёрный ящик можно положить любые датчики с аналоговым выходом - температура, освещенность...
Провёл калибровку - всё работает, журналы пишутся, графики смотрятся.
Немножко изменив программу можно и цифровые датчики прикрутить.
Или есть надежды что цифровые датчики не врут во всём диапазоне значений? У меня нет. Пробовал синхронизировать два DallasTemperature от 20 до 80 градусов. Неоптимистичненеько ;) .

О "точности на ваше усмотрение"
Я предполагаю, что между точками таблицы, изменение соответствия вольты=>АЦП происходит линейно, по этому чем чаще точки - тем выше точность в промежутках.


И если читать сначала и вдумчиво...
Автор дал прекрасную идею защиты МК. Что он имел в виду - он имел в виду... Я лишь проверил идею - она достойно работает.

Во первых у Вас по идее должен использоваться и наверное используется аналоговый вход. И защита активным буферным каскадом Вам не подходит. Во вторых, защита должна ограничивать на уровне максимально допустимого для используемой микросхемы, а по приведенной схеме, вход в момент срабатывания защиты при R2=0 (так можно исходя из схемы), будет все равно сожжен, поскольку максимальное для ESP32 всего то 3,6V, а защита ограничит до 5V и этого будет достаточно, чтобы схема умерла.
Защита AMS1117 ограничит до 5V? Это вопрос, я действительно не знаю - не электронщик.
В моей схеме, AMS1117 - 3.3V. В схеме Рюмика - да, 7805.
Я предположил, что R2С2 - это фильтр пульсаций. Или они выполняют защитные функции? (Не электронщик)
Для моего случая фильтр вреден, т.к. по пульсациям я определяю «здоровье» исследуемых АКБ.

Возможно Вы замечательный программист, программу просто не смотрел, но аппаратную часть надо обязательно переделывать.
Успехов.
Спасибо! Успехи несомненно будут!
Схему переделывать не буду, 2 устройства работают почти не выключаясь уже пару месяцев - нареканий нет.
За это время, наверняка, и девяносто вольт прилетало неоднократно. ;)

И немножко по итогам использования сих девайсов.
Я невероятно доволен, что руки дошли их сделать. То, что освободился стол, что мне не нужно 12-20 часов постоянно тыкать щупами и не забывать выключать вольтметры - (пикают, гады или батарейки в ноль высаживают) - это наименьшие из приобретений.
Самое важное - это неограниченные по времени и весьма точные графики процессов.
Я увидел, чем отличается «живой» АКБ от «уставшего» и от «дохлого», я понял как происходит разряд и почему не нужно разряжать ниже 12.
Увидел когда АКБ заряжен и всё можно останавливать...
Много ещё всякого интересного...
 

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
1,550
547
55
Марий-Эл
Есть черный ящик: с одной стороны цифры моего любимого вольтметра, с другой -- цифры от АЦП.
Ваш любимый вольтметр, скорее обычный бытовой, даёт точность 1%-5%
Я не думаю, что на любимый вольтметр с точностью 0.1%, бабла хватит.
Поверку каждый год не проходит.
Программно можно исправить всё. С заданной точностью.
Здесь вы глубоко ошибаетесь !!!
У вас когда нибудь был предмет "Вычислительная математика" ?
Если бы был, вы не стали бы так категорично заявлять такие параметры.
Хочу точность 0.001%
Ваш охренительный любимый вольтметр может служить для этого эталоном?
 

poty

★★★★★✩✩
19 Фев 2020
1,317
394
девяносто вольт прилетало
Входное напряжение для AMS1117 - максимально 15В. Входная группа 10к/40к увеличит это напряжение на 25% до 18,75В, Нагрузка 10кОм - ещё на 3,3В, до 22В. Так что не надейтесь на чудо.
 

Борисыч

✩✩✩✩✩✩✩
17 Дек 2020
19
8
lookatmusic.com
Ваш любимый вольтметр...
Вы правы! У меня самый обычные вольтметры. Штук 6 или 8. Никакой проверки они никогда не проходили и не пройдут. И, естественно, показания этих вольтметров разнятся. Именно по этому, проводя какой-либо экс, я пользуюсь одним - любимым в рамках этого, конкретного экса. Он и есть эталонный. И теперь я могу под него настроить ещё четыре.

У вас когда нибудь был предмет "Вычислительная математика" ?
И Вы опять правы! Не было. Его тогда вообще не было. Был «численные методы». Это о том, как вот это всё на арифмометрах, счётах и калькуляторах считать ;).

Если бы был, вы не стали бы так категорично заявлять такие параметры.
Хочу точность 0.001%
Думаю Вы сможете этого достичь. Естественно нужно заменить мои входные цепи на термостабильные, а для калибровки использовать поверенный, действительно эталонный вольтметр или с десяток источников ОН. И, конечно, верхняя граница измеряемых напряжений не должна превышать 2.047V. И ещё не забыть, что у ESP АЦП не с 0 считает а чуть повыше. Мы ж не в сказке живём?


Входное напряжение для AMS1117 - максимально 15В. Входная группа 10к/40к увеличит это напряжение на 25% до 18,75В, Нагрузка 10кОм - ещё на 3,3В, до 22В. Так что не надейтесь на чудо.
Что-то не так с вычислениями у вас. Наверное не учли входное сопротивление AMS1117.
Я так делал: на вход AMS припаял 50k переменник, на него подал 32V, и крутил его до тех пор пока на входе AMS не установилось 3.3V. Потом измерил плечи и в схему впаял ближайшие. В штатном режиме на AMS приходит не более 3,3v! Только при превышении входным напряжением 32V
AMS начинает работать как стабилизатор, спасая ESP от неприятностей. Т.е. считая, что для AMS максимально 15 - всё устройство без проблем выдержит до 140V.
Вот от 0 до 30V.
вм.JPG
Заметьте, «лучи» на всём диапазоне практически не расползаются, т.е. каналы выдают практически одинаковые значения.

Насчёт 90V и 400V которые могут прилететь. Устройства Бедини, для которых я и делал эту штуку, заряжают АКБ высоковольтными импульсами.
Если неонка в схеме жива - прилетает 90, если в обрыве до 400. Но и в том и в другом случае это импульсы продолжительностью 50-100мкс с частотой до 200Гц. Мне от них защититься нужно. Естественно ни о каком продолжительном воздействии высокими напряжениями речь не идёт.
 

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
1,550
547
55
Марий-Эл
И Вы опять правы! Не было. Его тогда вообще не было. Был «численные методы»
Похоже вы учились примерно в то же время что и я. Но я начал с арифмометров и закончил персональными компьютерами.
Думаю Вы сможете этого достичь
Значит плохо учили "численные методы" иначе знали бы, что по чём.
 

Борисыч

✩✩✩✩✩✩✩
17 Дек 2020
19
8
lookatmusic.com
Похоже вы учились примерно в то же время что и я. Но я начал с арифмометров и закончил персональными компьютерами.
Значит плохо учили "численные методы" иначе знали бы, что по чём.
«Мы все учились понемногу
Чему-нибудь и как-нибудь,...»

Таки да, я был знатным разгильдяем и озорником. Ищито?
У вас если есть какие тайные знания о «что по чём» в «численных методах», вы обнародуйте, не держите в себе.
Я программку перепишу - она мелкая - всего 2750 строк на четырёх языках.
Всего 6кг, вы же помните?

Или вы о том, что «плашек на 3/8 нету, а они трамвай запускать»? ;)

В целом
Что-нибудь кроме "это всё плохо, неправильно, работать не должно" сообщите?
Не нравится устройство, не доверяете описанию - не повторяйте.
Повторите и возникнут проблемы - сообщите - решим.
 

poty

★★★★★✩✩
19 Фев 2020
1,317
394
Наверное не учли входное сопротивление AMS1117.
ОК, Quiescent Current = 5мА, т.е. на 10кОм добавится падение в 50В и максимальное входное напряжение будет 72В или около того.
Я так делал: на вход AMS припаял 50k переменник, на него подал 32V, и крутил его до тех пор пока на входе AMS не установилось 3.3V.
Допускаю, что это так. Но как только на входе появляется напряжение +1В к выходному (4,3В), входной ток стабилизируется и дальше уже не растёт. Т.е., Ваша линейная аппроксимация здесь неприменима. График я Ваш тоже не понял. X - время, Y - напряжение (входное?), но что этот график показывает и почему "лучи" должны расходиться - я не понимаю.
Если неонка в схеме жива - прилетает 90, если в обрыве до 400. Но и в том и в другом случае это импульсы продолжительностью 50-100мкс с частотой до 200Гц.
Я думаю, что здесь, возможно, работают несколько факторов: индуктивность проводов, не дающая крутых фронтов нарастания напряжения, короткие импульсы и, возможно, работает защита AMS, пусть и в перегрузке. Но всё это - до поры до времени, думаю.
Я применял AMS1117 (в Adj версии) в обычном БП, не рассчитал входное напряжение и подавал на них примерно 18-20В (трансформатор попался не соответствующий по х.х. моим ожиданиям). Некоторое время работали, только грелись, но потом... увы...
 

Борисыч

✩✩✩✩✩✩✩
17 Дек 2020
19
8
lookatmusic.com
ОК, Quiescent Current = 5мА, т.е. на 10кОм добавится падение в 50В и максимальное входное напряжение будет 72В или около того.
Допускаю, что это так. Но как только на входе появляется напряжение +1В к выходному (4,3В), входной ток стабилизируется и дальше уже не растёт. Т.е., Ваша линейная аппроксимация здесь неприменима. График я Ваш тоже не понял. X - время, Y - напряжение (входное?), но что этот график показывает и почему "лучи" должны расходиться - я не понимаю.
...на входе появляется напряжение +1В...
Я рассматриваю два режима работы: штатный - входное напряжение всего устойства в диапазоне 0..32V и аварийный - с Бедини прилетают микросекунды амплитудой 90V, это напряжение при котором загорается защитная неоновая лампочка.
Аварийный может возникнуть из-за обрыва внутри АКБ (крайне редко) или моего раздолбайства - запустил со щупами но без нагрузки (это бывает ;)).
В штатном режиме, напряжение на входе AMS не может превышать 3.3V. Здесь работает линейная аппроксимация.
В аварийном режиме (до ~ 150V) на вход AMS дойдёт ~10V т.е. он начнёт работать как стабилизатор, а на ESP будут идти те же 3,3.
+1B - это в моём случае нереальный режим. Может быть или 3-28V или сразу 90.

График я Ваш тоже не понял. X - время, Y - напряжение (входное?)
На графике все 4 щупа устройства подключены к БП где я повышаю напряжение от 0 до 30 с шагом 1вольт. Это ось Y. По Х время.

...почему "лучи" должны расходиться...
Лучи это показания 4ёх каналов устройства. Если бы показания были ощутимо различными - они расползлись бы по Y. Как на ослике, если на калибровку оба щупа сразу повесить. Если щупы не настроены - будут углы меандра расползаться.
Это просто подтверждение синхронности показаний.


Я думаю, что здесь, возможно, работают несколько факторов: индуктивность проводов, не дающая крутых фронтов нарастания напряжения, короткие импульсы и, возможно, работает защита AMS, пусть и в перегрузке. Но всё это - до поры до времени, думаю.
Я применял AMS1117 (в Adj версии) в обычном БП, не рассчитал входное напряжение и подавал на них примерно 18-20В (трансформатор попался не соответствующий по х.х. моим ожиданиям). Некоторое время работали, только грелись, но потом... увы...


Еще раз. Функциональность стабилизатора включается только в аварийном режиме. В штатном он просто пропускает на выход то что есть на входе в диапазоне 0 - 3.3V. Возможно не линейно, но мне это не важно.
 

poty

★★★★★✩✩
19 Фев 2020
1,317
394
В аварийном режиме (до ~ 150V) на вход AMS дойдёт ~10V т.е. он начнёт работать как стабилизатор, а на ESP будут идти те же 3,3.
+1B - это в моём случае нереальный режим. Может быть или 3-28V или сразу 90.
Не путайте вход всего измерителя и вход AMS. Если Вы посмотрите на мой ответ, то я обсуждал именно напряжение на входе AMS!
В штатном режиме, напряжение на входе AMS не может превышать 3.3V. Здесь работает линейная аппроксимация.
Согласен. Можно считать линейной, допустим.
В аварийном режиме (до ~ 150V) на вход AMS дойдёт ~10V т.е. он начнёт работать как стабилизатор, а на ESP будут идти те же 3,3.
Вот здесь уже не согласен. Как только напряжение на входе AMS достигнет 3,3В (32В на входе вольтметра) стабилизатор начнёт входить в режим стабилизации. Я думаю, при этом на выходе будет в районе 2,7В (открытый переход транзистора). На отрезке от 3,3В до 4,3В будет значительная нелинейность, вызванная тем, что цепи стабилизации ещё эффективно работать не могут, но уже вмешиваются в распределение напряжения между входом/выходом AMS и нагрузкой. А вот начиная с 4,3В входной ток AMS увеличиваться не будет (для справки посмотрите использование трёхногих регуляторов в качестве источников тока) и будет составлять в Вашем случае где-то 5мА+3,3/10=5,3мА. С учётом тока через резистор 40кОм (4,3/40=0,1мА) напряжение на входе при этом будет около 58-59В. Дальше напряжение будет повышаться линейно с коэффициентом 0,8, т.е., для предельного напряжения 15В на входе AMS на входе устройства будет 58+(15-4,3)/0,8=71В. Это не согласуется с Вашими прогнозами о 150->10В.
 

Борисыч

✩✩✩✩✩✩✩
17 Дек 2020
19
8
lookatmusic.com
...Это не согласуется с Вашими прогнозами о 150->10В.
Спасибо что вынудили меня полезть туда с ревизией!
Всё оказалось ещё веселее, на мой взгляд.

Синий выход с Бедини, жёлтый выход AMS.
Штатный режим - всё как и ожидалось.
SDS00023.jpg
А вот аварийный ))
SDS00024.jpg
Среднее просело, а иглы летят во какие!
Единичный импульс
SDS00025.jpg
Единичный, синий вход AMS, после резистора
SDS00026.jpg
Самой AMS они похоже не вредят, по крайней мере через 5 минут этого безобразия при переходе в штатный режим все продолжает работать.
Это макетка, на МК не подавал.
Успеет пик с шириной 50мкс и амплитудой 17,6 сжечь вход или нет - пусть останется загадкой. Пока )).

Еще раз спасибо за настойчивость. Придумаю чегонить...
 

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
1,550
547
55
Марий-Эл
1616987435627.png

Вот классическая схема для ваших нужд. Три канала здесь. Делитель рассчитан на 12 вольт, выход на 5.
Пересчитайте под свои нужды. Стабилитроны удавят любой импульс свыше 4.7 вольта. Если мощность импульса не превысит мощности стабилитрона после делителя. Судя по осцилограммам. Превысить не должно Если правильно всё рассчитать, 400 вольт не страшны.
 

Борисыч

✩✩✩✩✩✩✩
17 Дек 2020
19
8
lookatmusic.com
Если правильно всё рассчитать, 400 вольт не страшны.
Спасибо, Эдуард!
С аналогичным решением я знаком. Но это полностью перебирать вольтметры, а у меня макетки кончились Через неделю - две доставят.
Пока думаю поставить индуктивности на вход или ёмкости на ams. Тогда переделывать вообще ничего не придётся.

Меня другой вопрос сейчас больше озадачивает. Я когда в этом году моторчик запустил, подключил к нему акб старючий и вольтметр - первые тесты.
Суть в чём, полуживой акб (засульфатированный) в начале цикла тренировок очень плохо поглощает импульсы.
Ослик показывал выбросы, не буду утверждать, но вроде как вольт 50-70 на клеммах. Но это не с самого начала смотрел. На старте и 100 и 200 могло быть.
Через некоторое время, акб приходит в чувства и выбросы остаются ~1-2v. У хорошего - милливольты.
Вот что вм тогда записал
PB0.JPG

Вольтметр не сгорел. Я был спокоен, думал ams отрабатывает. А теперь вот озадачился: или МК пофиг такие импульсы, или я не знаю. Можно проверить, конечно, но жалко зверушку)).

Каждая точка графика СКВ за 10 секунд.
Повторить экс не могу, акб этот стабилизировался, сейчас график ровный.