Forum: Mikrocontroller und Digitale Elektronik Stromfluss bei ausgeschaltetem PIC


von Oliver V. (busoni)


Angehängte Dateien:

Lesenswert?

Hallo


ich habe eine einfache mess-Schaltung augebaut, um zu sehen, wieviel 
Strom ein PIC12F675 unter bestimmten Bedingungen verbraucht. Dabei ist 
mir aufgefallen, dass auch Strom fließt, wenn der Controller ganz 
ausgeschaltet ist (/MCLR low). Je nach Spannung fließen einige 100 µA, 
also weit mehr als etwa im Sleep (10 µA). Ich habe verschiedene 
Konfigurationen (PWRTE_, BODEN_, etc ON/OFF) probiert, alles mit dem 
gleichen Resultat. Am Programm selbst kann's kaum liegen, und die Pins 
werden ja auch erst nach dem Start konfiguriert.
Im Datenblatt habe ich dazu leider nichts gefunden, sämtliche Angaben 
beziehen sich auf Normalbetrieb und Sleep, es gibt keine Tabelle zum 
Verbrauch im Reset-Zustand mit /MCLR low bzw bei zu geringer Spannung 
zum starten.

Wie kann das sein? Und kann man das vermeiden?

von Falk B. (falk)


Lesenswert?

@ Oliver V. (busoni)

>gleichen Resultat. Am Programm selbst kann's kaum liegen, und die Pins
>werden ja auch erst nach dem Start konfiguriert.

DAS ist das Problem. Die IOs floaten während des Resets. Damit zieht der 
PIC relativ viel Strom, weil die Eingangspuffer im linearen Bereich 
arbeiten.

>Wie kann das sein? Und kann man das vermeiden?

Pull-Up Widerstände.

MfG
Falk

von JensG (Gast)


Lesenswert?

Ist denn /MCLR low = ausgeschaltet? Ich dachte eigentlich, der wird nur 
intern zurückgesetzt.

von Oliver V. (busoni)


Lesenswert?

> Pull-Up Widerstände.

Danke. Das werd ich probieren. Was muss ich da für Werte nehmen und 
womit verbinden (das kann ich sicher auch recherchieren, nur falls es 
wer so weiß..)?

> Ist denn /MCLR low = ausgeschaltet? Ich dachte eigentlich, der wird nur
> intern zurückgesetzt.

Ich denke schon. Wenn's low bleibt ist er wirklich aus. Das gleiche 
Verhalten zeigt sich auch, wenn die Spannung zu gering ist und er sich 
ausschaltet: Plötzlich steigt der Verbrauch um das 10-fache.
Die konkrete Anwendung sieht so aus, dass der Controller von einer 
Solarzelle mit Pufferkondensator versorgt wird. Er schläft die meiste 
Zeit und wacht nur alle paar MS ganz kurz auf. Das läuft prima mit 
wenigen µA im Dämmerlicht, aber wenn er mal ganz ausgegangen ist, 
braucht er einige 100 µA um wieder anzuspringen und der Kondensator lädt 
nicht mehr.
Intuitiv schwer verständlich, dass er angeschaltet weniger verbraucht 
als ausgeschaltet.

von Enrock J. (Firma: studi) (enrock)


Lesenswert?

Servus,

also wenn ich mich recht entsinne, und da bin ich mir recht sicher, ist 
der PIC_RESET nicht gleich PIC_AUS.
Bei Reset werden doch alle Einstellungen wieder auf die Default zurück 
gestellt, was auch die Ports betrifft. Was meiner Meinung nach auch den 
höheren Stromverbrauch erklärt. Auch wenn der Reset dauerhaft auf Low 
gehalten wird ist der PIC nicht aus, sondern setzt alles auf die Default 
einstellungen zurück und halt diese Einstellungen fest.

Bei SLEEP schläft ja der PIC und macht reagiert erst wieder wenn er 
geweckt wird.
Konntest du das Problem irgendwie reduzieren oder hast du eine andere 
Erklärung gefunden?
Würd mich mal interessieren.

Gruß

von Oliver V. (busoni)


Lesenswert?

Tja, schwer zu sagen und vielleicht auch eine Definitionsfrage: Was ist 
"aus"? Man könnte natürlich sagen, dass er immer irgendwie "an" ist, 
solange Strom fließt - was wiederum immer passiert, sobald eine Spannung 
anliegt. Den beschriebenen Zustand könnte man dann als "im Reset" 
bezeichnen. Nur ist der nicht als Betriebasart im Datenblatt 
beschrieben, sondern nur, was nach einem Reset los ist.
Der hohe Strom fließt jedenfalls auch mit MCLRE_OFF, wenn man Vdd 
langsam von null erhöht, er also wirklich ganz aus war (oder noch ist?). 
Wenn die Spannung hoch genug ist, startet er und wenn's dann in den 
Sleep geht ist der Strom plötzlich viel geringer.

Ich probier' mal die Pullups - sobald ich verstanden habe, was das genau 
ist und welche Werte in Frage kommen. Ich vermute, dass es darum geht, 
die Pins unter Spannung zu setzen ohne dass allzuviel Strom hinein 
fließt. Bin halt ziemlicher Laie was Elektronik angeht.

von Falk B. (falk)


Lesenswert?

@ Oliver V. (busoni)

>Ich probier' mal die Pullups - sobald ich verstanden habe, was das genau
>ist und welche Werte in Frage kommen. Ich vermute, dass es darum geht,

0,1-1MOhm

Wobei das am Ende unnötiog ist. Siehe Sleep Mode. Einfach alle IOs 
als Ausgänge konfigurieren oder interen Pull-Ups einschalten und gut. 
Dazu muss dein Programm dann natürlich laufen!

MFG
Falk

von Oliver V. (busoni)


Lesenswert?

> 0,1-1MOhm

Danke!

> Wobei das am Ende unnötiog ist.

Es geht ja auch um den Anfang. Das Happy End hab ich ja schon: sobald er 
läuft wird alles auf Ausgang geschaltet, dann ab in den Sleep und alles 
ist gut.

> Dazu muss dein Programm dann natürlich laufen!

Eben.

von Oliver V. (busoni)


Lesenswert?

Also ich habe jetzt alle 6 IO-Pins über 100 KOhm Widerstände an Vdd 
angeschlossen und der Strom fließt wie zuvor.
Ich habe es sowohl am PICkit mit ein- und ausschalten per /MCLR als auch 
an der Solarzelle mit Kondensator probiert (MCLR Option aus und der Pin 
auch mit Pullup). An der Solarzelle kann man sehr schön sehen, wie mit 
stärkerem Licht immer mehr Strom fließt, bis der PIC anspringt und der 
Verbauch dann wieder sinkt.

Was nützen mir all die Low-Power Features, wenn der ausgeschaltete 
Controller fast soviel verbraucht wie unter Vollast? Ist das bei AVRs 
auch so?

von Falk B. (falk)


Lesenswert?

@ Oliver V. (busoni)

>auch mit Pullup). An der Solarzelle kann man sehr schön sehen, wie mit
>stärkerem Licht immer mehr Strom fließt, bis der PIC anspringt und der
>Verbauch dann wieder sinkt.

Ach so!!! Klar, das ist was anderes. Bei sehr niedrigen Spannungen, 1V 
oder so, ist das Verhalten der Transistoren sehr undefiniert. Dann kommt 
es zu wilden "Kurzschlüssen" und Leckströmen.

>Was nützen mir all die Low-Power Features, wenn der ausgeschaltete
>Controller fast soviel verbraucht wie unter Vollast?

Käse. Wenn die Betriebsspannung im gültigen Bereich ist, braucht der 
fast nix.

MfG
Falk

von Oliver V. (busoni)


Lesenswert?

Ja, das war mir auch schon aufgefallen, in bestimmten Bereichen gibt der 
PIC sogar einen prima Rausch-Generator ab :)

Man müsste den Strom aufhalten, bis der Kondensator auf die 
Betriebsspannung (2V) geladen ist.

von Falk B. (falk)


Lesenswert?

@ Oliver V. (busoni)

>Man müsste den Strom aufhalten, bis der Kondensator auf die
>Betriebsspannung (2V) geladen ist.

Batteriepuffer über Dioden.

Beitrag "MSP430F1612_Batteriebetrieb"

MfG
Falk

von 6632 (Gast)


Lesenswert?

Was spricht dagegen, die Idee, dass der PIC im Reset ausgeschaltet sei 
fallenzulassen ? Weshalb nicht wie alle Leute einen Sllepstate verwenden 
?

von Oliver V. (busoni)


Lesenswert?

Der Normalfall bei meiner Anwendung ist, dass meist garkein und bei 
Nutzung sehr wenig Strom zur Verfügung steht. Ich kann keinen Puffer wie 
Akku oder Goldcap verwenden, sondern muss mit der kurzfristig 
vorhandenen Energie den PIC starten.

Sicher kann ich versuchen, den PIC so viel wie möglich im Sleep zu 
halten, aber ich kann mich nicht darauf verlassen. Nach einer gewissen 
Zeit in Dunkelheit ist jeder Puffer leer. Außerdem braucht der umso 
länger zum aufladen, je größer er ist. Ich hätte also die Wahl zwischen 
häufigem Reset oder seltenem, dann aber mit unzumutbar langer 
Aufladezeit (man muss das Ding erst ne Minute in die pralle Sonne halten 
bis ein Goldcap voll ist). Beides ist nicht akzeptabel.

Und der Strom reicht ja auch aus, es muss halt nur eine kleine Reserve 
für den Start aufgebaut werden. Wenn man z.B. einfach mechanisch Vdd vom 
Pic trennt, hat der Kondensator schon nach einer Sekunde wieder genug 
Spannung, um den PIC zu starten.

Die Schaltung müsste irgendwie den Kondensator priorisieren. Erst wenn 
der voll ist dürfte der PIC drankommen, ihn dann aber leersaugen dürfen. 
Knifflig.

von Oliver V. (busoni)


Lesenswert?

danke zombie-frank.

eh erstaunlich, wie wenig spam es hier gibt, dafür dass man ohne 
anmeldung posten kann.



Könnte das gehen:

Noch einen zweiten Kondensator parallel schalten, der den Strom in 
Pulsen weitergibt (ich glaub mit einem Transistor wäre das zu machen). 
Die Pulse könnten den Pic anwerfen. Das muss nur etwa jede Sekunde 
passieren, es müsste also nicht viel Strom in diesen Pulsgeber fließen. 
Eventuell könnte der Pic ihn dann nach dem Start auch abschalten.

von 6632 (Gast)


Lesenswert?

Das Problem scheint das Aufstartverhalten zu sein. Der Prozessor sollte 
erst Saft bekomme, wenn welcher da ist und nicht vorher mit 
undefinierten Zustaenden den Saft verplempern. Dazu gibt es Zwei Dinge. 
Erstens ein ResetCircuit, zB ein MCP111T, der verbraucht selbst weniger 
als 1uA. Damit kann man einen PFet ansteuern, der den Strom fuer den 
Controller freigibt, oder der kann den Switcher im Powerdown halten. 
Zweitens gibt es spezielle Stromsparmodelle von Prozessoren. PIC kenne 
ich zuwenig, aber AVR hat welche, die laufen ab 1.8V. Wenn man dem nun 
einen Switcher vorsetzt, zB einen TPS62202, der verbraucht im Shutdown 
0.1uA, und im Betrieb 12uA, so kann der effizient von 2.5 bis 6V am 
Eingang die paar 100uA erzeugen.

von Oliver V. (busoni)


Lesenswert?

Das klingt vielversprechend. Würde nicht sogar einfach der MCP111T 
reichen? Hab das Datenblatt nur überflogen, aber er scheint ja alles zu 
kappen, was unter dem Limit ist. Das stünde dann dem Kondensator zur 
Verfügung. Wenn der genug geladen hat, würde der MCP111T wieder 
aufmachen und der PIC könnte starten. Weil der MCP111T nicht sofort 
wieder sperrt, würde (hoffentlich) die Zeit reichen den Pic schlafen zu 
legen, sodass der Kondensator mehr zur Verfügung hat als verbraucht wird 
und der MCP111T offen bleibt.

von 6632 (Gast)


Lesenswert?

Der MCP111T am PIC genuegt nicht, da der PIC im Reset zuviel zieht. Aber 
dieser MCP111T am Switcher waere was. Dann koennte sich der Kondensator 
tatsaechlich laden.

von Oliver V. (busoni)


Lesenswert?

Ich hatte es so verstanden, dass der MCP111T bei zu niedriger Spannung 
dem PIC einfach keinen Strom mehr gibt, der also auch nichts verbrauchen 
kann. Man muss ja den Output nicht an /MCLR anschließen, sondern kann 
auch direkt Vdd nehmen, oder?

von 6632 (Gast)


Lesenswert?

Der 111er ist Open Drain, der ist unpassend. Aber der 112er koennte das 
denk ich.

von Oliver V. (busoni)


Lesenswert?

cool. ich glaub das isses.

vielen dank nochmal allerseits, der support hier ist echt fantastisch.

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.