Sep 162014
Film or SMD feed roller - capstan 8mm/16mm/35mm...

Film or SMD feed roller – capstan 8mm/16mm/35mm…

Designing a combination roller/capstan for the telecine prototype as the mounting of current sprocket has some wobble in the mounting. Also need at least one more roller to improve film tension and frame position stability/accuracy.

Plus looking to use for SMD, 8mm and 35mm films, so have been making the scripts very easy to change through variables. The number of sprockets and size and slope, inclusion of outer guide walls and slope etc are all adjustable.

Currently revising code to improve how all the variables etc fit in to make the changes very easy – looks promising. Will release code in next few days in github spanner888 and thingiverse.

Plus still have to get out to XinCheJian and print and test, especially the shaft and sprocket fit!

Sep 022014

The telecine code has been opensourced here.

Readme extract: MovieFeedControl Summary:
This code controls two stepper motors for film feed and take-off. Sendkeys is used to send keystrokes to computer application to trigger frame capture via chosen camera – application. So you need an Arduino Leonardo or Teensy. Currently only tested on Teensy3, minor changes required for Leonardo.

The take-off stepper – film reel is controlled by two limit switches so that the take off speed is adjusted automatically during loooong processing sessions. This is necessary as the take of efective reel diameter changes as more film winds on.

The are buttons for user control (jog, bigJog, Frame{repeat until stopped}, Stop, ….} and switches for takeOff reel control, emergency stop , …….

Note any serial terminal logging will slow down capture speed. A ToDo is to only write to serial during the wait for film to stop or photo to transfer to PC waits.

Code is split into seperate files (tabs in Arduino GUI).

Status – working prototype. Code was written to be “good & polished as is” … and it is not too bad, however I create chaos everywhere and overcomplicate things, so feel free to tidy up.

There are heaps of TODOs throughout for refinements and features to be added…..

There is also a lot of debug code that can be removed, mostly in the #def’s

Blog of hardware build and other Telecine info can be found at

Sep 012014

There is plenty of good information about the web and several summaries of telecine methods, but I still struggled to choose the best approach that suited my goals. Partly as I need hands on to better understand things and partly as different summaries were incomplete, in conflict, or out of date.

So hopefully this summary of film telecine methods will help you to choose your own approach.

What to capture:

  • minimal just few key frames from each film. This makes it easy to set up an adhoc simple and capture the essence of your film.
  • capture every Nth frame (eg 5th) and then make movie – movements will be like very early films.
  • capture every frame.

Capture methods summary

  • film projector projects to screen and directly capture video – quality and sync issues – see (paywall) Silicon chip “Convert your 8mm movies to DVD before it’s too late!” April 2011
  • film projector projects into camera – ie still using movie projector, may or may not use original projector lens.
    I looked at this, but could not easily mount the available short focus web cameras, or DSLR.
  • custom film transport and camera system.
    This is route I have taken using film projector reel holders, drive sprockets and rollers.
  • consumer scanner with slide or negative capability
  • commercial film scanner – telecine – even the “cheap” commercial systems that just convert existing projectors cost thousands of dollars!
    These systems might convert entire frames, or scan a frame ‘line by line’ and can produce extremely high quality faster than real time.
  •  Outsource to commercial service, examples fees:
    digitising 16mm 0.2 $ per foot
    basic colour correction 0.1 $ per foot
    scene x scene colour correction $64.00 per hr

    In most cases you only have ONE copy of each film, so risk of loss or damage during shipping or issue during processing must be considered. We lost most of our honeymoon photos to a processing issue and the compensation was to provide new rolls of film … presumably so we could ‘re-take’ the photos!
    Plus of course having someone else do the conversion that takes away the fun of DYI!

Capture speed

  • Slow
    • Single frame – ie advance film, stop, capture, then repeat many thousands of times, then post process frames and create movie. My prototype is currently capturing 39 frames per minute. While there is scope to improve this, for a once off conversion process that does not require active monitoring (unless you wish to manually tag scene changes to help post processing), this speed is perfectly adequate.
    • Multi-frame capture – eg with off the shelf scanner, capture several frames at once, then extract individual frames…..
  • Fast – can capture near real-time or potentially faster.
    • Continuous capture – project to screen or camera, film feed is continuous, not stop start. Requires camera with direct electronic control and fast data transfer to computer – a ‘machine vision’ camera is the ideal.
    • If using project to camera, some people use original projector gate, so film does stop in the gate, others remove the gate so that the film does not stop.
    • Then a strong light source that can act like a flash is used to ‘freeze’ the film motion.

Capture Quality

  • capture method – eg project to screen has significant quality limits that cannot be overcome. All other methods over multiple ways to improve.
  • film transport – accuracy, alignment, repeatability
  • camera and lens
  • film cleaning
  • film stopped or moving and flash duration
  • photo format and quality, as well as match to post processing and movie formats
  • post processing – dust removal, deblur, sharpness, stabilisation, colour correction….
  • movie format, compression….
  • condition of film

Prototype documented in this site proves you can create a simple system that converts in reasonable time with adequate quality is highly automated and has plenty of potential to vastly improve quality and speed!

The goals that guided my approach:

  • single use system to capture family films
  • cheap, using readily available parts, easy DYI/maker approach
  • document, publish, open source, and also cross platform, or at least offer alternate options!
  • potential for re-use of ideas/parts in slide and negative conversion, and as discovered even SMD component tape feeders!

Key decision – unable to easily mount on hand cameras to existing projector lead to creation of custom film transport system.

Some references and inspirations that have helped guide me:


Aug 312014

Simple(ish) telecine prototype that has very flexible construction options. Below is the prototype in action converting a film. Sorry about the clutter, will post some build photos that are a bit clearer in next posts.

It is cheap … depending on parts you have. I had steppers, projector, case, power supply and a film scanner (for the backlight) on hand, so only bought stepper controller ($20 for 5) and some nuts & bolts. Also bought and then did not use several shaft couplers from local electronics shop (expensive ~$8 each)

Very reliable – can convert 10,000+ frames in single session as long as no film splice issues, converting over 90,000 frames so far. Without optimisation, conversion rate is currently 39 frames per minute and quality just like home movies with still many ways can improve it significantly.  So I am keen to progress this further!

The prototype also provides ideas for automating slide & negative digitisation and SMD component tape feeder(s) for pick and place machine.

Sample movie is below – guess who that is!

Here is a single frame from the above movie. Frame alignment was not done for this film, as you can see from angled and skewed framing.

Single frame capture example

Single frame capture example

Next steps will include improving:

  • Capture speed 39 frames per minute. Currently have code delays of  0.5 & 0.25 seconds to allow frame to stop moving and photo to be taken and loaded to computer. Also a camera with faster interface to computer would speed up a lot.
  • Improve photo & video quality with better camera and lense. One option is use of DLSR. Had read using a DLSR to take 100,000+ photos would wear out the mirror mechanism, but recently found out you can use some (many?) DSLRs – if you can leave the mirror open.
  • Reducing frame jitter:
    • Improved tension on feedin film, possibly by moving the feed stepper back to the feed in side of the film capture area.
    • reduce feed capstan wobble
    • post processing stabilisation for both capture jitter and any inherent unsteadiness in original film.
  • Change to direct camera control (possibly using sync) for both higher speed and so that capture computer does not have to be 100% dedicated during capture (due to the use of send keys from Arduino Leonardo or Teensy).
  • All the film cleaning and post processing ( sharpness, dust removal, colour etc correction (frame & scene), detect and trim frames, stabilisation…)
  • Decode the optical sound track – important footage I have has no sound, but there are several films with an optical sound track.

The more encouragement, comments and contributions received, the more incentive I will have to provide more information and release my code!

Apr 242014
Mobile phone screen replacement

Mobile phone screen replacement

SMD project everything in reach!

SMD project everything in reach!

The layout and organisation of what goes where is evolving, but is already proving pretty good!

Just won an auction for about 35 square meters of 30mm thick particle board ~700kg!. So now can do a full renovation (walls, ceiling and storage) on my machine room (garage) after another auction win (~700kg of 30mm particle board) so I can insulate it and stop it literally raining from all the condensation in winter … and rusting the crap out of everything.

Mar 192014

After being challenged to use a small motor to make something simple and interesting, first thinking was on variations of a useless machine, but seeing just how many already exist, the following simple “climber” was put together in 10 minutes.

Thread climbing motor

Thread climbing motor

Mar 192014

The initial goal was to quickly make a cheap, but usable camera copy stand. Previous post shows it took five attempts to get to a usable version!

The evolution included:- improved working space, stability of camera and work area, linear bearing mounting to reduce stress/wear and improve movement, push button height control.

Further Evolution that “might” get added:

  • add limit switches
  • add quick release clamps to further stabilise camera at chosen height.
  • Lighting needs large range position adjustment for two or more lights.
  • Easy addition of light box/filter sheets or plastic milk bottles.
Camera copy stand 5 - usable

Camera copy stand 5 – usable

Mar 192014

Photo gallery shows evolution of cheap camera copy stand creation to take overhead closeup photos of objects Each version was made mostly from items on hand, except for a few nuts and bolts and the last two versions used rods, linear bearings and stepper motor donated by the XinCheJian City project (thanks guys).

Each version “worked”, but until latest one had plenty of issues. Latest version also makes it really easy to adjust the height by pushing and up or down button connected to an Arduino Nano a XinCheJian designed H bridge motor controller and a stepper motor driving a ball screw. Plus still required a heavy counterweight, as seen in the last photo.

The biggest challenges were doing it cheap and getting rock steady mounting of the heavy camera and vibrations from nearby traffic (was highly noticeable!).

The final version is shown in the next post. Also not shown is version based on City project using belt to drive the slide – it also required counter weight. Did not refine it further as the rod mounts were too close together and not aligned accurately. Also not shown are the different attempts at lighting and rotating/tilt table to place objects.

Camera copy stand 1 - unsteady

Camera copy stand 1 – unsteady

Camera copy stand 2 - unsteady

Camera copy stand 2 – unsteady

Camera copy stand 3 - steady, but hard to adjust height

Camera copy stand 3 – steady, but hard to adjust height

Camera copy stand 4 - small work area

Camera copy stand 4 – small work area

Sep 092013
pcDuino with LinkSprite shields, Raspberry Pi, pcDuino

pcDuino with LinkSprite shields, Raspberry Pi, pcDuino

Went to XinCheJian hackerspace the other day to run Helper Session and left with a LeapMotion, pcDuinio with LinkSprite shields and sensors and a Raspberry Pi – all on loan – but such nice devices – made a great weekend.

The LeapMotion has had plenty of press since it’s release, so no need to rehash that here, my big first impression after a quick setup and short time playing game, was of being totally lost once the game finished, then I realised oh – have to use the old keyboard and mouse again – it was a huge letdown after being so free using the LeapMotion!

The rPi is one of the prizes for the SwarmRobot team (got shipped – returned and shipped again). Was going to use it for the new TheSpaceProjects, but then was told about the donation of several pcDuino’s and the LinkSprite shields etc. So now upgrading to pcDuino and maybe also the rPi.

More posts coming on pcDuino – as first impressions are it is actually a LOT more capability than expected!


Aug 262013

Trying to add a bit more wisdom to all the existing information that is around the web based on my tribulations with a SwarmRobot 32u4 based board (core of the Leonardo) and a SeeedStudio Xadow.

As everyone notes, on uploading your code, BOTH the computer AND the Leonardo drop/break the USB connection and then attempt to re-establish. The practical issues that this can cause, is where I had issues and found little information. So here are my 2 cents worth:

If both ends successfully re-connect:-

  • the port may have a different name/number. Recent Arduino programming GUI versions usually auto-detect the change. If not, you may have one of the other issues below.  Older Arduino programming GUI versions did not auto-detect and you had to manually change the port.
  • Sometimes auto-upload works, other times you have to press the Leonardo reset button. It seems to run in streaks, working reliably for auto, then for manual reset. Don’t know how to reliably fix this. Sometimes solutions here work, often not.
  • Sometimes Arduino autodetects the port correctly, but does not select it, so you need to check and select it.

If either end does not re-connect, try:-

  • unplug USB cable, wait a few seconds then replug it in, then recheck port shows correctly in the Arduino GUI
  • sometimes moving USB cable to a DIFFERENT USB port helps
  • close and reopen the Arduino programming GUI, especially if you see red messages like “lib rxtx cannot access the com port”.
  • reboot your computer and power off/on the Leonardo and if you see the above message. Under Windows 7, the following message usually means a computer reboot for me “ Couldn’t find a Leonardo on the selected port. Check that you have the correct port selected.  If it is correct, try pressing the board’s reset button after initiating the upload.
  • do all BOTH of the above
  • If the com port is greyed out, try selecting the com port during that brief moment of disconnection and before reconnection after board is reset. Using your operating system sound events for this is very handy!
  • in addition to HID control of mouse or keyboard that you have programmed, I suspect that on some Leonardo style boards active HID control sometimes causes issues. I use a few seconds delay in setup function to avoid this at least while developing my code, in addition to the generally suggested method to easily disabled HID mouse/keyboard control.
  • Sometimes you end up with multiple copies of Avrdude running and using a lot of CPU. For me this occurs occasionally under OpenSuse.
  • All my attempts to get OpenSuse working with Xadow failed for weeks, until I left the Xadow plugged in at computer power on/boot, then ran the Arduino GUI with root privilege, then after that the GUI ran OK with userlevel privileges. I really do not understand why this is so!