• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Управление собственным блоком питания (или аппаратный watchdog)

pazyzy

New member
Подскажите пожалуйста, каким образом можно выключить собственный блок питания. По сути отрубить сук на котором сидишь.

Есть ESP8266. Есть блок питания (например на XL4005). Схема его работы проста: есть нога Enable, когда на ней напряжение - он работает и питает esp8266 и остальные компоненты системы.
Нужно обесточить все компоненты системы на несколько секунд по команде с esp.

Т.е. при подаче питания на блок питания, нога EN на xl4005 должна быть подтянута к "+" (входное напряжение). Когда esp прикажет - нужно эту ногу на несколько секунд притянуть к земле (чтобы все конденсаторы разрядились), после чего опять к "+".

Собственно все. Дальше идут подробности для чего это все нужно.
Есть схема с компонентами. На входе стоит ATTiny13A, который управляет транзистором IRL2203N, который в свою очередь включает и выключает всю схему со всеми компонентами. Сейчас esp общается с ATTiny и говорит "а перезагрузи-ка всех нас". ATTiny выключает транзистор и потом включает.
Но несмотря на 470uF конденсатор, который стоит не далеко от ATTiny, он все равно иногда подвисает и на команды не реагирует. В чем причина - не знаю. Поэтому хочу иметь экстренный вариант, чтобы можно быть обесточить полностью все.

В даташите (http://www.xlsemi.com/datasheet/xl4005 datasheet.pdf) написано, что "EN Pin Input Leakage Current" 1-15uA, полагаю что это сколько потребляет нога EN.

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

В общем, буду благодарен за любые мысли по этому поводу.
Спасибо.
 

nikolz

Well-known member
Подскажите пожалуйста, каким образом можно выключить собственный блок питания. По сути отрубить сук на котором сидишь.

Есть ESP8266. Есть блок питания (например на XL4005). Схема его работы проста: есть нога Enable, когда на ней напряжение - он работает и питает esp8266 и остальные компоненты системы.
Нужно обесточить все компоненты системы на несколько секунд по команде с esp.

Т.е. при подаче питания на блок питания, нога EN на xl4005 должна быть подтянута к "+" (входное напряжение). Когда esp прикажет - нужно эту ногу на несколько секунд притянуть к земле (чтобы все конденсаторы разрядились), после чего опять к "+".

Собственно все. Дальше идут подробности для чего это все нужно.
Есть схема с компонентами. На входе стоит ATTiny13A, который управляет транзистором IRL2203N, который в свою очередь включает и выключает всю схему со всеми компонентами. Сейчас esp общается с ATTiny и говорит "а перезагрузи-ка всех нас". ATTiny выключает транзистор и потом включает.
Но несмотря на 470uF конденсатор, который стоит не далеко от ATTiny, он все равно иногда подвисает и на команды не реагирует. В чем причина - не знаю. Поэтому хочу иметь экстренный вариант, чтобы можно быть обесточить полностью все.

В даташите (http://www.xlsemi.com/datasheet/xl4005 datasheet.pdf) написано, что "EN Pin Input Leakage Current" 1-15uA, полагаю что это сколько потребляет нога EN.

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

В общем, буду благодарен за любые мысли по этому поводу.
Спасибо.
Есть много вариантов и все зависит от нюансов.
Например можно поставить таймер TPL5110,
который будет перезапускать все если оно это все висит.
-------------------------
Кроме того, нет надобности отрубать питание у ESP. Перезапустить ESP можно импульсом на RST или импульсом на EN. И выключать ESP можно подав ноль на EN а плюсом на EN включать.
при этом ток потребления по EN малый и управлять можно прямо с Attiny без доп ключей.
--------------
вход EN xl4005 тоже не требует доп ключей. Поэтому Attiny может без транзисторов управлять xl4005 и ESP.
 

pazyzy

New member
У схемы есть такое понятие - спящий режим для экономии батареи. Сейчас он реализован по принципу: ESP говорит AtTiny "все готово, пора спать" - ATTiny выключает все на несколько минут.

Схема грубо выглядит так:
1. Блок питания на XL4005
1а ->[пока никакой обратной связи] ->
2. Блок ATTiny13A с транзистором
2а <- [связь где ESP говорит либо все ок, работаем (возможно до 5-6 часов подряд), либо когда перезагрузить (некоторые компоненты не отвечают - критический случай), а когда спать (все сделано, задачи выполнены)] ->
3. ESP и остальные компоненты системы.

ATTiny как выяснилось может подвиснуть и ничего не сделать.
Схема с таймером мне нравится. Но тупо перезагружать все раз в 2 часа это часто. А еще не хочется выключать все в момент записи данных на карточку.
Т.е. желательно чтобы была какая-то обратная связь: контроллер пингует watchdog (раз в несколько минут) - wtd ничего не делает. Как только пинг прекращается или пинг кривой (грубо - если хороший пинг это "+" в течении 100мс, то при превышении 200мс) - значит что-то не то и нужно все выключить. Но если пинг регулярный - то ничего делать не надо.

Сейчас так работает на ATTiny, но почему-то не надежно. Поэтому хочется аппаратное похожее решение. TPL5110 с обратной связью, что-ли. Не знаю, есть ли такое.
 

nikolz

Well-known member
У схемы есть такое понятие - спящий режим для экономии батареи. Сейчас он реализован по принципу: ESP говорит AtTiny "все готово, пора спать" - ATTiny выключает все на несколько минут.

Схема грубо выглядит так:
1. Блок питания на XL4005
1а ->[пока никакой обратной связи] ->
2. Блок ATTiny13A с транзистором
2а <- [связь где ESP говорит либо все ок, работаем (возможно до 5-6 часов подряд), либо когда перезагрузить (некоторые компоненты не отвечают - критический случай), а когда спать (все сделано, задачи выполнены)] ->
3. ESP и остальные компоненты системы.

ATTiny как выяснилось может подвиснуть и ничего не сделать.
Схема с таймером мне нравится. Но тупо перезагружать все раз в 2 часа это часто. А еще не хочется выключать все в момент записи данных на карточку.
Т.е. желательно чтобы была какая-то обратная связь: контроллер пингует watchdog (раз в несколько минут) - wtd ничего не делает. Как только пинг прекращается или пинг кривой (грубо - если хороший пинг это "+" в течении 100мс, то при превышении 200мс) - значит что-то не то и нужно все выключить. Но если пинг регулярный - то ничего делать не надо.

Сейчас так работает на ATTiny, но почему-то не надежно. Поэтому хочется аппаратное похожее решение. TPL5110 с обратной связью, что-ли. Не знаю, есть ли такое.
--------------------------
1) Если Attiny кроме включения ESP больше ничего не делает , то его можно выкинуть вместе с транзистором
а экономию батареи делать через deep-sleep ESP. В режиме deep-sleep ESP потребляет не более 20 мка.
кроме того, в этом режиме сохраняются настройки WIFI что ускоряет соединение.
При отключении и включении питания часть параметров WIFI теряется и соединение начинается заново.
-------------------------
2) Зачем XL4005? ESP может работать при напряжении питания от 2.6 в до 3.6.
-----------------------
3) TPL5110 это таймер который может работать как сторожевой на интервале до 2 часов.
  • Диапазон напряжения питания: от 1.8 до 5.5 В;
  • Сверхнизкий ток собственного потребления: 35 нА;
  • Программируемый временной интервал: 100 мс to 7200 с;
  • Точность установки временного интервала: 1%;
  • Встроенный драйвер управления внешним MOSFET;
  • Режим одновибратора;
  • Малый корпус: SOT23-6 (3х3 мм);
  • Возможность принудительного включения MOSFET;
  • Рабочий диапазон температур: от -40 до 105°С.

Если ESP просыпается в этом интервале то перезапускает TPL и он ничего не делает.
Если ESP не проснулось, то таймер выдаст импульс и перезапустит ESP.
 

pazyzy

New member
1. ATTiny в данном случае контролирует что ESP не висит, получает сигналы, перезагружает если что-то произошло, уводит всю схему в спячку.
В схеме есть прожорливый компонент - 3G модем (до 2А), который нужно выключать. И еще несколько элементов, у которых нет спящего режима.
Я не верю в бесперебойную работу ESP, т.к. несколько раз наблюдал как его модем при передаче данных по TX/RX убивал и он больше не отвечал. Видел всего 2 раза за пол года, но после этого не верю :) Ну и молния, ЭМИ, или еще что-нибудь и ему опять плохо становится. Поэтому и задумал контроль.

2. XL4005 для преобразования 12В в 5В.
Устройство сидит в машине, питается от аккумулятора, собирает данные, передает по мобильной сети. Включено всегда. Нужно не высадить аккумулятор.

3. Спасибо за информацию про TPL5110. Я нашел даташит, но не понял что значит "перезапускает TPL"? Как я понял, он начинает отсчитывать время с момента подачи на него питания.

В даташите написано
"Once configured in timer mode (EN/ONE_SHOT= HIGH) the TPL5110 periodically sends out a DRV signal to a MOSFET to turn on the µC. If the µC replies with a DONE signal within the programmed time interval (tDRV) the TPL5110 turns off the µC, otherwise the TPL5110 keeps the µC in the on state for a time equal to tDRV."

Т.е. он будет держать схему включенной до получения сигнала DONE или до истечения tDRV. Если получит DONE раньше - то выключит все раньше.
Если все так - то настроив TPL5110 на цикл работы раз в 2 часа я могу через 1 час 50 минут завершить все процессы на ESP и дернуть ногу DONE, после чего все перезагрузится и отсчет пойдет сначала. Если не дерну по какой-то причине он сам все перезапустит. Верно?

Огромное спасибо за консультацию!
 

nikolz

Well-known member
1. ATTiny в данном случае контролирует что ESP не висит, получает сигналы, перезагружает если что-то произошло, уводит всю схему в спячку.
В схеме есть прожорливый компонент - 3G модем (до 2А), который нужно выключать. И еще несколько элементов, у которых нет спящего режима.
Я не верю в бесперебойную работу ESP, т.к. несколько раз наблюдал как его модем при передаче данных по TX/RX убивал и он больше не отвечал. Видел всего 2 раза за пол года, но после этого не верю :) Ну и молния, ЭМИ, или еще что-нибудь и ему опять плохо становится. Поэтому и задумал контроль.

2. XL4005 для преобразования 12В в 5В.
Устройство сидит в машине, питается от аккумулятора, собирает данные, передает по мобильной сети. Включено всегда. Нужно не высадить аккумулятор.

3. Спасибо за информацию про TPL5110. Я нашел даташит, но не понял что значит "перезапускает TPL"? Как я понял, он начинает отсчитывать время с момента подачи на него питания.

В даташите написано
"Once configured in timer mode (EN/ONE_SHOT= HIGH) the TPL5110 periodically sends out a DRV signal to a MOSFET to turn on the µC. If the µC replies with a DONE signal within the programmed time interval (tDRV) the TPL5110 turns off the µC, otherwise the TPL5110 keeps the µC in the on state for a time equal to tDRV."

Т.е. он будет держать схему включенной до получения сигнала DONE или до истечения tDRV. Если получит DONE раньше - то выключит все раньше.
Если все так - то настроив TPL5110 на цикл работы раз в 2 часа я могу через 1 час 50 минут завершить все процессы на ESP и дернуть ногу DONE, после чего все перезагрузится и отсчет пойдет сначала. Если не дерну по какой-то причине он сам все перезапустит. Верно?

Огромное спасибо за консультацию!
Все верно.
В режиме deep-sleep работает таймер внутри ESP и он выдает сигнал по истечению времени.
При этом CPU и WIFI выключены. Полагаю что в этом случае все работает надежно. Так как таймер аппаратный а не программный.
Внешний таймер на TPL5110 потребляет конечно меньше, но так как у Вас аккумулятор машины то нет разности 1 мка или 20 мка будет потреблять.
Транзистор можно подключить к ESP а Attiny явно лишняя да еще и глючит.
Управлять модемом 3G от ESP еще лучше так как Вы можете включать модем лишь когда надо и еще больше экономить.
Какой Вас модем 3G.
----------------------------------
Я бы поставил ESP , модем 3G , понижающий преобразователь, ключ для питания 3G если нет управляющего пина и рассмотрел вариант с установкой суперкондера для питания в режиме работы передатчиков 3G и ESP.
 

pazyzy

New member
ESP тоже был замечен в ненадежности, поэтому изначально я и решил найти что-то более "простое и надежное".
Модем 5320, но он разведен на плате, на которой нет управляющего пина. Можно программно его увести в спячку, но для пробуждения нужна свободная нога на ESP для управления пином sleep платы, а вот свободных ног в обрез.
Модем должен быть всегда включен, т.к. он еще и GPS передает. Т.е. модем работать должен тогда, когда работает ESP.
В моем варианте, чтобы меньше переписывать код и переделывать схему, наверное проще будет два решения:
1. разобраться как работает TPL5110 и заменить им ATTiny.
2. добавить его для управления пином reset ATTiny13, и ATTiny будет обеспечивать обратную связь. Только что-то во втором случае уже слишком. Watchdog для watchdoga :)

Спасибо за советы! Буду разбираться.
 

pazyzy

New member
Наткнулся еще на tpl5010. Она, мне кажется в качестве watchdog лучше подходит.
Ее можно "пинговать" периодически на ногу DONE, и тогда она не будет ничего делать с RST, а если не пингануть - то она RST перезагрузит.
В моем случае можно добавить к ATTiny RST и перезагружать, если пинга не пришло за определенное время. Минимальные изменения на схеме, 3 элемента добавляются. Немного меняется программа attiny. Больше ничего.
 
Сверху Снизу