Hacking a Camera Shutter with Infineon TLE94112LE and Arduino – Part 1

Part 1 – Reverse engineering and hardware design

This is the first post of the “PONF” series. I am the CTO on the PONF (Photography On Film) Project.  This project is the first dual back camera: digital and analog.  One of the most important aspects of this project is that it is a full open-source project.


With this article we will detail all the electronics required for the project.  For me, this is the most interesting aspect of the PONF project.  I hope that hardware and software solutions presented will be helpful and interesting to the readers. Most of the parts of the project we will present on have been presented in a fashion to be easier to replicate in your home workshop.


If you would like to know more on the PONF project take a look at the links below:

Project updates on twitter: @ponfcamera


A special thank for the support to this series to Adam Carlson, Editor-in-Chief.


Getting Started

This experience started by disassembling a Canon 60D electro mechanic shutter.  Thankfully it was not “destroyed” in the disassembly process. All of the screws were removed.


Once disassembled I found a series of test points on the ribbon cable of the shutter.  Probing the signal paths, I discovered that every test point corresponds to one of the pins of the shutter connector.



My teardown analysis validated a few thing, mainly, the timings as well as the opening/closing sequences will be controlled externally by the main camera board.

The shutter is built in three main parts:

  • Shutter Curtains
  • Geared DC motor that controls the shutter curtains with a current draw of about 800-900mA
  • 2 Solenoids keeping the shutter curtains in place

Based on this diagram of the electrical functionality of the system I connected the shutter through the test points to the Infineon TLE94112LE Arduino Shield. I extracted some of the information from the datasheet to show that this is a sophisticated half-bridge IC:


  • Twelve half bridge power outputs
  • Very low power consumption in sleep mode
  • 3V / 5V compatible inputs with hysteresis
  • All outputs with overload and short circuit protection
  • Independently diagnosable outputs (over-current, open load)
  • Open load diagnostics in ON-state for all high-side and low-side
  • Outputs with selectable open load thresholds (HS1, HS2)
  • 16-bit Standard SPI interface with daisy chain and in-frame response capability for control and diagnosis
  • Fast diagnosis with the global error flag
  • PWM capable outputs for frequencies 80Hz, 100Hz and 200Hz
  • PWM 8-bit duty cycle resolution
  • Over-temperature pre-warning and protection
  • Over and Under-voltage lockout
  • Cross-current protection


This is a perfect solution to control the logic of the shutter.

The TLE94112LE is conceived to manage both DC motors and solenoids.  I thought that it would be possible to control the two solenoids with the same IC, but unfortunately it did not work. After further testing, I discovered that the solenoids are triggered by setting the control signals low (grounded) when the shutter is in use. This behavior is incompatible with a direct output logic from the Arduino GPIO, so I added a small circuit and changed the wiring design.  To facilitate debugging I also added a couple of LEDs to see when the two solenoids receive the signal to release the curtains.

Note on the circuit


The TLE94112LE Arduino Shield is connected to the shutter motor through the TLE94112  pin header.  Nets OUT1 and OUT2 connects two of the twelve half bridges of the IC and are connected to the DC shutter motor.


The power line on the pin header P2 is connected to the shield motor power line.  I was able to find the optimal voltage for running the DC motor through empirical testing.  The best voltage I found for this application was 7.5 V. To find this value, I progressively increased the power line voltage (my power supply is a cheap DC/DC voltage regulator) until the TLE94112LE stopped sending an under-voltage error condition.

The two solenoid signals are sent directly by the Arduino to a couple of NPN transistors. As mentioned above, to monitor the solenoids status changes I added a couple of LEDs.

Assembling the prototype

The PCB has been engraved with a CNC as shown in the images below. I have also designed a support to simulate the camera’s optical path from the lens ring up to the shutter plane.


Some views of the PCB fabrication process and the final result


3D rendering of the shutter support


The assembled model glued to the shutter


With the reverse engineering complete, and electronic hardware fabricated, the new shutter prototype can be finally tested.   Before we get that far, we will need some software development, obviously! Next week in part 2 we will go over the firmware aspect of this design.



Join the conversation!

Error! Please fill all fields.
  • Adam Carlson

    I really love the hand drawn artwork. I use things like this a lot to help me gather my thoughts!


      Hey Adam! Me too. I always draw by hand many of my first schematic design. It is easier and faster especially when debugging hardware or thinking to the better solution for a mechanics. During the last couple of months, I bought a Wacom Slate that I find fantastic for this kind of jobs! You write down just on a paper notes then the mobile app stores the stuff in vector format and you can refine it and use digitally in a lot of formats.

Looking for the latest from TI?