Yoog's Laberatorium
Basteln mit'm Yoog
      Home -> Yooglabs
 

Wie alles begann

Supernova (Part 1)
Supernova (Part 2)
Die Säureblubbse
Wo man so gerade ist

common DIY Projects

Scheinwerferakademie
über Fahrradspeichen

 

Der Bau von Supernova
(Teil 2 - der Elektronikschnickschnack)

(Achtung! - im folgenden Text werden zum Teil Arbeiten an Bauteilen vorgestellt, die mit 230V Netzspannung betrieben werden - diese Spannung ist lebensgefährlich)

Während der Phase 1 wurde das Gerät nun mit seiner Grundfunktionalität versehen. Aber das ist ja langweilig… Und deswegen wird in Phase 2 das ganze automatisiert. Und zwar mit einem Mikrocontroller. Dadurch wird unsere Lampe zu einem embedded System, an das wir bei der Gelegenheit auch gleich noch ein LCD-Modul dranfummeln. Das braucht an einem Gerät, was eine Lampe ein und wieder ausschaltet zwar kein Mensch, aber es sieht schick aus.

Hauptarbeit wird zunächst die Entwicklung eines geeigneten Controllerprogramms sein, welches wir dann auf den Mikrocontroller überspielen. Wir werden nun also die Firmware von Supernova entwickeln.

Dazu benutze ich ein Entwicklungsboard, auf welchem sich so etwas solide austesten lässt. Das Board (es ist ein STK500) ist zwar nicht billig, aber dafür kann man sich drauf verlassen, dass die Komponenten soweit funktionieren – man kann sich also erstmal ganz auf das Programmieren konzentrieren.

Hier mal der komplette Versuchsaufbau der Entwicklungsumgebung. Alles fertig verdrahtet (LCD-Modul, Kontrastregler, Schnittstelle, Netzteil).
Weil auf dem Entwicklungsboard serienmäßig ein AT90S8515 steckt entwickeln wir das Programm erstmal für diesen Prozessor.
Die Firmware können wir hinterher einfach (da in C geschrieben) auf den ATMega8 portieren – der sollte nämlich auch reichen.

Ein nicht unwesentlicher Teil der Programmierung besteht aus der Benutzerführung. (Der User soll ja bequem die Timerzeiten einstellen können). Da das Sekundengenaue Timing mittlerweile auf dem Testsystem funktioniert und auch das LCD-Modul lauter Zeug anzeigt, muss ich mir nun ernsthaft Gedanken zur Benutzung des Gerätes machen. Bei all der Überlegerei kommt man auch unweigerlich auf die Eingabegeräte (d.h. Knöpfe und Schalter). Irgendwie schwebte mir da so ein Steuerknüppel wie beim Gameboy vor – ja, das wäre was…

Also wurde die Programmierung erstmal unterbrochen und auf dem Trödelmarkt nach passendem Spielzeug gesucht. Hat auch nicht lang gedauert und ich hatte ein Joypad von irgendeiner Konsole in der Tasche, welches man prima ausschlachten und umfunktionieren kann.

Jaha, unten links – das Steuerkreuz muss aus dem Teil extrahiert werden. Nebenbei waren in dem Ding noch zwei schicke kleine Joysticks (Da fällt uns sicher auch noch eine Anwendung für ein) und ein Motörchen mit Unwucht – für das Force-Feedback-Geschüttel.
Ich hab mal vorsorglich alles ausgelötet und eingelagert.

Für das Steuerkreuz ist es wohl am geschicktesten, wenn man den Teil der Platine, auf dem das Gummizeug montiert ist, gleich weiterverwendet. Ich werde also den Dremel anschwurbeln und das entsprechende Stück ausschneiden. Das Platinenfragment wird dann von mir neu durchkontaktiert und für seine zukunftige Funktion auf den passenden Formfaktor gebracht.
(Ist einfacher, da die eigentlichen Schalterkontakte auf die Platine geätzt sind und nur über Kohleplättchen direkt an den Knöpfen überbrückt werden)
So, nu passt das auch in unser Gerät.
Jetzt werden da noch für alle fünf Anschlüsse kleine Löcher gebohrt und die Kontakte nach hinten rausgeführt damit man sie besser mit dem Controller verfriemeln kann.

Fertig verdrahtet von oben und unten. Die Flächen, wo die Drähtchen durchgeführt wurden mussten mit dem Dremel erst vorsichtig vom Lack befreit werden, damit man überhaupt was zum löten hat.

So, wenden wir uns erstmal wieder der Programmierung zu. Hier sollen im wesentlichen folgende Punkte realisiert werden.

• Die Belichtungszeit soll Timergesteuert sein (klar was sonst). Es sollen keine Sinnlos-Delay-Schleifen nach dem Motto „zähl mal bischen rum, damit Zeit vergeht“ verwendet werden. Das hätte nämlich den Nachteil, dass in der Zeit der Programmfluss unterbrochen ist und der Controller auf nichts, aber auch gar nichts reagieren könnte – so was ist einfach unschön.
• Die Belichtungszeit soll bequem (via Steuerkreuz und Display) programmiert werden können.
• Nach dem Ausschalten soll sich das Ding die letzte Belichtungszeit merken – Sie wird deshalb in den EEPROM geschrieben – der merkt sich das nämlich auch ohne Strom.

Alles kein Thema werden jetzt einige sagen, aber es lauern so einige Problemchen auf dem Weg. Zum Beispiel die Tastenentprellung. Das Controllerchen fragt nämlich im Extremfall etwa 4000 mal in der Sekunde ab, ob jemand gerade die Taste zum Minuten Hochzählen drückt. Da muss man ganz schön fix tippern, wenn man nur eine Minute draufhauen will – man hat dann nämlich nur eine 1/4000tel Sekunde dafür Zeit, die Taste wieder loszulassen.

Ein paar Worte zum Code:

Bei anderweitigen Experimenten sind mir derweil meine beiden Mega8 Controller abgeraucht – schade drum, macht aber nix. Wir haben ja noch Mega16er. Die sind für unseren Anwendungsfall zwar völlig überdimensioniert – aber kleinere müsste ich erst wieder bestellen. Also wird’s jetzt doch der Mega16.

Das hier ist mein erstes Controllerprojekt. Einige Codesequenzen sind nicht von mir (diese sind im Quellcode gekennzeichnet) alles andere lässt sich garantiert eleganter lösen – ist aber nun mal keine Raketensteuerung. Das Ding funktioniert und hält Bastelansprüchen stand.

In der Version 1.0 zeigt das Display bei der ersten Inbetriebnahme 255:255 an. Das liegt daran, dass der EEPROM ab Werk mit lauter Einsen zugekleistert ist. Man muss nur einmal die Zeiten nach unten korrigieren, dann stehen da auch vernünftige Zahlen drin. Wenn ich mal Muse hab, überleg ich mir Abhilfe – ich kann damit aber leben – ist ja nur einmal im Leben des Controllers.
[Nachtrag: Ich hab die Initialisierung schon eingebracht – war doch etwas nervig, nach jedem Neuprogrammieren 255:255 da stehen zu haben – er initialisiert jetzt auf 00:00]

Der Einbau der Steuermimik

So langsam nähern wir uns dem Ende des Projektes. Das Programm läuft, Display zeigt an, Steuerknüppel steuerknüppelt…
Das Zeug muss jetzt nur noch in den Scanner gefummelt werden. Danach hoffen wir dann, dass der ganze Kram auch den elektromagnetischen Herausforderungen durch die Spulen und den ganzen Kram standhält.
Das Einpassen von Steuerkreuz und Display ist Maßarbeit und ein Fall für unseren Dremel.

Aber zunächst brauchen wir ne neue Platine – wir erinnern uns an den ersten Versuch – auch diese muss wieder freiluftverdrahtet werden, weil wir ja noch keine schönen Platinen herstellen können.

Diesmal machen wir schön eins nach dem anderen – unübersichtlich wird’s dann von ganz allein.
Zuerst mal die Spannungsversorgung – die kann man aufteilen in Gleichrichter und Spannungsstabilisierung – Wenn alles richtig verrödelt ist, kommen hinten 5 V raus.

(Bei diesem Experiment waren’s noch 2,4V – das kann nun eigentlich überhaupt nicht sein *?*)

Am Ende sieht’s dann so aus. Man erkennt deutlich den gestiegenen Chaosfaktor, der hauptsächlich darauf zurückzuführen ist, daß das Relais beim Schalten ordentlich Saft braucht. Das hatte bei mehreren Schaltungsversionen die Folge, daß der Controller abgestürzt ist.

Ich hab das gelöst, indem ich das Relais und den Schalttransistor mit ner eigenen Spannungsversorgung incl. Stabilisierung versehen hab – Das Schaltsignal wird über einen Optokoppler an die Transistorbasis übergeben. Ob das elegant ist weis ich nicht – es funktioniert aber.
(Den Fehler mit der falsch gepolten Freilaufdiode hab ich natürlich auch hinbekommen)

Die Bestückungsseite ist schon etwas aufgeräumter. Hier ist die Platine schon auf dem Montageblech (früher waren da die Schaltungen für die Schnittstellen), welches dann wieder hinten in den Scanner kommt
Und da läuft schon der erste Test. Das Ein und Ausschalten verläuft prozessorgesteuert. Tadellos werkelt die Schaltung in noch fliegender Verdrahtung
Der Rest ist nur noch Sauerei mit dem Dremel. Ein paar Löcher hier – ein bischen Fräsen da.
Zum Schluss noch die Leitungen rangefummelt und der Deckel kann drauf


Und wenn man sich nicht mit nem Kabel vertüddelt, funktioniert das Ganze hinterher auch prima.

Supernova – eine prozessorgesteuerte Eieruhr, die eine Lampe an und ausschalten kann.

Übrigens kann man so was natürlich auch fertig kaufen. Z.B. bei Reichelt – für über 200 Euro…

Future Things to Do:

Es gibt noch ein paar Ideen, die ich erstmal nur so im Kopf behalte.

  1. Notaus: Eine Funktion, die Über ein Reedkontakt (mit nem Magneten am Deckel oder so was) überwacht, das auch keiner den Deckel beim Belichten aufmacht – und wenn doch, werden die Röhren abgeschaltet. (Ist ja schliesslich schädliches Licht) Das sollte einfach zu lösen sein und das bau ich sicher auch noch irgendwann ein.
  2. Der Einschaltvorgang ist noch eine undefinierte Sache. Die Röhren flackern. Die Belichtung ist nicht reproduzierbar. Mein Ansatz ist nur was für Erbsenzähler, da ich glaube, dass das keine ernsthafte Rolle spielt aber egal. Man könnte über einen Photosensor und/oder über Spannungskontrolle in den Röhrenstromkreisen (evtl. an den Startern) messen, wie lange es dauert, bis die Röhren korrekt leuchten bzw. man könnte auch einen mittleren Helligkeitswert beim Einschaltvorgang ermitteln und diesen dann mit der Belichtungszeit verrechnen…
    Wie gesagt, ist was für Erbsenzähler.
  3. Die Röhren benötigen einige Zeit, um Ihre volle Leistung zu entfalten. Das kann zu Problemen führen, wenn man mehr als eine oder eine doppelseitige Platine belichtet. Hier wäre vielleicht eine Art Vorglühmodus angebracht.