Зависание SPI-дисплея на ESP32 при управлении инвертором
Добавлено: Вт окт 01, 2024 17:48:39
Приветствую, коты. Я новенький. И вы моя последняя надежда =)
Делаю т.н. "гибридный инвертор" своими руками. Столкнулся с проблемой зависания SPI дисплея.
Опишу в словах, что есть.
Вход 220 В подключен к AC\DC 220-28 через реле №2.
Выход 28 В этого AC\DC подключен к китайскому инвертору 28-220. Вот такому: https://www.aliexpress.com/item/1005007170105678.html
Этот же выход 28 В подключен к DC-DC преобразователю в 5В, который питает ESP32 (хотя это и не важно).
Фаза входа 220 В подключена к контакту реле №1, который по умолчанию сомкнут.
На второй контакт этого реле №1 подключено ВВ-плечо трансформатора от инвертора. Через индуктивность конечно же.
Общий контакт реле №1 - является выходом 220 В на нагрузку.
Соответственно земля входа 220 В и второй вывод 220 В - соединены.
Таким образом я реализовываю "bypass", т.е. когда реле №1 неактивно, выход 220 В подключен ко входу 220 В напрямую.
Когда реле №1 активно - выход 220 В переключается на ВВ-выход трансформатора инвертора.
Реле №1 и реле №2 - китайские модули с опторазвязкой, подключены к ESP32 GPIO out.
Китайский инвертор имеет разъем для кнопки включения. Этот разъем через оптопару так же подключен к ESP32 GPIO out.
Еще к ESP32 подключен TFT SPI дисплей.
Проблема в том, что когда инвертор управляется через оптопару-ESP32, и реле №1 переключается - SPI-дисплей иногда подвисает.
Подвисает именно дисплей, потому что ESP32 продолжает работать, а дисплей заводится после переинициализации.
Подвисает не при включении\выключении инвертора, а именно при переключении реле №1.
Когда разъем включения инвертора не подключен к оптопаре-ESP32, а например закорочен пинцетом - зависания не происходит.
Зависания не происходит так же, если разомкнуто низковольтовое плечо трансформатора.
И зависания не происходит, если реле №1 сначала переключается на инвертор, а затем инвертор включается. Но этот костыль не очень подходит, потому что тогда при переключении источника, дом будет примерно одну секунду без электричества.
Питание ESP32 роли не играет - питал от внешнего источника.
Повесил феррит на шину от реле №1 до ESP32 - все равно зависает.
Повесил индуктивность на шину от инвертора к оптопаре - все равно зависает.
Разнес плату ESP32 и дисплея на 15 см от силовых цепей - все равно зависает.
Поскручивал шины в косички - тоже зависает.
Зависает так же при работе от аккумуляторов, т.е. AC\DC ни при чем.
Поставил RC-фильтр на высоковольтную цепь трансформатора от инвертора - все равно зависает.
Экранировка ESP32\SPI-дисплея не помогает.
В общем условия для зависания это включенный инвертор + подключение его разъема к ESP32 + активный трансформатор + щелчок реле. При отсутствии хотя бы одного из условий, зависания нет.
Осциллографа профессионального нет, есть только самодельный до 100кГц и лимитом до 3.3В, собранный на такой же ESP32.
И к сожалению, ни дисплей, ни SPI шина не имеют (во всяком случае бескостыльных) методов контроля целостности, или определения наличия дисплея - данные шлются просто "втуда".
Варианта как по мне два.
Либо каким-то боком обратная ЭДС самоиндукции от реле проходит в цепи. Хотя на контакты реле я тоже поставил RC-фильтр.
Либо в момент переключения реле формируется ЭМИ такой мощности, что все провода становятся антеннами или вторичными обмотками и сами создают ЭДС в низковольтной цепи. Что тоже странно, потому что нагрузки на выходе 220В у меня нет никакой, соответственно ток через контакты реле нулевой.
Да и напрягает момент, что при декоммутации разъема инвертора от оптопары, зависания прекращаются, а оптопара по идее устраняет гальваническую связь.
Есть идеи, как можно победить зависание SPI-дисплея?
Приложил картинку, на которой в общих чертах обрисовал схему подключения зависающей части. Требуху не рисовал, поскольку без нее зависает тоже. Заранее извините за кривизну, возможности рисования ограничены.
Знания по радиоэлектронике у меня средние, поэтому диалог можно вести употребляя радио-матюки.
Заранее огромное благодарю.
Делаю т.н. "гибридный инвертор" своими руками. Столкнулся с проблемой зависания SPI дисплея.
Опишу в словах, что есть.
Вход 220 В подключен к AC\DC 220-28 через реле №2.
Выход 28 В этого AC\DC подключен к китайскому инвертору 28-220. Вот такому: https://www.aliexpress.com/item/1005007170105678.html
Этот же выход 28 В подключен к DC-DC преобразователю в 5В, который питает ESP32 (хотя это и не важно).
Фаза входа 220 В подключена к контакту реле №1, который по умолчанию сомкнут.
На второй контакт этого реле №1 подключено ВВ-плечо трансформатора от инвертора. Через индуктивность конечно же.
Общий контакт реле №1 - является выходом 220 В на нагрузку.
Соответственно земля входа 220 В и второй вывод 220 В - соединены.
Таким образом я реализовываю "bypass", т.е. когда реле №1 неактивно, выход 220 В подключен ко входу 220 В напрямую.
Когда реле №1 активно - выход 220 В переключается на ВВ-выход трансформатора инвертора.
Реле №1 и реле №2 - китайские модули с опторазвязкой, подключены к ESP32 GPIO out.
Китайский инвертор имеет разъем для кнопки включения. Этот разъем через оптопару так же подключен к ESP32 GPIO out.
Еще к ESP32 подключен TFT SPI дисплей.
Проблема в том, что когда инвертор управляется через оптопару-ESP32, и реле №1 переключается - SPI-дисплей иногда подвисает.
Подвисает именно дисплей, потому что ESP32 продолжает работать, а дисплей заводится после переинициализации.
Подвисает не при включении\выключении инвертора, а именно при переключении реле №1.
Когда разъем включения инвертора не подключен к оптопаре-ESP32, а например закорочен пинцетом - зависания не происходит.
Зависания не происходит так же, если разомкнуто низковольтовое плечо трансформатора.
И зависания не происходит, если реле №1 сначала переключается на инвертор, а затем инвертор включается. Но этот костыль не очень подходит, потому что тогда при переключении источника, дом будет примерно одну секунду без электричества.
Питание ESP32 роли не играет - питал от внешнего источника.
Повесил феррит на шину от реле №1 до ESP32 - все равно зависает.
Повесил индуктивность на шину от инвертора к оптопаре - все равно зависает.
Разнес плату ESP32 и дисплея на 15 см от силовых цепей - все равно зависает.
Поскручивал шины в косички - тоже зависает.
Зависает так же при работе от аккумуляторов, т.е. AC\DC ни при чем.
Поставил RC-фильтр на высоковольтную цепь трансформатора от инвертора - все равно зависает.
Экранировка ESP32\SPI-дисплея не помогает.
В общем условия для зависания это включенный инвертор + подключение его разъема к ESP32 + активный трансформатор + щелчок реле. При отсутствии хотя бы одного из условий, зависания нет.
Осциллографа профессионального нет, есть только самодельный до 100кГц и лимитом до 3.3В, собранный на такой же ESP32.
И к сожалению, ни дисплей, ни SPI шина не имеют (во всяком случае бескостыльных) методов контроля целостности, или определения наличия дисплея - данные шлются просто "втуда".
Варианта как по мне два.
Либо каким-то боком обратная ЭДС самоиндукции от реле проходит в цепи. Хотя на контакты реле я тоже поставил RC-фильтр.
Либо в момент переключения реле формируется ЭМИ такой мощности, что все провода становятся антеннами или вторичными обмотками и сами создают ЭДС в низковольтной цепи. Что тоже странно, потому что нагрузки на выходе 220В у меня нет никакой, соответственно ток через контакты реле нулевой.
Да и напрягает момент, что при декоммутации разъема инвертора от оптопары, зависания прекращаются, а оптопара по идее устраняет гальваническую связь.
Есть идеи, как можно победить зависание SPI-дисплея?
Приложил картинку, на которой в общих чертах обрисовал схему подключения зависающей части. Требуху не рисовал, поскольку без нее зависает тоже. Заранее извините за кривизну, возможности рисования ограничены.
Знания по радиоэлектронике у меня средние, поэтому диалог можно вести употребляя радио-матюки.
Заранее огромное благодарю.