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?
@ 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
Ist denn /MCLR low = ausgeschaltet? Ich dachte eigentlich, der wird nur intern zurückgesetzt.
> 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.
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ß
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.
@ 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
> 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.
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?
@ 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
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.
@ 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
Was spricht dagegen, die Idee, dass der PIC im Reset ausgeschaltet sei fallenzulassen ? Weshalb nicht wie alle Leute einen Sllepstate verwenden ?
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.
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.
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.
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.
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.
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?
Der 111er ist Open Drain, der ist unpassend. Aber der 112er koennte das denk ich.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.