Lowpower-Anwendungen mit dem Tiny13

von B. Kainka
 aus ELO 2008
Elektronik-Labor  Labortagebuch  ELO  Mikrocontroller

1

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.

 

;Timer0_4.asm,Timer-Interrupt

.include"tn13def.inc"
.defA=r16
.defB=r17

rjmpAnfang
.org0x0003
rjmpTIM0_OVF;Timer0Overflow
Anfang:
sbiddrb,3;DatenrichtungPB4
ldiA,5;StartmitVorteiler/1024
outTCCR0B,A
ldiA,2
outTIMSK0,A;TimerInterruptfreigeben
sei;GlobalerInterruptfrei
Schleife:
ldiB,8+16+32
outMCUCR,B
Sleep
rjmpSchleife


TIM0_OVF:;TimerInterrupt
comA
outportb,A
reti

 

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.

 

$regfile="attiny13.dat"
$crystal=1200000

ConfigTimer0=Timer,Prescale=1024
OnOvf0Tim0_isr
EnableTimer0
EnableInterrupts

Ddrb.3=1

Do
Idle
Loop

Tim0_isr:
Portb.3=1
Waitms1
Portb.3=0
Return

End

 

 

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.

 

$regfile="attiny13.dat"
$crystal=1200000
'WatchdogResetnachca.2s
ConfigWatchdog=2048
StartWatchdog
Ddrb.3=1
Portb.3=1
Waitms1
Portb.3=0
Powerdown
'ca.100µAincl.5-V-ReglerundBrownout-Detektor
'ca.5µAohneBrownout
End

 

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.