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