Samstag, 18. Februar 2012

Wie schnell doch die Zeit vergeht...

ist vielleicht nicht die beste Einleitung für den ersten Blogeintrag, aber sie passt einfach zu gut zu dem Projekt das ich hier ein wenig beleuchten will.
Im Großen und Ganzen geht es hier um Zeitreisen und wie diese zu bewerkstelligen sind. Ok, nein nicht wirklich es geht um ein Geburtstagsgeschenk für einen Freund. Und nicht nur um irgendeinen Geburtstag sondern die magische -30-. Nachdem besagter Freund auch gerade am Hausbauen ist, lag die Idee nahe ihm etwas Sinnvolles zu schenken, etwas mit dem er etwas anfangen kann, was ihm die Arbeit erleichtert oder etwas Geld sparen hilft. Und nach einem erheiternden Filmabend mit den neu aufgearbeiteten Zurück in die Zukunft Filmen war alles klar, eine Zeitmaschine muss her!
Soweit die Vorgeschichte. Die ursprüngliche Idee war es einen Wecker mit zwei Alarm Funktion zu bauen, welcher dem Design der Zeitleitung aus den Filmen ähnelt. Alledings gab es einige Komplikationen welche sich größtenteils mit den zwei Worten Zeit und Geld zusammenfassen lassen. 
Nachdem ein anderer Freund die Idee hatte ein LED-Torte zu bauen haben wir die beiden Ideen kombiniert, was zum Endergebnis der Zeit Torte geführt hat.



Durch die Entscheidung eine Torte zu machen fielen einige sehr Zeit und Ressourcen aufwendige Teile weg. So wurden die Alarmfunktion sowie die Eingabetasten geopfert. Desweiteren konnte dank Schokoglasur auf ein Gehäuse verzichtet werden, welches meine größte Sorge war. Zu diesem Zeitpunk (ca ein Monat vor der Feier) war schon entschieden das ich zur Ansteuerung einen Arduino UNO in Kombination mit einem DS3234 Realtime Clock IC verwenden werde. Was noch nicht ganz geklärt war, war wie die insgesamt 39 Siebensegment-Anzeigen anzusteuern sind. Zum Glück gibt es die große Arduino Community, welche auf fast alle Fragen eine Antwort hat. Die Antwort die ich gefunden habe hieß MAX7219 ein Maxim IC, welcher dafür ausgelegt ist 8 7-Segment Anzeigen bzw. 64 individuelle LED's anzusteuern (Datenblatt). Er wird von der Community zwar hauptsächlich zur Ansteuerung von LED-Matrizen verwendet, trotzdem gibt es sehr gute Arduino Librarys für den 7-Segment Betrieb. Diese Seite hat mir sehr mit der Ansteuerung geholfen. Dort ist auch ein Link auf die LedControl Library zu finden. Ein weiterer Vorteil des Chips ist das er sich beliebig kaskadieren lässt. Wenn ich also 16 Anzeigen habe kann ich 2 Treiber IC in Serie hängen und das Signal vom ersten weiterleiten. Für die 39 Anzeigen die in der Torte verbaut wurden, wurden 5 Treiber Bausteine verwendet.
Mit allen wichtigen Teilen bestellt und unterwegs (Ebay kann bei IC's ein guter Tipp sein) konnte ich mich mal ans allgemeine Layout machen. 39 7-Segment Anzeigen brauchen mehr Platz als man vermuten würde. Hier mal ein paar Anordnungs Versuche.



Ich habe mich für das untere Design entschieden, da es für doppeltes Europlatinen Format fertig mit Photolack beschichtetes Basismaterial gibt, außerdem ist auf dieser Anordnung mehr Platz für die Leiterbahnen, welcher wie ich später draufgekommen bin dringend notwendig war.
Auf dem oberen Bild ist ein Ausschnitt einer Skizze zu erkennen auf der man auch sieht, dass für den Monatsbereich (die ersten 3 Anzeigen) jeweils 14-Segment Anzeigen vorgesehen waren, welche abermals dem Zeit und in diesem Fall auch dem Platz-Sparstift zum Opfer gefallen sind.
Mittlerweile waren die ersten Treiberbausteine und die Tatsächlichen Anzeigen angekommen.
Noch 14 Tage bis zur Party also bloß nicht hetzen.  Auch wenn nicht mehr viel Zeit war ein Probelauf auf einem Steckbrett musste sein.


Ein kurzer Test mit einer Anzeige und einem IC. Das klappt ja wirklich! Dann bloß nicht lange aufhalten und weiter zum nächsten Test.


Zwei Treiber in Serie jeder mit einer Anzeige das wird ja immer besser. Hier noch ein Video im Betrieb.
 

Der Test wurde noch mit 4 Treibern erweitert um zu sehen wie Störunganfällig die Clock und die Load Leitung ist und ob eine Verstärkerschaltung notwendig wird, aber zum Glück hat alles wie geplant funktioniert.
Der nächste Schritt war die Platinen Herstellung. Nachdem ich 39 7-Segment Anzeigen nicht einfach fliegend verbauen kann hab ich mich entschieden eine Platine zu ätzen. Auf die genaue Funktion der Schaltung werde ich später mal eingehen aber im allgemeinen ist es einfach 5 mal die gleiche Ansteuerung plus Sockel für den Arduino und den Zeitgeber.
Die erste fertige Platine war die Frontplatte mit den Anzeigen. Eine Sache die ich daraus gelernt habe ist das ich lernen muß doppelseitige Platinen zu Ätzen. Bei 39 7-Segment Anzeigen jede mit 10 Anschlüssen macht das schon ziemlich viele Drahtbrücken.


Noch sind einige Löcher zu bohren


ca 500 Löcher später


Lasst das Drahtbiegen beginnen


 Fast geschafft



 noch ein paar Sockel verstümmeln und Fertig.


Nach einem langen Abend mit viel Kaffee und blutigen Fingern war die erste der beiden Platinen fertig. Die Steuerplatine konnte nur einfacher werden. Oder?
Und da ich nichts schreiben will und ihr sicher auch lieber Bilder anschaut hier noch ein paar Eindrücke zur Entstehung der Steuerplatine.

Belichtungs- und Ätz-Gerät


Nach dem Belichten und Entwickeln


sieht vielversprechend aus


hat das Versprechen gehalten


Fertig aufgebaute Steuerplatine mit Arduino und Realtime Clock IC


Auf dem letzten Bild kann man schon die ersten Verbindungen zwischen der Steuer und der Anzeigeplatine erkennen. Hier kommt der Punkt mit dem "die Steuerplatine kann nur einfacher werden" wieder ins Spiel. Um die Platine selber einfacher zu halten habe ich die ansteuer Pins nicht als Stiftleisten oder gar Steckverbindungen hinausgeführt sondern nur als Pins
Also ein Tipp zwischendurch. Auch wenn ihr eine Zeitmaschine baut Schaut das ihr genug Zeit habt um sie fertig zu stellen.
Weil Bilder alleine auf Dauer ein bisschen langweilig werden kommen jetzt mal ein paar Videos.

 Der erste IC ist verbunden  Moment.... 4 6 2 3 7 5 ...  
Mist das ist nicht die richtige Reihenfolge


Ja so ist es besser. Die erste Zahl rechts unten bezeichnet den ersten Treiber IC 
die nächsten Stellen zeigen ihre Position. Die grüne reihe zb. beginnt 
links mit 3 für den dritten Treiber IC und geht bis 7 danach kommt IC4 
dessen Anzeigen gehen um die Ecke in die rote Zeile


Mit allen 5 Treiber IC's angeschlossen sieht die Sache doch viel hübscher aus.
Wer sich fragt wieso die Anzeigen immer auf 8-er wechseln, damit habe ich nur 
überprüft ob auch wirklich alle LED's leuchten. Das ein paar Punkte nicht leuchten ist mir erst jetzt aufgefallen aber in diesem Stadium steckten die 7-Segment Module nicht komplett im Sockel. Ich nehme an das das der Fehler war.


Mit allen Hardware Herausforderungen hinter mir konnte ich mich endlich dem Programmieren zuwenden. Der Code für dieses Projekt besteht zum größtenteil aus angepassten Beispielcode sowohl für die Displaytreiber als auch für den Timer Chip.


Also um die Angezeigten Daten zu erklären. Die gelbe Zeile zeigt das Geburtsdatum des Geburtstagskindes (ich hoffe er verzeiht mir das ich so schamlos sein Alter offen lege). Die mittlere Zeile zeigt das Aktuelle Datum mit Uhrzeit (ja ich weiß es war schon ein Tag nach seinem Geburtstag aber die Party war zum Glück erst ein paar Tage später). Die oberste Zeile zählt die Sekunden seit seiner Geburt. Das Minus war ein Platzhalter für den Übertrag wurde allerdings nach mehreren Anfragen aller "Warum zählt er runter" entfernt. Der Übertrag findet übrigens erst in ca 3 Jahren statt.
Zu diesem Zeitpunkt konnte ich es kaum glauben aber ich war tatsächlich im Zeitplan. Den nächsten Teil konnte ich erst am Tag der Party fertigen, also gab es eine kurze Verschnaufpause.

Nachdem ich Backtechnisch ein komplett unbeschriebenes Blatt bin, bin ich den Weg eines Feiglings gegangen und haben mir einen fertigen Kuchenboden besorgt (im nachhinein betrachtet eine gute Idee so knapp wie das alles geworden ist aber dazu später mehr)


Um nocheinmal kurz zum mechanischen Teil zurück zu kommen die Abmessungen der Platinen waren 200mm x 150mm also ca 1cm schmäler als 2 Europlatinen. Das ergibt eine Diagonale von ca 250mm. 
Jetzt hatte dieser wunderschöne zweifach geschnittene mit Pergament-Trennlagen versehene Wiener Boden leider nur einen Durchmesser von ca 230mm, was dazu geführt hätte, dass die Leiterplatten über den Kuchen geragt hätten. Aber kein Hindernis ist zu groß oder in diesem Fall zu klein. 
Wie sie schon damals im Film Contact sagten warum einen Kuchenboden kaufen wenn man um das doppelte Geld 2 bekommt (in dem Film ging es doch um Kuchen oder?). Ein bisschen schnippeln und schon bekommt man diese Form.


 Die Mitte ein wenig überlappen lassen damit der Boden nicht auseinander rutschen kann.


 und schlussendlich noch mit Marillenmarmelade als Kleisterersatz bestreichen. und schon hat man eine riesen PSP die noch dazu essbar ist (das nächste mal vielleicht)


Das ging ja recht fix. Jetzt musste nur noch die Schaltung eingepackt werden. Die Form des Kuchens habe ich mit einer Papier Schablone auf 10mm dicken Architectural Foam (keine Ahnung wie das auf Deutsch heißt Architektur Schaum klingt komisch) übertragen und ausgeschnitten.


Immer schön kurze Schnitte.



Insgesamt waren es 5 Schichten eine ganze und 4 mit einer Öffnung für die Schaltung.



In die mittlere Schicht wurde noch eine Abstandsplatte eingearbeitet (und ja das ist wirklich ein Zahnstocher davon kommen noch mehr)


Wie versprochen, mehr Zahnstocher.


Die Schaltung hat das Einpacken überlebt. Moment 14:03 die Party beginnt um 19:00. Das sind noch ca 17820 Sekunden! Zeit genug.



So jetzt kommt der heikle Teil. Das ganze Ding muß Schokoladendicht werden, man will ja die Einzelteile eventuell nochmal verwenden können. Zuerst mussten alle Anzeige entfernt werden.



Schön sortieren wir wollen die Farben ja nicht vertauschen.


Das ganze Paket wurde jetzt mit Frischhaltefolie eingewickelt und die Anzeigen wieder durch die Folie in ihren Sockel gesteckt. Dabei wurden auch gleich die überstehenden Zahnstocher entfernt.


Strom und USB Kabel haben auch einen eigenen Auslass bekommen. 390 Leuchtdioden (wenn alle Anzeigen auf 8 stehen und die Punkte leuchten) die theoretisch jeweils jenseits der 10 mA ziehen können würden ohne externer Stromversorgung permanenten Schaden am USB Port des Computers verursachen.  Damit die Anzeigen auch ein wenig von der Schokolade geschützt würden bekamen sie einen Kragen aus Overheadfolien.


So die Stunde der Wahrheit. Der Arbeitsplatz hatte sich nun endgültig in die Küche verlegt. 


  Ganz vorsichtig, ganz vorsichtig ...


 Eine größere Unterlage wäre kein Fehler gewesen.


 Nein eine größere Unterlage wäre wirklich wirklich kein Fehler gewesen aber wenigstens hat dann die Küche ein paar Tage nach Schokolade gerochen. 
Nach dem Entfernen der Overhead Folie wurden die Spalten noch mit einem feinen Messer "zugespachtelt".


So fast fertig, der Rand unten wurde noch weggeschnitten und die Kabel ein wenig gesäubert. Und es ist sich alles perfekt ausgegangen. Oh 17:00 noch 2h.


Hier noch ein Paar Bilder vom Endprodukt, welche mir großzügigerweise vom Geburtstagskind zur Verfügung gestellt wurden. Irgendwie war die Freude so groß das ich komplett darauf vergessen hatte die fertige Torte abzulichten.


Zum krönenden Abschluss noch ein Video das am Tag nach der Party gemacht wurde. Auf dem Video ist auch noch eine zweite Torte zu sehen, welche mit einer 5x6 LED Matrix ausgestattet ist. Sie ist batteriebetrieben und wird über einen AT-Mega angesteuert.



So noch ein kurzes Schlusswort. Im laufe der nächsten Wochen werde ich noch genauer auf die Schaltung, Fehlerquellen und Verbesserungsvorschläge eingehen. Ich werde auch ein wenig auf das Programm eingehen auch wenn es da sicher bessere Bezugsquellen gibt. Außerdem will ich hier ein paar vergangene sowie zukünftige Projekte veröffentlichen die vielleicht für den einen oder die andere als Inspiration wirken.