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?
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.
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
am einfachsten wäre ein Taster mit 2 Kontakten (also 2 Schließer drin), dann könntest du die Signale trennen.
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.
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.
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,
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.
Die beiden Bilder sind identisch und die Bauteilbezeichnungen kannst du natürlich ignorieren.
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.
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.
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.
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
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.
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 :-)
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.
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?
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.
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?
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.
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.
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
Beitrag "Re: Selbsthalung mit MOSFET" und noch die darunter. text bei der zweiten schaltung beachten! das sind lösungen mit hand und fuß.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.