EEU

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche
Die EEU

Ob Teekochen, Nudelnkochen oder sonst was. Für Eieruhren gibt es viele Verwendungszwecke. Die gibt es billig im Supermarkt, doch bei Mechanischen nervt das ticken und Digitale sind von der Bedienung her Schrott. Und was schickt sich für einen Elektroniker nicht besser als ein selbstgebautes, elektronisches Helferlein? Also rangeklotzt und die EEU die elektronische Eieruhr gebaut!

Beschreibung

Die Bedienung der EEU ist denkbar einfach. Drehimpulsgeber im Uhrzeigersinn drehen, dann geht die Uhr an und zählt die gedrehten Minuten hoch, entgegen dem Uhrzeigersinn drehen verringert die Minuten. Im Bereich oberhalb von zwanzig Minuten geht es in Zwei-Minuten-Schritten weiter. Die Haltbarkeit der Batterien liegt je nach Nutzung und Batterie zwischen ein bis drei Jahren. Ist die Batterie fast-leer zeigt die Anzeige immer kurz Lo an. Visuell ist die EEU ein "offenes Design" also ohne Gehäuse.

Die größte Herausforderung bildet das TQFP-32 Gehäuse für den Mikrocontroller mit 0,8mm Pin-Raster. Es sind deswegen gehobenere Kenntnisse im SMD-Löten gefragt. Das Layout eignet sich von den Eigenschaften sowohl zum selbst Ätzen als auch zum Bestellen beim Leiterplattenservice, daher ist die Schaltung einlagig.

Aufbauen

Als erstes die Löcher in die Platine bohren. Dabei sind alle Pins für 1mm-Bohrer ausgelegt. Die Löcher für Batteriehalter, Distanzbolzen, Klammen für Drehimpulsgeber und Batteriekabel einheitlich mit 3mm Durchmesser bohren.

Danach die SMD-Bauteile auflöten. Mit den Chip-Widerständen zur Übung anfangen und dann den TQFP anpacken. Anschließend alle Pins am TQFP mit Durchgangsprüfer auf Lötbrücken untersuchen. Den Drehimpulsgeber von den bedrahteten Bauteilen als letztes auflöten da der Schaft weitere Arbeiten erschwert. Bei den LED-Anzeige Lücken vermeiden, sowie darauf achten, dass die Kanten in einer Linie liegen. Alles Weitere sollte keiner Erklärung bedürfen.

Ach ja, die seltsame Erweiterungen bei den SMD-Pads am TQFP soll deren Stabilität verbessern oder wahlweise zum leichteren wegrupfen dienen.

Layout und Schaltplan

EEU 1.2HW Layout.png EEU 1.2HW Schaltplan.png
Layout (V1.2) Schaltplan (V1.2)

Siehe #Download für die Eagle-Dateien.

Batteriehalter montieren

Der Batteriehalter hat ein geschlossenes Gehäuse, damit bei Erschütterungen die Batterien nicht heraus fallen oder durch schmutzige Unterlage verdrecken. Zur Befestigung an der Platine erfolgt die Bohrungen zweier 3mm-Löcher mit einem Abstand von 30mm, waagrecht und senkrecht mittig zum Batteriegehäuse. Unbedingt den Anriss proben, ob das Gehäuse zwischen die Distanzbolzen passt. Innen werden die Bohrlöcher mit einem 5mm Bohrer angesenkt, so dass die M3-Senkkopfschrauben darin verschwinden und die Batterien rein passen. Mit jeweils einer Beilagscheibe und einer M3-Mutter wird die Schraube fixiert und anschließend mit einer weiteren Beilagscheibe dazwischen mit der Leiterplatte verbunden. Dabei dienen die Mutter und die Beilagscheiben auch als Distanzhalter, damit das Batteriegehäuse keine Pins zerdrückt.

Materialliste

(EEU: HW 1.3)

Part        Value                   Device       Package
Kondensatoren
C1          33n                     C-EUC1206    C1206
C2          22µ                     C-EUC1206    C1206
C3          100n                    C-EUC1206    C1206
Widerstände
R1,R2       100k                    R-EU_R1206   R1206
R3,R15,R16  0                       R-EU_R1206   R1206
R19,R20,R22 0                       R-EU_R1206   R1206
R4,R5,R6    300                     R-EU_R1206   R1206
R7,R8,R9    300                     R-EU_R1206   R1206
R10,R11     300                     R-EU_R1206   R1206
R12,R13     600                     R-EU_R1206   R1206
R13         1k2                     R-EU_R1206   R1206
R18         390k                    R-EU_R1206   R1206
R17         680k                    R-EU_R1206   R1206
Halbleiter
D1,D2       SC56-11 RT              7SEG-CK      7SEG-13
IC2         MEGA48-AI                MEGA8-AI     TQFP32-08
Q1,Q2,Q3    2N3904                  2N3904       TO92D
Q2          2N3904                  2N3904       TO92D
Q3          2N3904                  2N3904       TO92D
Diverses
DREH        EC12E07 + KNOPF 10-150B EC12E        EC12E
SG1         F/CM12P (CPM121)        F/CM12P      F/CM12P
SV1         SL 2X10G 2,54           MA03-2       MA03-2
X1          AKL-101-02              W237-102     W237-102
Desweiteren
  • Leiterplatte
  • Distanzbolzen und Schrauben
    • 10x M3-Beilagschieben
    • 8x M3-Muttern
    • 2x M3-Senkkopfschrauben 12mm
    • 4x M3-Distanzbolzen 25mm
  • Batteriehalter 3x Migon
  • Batterien 3x Mignon, Alkaline

Funktion

Taktgeber und Multiplexer

Damit ein Programm sauber arbeitet, müssen die kritischen Programmteile effizient programmiert werden. Als Zeitreferenz dient ein periodischer Timer-Interrupt mit einer Millisekunde als Zeitbasis. Die Weitergabe der Zeit an die Hauptschleife erfolgt durch Inkrementieren einer als volatile deklarierten Variable die einfach überrollen darf und zu der der Zähler in der Hauptschleife bis zur Gleichheit jeweils wieder aufschließt. Die Umsetzung des hexadezimalen Zählerstandes in den Inhalts von für die Anzeige erfolgt in der Hauptschleife. Der zeitkritische Teil in der Timer-ISR wählt die Pin-Ansteuerung anschließend nur aus einer festgelegten Tabelle aus.

Drehimpulsgeber

Besonders knifflig gestaltet sich Auswertung des Drehimpulsgeber, bei geringer Prozessorbelastung. Benötigt werden zwei externe Interruptleitungen mit Flankentriggerung und mittels enum eine Pseudo-Zustandsmaschine zur Drehrichtungserkennung.

Schaltfolge des Drehimpulsgeber mit Pull-up-Widerständen


Die Drehrichtung ergibt sich aus der Abfolge der Zustände. Ein Schritt im Uhrzeigersinn geht aus State A1 gefolgt von State A2 hervor und entgegen dem Uhrzeigersinn State B1 gefolgt von State B2. Alle anderen Zustandswechsel werden ignoriert.

Zustände
State A1 ↓A ∧ B = 1
State A2 A = 0 ∧ ↓B
State B1 A = 1 ∧ ↓B
State B2 ↓A ∧ B = 0

Hauptschleife

Die Hauptschleife mit dem wesentliche Teil des Zeitgebers läuft im Gegensatz zum Taktgeber und Multiplexer asynchron. Es wird die vergangene Zeit seit der letzten Abfrage ausgelesen und entsprechend oft die Poll-Schleife durchlaufen. Der Zeitgeber benötigt zur Abarbeitung länger als ein Intervall des Tagtgebers doch das macht nichts, denn der Poll-Intervall des Zeitgebers ist wesentlich größer und scheinbar verlorene Intervalle puffert die Zeitgebervariable gTimer.

Kalibrieren

Der kalibrierte 8 MHz RC-Oszillator hat eine ausreichende Genauigkeit (im Gegensatz zu den 128kHz).

Stromsparmaßnahmen

Die erste Stromsparmaßnahme besteht im Reduzieren der Prozessortaktrate auf 1 MHz. Im Schlafmodus Power-Down greifen weitere Maßnahmen, so schaltet die Software die internen Pull-ups ab und es wirken nur noch die externen 100 kOhm-Widerstände, denn dem Drehimpulsgeber bleibt trotz Rastung oft ein Schleifkontakt als geschlossen hängen und die internen würden übermäßig Strom ziehen. Die Batterie-Statusanzeige mach im Schlafmodus auch wenig Sinn, da keiner hinschaut, somit wird auch der Analog-Komparator ausgeschalten.

Im ersten Moment scheint es recht einfach mit dem Schlafmodus Power-Down und dem internen 8-MHz-RC-Oszillator zu arbeiten, allerdings funktioniert dann auch die Flankentriggerung der Interrupteingänge nicht mehr. Allerdings verfügt der ATmega48/88/168 im Gegensatz zum ATmega8 über eine weitere Interruptquelle, dem Pin Change Interrupt (PCI) der auch bei ruhendem Taktgenerator arbeitet und hier nur zum Aufwachen dient.

Auch während des Betriebs gibt es Stromsparmaßnahmen. Die Anzeige dimmt kurz nach dem Einstellen der Zeit herunter und reduziert so den Stromverbrauch.

Lebensdauer der Batterie

Die Lebensdauer einer Batterie ist ein bedeutender Aspekt beim Entwurf und entscheidet darüber, ob etwas machbar ist oder nicht. Eine LED-Anzeige ist sehr Strom-hungrig und von daher muss deren Strom so niedrig veranschlagt werden, wie es noch akzeptabel ist. Im konkreten heißt dies 2,5 mA pro Segment und rot als Anzeigenfarbe wegen der besseren Signalwirkung.

Eine Handelsüliche Mignongzelle vom Typ Akaline hat eine Batteriekapazität von 3000 mAh. Als Durchschnitt für den taglichen Gebrauch wurde eine ¼ Stunde veranschlagt, denn manchmal liegt die Eieruhr in der Ecke herum und an anderen Tagen ist sie gleich mehrmals im Einsatz.

Veranschlagter Kapazitätsbedarf pro Tag:

[math]\displaystyle{ \!\,\text{Standby-Stromaufnahme} \cdot \text{Stunden pro Tag} = \text{Standby-Kapazitaetsbedarf pro Tag} }[/math]
[math]\displaystyle{ 0.05 mA \cdot 24 h/d = 1.2 mAh/d }[/math]
[math]\displaystyle{ \!\,\text{Betriebs-Stromaufnahme} \cdot \text{Betriebszeit pro Tag} = \text{Betriebs-Kapazitaetsbedarf pro Tag} }[/math]
[math]\displaystyle{ 20 mA \cdot 0.25 h/d = 5 mAh/d }[/math]
[math]\displaystyle{ \!\,\text{Standby-Kapazitaetbedarf pro Tag} + \text{Betriebs-Kapazitaetbedarf pro Tag} = \text{Gesamt-Kapazitaetsbedarf pro Tag} }[/math]
[math]\displaystyle{ \!\,1.2 mAh/d + 5 mAh/d = 6.2 mAh/d }[/math]

Hieraus ergibt sich die Lebensdauer:

[math]\displaystyle{ \frac{\text{Batteriekapazitaet}}{\text{Kapazitaetsbedarf pro Tag}} = \text{Batterielebensdauer} }[/math]
[math]\displaystyle{ \frac{3000 mAh}{6.2 mAh/d} = 484 d = 1,3 a }[/math]

Tuning

Einfach nachbauen wird mancher langweilig finden. Ein Paar Knobelaufgaben lösen kann zusätzlichen Reiz bieten.

  • 0,5 ... 9,9 Minute Feineinstellung im unteren Zeitbereich
  • Überdrehen 1.. 199 Minuten durch missbrauch vom mittleren Punkt
  • Implementierung mit 32,786 kHz Quarz
  • Kompaktes Gehäuse finden

TODO

Ein paar Kleinigkeiten sind noch unerledigt geblieben:

  • Prozessorauslastung messen
  • Materialliste
  • EMV-gerechtes Layout vergessen

Download

Weblinks

SMD-Lötkurse (Online)
Vergleichbare Projekte
Datenblätter