8mm Film Scanner, final version with Canon 1000D

Some of you may have followed the saga of the 8mm scanner I built, using an Arduino and a Canon IXUS95 with 3D printed parts. It worked fine, and produced results that were entirely satisfactory, to a point. I first used a 10X macro lens intended for mobile phones to get a bigger image from the system, and with that I was grabbing images that had a 1400x 1000 pixel usable image out of the frame, which is 4.3 mm wide and 3.5 mm tall.

Then I got a 20X macro lens, yielding even better image size. The new image size was a whopping 3648 x 2436 pixels, and for a while I thought the project was done. But the macro lens that I attached to the IXUS95 with a 3D printed adapter ring had a definite downside in blurring corners and a slight barrel distortion, so I was about to go back to the previous 10X lens.

Image size comparison between EOS and last version of IXUS95

But then I was given a chance to buy a used Canon EOS 1000D from my sons, who went for more serious hardware and it was a legacy piece for them. So I got the camera with its basic 18-55 mm FD lens, and a second, larger zoom lens too. It’s great, as now I have a good enough SLR camera for all other purposes too, besides it being recycled into the 8mm scanner.

What the camera change meant

All I needed was a macro reverse ring. This little gadget allows you to reverse the lens on the bayonet, and then you can shoot amazing macro images with it. The only drawback is that of course the lens loses all automatic features such as access to the aperture and autofocus. In my application, such finesses are not needed of course.

With the macro ring, you have to do some tricks to get any meaning ful depth of focus. If you merely pull off the lens, and attach it reversed, you don’t have any access to the aperture, and at F2.8, you are looking at maybe a millimetre of depth in the focus. It’s not a good idea to go that low, so here’s what you do. Select aperture setting in the camera, turn F to 11 or even 16, then press the Check Depth of Focus button at the same time you disconnect the lens from the bayonet. Now you have the aperture set, and it will stay until you reattach the lens the right way round.

I also found that instead of using Auto White Balance, I could get better results using a halogen lamp with exactly 4,000 K color temperature. Such a lamp was found at the local lamp shop, and then I just adjusted the lamp power with the buck down regulator. As you have seen in the previous post regarding power management, the system takes in 14.4 V at 2A, and it is then delivered via four buck down regulators. The camera now wants 7.8V instead of 3.3V, the new lamp gets 12V, and the servos 6V. Arduino is happy when it has 5V on the power input.

A sample of the final EOS output. No barrel distortion, even brightness,
and even sharpness across the image.

3D printing issues

Then I needed to rethink the camera cradle. In the pocket cam version, I had the X and Z movements in the cradle itself, as seen in the previous posts. Y movement is handled at the film gate. The new camera dictated a new 3D printed bed for the camera, and some guiding structures on the table to make sure the camera stays stable. The film gate didn’t need any rework.

The new camera bed. Blue is the cradle, green is the guide part bolted to the frame.

The new lamp had to be given a new frame. I recycled the old lamp stand, and just printed a U-shaped holder for it. It gets rather hot, but nowhere near the PLA melting point of 200 degrees C. I also recycled the previous lamp holder from the stand, and pasted a piece of office paper on it.

Lamp holder (blue), and light diffuser (black)

This is because the resolution of the lens is so big, and the power of the lamp so high, that without something between the lamp and the film, the film grain starts to show really bad. Therefore the little piece of paper just in front of the film is necessary to even out the light and lose the grain.

Arduino issues and programming

The introduction of the EOS actually made life easier for me. The IXUS95 doesn’t have a remote jack, so I had to install the CHDK so as to gain access to remote triggering. The film port switch tells the Arduino that the frame is in place, and then Arduino sends 5V to the USB port of the camera, which has been programmed to wait for it and then grab an image.

In the new camera, there is a 2.5mm stereo jack on the left side. So, all I did was cut the wires going from the switch, and solder on a jack. I didn’t change the Arduino code – it’s not worth getting inside the program to cut something out of it, since the action side is now different and any voltage isn’t getting passed due to the different wiring. When the switch now closes, it merely causes the camera to shoot.

There is also a USB connector on the camera. This means I can stop the servos from rotating and pause the scanning, turn off the camera, plug in the cable to my computer, and get to the images on my computer. It’s easy to check that the pictures are being scanned properly. And when I want to continue, I just unplug the USB from the computer, turn on the camera again, press SET to raise the mirror, and turn on the servos, at which point the scanning resumes.

So, in essence, this is the final version of the project. Here’s a little video of it running. As always, if you have any comments or questions, just post them here and I will be happy to work with you.

It’s running!


0 thoughts on “8mm Film Scanner, final version with Canon 1000D”

  1. Are you going to upload the modifications to thingiverse? I’m trying to figure out how to build something similar and hoping to work from an existing design, though maybe a bit simpler and hacky

  2. I should do this project; I have an unopened Arduino still in the box, I have a friend with a 3d printer, I have a camera that films mp4 and a box of old faded 1950-1965 regular 8mm that I tried to scan with an old projector for my aunt. I have looked at your 30/01/2016 scanner parts yesterday but think I should wait for your latest version as using a new digital higher megapixel camera sound wise. Please let me know when you have posted the updated plans. I should do this while my aunt is still around…

    1. Thanks for your comment. I am rather busy at the time with the school work, but should still be able to finish the STL files and upload them soon. Stay tuned!

  3. This is an incredible setup, congrats! A few things — from what I understand, DSLR cameras have a limited shutter life (ie. approx 150,000 actuations) and so if you are scanning more than 41 rolls of film, you’re already nearing the expected shutter life cycle of this unit ( 41 rolls * 3600 frames per roll = 147,600 shutter actuations) For this reason, is it feasible to build this with an industrial/machine vision camera with a global shutter? See these on eBay for $100-$200 in color, USB 3.0 at 2K resolution (Basler Ace, Point Grey, etc) Would love to hear your thoughts! Would you consider a commission to build me one?! Or would anyone on this thread? I’m in California.

    1. Hello! Thank you very much for your kind words. This has been a project of many years, and this is the current version: https://www.instagram.com/p/B8ayqALBOIN

      My camera probably has a good 100,000 shots on the shutter, so it will fail at some point. Luckily similar bodies are available for 30 euros so it’s not an issue as such. I shoot one or two rolls of film every year, so I think I can manage with this body for a couple more years.

      As for using an industria camera, I did consider that, but there are a few issues that can be tricky. First, lenses. Most of these systems are designed for monitoring things much bigger than the 4.3 x 3.5 mm of an 8mm film frame. Using lenses with a reverse ring on cameras brings the extreme macro capability easier than on a separate camera.

      Second, the camera needs control software, and while there probably are open source systems that enable you to hook this up to an Arduino, or Raspberry PI, or an ESP32, there remains the traffic of images from the camera to a memory, which also is built into SLR cameras. It could be a little problematic to manage the image flow.

      Thie third issue is that you’d need to time the camera with the film movement, which in my system is managed via the remote shutter jack of the camera (the pocket version had to have the USB port hacked to double as a remote jack). I am not sure how one governs the image capture on industrial cameras.

      I will soon publish a new article on how I built version 4.0 of the system, complete with 3D printable parts and Arduino software, so maybe you could emulate my project? My workload at the moment doesn’t allow me to take on extra projects, unfortunately.

      Thanks again!

      1. Thank you! Understood about the industrial/machine vision camera. I would love to try and emulate your setup – in fact, I’m not in any way inclined to try it myself, but would pay someone to do it for me. I imagine there are people willing to complete such a task for payment?! Would I be seeking an Arduino/3D printing guru? Also — how does the system register exactly where the frame top and bottom are for each frame? Usually there is pin registration happening right where the film is exposed, but it seems on yours the registration is about 15cm away where the transport system is? Have you seen any issues with alignment? Another suggestion – I’ve seen people create a kind of ‘wet sponge’ system just before film travels through the capture gate. By having a liquid layer on the film’s surface, this assists with reduction of scratching and dust particles. Look fwd to the release of 4.0!

        1. Glad to see such enthusiastic interest in my machine, thanks again. I’ll do the reply in parts.

          Yes, there are people willing to print parts for you and they usually charge very little past the material costs, which are negligible – a roll of filament gives you all the parts for the scanner probably four times over, and costs $20.

          I wil supply all printable parts in separate STL files. They can be printed with any 3D printer, and will not need any work except removal of supports if the printer decides to use supports, and filing down the vertical legs just a little to allow for insertion into the structure (I printed them tight on purpose so as to keep everything snug).

          You won’t need much of a guru to do the Arduino. It’s a plug and play system where you insert pins from servos and switches to Arduino’s receptables, according to the wiring schema I will prepare. Power is acquired from a recycled 12V / 2A charger, which is then split via four buck down regulators (about a dollar apiece) to give you 5V for Arduino, 6V for the servos, 8V for the camera and 12V for the lamp.

          The film movement is done via a recycled film gate assembly from an expoured Bolex D8 I bought on eBay for 8 euros. This way, I have the same exact movement in my system, and just by replacing the clockwork with my servo, I can run it indefinitely and adjust the speed of the system too. It is now away from the exposure area because the previous system was very crowded around the camera, so I decided to add dome space by separating the film gate and the exposure. Once it is set up, and screws fastened tight, it never varies, and every frame is captured onto the same pixels in the SLR camera.

          I have optical cleaning cloth in the channel that the film passes and it both protects the film and removes any lint before the film reaches the exposure area.

          I’ll start working on a blog post to cover V4.o, which I will call the Kotokino Mark IV to honor my father – he labeled his films as being produced by Kotokino Mäyränkivi (translates to Mäyränkivi Home Movies, Mäyränkivi being the name of the building we lived in in the ’60s).

          Stay tuned!

Leave a Reply to Super8 Nerd Cancel reply

Your email address will not be published. Required fields are marked *


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