Hallo Zusammen, ich möchte einen Mikrocontroller an einem Supercap betreiben der mit einer kleinen Solarzelle geladen wird. Der Energieverbrauch des MCU ist wesentlich höher als was die Solarzelle liefern kann, darum schläft er die meiste Zeit und wacht nur ab und zu auf um eine Messung zu machen. Nun weiss ich aber nicht wie ich in diesen Zustand hineinkomme. Wenn man mit einem leeren Supercap startet dann wird der langsam (mehrere Minuten) aufgeladen bis auf etwa 4V. Der Mikrocontroller beginnt aber bereits bei ca 2.5V an zu laufen und verbraucht dabei für die Initialisierung mehr Energie als die Solarzelle liefert, entlädt dabei den Supercap und die Spannung fällt, so dass der Mikrocontroller wider ausgeschaltet wird. Und das immer wieder von neuem. Wie kann ich erreichen, dass der Mikrocontroller erst aber einer gewissen Spannung (zB 3 Volt) eingeschaltet wird, die ausreicht um sich zu initialisieren und in den Sleep mode zu schalten? So etwas wie ein "Voltage Monitor" der den MCU im Reset hält bis eine gewisse Spannung erreicht ist hilft mir glaub ich nicht viel, da ich dann einfach das Problem zu einer anderen Spannung verlagere?! Das ganze ist bis jetzt nur ein Gedankenexperiment, ich weiss also noch nicht wirklich welchen Mikrocontroller ich dann wirklich verwenden werde. Ich würde mich über Ideen und Ratschläge freuen. Es muss nicht unbedingt ein fix fertiger Chip sein der das für mich regelt, es würde mich auch interessieren ob/wie man es mit Mosfet, Komperator etc. lösen könnte. viele Grüsse Stefan
Der Brown-Out im Mikrocontroller löst nicht nur einen Reset bei Unterspannung aus, sondern verhindert auch einen Start, solange die Soll-Spannung nicht erreicht ist. Die Schaltschwelle ist bei AVR durch Fuses programmierbar. Allerdings könnte es sein, dass der ganze Chip in diesem Haltezustand mehr Strom verbraucht, als im Standby. Da würde ich mal im Datenblatt nach Hinweisen suchen oder notfalls ausprobieren.
Der MSP430 ist sehr sparsam im Stromverbrauch, und damit kann man auch viele Spielereien mit dem Schlafmodus machen. Aber ich bin mit dem MSP430 selber noch Anfänger. Schau dir bitte mal das Datenblatt an, er könnte für dich geeignet sein.
Ich habe mir im Datenblatt des ATmega32 angeschaut wie der Brown-Out funktioniert aber ich glaub nicht, dass das mein Problem löst: Der ATmega wird im Reset gehalten bis die Spannung über Vbod+ steigt und wieder wenn sie unter Vbod- fällt. Die Differenz Vhyst = Vbod+ - Vbod- ist nur 50mV, es könnte also immer noch sehr gut passieren dass der ATmega sich gleich wieder in den Reset befördert. Wenn man die Vhyst Spannung ändern könnte auf 1V oder so dann würde es funktionieren, das geht aber anscheinend nicht. Oder habe ich jetzt etwas falsch verstanden?
Deine Bedenken sind durchaus berechtigt. Da liegt es doch nahe, einen externen Schmitt Trigger an den Reset-Eingang anzuschließen. Dem könnte man mit einem OP-Amp realisieren. Müsste allerdings ein spezieller sein, wegen der geringen Versorgungsspannung. Oder du schleifst einen Thyristor in die Spannungsversorgung ein, der erst ab einer gewissen Spannung ein schaltet. Wenn man den selbst aus einem NPN/PNP Pärchen bastelt, kann man ihn in die VCC Leitung einschleifen und mit negativer Gate-Spannung ansteuern (natürlich mit Spannungsteiler, sonst schaltet er zu früh ein).
Ich habe gerade gelesen, dass man den Brown-Out Detektor per Software deaktivieren kann. Wenn Du das gleich zum Programmstart machst, ist es egal, wenn danach die Spannung einbricht. Danach kann ein ADC verwendet werden, um die Spannung per Software zu überwachen.
An welche Funktion denkst du beim MSP430? Der Stromverbrauch an sich ist eigentlich kein Problem, viele der neuen Mikrocontroller haben ja mittlerweilen einen Stromverbrauch von <1uA im tiefsten power mode.
> Ich habe gerade gelesen, dass man den Brown-Out Detektor per Software > deaktivieren kann. Wenn Du das gleich zum Programmstart machst, ist es > egal, wenn danach die Spannung einbricht. Danach kann ein ADC verwendet > werden, um die Spannung per Software zu überwachen. AVR: Das Problem ist wohl das Starten, meine ATmega48 bzw. 88 ziehen im RESET einige mA, also käme der Kondensator nie auf die nötige Spannung.
@stefanus: Danke für die Ideen mit dem Schmitt-Triger und Thyristor, das muss ich mir mal genauer anschauen. Wo hast du du gelesen dass man den Brown-Out per software ein und auschalten kann? Im Atmega32 Datasheet steht, dass er per fusebit aktiviert/deaktiviert wird. @ope: Das mit dem Komparator hatte ich mir auch überlegt, dazu bräuchte ich aber irgend eine Referenz Spannung die zT über der Versorgungsspannung liegen müsste? Ausserdem dürfte der Komparator nicht wider zurückschalten.
Es gibt schon diverse technische Mòglichkeiten, das einfachste ist aber die Solarzelle auf 2 I/O anzuschliessen und den Coldcap mit zwei Kondensatoren (1uf und 0.1uf) an VCC und GND. Das wars. Weiters gibt es fuer sowas auch noch einen msp mit fram anstelle von sram.
2 io meine ich fuer +, gnd an gnd.
Stefan schrieb: > Wie kann ich erreichen, dass der Mikrocontroller erst aber einer > gewissen Spannung (zB 3 Volt) eingeschaltet wird Leg ihn schlafen und schliesse an einen Pin der auf PinChange Interrupt zum aufwachen führt einen 4V Unterspannungssensor an, wie ICL7665. Alternativ ohne Zusatzbauteile: Regelmässig (per watchdog) aufwachen lassen (z.B. jede 1/10 sec), per ADC Spannung messen, und falls es noch nicht reicht gleich wieder schlafen schicken.
@chris: Das verstehe ich jetzt nicht. Kannst du etwas ausführlicher erklären wie das funktionnieren sollte? @MaWin: Meine Befürchtungen waren, dass ich gar nicht soweit komme um ihn in den Schlafzustand zu versetzen. Wenn er einmal initialisiert ist und schläft sollte es kein Problem mehr sein. Wie ist eigentlich das Verhalten von Mikrocontrollern unter ihrer Minimalspannung? Jedenfalls für die ATmegas scheint es so zu sein, dass sie sich dann im Reset Zustand befinden. Wenn sie aber im Reset einige mA Strom ziehen (gemäss Post vom alten Hans) dann müsste man den Mikrocontroller komplett vom Supercap trennen sonst könnte er gar nie geladen werden.
Das (Taschenrechner)Solarpanel ladet ueber die Schutzdioden den Goldcap. Der uC braucht noch einen 1uf sowie 0.1uf damit dieser stabil làuft. Wenn genug Sonne da ist, startet der uC und làuft ab da.
Klingt alles nach nicht viel Reserven bei der Solarzelle... Da würd ich auf jeden Fall grosszügig überdimensionieren.
Hier ist die Rede von Goldcap, bei 1 Farad hat man bei 40uA Durchschnittsverbrauch eine Reserve von 24 Stunden, bei 20uA 48 Stunden usw. Der Stromverbrauch eines AVR mit externem 32khz Takt an timer2 ist 1uA (mega88PA) und wenn er aktiv ist 20uA (32khz). Der ADC schlàgt mit ca 75uA zu buche. Bei 5V sind 40% hinzuzurechnen. In einer realen Applikation habe ich einen Durchschnittsverbrauch von knapp unter 3uA. Gesendet wird wenn der goldcap voll ist, der uC bekommt am Eingangspin mit ob das Solarpanel Spannung liefert oder nicht. Deshalb weil nur gesendet wird, wenn die Solarzelle den Strom liefert und der goldcap schon etwas nachgeladen wurde, fliesst die Sendeleistung nicht in das Budget fuer den Strom des Goldcaps ein. Was noch zu erwàhnen ist: Eine 5.6 Zenerdiode schuetzt den uc for zu hoher Spannung, da zwei Solarpanels in Serie verbaut wurden um eine hohe Spannung zu erhalten um den goldcap auf ca 5.3V aufzuladen. Wenn man sehr stromhungrig ist, dann sollte man sich eher sowas nehmen, https://www.olimex.com/Products/MSP430/Power/MSP430-SOLAR/
Du aktivierst die Brown-Out-Detection per Fuse und deaktivierst sie beim Programmstart sofort. Dann ist sie in den Sleep-Modi deaktiviert, wird beim Aufwachen aber temporär wieder scharf. Ein ATmega328P kann das. (S.38/10.2/BOD Disable)
Alles recht theoretisch hier. In der Praxis gibts Probleme weil die Sonne öfter mal nicht scheint und das Energiebudget nicht langt. Von einer Z-Diode sollte man auch die Finger lassen: Viel zu ungenau und zu früh zu stromhungrig.
MaWin schrieb: > Leg ihn schlafen und schliesse an einen Pin der auf PinChange Interrupt > zum aufwachen führt einen 4V Unterspannungssensor an, wie ICL7665. Das Problem bleibt die Startbedingung. Wenn man jetzt wüsste, wie der ICL7665 unterhalb seiner Mindestbetriebsspannung von 1.6 V reagiert. Mein alter Tietze&Schenk macht da wenig Hoffnung: "... läßt sich nur mit einem Ruhekontakt eines Relais realisieren ..." Und ein solches scheidet hier ja wohl aus.
Vorschlag: Kurzzeitbetrieb in Übergangsphase In der Startphase nach seinem brownout-Start nur etwa im Minutenrhythmus die Betriebsspannung kurz per AD-Wandler abfragen, erst bei ausreichender Spannungsreserve in normalen Betriebsmode übergehen. Bei Unterspannung rechtzeitig in den sleepmode zurück. Da kann man die Schaltschwellen per Software beliebig einstellen. Eventuell in der Niedrigspannungsphase der Solarzelle den Kontroller per Diode nicht aus dem Hauptpuffer sondern aus einer Akkuzelle versorgen.
:
Bearbeitet durch User
Ich vermute stark, dass BOR auch >3mA braucht, wie der generelle Reset auch. Ev. SM72240 sowie z.B. 2N7002 . Ja, Zenerdiode ist nicht besonders genau, aber da eine hohe Spannung gewàhlt wurde, um auch bei nicht direktem Sonnenschein noch Aufladung zu haben ist sie effizienter als ein Vreg. Bezueglich ICL7665 und Vcc<1.6V , das wuerde ich als kein Problem sehen. VCC von ICL7665 wurde ueber eine Diode vom Solarpanel kommen und gleichzeitig ueber eine weiter Diode vom uC. Also bas-70 z.B. Sobald der uC korrekt làuft, setzt er den Ausgangspin auf high, welcher zur diode/vcc des ICL7665 geht. Gleichzeitig wird bei Unterspannung abgeschaltet.
Ich hab mal irgendwo gelesen, dass Der Brownout am AVR nur funktioniert, wenn die Spannung mit einer gewissen Spannung steigt und fällt. Wenn das zu langsam passiert, soll es wohl Probleme geben. Kann das jemand bestätigen?
Das Problem läßt sich vermutlich nur mit externer Beschaltung lösen. Ich kenne zumindest keinen MC, der sowas kann. Das Problem sieht man auch oft an käuflichen Geräten. Solange die Akkus voll sind, macht der MC sein Ding und geht dann in den Stromsparmodus. Sobald aber die Akkus leer sind und nicht schnell entnommen oder geladen werden, schlägt das Brownout zu, der MC geht in Reset und zieht viel Strom. Die Folge ist, die Akkus werden tiefentladen und sind reif für den Mülleimer. Aber auch Primärzellen mögen eine Tiefentladung nicht, sie werden dann schnell undicht und zerätzen die Platine. Es müßte einen MC geben, der unter der unteren Brownout-Schwelle im Schlafmodus bleibt und erst beim Überschreiten der oberen Schwelle kurz einen Reset auslöst.
Hallo, wie wäre es mit einem Resetcontroller ala TPS3836. Da gibt es sicher vrschiedene passende, die die Aufgabe bei einem Verbrauch von wenigen 100nA schaffen. Grüße Fasti
Ein Reset-Controller bringt nichts, da wie Peter schon bemerkte im Reset der Stromverbrauch viel höher ist. Besser ist ein Spannungsdetektor, der dem µC den Vcc ein und abschaltet.
Wie wäre es mit einem Resetcontroller (Schwelle zB 1 Volt über der Minimalspannung vom uC) und damit einen FET anzusteuern der die Versorgung vom uC schaltet. Das ganze so beschaltet dass der uC den Resetcontroller "überstimmen" kann. Sobald der uC dann das erste mal aufwacht überstimmt/deaktiviert er den Resetcontroller und kann von da an den ganzen Spannungsbereich nutzen. Falls einmal die Spannung am Supercap unter das Minimum vom uC sinkt geht der in den Brown-out Reset und gibt dabei automatisch den Resetcontroller wieder frei. Das könnte funktionieren oder? Sieht jemeand eine bessere/einfachere Lösung?
Stefan schrieb: > Das könnte funktionieren oder? Sieht jemeand eine bessere/einfachere > Lösung? Genau DAS wäre wohl die sinnvollste Lösung.
> Genau DAS wäre wohl die sinnvollste Lösung.
Es sieht theoretisch gut aus. Ich hoffe, Stefan, dass Sie uns über die
Lösung in der Realität informieren, zumindest ich bin sehr daran
interessiert, da noch etwas skeptisch.
Und ein paar Angaben zu den Strömen, die habe ich bislang vermisst.
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.