Quellcode auf GitHub: https://github.com/kaini/lcdclock im Ordner "firmware". Hallo, zugegeben - nicht gerade das kreativste aller Projekte - dennoch wollte ich eine Digitaluhr die - bei ausrechendem Umgebungslicht lesbar ist (keine LEDs), - von normalen Batterien betrieben werden kann, - die Zeit von alleine einstellt und - an einer Wand aufgehängt werden kann selber bauen. Als Mikrocontroller habe ich, zum ersten mal, einen STM32 gewählt. Genauer ein STM32L073CZ der praktischerweise schon einen multiplexing LCD-Treiber beinhaltet der in div. Sleep-Modes weiterhin läuft ohne nennenswert Strom zu verbrauchen. Die Firmware ist, bis auf den DCF77 Empfang, keine Hexerei: Der Controller wacht auf, gibt die aktuelle Zeit auf das 7-Segment Display aus und legt sich dann für eine Sekunde schlafen. Dazwischen passieren noch ein paar Berechnungen um zwischen Sommer- und Winterzeit umzustellen ohne eine Resynchronisierung zu brauchen. Nachdem in Ostösterreich der DCF77-Empfang teilweise sehr abenteuerlich ist (vielleicht auch die Schuld des DCF77-Moduls?) habe ich eine DCF77 Dekodierung à la http://www.gjlay.de/software/dcf77/konzept.html implementiert. Diese kann in den Source-Files "dcf77_parser.cpp" und "dcf77_parser.hpp" gefunden werden. Trotz dieser Implementierung ist das Empfangen einer aktuellen Zeit Tagsüber oft erst nach Stunden möglich. Um keine Batterie mit sinnlosem Zeit-Synchronisieren zu verschwenden wird die Zeit daher nur Sonntags früh am Morgen und nach dem Einschalten synchronisiert. Das Gehäuse ist 3D-gedruckt (STL-Datei im Repository) und hat hinten zwei Löcher zum Aufhängen an der Wand. Die Bauteile sind mit Heißkleber hinengeklebt. Das LCD-Panel hab ich mir aus China zukommen lassen und ist leider multiplexing und transreflektiv. Um letzteres Problem zu lösen habe ich einfach zwei Lagen weißes Papier hinter das Display geklebt. Das Multiplexen war jedoch herausfordernder, da es leider zu sehr viel LCD-Ghosting kam. (Die Segmente die eigentlich aus sein sollten waren trotzdem an, weil bei einem LCD ja auch bei den aus-Segmenten Spannung anliegt.) Das Problem konnte ich zufriedenstellend in den Griff bekommen indem ich stundenlang mit der Konstrastspannung, der Frequenz, dem Bias und der Dead-Time des LCD Treibers herumgespielt habe. Nächstes mal achte ich darauf an ein statisches Display zu kommen. (Wobei das in diesem Fall immerhin 54 Inputs wären ...) Übrigens, angehängt ist schon eine 2. Revision der Schaltung. In der Version die ich habe sind zwei Fehler enhalten: - Ich habe vergessen den BOOT0 Pin zu beschalten: Das habe ich mit einer Drahtbrücke gefixt. - VLCD ist in meiner Version noch mit VCC Verbunden: Diese Verbindung habe ich von der Platine gekratzt und ich verwende jetzt den internen Spannungswandler für die LCD Spannung. Ursprünglich war geplant einfach die Betriebsspannung als LCD-Spannung zu verwenden, aber aufgrund des Ghosting-Problems habe ich dann doch die Flexibilität des LCD Treibers gebraucht. Ich habe keine Messinstrumente um den Stromverbrauch genau zu messen, er sollte jedoch <50µA im Schnitt sein. PS: Kann man ein PCB-Layout irgendwie schöner aus KiCad exportieren?
Schön und gefällt mir. Welche Ziffenhöhe hat das Display? Ich möchte mir demnächst was ähnliches bauen, aber mit selbst hergestellten LED-7-Segment-Displays mit min. 600mm Ziffernhöhe. Harry
Die Ziffernhöhe beträgt etwa 50 mm, gut lesbar aus ein paar Metern Entfernung, mehr als genug für den Raum in dem die Uhr hängt. Meinst du wirklich LED, oder war das ein Schreibfehler? In dem Fall darf ich Fragen wie du LCDs selber herstellst?
Harry schrieb: > Ich möchte mir demnächst was ähnliches bauen, aber mit selbst > hergestellten LED-7-Segment-Displays mit min. 600mm Ziffernhöhe. Nimm einfach eine der vielen LED-Uhr-Schaltungen aus dem Netz und bau einen etwas kräftigeren Treiber daran.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.