Wenn man Mikrocontroller-Anwendungen für Batteriebetrieb entwickelt, kommt es auf geringsten Stromverbrauch an. Der ATtiny13 ist an sich schon sehr sparsam und benötigt je nach Anwendung nur ca. 5 mA. Aber für besondere Anwendungen kann der Verbrauch noch stark reduziert werden.
Auf der Platine zum Lernpaket Mikrocontroller kann der Stromverbrauch leicht ermittelt werden, wenn man ein Milli- oder Mikroamperemeter parallel zu D1 anschließt und den Controller nur über RTS versorgt. Der Spannungsabfall am Messgerät liegt weit unter 0,5 V, sodass die Diode das Ergebnis nicht beeinflusst.
Power-Down-Mode in Assembler
Der Tiny13 sollte mit einem Goldcap-Kondensator mit 1 F betrieben werden. Dieser wurde in Reihe mit 100 Ohm an GND und VCC angeschlossen und konnte deshalb über die Schnittstelle geladen werden. Der Controller sollte dann überwiegend im Power-Down-Modus laufen und nur kurz aufgeweckt werden.
Der Befehl Sleep legt den Controller schlafen. Es läuft aber noch der Taktoszillator, der Timer und das Interrupt-System. Der Timer-Interrupt weckt den Controller daher immer wieder auf.
Ergebnis des
Versuchs: Der Mikrocontroller lief bis zu 35 Minuten lang mit der Ladung
aus dem Kondensator, bis die Spannung von 5 V auf 2,7 V gefallen war
und der Brownout-Detektor den Controller abschaltete. Mit C = 1 F,
Delta-U = 2,3 V und t = 2100 s lässt sich der mittlere Entladungsstrom
mit ca. 1,1 mA bestimmen. Laut Datenblatt kann im Sleep-Mdus mit einem
Strom von ca. 0,8 mA bei 5 V und 1,2 MHz gerechnet werden. Hier kommt
noch etwas durch den Spannungsregler und durch den eingeschalteten
Brownout-Detektor hinzu.
Idle-Modus in Bascom
Der Sleep-Modus wird in Bascom mit dem Befehl IDLE eingeschaltet. Das Assembler-Programm lässt sich also sehr leicht in Bascom umsetzen. In diesem Fall wird der Ausgang B.3 jeweils für eine Millisekunde eingeschaltet. Man kann z.B. eine LED mit Vorwiderstand anschließen. Es entsteht dann ein schwaches Blitzen mit der Frequenz des Timer-Interrups von ca. 4,6 Hz (1,2 MHz / 1024 / 256). Da die LED nur ca. 0,5 % der Betriebszeit eingeschaltet wird, bestimmt der Sleep-Modus im Wesentlichen den Strom.
Verwendung des Watchdogs in Bascom
Der Watchdog kann helfen noch mehr Strom zu sparen. Nun kann man nämlich mit POWERDOWN alles abschalten bis auf den Watchdog selbst. Im Power-Down-Modus und bei laufendem Watchdog braucht der Controller laut Datenblatt nur noch ca. 5 µA.
Diesmal wird nur ein sehr einfaches Hauptprogramm benötigt, aber keine Interruptprozedur. Der Controller arbeitet sein Programm bis zum Befehl POWERDOWN ab und wird dann abgeschaltet. Hier wird wieder für eine Millisekunde ein Port hochgeschaltet.
Im Powerdown-Modus arbeitet der Watchdog weiter. Er verwenden den sparsamen internen RC-Oszillator mit 125 kHz. Nach ca. zwei Sekunden sorgt er dafür, dass der Controller neu gestartet wird. Config Watchdog = 1024 würde entsprechend ein Intervall von einer Sekunde einstellen.
Quer über die Diode D1 konnte ein Strom von ca. 100 µA gemessen werden. Darin enthalten sind aber ca. 50 µA für den Spannungsregler und noch etwas für den eingeschalteten Brownout-Detektor. Der Controller allein würde mit ca. 5 µA auskommen. Mit einer Lithium-Zelle könnte er ca. drei Jahre lang arbeiten. Und ein 1-Farad-Speicherkondensator könnte theoretisch für fünf Tage reichen, wenn seine Selbstentladung genügend klein wäre.
Fuses
Weitere Versuche mit den Fuses brachten einen Verbrauch unter 2 µA. Wichtig ist nicht nur dass Brown-out Detection ausgeschaltet ist, sondern auch dass die Start-up Time auf Null gesetzt wird, damit der Controller möglichst kurz arbeitet. Zum Test wurde der Tiny13 mit einem Elko mit 1000 µF betrieben. Dieser wurde in 1000 s um 1,3 V entladen. Daraus ergibt sich ein mittlerer Strom von 1,3 µA.