Не так давно я
обозревал модуль Sonoff POW, который позволяет измерять потребление электроэнергии и выдавать данные по WiFi.
Сильно не понравилось отсутствие хоть какого то индикатора, низкий функционал, а так же отсутствие гальванической развязки от сети 220, что может приводить
к плачевным результатам.
В конце концов приобрел готовую плату PZEM-004T с целью сборки измерителя мощности самостоятельно.
Измеритель мне нужен был для работы с различными светильниками наружного освещения. Инженер, который непосредственно занимается измерениями, сформулировал основные требования:
- Гальваническая развязка при измерении тока сети 220В
- Информативный дисплей
- Беспроводной подключение к компьютеру
- Возможность сохранения измерения с последующим просмотром или копированием на компьютер.
Выбор мой пал на модуль PZEM-004T в виде отдельной платы.
Характеристики модуля
- Измерение текущего напряжение сети переменного тока 80-260В
- Измерение тока 0 — 100А
- Измерение активной мощности 0 — 22КВт
- Измерение потребленной электроэнергии
- Точность измерения 1%
- Рабочая частота 45-65Гц
- Последовательный интерфейс UART со скоростью 9600
- Напряжение питания 5В
- Возможность подключения LCD или LED дисплеев
Размер платы 31x74мм, диаметр катушки трансформатора тока 33мм
В комплекте идет сам модуль и трансформатор тока
Сердце модуля — микросхема SD3004 от китайской компании
SDIC Microelectronics Co., Ltd предназначенная для измерения электроэнергии.
Кроме того на плате видна микросхема EEPROM Atmel 24C02C на 256 байт с миллионом циклов записи и две оптопары PC817, обеспечивающих гальваническую развязку последовательного интерфейса.
Так же на плате есть не распаянный разъем для подключения LED или LCD (судя по описанию микросхемы SD3004)
В интернете я
нашел описание модуля PZEM-004T в котором есть схема подключения и протокола обмена с компьютером.
Протокол обмена по UART довольно примитивный, кроме того можно найти
готовые ардуиновские библиотеки, работающие как с аппаратным, так и по программным последовательным интерфейсом.
Для теста модуля использовал Arduino Mega 2560 имеющего три аппаратных последовательных шины.
Цепляю RX т TX к 18 и 19 выводам, соответствующим интерфейсу Serial1, чтобы в Serial0 выводить отладочную информацию.
Трансформатор тока надеваю на провод, идущий к розетке
Подключаю розетку к сети
Загрузил скетч примера к библиотеке
#include <SoftwareSerial.h> // Arduino IDE <1.6.6
#include "PZEM004T.h"
PZEM004T pzem(&Serial1);
IPAddress ip(192,168,1,1);
void setup() {
Serial.begin(115200);
pzem.setAddress(ip);
}
void loop() {
float v = pzem.voltage(ip);
if (v < 0.0) v = 0.0;
Serial.print(v);Serial.print("V; ");
float i = pzem.current(ip);
if(i >= 0.0){ Serial.print(i);Serial.print("A; "); }
float p = pzem.power(ip);
if(p >= 0.0){ Serial.print(p);Serial.print("W; "); }
float e = pzem.energy(ip);
if(e >= 0.0){ Serial.print(e);Serial.print("Wh; "); }
Serial.println();
delay(1000);
}
На экране видны показатели напряжения, тока, мощности и потребленной электроэнергии
Показания совпадают с моим прибором VC97 до 3-го знака. Модуль без проблем мерит зарядники с телефоном мощностью около 5Вт.
Прибор, кроме самого PZEM-004, будет состоять из
Модуля ESP826612F
Цветного TFT дисплея 240x320 на контроллере ILI9341
Миниатюрного блока питания на 5В
Ну и небольшого количества навесных деталек, корпуса и материалов, которые обычно есть в наличии у уважающего себя радиолюбителя. Общий бюджет вышел в пределах $20 (цены могли немного измениться с момента покупки)
Схема прибора
Для компоновки всех модулей была изготовлена печатная плата (для любителей ЛУТ)
Чертеж платы в Sprint Layers
Печатаю на специальной бумаге
Перенос только ламинатором, никаких утюгов
После остывания весь тонер без остатка переносится на плату
Травлю в лимонной кислоте (6 ложек на стакан + 1 ложка поваренной соли для вкуса ))). Обязательно в вертикальной ванночке.
Вместо 5% перекиси водорода использую 30% пергидроль, использующийся для чистки бассейнов. Это гораздо эффективнее и удобнее.
«Добавим волшебных пузырьков»
Травится все 5-30 минут в зависимости от температуры и количества пергидроля
Теперь можно сделать отверстия и обрезать плату по размеру
Плата после лужения
И распаивания деталек
Не обошлось и без доделок на ходу
Модуль не работает с 3-х вольтовой логикой ESP, поэтому резистор 1КОм R17 в цепи оптрона нужно уменьшить. Я просто напаял параллельно еще один резистор 1КОм
Устройство получилось такое
Трансформатор тока влазить в корпус и розетку не захотел. Пришлось оставить снаружи.
Прошивка
Для работы дисплея выбирал между
библиотекой UTFT и
Adafruit GFX. Выбрал вторую из за больших возможностей и скорости работы.
Из библиотеки PZEM-004 выкинул поддержку SoftwareSerial, так как из за нее не хотела собираться под ESP8266
Прошивку с правлеными библиотеками выложил на GITHUB
Возможности прошивки:
- Измерение напряжения 80-260В, тока 0-100А, мощности 0-22кВт и потребленной электроэнергии
- Выдача мгновенных показателей на экран (обновление 1 сек)
- Выдача мгновенных показателей в WEB-интерфейс
- Построение графика мощности (150 значений по 2 сек)
- Сохранение всех показателей в журнал (файл) во внутренней памяти EEPROM с настраиваемой дискретностью
- Просмотр, скачивание и удаление журналов
- Синхронизация времени по NTP и привязка значения в журнале к времени
- Сохранение в файл внеочередного значения показателей с маркировкой по нажатию кнопки
- Приостановка и возобновление записи в журнал через WEB-интерфейс или по длительному нажатию кнопки
- Настройка параметров сети через WEB-интерфейс и сохранение конфигурации в EEPROM ESP8266
- Обновление прошивки через WEB-интерфейс
Работающий прибор выглядит так
Веб интерфейс
Страничка настроек
Файл с данными
Время записано в формате UNIX STAMP и без проблем преобразуется в EXCEL
по формуле =CELL/(60*60*24)+«1/1/1970»
Показание электроэнергии, как и в нормальных электросчетчиках, записывается в энергонезависимую память. Для сброса нужно удержать на 5 сек кнопку на плате, а затем коротко нажать еще один раз.
Подведем итог
Модуль полностью оправдал мои ожидания.
Прибор соответствует поставленным требованиям, и имеет большие возможности по доработке.
Трудности, с которыми столкнулся — малой количество информации, очень поверхностные даташиты. Этим грешат многие китайские приборы.
Например, следующая версия будет без экрана, но с возможностью передачи информации на MQTT сервер.
На этом хочу откланяться
Тимофей горд проделанной работой
Полезны ссылки
Даташит на SD3004
Даташит на 24C02N
Библиотека PZEM-004T для Ардуино
Библиотека Adafruit GFX
Библиотека Adafruit ILI9341
Исходники после переписывания web интерфейса выложите на гитхаб?
Исходники интерфейса выкладываю здесь github.com/kmaximv/ESP-Web
Демо здесь kmaximv.github.io
Основная идея, данные подтягивать в формате JSON, один файл с основным шаблоном, для каждой страницы свой *.js файл, меню также в JSON формате.
Таким образом будет проще подстроить под себя проект.
Если esp находится в deep sleep, а в это время ей прилетело сообщение, то esp сообщение не получит вообще? Ведь оно же не повторяется, или mqtt предполагает ответ в получении и будет слаться много раз?
Поэтому здесь применеy более прогрессивный метод конфигурауции в режиме точки доступа и хранения пароля в EEPROM
Или набортная eeprom измерителя используется?
ru.wikipedia.org/wiki/%D0%A4%D0%BB%D0%B5%D1%88-%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D1%8C
В микроконтроллере ESP памяти нет, есть внешняя микросхема на 0.5-4Мбайт. В ней хранится и прошивка, и пользовательские данные
У меня такой датчик работает в паре с ESP8266, данные шлет в приложение Blynk, в помещении 3фазы, встал вопрос прикрутить такой датчик на остальные 2 фазы. На каждый датчик вешать ESP не хочется, поэтому задался вопросом прикрутить все 3 датчика к одной ESP. В этой области не силен, но как понимаю нужно каким то образом прикрутить каждому датчику свой ip и присвоить каждому разные переменные вольт, ватт и т.д. А в ESP использовать программные сериал порты. С портами разобрался, с переменными думаю тоже разберусь, они вроде находятся в PZEM004T.h, а вот как с ip адресом как быть? Да и вообще правильные ли у меня мысли по этому поводу или прикрутить к каждому датчику свою ESP и не заморачиваться?
Спасибо тебе, добрый человек.
вообще там вся серия публикаций достаточна хороша, чтобы ее почитать.
Гарна цацка! И обзор отличный.
А время только в китайском формате существует или можно, каким то образом, его в удобоваримой форме выводить? Я имею ввиду с датой.
Время можно преобразовывать в любой формат.
Для этого библиотека Time.h
Всегда голодным прикидывается. А живот уже по полу волочится )))
И вот вам примерное время когда кто и на сколько в среднем заехал. Все расхождения с подсчетами высматриваются камерами.
на деле просто надо достойно платить и тогда и крысятничества не будет. У знакомого была автомойка. Пока сидели говорит на ЗП крысили, как только перевел на процент — сразу прибыль выросла.
Это не панацея. У моего друга детства четыре мойки, одной, некоторое время, владели на паях, так что плавали, знаем. Вы своему знакомому посоветуйте понаблюдать за расходом химии)))
А что касается процента, то я потерял нескольких, как мне казалось друзей, с которыми строили бизнесы на паях(процент прибыли) — некоторым казалось, что они работают больше, а зарабатывают столько же сколько я.
Так будет всегда. Значит не друзья они во все. Плюс может так оно и было? Это очень сложный вопрос.
По поводу той же химии… у меня жена работала в фастфуде когда-то давно. Работали на проценте. Но он был мизерный. Хотя и выходило не плохо для 18 лет от роду. Так вот они изначально поступали правильно — они закупали на стороне сосиськи, булки, соусы и все остальное. И каждый 10-й хотдог скажем делали из своего. Так что чего там смотреть? Вы сами занимаетесь закуппкой химии? Скрее всего у него был ответственный работник и он этим и занимался. Они там по любому все крутятся в одной каше и просто затаривали больше чем отчитывались. В общем это не проблема если голова на плечах.
У меня знакомый, поймав смену на такой схеме, заставил их сожрать весь «навар» за неделю, а потом уволил их всех. Психанул)))
С электриками спорить простым логером напряжений. Так что это скорее увидел/зачесалось/сделал/поделился.
Анализ разных типов светильников, разных ПРА, разных режимов.
Но с удовольствием узнал, что мой потребляет примерно 40-60Вт, но если включить максимальную производительность м запустить архиватор, то и 100Вт. При этом он еще аккумулятор не заряжает.
А я удивлялся, почему у не родного БП га 90Вт защита от перегрева срабатывала.
aliexpress.com/item/Free-Shipping-AC-110V-220V-Digital-100A-watt-power-meter-volt-amp-Ammeter-Voltmeter-80-260V/32557537026.html
В принципе SD3003 и SD3004 много где могут использоваться. Для таких приборов и создавались
И дополнительно к нему прикрутить esp8266 что-бы логи на сервер писал.
Хотя возможно проще будет вашу схему в таком корпусе собрать
У ESP12F 4Мбайта памяти из низ 3МБайта под SPIFFS.
При размере одной записи 30байт получаем 100000 записей.
Для моих задач больше чес достаточно.
Есть чистка одного или всех архивов.
В принципе, можно и внешнюю память прикрутить. Делал в другом проекте.
А здесь думаю запись прямо на сервер организовывать, раз уж WiFi есть
Если задачи такие будут, реализую.
Пинов вполне хватит.
Теоретически SPI можно на два устройства разделить. А нет, так есть еще «секретные» GPIO9 и GPIO10 в запасе.
Прикольный шилд от RobotDyn
aliexpress.com/item/Sensor-Shield-for-Arduino-Mega-2560-with-SD-card-logger-Assembled/32530910099.html
На него сверху любой уновский шилд сажается
Только раньше на него доставка была бесплатной
Но всегда можно писать 00:00 новое значение в EEPRON, а на сервер отправлять разницу
Можно даже сервомоторчиком на кнопку нажимать )))
Но в принципе накапливать энергопотребление в EEPROM — логичная функция для такого типа приборов. Получаются вполне годные счетчики для технического учета ЭЭ.
Поэтому проще считать отдельно потребление за сутки (или за месяц) и его отправлять на сервер.
Кстати, народный мониторинг по прежнему только 3 месяца данные хранит?
сервомотор это извращение какое то согласитесь. а вот релюшку параллельно кнопке подключить это не сложно. главное код придумать чтобы реле срабатывало
Даже еще меньше — 1 мес с дискретностью не чаще 1 раза в 5 минут
Профиль мощности нормальный не построишь
narodmon-2704-270217-280217.csv.bz2
да вести анализ подробный не выйдет, но данные на яндекс диске
Код для сброса github.com/kmaximv/Wi-Fi-Sensor/blob/master/esp_sensor/esp_sensor.ino#L607
Для сброса подаю команду по MQTT
как раз пришел PZEM-004 и экран лежит 1602, надо будет попробовать срастить.
— Интересный инженер по измерениям, точность его не волнует. По крайней мере не основное требование.
— Трансформатор тока сбоку от конструкции это, имхо, полу прибор.
Вопрос: а как измеритель реагирует на не синусоидальный ток, например если в качестве нагрузки резистор с тиристорным регулятором?
Так что даже формулировать не стал. Тут однозначно выше
С трансформатором да. Промашка вышла )))
Если будет повторяемость, просто нужно корпус нормальный подобрать.
С Синусоидой не понял вопроса. Нагрузка даст какие то искажения по синусоиде.
Прибор, судя по даташиту микросхемы, измеряет RMS-значения.
Для контроля нужно с каким то эталонным прибором сравнить.
Как узнать, что он как то не так реагирует?
Если подключим тот же резистор, но через тиристорный регулятор (мост, встречно-параллельно включенные тиристоры) с углом проводимости 90 градусов (чтобы ток через нагрузку вместо каждые пол периода шел четверть периода или амперметр, измеряющий среднее значение показывал половину) какое значение активной мощности покажет прибор?
В случае реактивной нагрузки, что будет с точностью?
По даташиту прибор мерит активную мощность.
Как проверить реактивку?
Включить в розетку кондер большой емкости и посмотреть, покажет ли что-то прибор?
странно вообще: если меряем отдельными каналами U & I, почему не вычислить заодно cos(Fi)?
Значит может.
Нарисовал себе вот такой показометр с расчетом КМ.
Вобщемто собрал себе целую обвязку по сбору данных с разных мониторов, складированием в базу и выборкой статистики без привязки к каким-либо клауд-сервисам. Приборчик для дома показал себя отлично. До обзора вот руки не дошли…
Пока мой PZEM-004T еще в пути из Китая, решил пробовал прошить ESPху твоей прошивкой.
Вообщем появляться точка доступа (ESPEM_хххх) — подключаюсь, захожу на морду ESP по 192.168.4.1, вписываю лонины пароли от домашней wifi, жму save.
ESP перезагружаться, моргает пару раз диодом и появляется сеть и какими-то абракадабрами, к которой невозможно подключиться…
Может быть такое что это все не запускается без PZEM?
А может я вообще не правельно все сделал? ))
Напиши не большой ман. Спасибо! :)
Поставил во входной щиток и подрубил к вводному автомату и распределительным автоматам. И знаешь какая группа сколько потребляет для внутреннего учета.
Но можно и к одному ESP несколько модулей по SoftSerial. Только опрашивать их по очереди.
Или вообще коммутатор сделать. Тогда хоть сколько.
Когда сам что-то делаешь, можно практически любые задачи решить. Лишь бы бюджет позволил.
Только не понятно, зачем там ESP на каждую фазу?
И не проще ли брать «голый» ESP, а не модуль с USB?
kvvhost.ru/2018/04/13/pzem-004-espeasy-domoticz/
Там же написано, как обойтись без lua скрипта.
репорт
Если нужно самому, то такой же измеритель + микроконтроллер + MAX485
Если не нужен графический дисплей и логгер, то микроконтроллер можно исключить
так что записать не получится
strawberry-linux.com/pub/ina226.pdf
Если нужно быстрее, тот можно поставить аналоговый делитель и быстродействующее АЦП
А как Вы считаете, можно ли программно/аппаратно увеличить частоту записи с 1/20 сек. до 1/30, 1/40 или 1/50. Или изменить дискретность с 0,1В до 0,05В. Что принципиально проще из двух вариантов?
Так же просьба у автора ( можно файл печатки?).
Спасибо!
Воткнул такую плату на BL8550
github.com/samopal-pro/PowerMeter
Делитель там на входе хороший
Например, едет сейчас такой модуль
aliexpress.com/item/Free-shipping-Zero-drift-CJMCU-219-INA219-I2C-interface-Bi-directional-current-power-monitoring-sensor-module/32379404350.html
Если подобрать шунт и делитель на входе, можно на любое напряжение ток рассчитать
aliexpress.com/item/0-100V-50A-Red-Blue-Digital-Voltmeter-Ammeter-2in1-DC-Volt-Amp-Meter-W-Shunt/32787667389.html
Если нужно передать данные через ардуино, то подойдет такой датчик тока
aliexpress.com/item/Panel-Mount-50Amp-AC-DC-Current-Sensor-Module-Board-based-on-ACS758/32497310356.html
Датчик указанный sav13 измеряет маленький ток/напряжение — для солнечных панелей от 100Вт слабо подходит.
Nagios — опрашивает приборы по rs-485
Thruk — выводит данные в красивом виде на ПК.
Кто нибудь настройкой подобного ПО? Это сложно? Есть ли простые аналоги? Хочу сделать мини систему диспетчеризации.
Нужны только агенты (пишутся на коленках на чем угодно)
В Zabbix тоже самое.
Сложно не сложно но вполне настраивается
github.com/zbx-sadman/Zabbuino
В числе прочего реализована работа с данными измерителями.
Причём можно работать одновременно с несколькими, например 3 шт для замера трехфазного ввода.
Подключение нескольких измерителей реализовано в двух вариантах.
1. Измерители цепляются параллельно, каждому присваивается свой адрес (из всех измерителей кроме одного надо одну деталюшку выпаять)
2. Выпаивать ничего не надо приём (или передача, точно не помню) заводятся на одну ногу а второй вывод раскидывается по разным портам.
Там в каждом подвале мануфактуры.
На самом деле трудоемкость практически одинаковая, что и на макетке паять. А эстетическое удовольствие от результата несоизмеримое!
(не надо думать про корпус, не нужен экран, нет катушки). Вторая ссылка — картинки:
github.com/AlexeySofree/WiFi_Watt_Meter
github.com/AlexeySofree/WiFi_Watt_Meter/issues/1
Веб сервер есть — отдаёт в json. В принципе можно прикрутить Blynk и смотреть показания на смартфоне.
А еще нужно рассчитать делители и выполнить калибровку.
Здесь же уже готовый откалиброванный модуль.
Так вот, он ещё показывает частоту в сети. Это тоже можно реализовать с этим чипом и простой обвязкой?
samopal.pro/tag/%D1%87%D0%BF%D1%83/
Причем сильно модернизированный
Сейчас версию 2 с нуля собираю
Но измерение барахло.
Мощность он измеряет только активную, типа лампочек.
А если измерить потребление компа, то покажет в двое ниже.
Шунт должен быть реальный, а не виртаульный, как у тебя в виде трансформатора тока )))
Так как зделал ты, никто мощность не считает, посмотри любой электронный счётчик.
Это только китайцы так мощность измеряют.
Я это уже проверил при продаже таких ваттметров на трансформаторах и реальных шунтах.
homes-smart.ru/index.php/component/kunena/4-zhelezo/1075-problema-s-podklyucheniem-monitora-energii-pzem-004t?q=/index.php/component/kunena/4-zhelezo/1075-problema-s-podklyucheniem-monitora-energii-pzem-004t&start=120
Один измеритель как у автора обзора, второй с шунтом, третий счётчик от энергокомпании.
Нагрузка пара серверов, неск свичей м маршрутизатор.
Может быть такой измеритель и не учитывает что-то но поскольку счётчик от энергокомпании так же этого не видит (а следовательно я за это не плачу) — то результатом и точностью я удовлетворен.
Для общего развития предлагаю Вам почитать другой обзор данного измерителя на этом сайте где автор измерил его точность достаточно серьёзными приборами.
Мне бы хотелось отслеживать 19 каналов
Почему при компиляции прошивки в ESP, WEB интерфейс прописан по адресу 192.168.4.1 (хотя на фото 192.168.1.4) ???
И второе Почему когда всё таки попал WEB, то не сохраняются данные конфигурации для своей сети в epprom???!!!
Вхожу в веб сразу после прошивки через вайфай, без установки в основную плату.
У кого то есть такое. ??
P/S Пробовал менять IP адреса в самом скетче в Ардуино IDE. Но IP не меняется!!!
Почему не сохраняются настройки в eeprom ??
Захожу в конфиг. Но уж очень медленно. Настройки не сохраняются. При старте IP 192.168.4.1
Измерения не происходит.!!! Я так понимаю из за настроек.
Отзовитесь, кто смог запустить измеритель и изменить настройки.
Из PZEM-04 читать данные не возможно.
Если использовать вторую версию модуля. Т.е. когда идёт понижение с 5 вольт до 3,3 вольта, то впаивать параллельно дополнительно сопротивление 1 кОм на R17 не нужно!!! Если делать повышение с 3.3 вольта до 5 вольт ( как на фотографиях), тогда нужно.!!!
Иначе ESP не сможет считать данные. Хотя лучше конечно использовать согласование уровней. И это будет и надёжно и безопасно для ESP.
И ему в TTL надо подавать 5В тогда, и подключае мнапрямую к wemos d1 min (esp 8266) безо всяких резисторов?
Пробовал давать ему в ТТЛ 3.3В — тогда ничего считать не удается, если давать 5в в ТТЛ, то данные пошли, но чет не поинмаю, не спалю ли wemos d1 mini таким образом.
Я сделал вот такой шилд эдакий ардуино мега 2650, но для ESP8266 WEMOS D1.
www.pcbway.ru/project/shareproject/Red_Mantis_Shield_V_1_1.html
В него втыкаются китайские блоки и получается следующее:
1)ESP8266
2)Цветной TFT дисплей 240x320 на контроллере ILI9341
3)5 аналоговых портов вход
4)штук 10 свободных шип портов выхода не помню точно, как то не задавался целью.
5)Входы для датчиков температуры DS18b20
6)Колодка под датчик давления BMP180/280
Немного подправив скетч по номерам ног и прошивка заработает.
А вот следующий этап, хотелось бы добавить в прошивку управление резистивной нагрузкой ТЭН через твердотельное реле.
Допустим на веб морде мы задаем сопротивление тэн, выставляем мощность 2000 ватт.
Когда меняется напряжение в сети в большую или меньшую сторону, процессор должен управлять реле и поддерживать всегда выставленное значение в ваттах.
Сейчас с новой версией идет уже нужный мне ссылка, но новое устройство не нужно.
В новом используется трансформатор pzct-02 и стоит он как пол самого девайса ссылка
«условно» ver_1.2 (NodeMCU V3 Lua WiFi / hw-628 v1.1 + PZEM-004T-v3.0)
в комплекте прошивка, прошивальщик, схема
допустим у меня регулятор мощности подаёт 1 мс на нагрузку в течении 1 сек он сможет это уловить и щитать стабильно мощность и киловат часы?