- Ein 17-Stunden Countdown-Timer mit RS232-Schnittstelle -
Wozu eine elektronische „Remembrall" ?
Im Alltag gibt es immer wieder Situationen in welchen man sich eine „Remembrall" aus den Harry-Potter-Geschichten wünscht [1]. Dort ist die Remembrall eine murmelgroße Glaskugel, die scheinbar mit weißem Rauch gefüllt ist. Wenn man die Hand fest um die Kugel schließt, so signalisiert sie durch Rotfärbung, dass man irgendetwas vergessen hat.
Gelegenheiten für den Einsatz einer solchen Zauberkugel gibt es viele, z. B.:
1)
Man klebt etwas im Bastelkeller und möchte im Wohnzimmer daran erinnert
werden, wenn der Klebstoff ausgehärtet ist. Dies ist typischerweise
nach 1- 3 Stunden der Fall.
2) Man lädt Akkus auf und man möchte ein
Signal haben, wenn die Ladezeit abgelaufen ist. Hierfür kommen Zeiten
von ca. 1 bis 16 Stunden in Betracht.
3) Die Hausfrau startet
Waschmaschine oder Wäschetrockner im Waschkeller. Sie wünscht sich in
der Küche einen Alarm, wenn die Wäsche sauber bzw. trocken ist. Die
Laufzeit beträgt hier eine halbe bis eine Stunde.
Daneben gibt es natürlich noch die verschiedensten weiteren Anwendungen in allen Lebensbereichen.
Den
obengenannten Aufgaben ist gemeinsam, dass sie alle durch einen
Langzeittimer gelöst werden können. Die in Betracht kommenden Zeiträume
liegen im Bereich von ca. 30 Minuten bis etwa 16 Stunden. Auf hohe
Präzision kommt es nicht an, eine Genauigkeit von ca. 10 Minuten ist
vollkommen ausreichend.
Ein Timer mit einer maximalen
Laufzeit von 16 Stunden kann natürlich nicht so einfach mit klassischer
Analog-Elektronik realisiert werden. Ein entsprechendes RC-Glied würde
vollkommen unpraktikable Widerstands- und Kondensatorwerte erfordern.
Hier hilft die Digitaltechnik weiter. Durch Einsatz eines kleinen
Mirocontrollers, wie etwa dem ATtiny13 ist ein Langzeittimer einfach und
elegant realisierbar. Als Anzeigeelemente kann man LEDs einsetzen. Die
Frage ist nur, wie stellt man die gewünschte Zeit ein? Hier kann man auf
die Analogtechnik zurückgreifen und ein Poti verwenden, das mit dem
internen AD-Wandler des Tiny13 ausgelesen wird.
Aufbau der Hardware
Der Aufbau der Remembrall kann auf einer kleinen Labor-Steckplatine (sog. „Breadboard"), erfolgen. Dann sind, wenn überhaupt, nur wenige Lötarbeiten erforderlich. Wenn man das Gerät längere Zeit praktisch einsetzen will, so sollten die Bauteile sorgfältig eingesteckt werden, sodass sie dauerhaft guten Kontakt haben. Die Erfahrung zeigt, dass gewissenhaft aufgebaute Breadboard-Schaltungen durchaus über Wochen oder Monate hinweg problemlos arbeiten.
Durch den Einsatz eines Microcontrollers werden nur wenige Bauteile benötigt, die Stückliste ist entsprechend kurz:
1) 1 x ATTiny13
2) 2 x 1 kOhm
3) 1 x 150 Ohm
4) 1 x 100 Ohm
5) 1 x Potentiometer 10 kOhm
6) 1 x Taster
7) 1 x Schalter
8) 1 x LED rot 10 mm
9) 1 x LED grün 5 mm
10) 1 x Stecker für RS232-Schnittstelle
Die nachfolgende Abbildung zeigt das Schaltbild:
Die gesamte Schaltung kann problemlos auf einem kleinen Breadboard untergebracht werden.
Der Starttaster liegt zwischen Pin 2 des ATtiny und GND, (s. Schaltbild) und ist im Aufbauphoto aus Platzgründen nicht markiert.
Funktionsweise
Die Remembrall weist fünf Bedienungs- bzw. Anzeigeelement auf:
1) Das Potentiometer für die Einstellung des Zeitintervalls
2) Einen Start-Taster
3) Eine grüne LED als Aktiv-Anzeige
4) Eine große rote LED als Alarm-Indikator
5) Einen Ein/Aus-Schalter
Zunächst ein paar Überlegungen zur Zeiteinstellung mit dem Potentiometer: Der interne ADC des ATtiny13 hat eine Auflösung von 10 Bit. Das heißt, es ist möglich 1024 Spannungsschritte einzustellen. Damit kann man beispielsweise das maximale Zeitintervall auf 1024*60 Sekunden = 61440 Sekunden = 17 Stunden und 4 Minuten legen. Wird ein einfaches Poti mit 270°-Einstellbereich verwendet, so ergibt sich damit ein Drehwinkel von ca. 15° pro Stunde. Verwendet man anstelle eines einfachen Potentiometers ein sogenanntes „Helipot" so erreicht man eine sehr gute Zeitauflösung und Reproduzierbarkeit. Diese Helipots bestehen nämlich intern aus sehr präzisem Widerstandsdraht der zu einer Spirale („Helix") aufgewickelt ist. Dadurch ist es möglich sogenannte 10-Gang-Wendelpotis zu bauen, d. h. die Achse dieses Potis kann bis zu zehnmal um 360° gedreht werden. Damit lässt sich eine sehr gute Auflösung von bis zu einer Minute erreichen.
Allerdings haben diese Bauteile ihren
Preis. Falls man also nicht gerade ein solches Helipot schon zur
Verfügung hat, wird man meist ein normales Poti verwenden.Gestartet wird
der Timer durch einen einfachen Tastschalter an Port PB3. Anstelle des 1
kOhm Widerstandes könnte natürlich auch der interne Pull-Up verwendet
werden.Nach dem Start des Timers blitzt eine grüne LED in einem
Zeitabstand von 10 Sekunden als Aktiv-Anzeige auf. Nach Ablauf des
eingestellten Zeitintervalls beginnt eine rote „Jumbo"-LED (10 mm) zu
blinken. Diese LEDs weisen eine Lichtstärke von über 5000 mcd auf und
sind damit auch bei hellem Tageslicht nicht zu übersehen.
Versorgt wird die Schaltung mit 3,8 bis 5 V. Akkubetrieb ist damit leicht möglich. Bei der hier vorgestellten Version kam ein Flach-Akku mit ca. 850 mAh zum Einsatz. Durch das sehr geringe Taktverhältnis eines 100-ms-Blitzes alle 10 Sekunden ist die durchschnittliche Stromaufnahme der Schaltung sehr gering. Mit einer Akku-Ladung kann die Schaltung mindestens 10-mal bei maximalem Zeitintervall eingesetzt werden. Der Flach-Akku wird unterhalb des Breadboards montiert. Vier Gummifüße sorgen für guten Stand
ACHTUNG: In der Testphase einer Schaltung niemals Akkus verwenden! Hohe Kurzschluss-Ströme stellen eine erhebliche Gefahr da. Wer keine Erfahrung im Umgang mit Akkus hat darf die Schaltung nur mit Batterien (z. B. 3 x 1,5 V) betreiben.
Die serielle Schnittstelle
Als besonderes Gimmick weist die Schaltung noch eine serielle Schnittstelle auf. Das hat zwei Vorteile:
1) Die Startzeit kann minutengenau eingestellt werden
2) Die Restlaufzeit ist jederzeit auslesbar.
Durch die Verwendung eines Mikrocontrollers ist diese PC-Anbindung sehr einfach. Ein freier Pin (hier PB1) genügt, um Daten seriell an den Rechner zu senden. Lediglich ein 1 kOhm-Widerstand zur Entkopplung der Schaltung vom Rechner ist erforderlich. Wenn man also die Startzeit sehr genau einstellen will, oder öfters die Restlaufzeit ablesen möchte, schließt man einfach einen Laptop oder PC an die Remembrall an. Für den Normalbetrieb als Langzeittimer ist der Rechner natürlich nicht unbedingt erforderlich.
Software
Den einfachen Aufbau der Hardware erkauft man sich durch die Notwendigkeit, die zugehörige Software zu erstellen.
Für einfachere Projekte wie dieses, ist BASCOM sehr gut geeignet. Eine komplette serielle Schnittstelle kann damit softwaretechnisch mit wenigen Befehlen realisiert werden. Auch der Rest des Programms kann in relativ kurzer Zeit erstellt und getestet werden.
Das Programm besteht aus drei Komponenten:
1) Initialisierung
2) Einstellen des gewünschten Zeitintervalls
3) Zählschleife als Countdown
Die Initialisierung weist keine Besonderheiten auf und muss daher nicht näher beschrieben werden. Nach dem Einschalten wird die rote LED kontinuierlich als Einschaltkontrolle aktiviert. Für das Einstellen des Zeitintervalls wird die Spannung am Poti mittel eines ADC (PB4) erfasst und entsprechend umgerechnet. Auf die Umrechnung wurde bereits weiter oben eingegangen. Dabei wird die aktuelle eingestellte Zeit laufend in Stunden und Minuten auf die RS 232 Schnittstelle ausgegeben. Anschließend wird der Timer durch den Taster gestartet (Low-Signal an PB3). Dabei ist zu beachten, dass der Taster solange gedrückt wird (maximal sind 100 ms erforderlich), bis die rote LED erlischt und die Grüne erstmals kurz aufblitzt.
Während der Aktivphase des Timers werden fortlaufend zwei Schleifen abgearbeitet. Die innere Schleife sorgt für das Aufblitzen der grünen LED alle 10 Sekunden und die Ausgabe der Restlaufzeit auf die serielle Schnittstelle. Die äußere Schleife reduziert die Zähler-Variable in Schritten von 10 Sekunden auf Null. Da die Genauigkeitsanforderungen gering sind und ohnehin nur der interne Oszillator eingesetzt wird, kann man mit dem waitms-Befehl arbeiten und auf den Einsatz von HW-Timern verzichten.
Die Ausgabe auf dem Terminal sieht folgendermaßen aus:
Die vollständige Software mit Hex-File und Bascom-Source ist im angehängten ZIP-Archiv zu finden.
Download: Remembrall_Firmware_Package.zip