Binäruhr mit Arduino

Hallo Allerseits!

Auf der Suche nach einer Wanduhr für mein Zimmer konnte ich aufgrund meiner hohen Ansprüche Analog- und Digitaluhren ausschließen: Übrig bleibt nur die Binäruhr. (Bin für weitere Vorschläge aufgeschlossen!)

Nach etwas rumstöbern im Internet habe ich aber nur Binäruhren gefunden, die die Zeit im BCD-Code darstellen. (Also jede Dezimalstelle binär codieren, anstatt die Stunden und Minuten seperat als Binärzahl, wie ich es gerne hätte.)

Logische Schlussfolgerung: selber bauen! Ich zweifle nicht an der Durchführbarkeit dieses Projektes, mir als Medieninformatik Student liegt das Programmieren sehr, und mein Vater ist Elektriker, falls ich mit dem Zusammenbasteln probleme habe. Das Problem ist nur: Ich möchte mir diese Uhr dann auch ernsthaft an die Wand hängen und als Uhr benutzen.

Deshalb habe ich einige Fragen an die erfahrenen Bastler:

  • Wie präzise ist die interne Uhr vom Arduino? Ich hätte kein Problem damit, die Uhr einmal im Monat zu stellen, aber jeden zweiten Tag wär vielleicht doch etwas viel.
  • Wie hoch ist der Stromverbrauch vom Arduino? (Welche Möglichkeiten hat man das Bord mit Strom zu versorgen?) Ein armer Student kann sich nicht jeden Tag eine neue Packung AA-Batterien leisten...
  • Angenommen ich setze das Projekt mit Arduino und LEDs in die Tat um, kann man die LEDs dimmen? Ich könnte mir vorstellen, dass die LEDs in der Nacht bei voller Power ganz schön hell sind.
  • Ist Arduino überhaupt der richtige Ansatz dafür? Ich kann mir denken, dass das Arduino für diese Aufgabe fast schon ein bisschen Overkill ist. Gibt es vielleicht kleinere (billigere, stromsparendere) Alternativen?

Ich würde mich sehr über Antworten und konstruktive Kommentare freuen.

Grüße,
Felix

Hallo Felix,

schönes Projekt für den Einstieg. Allerdings wirst Du einige Hürden zu nehmen haben, bis Du das gewuppt bekommst. Hilfe findet man hier im Forum aber reichlich.
Zu Deinen Fragen.

  1. Der Arduino hat keine interne Uhr, sondern nur einen Zähler der Mikro- und Millisekunden zählt. Dieser Zähler läuft aber nach einiger Zeit über und fängt zusätzlich nach jedem Reset (oder AN/AUS) von 0 an zu zählen. Für eine sinnvolle Uhr solltest Du über eine RTC (Real Time Clock) nachdenken. Die Dinger gibt es mit unterschiedlichen Gangenauigkeiten und Preisen als kleine Breakouts.

  2. Der Arduino ist sogar recht gut geeignet, Dein Projekt umzusetzen. Der Einstieg in die Programmierung ist mit der IDE auch sehr einfach.

  3. In Punkto Stromverbrauch ist Dein Arduino Dein geringstes Problem. Die "vielen" LEDs mit gut 15mA bis 25mA brauchen da auf jeden Fall den größten Teil. Hier ist eine Versorgung per Netzteil vermutlich am effektivsten.

  4. LEDs kann man dimmen. Das macht man per PWM (Pulse-Width-Modulation). Wie Du das dann konkret umsetzt, hängt davon ab, wie die LEDs geschaltet werden. Auch da gibt es verschiedene Möglichkeiten.

  • multiplexen über den Aruino, ohne zusätzliche Hardware: Geringer Schaltungsaufwand, hoher Programmieraufwand, limitierte Anzahl von LEDs
  • Ausgabe per Schiebe-Register: einfache Umsetzung der Schaltung (8 LEDs pro Register-Chip), einfache Programmierung, schwierig zu dimmen (außer mit shiftPWM Lib)
  • Ausgabe über spezielle Chips (hier 64 LEDs, inkl. dimmen)

Ich würde an Deiner Stelle erstmal mit einem Uno einem RTC-Breakout, einem Schieberegister und einigen LEDs anfangen zu probieren. Damit sammelst Du Erfahrungen und bekommst ein Gefühl für Dein Projekt.
Wenn Du es später konkret umsetzt, kannst Du den klobigen Uno durch einen preiswerten Arduino nano oder Arduino pro mini (beide Boards sind sehr viel kleiner) ersetzen und hast den Uno für weitere Experimente übrig.

Mario.

hi,

ich bin seit einigen zeit an dem hier dran:

seit es die WS2812 gibt, technisch kein problem mehr, handwerklich solltest Du aber geschickt sein, plexiglas will verarbeitet werden.

gruß stefan

Ich finde das ein tolles Einstiegsprojekt.
Am einfachsten ist hier meiner meinung nach ein aufbau aus einer RTC, ein bis zwei TLC5940 (16Kanäle 12Bit dimmbar). Stromversorgung würde ich auf jeden Fall per Netzteil machen.

Wenn du es nicht dimmbar brauchst kannst du es mit einem MAX7221/7219 machen der brauch keine seperate Widerstände vor jeder LED und übernimmt das Multiplexing selbstständig mit diesem Teriber von MAXIM kannst dud 8*8er LED Matrixen treiben ohen Probleme. Er ist auch einfach handzuhaben und bruacht nur 3 Pins des Arduinos. Die Zeit würde ich über ein RTC (z.B. DS1307) über I2C machen. Es gibt für die RTC und den MAXIM schon fertige Libraries.
Gruß
Der Dani

Und ich bin seit sehr langer Zeit an einem TIX-Uhr-Nachbau der aber anders als das Orginal voll RGB-fähig ist. Auf dem Foto noch mit schwarzer Schutzfolie.

Die Ideen stammen von:
orginal TIX-Uhr: http://www.keanmiles.com/Tix-LED-Clock.html
Monome als Design http://monome.org/devices
Ähnliche Tasten/LED - Monome von sparkfun Button Pad 4x4 - LED Compatible - COM-07835 - SparkFun Electronics Mit dazugehöriger Platine Button Pad 4x4 - Breakout PCB - COM-08033 - SparkFun Electronics
Dies Steuerung besteht aus: einem Arduino Nano3.0, einem RTC DS1307-Platine, einem TLC5940 und einem A2981. Es sind 26 Tasten mit 26 RGB-LEDs in einer 6x5 Matrix. Ein 10x R Netzwerk als PulldownWiderstände und ein Trimmer für die Stromeinstellung des TLC5940. Stromverbrauch ca 350mA bei allen eingeschaltenen LED.

weitere Fotos:

Grüße Uwe

Hallo Uwe,

ist zwar ein bisschen OT, aber: Toll umgesetzt... mich würde die rückseite der Lochrasterplatine interessieren, gibt es da bilder?

Dein Wunsch ist mir befehl: :wink: :wink: :wink:

Zu den Farben der Drähte:
Weiß dünn: Ansteuerung A2981 und Anoden der LED und Taster
Blau Interface mit TLC5940
gelb und grün Ansteuerung der Kathoden der LED.
grün I2C Bus
weiß dick und schwarz: Masse
was noch fehlt (weil Foto von noch nicht fertiger Platine) sind die Leitungen für die Tastenabfrage. Diese 6 gehen paralell von den gelben unten, zum Arduino nach oben.
Grüße Uwe

Wie ich es mir dachte - blitzsaubere Arbeit. Unglaublich hübsch anzusehen. Supervielen Dank dafür Uwe.

Wow, vielen lieben Dank für die ausführlichen Antworten! Da muss ich mich jetzt erst mal in Ruhe durcharbeiten...

Werde dann meinen Fortschritt wahrscheinlich auch hier im Thread dokumentieren (auch wenn ich damit erst nächste Woche anfange :p)

mkl0815:

  • Ausgabe per Schiebe-Register: einfache Umsetzung der Schaltung (8 LEDs pro Register-Chip), einfache Programmierung, schwierig zu dimmen (außer mit shiftPWM Lib)

Sehe ich gar nicht so. Mit der shiftPWM-Bibliothek kann man jeden Ausgang separat dimmen, das ist bei einer Uhr gar nicht nötig. Hier sollen gleichzeitig alle LEDs gedimmt werden, dazu lässt sich wunderbar der OE-Eingang des 74xx595-Schieberegisters nutzen. Diesen verbindet man mit einem PWM-Ausgang des Arduinos und kann nun in 255 Helligkeitsstufen die LEDs dimmen (255 bedeutet hier ganz aus, 0 heißt volle Leistung).
Um die ganze Sache einfach zu halten würde ich jeweils für Stunde und Minute (ggf. wenn erwünscht auch für die Sekunde) ein separates Schieberegister verwenden. Generell reichen ja auch 2 kaskadierte Schieberegister für die 24h-Darstellung mit Sekunden (5 Bit für die Stunden, 6 für die Minuten und nochmal 6 für die Sekunden), übersichtlicher und leichter programmierbar ist es meines Erachtens erst einmal so.