Добрый день,
Предлагаю Вашему вниманию мини-обзор, в котором я сделаю монитор потребления тока на базе демонстрационной платы EVAL-ADUC7061MKZ.
История
Идея монитора была найдена на русском сообществе esp8266.ru, там же был найден
софт от pvvx, который позволяет решить задачу в несколько кликов.
Моё применение монитора — отладка датчика открытия двери на базе esp8266, который питается от двух АА батареек (на правах анонса нового обзора).
О плате
Плата содержит FTDI usb to serial мост и чип ADuC7061.
ADuC7061 это комбинированный чип, который имеет двухканальный сигма-дельта АЦП со скоростью 8 kSPS, разрядностью 24-бит и ARM7 ядро с флэш и eeprom памятью.
Прошивка ADuC7061
Необходимо установить драйвера для FTDI, в диспетчере устройств нужно назначить последовательному порту имя COM5.
Запускаю ARMWSD.exe и нажимаю Start в программе.
После этого зажимаю и держу кнопку Download на плате и кратковременно нажимаю кнопку Reset.
Вот так выглядит окно при успешной прошивке:
Настройка АЦП
Запустил DebMon.exe из архива.
Указал COM5.
Нажал кнопку Start и в меню Tools->Установки АЦП привел всё к такому виду:
После установки нажал внизу Send. Если график не запущен, то кнопка не активна (маленький бажок).
Первая проба
Подключил шунт к AIN0 и AIN1. В роли шунта использовал 30см кусочек провода от LVDS кабеля LCD матрицы.
Собрал последовательную гирлянду из ЛБП, UT181A и 300Ом 2Вт резистора. Проверим линейность:
Из коробки получилось неплохо.
Измерение
Дверной датчик написан в среде Arduino.
Нормально разомкнутый геркон при открытии/закрытии двери притягивает к земле Reset и датчик подключается к WiFi и взаимодействует с ifttt.com, после уходит в сон до следующего сброса.
График напряжения на шунте при опросе с частотой 5,8Гц:
График напряжения на шунте при опросе с частотой 19,4Гц:
Частоту опроса можно изменить меняя параметры ADCFLT.
Экспортировал
данные варианта 19,4Гц и превратил в график тока:
Датчик был активен с 49 по 146-й отсчет, т.е. в течении 97 отсчетов или ровно 5с и в это время он потреблял в среднем 69мА от 3В батареек. Во сне ESP потребляет 16мкА согласно UT181A, а по данным «измерителя» на порядок больше :(.
Работа над ошибками(предлагайте в комментариях)
Сделать другой шунт, добиться лучшей линейности, добавить RC цепочки, сделать делитель на второй канал для измерения напряжения…
После чего я уже насторожился...-и не зря! Как посыпалось!-котам и валерьянки расхотелось… ;)
Когда началась бомбёжка высоконаучными изысканиями и цифрами доводов, разбежались уже все!
Дороговато только.
Ужос!
Сразу идем в даташит
То, что вы уменьшили частоту преобразования до нескольких Гц — это хорошо.
Реальная разрядность преобразования зависит от частоты и от коэффициента усиления. Это естественный процес АЦП на который влияют аналоговые шумы и шумы квантования. При ваших токах разрядность будет порядка 17-18, никак не 24 (впрочем 24 она никогда здесь не будет) — нужно повышать напряжение, ставить другой шунт.
Шунт в виде провода — это антенна, меняйте на резистор. + при таком низком измерительном напряжении на вход ацп неизбежно будут попадать наводки сопоставимые по величине с полезным сигналом. Еще один аргумент в пользу увеличения сопротивления шунта. Соответсвенно — уменьшить ADC0PGA (ADC Gain)
Теперь вопрос по питанию: я так понимаю, что вы питаете плату измерителя от БП, а DUT от чего? Тут я немного не смог понять из вашего описания. Лучше конечно все развязать по питанию — возможны наводки.
Хотя у МС есть вроде как фильтрация (NOTCH2), но я бы поставил какой-нибудь простейший АА фильтр, хотя бы в виде RC цепочки на частоту среза около 10 Гц. Можно включить NOTCH2.
Chop режим включен — это хорошо.
Насчет фильтрации (Table 45. ADCFLT MMR Bit Designations)
Sinc3 decimation factor — это показатель коэффициента передескретизации, его для лучшей фильтрации 50Гц поставить в значение 127. При этом AF (Averaging Factor), судя по следующей таблице нужно будет ставить в 0. В любом случае, я бы поэксперементировал с этими значениями
Программа может работать по TCP com-порту.
Какой поставить Sinc3 для 60Гц?
Спасибо ещё раз.
www.analog.com/media/en/technical-documentation/data-sheets/aduc7060_7061.pdf
стр.48-49
Для батарейного питания, думаю, можно подобрать значения с усреднением (AF > 0).
Фильтрацию (RC) на входе все же сделайте, максимально близко к входам АЦП.
Там сама плата с этой прошивкой по обычному USB работает или через USB/NDIS (сеть TCP/IP через USB)?
Если нет жестких требований к нормированию напряжения на шунте то делаешь не отключаемым шунт самого слаботочного диапазона и к нему в параллель добавляешь подключаемые шунты вплоть до перекрытия всех диапазонов.
Реально смотрите на вещи и прорабатывайте задачи, анализируйте объект и не гонитесь за цифрами.
В большинстве не научно-исследовательских задач даже 100 герцовые логи более чем дохрена, и влезть в диапазон 1-2000 для 100 герц это задача для медленного 12 битного ацп и чуть чуть легонькой математики.
Один шунт легко перекрывает 2 декады переключения.
Даже в тех же китайских модулях с ads1115 или ads1118, 19. Но там 16 разрядов. Ищите 24 разрядный под свои потребности, 1220, 1232 например, но они естественно дороже, смотрите даташит на предмет PGA и его разрядности. Как правило, там есть возможность установить коэффициент усиления от 1 до 128 кратно степени двойки. Для более менее точных измерений лучше брать 24 разряда. Конечно эффективных из них будет 18..21. Но в 16 разрядных, как понимаете, будет тоже не 16.
Максимально возможная частота считывания для конкретной реализации — ниже разрядность выше частота. А так, пока что, меня и 100Гц устроит. Хотя ниже написал извлечение из характеристик прибора — «Период измерения — 3 мкс. Сверхмалый период измерения вкупе с полосой пропускания аналогового тракта 50 кГц позволяет достоверно фиксировать даже быстротекущие процессы,».
Хочу определять и фиксировать разные режимы работы устройства по потребляемому току.
Если дружба и любовь с математикой то можно попытаться и с 10 битного АЦП АВРки выкачать такую точность, 100 герц это вагон времени для разнообразных математических извращений.
В современном мире задачи надо решать по мере их поступления, надо делать здесь и сейчас, чем быстрее тем лучше, на том, что доступно. Если есть в руках STM32 и ты с ним хорошо знаком- делай. Если нету но где-то завалялся AVR и с ним ты еще лучше знаком- делай на нем.
Когда сделаешь то очень высока вероятность того, что банальным скользящим средним с удалением пары экстремумов сверху и снизу ты выйдешь как раз на ту точность, которая тебя вполне устроит в данном проекте. Сделал и пустил в работу. А потом уже будет новое утро, новый день и новый проект.
Но я бы предпочел использовать АЦП с большей разрядностью, это более простое и логичное решение, имхо.
Тем более, если не переключать коэффициент усиления, то даже при 20 эффективных разрядах можно получить разрешающую способность в 20 мкА на диапазоне 20А. Задача, как я понял, состоит в получении данных в диапазоне 1:20000, т.е. на нижней границе диапазона (1мА) достоверные данные всё ещё можно будет получить, с 16 разрядами без определенных манипуляций такого не получится
Я бы на месте товарища Z2K взял обычную 10ти битную AVR и раскачивал разрядность математикой, пока мозги молодые и мягкие можно для себя открыть чудесный мир цифровой обработки сигналов, за ним будущее.
Там от 10 разрядов avr наверное только после обработки можно получить 10 enob. Да и если сигнал будет резко меняться, там при сильной децимации будет наложение спектра, соответсвенно, искажения и неверные данные. Кроме того желательно сигнал «зашумить» на уровне младших разрядов. Ну и как я говорил, если есть желание получать на нижнем пределе данные, а не шум, то голой авр-кой это вряд ли получится
Но с доставкой в Россию все, конечно, не очень хорошо
(хотя наверняка есть специализированные ацп для шунта, которые выйдут ещё дешевле)
Из «работой паяльником» здесь только шунт.
Помышевал и готовые значения на экране и в CSV…
что забавно — вчера только думал об этом, откуда-то мысля прилетела про измеритель тока и шунт
не ты ли ее генерировал? а то я ощущаю мысли клиентов своих, когда они мне звонить собираются, но звонят обычно на следущий день (пгокгастинигуют)
вобщем тебе нужен специальный измерительный резистор с 4 выводами, он стоит 5 баксов где-то, если не брать у китаез
тту недавно был обзор таких резисторов с китая перемаркированых
Где-то взята программа монитора, написанная в делфях, и установлена.
Для меня, так все очень сжато. Если это обзор, то в чем его суть? Или это просто информация, что существует плата, к ней можно найти софт, который с ней работает.
Хотя бы конкретные ссылки на источники программ, хотя бы монитора. Может автор программы там дал подробности.
Ардуины, да, нет…
Если есть вопросы по делу, давайте задавайте, а плач Ярославны — заканчивайте
Период измерения — 3 мкс. Сверхмалый период измерения вкупе с полосой пропускания аналогового тракта 50 кГц позволяет достоверно фиксировать даже быстротекущие процессы, такие как выход микроконтроллера из сна для быстрой передачи данных. Данные отображаются на встроенном экране (накопленное время, накопленная энергия), а также передаются на компьютер.
Я вот думаю на Меге+ESP с подобными датчиками сваять что-то. 8-10 каналов.
aliexpress.com/item/Free-Shipping-1pcs-Non-invasive-Split-Core-Current-Transformer-AC-current-sensor-100A-SCT-013-000/32754634532.html