Berliner Uhr

Aus BraLUG-Wiki

(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(...und etwas für den PC)
 
(25 dazwischenliegende Versionen von einem Benutzer werden nicht angezeigt)
Zeile 1: Zeile 1:
 
[[Kategorie:Hardware]]
 
[[Kategorie:Hardware]]
 +
[[Category:Programmieren]]
 +
[[Category:Tcl/Tk]]
 +
[[Category:Uhren]]
  
=Motivation=
+
==Motivation==
 
Karsten meinte neulich, dass eine [http://de.wikipedia.org/wiki/Mengenlehreuhr "Berliner Uhr"] doch mal etwas lustiges für ein Mikrocontroller-Projekt wäre. Nachdem ich mich ein wenig belesen hatte, war ich der gleichen Meinung und baute einen Prototyp auf einer Lochraster-Platine auf. Hier das Ergebnis:
 
Karsten meinte neulich, dass eine [http://de.wikipedia.org/wiki/Mengenlehreuhr "Berliner Uhr"] doch mal etwas lustiges für ein Mikrocontroller-Projekt wäre. Nachdem ich mich ein wenig belesen hatte, war ich der gleichen Meinung und baute einen Prototyp auf einer Lochraster-Platine auf. Hier das Ergebnis:
  
=Hardware (Prototyp)=
+
 
 +
==Hardware (Prototyp)==
 
[[Bild:Berliner_uhr.png|320px|Schaltplan]]
 
[[Bild:Berliner_uhr.png|320px|Schaltplan]]
 
[[Bild:Berliner_uhr.jpg|165px|Wie spät ist es? ...21:49]]
 
[[Bild:Berliner_uhr.jpg|165px|Wie spät ist es? ...21:49]]
Zeile 18: Zeile 22:
  
  
=Firmware=
+
==Mikrocontroller-Software==
Die [http://bralug.de/wiki-common/images/b/b8/Berliner_uhr.tar.gz erste Version der Firmware] beinhaltet lediglich die Grundfunktionalitäten einer Uhr plus der lustigen Umsetzung der Uhrzeit in das spezielle Anzeigeformat der "Berliner Uhr". Das Ganze sollte ohne Probleme um DCF77-Funktionalität, entweder via [http://bralug.de/wiki/BLIT2008-Board-DCF77 TWI] oder nativ (also direkt angeschlossenem DCF77-Empfangsmodul), erweiterbar sein.
+
===Firmware===
 +
Die [http://bralug.de/wiki-common/images/b/b8/Berliner_uhr.tar.gz erste Version der Firmware] beinhaltet lediglich die Grundfunktionalitäten einer Uhr plus der lustigen Umsetzung der Uhrzeit in das spezielle Anzeigeformat der "Berliner Uhr". Mittels der drei Taster ist das Stellen der Uhr möglich (Stunden/Minuten/0-Sekunde).
 +
 
 +
Das Ganze sollte ohne Probleme um DCF77-Funktionalität, entweder via [http://bralug.de/wiki/BLIT2008-Board-DCF77 TWI] oder nativ (also direkt angeschlossenem DCF77-Empfangsmodul), erweiterbar sein und kommt vielleicht in einer nächsten Version der Firmware.
 +
 
 +
===RTF(-Atmel-)M===
 +
 
 +
Jaja, Datenblätter sollte man lesen und auch verstehen...!
 +
 
 +
Irgendwie habe ich mich schon von Anfang an gewundert, warum die Uhr es so grottenschlecht mit der Ganggenauigkeit handhabt, obwohl ich eigentlich extra deswegen einen Uhrenquarz mit eingebaut hatte. Heute abend aktivierte ich meinen Speicheroszi, um die Frequenz des Quarzes zu bestimmen und entsprechende softwaretechnische Änderungen in die Firmware einzubauen. Zum Glück streuten die Meßergebnisse so stark, dass ich doch nochmal im Datenblatt nachgelesen habe...: die internen Kondensatoren im ATMega8 müssen via Fuse-Bits aktiviert werden (Fuse-Bit CKOPT)!
 +
 
 +
Mittels dem Programm ''avrdude'' und einem ''usbasp'' als angeschlossene Programmierhardware würde die Befehlszeile zum Setzen der entsprechenden Fuse-Bits so aussehen:
 +
 
 +
<pre>
 +
avrdude -c usbasp -p m8 -U hfuse:w:0xc9:m -U lfuse:w:0xe1:m
 +
</pre>
 +
 
 +
Jetzt bin ich mal gespannt, ob sich die Ganggenauigkeit der Uhr dadurch verbessert...
 +
 
 +
 
 +
==...und etwas für den PC==
 +
===Linux===
 +
Eine "Berliner Uhr" mit einem Mikrocontroller als vollständiges Gerät kann jeder aufbauen und als Firmware implementieren (;-))...! Aber auch der "Nicht-Hardware-Freak" will etwas von dieser mystischen Uhrzeit-Anzeige haben:
 +
 
 +
 
 +
[[Bild:Berliner uhr tcl.png|meine Tcl/Tk-Version einer Berliner Uhr (ach so..., 15:33 Uhr)]]
 +
 
 +
Ich konnte es dann doch nicht lassen und habe im Anflug von Langerweile ein kleines [http://www.bralug.de/wiki-common/images/5/56/Berliner_uhr_tcl.tar.gz Tcl/Tk-Script] geschrieben, welches die PC-Uhrzeit in dem Format der Berliner Uhr darstellt.
 +
 
 +
 
 +
[[Bild:Berliner uhr ncurses.png|320px|ncurses-Version der Berliner Uhr (...21:29 Uhr)]]
 +
 
 +
Wenn schon eine Tcl/Tk-Version, dann natürlich auch etwas für ein ganz normales (farbfähiges) ASCII-Terminal, zumal ich schon immer ein ncurses-Programm schreiben wollte. Hier also die Version der [http://bralug.de/wiki-common/images/8/83/Berliner_uhr_ncurses.tar.gz Berliner Uhr für die "Kommandozeile"]. Mit der Taste 'q' kann man, wie von anderen vergleichbaren Tools gewohnt, das Programm beenden.
 +
 
 +
 
 +
Um die Sache zum Abschluss zu bringen, hier noch die [http://bralug.de/wiki-common/images/d/db/Berliner_uhr_x.tar.gz X-Version] der Berliner Uhr von mir. Vom Layout sieht sie (fast) genau so aus, wie die Tcl-Version (siehe weiter oben...), kann aber in den Abmessungen dynamisch geändert werden.
 +
 
 +
===Windows===
 +
[[Bild:Sidebar dialog.png|320px|Sidebar-Installationsdialog]]
 +
[[Bild:Sitebar berlin uhr.png|91px|Berlin Uhr im Windows-Vista-Sidebar]]
 +
 
 +
Nein, ich habe jetzt nicht das Betriebssystem-Lager gewechselt, aber in einer der letzten c't-Ausgaben war ein Artikel (17/2010; S.158ff.), in dem erläutert wurde, wie man GadGets für den Windows-Vista-Sitebar programmiert. Da ich eine etwas längere Zugfahrt vor mir und mein Firmen-Notebook dabei hatte (da ist halt Windows Vista drauf...), dachte ich, dies wäre doch mal eine nette Programmierübung zum Zeitvertreib.
 +
 
 +
Entstanden ist eine Sidebar-Applikation, die die Uhrzeit im "Ausgabeformat" der Berlin Uhr anzeigt.
 +
 
 +
Zur Installation ist das, in diesem [http://bralug.de/wiki-common/images/e/ee/Berlinuhr.gadget.tar.gz Archiv] enthaltende Verzeichnis Berlinuhr.gadget in den lokalen Windowsordner "C:\Program Files\Windows Sidebar\Gadgets" zu kopieren. Danach sollte ein neues Icon (eine kleine Berlin Uhr) in dem Windowsdialog zum Installieren von Sidebar-GadGets erscheinen und kann darüber dem Sidebar hinzugefügt werden.
  
=...und etwas für den PC=
+
Viel Spaß damit!
[[Bild:Berliner uhr tcl.png|meine Tcl/Tk-Version einer Berliner Uhr]]
+
  
Ich konnte es dann doch nicht lassen können und habe im Anflug von Langerweile ein kleines [http://www.bralug.de/wiki-common/images/5/56/Berliner_uhr_tcl.tar.gz Tcl/Tk-Script] geschrieben, welches die PC-Uhrzeit in dem Format der Berliner Uhr darstellt.
+
==Kontakt==
  
=Kontakt=
 
 
[[Benutzer:bergeruw|Uwe]]
 
[[Benutzer:bergeruw|Uwe]]

Aktuelle Version vom 22. Januar 2012, 19:22 Uhr


Inhaltsverzeichnis

[Bearbeiten] Motivation

Karsten meinte neulich, dass eine "Berliner Uhr" doch mal etwas lustiges für ein Mikrocontroller-Projekt wäre. Nachdem ich mich ein wenig belesen hatte, war ich der gleichen Meinung und baute einen Prototyp auf einer Lochraster-Platine auf. Hier das Ergebnis:


[Bearbeiten] Hardware (Prototyp)

Schaltplan Wie spät ist es? ...21:49

Die Schaltung beinhaltet folgendes:

  • ein ATmega8 als Mikrocontroller,
  • 24 LEDs gemultiplext (3 plus 8 MC-Ausgänge)
  • Uhrenquarz (als Zeitbasis)
  • 3 Taster (zum Einstellen von Stunde, Minute sowie "Null-Stellen" der Sekunden)
  • Anschluss für DCF77 (entweder TWI oder nativ) vorgesehen

Bemerkung zu obigen Foto des Prototyp: Die LEDs für die "Minuten-Einer" hätten eigentlich auch gelb sein sollen, leider hatte ich die auf meiner Bestellliste vergessen. Deshalb erstmal rote LEDs.


[Bearbeiten] Mikrocontroller-Software

[Bearbeiten] Firmware

Die erste Version der Firmware beinhaltet lediglich die Grundfunktionalitäten einer Uhr plus der lustigen Umsetzung der Uhrzeit in das spezielle Anzeigeformat der "Berliner Uhr". Mittels der drei Taster ist das Stellen der Uhr möglich (Stunden/Minuten/0-Sekunde).

Das Ganze sollte ohne Probleme um DCF77-Funktionalität, entweder via TWI oder nativ (also direkt angeschlossenem DCF77-Empfangsmodul), erweiterbar sein und kommt vielleicht in einer nächsten Version der Firmware.

[Bearbeiten] RTF(-Atmel-)M

Jaja, Datenblätter sollte man lesen und auch verstehen...!

Irgendwie habe ich mich schon von Anfang an gewundert, warum die Uhr es so grottenschlecht mit der Ganggenauigkeit handhabt, obwohl ich eigentlich extra deswegen einen Uhrenquarz mit eingebaut hatte. Heute abend aktivierte ich meinen Speicheroszi, um die Frequenz des Quarzes zu bestimmen und entsprechende softwaretechnische Änderungen in die Firmware einzubauen. Zum Glück streuten die Meßergebnisse so stark, dass ich doch nochmal im Datenblatt nachgelesen habe...: die internen Kondensatoren im ATMega8 müssen via Fuse-Bits aktiviert werden (Fuse-Bit CKOPT)!

Mittels dem Programm avrdude und einem usbasp als angeschlossene Programmierhardware würde die Befehlszeile zum Setzen der entsprechenden Fuse-Bits so aussehen:

avrdude -c usbasp -p m8 -U hfuse:w:0xc9:m -U lfuse:w:0xe1:m

Jetzt bin ich mal gespannt, ob sich die Ganggenauigkeit der Uhr dadurch verbessert...


[Bearbeiten] ...und etwas für den PC

[Bearbeiten] Linux

Eine "Berliner Uhr" mit einem Mikrocontroller als vollständiges Gerät kann jeder aufbauen und als Firmware implementieren (;-))...! Aber auch der "Nicht-Hardware-Freak" will etwas von dieser mystischen Uhrzeit-Anzeige haben:


meine Tcl/Tk-Version einer Berliner Uhr (ach so..., 15:33 Uhr)

Ich konnte es dann doch nicht lassen und habe im Anflug von Langerweile ein kleines Tcl/Tk-Script geschrieben, welches die PC-Uhrzeit in dem Format der Berliner Uhr darstellt.


ncurses-Version der Berliner Uhr (...21:29 Uhr)

Wenn schon eine Tcl/Tk-Version, dann natürlich auch etwas für ein ganz normales (farbfähiges) ASCII-Terminal, zumal ich schon immer ein ncurses-Programm schreiben wollte. Hier also die Version der Berliner Uhr für die "Kommandozeile". Mit der Taste 'q' kann man, wie von anderen vergleichbaren Tools gewohnt, das Programm beenden.


Um die Sache zum Abschluss zu bringen, hier noch die X-Version der Berliner Uhr von mir. Vom Layout sieht sie (fast) genau so aus, wie die Tcl-Version (siehe weiter oben...), kann aber in den Abmessungen dynamisch geändert werden.

[Bearbeiten] Windows

Sidebar-Installationsdialog Berlin Uhr im Windows-Vista-Sidebar

Nein, ich habe jetzt nicht das Betriebssystem-Lager gewechselt, aber in einer der letzten c't-Ausgaben war ein Artikel (17/2010; S.158ff.), in dem erläutert wurde, wie man GadGets für den Windows-Vista-Sitebar programmiert. Da ich eine etwas längere Zugfahrt vor mir und mein Firmen-Notebook dabei hatte (da ist halt Windows Vista drauf...), dachte ich, dies wäre doch mal eine nette Programmierübung zum Zeitvertreib.

Entstanden ist eine Sidebar-Applikation, die die Uhrzeit im "Ausgabeformat" der Berlin Uhr anzeigt.

Zur Installation ist das, in diesem Archiv enthaltende Verzeichnis Berlinuhr.gadget in den lokalen Windowsordner "C:\Program Files\Windows Sidebar\Gadgets" zu kopieren. Danach sollte ein neues Icon (eine kleine Berlin Uhr) in dem Windowsdialog zum Installieren von Sidebar-GadGets erscheinen und kann darüber dem Sidebar hinzugefügt werden.

Viel Spaß damit!

[Bearbeiten] Kontakt

Uwe

'Persönliche Werkzeuge