Yoog's
Laberatorium Basteln mit'm Yoog |
|||||||||||||||||||||||||
Home -> Yooglabs | |||||||||||||||||||||||||
Supernova (Part 1) common DIY Projects |
Der
Bau von Supernova (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.
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.
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. 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. 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… 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.
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.
Future Things to Do: Es gibt noch ein paar Ideen, die ich erstmal nur so im Kopf behalte.
|