Mir ist beim RoboCup 2010 in Vöhringen aufgefallen, dass die Dance-Teams zum Teil erheblich
die erlaubte Zeit auf der Bühne überschritten haben.
Deshalb habe ich eine große Uhr gebaut, die den Teams auf der Bühne (und der Jury davor)
zeigt, wieviel Zeit schon verstrichen ist oder wieviel noch für den Auftritt bleibt:
Die Dance-Clock.
Die Dance-Clock besitzt zwei LED-Displays mit je fünf 7-Segment-Ziffern:
Ein großes, das zur Bühne zeigt (mit 57 mm Ziffernhöhe),
und ein kleines für die Jury (mit 13,5 mm Ziffernhöhe).
Für die Bedienung gibt es noch ein kleines Tastenfeld. Damit kann man die
Uhr stellen/starten/stoppen, die Startzeit beim Countdown einstellen oder eine
von 5 Betriebsarten wählen:
- Zeit aufwärts zählen (Stoppuhr)
- Zeit abwärts zählen (Countdown, Standard-Betriebsart für RoboCup Dance)
- Ereignisse zählen
- Uhrzeit anzeigen
- Display-Helligkeit einstellen
- Selbsterklärung ("About")
|
|
Die Dance-Clock hat einen I2C-Uhrenbaustein mit eigener Lithium-Knopfzelle, damit die
Uhr auch im ausgeschalteten Zustand weiterläuft und nicht bei jedem Einschalten neu
gestellt werden muss.
Der Uhrenbaustein bietet zusätzlich ein paar nichtflüchtige Speicherzellen, in
denen die Dance-Clock Einstellungen abspeichert (z.B. die Startzeit für den Countdown
oder die Helligkeit der Displays).
Am Digital-Eingang Di0 des Gold-Boards ist der OUT-Pin des Uhrenbausteins angeschlossen.
Hier holt sich das Programm die Information, wann sich die Uhrzeit geändert hat, um dann
die aktuelle Zeit über I2C abzufragen. Würde das Programm stattdessen fortlaufend
über I2C die Uhrzeit abfragen, dann würde irgendwann der I2C-Bus komplett
"hängenbleiben" und das Programm nicht mehr weiterlaufen.
|
|
|
Die Displays werden von je zwei LED-Treiberbausteinen SAA1064 gesteuert. Diese Bausteine
vertragen mehr als 5 Volt Betriebsspannung – das ist nötig für die große
Anzeige in Richtung Bühne, wo jedes Ziffernsement aus vier in Reihe geschalteten LEDs
besteht und deshalb erst ab etwa 8 Volt zu leuchten beginnt.
Das Display auf der Bühnenseite ist auf einer extra-langen Lochrasterplatine mit 300 mm
Breite aufgebaut. Damit die Platine nicht unter dem Gewicht der Ziffermodule zerbricht, habe ich
auf der Rückseite über die gesamte Breite der Platine zwei starke Drähte
gelötet – die gleichen Luftballon-Haltedrähte, die wir schon vom
Mini-Zifferndisplay in
Martin's Bastelstube, Teil X kennen.
Ich habe beide Display-Platinen vor dem Bestücken mit mattschwarzem Lack eingesprüht,
damit das helle Platinenmaterial später nicht so hell durch das Displayfenster strahlt.
|
|
Zwischen den Ziffern auf der Anzeige sitzen einzelne LEDs, die unter anderem als
Doppelpunkte für die Zeitdarstellung verwendet werden.
Leider habe ich keine LEDs bekommen, die genau dieselbe Lichtfarbe wie die
Ziffern besitzen. Die einzelnen LEDs leuchten auch deutlich schwächer als
die Ziffernsegmente. Ich habe den Effekt zum Teil dadurch lindern können,
dass ich die LEDs auf zwei Ziffern nacheinander ansteuern lasse und somit die
Leuchtdauer verdoppeln konnte.
Damit die LEDs kein störendes Licht schräg zur Seite abstrahlen
können, habe ich den hinteren Teil jeder LED überlackiert –
zuerst weiß, damit das Licht nach innen reflektiert wird, und dann
mattschwarz, damit außen möglichst wenig zu sehen ist.
|
|
Die Tastenabfrage erfolgt über einen PCF8574, die LEDs in den Tasten werden direkt vom
Gold-Board über die geschalteten Ausgänge OUT1..OUT4 angesteuert.
Das Abgreifen der 4 Ausgänge erfolgt durch einen 14-poligen Pfostensteckverbinder.
So werden durch einen Stecker alle Anschlüsse gleichzeitig gelegt.
Über dasselbe Kabel läuft das Eingangssignal Di0 des Gold-Boards
(siehe oben beim Uhrenbaustein).
|
|
|
|
Ich musste die Digitaster mit zwei Platinenstreifen aufbocken, so dass sie mit ihrer oberen
Kante auf derselben Ebene wie der Wippenschalter ankommen. Mit dünnen Drähten
sind die Tasten von der oberen Platine des Stapels bis zur unteren (wo die gesamte
Verdrahtung stattfindet) durchverbunden. Für höhere Kontaktsicherheit der
Verbindungsdrähte sollte man die oberste Platine des Stapels in einer beidseitigen,
durchkontaktierten Version nehmen.
|
Am Ausgang OUT5 ist ein Piezo-Buzzer angeschlossen, der einen Ton ausgibt (z.B. wenn
beim Countdown die Zeit abgelaufen ist).
|
|
|
Das Gold-Board besitzt zwei I2C-Stecker mit verschiedenen Betriebsspannungen.
Die Bühnenanzeige wird am I2C-Stecker mit 12 V angeschlossen, die anderen beiden Platinen
auf der Schiedsrichterseite werden am i2C-Stecker mit 5 V angeschlossen. Ich habe die Platinen
und die I2C-Kabel entsprechend markiert.
VORSICHT! Wenn ihr die beiden I2C-Stecker am Gold-Board vertauscht, werden die I2C-Chips
auf der Schiedsrichterseite zerstört!
|
Die Spannungsversorgung der Dance-Clock erfolgt von außen durch ein 12 V - Netzteil oder
einen Akku , der eine Spannung zwischen 9.6 V und 13.2 V besitzt. Zu hohe Versorgungsspannung
zerstört die Dance-Clock!
Zum Schluss bekommt die Dance-Clock noch ein solides Holzgehäuse.
Hier seht ihr ein Querschnittsprofil.
Links ist eine Plexiglasplatte eingeschoben (die soll später getönt
sein), dahinter kommt die Bühnen-Anzeige.
Rechts ist eine Sperrholzplatte, dahinter kommen später die
Schiedsrichter-Anzeige und die Bedientasten.
|
|
|
Die Eingangsbuchse für die Betriebsspannung und der Hauptschalter
werden auf einem Alu-Winkel montiert. So können sie auch mit der
Schaltung verbunden bleiben, wenn man die Seitenwand abnimmt.
Außerdem muss die dünne Seitenwand auf diese Art nicht die
Kräfte aushalten, die auf den Stecker wirken.
|
|
Hier sind alle Gehäuseteile vor dem Lackieren gezeigt.
Für die große Rauchglasscheibe zur Bühnenseite
habe ich eine alte Schallplattenspieler-Adeckung zersägt.
Eine Filterscheibe aus Plexiglas wäre sicherlich schöner
gewesen, aber auch sündhaft teuer.
Die Schiedsrichter-Anzeige bekommt eine rote Filterscheibe aus dem Deckel
einer "Mon Chéri"-Verpackung.
Für die Montage der Platinen habe ich kleine Holzklötze
auf die Innenseite der Gehäusewände geleimt.
|
|
|
Das ist die fertige Dance Clock nach dem Lackieren aller Teile und
dem kompletten Zusammenbau.
|
|
Hier kommen noch ein paar Detailbilder:
Die nötigen Programme:
Name |
Verwendung |
kopieren nach |
Bemerkungen |
DanceClock_Test1.cc |
Testprogramm |
in euer Projekt-Verzeichnis |
Test der einzelnen Bausteine in der Dance-Clock |
DanceClock_Main.cc |
Hauptprogramm zum Betrieb der Dance-Clock |
in euer Projekt-Verzeichnis |
Hier ist die ganze Bedienungslogik enthalten |
I2C_PCF8574.h |
Bibliothek-Header |
RobotBuilder\GoldBoard\lib\include |
Funktionen für Benutzung des Bausteins PCF8574 |
I2C_PCF8574.cc |
Bibliothek-Funktionen |
RobotBuilder\GoldBoard\lib\src |
I2C_SAA1064.h |
Bibliothek-Header |
RobotBuilder\GoldBoard\lib\include |
Funktionen für Benutzung des Bausteins SAA1064 |
I2C_SAA1064.cc |
Bibliothek-Funktionen |
RobotBuilder\GoldBoard\lib\src |
I2C_DS1307.h |
Bibliothek-Header |
RobotBuilder\GoldBoard\lib\include |
Funktionen für Benutzung des Bausteins DS1307 |
I2C_DS1307.cc |
Bibliothek-Funktionen |
RobotBuilder\GoldBoard\lib\src |
seg7_font.h |
Bibliothek-Header |
RobotBuilder\GoldBoard\lib\include |
Funktionen zum Schreiben auf 7-Segment-Anzeigen |
seg7_font.cc |
Bibliothek-Funktionen |
RobotBuilder\GoldBoard\lib\src |
gbI2C.h |
Bibliothek-Header |
RobotBuilder\GoldBoard\lib\include |
Neue Funktionen für den I2C-Bus,
I2C-Datenrate nur 100 kBit/s
|
gbI2C.cc |
Bibliothek-Funktionen |
RobotBuilder\GoldBoard\lib\src |
Tschüß, euer Martin S.
|
E-mail:
Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!