Найти тему
Дача DIY

"Киберскважина". Часть 7: Сборка электрощита и борьба с bootloop ESPHome

"Киберскважина" - серия статей о разработке DIY контроллера управления скважинным насосом и мониторинга состояния оборудования кессона с доступом по WiFi на базе микроконтроллера ESP32 под управлением умного дома Home Assistant. Файлы проекта доступны на GitHub.

Самодельный контроллер и модульное оборудование изначально планировалось разместить в электрощитке, который будет установлен в кессоне непосредственно рядом со скважиной.

Подготовка к сборке

Подобрал хороший недорогой щиток IEK TITAN 5 со степенью защиты IP 54 на 24 модуля:

Собрал в кучу купленные заранее модули, остатки проводов от монтажа щитка в бытовке, инструмент, и приступил к сборке:

-2

Вначале думал собирать прямо по принципиальной схеме, вроде бы ничего сложного:

-3

Но сразу понял, что ничего хорошего не получится - нет наглядности. Нужна монтажная схема, максимально приближенная к реальной конфигурации щитка. Я не стал пользоваться какими-то спец-программами для этого, и по-быстрому набросал такую схему в LibreOffice Draw, без лишних заморочек с детализацией:

-4

Здесь важно было показать только что с чем соединяется и где будет использоваться ветвление провода. И этого оказалось вполне достаточно, вести монтаж по такому эскизу стало гораздо проще.

Сборка

Силовые линии выполнил сечением 6 кв. мм (ввод, питание насоса и отопления), сигнальные - 1.5 кв. мм. Качественный провод "Алюр" с честным сечением остался у меня ещё со времён монтажа щитка ABB в бытовке в 2016-ом:

Антенну контроллера временно смонтировал прямо на нём, без вывода наружу:

-5
-6

Чёт не догадался вынуть из корпуса раму с модулями на период монтажа, было бы гораздо удобнее провода пропихивать. А когда вспомнил об этой возможности - щиток уже был собран.

Красивая укладка проводов в щитке

Ровную красивую укладку проводов в щитке осознанно не сделал. Однажды я попробовал собрать "красивый" щиток (в бытовке как раз). Ну не прям идеальный, но заморочился как мог:

-7

Но потом не раз плевался. Плюсов у красиво уложенных в жгуты проводов внутри щитка ровно один - красиво на момент сборки. Всё. Потом щиток закрыл и никто эту красоту уже не видит. Ну и зачем она там?

Минусов же гораздо больше. "Красивую" укладку выполнять гораздо дольше и заморочнее. Сложнее подбирать длины проводов, особенно когда они ещё не стянуты в жгут. Сложно продумать порядок сборки проводов, чтобы они не перехлёстывались при входе и выходе из жгутов. В общем - возня.

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

Понятно, что когда вся проводка в щитке в жгутах, то чтобы проложить пару проводов, нужно разобрать все жгуты, а потом подвязать их обратно. А если вдруг понадобилось сдвинуть в сторону какой-то модуль - то вообще караул, длины проводов уже не хватает и надо переделывать полщитка. В общем, негативный опыт я поимел, и больше так делать не хочу.

Свободное расположение проводов не несёт за собой ни одного минуса, кроме видимой неопрятности. Важно лишь соблюсти требования по сечению проводов, выполнить обжим наконечниками и хорошо затянуть клеммы. Даже маркировку проводов никакую делать не нужно - ни нумерацию, ни цветоделение, так как любой провод можно немного подёргать и сразу увидеть, куда он идёт. Всё просто и удобно.

Написав этот текст, решил таки погуглить на эту тему - что думает общественность? И с удивлением первой же ссылкой обнаружил статью небезызвестного сборщика щитов и блогера CS-CS.Net, которая полностью описала мой опыт и подтвердила мои выводы:

Жгутирование и укладка проводов в щитах: как же правильно? – CS-CS.Net: Лаборатория Электрошамана

Я оказывается тоже уже опытный сборщик щитов, прошедший путь от Дизайнера до Практика ))

Собрал, включил - и не работает!

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

Ситуация развивалась довольно забавно. Первое включение прошло успешно, всё работало как и задумано, контакторы щёлкали, лампочки горели. Я довольный уже взялся собирать инструмент и наводить порядок, для чего переставил собранный щит в другое место и снова подключил его к электропитанию. И вот тут и началась циклическая перезагрузка. Десяток-другой циклов, после чего контроллер наглухо зависал, не реагируя на кнопки. Перезапуски по питанию не помогали.

Что я только не проверял и не пробовал. Думал, может 230 В, подведённые к твёрдотельным реле в контроллере, какие-то наводки создало. Или модульные контакторы создавали электромагнитный импульс, приводящий к перезагрузке (это, кстати, тоже оказалось правдой, об этом чуть ниже). Или может пробой где-то и микроконтроллеру крышу снесло. Или ему питания не хватает по току.

После того, как проверил и поотключал всё, что можно, оставалось только одно - проверить сам микроконтроллер на предмет его живости. И вот тут-то и пригодился продуманный заранее ремонтопригодный конструктив. Так как контроллер находится в бутлупе и виснет, то перепрошивка по воздуху уже невозможна - он даже не успевает установить связь по WiFi, не говоря уже о том, чтобы поддерживать её на период заливки обновления (так я думал на тот момент)

Ремонтопригодность конструктива и отказоустойчивость ESPHome

Остаётся только перепрошивка по проводу. Это выглядит так (толстый чёрный провод - подключение по USB микроконтроллера к компьютеру):

-8

Немного промахнулся с расположением платы микроконтроллера внутри корпуса - слева от разъёма microUSB оставил недостаточно места под торчащий разъём кабеля. Пришлось немного подрезать корпус разъёма на кабеле, чтобы его туда засунуть.

Однако перепрошивка по кабелю на ту же самую прошивку положительного результата не дала. Бутлуп сохранился. Неужели всё же сдох? Залил в микроконтроллер тестовую пустую прошивку. Опа - работает! Стабильно вышел на связь по WiFi и держит. Уже хорошо. Разбираюсь дальше.

Сделал откат прошивки на самую старую полнофункциональную версию, которую взял со своего гитхаба. Надо же, работает и эта прошивка! Что ж, дело ясное - где-то напортачил в коде, а проблема вылезла только когда подключил внешние модули, так как состояние пинов поменялось.

Долго потом ещё пытался обнаружить проблему в коде, потому что делать это приходилось вслепую - во время бутлупа нет никакого отладочного вывода. Поэтому только пробовать всё подряд, перепрошивать по кабелю и проверять.

Однако в какой-то момент я обнаружил замечательную возможность ESPHome - перепрошить по воздуху оказалось всё же можно. Функционал этого фреймворка оказался очень хорошо продуман и защищён "от дурака". После остановки циклической перезагрузки оказывается происходило не зависание микроконтроллера, а только лишь остановка работы пользовательского конфига. То есть работа всего, что наворотил безграмотный кодер, типа меня, останавливалась, а ядро продолжало работать, успешно установив связь по WiFi и давая возможность перепрошиться. Отказоустойчивость ESPHome на высоте.

В итоге нашёл проблемное место, это была ошибка в коде C++, вставленном в yaml-конфигурацию - удаление символов из строки, длина которой при определённых условиях могла быть изначально нулевой. Так как я ни разу не программист и кодингом занимаюсь от случая к случаю по мере необходимости, то такой недосмотр не удивителен. А почему сработало в первый раз - потому что в энергонезависимой памяти ещё не была записана определённая комбинация нескольких параметров, которая при следующем включении питания приводила к запуску кода удаления символов из несуществующей строки.

В общем, вечер удался, поразвлёкся на славу. Тут без сарказма, так как дебажить я люблю, особенно когда получается. А получается всегда, так как не бросаю, пока не получится, ну почти ))

Электромагнитная совместимость

По поводу электромагнитного импульса от контактора. Решив проблему бутлупа, я обнаружил вторую проблему - перезагрузка микроконтроллера при срабатывании контактора насоса. С этой проблемой я уже знаком, сталкивался с ней в электрощитке бытовки, правда там этот импульс приводил к зависанию изернет-шилда Ардуино. Здесь же - перезагрузка ESP32.

Интересный факт - к перезагрузке приводят только контакторы Legrand. В щитке бытовки их у меня установлено четыре, а в этом щитке такой всего один, а остальные - IEK. Так вот ни один из иэков к перезагрузке не приводит, даже если их все одновременно щёлкнуть. А по параметрам они похожи - оба с рычагом ручного управления, оба с двумя группами контактов (НЗ и НР), сопротивление обмотки +- одинаковое (3.2 кОм у легранда и 4 кОм у иэка), только IEK на 20А, а Legrand на 25А.

Способ борьбы с электромагнитной помехой контактора я уже нашёл и испытал - это помехоподавляющий конденсатор X-типа, включенный параллельно обмотке контактора. В щитке бытовки они исправно работают уже 7 лет (с 2017 года), ни одного зависания изернет-шилда Ардуино с тех пор не было:

-9

В этом щитке делаю точно так же:

-10

И проблема, ожидаемо, полностью устраняется. Больше этот контактор не оказывает негативного влияния на микроконтроллер, всё работает устойчиво.

Завершение сборки и маркировка

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

-11

Отверстий под эти лампочки в щитке не было, засверливал ступенчатым сверлом. Металл щитка оказался на удивление толстым (что и видно по рёбрам щитка), хотя и мягким.

На пластрон наклеил надписи, подписал лампочки на крыше щитка и прилепил на внутреннюю сторону дверки файлик со схемой и краткой инструкцией по использованию. Щиток готов:

-12
-13
-14

Закончив сборку, я продолжил писать прошивку для микроконтроллера, так как теперь появились внешние модули и обратная связь от них. Всё это нужно протестировать в различных режимах и отладить взаимодействие ESPHome с Home Assistant.

Затраты

(2023/2024, Спб)

Электрощит:

  • Электрощит TITAN 5 ЩРн-24 460х310х140 IP54, IEK - 5373 ₽ (iek.spb.ru)
  • Розетка РАр10-3-ОП на DIN-рейку MRD10-16, IEK - 285 ₽ (iek.spb.ru)
  • Выключатель нагрузки ВН-32 1Р 20А MNV10-1-020, IEK - 188х3 ₽ (iek.spb.ru)
  • Выключатель нагрузки ВН-32 2Р 125А MNV10-2-125, IEK - 202 ₽ (iek.spb.ru)
  • Контактор модульный с ручным управлением КМ20-11МР AC KARAT MKK12-20-11, IEK - 1732х3 ₽ (iek.spb.ru)
  • Выключатель-разъединитель трехпозиционный ВРТ-63 1P 16А MPR10-1-016, IEK - 688 ₽ (iek.spb.ru)
  • Контактор 412500 CX3 230V 1НО+1НЗ 25А, Legrand - 3718 ₽ (Amperkin)
  • Блок питания HDR-30-12 12В 2А 24Вт, MEAN WELL - 1340 ₽ (Чип и Дип)
  • Лампа AD22DS (LED) d=22мм красный 230В, ЭРА - 101 ₽ (Все Инструменты)
  • Лампа AD22DS (LED) d=22мм жёлтый 230В, ЭРА - 114 ₽ (Все Инструменты)
  • Лампа AD22DS (LED) d=22мм зелёный 230В, ЭРА - 80 ₽ (Все Инструменты)
  • Провод, наконечники - были в наличии

ИТОГО: 17661 ₽

Контроллер:

  • Отладочная плата ESP32-DevKitC_V4 - 342 ₽ (AliExpress)
  • Кабель антенный 2м - 222 ₽ (AliExpress)
  • DC/DC преобразователь SCWN06A-03 9-18В/3.3В 1.2А, MEAN WELL - 970 ₽ (Чип и Дип)
  • Светодиод зеленый L-7113GD 60° d=5мм 20мКд 568нМ, Kingbright - 19х4 ₽ (Чип и Дип)
  • Светодиод желтый L-7113YD 60° d=5мм 20мКд 588нМ, Kingbright - 20х3 ₽ (Чип и Дип)
  • Светодиод красный L-7113ID 60° d=5мм 25мКд 625нМ, Kingbright - 27 ₽ (Чип и Дип)
  • Держатель светодиода MLH-5 5мм металлический, Daier Electron - 36х8 (Чип и Дип)
  • Гнездо на плату PBS-20 2.54мм 1х20pin прямое, Connfly electronic - 2х18 (Чип и Дип)
  • Кнопка 12мм 125В/0,125А IP67 PSW-7-R (красная) - 650 (Чип и Дип)
  • Кнопка 12мм 125В/0,125А IP67 PSW-7-Bl (синяя) - 650 (Чип и Дип)
  • Лак акриловый изоляционный для печатных плат PLASTIK 71 22 мл, Solins - 150 (Чип и Дип)
  • Резистор углеродистый CF-25 0.25 Вт 5% - 5х20 ₽ (Чип и Дип)
  • Стеклотекстолит 2-сторонний 200x200x1.5 мм 35/35 (35 мкм), Rexant - 999 ₽ (Ценам.нет)
  • Хлорное железо безводное 250 г, Rexant - 285 ₽ (REXANT)
  • Корпус, клеммные колодки - были в наличии

ИТОГО: 5280 ₽

Общий итог 23 000 ₽