Moin,
ich versuche einen Tiny84 möglichst tief schlafen zu legen, irreversibel
bis zum nächsten Start (das ist so gewollt).
1
#include <avr/sleep.h>
2
...
3
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
4
sleep_enable();
5
sleep_bod_disable();
6
while(1) sleep_cpu();
Wenn ich das so mache, dann verbraucht der MC immer noch knapp 5mA, was
viel zu viel sein dürfte.
Irgendwie schein da etwas nicht richtig zu funktionieren? Was mache ich
falsch?
svensson schrieb:> Wenn ich das so mache, dann verbraucht der MC immer noch knapp 5mA, was> viel zu viel sein dürfte.
Was für einen Spannungsregler verwendest du? Ein Spannungsregler hat
nämlich auch einen minimalen Ruhestrom (Quiescent current). Wenn man
sich den MCP1703 anguckt hat der nur 2 µA während ein LM1117 z.B. 5mA
hat.
svensson schrieb:> dann verbraucht der MC immer noch knapp 5mA, was> viel zu viel sein dürfte.
Ja!
Sehe ich auch so.
svensson schrieb:> Was mache ich falsch?
Da sind noch irgendwelche Interrupts aktiv und feuern dauernd.
?!?
einen L7805.
Okay, das war es wohl. Wenn ich jedoch den MC aus der Fassung nehme,
dann hat der Rest der Schaltung einen Verbrauch von 4,63mA. Die 370µA
entfallen dann wohl auf den Tiny.
svensson schrieb:> einen L7805.>> Okay, das war es wohl. Wenn ich jedoch den MC aus der Fassung nehme,> dann hat der Rest der Schaltung einen Verbrauch von 4,63mA. Die 370µA> entfallen dann wohl auf den Tiny.
Dann schläft der aber nicht, das braucht der wenn er aktiv ist.
svensson schrieb:> Evtl. geht da auch etwas durch den 10k Pullup von Reset auf +5V ?
Nein, da fließt außer einem minimalen Leckstrom nichts. Reset ist ja ein
Input. Da fließt nur Strom wenn du den Reset auf GND ziehst
Das ist die gleiche Schaltung, in der es mir den Tantalelko zerrissen
hat.
Habe noch einmal gemessen:
MC aktiv ca. 11mA (LED an).
MC im sleep_mode 4,998mA.
MC entfernt 4,634mA.
Dann schläft er aber nicht richtig!
Was braucht er denn in Aktiv wenn du die LED mal rausnimmst?
Wobei ich jetzt mal nicht Fragen wie welches Level haben die nicht
verbunden Pins, warum kein Tiny 13/25/45/85, warum trotz Linearregler
versuchen mit der Software Energie zu sparen, etc. stelle.
Wenn du wirklich Strom sparen willst solltest du bei allen nicht
beschalteten pins den pullup aktivieren (nicht floaten lassen). Den adc
auch deaktivieren wenn nicht schon getan. Und natürlich einen anderen
Spannungsregler verwenden
> Was braucht er denn in Aktiv wenn du die LED mal rausnimmst?
8,2mA.
> welches Level haben die nicht verbunden Pins
frei in der Luft schwebend...
> warum kein Tiny 13/25/45/85
Dafür gibt es in der Tat keinen wirklichen Grund, außer daß ich den
Tiny84 einmal ausprobieren wollte.
> warum trotz Linearregler versuchen mit der Software Energie zu sparen
Weil ich nicht vom Fach bin und diesen Typ halt kannte, der sich mit dem
TO-220 Gehäuse auch noch gut verlöten läßt.
Die Idee mit dem Sleepmodus kam mir erst später. In der Tat ist es für
diese Anwendung völlig egal, ob der noch 5mA verbraucht oder nicht. Ich
dachte jedoch, ich probiere es einmal mit dem power_down.
Ok, setz mal bei allen ungenutzten Pins die Pullups und mess dann
nochmal. Irgendwelche Pinchange/Int0 Interrupts hast du nicht aktiviert,
oder den Watchdog?
Falls es hilft: Vor ein paar Jahren experimentierte ich mit dem
Schlafbetrieb mit einem modifizierten nackten Pro-Mini ohne
Spannungsregler und Power-LED und einer eigenen Bord mit dem 1284P. Im
Schlafbetrieb bei 3.3V verbrauchten beide uC rund 300nA. Programmiert
war alles mit dem Arduino IDE.
> adc
Ist abgeschaltet.
> Irgendwelche Pinchange/Int0 Interrupts hast du nicht aktiviert, oder den
Watchdog?
Ich habe nichts aktiviert, aber vielleicht die IDE?
Alle PINs sind jetzt auf Input mit Pullup.
Ergebnis: 4,992mA
Also, gleiches Resultat wie vorher im Rahmen der Meßungenauigkeit.
Gerhard O. schrieb:> Vor ein paar Jahren experimentierte ich mit dem> Schlafbetrieb mit einem modifizierten nackten Pro-Mini ohne> Spannungsregler und Power-LED und einer eigenen Bord mit dem 1284P. Im> Schlafbetrieb bei 3.3V verbrauchten beide uC rund 300nA. Programmiert> war alles mit dem Arduino IDE.
Hast Du die 'Schlafroutine' für Arduino noch greifbar?
Ich bekomme beim ProMini 328@16MHz um 5µA bei laufendem Watchdog. Das
reicht mir locker hin, liegt unter der Selbstentaldung der speisenden
Akkus - dennoch würde mich interessieren, wie Du den Faktor 10 niedriger
hin bekommst.
Manfred schrieb:> Gerhard O. schrieb:>> Vor ein paar Jahren experimentierte ich mit dem>> Schlafbetrieb mit einem modifizierten nackten Pro-Mini ohne>> Spannungsregler und Power-LED und einer eigenen Bord mit dem 1284P. Im>> Schlafbetrieb bei 3.3V verbrauchten beide uC rund 300nA. Programmiert>> war alles mit dem Arduino IDE.>> Hast Du die 'Schlafroutine' für Arduino noch greifbar?>> Ich bekomme beim ProMini 328@16MHz um 5µA bei laufendem Watchdog. Das> reicht mir locker hin, liegt unter der Selbstentaldung der speisenden> Akkus - dennoch würde mich interessieren, wie Du den Faktor 10 niedriger> hin bekommst.
Werde mal nachschauen wenn ich den PC anhabe. Wenn der WD aktiviert ist,
dann brauchte der auch ein paar uA. Bei mir war der WD allerdings
abgeschaltet. Das macht natürlich den Unterschied aus.
Interessanterweise ist das auch noch von der Versorgungsspannung
abhängig.
Ab ca. 8V aufwärts pendelt sich der Verbrauch bei den 4,99mA ein.
Bei 5V liegt er nur noch bei 2,66mA.
svensson schrieb:> Ab ca. 8V aufwärts pendelt sich der Verbrauch bei den 4,99mA ein.> Bei 5V liegt er nur noch bei 2,66mA.
Elektronik erfordert, dass man logisch strukturiert an die Technik
herangeht.
Wenn ich den Strom eines µC wissen will, messe ich in dessen
Versorgungsleitung und nicht irgendwo in der Schaltung.
Gröber formuliert: Deine Beschreibungen sind unsinnig.
Das Datenblatt des ATtiny84 ist doch eindeutig:
"Power-Down Mode: 0.1 μA @ 1.8V".
Und das Diagramm unter 'Power-down Supply Current vs. VCC (Watchdog
Timer Disabled)' zeigt eine ziemlich flache Kurve bezüglich Vcc, bleibt
unter 0.15 uA bei Zimmertemperatur.
Gerhard O. schrieb:> Manfred schrieb:>> Ich bekomme beim ProMini 328@16MHz um 5µA bei laufendem Watchdog. Das>> reicht mir locker hin, liegt unter der Selbstentaldung der speisenden>> Akkus - dennoch würde mich interessieren, wie Du den Faktor 10 niedriger>> hin bekommst.>> Werde mal nachschauen wenn ich den PC anhabe. Wenn der WD aktiviert ist,> dann brauchte der auch ein paar uA. Bei mir war der WD allerdings> abgeschaltet. Das macht natürlich den Unterschied aus.
Der WD braucht irgendwo um die 5uA (3-7uA abhängig von Vcc), kommt also
sehr gut mit dem gemessen Wert hin.
Tim T. schrieb:> Ok, setz mal bei allen ungenutzten Pins die Pullups und mess dann> nochmal.
Ist nicht nötig, die Eingangsstufen werden im Powerdown abgeschaltet.
Allerdings ist der Analog-Komparator default aktiv und muß abgeschaltet
werden.
Peter D. schrieb:> Tim T. schrieb:>> Ok, setz mal bei allen ungenutzten Pins die Pullups und mess dann>> nochmal.>> Ist nicht nötig, die Eingangsstufen werden im Powerdown abgeschaltet.> Allerdings ist der Analog-Komparator default aktiv und muß abgeschaltet> werden.
Stimmt, im powerdown sind die Inputbuffer ja für alle Pins aus die nicht
zum aufwecken genutzt werden, aber sollte der Analog Komparator nicht
auch im Powerdown automatisch angeschaltet werden? Schon klar wenn man
ACBG setzt bleibt die Bandgap Ref im PD aktiv, aber das ist ja nicht der
Normalfall.
Tim T. schrieb:> aber sollte der Analog Komparator nicht> auch im Powerdown automatisch angeschaltet werden?
Stimmt, er wird abgeschaltet.
Nur das ACBG muß manuell abgeschaltet werden, falls benutzt.
> auf 4,798mA
Dann die Hardware nochmals genauer ins Auge fassen, bei meinem
ATtiny84A-PU (1127) kann ich die Stromaufnahme nicht mehr messen, liegt
also unter 0.02 uA.
Wieso versuchst du verbissen ein paar uA zu sparen wenn du immer noch
den Spannungsregler mit 5mA Eigenbedarf nimmst?
Oder miss zumindest den Strom hinter dem Spannungsregler, alleine schon
wegen der Messungenauigkeit in dem Bereich
Falls bedrahtete Bauteile bevorzugt, so kann man statt des eingangs
empfohlenen MCP1703 den MCP1702 nehmen (Anschlussreihenfolge beachten!),
vorausgesetzt, Vin bleibt unter 13 V; beide sind mit 2 uA spezifiziert.