Finally – here is the much overdue update I promised a while back! Progress has been made on several fronts since the last post: the projector now has an appropriate backlight, I drilled a hole in the backplate I made to allow for projection, a new lens has joined the lineup, and an Arduino UNO has been thrown in the mix!
The backlight is a 3 watt, Red, Green, Blue (RGB) LED I purchased on eBay. The idea is that the red, green, and blue colors can be mixed independently to set the white balance and supposedly, an RGB LED will provide a fuller color spectrum as compared to a standard white LED. This is important for capturing all the different colors present in the original film.
The Arduino has been added mostly because I had eBay bucks to spend making the $12.79 Arduino essentially free. While slower than the Propellor, the Arduino is easier to program (for me anyway). It supports hardware pulse width modulation (PWM) which I attempted to use to control the red, green, and blue channels of the LED (we’ll get to that…). As the Arduino is limited in how much output it can drive directly, I have the rather power LED powered through the transistors seen on the breadboard.
So why am I not using the Arduino’s hardware PWM controller to drive the LED channels? It turns out that the frequency the PWM controller operates at causes visual artifacts on the webcam. Cheap digital cameras scan their sensors sequentially – imagine the pixels on the sensor as being arranged into columns and rows. The sensor will start in the begin to scan the pixels in rows from top to bottom which takes a small amount of time. This is generally imperceptible, but when the image is changing quickly, it is possibly for the position of a picture element to change as the pixel rows are being scanned, leading to visual artifacts. This is easily seen when an iPhone takes pictures of an aircraft propellor. I think the same thing is happening to the webcam – the LED light is strobing as the image sensor is scanning rows of pixels. This is seen as visual stripes in the webcam output :-/
How is this solved? One way is to change the PWM implementation. The LED must remain lit short enough to strobe once every pixel row scan OR the LED can remain lit long enough that the entire image is scanned in one go. This latter solution works for still images – I’m not sure how it would hold up in video. Finally, the LED’s current could be controlled directly. This is the ideal solution that will allow the LED to remain constantly lit while being able to alter its brightness.
I drilled a hole through the back of the plate I made earlier to allow the film to be viewed. Due to space constraints, the backlight is mounted in the front of the projector where the lens was originally and the image is projected in reverse.
The lens is now mounted to the rear of the projector. At this stage, the mounting is temporary – as you can probably tell by the zipties. Instead of enlarging the image, the lens now serves as a macro lens providing approximately 1:1 magnification. I’m actually using the original lens for this demo, but I also purchased a new zoom lens from eBay.
Putting it all together
To the left is the current state of the backlight. There are four wires soldered to it – common, red, green, and blue. At full brightness with the resistors I had in my shop, the backlight casts a purple light; this was supposed to be remedied by the Arduino. Indeed, the Arduino is able to control the backlight color – but with visual artifacts, a new solution is needed.
On the right, you can see the lens barrel (far right silver object), the webcam board in the center with the blue power LED, and the projected image itself on the sensor in the center. Remember, this is the bare webcam without any lens at all! It’s all held in temporary place by a “third hand” soldering tool so it’s not in the best alignment.
Below is a wide view of the setup, with the white arrow pointing to the projected image. Here you can clearly see the zipties holding the projector lens in place. Additionally, note that the backlight now casts a warm white light – this is from the adjustment provided by the Aduino.
Finally, here’s a video of it in action.