Prototyp:
Funkauslöser Nr. 3
[24.03.2006]
Die Teile für den Funkauslöser
Nr. 2 gingen vor einiger Zeit zuneige und ich bin ehrlich gesagt auch eine
ganze Weile nicht mehr zum basteln gekommen.
Aber jetzt geht es mit neuem Elan und neuen Möglichkeiten ans Werk.
Im Februar/März 2006 bin ich durch nicht mehr nachvollziehbare Umstände
auf das Thema "Mikrocontroller" aufmerksam geworden. Von der Existenz
dieser Gattung "Mikrochips" wußte ich schon länger, aber
irgendwie hat mich das nie sonderlich beeindruckt - geschweige denn dazu bewogen,
mich mit den Dingern zu beschäftigen.
Irgendwann im Februar bin ich dann durch einige Elektronik-Foren geschlendert
- habe hier und da etwas aufgeschnappt, was im Hinblick auf meine Funkauslöser
von Interesse war - und letzendlich gab mir die AVR-Seite von Gerhard Schmidt
(www.avr-asm-tutorial.net) den nötigen Anstoß und alle Informationen,
mich für AVR Mikrocontroller zu begeistern. Die Seite von Gerd kann ich
allen AVR Mikrocontroller-Einsteigern wärmstens empfehlen. Sie ist lustig,
locker aber vor allen Dingen informativ und sehr kompetent geschrieben!
Anmerkung: Es gibt außer den AVR Controllern der Firma Atmel noch viele
andere Mikrocontroller, die sicherlich ähnlich gut funktionieren. Da ich
aber bei meiner Suche nach Informationen zu diesem Thema dermaßen reizüberflutet
worden bin, habe ich mir es erspart, mich auch noch mit anderen Mikrocontrollern
zu beschäftigen. Vielleicht gibt es welche, die ich genausogut benutzen
könnte, aber ich bin eben zuerst über die AVR Controller gestolpert.
Außerdem kommt mir das Design und die Programmierung der AVRs sehr entgegen.
Erinnert mich ein bißchen an die guten alten Assembler-Zeiten auf dem
C-64 ;-). Und überhaupt... Das Informationsangebot im Internet scheint
für AVR Controller überproportional groß zu sein... und das
muß ja was zu bedeuten haben. ;-)
So, und nun tüftle ich an einer verbesserten Version des bekannten Funkauslösers
Nr. 2,
bei der ich meine frisch gewonnenen Mikrocontroller-Erfahrungen mit einfliessen
lasse. Die Möglichkeiten, die einem die Programmierung eines kleinen Mikrochips
bietet, sind schier unerschöpflich. Bei der Entwicklung der Software für
den neuen Auslöser bin ich von einer Entzückung in die nächste
gefallen (wenn ich nicht gerade zähneknirschend Programmfehler gesucht
habe) ;-).
Um überhaupt mit einem Mikrocontroller arbeiten zu können, brauchte
ich erst einmal eine passende Entwicklungsumgebung und ein Experiementierboard.
Da ich mich für die AVR Mikrocontroller der Firma Atmel entschieden habe,
war die Frage nach der Entwicklungs-Software auch schon gelöst. Die Firma
Atmel bietet kostenlos eine kommplette Entwicklungsumgebung für Ihre Chips
zum download an (inkl. Simulator und debugger). Eigentlich einleuchtend, die
wollen ja auch, daß man ihre Controller kauft und benutzt.
Blieb noch das Experimentierboard und - ganz wichtig - ein sog. "Programmer",
mit dem man seine Software in den Chip "brennt".
Ach
so, nur mal kurz zur Erläuterung:
Ein Mikrocontroller sieht zwar aus wie ein popeliges IC (Chip) mit 8
oder mehr Beinchen, im Grunde ist es aber ein "Computer im Kleinformat".
Man programmiert ihn
quasi wie einen Computer und kann ihm mit entsprechenden Befehlen "sagen",
wie er auf Signale reagieren soll, die an seinen Anschlüssen anliegen.
Ein und der selbe Chip kann somit völlig unterschiedliche Aufgaben
erfüllen - je nach Software-Programm. Neben der Ausführung
von diversen Befehlen und der Abfrage bzw. Steuerung der Anschluß-Pins
beinhalten diese Mikrocontroller auch diverse andere Baugruppen, die
nützlich sind und die man sonst mit vielen externen Bauteilen
realisieren müsste.
So ein kleiner Kerl, wie der da rechts, versteht über 80 verschiedene
Befehle, die er mit bis zu 8 MHz verarbeitet (8 mal schneller als ein
C-64). Er hat eine Interruptlogik, einen 8-Bit Timer, einen Comparator
für Spannungsmessungen, einen Watchdog, 1 KByte Programmspeicher,
64 Byte EEprom-Speicher und und und. Und das ist nur einer der kleinsten
Controller von Atmel. Die großen... naja, die können zum
Mond fliegen und gleichzeitig Kaffee kochen. ;-)
Nein, im Ernst - die Großen sind dann schon fast ausgewachsene
"Computer" mit etlichen KBytes Speicher, vielen Anschlüssen
und etlichen integrierten Funktionsblöcken. Wer sich ein bißchen
mit Elektronik beschäftigt, aber bisher noch nie auf die Mikrocontroller
geschaut hat (so wie ich), der sollte das wirklich einmal tun - es lohnt
sich!
|
[ATTiny 12 L von
Atmel]
|
Okay, ich schweife ab. Also, es ging um das Experimentierboard und den Programmer.
Einen Programmer benötigt man, um das Programm, welches auf dem PC entwickelt
wird, in den Mikrocontroller zu bekommen. Er besitzt auf der einen Seite einen
Anschluß, um ihn am PC anzuschliessen (paralleler Port, serieller Port
oder USB Port) und auf der anderen Seite einen entsprechenden Anschluß
für den Mikrocontroller. Die meisten AVR-Mikrocontroller werden über
die sog. ISP-Schnittstelle programmiert (In-System-Programming) und somit sitzt
dort also ein ISP-Anschluß.
So, dann zum Experiementierboard. So ein Board ist nützlich, wenn man sein
Programm auch mal direkt im Mikrocontroller testen möchte und nicht nur
als Simulation auf dem PC. Da man den Anschlüssen eines Mikrocontrollers
aber nicht ansieht, ob sie gerade Spannung führen oder nicht (Zustand 0
oder 1 haben), braucht man dafür ein geeignetes Anzeigemedium. Eine kleine
LED zum Beispiel, die bei Zustand 1 leuchtet und Zustand 0 nicht leuchtet. Dafür
ist dann so ein Experimentierboard gut. Man hat auf so einem Board ein paar
LEDs zur Anzeige und ein paar Taster, um damit "Eingaben" (0/1) in
den Mikrocontroller zu machen. Nebenbei sitzt auf so einem Board noch die Stromversorgung
und der nötige Anschluß für den Programmer drauf. Naja, und
meist noch anderer Schnick-Schnack.
Diese beiden Dinge (Programmer & Experimentierboard) habe ich mir nach einiger
Recherche bei www.myAVR.de gekauft. Man kann sich zwar auch einen einfach gestrickten
Programmer für den Parallelport des PCs selbst bauen (da sind nur ein handvoll
Teile nötig), aber mir gefiel der Programmer am USB Port dann doch besser
- zumal er noch einige andere Vorteile hat.

[USB-Programmer für AVR Mikrocontroller und das Experimentierboard für
den Atmel ATMega-8]
Das Experiementierboard von www.myAVR.de ist für einen recht großen
Mikrocontroller ausgelegt (ATMega-8). Ich habe aber schnell eingesehen, daß
für meine Anforderungen ein kleiner Mikrocontroller (ATTiny12L) völlig
ausreichend ist. Immerhin sind die Funktionen, die man an einer Minolta-Kamera
per Fernauslöser ausführen kann, nicht sehr umfangreich.
Das bedeutete, daß ich mir ein eigenes Experiementierboard bauen musste,
auf dem ich mit dem AVR ATTiny12 hantieren konnte. Ich habe das Board dann so
flexibel gestaltet, daß ich damit alle AVR Mikrocontroller bis max. 28
Pins betreiben und per ISP-Schnittstelle programmieren kann. Trotzdem war das
Komplettset von myAVR.de inkl. deren Experimentierboard sehr gut geeignet, um
überhaupt in die Thematik einzusteigen.
[Etwas wirr alles, aber das muß so sein ;-) ]
Links oben sind die erwähnten LEDs zu sehen und rechts unten zwei Taster
und ein Schalter als "Eingabegerät". Das reicht völlig aus,
um die Software für den Funkauslöser real im Chip zu testen.
Bevor ich mich an die Entwicklung der Software machte, habe ich natürlich
erstmal den Schaltplan des alten Funkauslösers umgearbeitet, um zu sehen,
mit welchem Mikrocontroller meine Vorstellungen umsetzbar sind. Wie bereits
beschrieben fiel die Wahl dann auf den ATTiny12. Der bietet ausreichend Anschlüsse,
um zwei getrennte Eingangssignale und drei getrennte Ausgangssignale zu verarbeiten.
Der Auslöser wurde von mir hardwareseitig bereits für einen Zweikanalbetrieb
ausgelegt. Ich kann also per Mikrokontroller jetzt max. zwei Kameraleitungen
steuern (Fokus und Auslösen) und eine dritte Leitung für eine Status-LED.
Als die Hardware soweit auf Papier entwickelt war, ging es darum die Software
zu schreiben. Hier kam dann das Experimentierboard ins Spiel. Da es zu dem Zeitpunkt
noch keinen aufgebauten Funkauslöser gab, musste der Test der Software
also "manuell" mit den Tastern und LEDs des Boards geprüft werden.
Das ging auch ganz gut.
Die Entwicklungsumgebung von Atmel (AVR-Studio 4) ist ziemlich einfach bedienbar
und ich bin auf Anhieb damit zurechtgekommen. Was die Programmierung des Controllers
angeht, da habe ich ein paar Wochenenden das Tutorial von Gerds Seite durchgearbeitet
(www.avr-asm-tutorial.net) und
auch die Literatur, die ich zum myAVR.de Bausatz (Programmer und Experimentierboard)
dazubestellt hatte. Wer schon einmal einen Klein- oder Heimcomputer hardwarenah
in Assembler programmiert hat, der dürfte mit so einem Mikrocontroller
sehr wenig Probleme haben. Man muß sich nur einmal intensiv mit den gerätespezifischen
Ein-/Ausgabe Adressen und den internen Funktionsblöcken auseinandersetzen
(Interrupt-Steuerung, Timer, AD-Wandler, usw...).
Bevor es an die eigentliche Programmierung ging, musste natürlich erstmal
klargestellt werden, welche Funktionen der Mikrocontroller genau übernehmen
soll. Er bekommt maximal 2 Eingangssignale (Fokus und Auslösen) und soll
drei Ausgangssignale steuern (Kamera-Fokus, Kamera-Auslösen und Status-LED).
Die zwei getrennten Eingangssignale bekommt er momentan allerdings noch nicht,
weil das bedeuten würde, daß ich einen Zweikanal-Sender für
den Auslöser benötige. Da ich aber die hardware des Empfängers
schon für Zweikanalbetrieb eingerichtet habe, wollte ich das konsequenter
Weise auch in der Software unterstützen.
Daher wurde folgende Funktionsbeschreibung erstellt:
 |
Wenn
von einem Einkanal-Sender das Signal "Auslösen" kommt,
dann sende an die Kamera gleichzeitig "Fokus" und "Auslösen".
Die Staus-LED sollte dabei dauerhaft leuchten. |
 |
Wenn
das Signal "Auslösen" länger als 4 Sekunden permanent
gesendet wird, dann schalte in einen sog. "Bulb-Modus". Das
bedeutet, daß am Sender die Taste "Auslösen" wieder
losgelassen werden kann, die Kamera aber weiterhin das Signal "Fokus"
und "Auslösen" erhält. Und zwar so lange, bis am Sender
wieder kurz Auslösen oder Fokus gedrückt wird. Während
des aktivierten Bulb-Modus soll die Status-LED langsam blinken. |
 |
Wenn von einem Zweikanal-Sender
das Signal "Fokus" kommt, dann schalte in den "Fokus-Modus"
um. Das bedeutet, daß man am Sender die Taste Fokus nur kurz drücken
muß, die Kamera daraufhin aber permanent das "Fokus" Signal
bekommt. Und zwar so lange, bis die Taste Fokus erneut gedrückt wird
(dann wird die Fokussierung wieder aufgehoben) oder bis Auslösen
gedrückt wird (dann wird an
die Kamera gleichzeitig "Fokus" und "Auslösen"
gesendet und das Bild aufgenommen). Während der Fokus-Modus aktiv
ist, sollte die Staus-LED schnell blinken. |
Da ich bei der
Erstellung der Software möglichst wenig unliebsame Überraschungen
erleben wollte und eigentlich auch viel zu faul bin, um mich nach Tagen wieder
in kryptische Funktionsblöcke einzuarbeiten, habe ich einen Ablaufplan
für diese Logik erstellt. Ja ich weiß, daß dies kein Riesen-Projekt
ist, aber ich wollte es halt ordentlich und korrekt machen - so bin ich nunmal
("Krümmelkacker" nennt man das auch ;-) ). Die einzelnen Funktionshäppchen
sind im Ablaufplan mit roten Buchstaben versehen, die man dann auch im Programm
(Sourcecode) wiederfindet. Idiotensicherer gehts nicht. Also genau das richtige
für so einen denkfaulen Sack, wie mich :o)
Hier mal ein Ausschnitt aus dem Sourcecode:
Wer an dem ganzen Programm interessiert ist, der klicke bitte hier.
Nachdem die Software sowohl in der Simulation (im PC) als auch real im Chip
(auf dem Experiementierboard) zu meiner Zufriedenheit lief, war der Zeitpunkt
gekommen, an dem ein echter Funkauslöser-Prototyp her musste. Hierfür
benutzte ich Funk- und Decodermodule, die ich mir zuvor für meine Experiemente
gebaut hatte. Diese Module bestehen aus den gleichen Komponenten, wie sie
im fertigen Funkauslöser benutzt werden.
[Decoder und Encoder]

[Von links nach rechts: Empfänger, Decoder, Sender. Unten der Rest der
Schaltung auf dem Steckbrett]
Bei diesem experiementellem Aufbau mussten dann noch die Widerstandswerte
für die Ansteuerung des Optokopplers und des Mikrocontrollers ermittelt
werden, damit die Ein- und Ausgänge nicht zu stark belastet werden. Das
Foto da oben wurde übrigens bereits per Fernauslösung geschossen!
An dem orange-gelb-grünen Kabel rechts im Bild hing die Kamera und ausgelöst
wurde mit einem fertigen Handsender. :-)
Nachdem das alles lief, ging es daran für die gesamte Schaltung ein ordentliches
Layout zu entwerfen - und zwar so, daß die eigene Platine zusammen mit
der fertigen Empängerplatine möglichst günstig in das Empfängergehäuse
paßt. Aus dem fertigen Layout habe ich mir dann bei einer externen Firma
einen Satz Platinen herstellen lassen.
Als die endlich ankamen, ging es auch gleich an den Lötkolben. :-) Der
erste "richtige" Prototyp FABG3 wurde zusammengebaut. Ein paar Überlegungen
bzgl. der Platzierung und der Gestaltung der "Bedienelemente" waren
noch zu tun... aber letzendlich bin ich mit dem Ergebnis ganz zufrieden.
Der erste Prototyp sieht jetzt (22.03.2006) so aus...
Die kleine, helle Platine ist die Adapterplatine. Oben links auf dieser Platine
ist der Mikrocontroller ATTiny12L zu sehen. Rechts darunter der zweifach-Optokoppler,
der die Kamera elektrisch vom Rest des Funkauslösers trennt. Die dunkle,
große Platine enthält den Empfänger und den Dekoder-Baustein
- an dieser Platine sind von mir auch noch Änderungen vorgenommen worden.
Die drei grauen Leitungen gehen von der Adapterplatine zu einer 3,5mm Klinkenbuchse,
an die das Remotekabel für die Kamera angeschlossen wird.
[Die grüne LED ist die Betriebsanzeige, die rote LED auf der hellen Adapterplatine
ist die Status-LED
Die Öse zum Anhängen an ein Stativ ist auch wieder dabei - diesmal
etwas dezenter in schwarz]
[Hier der Prototyp von außen]
So, damit ist die Entwicklung empfängerseitig abgeschlossen. Der nächste
Schritt wäre, irgendwann den Sender auf Zweikanalbetrieb zu erweitern.
Dazu müsste ein weiterer Knopf für getrenntes Fokussieren in den
Sender gebaut werden. Schaun mer mal... :-)
Das tolle an dieser Lösung mit dem Microcontroller ist ja, daß
ich ohne Hardwareänderung auch andere Funkübertragungssysteme zu
einem Funkauslöser umrüsten könnte. Auf geänderte (Verhaltens-)Anforderungen
könnte man schnell durch einen einfachen Wechsel der Software reagieren.
Ist schon cool, so ein Mikrocontroller *schwärm* ;-)