Elektronische Spardose mit der Ping-Pong-Platine

von Michael Gaus

Elektronik-Labor  Labortagebuch  ELO  Mikrocontroller


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


Elektronik-Labor  Labortagebuch  ELO  Mikrocontroller