Astro-Modifikation einer Canon EOS 2000D
(aka EOS 1500D, Rebel T7, Kiss X90)
mit Kühlung, Intervall-Timer, Shutter-Emulator
und Bluetooth-Fernsteuerung
Hauptzweck dieser Modifikation war, herauszufinden, wie effektiv sich die Sensoren der neueren Canon DSLR/DSLM Modelle, bei denen der Sensor ohne einen Zwischenraum flächig auf eine Platine gelötet ist, kühlen lassen.
Dabei wollte ich den Kühler möglichst klein halten, auch wenn sich dadurch extreme Kühlung, wie z.B. 20°C unter Umgebung, nicht erreichen lässt. Das ist aber kein gravierender Nachteil, wie die Dunkelströme, die ich mit moderater Kühlung bekommen habe, zeigen. 

Ich baue aus meinen Astro-Kameras als erstes immer gleich Shutter und Spiegel aus und ersetze sie durch einen kleinen Arduino, der der Kamera die von ihr erwarteten elektrischen Signal liefert, damit sie keinen Fehler meldet. Das hat unter anderem den Vorteil, dass kein Verschleiß mehr auftritt, die Kamera völlig lautlos arbeitet und der Spiegel das Bild nicht mehr verschattet.

Wenn dann eh schon ein Arduino in der Kamera ist, ist es kein großer Aufwand, ihn mit einem Bluetooth-Modul, das nur wenig Platz braucht, zu versehen. Damit kann man dann nicht nur die Regelung der Kühlung bedienen, sondern auch noch einen Intervall-Timer steuern, für den der Arduino natürlich an den Auslöser angeschlossen werden muss. Das erspart den externen Intervall-Timer für die Modelle, für die es kein Magic Lantern gibt und ist besonders nützlich für Kameras, die keinen Kabelauslöseranschluss haben, wie die EOS M50, in die ich diese Kombination zuerst installiert hatte.

Das LPF2 Farbkorrekturfilter vor dem Sensor wird dann natürlich, falls noch nicht geschehen, auch gleich entfernt und ebenso der Sucher, der ohne Spiegel sowieso keine Funktion mehr hat.

Die Kosten des Ganzen sind sehr überschaubar: Für Arduino, Bluetooth-Modul, Spannungsregler und Peltier-Element braucht man 10 bis 15 €, alles zusammen mit Kühlkörper und Lüfter kommt dann auf unter 20 €.
Und so sieht die Kamera inklusive Kühlung dann aus. Dank der günstigen Lage des Sensoranschlusses konnte ich Peltier, Kühlkörper und Lüfter im Sucherraum unterbringen, nachdem ich den Blitz entfernt und das Top noch etwas aufgeschnitten hatte. Es gibt auch keinen separaten Stromanschluss für die Kühlung, die wird von der Kamera mitversorgt. Für eine Stunde oder so ginge das sogar mit dem Akku, aber es ist definitiv besser, alles mit einem handelsüblichen Netzgerät und Akku-Dummy zu versorgen.
Insgesamt wiegt die Kamera jetzt gerade mal 390 Gramm.
Der Blick von vorn zeigt auch schön, wieviel Platz im Spiegelkasten jetzt ist, so dass von da keine Vignettierung mehr ausgehen kann, nicht mal bei F/3.

Von oben sieht man gut, wie das Top der Kamera ausgeschnitten ist, damit der Radiallüfter reinpasst. Ein  etwas kleinerer Lüfter (30 statt 40 mm) hätte es auch getan und dann wäre nur die kleine Abluftöffnung notwendig gewesen.  Im Moment habe ich die nicht benötigten Teile der Öffnung provisorisch mit Klebeband verschlossen. Da werde ich noch die Blitzabdeckung passend zuschneiden, dann sieht das wieder besser aus.
Für die Zuluft habe ich vorne und hinten noch einige Löcher in das Gehäuse gebohrt.
 
Hier ist der Aufbau des Kühlers zu sehen. Ein Kupferblech mit einer Aussparung für das Sensorkabel führt nach oben und dann nach vorn in den Bereich, in dem der Sucher untergebracht war. Den Wärmekontakt zwischen Kupferblech und Sensorplatine übernimmt ein dickes Wärmeleit-Pad, das den Zwischenraum gut ausfüllen sollte. Es ist wichtig ein Pad zu verwenden, nicht Wärmeleitpaste, die eine viel schlechtere Wärmeleitung hat. Außerdem ist es keine solche Sauerei.
Zur Sicherheit ist das Kupferblech mit einem dünnen Paketband gegen elektrischen Kontakt mit dem Sensor isoliert. Das Kupfer ist nur 0.3mm dick, das reicht bei der geringen Wärmemenge, die transportiert werden muss, aus. Überhaupt ist es sehr wichtig, die Wärmemenge möglichst gering zu halten, dann reicht auch für das Peltier-Element eine kleine Leistung aus. Ich habe einen TEC 04901 gewählt, ein recht 'schwaches' Peltier, das maximal einen Strom von 1A aufnimmt. Seine Kühlleistung ist für den gewünschten Zweck aber ausreichend. 
Essentiell ist dabei eine sehr gute thermische Isolation des Kupferblechs nach außen, besonders auch um das Kabel zum Mainboard herum. PU-Schaum und dünne Polsterfolie sind dafür gut geeignet.

Oben auf dem Peltierelement sitzt jetzt der auf 35x45 mm² zugeschnittene Kühlkörper, auf den dann ein Radial-Lüfter aufgesetzt wird. Dazwischen kommt noch eine dünne Polsterfolie, die die Vibrationen des Lüfters dämpft und so zugeschnitten ist, dass die angesaugte Luft den Kühlkörper möglichst effektiv durchströmt.

Die Versorgung des Peltier-Elements übernimmt einer der beliebten kleinen Mini360 Bucks, den ich hier anstelle des Blitzkondensators auf das Powerboard der 2000D gelötet habe. Er wird direkt vom Batterieanschluss mit 7.2 V gespeist. Da diese Spannung permanent anliegt, wird er über den Enable-Eingang an Pin 7 des ICs deaktiviert, wenn die Kamera abgeschaltet ist. Neben dem Spannungstrimmer ist noch ein Widerstand angelötet, der die maximale Ausgangsspannung begrenzt. An den wird dann die geglättete Steuerspannung von einem PWM-Ausgang des Arduino angeschlossen, so dass der die Kühlleistung regeln kann.
Der zweite Mini360 unter dem ersten regelt die Spannung für den 5V-Lüfter auf etwa 3V herunter, so dass der dann ohne viel Lärm und Vibrationen arbeitet.
Elektronik

Ein Arduino Pro Mini bildet den Kern der gesamten Steuerung. Mit seinen Datenpins D2-D4 und D6-D8 arbeitet er an der Emulation der Shuttersignale für die 2000D, von der er auch seine Versorgungsspannung von 3.3V erhält, ebenso wie das HC-05 Bluetooth-Modul, das er über D10 und D11 anbindet. D10 und D11 bilden dazu eine serielle Schnittstelle in Software nach. Man kann das Bluetooth-Modul stattdessen auch mit der eingebauten seriellen Schnittstelle über D0 und D1 anbinden, muss es dann aber immer abhängen, wenn man dem Arduino einen neuen Sketch hochladen will.
D9 ist mit dem im Bild mit 'Shoot' bezeichneten Anschluss der Kabelauslöser-Buchse verbunden, die bei der 2000D auf der Hauptplatine liegt. Damit kann der Arduino bzw. der Intervalltimer die Kamera auslösen.

D13 geht zu den Enable-Eingängen der beiden Mini360, um die Kühlung ein- und auszuschalten und automatisch  zu deaktivieren, wenn die Kamera abgeschaltet ist. Damit die LED des Arduino, die ebenfalls an D13 hängt, nicht leuchtet, wenn die Kühlung läuft, muss sie ausgelötet oder ausgebrochen werden.

D5 wird als PWM-Ausgang verwendet. Die daran angeschlossene Kombination aus zwei Widerständen und einem Kondensator glättet das Rechtecksignal, das dann in die Spannungsregelung des Mini360, der das Peltier versorgt, eingespeist wird und regelt damit die Kühlleistung. Der Regelbereich beträgt etwa 1V bis 4V.
Die zusätzlich an die Mini360 gelöteten Widerstände begrenzen deren Ausgangsspannung auf 5.2V (Peltier) bzw. 4.6V (Lüfter). Sie sind nicht unbedingt notwendig.

Um das Beschlagen des Sensors zu verhindern, liegen im Spiegelkasten noch vier Widerstände mit je 5.1Ω, die von der Peltier-Spannung gespeist werden und damit proportional zur Kühlleistung heizen. Sie können zusätzlich dadurch geregelt werden, dass sie über D12 und einen MOSFET gataktet bestromt werden.

Die Temperatur (des Kupfer-Kühlblechs) wird mit einem NTC Thermistor bestimmt. Dazu wird seine Spannung am A0-Eingang des Arduino gemessen. Der zweite Widerstand an A0 sollte den gleichen Wert haben wie der NTC bei 25°C, das vereinfacht die Berechnung der Temperatur aus der gemessenen Spannung. Ich habe hier eine 10kΩ Typ verwendet, es gehen aber z.B. auch 100kΩ.

Wichtig: Damit ein Sketch hochgeladen werden kann, muss die Kamera eingeschaltet sein, da sie ja den Arduino  versorgt. Die Versorgung über USB / Serial Breakout darf dann nicht parallel zur Vcc der Kamera geschaltet werden!
Bluetooth-Steuerung

Die Verschaltung mit dem Bluetooth-Modul ist oben ja schon gezeigt. Die Frage ist jetzt, wie man damit am besten kommuniziert.
Zum Glück gibt es dafür schon zahlreiche fertige Lösungen, das heist Apps, die auf dem Handy oder Tablet mit Bluetooth-Geräten Daten austauschen. Man könnte sogar mit überschaubarem Aufwand eine eigene App dafür zusammenstellen, aber ich habe mich erst mal mit dem "Serial Bluetooth Terminal" begnügt, wobei 'begnügt' eigentlich nicht das richtige Wort ist, denn das ist eine sehr schöne App, die genau das tut, was ich für den Zweck brauche. Der Code auf der Arduino-Seite ist Teil des ShutterEmuEOS Programms. Er ist für das Bluetooth Terminal ausgelegt und kann bei Bedarf leicht angepasst werden.
Dieser Screen-Shot des Bluetooth-Terminals zeigt in der oberen Hälfte den Output der Hilfefunktion, die aktuellen Einstellungen und den Status der Kamera.

Im unteren Teil bietet das Bluetooth-Terminal ein konfigurierbares 'Tastenfeld'. Hinter jeder Taste steht ein Makro, das man passend einrichten kann. Hier sind die Makros so gestaltet, dass sie jeweils ein Zeichen senden, um die wichtigsten Befehle einfach auszuführen. Einige Befehle erwarten eine Ziffernfolge, die vor dem Befehlszeichen eingegeben wird.

Die Tastenkonfiguration kann man auch in eine Datei exportieren, um sie auf dem Rechner zu bearbeiten oder auf anderen Geräten zu importieren.
Im linken Teil des Tastenfelds befinden sich die Befehle für den Intervall-Timer, der Bildserien mit frei wählbarer Belichtungszeit (und Pausen) auslöst. Man kann die Kamera dazu sowohl im Bulb-Mode als auch mit allen anderen Modi betreiben, in denen die Kamera die Belichtungszeit vorgibt, zum Beispiel um Zeitrafferreihen aufzunehmen.

Unten gibt es dann noch die Taste 'Kühlung', mit der die Anweisungen zur Einstellung der Kühlung abgesetzt werden. So schaltet zum Beispiel die Zeichenfolge '1K', die mit den Tasten '1' und 'Kühlung' gesendet wird, die Kühlung auf niedrigste Stufe, während '8K' den PID-Regler aktiviert, der die Temperatur konstant hält.


Die Baudrate für die Kommunikation zwischen Bluetooth-Modul und Arduino ist auf 9600 voreingestellt, das ist das, was auch für einen HC-05 vorkonfiguriert ist. Das ist zwar nicht berauschend, aber es reicht aus. Was ich am HC-05 noch umkonfiguriere, ist der Name, unter dem er sich meldet, also z.B. "2000Daci".
Die aktuellen Einstellungen gehen verloren, wenn die Kamera ausgeschaltet wird. Man kann sie jedoch (mit dem E-Befehl) im EEPROM des Arduino speichern, von wo sie bei einem Neustart wieder geladen werden.

Intervalltimer

Der Intervalltimer kann die Kamera periodisch auslösen. Für Langzeit-Belichtungen wird an der Kamera der Bulb-Mode gewählt und der Intervalltimer bestimmt die Belichtungszeit, die mit '+' oder '-' aus einer Reihe vordefinierter Werte ausgewählt oder in Sekunden oder Minuten eingegeben wird.
Der kleinste der vordefinierten Werte, der durch wiederholte Eingabe von '-' gewählt wird, ist dazu gedacht, die Belichtungszeit mit der Kamera vorzugegeben. In diesem "Schnelle Auslösungen" Modus löst der Intervalltimer zehn mal pro Sekunde aus. Die Kamera ignoriert verfrühte Auslösungen und startet das nächste Bild erst wenn sie wieder bereit ist.
 
Durch die Wahl einer verlängerten Pause zwischen den Auslösungen kann die Belichtungszeit unabhängig von der Verzögerung durch die Bildspeicherung exakt definiert werden. 
Voreingestellt ist eine Pause von 0.2 Sekunden, die aber von der Kamera, wenn sie noch nicht bereit ist, verlängert wird, und zwar auf Kosten der folgenden Belichtung.
Bei sehr kurzen Pausen startet unter Umständen nur jede zweite Auslösung! 
Mit langen Pausen können auch Timelapse-Reihen aufgenommen werden. Dazu muss für den Timer die Belichtungszeit auf mindestens eine Sekunde gestellt werden, weil der "Schnelle Auslösungen" Modus keine langen Pausen macht. 
Wenn die Kamera die Belichtungszeit vorgeben soll, können Timelapse-Reihen auch einfach durch die Wahl einer entsprechend langen Belichtungszeit im Intervalltimer erzeugt werden. Die Kamera löst nämlich erst wieder aus, nachdem der Timer die laufende Belichtung beendet hat und die nächste startet.

Bei bestehender Bluetooth-Verbindung wird der aktuelle Belichtungsstatus kontinuierlich angezeigt (sofern nicht mit 'U'pdates abgeschaltet). Dabei überwacht der Intervalltimer auch, ob für den Shutter-Emulator tatsächlich Auslösungen erfolgen und zeigt eine Warnung an, wenn nicht. So kann man z.B. erkennen, wenn  die Speicherkarte voll ist.
Im "Schnelle Auslösungen" Modus wird jede Sekunde ein Punkt ausgegeben, der durch ein ' ersetzt wird, wenn der Shutter-Emulator gerade ausgelöst hat.
Kühler-Steuerung, PID-Regler

Befehle zur Kühler-Steuerung bestehen aus einer Zahl, gefolgt von einem 'K'. So schaltet '0K' den Kühler ab, während ihn '1K' bis '5K' mit unterschiedlicher Stärke einschalten. Wenn sich eine akzeptable Tempertur, die sich mit '?' anzeigen lässt, eingestellt hat, kann man mit '8K' den PID-Regler anweisen, die Temperatur zu halten.
Mit 'K' allein wird eine Übersicht der 'K'-Befehle angezeigt.
Mit weiteren 'K'-Befehlen, kann man auch eine Zieltempertur auswählen oder die Fenster-Heizung regeln.

Nach dem Einschalten ist der Kühler zunächst inaktiv, sofern nicht eine abweichende Einstellung im EEPROM gespeichert wurde (s.o.). 
Nach Erreichen des eingestellten Serien-Limits wird die Heizung abgeschaltet, um zu vermeiden, dass der Sensor wegen der geringeren Wärmeproduktion der abgeschalteten Kamera beschlägt.

Mit den 'C'-Befehlen lässt sich der PID-Regler rekonfigurieren, aber das sollte eigentlich nicht nötig sein.


Kühlwirkung

Nach dem Einschalten der Kühlung sinkt die gemessene Temperatur sehr schnell, was zuerst mal noch nicht viel aussagt, weil der Temperatursensor direkt auf dem Kühlblech liegt. Aber auch die Exif-Temperatur der dabei aufgenommenen Bilder fängt schon nach 2 bis 3 Minuten stark abzusinken und kommt nach 10 bis 20 Minuten wieder in den Bereich des Tempertursensor. Das ist wesentlich effektiver als ich erwartet hatte und anfangs hatte ich die Befürchtung, dass die Exif-Temperatur vielleicht auch von einem NTC auf der Sensorplatine stammt und bei externer Kühlung die Sensortemperatur nicht mehr gut wiedergibt.
Die Messung des Dunkelstromrauschens des Sensors zeigt aber, dass der Sensor tatsächlich recht deutlich gekühlt wird und passt gut zur Exif-Temperatur. Was mich dann vollends überzeugt hat, war das starke Beschlagen des gekühlten Sensors bei seinem ersten Außeneinsatz. Ausgehend von meiner gekühlten 6D, die einen ähnlichen integrierten Kühler (mit Kühlfinger direkt unter dem Sensor) hat, hatte ich erwartet bis maximal ein bis zwei Grad unter die Umgebungstemperatur zu kommen und hatte deshalb zunächst keine Fensterheizung eingebaut, die ich jetzt erst mal nachrüsten musste. Damit habe ich dann die folgenden Werte am Temperatursensor gemessen, die etwa ein halbes Grad unter der Exif-Temperatur liegen:

Kühlungseinstellung 1K 2K 3K 4K 5K 0K
PWM-Signal (D5) 255 164 71 42 0 -
Peltierspannung 0.95V 2V 3.1V 3.4V 4V -
Peltierleistung 0.25W 1W 2.5W 3W 3.8W -
Fensterheizung 35mW 66mW 400mW 460mW 620mW -
ΔT (mit 60s Frames)    -1.4°C  -3.0°C  -4.8°C  -4.6°C  -5.0°C  +6.4°C

Man kommt also bis etwa 5°C unter Umgebungstempertur, ohne Fensterheizung noch ein Grad mehr. Die  fast volle Kühlwirkung hat man schon mit 2.5 Watt Peltier-Leistung, aber selbst mit einem viertel Watt bleibt die Sensortemperatur deutlich unter der Umgebungstempertur. Um tiefer zu kühlen müsste man den Lüfter hochdrehen oder den Kühlkörper vergrößern. Oder zwei Peltiers hintereinander schalten, aber dafür müsste man erst mehr Platz schaffen. Und der Gewinn wäre auch eher gering. Selbst bei 20°C Außentemperatur erreicht das Dunkelstromrauschen des dann 15°C warmen Sensors das Ausleserauschen erst bei einer Belichtungszeit von rund 20 Minuten.
Bei abgeschalteter Kühlung erwärmt sich der Sensor um ca. 7 Grad bzw., wenn gar kein Kühler eingebaut ist, um etwa 11 Grad. Die gesamte Temperaturabsenkung gegenüber dem Originalzustand liegt dann also bei 16 Grad.

Hier ist eine Messreihe zur Kühlung, bei der die Kamera kontinuierlich 60s-Frames aufnimmt hat, zunächst ungekühlt, ab Frame 113 dann mit 2.5W Kühlleistung (bei aktiver Fensterheizung und Display aus):


Zunächst ist zu sehen, dass die Temperatur vom NTC und aus den Exif-Daten der Bilder über eine Stunde fast parallel ansteigen und beim Einschalten der Kühlung steil abfallen. Dabei folgt der Sensor dem NTC mit ca. 3 bis 5 Minuten Verzögerung. Dass hier auch wirklich die Sensortemperatur fällt, erkennt man daran, dass die aus den Bildern berechnete Standardabweichung der Temperaturkurve folgt.
Die Standardabweichung für Bias-Frames, also das Rauschen ohne Dunkelstrombeitrag beträgt für diese Kamera 13.5 ADU (bei ISO 1600), liegt für eine genaue Auswertung also zu nahe bei der Messkurve. Ein Vergleich mit 20-Minuten Aufnahmen, bei denen der Dunkelstrom einen höheren Anteil am Rauschen hat, ergibt, dass die Exif-Temperatur die Sensortemperatur gut wiedergibt. Die im Diagramm auch noch eingezeichnete Größe der Bilddateien folgt übrigens auch sehr schön der Standardabweichung.

Aus der Verteilung der Standardabweichung über die Sensorfläche kann man erkennen, dass die Sensortemperatur ziemlich homogen ist. Selbst unter dem Kabelanschluss, wo das Kühlblech nicht hinreicht, lässt sich keine höhere Temperatur feststellen. Offenbar hat der Sensor wirklich eine sehr gute Wärmeleitung:


Es gibt zwar einen gewissen Unterschied zwischen den Bereichen in der linken und rechten Sensorhälfte, aber die Mitte hat keine höhere Standardabweichung als die (im Bild) linke Sensorhälfte.


Zusammenfassung

Entgegen meinen Erwartungen lassen sich die flächig auf eine Platine gelöteten Sensoren der neueren Canon Cameras recht gut kühlen, etwas besser sogar als die ältere Generation durch einen Kühlfinger im Spalt zwischen Sensor und Platine. 
Dazu kommt, dass es deutlich einfacher geht, man nicht einmal den Sensor dazu ausbauen muss. Schon mit sehr geringer Kühlleistung lässt sich die Sensortemperatur auf Umgebungstemperatur oder etwas darunter halten, so dass sich der Dunkelstrom auch im Sommer in akzeptablen Grenzen hält. 





Zuletzt aktualisiert am 26.09.2024