Bastelprojekte: Elektronik

World Domination Control Box A

Bastelprojekte: - Hortlicht -Flintstone - Moodlight - Mood Cluster - Dragonology - Doomsday Machine -
Der Traum

Schon immer hatte ich mir gewünscht an einem großen Kontrollpult zu stehen, an dem ich möglichst alles und jedes überwachen und schalten kann. Damit mischten sich kindliche Allmachtsphantasien genauso wie Technikbegeistertheit. 19" Schaltschränke zu sehen mit ihren vielen Kabeln und Blinkenlights war für mich als Nestling ein tolles Erlebnis. Ideen von zentralisierter Steuerung der Hauselektronik - mit tagtraumhafter Übertreibung - hatte ich ebenfalls seit früher Zeit. Ich sprach damals scherzhaft von 'Weltbeherrschung' auch wenn ich nur schalten im kleinen Rahmen und von einzelnen Verbrauchern meinte. Doch die Idee zählt :)

Rasch merkte ich jedoch daß meine Denkweise zu binär ist und ich mit "Strom fließt - Strom fließt nicht - Strom fließt... uh... Papi, lötest du mir mal bitte einen neuen Transistor ein?" auch beim KOSMOS Elektronikbaukasten nicht allzu weit kam. Gemocht habe ich die Versuche, doch längst nicht alles verstanden. Damals zumindest, das war in der Grundschule. Mit Eintritt ins Gymnasium interessierte ich mich für die Computertechnik. Einerseits weil ich dort viel mehr und interessante Möglichkeiten hatte - andererseits weil Fehler meinerseits nach einem Reset wieder beseitigt waren.

Doch je mehr ich dort auch machte, von tiefster Assemblerprogrammierung bis zum höchsten Java, von 3D-Computergrafik (Povray und selber implementiert, Demoscene etc) bis zur Netzwerktechnologie, eines hatte all dies doch gemeinsam: die ganzen Welten die ich aufbaute und kennenlernte waren fest innerhalb der Grenzen meines Monitors eingeschlossen. Meinen Traum von Steuerung externer Geräte habe ich nie verwirklichen können... bis jetzt.

Realisation

Als ich im November 2004 günstig einen 10-Meter Lichtschlauch erstand und er sich wunderbar in meinen Bettbereich - den ich liebevoll 'meinen Hort' nenne - einfügte, tauchte mein alter Wunsch wieder auf. Und diesmal war ich fest gewillt ihn umzusetzen. Suran hat so häufig von Atmels gesprochen und wie einfach sie seien, so daß ich mir einen besorgte. Gespielt hatte ich mit solchen Gedanken schließlich lange genug.

All dies wäre jedoch nicht möglich gewesen wenn ich nicht ein paar Leute gehabt hätte die ganz konkret mein elektronisches Unwissen ausgeglichen hätten und mich bei der Planung berieten. Neben Suran und nifelan ist hier ganz speziell Felfur zu nennen. Dieser Kater kannte sich richtig gut aus und hat mir in langen Queries meine sehr anfängerhaften Fragen geduldig erklärt. Daher hier nochmals ein sehr spezieller Dank an ihn - ohne seine felide Hilfe wäre ich niemals so weit gekommen.

Die Umsetzung des - in Anlehnung an alte Tradition 'World Domination' getauften - Projekts verwendet einen Atmel ATMEGA8535 mit einer externen Taktung von 8 MHz, welcher über einen Spannungsregler saubere 5V vom ungeregelten '12' V Netzteil erhält. Daneben befindet sich ein MAX232 Treiberbaustein welcher für die Kommunikation mit dem PC über die serielle Schnittstelle zuständig ist. Dieser ist notwendig da Atmelseitig (TTL = 5V) und PC-seitig (RS232 = 12V) unterschiedliche Spannungen im Einsatz sind. Dafür benötigt er 1µF Kondensatoren - der von mir als Vorlage verwendete Stückplan sieht 100nF vor, was nur mit der Spezialvariante MAX232A funktioniert. Der Aufbau geschah auf einer Standard-Lochstreifenplatine. Die Schaltung der Last übernimmt ein Solidstaterelais, das sicherheitshalber gleich bis 8 Ampere ausgelegt ist.

 
Die WoDoInCo ('World Domination Intelligent Control') in ihrer ersten Ausbaustufe fertig aufgebaut. Neben dem Atmel befindet sich der Treiber für den seriellen Port auf der Platine, daneben die benötigten Kondensatoren für den Spannungsdoppler. Natürlich sind die ICs gesockelt - so gut trau ich meinen Lötkenntnissen noch nicht. Rechts in der Ecke der Spannungsregler, darunter die Stiftleiste für die WoDoCoBo A.
WoDoInCo voll funktionsfähig und im Einsatz. Momentan steht sie gehäuselos auf einem leeren Regalbrett neben meinem Schreibtisch. Die Verbindung erfolgt mittels Stiftleisten auf der Platine und, hinter kurzen Flachbandkabeln, aus SUB-D Steckern zum PC. Die WoDoCoBos werden über Westernstecker angeschlossen.
Ein Versuch mit echter Netzspannung am Solidstaterelais. Das erste mal daß ich das ungefährliche Gebiet von unter 20 Volt verlasse, daher verwand ich etwas mehr Mühe auf den Aufbau. Die vorigen Tests waren fliegende Aufbauten, bei denen die einzelnen Komponenten mit Krokodilklemmen zusammengehalten wurden - oder auch mal mit dem Daumen.
An das (hier aufgerollte) Anschlußkabel kann eine LED-taugliche Niederspannung (5V mit 470 Ohm Vorwiderstand bei mir) angeschlossen werden und der angeschlossene Verbraucher wird eingeschaltet.
Ein Blick auf meinen Schreibtisch während der Bastelphase. Die Lichterkette war ein Teil meiner Weihnachtsdekoration und diente hier als deutlich sichtbarer Testverbraucher. Damit auch ein herunterrutschendes Kabel nicht plötzlich meinen Arm mit Phase kontaktiert klebte ich die Kabel sogar am Tisch fest :)
Unten sieht man das noch unbearbeitete Steckernetzteil, der zugeklappte Laptop weist darauf hin, daß ich im Verlauf der paar Tage nichtmals meine Emails abgerufen hatte.
 
Die WoDoCoBo A ('World Domination Control Box A') fertig aufgebaut und einsatzbereit. Neben dem eingebautem Solidstaterelais zum Schalten der Netzspannung - von dem ich hoffe daß es nicht wirklich warm wird, da es keinen Kühler besitzt - spendierte ich ihr noch drei Taster sowie eine Leuchtdiode. Die WoDoCoBo A enthält keinerlei eigene Logik, es sind vielmehr alle Komponenten (Relais, LED, drei Taster) über eine seperate Leitung und die gemeinsame Masseleitung ansprechbar. Einzig das Relais und die LED besitzen einen integrierten 470 Ohm Vorwiderstand zum direkten Anschluß an 5 Volt.
Sicht von der Seite. Die Westernbuchse war ursprünglich Grau, der Optik wegen malte ich sie jedoch schwarz an.
Erstaunlicherweise ließen sich die Schrauben nur schwerlich hereindrehen. Vermutlich selbstdrehende Exemplare die in ein unvorbereitetes Loch gesteckt werden. Die letzte kriegte ich trotz Kraftanstrenung nicht gänzlich rein. Umso erstaunlicher daß eine Seite locker ist...
WoDoCoBo A im Einsatz neben meinem Bett. Schick.
Der SUB-D-Stecker gehört zu einem unbenutztem Kabel an das ich ursprünglich ein VT420 Terminal anschließen wollte. Das rote Kabel ist die moderne Variante: Ethernet für Spyro, wenn ich ihn zu mir ins Bett nehme.
 
Der Kauf dieses Lichtschlauchs war der eigentliche Anlaß dieses Projekt in Angriff zu nehmen. Umso größer war die Freude das Projekt erfolgreich beendet zu sehen und das Licht erstmals mit Hilfe der WoDoCoBo A schalten zu können. Natürlich - ganz im Sinne der ursprünglichen Idee - ist sie jetzt auch vom Computer aus schaltbar... und damit prinzipiell von überall aus dem Internet heraus :)
Das schnell implementierte Minimalprogramm kennt neben An (1) und Aus (2) auch Toggle (3) sowie Leuchtstatus auslesen (4), welches über den Computer mit den in Klammern angegebenen Zahlen ausgewählt werden kann.
Eine weitere Sicht auf den Lichterschlauch, diesmal Richtung Fußende meines Drachenhorts.
ISP

Das Konzept des ISP - 'In System Programming' - ist genial und ermöglicht eine sehr leichte Handhabung des Mikrocontroller, da dieser für eine Programmierung nicht aus seiner Schaltung herausgenommen werden muß wie wenn ein externer Programmer zum Einsatz kommen würde. Die Pinbelegung auf Seiten des Atmels ist eindeutig gekennzeichnet im Datenblatt und auch die Belegung einer Stiftleiste (2x3 oder 2x5) ist relativ einfach zu finden, z.B. hier oder hier:

MOSI   1 - 2  VCC +5V
LED    3 - 4  GND
Reset  5 - 6  GND
SCK    7 - 8  GND
MISO   9 -10  GND

Jedoch stellte sich die PC-Seite als problematisch heraus. Hier scheint die Zuordnung von ISP-Pins zu Ports der parallelen Schnittstelle die Permutation sämtlicher Leitungen zu sein. Hierbei eine zu finden die sowohl der verwendete Programmer verwenden konnte als auch man neben einer scheinbar gar nicht so eindeutigen Bezeichnung eine explizite Pinbelegung dabei hatte erwies sich als frustrierender als zuerst angenommen.

Für meine Verwendung mit Bascomp von MCS Elektronics und TwinAVR erwies sich diese Belegung als funktional:

2  - SCK
3  - Reset
9  - Mosi
11 - Miso
20 - GND (eigentlich 18-25)

Vcc habe ich nicht angeschlossen, da ich die externe Spannungsversorgung aktiviert lasse. Für längere Kabel wird ein zusätzlicher Treiber empfohlen/benötigt, bei mir haben es vier Widerstände zwischen den Datenleitungen getan.

Im TwinAVR dann die Einstellung 'LPT1' und '8000 KHz' wählen. Vorher muß LPT1 mit dem beigelegtem Programm freigeschaltet werden (userport.exe, "378-37a" [add], [update], [start], userport.sys muß dazu in %winnt%\systems32\drivers liegen). Wenn ein Klick auf 'Config' rechts im schwarzen Feld den AVR korrekt anzeigt, weiß man, daß die Kommunikation funktioniert. Das entspricht übrigens der Pinbelegung von Steve Bolts Programmer, 'sp12'.

Fusebits

Die Fusebits für den Atmel müssen entsprechend gesetzt sein. Für eine Taktgeschwindigkeit von 8 MHz durch einen externen Quarz müssen die Fuses CKSEL 0 bis 3 gesetzt sein. Mit TwinAVR sieht dies dann so aus wie auf untenstehenden Screenshot.

Girder

Das Programm Girder (mittlerweile leider Shareware) habe ich schon seit längerem bei mir im Einsatz. Es dient der Steuerung des Computers mittels einer üblichen IR-Fernbedienung. Es kann auf (Win)Lirc aufbauen, hat jedoch auch andere Ereignissensoren. Bei mir läuft LIRC auf einem seperaten Rechner und wird von Girder über das Netzwerk abgefragt. Durch seine Plugins läßt sich Girder in vielerlei Hinsicht erweitern. Speziell das 'Generic Serial Port Plugin' erwies sich hier als Treffer: Mit diesem ist es möglich eine direkte ereignisgesteuerte Kommunikation mit dem Atmel zu betreiben. Ich kann somit aus Girder heraus Aktionen auslösen - wie das Schalten meines Lichts - und auch die Tastendrücke an meiner WoDoCoBo in den Computer weiterleiten und dort nach Belieben verarbeiten.

Schnell war eine neue Tastenbelegung gefunden und nun kann ich mit einer Taste auf der IR-Fernbedienung mein Bettlicht an/ausschalten, wobei der Schaltzustand auf dem Bildschirm angezeigt wird. Dazu wird die vom Atmel gelieferte Schaltbestätigung als eingehendes Ereignis betrachtet welche die Anzeige auslöst. Ferner habe ich die Taster B und C mit den Funktionen 'Winamp: Play' und 'Winamp: Stop' versehen, wobei Taster C zusätzlich das Licht ausschaltet. (Eine Funktion 'Pause' die nicht-toggelnd, d.h. unabhängig vom aktuellen Spielzustand in den Pausemodus schaltet, scheint Winamp nicht zu bieten)

Ein paar der Links die ich als recht nützlich empfand
PonyprogEine Programmiersoftware mit ISP-Beschaltung
Mikrocontroller.comEin Forum für Mikrocontroller, vom CCC Ostfriesland. Sie beschreiben einen Schaltplan für erste Gehversuche mit Atmel-AVR, inkl. genaue Stückliste zum Bestellen. Ich habe mich an den grundsätzlichen Aufbau (Basisplatine + serielle Kommunikation) gehalten.
Mikrocontroller.netEine weitere Seite über AVRs, mit Anfängertutorial und deutschem Forum (auch wenn die verwendete Forumssoftware grausam ist). Ebenfalls hier zu finden ist ein Mikrocontroller-Wiki
Rowalt.deRoland Walter beschreibt anhand eines simples Versuchsaufbaus - der zu dem von Mikrocontroller.com identisch ist - erste Schritte mit der AVR-Programmierung. Diesem Tutorial folgte ich. Er verwendet einen Basicdialekt dafür, doch das ist für den Anfang ausreichend und die serielle Kommunikation gestaltet sich dadurch sehr bequem.
avrfreaks.netWahrscheinlich die AVR-Communityseite schlechthin.
Can@HomeMein Traumobjekt: eine komplette Haumautomation auf Basis von Mikrocontrollern und somit verteilter Intelligenz, jedoch zentral steuerbar. Ein Fernziel... :)
www.datasheetcatalog.comDatenblätter, viele Datenblätter...
www.elektronik-projekt.deCommunity für die Themen Roboter, Microcontroller und Elektronik, mit Forum auch für AVR
roboternetz.deCommunity rund um Robotik
www.batronix.comBatronix, Anleitungen für Elektronikbastelprojekte
RS485 BusRS485 Bus (und Abgrenzung zu CAN)
www.elektronik-kompendium.deEin Elektronik-Kompendium, wie der Name sagt. Auch mit Transistordatenblättern.
RS232 für µCRS232 in Software auf µC
Übersicht PinbelegungÜbersicht Softwaretools und Pinbelegungen
Reichelt.deReichelt, der Elektronik-Shop bei dem ich meine Bauteile bestellte
Girdersehr nützliches Programm zum Verbinden unterschiedlicher Ereignisquellen mit Aktionsmöglichkeiten, primär gedacht zur Computersteuerung mittels Fernbedienung
LIRCLIRC (Linux Infrared Remote Control) dient zum Empfangen der IR-Signale
Wake on IRKleiner Bausatz zum Anschalten des PC via Fernbedienung, LIRC-kooperativ
Atmel I2CDigitales Thermometer mit Atmel und I2C
Henne's SitesBauanleitung für DMX-fähige Dimmer/Schaltpacks und mehr
LED-TreiberInformationen zu LEDs: Ansteuerung, Dimmen,etc
ePanorama.netEine sehr umfangreiche Sammlung zu den verschiedensten Themen, mit Infos, Links und Schaltplänen
AVR-GCC-TutorialDas AVR-GCC-Tutorial von Mikrocontroller.net - ausführliche Beschreibung des AVRs mit allen Aspekten
iPod LadegerätSelbstbau iPod Ladegerät
Watterott ElectronicWatterott, Elektronikversender, vertreibt SparkFun-Teile in Deutschland
Thomas Pfeifer: Platinen Ätzen, AVR-Projekte, Quadkopter
Instructables: Turn your EAGLE schematic into a PCB (and other tutorials there)
Stand: Februar 2005. Fragen, Kommentare, Hinweise an Zefiro.