Как реализовать мягкий выключатель питания, управляемый микроконтроллером?

16

Я хочу спроектировать схему так, чтобы микроконтроллер мог переключать вывод GPIO и выключать всю систему (включая сам микроконтроллер). И когда пользователь нажимает кратковременную кнопку, снова включается питание.

Это возможно?

cksa361
источник

Ответы:

11

альтернативный текст

В этом примере используется Maxim MAX1835 повышающий регулятор , но его можно применять и к другим, имеющим вывод отключения.

Схема обычно выключена. Когда пользователь нажимает кнопку, батарея подается на вывод -SHDN, обеспечивая включение регулятора и включение 3,3 В на микроконтроллер. Затем микроконтроллер помещает логику 1 на вывод POWER ON, удерживая питание после того, как пользователь отпускает кнопку. Когда микроконтроллер хочет отключиться, он устанавливает вывод POWER ON на 0.

tcrosley
источник
2
Я думаю, очень важно разобраться с этим переключателем.
Кортук
2
@ Кортук, хорошая мысль. Я предполагал, что микро включится достаточно быстро, чтобы он мог переопределить переключатель до первого отскока, предполагая, что поднятие булавки было первым, что сделал микро. Если это не так, можно добавить конденсатор на проводе -SHDN, чтобы создать постоянную времени для включения (хотя это также приведет к небольшой задержке при выключении). 10 нФ, вероятно, нужно оставить для подавления шума (это было включено в примерную схему таблицы данных). Или можно добавить дополнительную RC-цепь только для коммутатора.
tcrosley
Я видел какой-то сумасшедший отскок на переключателях раньше.
Кортук
Еще одна проблема, связанная с отскоком переключателя, - это поведение процессора при отключении питания. В частности, может быть полезно убедиться, что процессор может включать питание только тогда, когда его VDD находится выше точки, где гарантируется правильная работа. Мне пришлось настроить некоторые схемы автоматического отключения питания, которые иногда выходили из строя из-за того, что процессор запускал случайный код, когда VDD падал ниже допустимого рабочего напряжения. Случайный код может установить высокий выходной сигнал при включении питания, что, в свою очередь, приведет к резервному питанию устройства и выполнению кода по случайному адресу.
суперкат
1

Один из способов сделать это - войти в режим глубокого сна на микроконтроллере.

Многие микроконтроллеры поддерживают пробуждение от внешнего прерывания, такого как ребро на выводе ввода-вывода.

Тоби джеффи
источник
тогда я бы также получил ток покоя питания регулятора на микро, верно?
cksa361
Да. Ты бы.
Тоби Джаффей
@ cksa361, некоторые микро - это нано или микроамперы. Я использую MSP430, и мы держим его около 3-5 микроампер.
Кортук
0

Да, это, безусловно, возможно, но то, как вы этого достигнете, зависит от того, какую нагрузку вы собираетесь включать и выключать.

Это, вероятно, так же просто, как просто использовать реле, подключенное к выходному ПИН микроконтроллера (через транзистор и защитный диод), и кнопочный переключатель, подключенный к пину, настроенному в качестве входа.

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

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

ОБНОВЛЕНИЕ Я только что видел ваше изменение о выключении микроконтроллера. Можете ли вы дать больше информации о том, что вы на самом деле пытаетесь сделать? Трудно ответить на ваш вопрос без понимания всей системы.

Если вы также хотите выключить микроконтроллер, вам понадобится способ вернуть питание микроконтроллеру. Возможно, вы могли бы использовать реле для питания всего, включая микроконтроллер, чтобы микроконтроллер мог выключиться сам, но не снова. Затем ваша кнопка может быть подключена к вашему реле, чтобы эффективно закорачивать его, давая достаточно времени для включения и удержания реле открытым.

BG100
источник