Como mudar a potência do microcontrolador por botão?

13

Eu tenho um dispositivo de microcontrolador com energia da bateria. Atualmente, alterno a energia com o simples botão liga / desliga. Desejo alternar a energia de um botão com uma modificação mínima do esquema (provavelmente programa do microcontrolador) e sem consumo quando o dispositivo está desligado. Como eu posso fazer isso?

ADICIONADO . Eu sei o seguinte truque:

insira a descrição da imagem aqui

Aqui, no início, o microcontrolador define o PB3 como alto e, assim, mantém a energia do dispositivo. Mas essa não é uma solução para o meu problema, porque também preciso desligar o dispositivo pressionando S1.

ADICIONADO . Posso excluir o VT2 do circuito (ou seja, diretamente a base da unidade do microcontrolador do VT1)?


fonte
Os botões de pressão seriam uma solução aceitável?
precisa saber é o seguinte
@AndrejaKo: No.
Boa sorte então! Uma maneira que vejo seria carregar um capacitor enquanto o botão estiver pressionado e tentar ativar algo com ele, como um MOSFET, mas isso dependeria do tempo que o botão fosse pressionado.
precisa saber é o seguinte
@tcrosley Não é uma duplicata, a pergunta que você faz não exige que a energia seja alternada quando o botão é pressionado, apenas requer que ele acenda permitindo que o microcontrolador se desligue.
Bruno Ferreira
@BrunoFerreira ok, concordo - eu apaguei meu comentário anterior. Eu adicionei a linha ao micro nesta resposta, mas não incluí o zener como você fez na sua resposta, o que é uma boa adição.
Tcrosley 03/07/2012

Respostas:

6

Com base no circuito que você fornece, você pode simplesmente adicionar um diodo em série logo após o comutador (S1) (cátodo conectado ao comutador) e com eles você pode usar uma entrada para detectar se o comutador foi pressionado novamente; caso contrário, desligue PB3.
Modificação necessária

O diodo zener protege a entrada PIC da tensão proveniente da fonte de alimentação.

Bruno Ferreira
fonte
Qual é o papel do diodo?
m.Alin
@ m.Alin O diodo aqui permite que o microcontrolador detecte quando o interruptor é liberado. Se não tivéssemos o diodo, quando o VT1 começar a conduzir, sempre teríamos um nível alto na entrada do microcontrolador.
Bruno Ferreira
8

Como você realmente precisa estar? Muitos microcontroladores modernos têm corrente de sono bem abaixo da corrente de autodescarga de baterias pequenas. Você pode fazer com que o botão simplesmente mova o pino de E / S do micro, que alterna entre os modos de suspensão e ativo a cada pressionamento de botão. Serão necessárias algumas devoluções, mas tudo isso também é possível no firmware.

Atualmente, esse tipo de método liga / desliga está se tornando bastante comum. Quando leva apenas um µA, um microcontrolador não precisa estar realmente desligado, apenas dormindo, o que pode ser feito sob seu próprio controle. A linha do botão deve estar conectada a algo que possa fazer com que o micro acorde do sono, mas quase todos os micro têm pelo menos um deles, geralmente vários.

Olin Lathrop
fonte
1
Concordo, muitos dos meus projetos hoje em dia nem sequer têm um botão liga / desliga, eles apenas acordam com o pressionar de um botão.
Oli Glaser
O dispositivo Me também contém LCD e outros periféricos. Portanto, também devo desligá-lo.
4
@ usuário: Isso não significa que você precisa desligar o micro, apenas a outra lógica. Com o micro pensando e desligando, o micro pode controlar a energia dos outros dispositivos para que eles desliguem quando o micro estiver dormindo. Isso significa que você tem uma saída digital deliberada que pode ser qualquer polaridade conveniente para ligar e desligar as coisas, e você não precisa implementar alternância no hardware analógico.
Olin Lathrop
Embora muitos microcontroladores possuam correntes de sono muito baixas, os reguladores de qualidade custam mais do que os exigentes. Um regulador que usa 250uA extra (ou mesmo 2,5mA) pode funcionar bem se precisar estar ativo apenas quando um dispositivo estiver em uso, mas seria totalmente inaceitável se tivesse que estar ativo mesmo quando o dispositivo estivesse "desligado" . Um produto que projetei alguns anos atrás nem sequer usava um regulador - em vez disso, usava três transistores e cerca de sete resistores para fornecer uma fonte nominal de 5 volts com desligamento controlado pelo processador. Pelos padrões "regulador" sua precisão da tensão foi realmente crummy ...
supercat
1
@OlinLathrop: dois 2N3094 e um 2N3906 custam menos de US $ 0,07. Mesmo que se calcule que dez componentes custam um centavo cada para montagem, isso ainda economiza um centavo por unidade - se 100.000 unidades forem fabricadas, isso significa US $ 10.000. Se um produto não tiver esse tipo de volume, pode não valer a pena tentar extrair esses US $ 0,10; se os reguladores de hoje estivessem disponíveis quando eu projetei a coisa, e se eu não soubesse de antemão quão bem ela seria vendida, provavelmente teria simplesmente usado um regulador com controle de espera, mas meu circuito funciona e é mais barato do que qualquer outra coisa; não há razão para não continuar usando.
Supercat 03/07
3

EDIT - na reflexão, o circuito abaixo (que deixarei para referência) provavelmente é o mais adequado para uso em circuitos sem micro. Conforme mencionado nas outras respostas, a menos que você realmente não possa pagar os poucos uA, não faz sentido não usar o micro para controlar a alternância de potência, pois usa menos componentes e pode ser controlado com precisão.
A versão mais simples pode ser algo como uma entrada IOC (interrupção na alteração) com pull up, com o botão para aterrar. O micro tem energia aplicada o tempo todo e controla um MOSFET de canal P (com pullup do gate para a fonte) para o resto do circuito. Quando dorme, deixa o portão flutuar para desligar o circuito.

Circuito de referência:

Interruptor

Inicialmente, o P-MOSFET está desligado, portanto não há corrente de base no Q2, o que também está desligado. Q1 está desligado, então Q1c está em 5V. O circuito é estático.

Quando S1 (ignora os nós + e -, eles estão lá para fins de disparo do SPICE) é pressionado, o 5V em Q1c é conectado à base Q2, ligando-o. Isso puxa a porta do P-MOSFET para o chão, ativando-a também.
O R4 agora vê 5V e, quando S1 é liberado, fornece à Q2s a corrente necessária para mantê-la aberta (e, portanto, o MOSFET também) Q1 também é ativado quando a corrente através do R2 carrega C1 a ~ 600mV, nesse ponto Q1c é <200mV (isto é, Q1 está ativado)
O circuito agora está estático novamente.

Quando S1 é pressionado novamente, Q1 afunda a corrente de R4 (que mantém o Q2 ligado) desativando o Q2. R1 puxa a base do MOSFET até 5V e a desliga novamente.

Aqui está a simulação (V (push) alta representa quando o botão é pressionado):

ToggleSwitchSim

Também podemos ver após desligar as cabeças de corrente para zero (quando C1 descarrega e Q1 desliga), de modo que o circuito não consome energia no estado desligado (o cursor para I (V1) está em 19,86s e mede 329nA):

ToggleSwitchPower

A idéia original do circuito não é minha, vem de Dave Jones no EEVblog .

Oli Glaser
fonte
1

Como Bruno Ferreira sugeriu, a maneira mais fácil de permitir que o botão atue como um interruptor "desligado" é mudar o circuito, permitindo que o processador saiba quando o botão é pressionado. Acho que é possível usar razoavelmente resistores para proteger a entrada do processador contra tensões acima do VDD sem a necessidade de um Zener para isso.

Aqui está um esboço de um projeto de circuito que você pode usar. A metade direita representa o comportamento do processador e usei uma combinação de transistor, Zener e resistor para substituir um regulador. A saída do processador é representada usando um comutador analógico, seu VDD, em vez de um gate, pois os portões deste simulador sempre geram uma saída de + 5V.

Um aspecto importante do circuito, que pode causar problemas se ignorado, é que ele foi projetado para que o processador não possa ligar o circuito, a menos que seu VDD tenha pelo menos ~ 3,6 volts; Também montei o simulador para que o processador sempre tente ativar sua saída sempre que seu VDD estiver abaixo de 3,5 volts. Eu já vi muitos projetos que assumem que os processadores não tentarão produzir uma lógica alta à medida que a energia acabar. Essa suposição pode funcionar bem com alguns lotes de chips usados ​​em testes, mas depois falha com outros lotes de chips usados ​​na produção em larga escala. O comportamento da maioria dos processadores não é especificado durante condições de subtensão; um bom design deve ser projetado para que o comportamento de um processador nessas condições não seja importante (nota leve: provavelmente é seguro supor que um processador que não é ' t projetado explicitamente para gerar voltagens mais altas do que qualquer voltagem aplicada, não começará magicamente; Não acho que exista uma especificação explícita para isso, mas acho que na maioria dos casos pode ser inferido com segurança).

supercat
fonte