Тема: Простой стабилизированный регулятор мощности ТЭНа из китайских модулей
Принцип работы простого стабилизированного регулятора мощности ТЭНа из китайских модулей:
Желаемая выходная мощность выставляется кнопками с шагом 1/200 от номинальной.
Ежесекундно измеряется среднеквадратичное значение напряжения в розетке, в зависимости от измеренного корректируется выходная мощность. Управление ТЭНом производится по "алгоритму Брезенхайма", целыми полупериодами.
Собственно вот схема устройства:
Лампы не моргают.
Есть режим разгона - ТЭН работает на максимальную мощность, твердотельное реле шунтируется контактным для облегчения режима и повышения надежности (у меня в режиме разгона радиатор твердотельного реле не нагревался выше комнатной температуры).
Отдельного детектора перехода через ноль нет. Есть программная автоподстройка частоты и фазы управляющего импульса с электросетью, а в твердотельном реле стоит оптопара со своим встроенным детектором перехода через ноль.
За говнокод ногами не пинать - язык С изучался в процессе написания. Написано во многом на основе трудов предшественников (в основном - одного предшественника с вражьего форума). Это прототип, код можно и нужно причесать.
UPD: В версиях v0.8, v0.9 код уже достаточно причесан
Себе собрал полностью на пайке, но, думаю, можно собирать и на макетке, и на разъемах. Но настоятельно рекомендую аккуратно выпаять верхний по схеме разъем из релейного модуля и впаять провода. Там токи в десятки ампер - на хлипких клеммниках обязательно случатся фейерверки в самый неподходящий момент. В крайнем случае лучше уж совсем без релейного модуля - работать будет. Обязателен хороший радиатор на твердотельное реле, а если ТЭН более киловатта - то и вентилятор обдува.
Список комплектующих:
1. Arduino Nano
2. Датчик напряжения (ищется по запросу ZMPT101B, в обсуждении темы описана процедура проверки датчика)
3. Реле твердотельное SSR-40 DA, (40 - это максимальный ток, можно брать с бОльшими цифрами, но обязательно SSR и обязательно DA)
4. Модуль контактного реле (ищется по запросу RM1HLE-30A)
5. Дисплей OLED 128х64 I2C, (бывает ещё SPI, с моим скетчем такой работать не будет, только I2C)
6. Кнопочная матрица (ищется по запросу 1x4 key matrix membrane, можно использовать TTP223/TTP224 или любые кнопки, способные замкнуть вывод ардуины на "землю")
7. Блок питания 5В и не менее 0,4А, желательно стабилизированный. (У меня была старая мотороловская зарядка - её и использовал.)
8. Клеммник - любой, рассчитанный на ток не менее 30А. (Можно купить и в магазине электрики)
Калибровка стабилизатора:
В дежурном режиме на дисплее устройства высвечивается измеренное напряжение сети, установленная и номинальная мощность. А также режим разгона и состояние контактного реле. Для калибровки достаточно выставить переменным резистором, находящемся на плате датчика напряжения, значение, соответствующее напряжению сети. Поскольку прибор не столько измеритель, сколько стабилизатор, особой точности установки значения напряжения сети не требуется и его можно выставить по показаниям любого недорогого мультиметра.
Подключение дисплея:
Скетч поддерживает I2C OLED 128х64 дисплеи под управлением контроллера SSD1306 или SH1106 (только скетч v0.9)
На схеме указано подключение универсального (I2C/SPI) дисплея с семью выводами, четырехпиновый I2C дисплей подключается аналогично:
SDA - A4
SCK - A5,
в этом случае НЕ подключается вывод сброса дисплея D2 (pin_OLED_res).
В версии скетча v0.9 вывод можно отключить программно, закомментировав строку
//#define DisplayReset // Раскомментить, если используется вывод сброса дисплея
Изменяемые параметры:
Предварительно в скетч нужно внести некоторые изменения.
1. Изменить коэффициент нормирования. У меня перепаяна микросхема в модуле датчика напряжения (пришлось перепаивать, поскольку китайцы прислали бракованный модуль) и коэффициент рассчитан под неё.
#define Ku 0.55 // Коэффициент нормирования ((380/512)^2, 380В максимальное амплитудное)
Для стандартно устанавливаемой микросхемы ОУ строка должна выглядеть так:
#define Ku 2.2
Сказанное справедливо для версии скетча v0.8, в версии v0.9 изменение коэффициента производится изменением строки:
//#define NOT_LM358 // Раскомментить, если в датчике напряжения стоит НЕ LM358, а rail-to-rail операционник
2. В версии скетча v0.8 нужно задать номинальную паспортную мощность ТЭНа для напряжения сети 230В.
Мощность нужно указать явно в ваттах, изменив строку:
static volatile uint16_t Pnom = 1800;// Номинальная мощность ТЭНа
Скетч и библиотека дисплея:
Скетч (версия 0.8)
на мейл-клауд, на яндексе
После включения и показа заставки стабилизатор переходит в дежурный режим. В дежурном режиме на экране отображаются измеренное напряжение сети, установленная и номинальная мощности, режим разгона, состояние контактного реле и текущий коэффициент pdm. При пониженном напряжении сети или в его отсутствие отображаются аварийные сообщения. Начальная выдаваемая в нагрузку мощность равна нулю.
Желаемая мощность устанавливается кнопками "P-" и "P+".
Режим разгона триггерный, включается/выключается одной кнопкой "Разгон".
Кнопкой "Стоп" осуществляется экстренное отключение нагрузки. По нажатию кнопки "стоп" текущее значение мощности запоминается. По нажатию кнопки "стоп" из стопа - появляется мини-меню, в котором можно выбрать из нескольких значений мощности, включая последнее запомненное. Выбор - кнопка "P-", принять уставку и выйти из меню - прочие.
Скетч (версия 0.9)
на мейл-клауд, на яндексе
Это версия с улучшенным интерфейсом.
Меню по-русски, экран перекомпонован, мощность указана в ваттах, уставка в ваттах и в процентах от номинала, напряжение сети указано с точностью до десятых долей вольта.
Номинальную мощность можно задать/записать/выбрать из записанных в начальном меню. Если выбрана записанная номинальная мощность - уставки тоже можно записать (записанная уставка помечается буквой "R").
Пароль на архив alcodistillers.ru
Ссылка на проект на GitHub'е:Проект на GitHub
Страница на сайте
Страница с кнопкой пожертвования автору