Instructions
48
10
DOTMATRIXLCD
UHR
In vielen Anwendungen wird eine Uhr zur Programmsteuerung benötigt
– sei es eine einfache Zeitschaltuhr, eine Steuerung, die einen genauen
zeitlichen Ablauf einhalten soll, oder ein Betriebsstundenzähler. Die An-
wendungen, bei denen eine Uhr benötigt wird, sind zahlreich.
Das Experiment zeigt, wie wir uns eine sehr einfache Uhr selbst program-
mieren können. Das Programm läuft in der
Loop()-Funktion endlich und
zählt dabei im 10-ms-Takt den Zähler hoch. Ist der Zählerstand cnt = 100,
wird die Zeit ausgegeben. Das erfolgt im Sekundentakt. Unsere User-LED
L blinkt im Sekundentakt mit. Dadurch überwachen wir die Funktion des
Programms, ob es auch noch läuft oder sich ein Fehler beim Programmie-
ren eingeschlichen hat. Man bedenke jedoch, dass die Uhr nicht die Prä-
zision einer echten Quarzuhr besitzt, da der Takt und die Abweichung des
Mikrocontrollerquarzes mit 16 MHz viel größer sind als bei einem Uhrquarz
im Kilohertzbereich (Uhrenquarz = 32,768 kHz). Abweichungen von mehr
als einer Minute pro Tag sind keine Seltenheit. Die Genauigkeit ist zudem
stark von der Umgebungstemperatur abhängig. Schwankt diese im Lauf
der Zeit stark, wird auch die Uhr größere Zeitfehler aufweist. Wir können
die Zeitabweichung mit
delay() korrigieren. Alternativ bietet sich auch
delayMicroseconds() an, um die Abweichung noch genauer zu korrigie-
ren. Dazu sollten Sie einen digitalen Pin als Ausgang konfi gurieren und ihn
bei jedem Programmdurchlauf toggeln, also bei jedem Durchlauf einmal
den Zustand wechseln. Dieses Signal können Sie mit einem Oszilloskop
genau auf 10ms Durchlaufzeit trimmen. Sie können auch die Abweichung
über eine längere Zeit ermitteln, indem Sie die Zeit mithilfe einer anderen
genauen Uhr, z.B. einer DCF-Uhr eine Weile (1 bis 2 Tage) vergleichen, die
Differenz berechnen und dann die Abweichung mit
delayMicroseconds()
korrigieren.
Abb. 10.1: Die Uhr im
Betrieb
10174-5 Conrad Arduino Lernpaket_09.indd 4810174-5 Conrad Arduino Lernpaket_09.indd 48 14.07.2015 08:10:2414.07.2015 08:10:24