Meine Eieruhr

...das Mitbringsel für jemand, der schon alles hat.


Nachdem Eieruhr mit ATtiny2313 in Aktion: noch ein Viertelstündchen meine Billig-Eieruhr aus Fernost ihr Leben praktisch ungenutzt ausgehaucht hatte, ging es an den Bau meiner eigenen Eieruhr. Sie sollte mit Batterien oder Akkus betrieben werden können, nicht groß sein sowie einfach zu bedienen. Die fertige Eieruhr, zerlegt in Einzelteile

Basis der Eieruhr ist ein AA-Batterien-Halter, auf den mit Zweikomponenten-Kleber vier M3-Schrauben geklebt sind, welche die Platine halten. Die Platine ist so bemessen und angebracht, daß sie die Uhr beim Hinstellen möglichst gut stabilisiert und sie nicht nach hinten umkippt, denn die Akkus sind recht schwer.

Einen An/Aus-Schalter braucht die Eieruhr übrigens keinen. Im Standby zieht sie so wenig Strom – wenn ich meinem A-Meter trauen kann weniger als 150 nA – daß sie einfach keinen braucht. Nachdem sie abgelaufen ist und gefiept hat, legt sie sich schlafen und wird durch einen Tastendruck wieder aufgeweckt.


Bedienung


Die Zeit wird über die zwei kleinen blauen Taster eingestellt. Weil ich die Uhr wirklich zum Eierkochen brauche, ist es besonders leicht, sie auf 5 Minuten einzustellen.

Nach dem Einstellen läuft die Zeit ab. In der linken Zeile werden die Einer der Minuten angezeigt, in der rechten die Zehner. Auf dem Bild oben links dauert es also noch 15 Minuten, bis die Uhr Alarm schlägt.

Jederzeit kann man eine neue Zeit einstellen oder den Countdown abbrechen.

1 Minute mehr
Dazu drückt man den linken Taster, und die Minuten-Einer werden um Eins erhöht. Bei 9+1 laufen die Einer zu 0 über.
10 Minute mehr
Dazu drückt man den rechten Taster. Die Minuten-Zehner werden dadurch um Eins erhöht. Bei 5+1 laufen die Zehner zu 0 über.
Countdown abbrechen
Den rechten Taster lange (das ist: länger als ca. 1/2 Sekunde) drücken. Dann wird der Countdown abgebrochen, und die Uhr legt sich schlafen.
Genau 5 Minuten einstellen
Den linken Taster lange drücken.
Anzeige zwischen 'normal' und 'hell' umschalten
Die Zeit auf 59 Minuten einstellen und den linken Taster lange drücken.

Mit maximal zwei Tastendrucken kann man also schon folgende Zeiten einstellen: 1, 2, 5, 6, 10, 11, 15 und 20 Minuten.


Technisches: Die Funktionsweise


Zwei Taster, ein kleiner 100nF Keramik-Kondensator, ein Beeper mit Trimmpoti um die Lautstärke einzustellen, sowie 14 Leuchtdioden und 5 Vorwiderstände. Das war's. Schaltplan

Ok... Ein µ-Controller ist noch drauf und Akkus natürlich. Der Controller ist ein AVR ATtiny24V (vormals ein ATtiny2313). Die low-voltage-Version (ATtiny2313V), die bis 1.8 Volt hinunter arbeitet, hatte ich leider nicht auftreiben können und daher später ein Design für den ATtiny24V gemacht. Bis jetzt verrichet der verwendete ATtiny2313 seine Arbeit aber klaglos; immerhin wird er mit ca. 2.6 Volt gefüttert. Der Zeitraum, nach dem ich die Akkus wieder aufladen muss, sind so lange, daß ich beim Laden immer schon vergessen habe, wann ich sie das letzte mal auflud. Ne genaue Zeit wie lange die Akkus im normalen Betrieb halten kann ich daher nicht wiklich sagen.

Die LEDs sitzen in einer 3×5 Matrix. Sie sind super effizient. Lageplan mit ATtiny24V Daher können sie direkt – also ohne externe Treiber – betrieben werden. Angesteuert werden die Dioden über einen 3:1-Multiplex, wobei sie für 'normale' Helligkeit nur bei jedem dritten Zyklus bestromt werden, was damit einem 9:1 Multiplex entspricht.

Der kleine Piezo-Beeper wird mit einer Wechselspannung zum Fiepen gebracht. Dazu wird er zwischen zwei PWM-Ports geklemmt und diese Ports gegengleich bei 3.9 kHz betrieben, wenn er piepen soll. Über das Trimmpoti kann die Lautstärke auf ein angenehmes Niveau eingestellt werden.

Die beiden Taster brauchen keinerlei externe Komponenten. Sie hängen an den beiden INT-Ports, durch die der µ-Controller aus dem Tiefschlaf geweckt werden kann. Die Entprellung der Taster erfolgt am simpelsten per Software und ergibt sich automatisch: Die INT-Funktionalität dient nur zum Aufwecken des µC. Ist er wach, dann fragt er die Taster alle 10 Millisekunden ab. Durch diese langsame Abtastrate bekommt man die Entprellung frei Haus. Ausserdem hat man bei anderen Anwendungen, wo die Taster nicht zum Wake-Up dienen, die freie Port-Auswahl zum Anschluss der Taster und belegt nicht die wertvollen INT-Ports.

Links neben dem Controller ist eine Buchse zum Anschluss eines ISP-Adapters, mit dem neue Software auf den µC gespielt werden kann. Als Adapter verwende ich einen abgespeckten SI-Prog oder den USBasp und als Programmier-Software den avrdude (ist bei WinAVR anbei). Zum Programmieren muss das Poti R6 hochohmig gestellt werden, weil der Kondensator C2 sonst die Signale verschluckt.

Weil der ATtiny24V einen Port weniger hat als gebraucht, wird Port A6 doppelt verwendet, nämlich für die Beeper-PWM und als Anode für die LEDs. Bei aktiven LEDs gibt dies ein leises Geräusch im Beeper, das durch den parallel geschalteten C2 unterdrückt wird.


Einkaufsliste


AnzahlBauteilDistributorBestell-Nr.Bauteil-Id
1AVR ATtiny24VReicheltATTINY 24V-10 PUIC1
oder 1AVR ATtiny2313VSegorATtiny 2313V-10PUIC1
1BatterieclipRClip 9VTP1, TP2
1BatteriehalterRHalter 2xUM3-DK
2NiMh-Akku 2300mAhRNH HR3U-2300
14rote LEDs, high efficiencyRLED 3-3500 RTLED1-LED9, LED10-LED50
51.2kΩ Vorwiderstand 0204Conrad400262R1-R5
2TasterRTaster 9308S1, S2
1Piezo-BeeperREPM121SP1
110kΩ Trimm-PotiR75H 10KR6
2100nF Kondensator (Keramik-Vielschicht)RX7R-5 100nC1, C2
4Zylinderkopf M3×8 + 4 Sechskantmutter M3
oderSilikon, neutral vernetzend
Optional
1gelbe LED, high efficiencyRLED 3-1300 GELED1H
1ISP-BuchseRSPL 20ISP1
1Fassung für µCRGS 20PIC1


Anmerkungen zu der Liste

  • Die Platine kann mit neutralvernetzendem Silikon an den Halter geklebt werden. Dann braucht's auch keine Löcher auf der Platine, und die Befestigung wird deutlich stabiler. Die neuere Version mit ATtiny24 habe ich mit Silikon geklebt.
  • Die Größe der Platine passt man an die Größe des Batteriehalters an, damit die Uhr optimalen Stand hatund gut in der Hand liegt. Sie ist dann bequen mit einer Hand greif- und einstellbar.
  • Bei der ersten Uhr (Bild oben) hatte ich mit 2-Komponenten Minutenkleber Schrauben an den Batteriehalter geklebt und die Platine daran festgeschraubt. Auf dem Thermoplast des Batteriehalters ist die Klebekraft jedoch nicht sonderlich hoch, so daß eine Verklebung der Gesamtplatine mit Silikon besser ist.
  • Zur In-System-Programmierung des AVR verwende ich einen billig-Adapter; den abgespeckten SI-Prog mit Widerständen und Z-Dioden von Scott-Falk Hühn. Mit einem "guten" ISP-Adapter, der die Signale aktiv treibt, besteht Beschädgungsgefahr, weil dann Strom von den Ports über deren Clamp-Dioden zur Versorgung – also in die Akkus – fliesst. In diesem Fall kann man die drei Signalleitungen über Widerstände (zB 1kΩ−4.7kΩ) vom Progger entkoppeln. Zudem muss beim Proggen der ATtiny24V-Version das Poti R6 hochohmig sein, da ansonsten der Beeper und C2 ISP-Signale stören.
  • Seit neuestem habe ich mir einen USBasp nachgebaut, um meine AVRs direkt per USB flashen zu können; auch mit diesem Progger lässt sich die Uhr einwandfrei programmieren. Ich verwende jedoch keinen Wannenstecker als ISP-Adapter, weil mir diese zu viel Platz wegnehmen. Mein USBasp ist über Widerstände von der Zielschaltung entkoppelt.
  • Die Uhr ist nicht wasserdicht. Einem "Wasserschaden" kann aber durch sorgfältiges Trocknen begegnet werden.
  • Bei mir funktioniert auch ein ATtiny2313 (also keine low-voltage-Version) prima.
  • Die 15-te, gelbe LED wird nicht angesteuert und kann entfallen.


Ein paar Eckdaten


Maße über Alles (stehend, Breite × Höhe × Tiefe)3.2 cm × 6.5 cm × 3 cm
Stromaufnahme ('normal', alle LEDs an) 1.6 mA
Stromaufnahme (ATtiny2313, standby) 130 nA
Stromaufnahme (ATtiny24V, standby) 100 nA
CPU-Frequenz1 MHz
IRQ- und Multiplex-Rate5 kHz
Beeper-Frequenz3.9 kHz


Software


Eingehendere Dokumentation der einzelnen C-Module befinden sich jeweils in den Headern, teilweise in den C-Dateien. Dokumentation zu den make-Targets befinden sich im Makefile.

Compiler ist avr-gcc 3.4.6 zusammen mit binutils 2.16.1.

EiUhr.zip (130 kByte)

  • C-Quellen, Makefile
  • hex-Dateien (eiuhr-attiny2313.orig.hex, eiuhr-attiny24.orig.hex)
  • Handbuch (pdf, 17kb) und Quellen (LaTeX, png)
  • Eagle-Dateien (Schaltplan + Layout) für
    • Eieruhr mit ATtiny2313V oder ATtiny24V
    • Ein einseitiges Layout mit ATtiny2313V (EierUhr.sch/.brd)
    • Ein einseitiges Layout für einen ATtiny24V (EierUhr-v3c.sch/.brd). Die Beeper-Frequenz ist änderbar, momentan allerdings noch hartcodiert in eiuhr-attiny24.c.
    EAGLE gibt's zum Download bei www.cadsoft.de.
  • Projekt-Dateien für Programmers Notepad 2
  • Quellen sind noch nicht dokumentiert
  • Das .zip erzeugt beim Auspacken die Unterverzeichnisse
    • eieruhr/common (C, Makefile)
    • eieruhr/include (C)
    • eieruhr/EiUhr (C, Makefile, pn-Projekt, pdf)
    • eieruhr/eagle (eagle)

Die Defines BEEP_GROUPS und BEEPS_PER_GROUP geben zusammen an, wie oft nach Ablauf der Zeit gebeept wird. Die Anzahl der Beeps ist das Produkt der beiden Werte.

Die hex-Dateien sind im zip-Archiv dabei. Wenn man sie neu generieren will, dann (analog für ATtiny2313)

> make attiny24
# oder
> make MCU_TARGET=ATtiny24 hex


Ähnliche Projekte im Web