[recovery mode] Мощный четырехканальный диммер для светодиодов

В этой статье я расскажу о проекте мощного четырехканального диммера для светодиодных полосок и ламп (до 200 ватт суммарной мощности, 50…100 ватт на канал) с высокой частотой PWM-регулирования (1 килогерц с глубиной цвета в 10 бит), для качественного освещения. Дополнительно у него имеются вход датчика освещенности, функции обратной связи (выдача контроллеру информации по входному напряжению питания, напряжению на измерительных входах и так далее) и даже гальваническая развязка последовательного порта управления.

34a40c43cea94d2c86d0a577633c5993.JPG


Так получилось, что я решил поменять свой профиль и плотно заняться микроконтроллерами и автоматизацией, а через несколько месяцев — получил заманчивое предложение сделать «умный дом» в Доминиканской республике, да такой, чтобы управлялись и автоматизировались практически все аспекты быта довольно крупной виллы из трех больших зданий, от освещения и климата, до садовых роботов и системы полива. Так как я уже давно устал от снега и морозов, отклонить такое предложение было невозможно, тем более что с переездом и адаптацией сильно помогли.

Разумеется, одна из самых ответственных задач — управление освещением, как во множестве комнат, так и снаружи. В целях экономии дорогой здесь электроэнергии — практически везде будут применяться светодиодные полоски и 12-вольтовые лампы, которыми нужно управлять при помощи диммеров. Существующие модели диммеров не очень удовлетворяли по всем параметрам (достаточно высокая частота регулирования, для отсутствия мерцаний; мощность, для управления яркими длинными полосками или лампами/прожекторами; закрытые протоколы обмена, и так далее). Поэтому я решил сделать свой диммер.

Очень больным вопросом на этапе проектировки был выбор получения низковольтного питания из 110 вольт переменного тока. Рассматривался даже экзотический вариант с бестрансформаторным step-down сразу до 12 вольт, но из-за соображений электро- и пожаробезопасности был отвергнут. Готовые блоки питания 110→12 оказались не такими уж и дорогими ($20 за 120 ватт и $40 за 200), хотя и довольно габаритными. Но, к счастью, места для размещения оборудования — оказалось много, поэтому остановился на этом варианте.

Схема получилась относительно простой (если не считать узла гальванической развязки последовательного порта на четырех оптронах) — микроконтроллер STM32F030F4P6, два драйвера MOSFET-ов ADP3624 и ключевые транзисторы IRLB8748, выбранные с большим запасом (с нагрузкой в 100 ватт на канал — они были едва теплые), плюс готовый китайский модуль импульсного step-down в 3.3 вольта. Выбранные драйверы позволяют управлять на частотах вплоть до мегагерцовых, что и дает частоту выходного напряжения в килогерц, с шагом PWM в одну микросекунду. На практике испытывался даже режим с частотой PWM в восемь килогерц и шагом в 125 наносекунд, но на практике такая высокая частота регулировки угрожает некоторой нестабильностью на выходе — транзисторы могут просто не успевать так быстро закрываться и качество регулировки будет «плавать».

0660b38bbd6f408894a90839f6ce3407.png

Разводка платы под такие большие токи была для меня довольно сложным вызовом, раньше с подобными задачами я не сталкивался. Решено было сделать максимально широкие (проводник шириной минимум 10 мм на слое 70 мкм меди), а там где это невозможно — использовать второй слой, объеденив их при помощи большого количества переходных отверстий. Маску с высоконагруженных проводников я убрал, чтобы, при необходимости, можно было наложить сверху медную шину (но это не понадобилось, даже при максимальной нагрузке в 200 ватт — плата греется едва до 40 градусов в закрытом корпусе).

Протокол обмена, из-за недостатка флэш-памяти, был выбран предельно простым, команды передаются построчно, в виде текста »0:512» (нулевой канал, PWM 512), выходные данные передаются точно также (напряжение питания, данные с первого фоторезистора, данные со второго фоторезистора, входное напряжение на входе ADC3, входное напряжение на входе ADC5, напряжение питания контроллера, температура чипа). Правильнее было бы использовать протокол MQTT, но я опасался, что не влезет во флэш (килобайт свободного пространства остался из 16).

Исходный код на гитхабе

Разумеется, первая версия диммера получилась не без недостатков. Выяснилось, что одного конденсатора 470 микрофарад на 12 вольт — недостаточно, при большой нагрузке он слишком сильно греется (особенно если провода до блока питания тонковаты для таких токов), надо добавить еще парочку, более мощных (по макисмально допустимому току). Китайский модуль питания тоже оказался неудачным решением, один из модулей вышел из строя во время тестов вообще без видимых причин, его я заменю преобразователем на TPS62177, дополнительно также добавлю еще один опциональный преобразователь на AP1501 (24→12), для случая питания диммера от 24 вольт. Ну и понадобится схема управления 120-миллиметровым вентилятором для блока питания (в тех случаях, когда нагрузка близка к максимальной), с термоконтролем и плавной регулировкой. Также решил заменить сложную схему гальванической развязки порта управления на чип SI8641.

Есть проблемы и в программной части — иногда подвисает чтение из последовательного порта, блокируя управление (опыт с STM32 у меня не очень большой пока), да и протокол получился уж слишком идиотским, может попробую запихнуть туда нормальный MQTT.

Вот пример использования диммера на тестовом стенде (моей входной двери), совместно с ИК-датчиком расстояния (цвет и яркость RGBW полоски регулируется, в зависимости от расстояния, через openhab):

В следующей статье расскажу о четырехканальном блоке коммутации восьмикиловатных AC-нагрузок с бистабильными реле (для уменьшения потребляемой зря энергии) измерением потребляемого тока на каждом канале.

Ну и закончу на позитивной ноте. Как оказалось, в Доминикане не найти 99% изопропилового или этилового спирта для промывки плат (и чистого бензина — тоже). Можно найти 70%, смешанный явно не с дистилированной водой, оставляющий разводы. И можно еще легко найти 99.6% метиловый (не знаю зачем они это вообще продают, его же даже как растворитель использовать страшно — парами можно надышаться). Я решил попробовать промыть первую плату диммера дистилированной водой, купленной в магазине хозтоваров. Мысль проверить качество дистилята на вкус я, к счастью, не воплотил в жизнь. А вот плате и оцинкованной раковине очень не понравилось, когда я облил их аккумуляторным электролитом (бутылки с водой стояли вместе с ним на полке, очевидно я ухватил не ту, когда клал в корзину)…

© Geektimes