Introducing 8mm Scanner v2.0

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.

Power management

Contents of the switch boxThe 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.


Camera with printed battery mockup
Camera with printed battery mockup

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.


Switch bank
Switch bank

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.

Main axle

Main axle
Main axle

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.

0 thoughts on “Introducing 8mm Scanner v2.0”

    1. Thanks John,

      I’ve been surprised how interested people are in this project.

  1. What a brilliant logic approach to solving the problem of transferring 8 mm film to a digital format. Some of the project I have looked at seem to me at 78 years old very complicated. I am re-enthused and would like to have a go at building this scanner. I have started to get things together and make a start. I have access to a 3D Printer and would like to ask if the codes (software) for the 3D parts are available.
    Sorry, not speaking your language I am unable to read the two sentences below.
    Looking forward to your comments
    PS, I have ticked both boxes below as my message would not go!

    1. Hello Terry – many thanks indeed for your kind words.

      I can send you the STL files, but you may need to do some scaling to suit your own camera size etc. I’ll send you an email on how you can obtain the STL files. Are you using a 3D software (3D Studio MAX, or Blender as I use, or someything else? If you are, then I can send you the actual files from which the printable parts are exported.

  2. Hi Heikki,
    Thank you so much for your reply. My son has the 3D Printer, I have had a word with him and he tells me that whilst he can read STL files he is unable to carry any modifications should he need to. If possible the preferred file extensions are .STEP (.STP) or .IGES (.IGS) files: either of these types would be fantastic.
    I eagerly look forward to your reply, in the meantime.
    Terry Revill

    1. hi Terry,

      I haven’t used STEP or IGES files, and Blender doesn’t seem to have export capabilities for them. STL is the universal 3D printer format, so I think your son will be able to use this file.

      It has the entire set of things to print. It is possible to scale items in the printing software before printing, but if you do, remember to make note of any scale factor you use and use it for all the parts. You will need to split this STL file in the printer software and remove all but the item you want to print at any time. It is possible to print a few items at one go.

      I hope all goes well, and let me know if you need anything else. Good luck.

  3. Terrific project! I have been working on replicating it with my students. We have prepared the parts and are now working out the code and camera. We are using a Canon PowerShot A2500. You reference a script for use with the camera from CHDK. I am unable to locate it in any of your posts. Could you share? Thank you. This activity has been very engaging!

    1. Hello Steve,

      many thanks for your comments, I am delighted to see that another school is using my work as a reference for their own! You know, it’s a direct oversight from me that the script is not in the blog, so I will edit it now and add the one that I use with my scanner.

      It is now up at, and as I state there, it was written by the CHDK team and merely edited by me.

      I would love to keep in touch regarding your project, if you wish. You’re the third team to start work on this project that I have heard of. Also, please check my other projects, especially the ESP32 / IoT related work. They may be of assistance when you add connectivity to your robots.


  4. I’ll try to forget what I just seen, another project, and my wife would kill me.
    Again, amazing project.

    1. Thanks for the comment, Michael! I’m glad to see that you like my work. Stay tuned for more on the 8mm machine 👍

Leave a Reply

Your email address will not be published.


This site uses Akismet to reduce spam. Learn how your comment data is processed.