Elektronische Spardose mit der Ping-Pong-Platine
von Michael Gaus
Wenn
man sich so anschaut, was das Ping-Pong-Spiel alles bietet, dann fällt
auf, dass es sich auch hervorragend zur Realisierung einer
elektronischen Spardose eignet: Der Münzschlitz mit elektronischem
Kontakt zum Einwurf der Münzen, Potis zum Auswählen des Werts der
eingeworfenen Münze, Display zur Anzeige der Münzauswahl und der
Gesamtsumme, On-Chip EEPROM auf dem ATmega8 zur nichtflüchtigen
Speicherung der Gesamtsumme der Münzen. Das ganze in einer Box mit
integriertem Münzfach, das Platz zur Aufnahme einiger Münzen bietet.
Bedienung der Spardose:
Zur
Bedienung sollte die Box um 90 Grad gedreht werden, sodass sich der
Münzschlitz unten rechts befindet (siehe auch Foto). Dadurch bietet das
LED-Display dann 10 Pixel waagrecht und 12 Pixel senkrecht, wodurch
sich 2 übereinanderliegende Textzeilen gut lesbar darstellen lassen.
Zusätzliche Hardware wird nicht benötigt.
Vor dem ersten
Power-On sollten am besten beide Potis in Mittelstellung gebracht
werden. Das Poti unterhalb des Displays links neben dem Münzschlitz
bezeichnen wir im folgenden als Poti1, das andere als Poti2. Der
ATmega8 befindet sich nun im Standbymodus, aus dem er per Watchdogtimer
alle 1 Sekunde durch einen Reset aufgeweckt wird und dann prüft, ob
sich Poti1 an einem der beiden Endanschläge befindet, und zwar an
demjenigen, der weiter entfernt von der letzten Poti1-Stellung ist.
Wenn das Poti1 im rechten Bereich steht muss es an den linken Anschlag
gedreht werden und umgekehrt. Wenn es im Mittelbereich steht, sind
beide Anschläge möglich. Wenn kein Endanschlag gewählt ist, dann geht
der Controller wieder in den Powerdown-Modus und prüft nach einer
Sekunde erneut. Wenn der richtige Endanschlag angewählt ist, dann wird
die aktuelle im EEPROM gespeicherte Münzsumme in Euro angezeigt, wobei
in der oberen Zeile der Euro-Anteil gefolgt von einem Punkt und in der
unteren Zeile der Cent-Anteil gefolgt vom €-Symbol dargestellt werden.
Um
eine Münze einzuwerfen und zu registrieren, muss zunächst mit Poti1 der
gewünschte Münzwert ausgewählt werden: 1 Cent, 2 Cent, 5 Cent, 10 Cent,
20 Cent, 50 Cent, 1 Euro oder 2 Euro. Anschließend wird die Münze
eingeworfen und durch Auslösung des Münzkontakts zur Summe
hinzugezählt. Die Summe wird dann für ca. 2 Sekunden angezeigt und
anschließend wieder die ausgewählte Münze. Innerhalb dieser 2 Sekunden
sollte die Münze komplett eingeworfen sein, sodass der Münzkontakt
wieder offen ist, ansonsten würde der Münzwert erneut erfasst und zur
Summe addiert. Dies lässt sich nun entsprechend der Anzahl der
einzuwerfenden Münzen wiederholen. Also immer zuerst den Münzwert
auswählen und dann durch Einwurf der Münze bestätigen. Um die Münzsumme
anzuzeigen, kann Poti1 jederzeit an den rechten oder linken Anschlag
gedreht werden.
Die Münzsumme kann auch gelöscht werden. Hierzu
muss zunächst die Summe angezeigt werden, indem Poti1 an den rechten
oder linken Anschlag gedreht wird. Dann muss das andere Poti2 an den
rechten oder linken Anschlag gedreht werden, sodass die Anzeige zu
blinken beginnt. Danach muss dann der andere Anschlag von Poti2
angewählt werden, sodass die Summe auf 0,00€ gesetzt und auch angezeigt
wird. Dann Poti2 wieder in Mittelstellung bringen und an Poti1 drehen,
sodass das Blinken stoppt.
Die Spardose hat eine
Auto-Poweroff-Funktion: nachdem ca. 10 Sekunden lang keine Münze
eingeworfen und keine Bereichsänderung an Poti1 registriert wurde, wird
die Anzeige abgeschaltet und der Powerdown-Modus aktiv. Alle 1 Sekunde
wird dann anhand von Poti1 erneut geprüft, ob sich die Spardose
wieder einschalten soll. Diese kurze Abfrage alle 1 Sekunde dauert
weniger als 500 Mikrosekunden, also ist die mittlere Stromaufnahme
bezogen auf 1 Sekunde nur ca. 0,05% der Stromaufnahme während dieser
Abfrage. Da die Anzeige während der Abfrage abgeschaltet ist, ist die
Stromaufnahme ca. 20mA, also entsprechen 0,05% ca. 10µA. Hinzu kommt
noch der wenige µA verbrauchende Standbymodus, aber im Mittel dürfte
die Stromaufnahme klein genug sein, um ohne Schalter für die
Versorgungsspannung auszukommen.
Quellcode:
Der Code
wurde mit dem C-Compiler CodeVisionAVR (Version 2.04.6 Evaluation)
erstellt. Diese Evaluation-Version kann für den privaten
nicht-kommerziellen Gebrauch kostenlos verwendet werden und ist auf
eine Codegröße von 3 kB beschränkt, was für diese Anwendung ausreicht.
Das komplette Projekt ist in der ZIP-Datei enthalten. Die erforderliche
Projektdatei, um die Software in CodeVisonAVR zu öffnen ist
spardose.prj, der eigentliche Quellcode ist in spardose.c enthalten.
Hinweise:
1) Der Watchdogtimer wird per Software gestartet. Das Fusebit für den Watchdog-Timer darf NICHT gesetzt werden.
2)
In den Projekteinstellungen in CodeVision unter
Project>Configure>C-Compiler darf das Häkchen bei "Clear Global
Variables at Program Startup" NICHT gesetzt sein. Grund: die Variable
cWakeup speichert vor dem Standbymodus, auf welchen Anschlag Poti1
gedreht werden muss für das Aufwachen. Da der Watchdog einen Reset
auslöst, würden bei gesetztem Häkchen alle globalen Variablen mit Null
vorbelegt werden und somit wäre der gespeicherte Wert von cWakeup
zerstört.
Quellen/Links:
C-Compiler CodeVision AVR: http://www.hpinfotech.ro/html/download.htm
Download: 1003Spardose.zip