В общем, очередной велосипед под Ардуино, а теперь еще и 3-х фазный:
- последовательное измерение напряжения и тока, расчет мощности
- фазовое регулирование, для стабилизации заданной мощности
- "датчик тока" на трансформаторе тока https://learn.openenergymonitor.org/...ce-with-arduino (наверное с ASC712 тоже можно)
- "датчик напряжения" без диодного моста https://learn.openenergymonitor.org/...c-power-adapter (можно и с мостом)
- WEB-морда совсем примитивная - несколько фиксированных мощностей, или задавать мощность параметром в строке адреса
- энкодер, для установки мощности локально
- Modbus для установки мощности удаленно - от SCADA
- таже возможно управление и мониторинг по Serial или Telnet - (передать SPxxxx, где xxxx - необходимая мощность)
- OLED, OTA, DS18B20
Будьте осторожны! Высокое напряжение опасно для жизни.
Плату использовал Wemos Lolin32, полагаю что любая ESP32 подойдет.
Схема - https://easyeda.com/...be04617ad27e1fc (печатную плату отсюда брать не надо!)
Скетч - https://github.com/Tomat7/mb-AC-Power
В папках AC-power_YYYYMMDD также есть libraries_ESP32_YYYYMMDD.zip в котором все необходимые библиотеки для каждой версии.
Код полностью "Ардуино-совместим".
Установить необходимые библиотеки, открыть в Arduino IDE и всё должно скомпилироваться. Все "настройки" в файлах config*.h
В коде много отладочной информации, для отключения лишнего закоментировать #define SERIAL_DEBUG и #define DEV_DEBUG.
Кому интересно, проект VisualStudio со всеми промежуточными версиями
https://tomat.visualstudio.com/ESP32-AC-powerСейчас ветка "7-TESTED-OK" соответствуют _20190604 на GitHub, "7-LIBRARY-OK" *_20190615 на GitHub, остальное - промежуточные варианты. В "dev" идет разработка, в "master" обычно крайняя проверенная версия. Архив с библиотеками только на GitHub.
Настройка такая же как у регулятора Sebra:
1. подключаем нагрузку
2. задаем максимальную мощность - SP3500 в Serial
3. меряем напряжение RMS вольтметром и ток клещами или подходящим амперметром
4. смотрим в Serial монитор (или Telnet) что намеряла ESP32 (коротким нажатием на кнопку энкодера можно перевести дисплей в режим показа напряжение и тока отдельно по каждой фазе)
5. крутим подстроечники так, чтобы показания ESP32 были как можно ближе к показаниям вольтметра/амперметра
6. проверяем на малых мощностях
Для 3-х фазного регулятора настраиваем каждую фазу отдельно, оставляя две других фазы не нагруженными.
На регуляторе выполнено две полных ректификации - общая оценка 5 с минусом.
За что минус
Минус за непонятное поведение OLED дисплеев - без реальной нагрузки они работают замечательно и долго, при управлении ТЭНом начинают весело глючить - у первого экземпляра пропали четные строки пикселов при первом включении с чайником. Второй дожил до конца первой ректификации, а потом за сутки вырубился насовсем. Третий экземпляр в середине второго перегона стал показывать картинку в зеркально-перевернутом виде. До сих пор не могу понять чьи это проблемы - дисплеев, скетча или схемотехники прибора.Обновление от 23.06.2019:
Весь фукционал измерения и регулировки мощности перенесен в библитеку ACpower https://github.com/Tomat7/ACpower
Код основного скетча переписан под эту библиотеку.
Обновление от 14.11.2021:
22.7.2019 разработка 3-х фазного регулятора вынесена в отдельную библиотеку https://github.com/Tomat7/ACpower3
Основной код совместим с обоими библиотеками, но ACpower обычно отстает от ACpower3, так как приоритет у 3х-фазника.
Это исправляется как только я понимаю что библиотека однофазника несовмесима с 3х-фазником. (но это бывает не сильно часто)
За пару лет работы суммарное количество затираний солода, дистилляций и ректификаций близко к полусотне.
Минус описанный выше "исчез" на четвертом OLED дисплее - он проработал почти два года!
Пару месяцев как перешёл на LCD2004 - были свои глюки, но пока он мне нравится больше.
Обновление от 22.05.2022:
Поэтому при компиляции использовать Arduino core for the ESP32 только версии 1.0.6
UPDATE: В Arduino core for the ESP32 версии 2.0.3 уже все исправили!
В проекте использованы библиотеки (все есть в файле libraries_ESP32_YYYYMMDD.zip на GitHub'е):
- ReadDigKey [сообщение #13000957] Спасибо Chatterbox
- ASOLED (пришлось модифицировать для ESP32) http://arduino.ru/...rillitsei-utf-8 Cпасибо Andriano
- OneWire (эта уже модифицирована для ESP32) https://github.com/stickbreaker/OneWire Thanks to Chuck Todd
- OneWireNg - (Onewire написанная с нуля) https://github.com/pstolarz/OneWireNg Thanks to Piotr Stolarz
- modbus-esp8266 https://github.com/emelianov/modbus-esp8266 Спасибо Alexander Emelianov и Thanks to André Sarmento Barbosa
- DStemp https://github.com/Tomat7/DStemp обёртка для OneWire
Имеется косяк, куда ж без него
У меня ESP32 начинает занижать напряжение от 180 вольт и выше.То есть, от 100 до 180 вольт достаточно точно сходится с RMS вольтметром, а дальше еле растет.
Избавился от этого введя U_CORRECTION. В скетче числа подобранные под мой "измеритель" напряжения.
На другом железе всё может быть по-другому.
Удачи!