Hi all! It’s been slow here for a little while since the start of the school year, because my first period is always chock full of first year courses. Nevertheless I have had the coffee breaks and sundry moments to finally bring the 8mm scanner to a version I will keep as is from now on. That is, if I don’t happen to invest in a SLR digicam and a macro ring, and start getting even better resolution images. (Not very likely).
The reason I call it 2.0 is that I have consolidated power, upgraded controls, and an upgraded base with boxes for the control parts, as well as better cabling. The first version had all of this just floating around and it looked messy, not to mention being error prone. I had no option for pausing the scan run once it was started. Rewinding the film was not included in the program that the Arduino was running, and I had three power sources – one for Arduino and servos, one for camera, and one for the lamp. Oh, and the main axle running from the servo to the film gate was slipping.
The V2.0 takes exactly 40 frames a minute, and I have left it running for 11,000 frames without a hitch. My summer movies are one roll, 3:20 in length, with some 3,800 frames. A normal roll of film takes a little over 2 hours to scan, then I process it in Blender’s video editor and render an MPEG-2 file out of it. And hey, I got a piece of laminated flooring from a hardware store for 1 euro to make a nice base for the printer.
Let’s walk through the updates one by one.
The issue I had with the power was trying to build a unified source with multiple outputs of different voltage. So, I liberated an ex-ADSL power source of 9V / 1.5A for the central power adapter. I bought buck down regulators from eBay and learned how to use them to adjust voltages. Singly they worked well, but as soon as I plugged in the camera, it failed. I was baffled because my MA in English is not very well suited to electronics.
So, once more, I floated the question to the good folks of the Arduino Forum and the Canon Hack Development Kit or CHDK. The answer from CHDK was that the camera draws an amazing 2A when it boots and expands the lens. I hunted high and low for a bigger discarded power source at the Haaga-Helia IT Dept. but to no avail. I had to eat the humble pie and buy a 14.4V / 3.5A power source. It worked like magic off the bat.
To house this mess of wires, I designed a box in Blender with adequate ventilation holes at both ends. Power enters from one end and is issued out the side, with separate switches for servos, Arduino, camera, and lamp. This is most handy – if I need to pause the run, I just wait half a second to make sure the film gate switch is in the OFF position and power down the servos, Arduino, and lamp. The camera remains on with all the settings intact.
It is also important to have a common ground for all the parts connected to the Arduino, and this design provides it too.
For triggering the camera, I used to have an old USB-Mini 5 pin cable which I dissected to insert an extra loop into the red wire. This wire runs to the Arduino and when the film gate switch is closed to indicate frame in place, Arduino sends 5V to the camera via the USB. It was an ancient, stiff and unwieldy piece of cable, so I got a connector and soldered (!) wires directly to it. Yessirree, my arts & crafts teacher would be so proud of me now, actually using a soldering iron after 40 years.
I also soldered together wires for all attached devices so that they all end in male connectors, and the power source has all females. Arduino too no longer has a servo shield – I discarded it as unnecessary and connected the servos directly to the signal pins. This works fine and clarified the wiring scheme somewhat.
The camera battery was able to record just 800 images before running flat. First I got a power adapter and a power source, but with the unified power it became obsolete. I designed and 3D printed a battery mockup and wired it directly from the buck down regulators, and even if not pretty, it does the job.
As I said, I have switches now for all the components. The nifty addition in this version is a potentiometer for adjusting the speed of the takeup spool. As you may remember from the previous posts, a continuous rotation servo is commanded by the length of a pulse it receives. If the pulse length is 1200 ms, it runs full speed clockwise, if 1800ms, it’s full speed counterclockwise. So, I have a pot that sends values from 0 if turned full left and 1023 if fully turned to right.
Arduino has a map function that enables me to turn the value from the potentiometer into a value for the servo:
map(0, 1023, 1200, 1800)
This removes all need for further fiddling – it goes full clockwise if the pot is closed and full counterclockwise if the pot is open. In the middle there is the value of 1485 which stops the servo. I have an IF clause in the code that checks to see if the pot is between 1400 and 1600, and it then supersedes the pot value with 1485. This stops the servo for a larger part of the pot rotation, and it is handy sometimes when you don’t have to hit the exact degree of turn in the pot to stop the servo.
For rewinding the film, I switch spools so that the original spool is in the powered axle, then turn the pot all the way open. The film is rewound in about three minutes.
This was one thing that has been giving me trouble from the start. It isn’t easy to connect a servo spline of 6.3mm diameter to a metal gear five centimeters away. The first version was merely a length of heat-shrink tubing that fit on both ends somewhat, but that began to bend under the stress. I added a few layers of duct tape, and it worked a little longer, but ultimately started to slip.
The next version was a 3D printed, very snug, partly hollow tube. It matched the servo spline so beautifully (amazing resolution from the printer BTW) that it needed no fixing at the servo end. The film gate end was again heat shrink tube, and this worked for a long while, until the servo end failed. Now I got mad – there had to be a working solution. Hacking the servo was one that I had been avoiding for a long while but now I had to do it, so I took a diamond saw and split the spline along the diameter. I reprinted the axle but as a long hollow tube, with an inlay along the center to match the spline’s cut. That gives the full torque of the servo to the axle.
At the other end I took precise measurements of the gears, and printed the axle long enough to take in the entire length of the metal part. Inside the axle I printed four ridges that were very tight but stuck to the gears. And to join the two axles, I took some heavy duty heat shring tube but did not heat shrink it – I added instant glue to the axles and slid it on. This gives me the small amount of flexibility in the axle but is tight. And now I don’t expect any more slipping troubles from the axle.
Summing up the project
It’s been a wonderful ride. To be sure, I did not think I could pull this off. It seemed like I had too many moving parts I’d have to design and build. But as I teach in my innovation couse, it is not a good idea to think of this as a whole; you need to identify the parts of it, and then find out what is the make-or-break subtask. In this project it was the focus: no point in going forward until that one was cleared, and it was cleared with a 20 euro add-on macro lens for mobile phones.
So, what I would like you to take home from this, is that anything is possible these days – all you need is time and effort. A 3D environment like Blender and a 3D printer help enormously.
This is a 17 minute video on how this thing runs and what it produces.