Forum: Mikrocontroller und Digitale Elektronik ATTiny25 Power Down Stromverbrauch


von cgntuppes (Gast)


Lesenswert?

Hallo Gemeinde

Ich habe nen ATTiny 25 und versuche den Stromverbrauch im Power Down 
Modus zu messen.
Externe Beschaltung ist nur eine LED ohne R zwischen PB0 und PB1 die als 
Kapazität in Sperrichtung geladen wird.
Er wird über die Fuses auf 128KHz gesetzt.
Alles ist abgeschaltet.
ADC
AC
PRR
BOD
Vor dem Sleep Aufruf werden noch alle Ports auf Input gesetzt und den 
Wakeup über extint port change falling edge gesetzt.
Am PB1 hängt eine geladene Kapazität gegen PB0, die nach Entladung über 
die Interne, oder Eigenentladung den int auslöst.
Alles ist in Assembler programmiert.(Um Compilerfehler auszuschliessen)

Wenn ich nun den Stromverbrauch in diesem Zustand messe, fällt er wie zu 
erwarten auf ca. 0,4 uA oder weniger ab. Im weiteren Verlauf der 
Entladung steigt er jedoch kontinuierlich bis auf ca. 250-290 uA an.
Bis der nächste Zyklus von C laden und Sleep folgt.
Dann begint der Verlauf von vorne.

Meine Fragen nun:
Wieso steigt das Messergebniss kontinuierlich?
Hat jemand schonmal vor dem gleichen Phänomen gestanden?
Messe ich hier Mist?
(Habe auch schon eine parallel Last mit an die SV gehängt damit das 
Messgerät in einem mittleren Messbereich bleibt und keinen Mist 
anzeigt.)
Wo liegt hier das Problem?


cgntuppes

von Falk B. (falk)


Lesenswert?

@ cgntuppes (Gast)

>Externe Beschaltung ist nur eine LED ohne R zwischen PB0 und PB1 die als
>Kapazität in Sperrichtung geladen wird.

???

>Vor dem Sleep Aufruf werden noch alle Ports auf Input gesetzt und den

Und hoffentlich die Pull-Ups aktiviert.

>Wakeup über extint port change falling edge gesetzt.
>Am PB1 hängt eine geladene Kapazität gegen PB0, die nach Entladung über
>die Interne, oder Eigenentladung den int auslöst.

Ob das so eine gute Idee ist?

>Alles ist in Assembler programmiert.(Um Compilerfehler auszuschliessen)

;-)
Das ist das kleinste Problem.

>Entladung steigt er jedoch kontinuierlich bis auf ca. 250-290 uA an.

Wahrscheinlich arbeitet der Eingangspuffer im Linearbetrieb und zieht 
damit einenm grossen Querstrom. Kannnst du leicht prüfen. Nimm einen 
Poti, 10K oder so, klemm die ENden an GND/B´VCC und den Mittelabgriff an 
einen Eingang. Wenn du die EIngangsspannung an VCC/s annäherst, dann 
sollte ein nennenswerter Strom durch Vcc fliessen.

>Wo liegt hier das Problem?

Besorg dir ne richtige Echtzeituhr und lass dich von der wecken, siehe 
Sleep Mode.

MFG
Falk

von aha (Gast)


Lesenswert?

Alle ports als inputs ? Was soll das ? Wie Falk schon sagte arbeiten 
offenen Eingaenge im Linearbetrieb, gehen auf Mittenspannung und ziehen 
Strom. Mach alles Ausgaenge und gut ist.

von (prx) A. K. (prx)


Lesenswert?

Die Sache mit Input w/Pullup würde ich nochmal überdenken.

Aus der Darstellung der I/O-Beschaltung im Datasheet und dem 
entsprechenden Text ergibt sich nämlich, dass im Power-Down Modus die 
Pins via Transmission-Gate abgetrennt und intern aktiv auf low gezogen 
werden um Querströme in den Eingangsstufen zu vermeiden.

Zudem kann es leicht passieren, dass man mit ebendiesem Pullup die 
angeschlossenen stromlosen Komponenten über deren Schutzdioden mit Strom 
versorgt.

Ergo: Bei offenem Pin ist der Pullup sinnvoll. Wenn was dran hängt 
nicht.

von cgntuppes (Gast)


Lesenswert?

hallo zusammen

ok, ich werde mal testen wie es sich verhält wenn ich alle ports
(bis auf den einen an dem ich die entladung messe)
vor power down auf output low setze.

ist es nicht so, das die ports strom ziehen wenn sie als unbeschalteter 
eingang mit aktivierten pullups im power down sind ?

der hinweiß mit dem wecker erschliesst sich mir nicht.

bei meinem problem gehts einfach nur darum den futzemann so lange wie 
möglich, mit so wenig wie möglich stromverbrauch mit ner cr2032
 am laufen zu halten.
der wakeup über Watchdog INT verbraucht laut datenblatt ca. =>10 mal 
mehr strom.

cgntuppes

von (prx) A. K. (prx)


Lesenswert?

cgntuppes wrote:

> ist es nicht so, das die ports strom ziehen wenn sie als unbeschalteter
> eingang mit aktivierten pullups im power down sind ?

Unbeschaltet ist Input mit Pullup korrekt. Interessanter sind die 
beschalteten Pins.

von (prx) A. K. (prx)


Lesenswert?

Ich kapiere zwar nicht ganz, was das mit LED als Kondensator soll, denn 
eine solche Verwendung ist mir noch nicht unter gekommen, aber eines ist 
klar: Wenn die Spannung an einem eingeschalteten Pin sich in Richtung 
Vcc/2 bewegt, geht der Stromverbrauch hoch, weil dann ein signifikanter 
Querstrom im ersten CMOS-Gatter fliesst.

von cgntuppes (Gast)


Lesenswert?

@prx:
nun, sicherlich ist es eine ungewöhnliche sache eine led in sperrichtung 
als kapazität zu betreiben. aber der clou daran ist, das sich die 
entladungszeit mit dem maß des lichteinfalls verändert.
also viel licht = schnelle entladung. wenig licht = langsame entladung.
also die led als helligkeitssensor!
die anwendung selbst soll tagsüber "ruhig" bleiben und nur warten das es 
dunkel wird. wenn es dann dunkel ist, soll sie bei 
helligkeitsveränderungen (in richtung hell) blinken und wieder in den 
messzustand zurück gehen.
das funktioniert alles schon sehr gut.
es ist nur der zu hohe stromverbrauch der mir wie gesagt ein bisschen zu 
denken gibt woran es liegen mag.

sicherlich gibt es andere lösungen um dies zu realisieren.
hierbei steht/stand der sportliche geist der lösungsfindung im 
vordergrund.
und natürlich der gedanke des minimalistischen.

cgntuppes

von Falk B. (falk)


Lesenswert?

@cgntuppes (Gast)

>(bis auf den einen an dem ich die entladung messe)

Der ist aber dein Problem!

>ist es nicht so, das die ports strom ziehen wenn sie als unbeschalteter
>eingang mit aktivierten pullups im power down sind ?

Nöö, das passt schon.

>der hinweiß mit dem wecker erschliesst sich mir nicht.

Lies mal den Artikel! AVR im Power Down + externe RTC = 1,4uA

>der wakeup über Watchdog INT verbraucht laut datenblatt ca. =>10 mal
>mehr strom.

Dein Möchtegern Watchdog erst recht ;-)

MFG
Falk

von Peter Diener (Gast)


Lesenswert?

Hallo,

das Problem, dass CMOS-Eingänge Querstrom ziehen, wenn sie nicht auf 
High oder Low sind, ist bekannt und ja auch bereits erwähnt worden.

Abhilfe würde ein Schmitt-Trigger zwischen LED und MC-Pin schaffen, oder 
du nimmst einen Controller, der bereits Eingänge mit Schmitt-Trigger 
hat, z.B. einen MSP430. Ein MSP430F1111 sollte etwa vergleichbar zu 
deinem Tiny sein, den gibts beim Reichelt für unter 1 €.

Noch einfacher ist es aber, statt dem internen Oszillator ein RC-Glied 
als externen RC-Oszillator (ca. 10 kHz) zu verwenden, mit dem die 
Taktfrequenz so niedrig ist, dass dein Controller duchlaufen kann und 
dann baust du mit der LED eine Art Dual-Slope-AD, den du nur hin und 
wieder, z.B. alle 100ms kurz unter Spannung setzt, so dass nur in dieser 
kurzen Zeit ein Querstrom fließt.

Das sollte deutlich sparsamer sein und der Bauteilaufwand ist kaum 
größer.

Wofür ist das eigentlich? Hört sich nach einem Geocache-Projekt an...


Grüße,

Peter

von (prx) A. K. (prx)


Lesenswert?

Ein integrierter oder Logik-Schmitt-Trigger hilft da nicht. Der AVR hat 
auch einen. Der verhindert ja nicht, dass das Signal gemächlich den 
kritischen linearen Bereich durchläuft. Der sorgt nur für 
reproduzierbare Zustände.

Eher schon ein externer extrem sparsamer Komparator oder 
Operationsverstärker. Mit oder ohne Schmitt-Trigger.

von Peter D. (peda)


Lesenswert?

cgntuppes wrote:

> bei meinem problem gehts einfach nur darum den futzemann so lange wie
> möglich, mit so wenig wie möglich stromverbrauch mit ner cr2032
>  am laufen zu halten.
> der wakeup über Watchdog INT verbraucht laut datenblatt ca. =>10 mal
> mehr strom.

Das ist die völlig falsche Herangehensweise.

Ob irgendein Strom 10* mehr ist, interessiert nen Quark, sondern wichtig 
ist immer der Absolutwert.

Im Datenblatt sind 4µA angegeben für den Watchdog, ne CR2032 hat 230mAh, 
das ergibt etwa 6,5 Jahre, sollte wohl reichen.

So und nun kommt der Hammer!
Du hast ne LED ohne Vorwiderstand, also Kurzschlußbetrieb und die wird 
Dir ruckzuck die Batterie leersaugen.

Du siehst, Dein Kampf um das letzte µA ist völlig sinnlos.


Laß die Stromverschwendung mit den 290µA.
Nimm den Watchdog mit 4µA und nen Vorwiderstand für die LED und gut is.


Peter

von (prx) A. K. (prx)


Lesenswert?

Peter Dannegger wrote:

> Du hast ne LED ohne Vorwiderstand, also Kurzschlußbetrieb

Wie bei ihm in Sperrichtung betrieben sehe ich da kein Problem. Er 
verwendet die nicht um die Umwelt zu beleuchten, sondern als eine Art 
Photodiode.

von cgntuppes (Gast)


Lesenswert?

@peter diener

danke für deinen tip.
wie ich schon sagte gibt es sicherlich andere lösungen für diese 
aufgabe.

ja die gedanken dazu wurden aus einem geocache thread entnommen.
es nennt sich dort reaktives (nacht)licht.
ich fand die eigenschaft der helligkeitssensitiven LED entladung einfach 
genial und wollte es einfach mal selber entwickeln.
in diesem geoforum ist man später dann auch auf eine cmos variante mit 
LDR über gegangen. warum hab ich nicht genauer gelesen.
vielleicht wegen des energiebedarfs?

da die avr varianten da nicht in ASM vorliegen und ich C nicht lesen 
kann, weis ich nicht wie die jungs es da mit dem stromverbrauch geregelt 
haben, bzw wie sie den ablauf der gesamtproblematik gelöst haben.

bei meiner lösung hat die software 2 generell unterschiedliche 
arbeitsweisen.
zuerst wird ermittelt ob es tag oder nacht ist
der eine teil (tag) schaut alle 15 minuten ob es dunkel geworden ist und 
wenn nicht geht er danach in power down .das dann in verbindung mit der 
ledentladung als wakeup und herunterzählen eines counters. der counter 
wird zuvor an die aktuelle helligkeit (entladezeit) angepasst.
in dem nacht teil geht das mit dem ledwakeup nicht mehr, da zum einen 
die entladezeiten auf 30sek und mehr ansteigen, und das ding ja auch 
mehr oder weniger direkt reagieren soll. dort arbeite ich dann mit dem 
WD und ein paar wenigen taktzyklen für einen counter in 100ms 
schritten.da komme ich dann auf ca.5uA

es ist wie gesagt der reine sportliche ergeiz es so minimalistisch wie 
möglich zu lösen.
ansonsten ist die variante von falks vorschlag zusammen mit dem rtc 1,4 
uA ne echte energiesparalternative.

eine weitere möglichkeit bleibt noch zu testen:
die geladene LED gegen 2 ports im inputmodus und eingeschalteten pullups 
laufen zu lassen. die "minus" geladene seite würde dann auch den port 
kurz auf masse ziehen. vermutlich aber zu kurz um damit wirklich 
sinnvoll die zeit im power down zu nutzen.......

cgntuppes

von Peter Diener (Gast)


Lesenswert?

Hallo,

habs gerade gelesen, der Tiny hat auch einen Schmitt-Trigger, es steht 
in Punkt 10.2.5 aber auch ausdrücklich drin, dass der Stromverbrauch bei 
Vcc/2 ansteigt.

Der MSP430F1111 hat einen integrierten Analogkomparator, der auch per 
Interrupt für einen Wakeup sorgen kann. Damit würde man den Slope-AD 
auch aufbauen. Der benötigt aber auch relativ viel Strom, deswegen 
könnte man diesen auch nur zyklisch benutzen. Der MSP430 unterscheidet 
explizit zwischen Pins mit und ohne Schmitt-Trigger. Ein erhöhter 
Stromverbrauch der Schmitt-Trigger bei Vcc/2 am Input ist nicht explizit 
erwähnt, das sollte man ausprobieren.

Peter

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Peter Diener wrote:

> Der MSP430F1111 hat einen integrierten Analogkomparator, der auch per
> Interrupt für einen Wakeup sorgen kann.

Hat der AVR auch.  Hilft nur nicht viel, er hat ja das Problem, dass
er die Analogmimik als eine Art "Langzeitkonstante" benutzen will,
damit der Controller in der Zwischenzeit komplett schlafen gelegt
werden kann (= alle Oszillatoren aus).

Ich halte es hier mit Peter: die absolute Stromaufnahme mit laufendem
Watchdog-Oszillator ist gering genug, als dass sie am Ende nicht mehr
wesentlich die Batterielebensdauer verkürzt (auch eine Li-Zelle hat
ja eine Selbstentladung im gleichen Bereich).

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.