Fatburn-Timer            

von Ralf Beesner
Elektronik-Labor    Projekte    AVR 





Überblick

Viele Leser werden die alte Faustregel kennen: wenn man(n) - aufrecht stehend - den Kopf senkt (ohne sich vorzubeugen) und dann seine Füße nicht mehr sieht, wird es eigentlich Zeit, etwas zu unternehmen ;-)

Vor einigen Monaten blieb ich beim "Zappen" in der populärwissenschaftlichen ZDF-neo-Sendung "Die Wahrheit über Fett" hängen.

In der Sendung ging es nicht nur um die (vermeintliche) Schädlichkeit des Fettkonsums (Kernaussage: nicht alle Fette sind schädlich, die ungesättigten Fettsäuren sind sogar notwendig und für die Gesundheit förderlich, aber auch gesättigte aus Milchprodukten werden neuerdings rehabilitiert), sondern um die Energiebilanz des Körpers. Führt man dauerhaft etwas mehr an Energie zu als man verbraucht, nimmt man halt langsam zu.

Wenn man sich zu wenig bewegt, speichert der Körper die Überschuss-Energie im Fettgewebe und schreit nach Ende des Verdauungsprozesses sofort wieder "Hunger", statt die Fettreserven abzurufen. Die werden leider erst bei starker körperlicher Belastung angegangen, und parallel zur einsetzenden Fettverbrennung bleibt dann auch das Hungergefühl aus, so dass sich die Energiebilanz auf zwei Wegen verbessert.

So weit ist das ja alles bekannt, aber in oben genannten Sendung wurde dargestellt und auch über Messungen an Versuchspersonen belegt, dass sich die Fettverbrennung besonders nachhaltig "ankurbeln" lässt und sogar bis zu 24 Stunden nach dem Training weiterläuft, wenn man nach folgendem Schema trainiert:

- zwei Minuten äußerste Anstrengung
- eine Minute Ausruhen bzw. geringe Belastung
- das ganze sechs mal wiederholen, so dass man auf 21 Minuten Trainingszeit kommt


Das klingt etwas nach "Spökenkiekerei", wie man auf Plattdeutsch sagt, aber hey - würde uns die altehrwürdige Tante BBC belügen (die Sendung wurde ursprünglich für die BBC produziert und deutsch synchronisiert)?

Ob ich das tatsächlich mal ausprobieren werde, weiß ich noch nicht so recht, aber auf alle Fälle schrie der komplizierte Ablauf danach, in eine ATtiny13-Timerschaltung gegossen zu werden. Und da man neben der akustischen Signalisierung mit einem Piezoschwinger auch zwei Taster und zwei LEDs gut gebrauchen kann, ist das Projekt ideal für den Sparrow.


Hardware

Man kann einen Sparrow plus Piezoschwinger und Batterie einsetzen (eine 3,3V-Knopfzelle CR 2032 sollte etliche Stunden halten) oder die kleine Schaltung komplett auf einer Streifenleiter-Lochrasterplatine aufbauen. Da die Software den Controller in Powerdown schickt und er über Pin Change Interrupts geweckt wird, verbraucht die Schaltung nur einige µA Ruhestrom und kann ohne Ein-Ausschalter an der Batterie verbleiben. Beim Sparrow darf man nur den eigentlichen Controller mit Strom versorgen; die Plusleitung für die Programmierschaltung darf nicht angeschlossen werden. Der Piezoschwinger hängt an PB4 (oben nicht eingezeichnet).

Nicht ganz einfach dürfte es sein, die Schaltung so an der Kleidung anzubringen, dass man die LEDs sieht und das Piezo-Signal hört.


Software

Die Software ist aus dem Sparrow-Kurzzeit-Timer entstanden.

Um versehentliches Einschalten des Timers zu verhindern, müssen zum Einschalten beide Taster gedrückt werden. Der Taster an PB2 weckt den Controller per Pin Change Interrupt, und als erstes schaut dieser nach, ob der Taster an PB0 auf "Low" liegt (man muss also den Taster an PB0 kurz vor dem Taster an PB2 drücken). Wenn nicht, fällt der Mikrocontroller sofort wieder in den Tiefschlaf.

Bei Erfolg ertönt ein kurzer Piepton und Timer0 wird gestartet. Er ist so konfiguriert, dass er 20 Interrupts pro Sekunde auslöst. Bei einem der zwanzig Interrupts wird eine der LEDs kurz eingeschaltet, so dass sie im Sekundentakt nur kurz aufblitzt (so wird Strom gespart). Der Trainingszyklus (Anstrengungs- oder Ruhephase) wird durch Blinken in unterschiedlichen Farben signalisiert.

Nach jeweils einer Minute ertönt ein kurzer Trillerton, nach zwei Minuten zwei Trillertöne (Beginn der Ruhephase), nach drei Minuten drei Trillertöne (Beginn der neuen Anstrengungsphase). Sind sieben Drei-Minuten-Zyklen um, ertönt ein langer tiefer Ton und die Schaltung geht in Powerdown.

Man kann den Timer auch zwischendurch mit einem langen Druck (über 2 Sekunden) auf den Taster an PB0 ausschalten.

Der RC-Taktoszillator des ATtiny ist für diese Anwendung ausreichend genau, meiner war auf 21 Minuten 16 Sekunden zu langsam (1,2 %).

Beim Sparrow signalisiert die linke (rote) LED die Anstrengungsphasen, die rechte (grüne) die Ruhephasen. Die Start-Stop-Taste ist links, die Aufwecktaste rechts.


Download des Bascom-Quelltextes:  0117-fatburn-timer.zip


' FatBurn-Timer
' Eine nachhaltige Fettverbrennung auch Stunden nach dem Training 
' soll folgender Trainingsablauf bewirken:
' - sich 2 Minuten lang "verausgaben"
' - 1 Minute Erholung
' das ganze 6 mal wiederholen; Gesamtdauer also 21 Minuten
'
' Die Schaltung wird durch Druck auf die beiden Taster aufgeweckt, 
' erst Taster 2 druecken, dann zusaetzlich Taster 1
' Trainingsphase wird durch blinken von LED2 (rot) angezeigt 
' Ruhephase durch blinken von LED1 (grün)
' Nach 1 Minute erfolgt 1 Signalton, nach 2 Minuten 2 Signaltoene (Beginn Ruhephase),
' Nach 3 Minuten 3 Signaltoene  (Ende Ruhephase)
' nach 7 Zyklen langer Ton
' vorzeitiges Beenden durch Druecken von Taster1 > 2 Sekunden

' Compiler Bascom 2.0.7.5 DEMO
'----------------------------------------------------------

$Regfile = "attiny13.dat"
$Crystal = 1200000

$Hwstack = 32
$Swstack = 8
$Framesize = 8

' Sicherstellen, dass Controller-Takt 1,2 MHz betraegt
Clkpr = 128                                                 ' Aenderung Clockteiler vorbereiten
Clkpr = 3                                                   ' 9600000 / 8
Clkpr = 3


'Variablen

Dim Ti As Byte
Dim Sekunde As Byte
Dim Minute As Byte
Dim Cntr As Byte
Dim N As Byte


Buzzer Alias Portb.4 Led1 Alias Portb.1 ' gruen, rechts Led2 Alias Portb.3 ' rot, links Taster1 Alias Pinb.0 ' links Taster2 Alias Pinb.2 ' rechts ' Konstanten Const Dit1 = 60 ' Laengen Sounds Const Dit2 = 30 Const Dit3 = 600 Const Tonhoehe1 = 120 Const Tonhoehe2 = 160 Const Tonhoehe3 = 320 ' Register Didr0 = &B00011010 ' digitale Inputs abschalten (spart Strom, da anstelle Pullups high) Portb = &B00000101 ' Pullups fuer die beiden Taster Ddrb = &B00011010
Acsr.7 = 1 ' Analog-Komparator ausschalten, spart etwas Strom Pcmsk.2 = 1 ' Pin Change Interrupt PB2 auswählen Sreg.7 = 1 ' Global Interrupt Enable Gimsk.5 = 1 ' Pin Change Interrupt Enable Config Timer0 = Timer , Prescale = 256 ' Ergibt 20 Überläufe pro Sekunde, wenn der Tomer nicht bei 0, sondern ' bei 22 startet On Timer0 Ontimer0 'Interrupt-Routine '---------------------------------------------------------- Do Gimsk.5 = 0 If Taster1 = 0 Then Ti = 0 : Sekunde = 0: Minute = 0 : Cntr = 0 Enable Timer0
Start Timer0
Sound Buzzer , Dit1 , Tonhoehe1

Do 'Hauptschleife If Ti > 18 Then ' Sekunde um Ti = 0 Incr Sekunde
End If If Sekunde > 59 Then Sekunde = 0 Incr Minute
For N = 1 To Minute
Gosub Snd1
Waitms 200 Next If Minute > 2 Then Minute = 0 Incr Cntr
End If If Cntr > 6 Then Gosub Snd2
Goto Schlafen
End If End If If Taster1 = 0 Then Wait 2 If Taster1 = 0 Then Gosub Snd2
Goto Schlafen
End If End If Idle Loop End If Schlafen: Led1 = 0 : Led2 = 0 Stop Timer0
Gimsk.5 = 1 Powerdown Loop Snd1: Sound Buzzer , Dit1 , Tonhoehe1
Sound Buzzer , Dit2 , Tonhoehe2
Return Snd2: Sound Buzzer , Dit3 , Tonhoehe3
Return '---------------------------------------------------------- Ontimer0: 'Timer0-Overflow-Interrupt-Routine Tcnt0 = 22 ' Preset auf 22, damit er 234 Takte bis Ueberlauf zählt Incr Ti
If Ti = 1 Then If Minute = 2 Then Led1 = 1 Else Led2 = 1 End If Else Led1 = 0 Led2 = 0 End If Return

Elektronik-Labor   Projekte   AVR