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