Eine TV-Echtzeituhr

Moderator: suntri

Antworten
Benutzeravatar
JeanLuc7
Fast schon Admin
Fast schon Admin
Beiträge: 675
Registriert: 09.02.2011, 16:07
Wohnort: Berlin
Kontaktdaten:

Eine TV-Echtzeituhr

Beitrag von JeanLuc7 »

Salut Bastelfreunde,

ich beschäftige mich seit einiger Zeit mit Bausteinen, die es ermöglichen, auf einer Bildröhre oder einem PAL-Bildschirm (auch Fernseher) Objekte und Texte darzustellen; alles auf Basis einfacher Atmel-Mikrocontroller. Daraus ist einerseits eine Steuerplatine entstanden, die entweder die klassischen Philips-Bildröhreneinheiten oder aber TV-Bildschirme ansteuert, und außerdem ein Universalbaustein, der wahlweise (rechteckige) Objekte oder Texte darstellen kann. Die Auflösung ist genauso limitiert wie die Mikrocontroller: mehr als 384x288 Pixel sind nicht drin, das ist ein Viertel der klassischen TV-Auflösung. Texte sind in mehreren Größen möglich, bis zu 48 Zeichen und 24 Zeilen sind drin. Das Universalmodul bietet darüber hinaus Steuermöglichkeiten durch vorgegebene Textsets, Messungen von Eingangsspannungen, Zähler (auch höhere Frequenzen) und bewegliche Elemente, mit denen ich beispielsweise ein Snake-Spiel umgesetzt habe. Das Schöne daran: man braucht nicht zu programmieren, sondern nur die Funktionen auszuwählen und anzusteuern. Spiele und Schaltungen können so einfach mit ein paar zusätzlchen Logikbausteinen zusammengesetzt werden. Die Universalbausteine funktionieren übrigens auch mit dem TV-Modul aus dem EE3023. Wen das Thema interessiert: Hier gibt es mehr Infos dazu.

Hier soll es nun um eine Echtzeituhr gehen, die ich in diese Rubrik gepackt habe, weil sie anders als die bisherigen Konstruktionen zusätzlich einen Mikrocontroller als zentrales Element braucht, denn hier sollte ein Echtzeituhrbaustien zum Einsatz kommen, und den gibt es nicht in klassischer CMOS-Logik. Ich habe hier den DS3231 (I2C) gewählt, der einer gekauften Packung mit vielen Sensoren beilag und eigentlich per Arduino-IDE gesteuert werden möchte. Es geht aber auch ganz klassisch in C. Die Uhr wird beim ersten Start mit dem Compiledatum des Programms beschrieben und danach jeweils einmal beim Start ausgelesen.

Da die Universalbausteine zwar zählen und auch Uhrzeiten anzeigen können, aber nicht voreingestellt werden können, ist ein wenig Aufwand erforderlich. Beim Einschalten zählt die Uhr deshalb im Schnelldurchlauf von 0:00 vorwärts oder von 23:59 rückwärts - je nachdem, ob es schon nach Mittag ist. Sie hält dann exakt zur passenden Uhrzeit an und zählt im Minutentakt weiter. Gesrtellt werden kann die Uhr durch den oben vorgestellten 5-Wege-Schalter, dessen Werte hier der Mikrocontroller auswertet und umsetzt. Die Wochentage werden einfach durch Belegungen von drei Eingangspins des Universalbausteins erzeugt - Texte dafür sind im Textset vorgesehen und können einfach über eine Pinleiste ausgewählt werden.

Das Pendel wird durch ein Rechteck dargestellt, das auf dem Bildschirm frei positioniert werden kann durch Eingangsspannungen am Universalbaustein. Die Spannungen zwischen 0 und 1,1V stammen aus einem zweikanaligen Digitalpotentiometer MCP42010, das wiederum am SPI-Bus des Mikrocontrollers hängt - ebenfalls einer der Bausteine, die Ingo seinerzeit im Rahmen unserer Mikrocontrollerserie herstellen lassen hat. Der Mikrocontroller liest dazu aus vorberechneten Tabellen die nötigen Werte, die er an das Poti schicken soll - pro Kanal sind 8 Bit , also 256 Werte möglich - das genügt für ein Pendel im Sekundentakt.

Die Universalbausteine erzeugen ihr Bild ebenfalls durch den SPI-Bus, der hier "missbraucht" wird. Der Nachteil dabei ist, dass die Übertragung eine vorgegebene Zeit dauert. Es werden immer mindestens 8 Linien gleichzeitig geschrieben, was auch die Begrenzung der Zeichen erklärt. Wegen der kleinen Bildschirme (Bildröhre ca 2,5", TFT-LCD ca 4,3") habe ich zudem nur24 Zeichen auf 12 Zeilen zugelassen, sonst erkennt man nichts mehr. Das erzeugte Bild ist dunkel auf hell. Damit es auf der Bildröhre besser wirkt, hängen alle Universalbausteine immer an einem Inverter. Der Baustein rechts unten im Gesamtbild übernimmt diese Aufgabe; dort sind vier Inverter und ein 4fach-ODER-Gatter vorhanden, die das Bild invertieren und dann mischen.

Die Universalbausteine werden angesteuert durch Taktsignale des Bildgenerators: Horizontale und vertikale Synchronsignale sorgen dafür, dass das erzeugte Bild synchron bleibt.

Die Uhr kann gestellt werden durch einen 5-Wege-Schalter. Die vier roten Knöpfe sind so geschaltet, dass Oben-Unten und Rechts-Links im Ruhezustand auf etwa 0,6V Potenzial liegen. Wird eine Taste gedrückt, erhöht sich das Potenzial auf 1,1V (Oben-Rechts) oder es wird zu Masse (Unten-Links). Das können die Universalbausteine und auch der Hauptcontroller auswerten - und man spart jeweils ein Kabel. Der OK-Knopf speichert die aktuelle Uhrzeit in der Echtzeituhr.

Es gibt dazu auch ein Video, das das Pendel besser zur Geltung bringt.

Es grüßt herzlich

JL7/Frank
Dateianhänge
IMG_3251.JPG
IMG_3251.JPG (145.77 KiB) 3203 mal betrachtet
IMG_3251.JPG
IMG_3251.JPG (145.77 KiB) 3203 mal betrachtet
IMG_3256.JPG
IMG_3256.JPG (137.88 KiB) 3203 mal betrachtet
IMG_3256.JPG
IMG_3256.JPG (137.88 KiB) 3203 mal betrachtet
IMG_3255.JPG
IMG_3255.JPG (173.02 KiB) 3203 mal betrachtet
IMG_3255.JPG
IMG_3255.JPG (173.02 KiB) 3203 mal betrachtet
IMG_3253.JPG
IMG_3253.JPG (209.74 KiB) 3203 mal betrachtet
IMG_3253.JPG
IMG_3253.JPG (209.74 KiB) 3203 mal betrachtet
Antworten

Zurück zu „Arduino“