|Home||Download: EOS-Shutter V3.1|
Canon EOS Shutter-Emulation
Erwin Lotter, 13.04.2022
Currently, this page is a bit out of date. For information about additional EOS models, please try a translation of the German version.
This article describes how to operate a Canon EOS 600D or 1100D camera without a shutter. The technique is based on the Canon EOS 1100D Shutter Emulation presented by Hendrik Beijeman. To simulate the signals expected by the camera, Hendrik used a bare microcontroller chip, which is replaced here by an Arduino. For programming it, the free Arduino IDE is used.
USB Nano V3.0 ATmega328P CH340G 5V 16M - Compat. Arduino Nano V3.0”
2.) “‘Pro Mini’ atmega328
3.3V Replace ATmega128 Arduino Compatible Nano“
Both came by direct import from Hong Kong for the price of about 2.50 € and 1.80 € (shipping free!). Tax was not an issue here in Germany due to the low prices, but delivery times can be 2-3 weeks. The only little problem was the CH340G USB controller on the first board, for which the Arduino-IDE had no driver installed, so I had to get one and install manually (CH341SER.zip)..
Due to the controller
specifications, the 3.3V model of the 'Pro Mini' runs only at 8 MHz
instead of the more common 16 MHz. It is therefore important to pay
attention not only to selecting the correct board type, but also the
correct clock frequency during programming! The popular 5V / 16MHz
version of the 'Pro Mini' often also runs fine at 3.3V, but it is not
guaranteed to work reliably under all operating conditions. With me it
worked, but I have not tested yet whether it works also in a cold
Unlike Hendrik's solution, I do not use the P5 signal of the camera, because it is not suitable to simulate the Live-View mode. One can, however, draw the required information from the P7 signal alone and simulate all modes with a small modification of Hendrik's timing. Then, it is also avoidable to tap P5 directly on the mainboard of the EOS, which is not quite trivial. Only for the 3.3V you have to solder directly on the EOS board, but this is quite easy. (Unfortunately, the coil supply can not be used to power the Arduino because it is not permanently present.)
Another small difference to Hendrik's design is that I use simple diodes instead of the MOSFETs at the outputs, which I had still lying around. Possibly they can be omitted completely, but I didn’t want to risk a mainboard and therefore did not try it. In addition, a 5V test operation of the Arduino is possible without problems with the diodes (or MOSFETs) present.
The connection differs significantly for the two camera types, especially because the shutter of the 1100D has only one holding magnet ('coil'), while two are installed in the 600D:
The resistor Rs is optional
and serves to protect the mainboard against short circuits. It must not
be chosen too high, otherwise the Arduino will have start-up problems.
Values around 20 Ω seem well suited.
An Arduino program – also
called sketch – usually is passed via a serial (USB) interface to the
Arduino bootloader, which permanently stores and executes the program
after a reset or power-up of the Arduino. This takes about half a
second, however, and that’s too long for the camera, which apparently
checks on start-up, whether the shutter is all right.
Unlike the original emulation, only the coil signal is
used as a trigger presuming that the timing of the long and short
shutter mode are identical except for the pause in the 'long mode',
since both modes are based on the same mechanical sequence. The light
sensor signals remain active, even if their LED is deactivated, but
this does not disturb the camera logic. This not only simplifies the
emulation considerably, it can now also be used for the live-view mode.
However, shooting from the live-view does not work for all cameras,
some hang up or react with an error, so that they can only be reset by
Between the emulated shutter movements, the Arduino processor goes into sleep mode and then only consumes a few microamps. In order to be able to really use this, the power LED of the Arduino has to be unsoldered or broken, which otherwise consumes approx. 1 mA. This also prevents light from the LED from hitting the sensor.
application of the emulator board
After the shutter removal,
for which the camera has to be completely disassembled, there remains a
cavity that the Arduino board can be inserted easily. You should also
remove the mirror and get significantly less shading with F/5 or
faster optics. As a reward, you get a camera that works completely
noiseless and is no longer subject to mechanical wear.
Without a shutter, of
course, the minimum exposure time is severely restricted: pictures in
daylight or from the moon are no longer possible. The lower limit is
determined by the duration of the reading process, which is around 1/10
second. The minimum exposure time at the top edge of the image is
approx. 1/50 s and increases linearly downwards by 1/10 s - a behavior
that, by the way, also limits the minimum exposure time of darks also
This means that with 1 s exposure time there is a difference of about 10% between the top and bottom edges, with 10 s about 1%. In the first case, a flat field correction is advisable in any case, with 1% variation one can usually do without it. Such a level correction can also be done numerically. It is also important to note when recording flats that their exposure time is not too short, i.e. not less than e.g. 10 s.
Uploading a Boot-Program
An Arduino sketch can be
uploaded in a way that it overwrites the bootloader and runs without
it. For this purpose, a second Arduino is used as an ISP
1. Convert an Arduino into an ISP
First, the second Arduino -
the ISP - is connected to the PC and loaded with the Programmer
software. The destination board must not be connected yet! In the
Arduino IDE, select „Tools > Board“ and enter the type of the ISP
2. Connecting the Boards
Next, the ISP is
disconnected from the USB and connected to the target arduino: Gnd-Gnd
and Vcc-Vcc are connected, as are D11, D12, D13 (MOSI, MISO and SCK).
D10 of the ISP goes to RST of the target. Then connect the ISP to the
3. Upload to Target
Now, the target board must be indicated as the connected board - including the correct processor and the correct clock frequency (this will not be detected automatically)! Then the desired program is opened as a sketch. The upload, however, is not done with the upload function, but with „Sketch > Upload with Programmer“ (or Shift Upload Button). With this command, the ISP loads the program as boot code into the target.