Come cambiare la potenza del microcontrollore tramite pulsante?


13

Ho un dispositivo microcontrollore con alimentazione a batteria. Al momento attivo / disattiva l'alimentazione tramite un semplice interruttore on / off. Voglio attivare la potenza di un pulsante con una modifica minima dello schema (e probabilmente del programma del microcontrollore) e senza consumo quando il dispositivo è spento. Come posso farlo?

AGGIUNTO . Conosco il seguente trucco:

inserisci qui la descrizione dell'immagine

Qui all'inizio il microcontrollore imposta PB3 su alto e quindi mantiene la potenza del dispositivo. Ma questa non è una soluzione al mio problema, perché devo anche spegnere il dispositivo premendo S1.

AGGIUNTO . Posso escludere VT2 dal circuito (ovvero direttamente la base di azionamento del microcontrollore di VT1)?


I pulsanti di blocco sarebbero una soluzione accettabile?
AndrejaKo

@AndrejaKo: No.

Allora buona fortuna! Un modo in cui vedo sarebbe di caricare un condensatore mentre il pulsante è premuto e quindi provare ad attivare qualcosa con esso, come un MOSFET, ma ciò dipende dal tempo in cui il pulsante viene premuto.
AndrejaKo

@tcrosley Non è un duplicato, la domanda che fai non richiede che l'alimentazione venga attivata quando viene premuto il pulsante, richiede solo che si accenda consentendo al microcontrollore di spegnersi.
Bruno Ferreira,

@BrunoFerreira ok, d'accordo - ho cancellato il mio commento precedente. Ho aggiunto la linea al micro in questa risposta ma non ho incluso lo zener come hai fatto nella tua risposta, che è una buona aggiunta.
Tcrosley,

Risposte:


6

In base al circuito fornito, è possibile aggiungere un diodo in serie subito dopo l'interruttore (S1) (catodo collegato all'interruttore) e utilizzare un ingresso per rilevare se l'interruttore è stato premuto di nuovo, in tal caso, spegnere PB3.
Modifica richiesta

Il diodo zener protegge l'ingresso PIC dalla tensione proveniente dall'alimentazione.


Qual è il ruolo del diodo?
m.,

@ m.Alin Il diodo qui consente al microcontrollore di rilevare quando viene rilasciato l'interruttore. Se non avessimo il diodo, quando VT1 inizia a condurre avremmo sempre un livello elevato sull'ingresso del microcontrollore.
Bruno Ferreira,

8

Quanto hai davvero bisogno di essere? Molti moderni microcontrollori hanno una corrente di sonno ben al di sotto della corrente di autoscarica anche di batterie di piccole dimensioni. Puoi avere il pulsante semplicemente guidando il pin I / O del micro, che poi si commuta tra la modalità di sospensione e la modalità attiva a ogni pressione del pulsante. Sarà necessario un certo debouncing, ma tutto ciò è possibile anche nel firmware.

Questo tipo di metodo on / off sta diventando abbastanza comune al giorno d'oggi. Quando prende solo un µA, un microcontrollore non ha bisogno di essere veramente spento, solo addormentato, cosa che può fare sotto il proprio controllo. La linea di pulsanti deve essere collegata a qualcosa che può causare il risveglio del micro dal sonno, ma quasi ogni micro ha almeno uno di questi, di solito diversi.


1
D'accordo, molti dei miei progetti al giorno d'oggi non hanno nemmeno un pulsante on / off, si svegliano semplicemente premendo un pulsante.
Oli Glaser,

Il mio dispositivo contiene anche LCD e altre periferiche. Quindi devo spegnerlo anche io.

4
@utente: Ciò non significa che devi spegnere il micro, solo l'altra logica. Con il micro che fa il pensiero on / off, il micro può controllare l'alimentazione agli altri dispositivi in ​​modo che siano spenti quando il micro dorme. Ciò significa che hai un'uscita digitale deliberata che può essere la polarità più comoda per accendere e spegnere le cose e non è necessario implementare la commutazione nell'hardware analogico.
Olin Lathrop,

Anche se molti microcontrollori hanno correnti di sonno molto basse, i regolatori di qualità costano più di quelli scadenti. Un regolatore che utilizza un extra di 250uA (o anche 2,5mA) può andare bene se deve essere attivo solo quando un dispositivo è in uso, ma sarebbe totalmente inaccettabile se dovesse essere attivo anche quando un dispositivo era "spento" . Un prodotto progettato alcuni anni fa non utilizzava nemmeno un regolatore, ma utilizzava tre transistor e circa sette resistori per fornire un'alimentazione nominale a 5 volt con spegnimento controllato dal processore. Per gli standard "regolatori" la precisione della sua tensione era davvero scadente ...
supercat

1
@OlinLathrop: due 2N3094 e un 2N3906 costano meno di $ 0,07. Anche se si calcola che dieci componenti costino un centesimo ciascuno per l'assemblaggio, si risparmia comunque un centesimo per unità - se vengono prodotte 100.000 unità, sono 10.000 $. Se un prodotto non avrà quel tipo di volume, potrebbe non valere la pena provare a spremere quel $ 0,10; se i regolatori di oggi fossero disponibili quando ho progettato la cosa e se non avessi saputo in anticipo quanto bene avrebbe venduto, probabilmente avrei semplicemente usato un regolatore con controllo in standby, ma il mio circuito funziona ed è più economico di ogni altra cosa; nessun motivo per non continuare ad usarlo.
supercat

3

EDIT - a riflessione, il circuito sottostante (che lascerò per riferimento) è probabilmente il più adatto per l'uso in circuiti senza micro. Come menzionato nelle altre risposte, a meno che non ci si possa permettere i pochi uA, non ha davvero senso non usare il micro per controllare l'interruttore di accensione, poiché utilizza meno componenti e può essere controllato con precisione.
La versione più semplice può essere qualcosa di simile a un input IOC (interrupt on change) con pull up, con pulsante a terra. Il micro è alimentato continuamente e controlla un MOSFET a canale P (con pullup da gate a sorgente) per il resto del circuito. Quando dorme, lascia fluttuare il cancello per spegnere il circuito.

Circuito di riferimento:

Interruttore a levetta

Inizialmente il P-MOSFET è spento, quindi non c'è corrente di base in Q2, che è anche disattivata. Q1 è spento, quindi Q1c è a 5V. Il circuito è statico.

Quando S1 (ignora i nodi + e -, sono lì per scopi di innesco SPICE) viene premuto il 5V a Q1c viene collegato alla base Q2, accendendolo. Questo porta a terra il cancello P-MOSFET, accendendolo pure.
R4 ora vede 5 V e quando viene rilasciato S1, fornisce a Q2s la corrente necessaria per tenerlo aperto (e quindi anche il MOSFET acceso) Q1 viene acceso anche quando la corrente attraverso R2 carica C1 a ~ 600mV, a quel punto Q1c è <200mV (ovvero Q1 è acceso)
Il circuito è di nuovo statico.

Quando si preme di nuovo S1, Q1 affonda la corrente da R4 (che mantiene acceso Q2) disattivando Q2. R1 tira la base MOSFET fino a 5 V e la spegne di nuovo.

Ecco la simulazione (V (push) high rappresenta quando viene premuto il pulsante):

ToggleSwitchSim

Inoltre possiamo vedere dopo aver spento le teste di corrente a zero (quando C1 si scarica e Q1 si spegne) quindi il circuito non consuma energia nello stato off (il cursore per I (V1) è a 19,86s e misura 329nA):

ToggleSwitchPower

L'idea originale del circuito non è la mia, viene da Dave Jones a EEVblog .


1

Come ha suggerito Bruno Ferreira, il modo più semplice per consentire al pulsante di agire come un interruttore "off" è quello di cambiare il circuito è consentire al processore di sapere quando viene premuto il pulsante. Penso che si possano ragionevolmente usare resistori per proteggere l'ingresso del processore da tensioni superiori a VDD senza che sia necessario uno Zener.

Ecco uno schizzo di un progetto di circuito che potresti usare. La metà destra rappresenta il comportamento del processore e ho usato una combinazione di transistor, Zener e resistenza per sostituire un regolatore. L'uscita del processore viene rappresentata utilizzando un interruttore analogico VDD, anziché un gate, poiché le porte in questo simulatore generano sempre un'uscita + 5V.

Un aspetto chiave del circuito, che può causare problemi se ignorato, è che è progettato in modo che il processore non possa accendere il circuito a meno che il suo VDD non sia almeno ~ 3,6 volt; Ho anche truccato il simulatore in modo che il processore proverà sempre ad attivare l'uscita ogni volta che il suo VDD è inferiore a 3,5 volt. Ho visto molti progetti che presuppongono che i processori non proveranno a produrre una logica elevata man mano che la loro potenza diminuisce. Questa ipotesi potrebbe funzionare bene con alcuni lotti di chip utilizzati nei test, ma poi fallire con altri lotti di chip utilizzati nella produzione su vasta scala. Il comportamento della maggior parte dei processori non è specificato in condizioni di minima tensione; un buon design dovrebbe essere progettato in modo tale che il comportamento di un processore in tali condizioni non abbia importanza (leggera nota: è probabilmente sicuro supporre che un processore che non è t esplicitamente progettato per generare tensioni superiori a qualsiasi tensione applicata non inizierà magicamente a farlo; Non penso che ci sia una specifica esplicita per questo, ma penso che nella maggior parte dei casi possa essere dedotto in modo sicuro).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.