Home | Download: EOS-Shutter V3.3 |
Canon EOS Shutter-Emulation mit ArduinoErwin Lotter, 23.01.2024 Diese Seite beschreibt, wie man verschiedene Canon EOS Modelle ohne Shutter und/oder Spiegel betreiben kann. Aktuell werden emuliert: 6D, 6Dmk2, 50D, 60D, 70D, 80D (nur Shutter), 550D, 600D, 650D, 700D, 1100D, 1200D, 1300D, 2000D sowie EOS M, M3, M10, M100. Die Technik basiert auf der von Hendrik Beijeman vorgestellten Shutter-Emulation für die Canon EOS 1100D, die die von der Kamera erwarteten Signale mit einem nackten Mikrocontroller-Chip simuliert. Hier wird ein Arduino eingesetzt, für dessen Programmierung ich die freie Arduino IDE verwende. Zur einfachen Integration in die Kamera ist ein kleines Arduino-Board vorteilhaft, das mit 3.3V betrieben werden kann. Zum Testen und Programmieren ist ein Board mit integrierter USB-Schnittstelle günstig. Aus dem erfreulich großen Angebot an preiswerten Arduino-Boards einschließlich der kompatiblen China-Nachbauten, die schon ab ca. 2 Euros zu bekommen sind, habe ich mir diese beiden Boards besorgt:
Die 3.3V-Variante des ‘Pro Mini’ läuft aufgrund der Prozessorspezifikationen nur mit 8 MHz statt der verbreiteten 16 MHz. Man muss deshalb bei der Programmierung genau darauf achten, nicht nur den korrekten Board-Typ, sondern auch die passende Taktfrequenz auszuwählen! Die verbreitete 5V/16MHz-Variante des ‘Pro Mini’ läuft zwar auch mit 3.3V, es ist aber nicht garantiert, dass dies unter allen Betriebsbedingungen zuverlässig funktioniert. Bei mir hat es zwar geklappt, aber eine Garantie gibt es nicht. Man kann auch eine höhere Spannung der Kamera über den RAW Anschluss des Arduino verwenden und dann auch die 5V/16MHz Arduino-Variante. Sogar die 7.8V des Akkus gehen. Dann ist der Arduino allerdings auch bei abgeschalteter Kamera aktiv, was meist unerwünscht ist: Er zieht dann permanent etwas Strom und kann nur durch Entnehmen des Akkus zurückgesetzt werden. Die Beschaltung Bevor man damit beginnt, sollte man sich darüber klar sein, dass solch ein Eingriff zum Verlust jeglicher Garantie führt. Ohne ausreichende Elektronik-Kenntnisse ist die Gefahr groß, die Kamera irreparabel zu beschädigen! Alle Emulatoren verwenden die Haltemagnet-Signale, die sich gut an den Testpunkten des Shutterkabels abgreifen lassen, um die Kontrollsignale für die Kamera zu erzeugen. Lediglich für die Versorgungsspannung muss man noch direkt auf dem Mainboard der EOS löten, aber das geht recht einfach. (Leider lässt sich die Versorgung der 'coil' nur bei den EOS Mx Modellen zur Versorgung des Arduino verwenden, weil sie nicht permanent oder, wie bei der 700D, zu spät anliegt.) Die Arduino-Ausgänge sind durch Dioden von der Kameraelektronik getrennt, um zu verhindern, dass die Kameraelektronik beschädigt wird, wenn die Betriebsspannung des Arduino höher als 3.3V ist. So ist dann z.B. auch ein Testbetrieb mit einem 5V Arduino über USB, problemlos möglich. Die Verschaltung unterscheidet sich deutlich für die verschiedenen Kamera-Typen, deren Shutter teils nur einen Haltemagnet ('coil') besitzen (1100D, M), während sonst zwei verbaut sind. Die ein- und zweistelligen Modelle (6D, 50D,..) haben zudem noch einen separaten Motor mit zusätzlichen Kontrollsignalen für den Spiegel. Anschluss-Schema für 550D, 600D, 1100D, 1200D, 1300D, 2000D, weitere Modelle siehe unten. Die Beschreibung der Funktionen der einzelnen Signalleitungen ist im Steuerprogramm zu finden. Software Ein Arduino-Programm – Sketch genannt – wird i.A. per serielle (USB-) Schnittstelle an die Arduino Basissoftware – Bootloader genannt – übergeben, die es permanent speichert und nach einem Reset oder dem Einschalten des Arduino ausführt. Das dauert aber ca. eine halbe Sekunde, und das ist zu lange für die Kamera, die offenbar gleich mal überprüft, ob mit dem Shutter alles in Ordnung ist. Für Testzwecke kann der Arduino natürlich mit einer externen Quelle (z.B. seinem USB Anschluss) versorgt werden, so dass die Versorgung schon anliegt, wenn die Kamera eingeschaltet wird – dann ist alles ok. Für den Echtbetrieb aber muss das Steuerprogramm („EOS-Shutter V3.3“), konfiguriert für das richtige Modell, so in den Arduino übertragen werden, dass es den Bootloader überschreibt und beim Einschalten sofort startet. Wie das mit einem zweiten Arduino-Board mit einer USB-Schnittstelle geht, wird z.B. auf Adafruit Learning System oder Shelvin – Elektronik ausprobiert und erläutert sehr schön gezeigt. Eine Kurzfassung findet sich unten im Abschnitt „Boot-Programme laden“. Alternativ können Leitungen, die beim Einschalten Low-Pegel haben
müssen, mit einem 2.2k Widerstand auf der Arduino-Seite mit Masse
verbunden werden. Dann reicht es aus aus, den Emulator-Code als
normalen Sketch zu laden. Ablauf der Emulation Der Arduino wird durch ein Coil-Signal aktiviert und sendet der Kamera die Signale, die sie von den Lichtschranken und Rotationsencodern ihres Shutters erwartet. Das klappt meist für alle sinnvollen Betriebsarten einschließlich des Live-View. In den Zeiten zwischen den emulierten Shutter-Bewegungen geht der Arduino-Prozessor in den Ruhezustand und verbraucht dann nur noch wenige Mikroampere. Um das wirklich nutzen zu können, muss allerdings die Power-LED des Arduino ausgelötet oder –gebrochen werden, die ansonsten ca. 1 mA verbrät. Einbau des Emulators in die Kamera und Anwendung Nach dem Ausbau von Shutter und/oder Spiegel, für den die Kamera komplett zerlegt werden muss, bleibt ein Hohlraum, der das Arduino-Board leicht aufnehmen kann. Als Belohnung erhält man eine Kamera, die völlig geräuschlos arbeitet und keinem mechanischen Verschleiß mehr unterliegt. Ohne den Spiegel bekommt man deutlich weniger Abschattung bei F/5 oder noch lichtstärkeren Optiken. Ohne Shutter ist natürlich die minimale Belichtungszeit stark eingeschränkt: Aufnahmen bei Tageslicht oder auch vom Mond sind so nicht mehr möglich (außer im Video-Mode, der eh ohne Shutter arbeitet). Die Untergrenze wird durch die Dauer des Auslesevorgangs bestimmt, die knapp 1/10 Sekunde beträgt. Die minimale Belichtungszeit an der Oberkante des Bildes beträgt ca. 1/50 s und nimmt nach unten linear um 1/10 s zu – ein Verhalten, das übrigens auch mit Shutter die minimale Aufnahmedauer von Darks begrenzt. Das bedeutet, dass bei man 1 s Belichtung zwischen Ober- und Unterkante einen Unterschied von etwa 10% bekommt, bei 10 s noch etwa 1%. Im ersten Fall ist eine Korrektur durch gleichlang belichtete Flats auf jeden Fall angeraten, bei 1% (gleichmäßiger) Variation kann man darauf meist verzichten. Eine solche ebene Korrektur kann auch rein rechnerisch erfolgen. Wichtig ist auch, bei der Aufnahme von Flats zu beachten, dass deren Belichtungszeit nicht zu kurz, also nicht kleiner als z.B. 10 s, wird. Arduino Boot-Programme laden (Kurzfassung der Anleitung von Shelvin – Elektronik ausprobiert und erläutert.) Ein Arduino-Sketch soll so geladen werden, dass er den Bootloader überschreibt und ohne dessen Hilfe ausgeführt wird. Dazu wird ein zweiter Arduino als ISP (In-System-Programmer) verwendet. Es sind 3 Schritte notwendig. 1.) Einen Arduino zum ISP Programmer umfunktionieren Zuerst wird der Hilfs-Arduino mit USB – im Folgenden ISP genannt – an den PC angeschlossen und mit der ISP Software geladen. Hier darf das Ziel-Board noch nicht angeschlossen sein! In
der Arduino IDE wird unter Tools > Board der Typ des ISP
Arduino eingestellt (hier „Arduino Nano“) und die richtige COMx
(z.B. COM6) Schnittstelle wird ausgewählt. Dann wird dieser Sketch in
der IDE als Programmer gekennzeichnet mit 2.) Beschaltung Als nächstes wird der ISP abgehängt und der Ziel-Arduino an ihn angeschlossen: Gnd und Vcc werden verbunden, ebenso wie D11-D13 (MOSI, MISO und SCK). D10 des ISP geht an RST des Ziels. Dann den ISP wieder an den PC anschließen. 3.) Programm als Boot-Code auf das Ziel laden Als Board muss jetzt das
Ziel-Board angegeben werden – ggf. einschließlich des korrekten
Prozessors und der richtigen Taktfrequenz (wird nicht automatisch
erkannt). Hier wäre das: Board:
„Arduino Pro or Pro Mini“, Processor: AT-mega328 (3.3V 8 MHz). Der Original-Bootloader kann mit dem Befehl "Burn Bootloader" im Tools-Menü wieder geflasht werden (mit dem ISP). |
Anschlussbilder der unterstützten Kameras: |