Forum: Mikrocontroller und Digitale Elektronik Mikrocontroller an Supercap und Solarzelle erst ab gewisser Spannung einschalten


von Stefan (Gast)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

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.

von Günter Lenz (Gast)


Lesenswert?

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.

von Stefan (Gast)


Lesenswert?

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?

von Stefan F. (Gast)


Lesenswert?

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).

von Stefan F. (Gast)


Lesenswert?

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.

von Stefan (Gast)


Lesenswert?

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.

von ope (Gast)


Lesenswert?


von der alte Hanns (Gast)


Lesenswert?

> 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.

von Stefan (Gast)


Lesenswert?

@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.

von chris (Gast)


Lesenswert?

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.

von chris (Gast)


Lesenswert?

2 io meine ich fuer +, gnd an gnd.

von MaWin (Gast)


Lesenswert?

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.

von Stefan (Gast)


Lesenswert?

@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.

von chris (Gast)


Lesenswert?

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.

von Badesalz (Gast)


Lesenswert?

Klingt alles nach nicht viel Reserven bei der Solarzelle... Da würd ich 
auf jeden Fall grosszügig überdimensionieren.

von chris (Gast)


Lesenswert?

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/

von Svenska (Gast)


Lesenswert?

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)

von Badesalz (Gast)


Lesenswert?

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.

von der alte Hanns (Gast)


Lesenswert?

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.

von Peter R. (pnu)


Lesenswert?

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
von chris (Gast)


Lesenswert?

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.

von Julian B. (julinho)


Lesenswert?

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?

von Peter D. (peda)


Lesenswert?

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.

von Fasti (Gast)


Lesenswert?

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

von Julian B. (julinho)


Lesenswert?

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.

von Stefan (Gast)


Lesenswert?

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?

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Stefan schrieb:
> Das könnte funktionieren oder? Sieht jemeand eine bessere/einfachere
> Lösung?

Genau DAS wäre wohl die sinnvollste Lösung.

von der alte Hanns (Gast)


Lesenswert?

> 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
Noch kein Account? Hier anmelden.