Astro modification of a Canon EOS 2000D 
(aka EOS 1500D, Rebel T7, Kiss X90)
with cooling, interval timer, shutter emulator 
and Bluetooth remote control
The main purpose of this modification was to find out how effectively the sensors of the newer Canon DSLR/DSLM models, where the sensor is soldered over the entire back onto a circuit board without a gap, can be cooled. 
I wanted to keep the cooler as small as possible, even if this means that extreme cooling, such as 20°C below ambient temperature, cannot be achieved. However, this is not a serious disadvantage, as the dark currents that I got with moderate cooling show.  
 
The first thing I do is always remove the shutter and mirror from my astro cameras and replace them with a small Arduino, which gives the camera the electrical signal it expects so that it does not report any errors. This has the advantage, among other things, that there is no more wear and tear, the camera works completely silently and the mirror no longer shades the image. 
 
If there is already an Arduino on board, it is not a big deal to equip it with a Bluetooth module that takes up very little space. This can then be used to not only control the cooling, but also an interval timer, for which the Arduino obviously has to be connected to the shutter release. This saves you the need for an external interval timer for models for which there is no Magic Lantern and is particularly useful for cameras that do not have a cable release connection, such as the EOS M50, in which I first installed this combination. 
 
The LPF2 color correction filter in front of the sensor is then of course removed straight away, if it hasn't already been done, as is the viewfinder, which has no function without the mirror anyway. 
 
The cost of the whole thing is very manageable: you need €10 to €15 for the Arduino, Bluetooth module, voltage regulator and Peltier element, and everything together with the heat sink and fan comes to under €20.
And this is what the camera looks like, including the cooling system. Thanks to the convenient location of the sensor connection, I was able to accommodate the Peltier, heat sink and fan in the viewfinder area after removing the flash and cutting open the top a little. There is also no separate power connection for the cooling system, which is supplied by the camera. For an hour or so, it would even work with the battery, but it is definitely better to supply everything with a standard power supply and dummy battery. 
Overall, the camera now weighs just 390 grams. 
The view from the front also shows how much space there is now in the mirror box, so that no more vignetting can occur from there, not even at F/3. 
 
From above, you can clearly see how the top of the camera is cut out so that the radial fan fits in. A slightly smaller fan (30 instead of 40 mm) would also have done the trick, and then only the small exhaust opening would have been necessary. At the moment, I have temporarily sealed the parts of the opening that are not needed with adhesive tape. I'll cut the flash cover to fit, then it will look better again. 
I drilled a few holes in the front and back of the housing to improve the air supply.
Here you can see the design of the cooler. A copper sheet with a recess for the sensor cable leads upwards and then forwards into the area where the viewfinder was housed. The thermal contact between the copper sheet and the sensor board is provided by a thick thermal pad, which should fill the gap well. It is important to use a pad, not thermal paste, which conducts heat much worse. And it is not such a mess. 
To be on the safe side, the copper sheet is insulated against electrical contact with the sensor with a thin adhesive tape. The copper is only 0.3mm thick, which is enough for the small amount of heat that needs to be transported. In general, it is very important to keep the amount of heat as low as possible, then a small amount of power is sufficient for the Peltier element. I chose a TEC 04901, a very 'weak' Peltier that draws a maximum current of 1A. However, its cooling power is sufficient for the desired purpose.
It is essential that the copper sheet is very well insulated from the outside, especially around the cable to the mainboard. PU foam and thin padding foil are well suited for this. 

On top of the Peltier element is the heat sink, cut to 35x45 mm², onto which a radial fan is then placed. In between is a thin padding foil that dampens the vibrations of the fan and is cut so that the air sucked in flows through the heat sink as effectively as possible. 
 
 

The Peltier element is powered by one of the popular small Mini360 bucks, which I soldered onto the power board of the camera instead of the flash capacitor. It is fed directly from the battery connection with 7.2 V. Since this voltage is permanently present, it is deactivated via the enable input on pin 7 of the IC when the camera is switched off. Next to the voltage trimmer, a resistor is soldered on that limits the maximum output voltage. The smoothed control voltage from a PWM output of the Arduino is then connected to this so that it can regulate the cooling performance. 
The second Mini360 under the first regulates the voltage for the 5V fan down to about 3V, so that it then works without much noise and vibration.
Electronics

An Arduino Pro Mini forms the core of the entire control system. With its data pins D2-D4 and D6-D8, it works on emulating the shutter signals for the 2000D, from which it also receives its supply voltage of 3.3V, as does the HC-05 Bluetooth module, which it connects via D10 and D11. D10 and D11 emulate a serial interface in software. You can also connect the Bluetooth module to the built-in serial interface via D0 and D1 instead, but you then have to disconnect it every time you want to upload a new sketch to the Arduino.
D9 is connected to the pin marked 'Shoot' in the picture of the cable release socket, which is located on the main board of the 2000D. This allows the Arduino hosted interval timer to trigger the camera. 
 
D13 goes to the enable inputs of the two Mini360s to switch the cooling on and off and to automatically deactivate it when the camera is switched off. To prevent the Arduino LED, which is also connected to D13, from lighting up when the cooling is running, it must be desoldered or broken out. 
 
D5 is used as a PWM output. The combination of two resistors and a capacitor connected to it smooths the square wave signal, which is then fed into the voltage control of the Mini360, which supplies the Peltier, and thus regulates the cooling performance. The control range is approximately 1V to 4V. 
The additional resistors soldered to the Mini360 limit its output voltage to 5.2V (Peltier) or 4.6V (fan). They are not absolutely necessary. 
 
To prevent the sensor from dewing, there are four resistors in the mirror box, each with 5.1Ω, which are fed by the Peltier voltage and thus heat in proportion to the cooling capacity. They can also be controlled by being gated via D12 and a MOSFET. 
 
The temperature (of the copper cooling plate) is determined using an NTC thermistor. To do this, its voltage is measured at the A0 input of the Arduino. The second resistor at A0 should have the same value as the NTC at 25°C, which makes it easier to calculate the temperature from the measured voltage. I used a 10kΩ type here, but 100kΩ will also work. 
 
Important: In order to upload a sketch, the camera must be switched on, as it supplies the Arduino. The supply via USB / Serial Breakout must not be connected in parallel to the Vcc of the camera!
Bluetooth control

The connection to the Bluetooth module has already been shown above. The question now is how best to communicate with it. 
Fortunately, there are already numerous ready-made solutions for this, i.e. apps that exchange data with Bluetooth devices on a cell phone or tablet. You could even put together your own app for this with a reasonable amount of effort, but I've made do with the "Serial Bluetooth Terminal" for now, although "made do" isn't really the right word, because it's a very nice app that does exactly what I need for the purpose. The code on the Arduino side is part of the ShutterEmuEOS sketch. It is designed for the Bluetooth Terminal app and can be easily adapted if necessary.
This screenshot of the Bluetooth Terminal shows the output of the help function, the current settings and the status of the camera in the upper half. 
 
In the lower part of the screen the Bluetooth Terminal  offers a configurable 'keypad'. Behind each key there is a macro that can be configured. Here the macros are designed so that they each send a character in order to easily execute the most important commands. Some commands expect a sequence of numbers that is entered before the command character. 
 
The key configuration can also be exported to a file in order to edit it on the computer or import it onto other devices. 
In the left part of the keypad are the commands for the interval timer, which triggers series of images with freely selectable exposure times (and pauses). You can operate the camera in bulb mode as well as in all other modes in which the camera specifies the exposure time, for example to take time-lapse series. 
 
At the bottom there is also the 'Kühlung' (i.e. Cooling) button, which is used to send the instructions for setting the cooling. For example, the character string '1K', which is sent with the '1' and 'Kühlung' keys, switches the cooling to the lowest level, while '8K' activates the PID controller, which keeps the temperature constant. 
 
 
The baud rate for communication between the Bluetooth module and Arduino is preset to 9600, which is also what is preconfigured for an HC-05. That's not great, but it's sufficient. What I also reconfigure on the HC-05 is the name under which it reports itself, for example "2000Daci".
The current settings are lost when the camera is turned off. However, they can be saved (using the E command) to the Arduino's EEPROM, from where they will be loaded again when the camera is restarted.

Interval timer

The interval timer can trigger the camera periodically. For long exposures, the bulb mode is selected on the camera and the interval timer determines the exposure time, which is selected from a range of predefined values ​​using '+' or '-' or entered in seconds or minutes. 
The smallest of the predefined values, selected by repeatedly entering '-', is intended to set the exposure time with the camera. In this "fast release" mode, the interval timer triggers ten times per second. The camera ignores premature triggers and only starts the next image when it is ready again. 
 
By selecting an extended pause between triggers, the exposure time can be precisely defined independent of the delay caused by image storage.  
The default setting is a pause of 0.2 seconds, but the camera will extend this if it is not ready, at the expense of the following exposure. 
With very short pauses, only every second shutter release may be triggered!  
Timelapse series can also be recorded with long pauses. To do this, the exposure time for the timer must be set to at least one second, because the "fast release" mode does not take long pauses.  
If you want the camera to set the exposure time, timelapse series can also be created simply by selecting a correspondingly long exposure time in the interval timer. The camera will only trigger again after the timer has ended the current exposure and the next one starts. 
 
When a Bluetooth connection is established, the current exposure status is continuously displayed (unless switched off with 'U'pdates). The interval timer also monitors whether the shutter emulator is actually being triggered and displays a warning if not. This allows you to see, for example, when the memory card is full. 
In "fast release" mode, a dot is displayed every second, which is replaced by a ' when the shutter emulator has just triggered an exposure.
Cooler setting and PID controller

Commands for cooler control consist of a number followed by a 'K'. For example, '0K' switches the cooler off, while '1K' to '5K' switch it on with varying degrees of intensity. When an acceptable temperature has been reached, which can be displayed by the '?' command, you can send '8K' to instruct the PID controller to hold this temperature. 
'K' alone displays an overview of the 'K' commands. 
With further 'K' commands, you can also select a target temperature or control the window heating. 
 
After switching on, the cooler is initially inactive unless a different setting has been saved in the EEPROM (see above).
Once the chosen series limit is reached, the heating is switched off to prevent the sensor from dewing due to the lower heat production of the switched off camera. 
 
The PID controller can be reconfigured with the 'C' commands, but this should not really be necessary. 


Cooling effect

After switching on the cooling, the measured temperature drops very quickly, which doesn't say much at first because the temperature sensor is located next to the cooling plate. But the Exif temperature of the images taken also starts to drop sharply with 2 to 3 minutes delay and returns to what the temperature sensor measures  after 10 to 20 minutes. This is much more effective than I expected and at first I was worried that the Exif temperature might also come from an NTC on the sensor board and that external cooling no longer reflects the sensor temperature well. 
However, measuring the dark current noise of the sensor shows that the sensor is actually cooled quite noticeably and matches the Exif temperature well. What then completely convinced me was the heavy fogging of the cooled sensor when I used the cooling outdoors for the first time. Based on my cooled 6D, which has a similar integrated cooler (with a cold finger directly at the sensor), I expected to get a maximum of one or two degrees below the ambient temperature and therefore initially did not install a window heater, which I now had to retrofit. With this, I then measured the following values ​​on the temperature sensor, which are about half a degree below the Exif temperatures:

Cooling setting 1K 2K 3K 4K 5K 0K
PWM signal (D5) 255 164 71 42 0 -
Peltier voltage 0.95V 2V 3.1V 3.4V 4V -
Peltier power 0.25W 1W 2.5W 3W 3.8W -
Window heating 35mW 66mW 400mW 460mW 620mW -
ΔT (with 60s Frames)    -1.4°C  -3.0°C  -4.8°C  -4.6°C  -5.0°C  +6.4°C

This means you can get down to about 5°C below the ambient temperature, or even one degree more without window heating. Almost full cooling is achieved with 2.5 watts of Peltier power, but even with a quarter of a watt the sensor temperature remains significantly below the ambient temperature. To cool more deeply you would have to turn up the fan or make the heat sink bigger. Or you could stack two Peltiers, but that would require to create more space. And the SNR gain would be rather small. Even at an outside temperature of 20°C the dark current noise of the sensor, which is then 15°C warm, only reaches the readout noise after an exposure time of around 20 minutes. 
With no cooling activated, the sensor heats up by around 7 degrees, or by around 11 degrees if no cooler is installed. The total temperature reduction compared to the unmodded camera is then 16 degrees. 
 
Here is a series of measurements for cooling, in which the camera continuously recorded 60s frames, initially uncooled, then from frame 113 with 2.5W cooling power (with active window heating and display off): 

First of all, you can see that the temperature from the NTC and the Exif data of the images rise almost in parallel over an hour and then drop sharply when the cooling is switched on. The sensor follows the NTC with a delay of around 3 to 5 minutes. The fact that the standard deviation calculated from the images follows the temperature curve clearly indicates that the sensor temperature is actually falling substantially. 
The standard deviation of bias frames, i.e. the noise without dark current contribution, is 13.5 ADU for this camera (at ISO 1600), which is too close to the measurement curve for an accurate evaluation. A comparison with 20-minute frames in which the dark current has a higher proportion of noise shows that the Exif temperature reflects the sensor temperature well.
The size of the image files, which is also shown in the diagram, also follows the standard deviation very nicely.
 
From the distribution of the standard deviation over the sensor surface, you can see that the sensor temperature is fairly homogeneous. Even under the cable connection, where the cooling plate does not reach, no higher temperature can be determined. Apparently the sensor really has very good heat conduction: 


Although there is some difference between the areas in the left and right halves of the sensor, the center does not have a higher standard deviation than the left half of the sensor.


Summary

Contrary to my expectations, the sensors of the newer Canon cameras, which are soldered over the entire back-surface onto a circuit board, can be cooled quite well, even a little better than the older generation by a cold finger in the gap between the sensor and the circuit board. In addition, it is much easier and you don't even have to unmount the sensor. Even with very low cooling power, the sensor temperature can be kept at ambient temperature or slightly below, so that the dark current remains within acceptable limits even in summer.



Last updated on September 26, 2024