hallo,
ich möchter gerne meinen PIC18F schlafen legen um strom zu sparen. die
Sleep Funktion habe ich bereits entdeckt und ich bin auch der Meinung
das der Pic auch da rain läuft, allerdings messer ich immer noch einen
strom von 6,9mA, was deutlich zu hoch ist. Bevor der Pic in den Sleep
Modus geht, schalte ich in einer Funktion den Timer, Zähler, Serielle
Schnittstelle ab. Sonst sind an der Batteriespannung keine Verbraucher
angeschlossen, es muss also am Pic liegen.
Hat jemand eine idee und erfahrung mit sowas?
bastler schrieb:> ich bin auch der Meinung> das der Pic auch da rain läuft
Zeig uns bzw. den PIC Kennern doch mal Initialisierung und Aktivierung
des sleep mode, wie du sie verwendest!
muss man den sleep modus initialisieren?
also es handelt sich um einen Pic der zum einen über ein netzteil und
zum anderen über eine batterie versorgt werden kann, wenn kein netzteil
vorhanden ist. wird der pic über die batterie versorgt, dann soll er in
den sleepmodus wechseln und sonst nichts machen außer die RTC am laufen
zu halten, das wenn man das netzteil wieder einschaltet man die uhrzeit
nicht neu starten muss. dafür verwende ich die high/low voltage
detection, um eben zu erkennen wenn das netzteil ausfällt. netzteil hat
5V, batterie 3,6V.
wird nun die 3,6V erkannt, dann löst der low voltage detection interrupt
aus, was auch funktioniert, dabei wird dann eine Variable gesetzt. in
der while(1) Schleife befindet sich nun eine If abfrage bei der geschaut
wird ob diese Variable gesetzt ist. ist sie gesetzt dann geht das
Programm in die If bedingung hinein, wobei zunächst die beschriebenen
komponenten deativiert werden und anschließend die Sleep Funktion
aufgerufen wird.
if(fSleep)
{
PowerDown();
Sleep();
PowerUp();
}
Der Pic besitzt eigentlich nur Eingänge, dieser Muss nichts ausgeben und
deswegen hab ich auch keine ausgänge konfiguriert, außer eine Serielle
Schnittstelle. und ein I2C Bus ist auch noch vorhanden
Ich kenne mich ja mit PICs nicht aus, aber bei AVRs ist das so, dass
frei hängende Pins, als Eingänge ohne Pullup gesetzt, die
Eingangsbeschaltung unnötig viel Strom ziehen lassen. - Ich könnte mir
vorstellen, dass das bei PICs ähnlich ist.
> und ein I2C Bus ist auch noch vorhanden
I2C-Bus --> Pullup-Widerstände, die brauchen ziemlich viel (mit
weniger läuft aber u.U. der I2C-Bus nicht mehr sauber)
er wird geweckt wenn wieder der interrupt auslöst, dass die
versorgungsspannung wieder höher ist, also wenn das netzteil wieder
eingeschaltet ist.
so erster fehler entdeckt, jetzt verbraucht er im sleep modus nur noch
170µA. leider war es ein messfehler, hab ein strommessgerät in reihe
zwischen batterie und pic versorgung und hatte es auf einen bereich von
20mA und da werden mir dann 7,2mA angezeigt, wenn ich den messbereich am
messgerät kleiner mach, also auf 2000µA, dann werden mir die 170µA
angezeigt.
hab jetzte alle Ports als Ausgänge, Zähler und Timer deativiert, ADC
deaktiviert, Serielle Schnittstelle deaktiviert und die Pull up
deaktiviert. hab aber immer noch einen Stromverbrauch von 73µA, gibt es
noch weiterer Sparmaßnahmen?
> so erster fehler entdeckt, jetzt verbraucht er im sleep modus nur noch> 170µA. leider war es ein messfehler, hab ein strommessgerät in reihe> zwischen batterie und pic versorgung und hatte es auf einen bereich von> 20mA und da werden mir dann 7,2mA angezeigt, wenn ich den messbereich am> messgerät kleiner mach, also auf 2000µA, dann werden mir die 170µA> angezeigt.
Innenwiderstand Deines Messgerätes zu hoch -> zu hoher Spannungsabfall
http://www.eevblog.com/projects/ucurrent/http://www.youtube.com/watch?v=i069j6S80OU
Kann man auch leicht selber nachbauen.
bastler schrieb:> hab aber immer noch einen Stromverbrauch von 73µA, gibt es> noch weiterer Sparmaßnahmen?
Ich habe gerade mal nach einem Datenblatt geschaut und einen Blick rein
geworfen. Wie auch bei AVRs spart es eine Menge Strom, wenn man auf
Brown-out Erkennung verzichtet. Das hängt (zumindest beim PIC18FXX2)
wohl auch noch mit der Low-Voltage Erkennung zusammen.
also der PIC zieht immer noch 71µA. ist das noch normal oder was kann
ich noch machen?
also die 71µA verbraucht er im Sleep Mode, zumindest zeigt mir das mein
Multimeter an.
Philipp K. schrieb:> Ich kenne mich ja mit PICs nicht aus, aber bei AVRs ist das so, dass> frei hängende Pins, als Eingänge ohne Pullup gesetzt, die> Eingangsbeschaltung unnötig viel Strom ziehen lassen.
Sollte bei AVRs eigentlich nicht so sein, da unbenutzte Eingänge im
Sleep-Modus per Schalter vom Pin abgetrennt und auf GND gezogen werden.