Forum: Mikrocontroller und Digitale Elektronik Selbstabschaltender µC


von arne (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich betreibe einen Mikrocontroller (ATMega8L) an einer Li-Ionen 
Batterie. Die Schaltung soll mit einem Tastendruck gestartet werden. Der 
µC soll bei unterschreiten einer bestimmten Batteriespannung die 
Stromversorgung der gesamten Schaltung abschalten. Hierzu verwende ich 
einen 3,3V-Linearregler mit Shutdown-Eingang (konkret ZLDO 330). Der µC 
muss auch über die  3,3V versorgt werden, da er mit Peripherie hinter 
dem Spannungsregler verbunden ist.
In den Foren habe ich hierzu bisher nichts brauchbares gefunden.

Den wesentlichen Teil der Schaltung habe ich angehängt (schematisch, 
Blockkondensatoren, etc. sind zur besseren Übersicht nicht dargestellt).

Die Idee ist, dass der Shutdown-Eingang (SC) über den Taster nach GND 
gezogen und dadurch die Spannungsversorgung hochgefahren wird. Der µC 
schaltet dann PC0 als Ausgang mit log. 0, so dass SC auch nach loslassen 
des Tasters auf 0 bleibt, bis entweder über INT0 eine weitere Betätigung 
des Tasters erkannt wird, oder aber der µC aus einem anderen Grund 
abschaltet (z.B. schwache Batterie, Messung hier nicht dargestellt). PC0 
wird dann als Eingang geschaltet, woraufhin SC high Level kriegt und der 
Regler abschaltet.

Allein mit dem µC klappt das auch zuverlässig. Wenn ich jedoch eine 
etwas größere Last (ca. 100mA) in den 3,3V Zweig einhänge, kommt es 
während des Abschaltens offensichtlich zu einer Rückkopplung von PC0 auf 
SC, die den Spannungsregler auf knapp unter 1V einschwingen lässt.

Eine saubere Lösung wäre, den Taster und PC0 über jeweils einen Eingang 
eines RS-FlipFlops an SC anzuschließen, allerdings möchte ich mit 
möglichst wenigen/kleinen Bauteilen auskommen. (Alternativ könnte man 
natürlich einen zweiten, 6-8 pinnigen µC nehmen, der die Funktion des 
FlipFlops nachbildet ;-)

Hat jemand eine einfachere Lösung?

von Walter T. (nicolas)


Lesenswert?

Reine Neugier: Wie erkennt PD2 überhaupt, daß der Taster geschlossen 
ist? Wenn PD0 auf Masse liegt, "riecht" PD2 je nach Batteriespannung 
noch ungefähr 2,5V, reicht das für eine zuverlässige Detektion des 
Pegels?

Wie stabil ist Deine Batteriespannung unter Last?

EDIT: Ich sehe gerade im Datenblatt: 0,6*VCC für High, das reicht.

von Micha (Gast)


Lesenswert?

Andere Frage: wozu dient PD2 überhaupt?

Ich würde das mit dem Ausschalten so ansetzen: parallel zum Taster einen 
NPN-Transistor, diesen (über Basisvorwiderstand) mit dem uC ansteuern, 
R4 & R5 weglassen, R3 zwischen Vin und SC, SC an Taster und Kollektor 
des Transistors

von ... .. (docean) Benutzerseite


Lesenswert?

am einfachsten wäre ein Taster mit 2 Kontakten (also 2 Schließer drin), 
dann könntest du die Signale trennen.

von Micha (Gast)


Lesenswert?

Vor den Basisvorwiderstand des Transistors natürlich noch nen Pulldown.

Wegen der Spannungerkennung musst du dir noch Gedanken über die 
(stabile) Referenzspannungserzeugung machen - denn du brauchst ja einen 
Vergleichswert.

von MarioT (Gast)


Lesenswert?

Was hälst Du davon an SC einfach einen Kondensator zu hängen, so 10 bis 
100nF und am Ausgang vom µC PC0 nach einen Widerstand von 1k? Dann 
dürfte es doch nicht mehr schwingen.

von arne (Gast)


Lesenswert?

Danke für's Feedback!

@MarioT:
ja, hab gestern auch schon ein bisschen mit 'nem Konsensator an SC 
rumgespielt, leider ohne Erfolg. Werde das aber nochmal probieren. Evtl. 
habe ich aber dann das Problem, dass es nicht schwingt, aber durch die 
Verzögerung evtl. langsam genau an diesen Zusatnd annähert, wo der µC SC 
soweit runterzieht, dass der Regler nicht entgültig abschaltet.

@Micha:
PD2(INT0) detektiert den Zustand des Tasters (Taster geschlossen -> R5 
an GND, sonst über Spannungsteiler R3, R4 nahe Vcc), damit darüber auch 
Ausschalten am µC getriggert werden kann (der Controller muss erst noch 
Daten auf einer SD Karte sichern, bevor er abschaltet). Dies 
funktioniert auch einwandfrei.
In einer früheren Version habe ich es mit einem Transistor probiert, ich 
fürchte aber, dass ich da dieselben Probleme habe, da der Pegel an PC0 
während des Abschaltens nicht definiert ist. Kannst Du das evtl. mal 
aufmalen?
Als Referenzspannung genügt die interne 2,56V Ref. (ggf. in Software 
kalibriert), der µC schaltet bei unterschreiten von 3,2V ab. Alternativ 
kann auch der LBF (Low Battery Flag) Ausgang des Reglers genutzt werden, 
allerdings schaltet man dann schon früher ab.allo,

von Micha (Gast)


Angehängte Dateien:

Lesenswert?

Via Taster abschalten ist auf diese Weise aber nicht möglich. Dazu würde 
ich obigen Vorschlag mit den beiden Schließern umsetzen. Getestet ist 
das Ganze jedoch nicht, daher gebe ich keine Garantie auf Funktion.

von Micha (Gast)


Lesenswert?

Die beiden Bilder sind identisch und die Bauteilbezeichnungen kannst du 
natürlich ignorieren.

von Εrnst B. (ernst)


Lesenswert?

arne schrieb:
> Hat jemand eine einfachere Lösung?

Wenn die exakten 3.3V nicht vom (unbekannten) Rest der Schaltung 
benötigt werden:

Keinen Spannungsregler verwenden, µC direkt an den 4.2 … 3.0 V des Akkus 
betreiben, Sleep-Mode einsetzen, Taster an Interrupt-Pin zum Aufwecken.

von Falk B. (falk)


Lesenswert?


von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Schalte an die Basis des Transistors die Taste, in Reihe mit 10k, nach 
Vin. Nimm als Pulldown für die Basis einen 22k-Widerstand. Schließe 
einen ADC-Pin an die Basis des Transistors über einen 
4k7-Serienwiderstand an.

1. Drücke die Taste, der Spannungsregler startet. Aktiviere zur 
Selbsthaltung den internen Pullup im ADC-Pin.

2. Drücke die Taste, der ADC kann den sich ändernden Spannungspegel 
abfragen.

3. Schalte den ADC-Pin auf Ausgang-Low, das schaltet den Spannungsregler 
ab.

von arne (Gast)


Lesenswert?

Hinter dem µC sitzt noch eine SD Karte, die nur bis 3,6V spezifiziert 
ist, daher der 3,3V Regler.  Ich habe Bedenken, den Controller direkt 
aus der Batterie (max. 4.2V) zu speisen, während die Karte und der Rest 
der Schaltung die 3,3V aus dem Regler bekommt. Aber vielleicht gibt's 
auch dafür eine Lösung, das wäre zumindest für die schaltbare 
Spannungsversorgung, Sleep/Wake-up am einfachsten.

Ich werde nochmal die Transistorvariante probieren.
@Travel Rec.: ADC statt INT ist auch gut. Ist das eine erprobte Lösung? 
Potenziell sehe ich auch hier die Gefahr, dass der Pegel an ADC während 
des Abschaltens undefiniert ist und so den Transistor evtl. wieder 
öffnet.

von Peter D. (peda)


Lesenswert?

arne schrieb:
> Allein mit dem µC klappt das auch zuverlässig. Wenn ich jedoch eine
> etwas größere Last (ca. 100mA) in den 3,3V Zweig einhänge, kommt es
> während des Abschaltens offensichtlich zu einer Rückkopplung von PC0 auf
> SC, die den Spannungsregler auf knapp unter 1V einschwingen lässt.

Falsch vermutet.
Nur mit MC bricht die Spannung nicht weit genug ein und der 
Spannungsregler schaltet noch nicht wieder ein.
Der MC kriegt seine VCC quasi über den 47k.

Mit Last wird die VCC soweit runtergezogen, daß am Pin des MC low 
anliegt und der Regler schaltet wieder ein.

Jeder IO-Pin kann nicht über VCC+0.3V liegen!

Deshalb ist der Transistor notwendig.
Bei High schaltet er ein und wenn die VCC sinkt, kriegt er kein high 
mehr und sperrt.



Peter

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

arne schrieb:
> ADC statt INT ist auch gut. Ist das eine erprobte Lösung?
> Potenziell sehe ich auch hier die Gefahr, dass der Pegel an ADC während
> des Abschaltens undefiniert ist und so den Transistor evtl. wieder
> öffnet.

Ja, die Lösung ist erprobt, allerdings mit einem Regler, der einen 
High-aktiven Enable-Pin hat, also ohne Transistor auskommt.
Beim Abschalten gehst Du so vor, daß Du mit dem ADC zuerst den Pegel 
detektierst. Wird die Taste als wieder losgelassen erkannt, setzt Du den 
Portpin auf Ausgang Low und schickst dann unmittelbar darauf den 
Controller in den Tiefschlaf. Dann schaltet der Regler sicher ab und den 
Controller stört das Wegfallen der Spannung auch nicht. Beim 
selbsttätigen Abschalten auf eine Bedingung hin sparst Du Dir die 
Tastenabfrage.

von arne (Gast)


Angehängte Dateien:

Lesenswert?

Danke für den Tipp! Klappt jetzt wunderbar.
Schaltung sieht jetzt wie folgt aus, Reststrom im Standby liegt 
tatsächlich unter 10µA.
Beim nächsten mal also einen Regler mit inversem Shutdown Pegel kaufen - 
wieder was gelernt :-)

von Michael M. (Gast)


Lesenswert?

da ist eine böse falle eingebaut.

über R2 und R4 und die internen schutzdioden kann dir dein atmel beim 
tastendruck schon parasitär versorgt werden.
dank des hohen vorwiderstandes der spannungsversorgung und dem sprung 
bei einsetzendem linearregler kann dir dein atmel hängen bleiben.
ich hatte das bei genau so einem anwendungsfall mit einem ldo mit 
softstart.

spendier in serie zu R2 noch eine diode und du bist das problem los.

von arne (Gast)


Lesenswert?

Ok, berechtigter Einwand. Bin mir nur grad nicht sicher, ob ich mit dem 
ADC über die Diode die Tasterstellung noch sicher detektieren kann.
Würde man das Problem nicht auch mit dem Brown-Out Reset in den Griff 
bekommen?

von Ralph (Gast)


Lesenswert?

Mach dir nicht soviel Arbeit.

+ Nimm die Schaltung aus dem ersten Post.
+ Ersetze R4 durch eine Diode.
+ an Pin 23 des µC ebenfalls eine Diode
+ an Pin 2 des ZLD einen Pullup Widerstand
Den Pullup so dimensionieren das mit geschaltenem  PC0 der Pegel an SC 
weit genug absinkt. Beachte max Strom an PC0.

Das nennt sich dann Wired OR.

Ergebnis ist das der Taster und der µC den SC pin nach GND ziehen 
können.
Nach Datenblatt muss SC nur < 1,5 Volt sein.
Mit den Dioden kommst du auf ~0,6 Volt. sollte locker reichen.
Am Int0 kannst du damit auch sauber den Tasterzustand ablesen.

von Micha (Gast)


Lesenswert?

Ralph schrieb:
> Mach dir nicht soviel Arbeit.
>
> + Nimm die Schaltung aus dem ersten Post.
> + Ersetze R4 durch eine Diode.
> + an Pin 23 des µC ebenfalls eine Diode
> + an Pin 2 des ZLD einen Pullup Widerstand
> Den Pullup so dimensionieren das mit geschaltenem  PC0 der Pegel an SC
> weit genug absinkt. Beachte max Strom an PC0.

Kannst du das mal zeichnen?

von Michael M. (Gast)


Lesenswert?

Ralph schrieb:
> Mach dir nicht soviel Arbeit.
bei deiner lösung wird der µC nie aus sein.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Michael M. schrieb:
> über R2 und R4 und die internen schutzdioden kann dir dein atmel beim
> tastendruck schon parasitär versorgt werden.

Sind etwa 1,5V, die da übrig bleiben...


arne schrieb:
> Würde man das Problem nicht auch mit dem Brown-Out Reset in den Griff
> bekommen?

Sicher.

von Ralph (Gast)


Angehängte Dateien:

Lesenswert?

Sollte so funktionieren.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Ja, sollte. Braucht aber 2 Pinne. Und es versorgt den ATMEL ständig 
parasitär. Die Widerstände am Schalter müssen also sehr hochohmig sein. 
Den oberen Widerstand am Schalter kann man sparen und stattdessen den 
internen Pullup des Controllers nutzen.

von Peter D. (peda)


Lesenswert?

Ralph schrieb:
> Sollte so funktionieren.

Nein, zumindest nicht zuverlässig.

Die Shutdownspannung muß <0,4V sein für ein und >1,5V für aus.

Ist der MC aus, hast Du die interne Schutzdiode in Reihe, also <=1,4V, 
d.h. die >1,5V werden nicht eingehalten.

Soll der MC an sein, hast Du die Diodenspannung + die interne 
Lowspannung, d.h. ~1V, die <0,4V werden also auch nicht eingehalten.

Das ist also totaler Murx.

Wie schon gesagt wurde, ist im MC eine Diode gegen VCC.
D.h. bei VCC = 0V zieht der MC auf Low (~0,7V).
Die Schaltung kann also nur funktionieren, wenn der Regler mit High 
einschaltet.


Peter

von Michael M. (Gast)


Lesenswert?

Beitrag "Re: Selbsthalung mit MOSFET"
und noch die darunter. text bei der zweiten schaltung beachten!

das sind lösungen mit hand und fuß.

von arne (Gast)


Lesenswert?

kann mich nur nochmal wiederholen: die von Travel Rec. vorgeschlagene 
Lösung mit einem Transistor und 4 Widerständen (s. mein vorletzter Post) 
funktioniert wunderbar. Während Shutdown zeigt mein Multimeter einen 
Reststrom von 2µA, was will man mehr?
Der Taster generiert eine Spannungsdifferenz von knapp 0,1V am ADC und 
wird sich so auch einwandfrei detektieren lassen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.