Home | Diary | Beschreibung | Galerie | Fotoberichte | IRC | Projekte | Gästebuch | Kontakt |
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.
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.
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'.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.
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 |
Eine Programmiersoftware mit ISP-Beschaltung | |
Mikrocontroller.com | Ein 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.net | Eine 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.de | Roland 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.net | Wahrscheinlich die AVR-Communityseite schlechthin. |
Can@Home | Mein Traumobjekt: eine komplette Haumautomation auf Basis von Mikrocontrollern und somit verteilter Intelligenz, jedoch zentral steuerbar. Ein Fernziel... :) |
www.datasheetcatalog.com | Datenblätter, viele Datenblätter... |
www.elektronik-projekt.de | Community für die Themen Roboter, Microcontroller und Elektronik, mit Forum auch für AVR |
roboternetz.de | Community rund um Robotik |
www.batronix.com | Batronix, Anleitungen für Elektronikbastelprojekte |
RS485 Bus | RS485 Bus (und Abgrenzung zu CAN) |
www.elektronik-kompendium.de | Ein Elektronik-Kompendium, wie der Name sagt. Auch mit Transistordatenblättern. |
RS232 für µC | RS232 in Software auf µC |
Übersicht Pinbelegung | Übersicht Softwaretools und Pinbelegungen |
Reichelt.de | Reichelt, der Elektronik-Shop bei dem ich meine Bauteile bestellte |
Girder | sehr nützliches Programm zum Verbinden unterschiedlicher Ereignisquellen mit Aktionsmöglichkeiten, primär gedacht zur Computersteuerung mittels Fernbedienung |
LIRC | LIRC (Linux Infrared Remote Control) dient zum Empfangen der IR-Signale |
Wake on IR | Kleiner Bausatz zum Anschalten des PC via Fernbedienung, LIRC-kooperativ |
Atmel I2C | Digitales Thermometer mit Atmel und I2C |
Henne's Sites | Bauanleitung für DMX-fähige Dimmer/Schaltpacks und mehr |
LED-Treiber | Informationen zu LEDs: Ansteuerung, Dimmen,etc |
ePanorama.net | Eine sehr umfangreiche Sammlung zu den verschiedensten Themen, mit Infos, Links und Schaltplänen |
AVR-GCC-Tutorial | Das AVR-GCC-Tutorial von Mikrocontroller.net - ausführliche Beschreibung des AVRs mit allen Aspekten |
iPod Ladegerät | Selbstbau iPod Ladegerät |
Watterott Electronic | Watterott, 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) | |