Binäruhr


Erstellt: 2009-12-20Letzte Änderung: 2010-06-05 [vor 13 Jahren, 10 Monaten, 20 Tagen]

Binäruhr Eine Binäruhr, die die aktuelle Zeit in Sekunden, Minuten, Stunden, Wochentag, Tag, Monat und Jahr anzeigt. Im Gegensatz zu herkömmlichen Binäruhren werden die Ziffern der Uhrzeit hier nicht BCD-kodiert, sondern als echte Binärzahlen dargestellt.

Info Diese Uhr hat sich aufgrund des Multiplexing in Verbindung mit dem I²C-Bus leider als etwas störanfällig herausgestellt. Bitte wirf daher auch einen Blick auf den Nachfolger, die Binäruhr 2.

Zurück zur Hauptseite "Uhren"

Aufbau

Die Anzeige geschieht auf einer LED-Matrix, die von einem ATtiny2313 angesteuert wird. An diesen angeschlossen sind drei Taster zum Setzen der Zeit und des Datums und eine DS1307 Real Time Clock von Dallas, von der sich der AVR die aktuelle Zeit per I²C besorgt. Die I²C-Funktionen habe ich übrigens aus dem Code von WICHTIG übernommen.

Schaltung

Schaltplan
Warnung! Der Schaltung darf nur in einem Spannungsbereich von 4,5 bis 5,5V betrieben werden. Betreibt man die Schaltung wie ich an einem 9V-Block, so muss ein 78L05-Spannungsregler vorgeschaltet werden (im Schaltplan nicht eingezeichnet).

Info Es ist übrigens absolut NICHT zu empfehlen, wie ich die Schaltung an einen 9V-Block + Spannungsregler zu hängen. Fast die gesamte Batterieleistung wird ungenutzt im Spannungsregler verheizt und die Uhr läuft nur ca. 3 bis 4 Tage lang, bevor die Batterie leergelutscht ist. Daher habe ich den 9V-Block später durch drei AAA-Batterien in Reihe ersetzt und den Spannungsregler überbrückt (letztes Foto).

Der 100nF-Abblockkondensator zwischen VCC und GND ist sehr wichtig und darf auf keinen Fall weggelassen werden. Ich hatte ihn zuerst nicht eingebaut und die Schaltung spielte total verrückt, was bei den durch Multiplexing verursachten Strompeaks und dem Frequenzbrei des I²C-Bus aber auch nicht verwunderlich ist.

Information Die LEDs besitzen keine Vorwiderstände; den Lötaufwand wollte ich mir wirklich nicht antun. Durch das Multiplexing und der Tatsache, dass auch bereits der Spannungsregler den Strom begrenzt, kann man das ganze in Software mit einer Prise PWM so hinbiegen, dass die LEDs nicht durchbrennen und mit der gewünschten Leuchtstärke strahlen. Ob das die tollste Praxis ist, wage ich zu bezweifeln. Es funktioniert jedoch und der Lötaufwand verringert sich erheblich.

Gehäuse

Den Bohrplan für die LEDs habe ich zuerst per Bleistift auf Karopapier gezeichnet und mit vielen Bahnen Tesa auf die Gehäuseschalte geklebt. Wichtig ist, dass das gesamte Papier vom Klebeband bedeckt ist, ansonsten zerreißt der Bohrer das Papier.

Die Punkte habe ich anschließend sicherheitshalber noch einmal mit Hammer und Nagel in das Plastik gestanzt.

Mit etwas Geduld und einer Ständerbohrmaschine kann man nun sehr präzise und sauber die Löcher für die insgesamt 36 LEDs ins Plastik bohren.

Die LEDs werden zu einer Matrix verlötet und mit der restlichen Elektronik verbunden.

Die Hauptplatine von vorne; nichts besonderes.

Hinten versteckt sich der DS1307-IC. Dieser hat halbes Raster (SOIC-8), man muss also die entsprechenden Lochrasterpunkte mit einem Cuttermesser halbieren.

Das fertige Ergebnis auf dem Wohnzimmertisch. :-)

Mit AAA-Batterien anstatt eines 9V-Blocks.


Nach oben

Bedienung

Uhr Stellen

Nach Einschalten der Spannungsversorgung müssen Datum, Wochentag und Uhrzeit manuell gesetzt werden. Dies geschieht über die drei Taster Hoch, Runter und Enter.

Mit Hoch und Runter wird der Wert des aktuellen Parameters erhöht bzw. erniedrigt. Mit Enter wird der nächste Parameterwert angewählt. Mit einem langen Druck auf Hoch und Runter gleichzeitig werden die Einstellungen übernommen und die Uhr geht in den normalen Betrieb.

Warnung! Die Taster Hoch und Runter dürfen im normalen Betrieb nicht mehr betätigt werden, da sie sonst die Leitungen des I²C-Bus kurzschließen. Aufgrund Pinmangels am AVR musste diese Lösung gewählt werden.

Um die Uhr erneut zu stellen, muss lediglich die Spannungsversorgung kurzzeitig unterbrochen und wieder eingeschaltet werden.

Information Leuchtet nach dem Stellen der Uhr nur die höchstwertige LED der Jahresanzeige, so deutet dies auf einen Fehler in der I²C-Kommunikation zwischen dem AVR und dem DS1307 hin. In solch einem Fall sollte überprüft werden, ob auch tatsächlich mindestens ein 100nF-Keramikkondensator parallel zur Stromversorgung - am besten direkt an den ICs - vorhanden ist.

Information Im Sourcecode ist festgelegt, dass die Uhr das Display zwischen 22:00 und 5:59 Uhr dimmt. Dies ist eine reine Stromsparmaßnahme, da man das Display im Dunkeln auch bei geringerer Helligkeit noch gut lesen kann.

Uhr lesen

Kenntnis des Binärcodes ist vorrausgesetzt.

In der rechten Spalte des Displays befinden sich vertikal die Sekunden, mit dem LSB ganz unten. Die restlichen horizontalen Zeilen daneben sind: Minuten, Stunden, Wochentag, Tag, Monat und Jahr (von oben nach unten, LSB ganz rechts).

Nach oben

Fertig

Abschließend ein kleines Video von der Binäruhr in Action.



Nach oben

Download

Den C-Sourcecode, mein Linux-Makefile und die brennfertige hex-Datei gibt es hier zum Download.

Download: binaeruhr-1.0.zip [6.69 kiB]
[1647 Downloads]

Nach oben