Which Arduino for my film scanner?

A little background on what I'm doing is in this thread: Wiring up a Super Vexta Stepper Driver - Motors, Mechanics, Power and CNC - Arduino Forum

The film scanner I'm updating has several stepper motors, all driven by external drivers. There are also two AC Torque motors, to maintain tension on the film, these are enabled and disabled with relays. Additionally, there are a number of encoders and sensors: rotary encoder on one of the drive motors, optical encoders on some of the other stepper motor shafts, several Keyence FS-T20 photoelectric sensors. Some of these keyence sensors are used to count frames (through the sprocket holes), some are used to determine if film is threaded into the machine, etc. All in all, it's a lot of stuff, and to a degree it's still up in the air exactly which bits I'm going to need to use, since I'm significantly modifying how this machine works.

There are some functions that will require monitoring one or two sensors while running the drive motors - for example, I might use one of the photoelectric sensors to count sprocket holes, so that the scanner knows when to start and stop the drive motor for each frame. (Or I might use the rotary encoder on the drive motor to do this, if it's more accurate). Other things won't happen during scanning, but will happen during setup - such as the motors that move the camera position in the X and Z axes: those would only be triggered when setting up the scanner for various film formats. So it's possible I'll use more than one Arduino, each connected directly to the PC inside the scanner chassis.

My basic plan is to use software to trigger the arduino(s) inside the film scanner. All of the sequencing of events will be done in software on the PC, and the Arduino(s) will handle the interface between software and hardware. I'm imagining that the Arduino will be connected via USB to the computer. It'll get a signal to do something (go forward 1 frame), then do it and return a success or failure code. The computer will then trigger the camera, and advance the film to the next frame. It's not a particularly complicated setup.

So I guess my questions are: should I design this setup using multiple Arduino Unos, each handing a discrete task (one for motor drive, one for camera positioning, one for focus, etc)? Or am I better off getting something like a Due, with more outputs, to do it all from one unit? Is the Due significantly faster? What about the Intel Galileo?

Thanks!

I see nothing in your description that suggests that you need a fast response - in microprocessor terms, so speed is not a concern.

It does not sound all that complicated, so I doubt memory space will be a problem.

Extra inputs and outputs can be handled by shift registers.

Using multiple processors massively complicates matters because each one not only has to perform its designated task, but manage communication with the others.

Thanks - My current thinking is to get a Due or Mega, for the additional pins. Off the top of my head, it looks like I'll need to control (not all at the same time):

6 stepper motors (2 digital pins each, to external drivers)
13 sensors (photoelectric, mostly, Analog inputs)
2-3 relays
I also want to give myself a little flexibility, because it may be possible to trigger the camera from the Arduino as well (depends on the camera I decide on), and I'm not sure what those requirements would be.

So one way to break it down is to split the functionality across two Arduinos: My current Uno for setup (camera positioning, focus), and the bigger one for actual scanning (drive motors and about half of the sensors). Since setup happens only when the film gauge is changed, it's less frequent, and doesn't need to coordinate with the scanning process.

I figure it can't hurt to have the extra speed of a Due, right? Will the faster CPU be better if there's a fair bit of serial communication happening with the computer?

Thanks!

It's been a couple of months, but I wanted to follow up. Because of the number of sensors and motors, and because it was unclear how much work I'd be asking the Arduino to do, I decided to go with a Mega 2560 for the extra pins and faster processor.

I've now got the whole film scanner gutted and rebuilt, and on Friday the custom PCBs I had made by ExpressPCB came in. This is basically an arduino shield in the form of a PCI card (but not actually using the PCI bus in any way other than as a holder for the unit. The idea is that I could avoid having to build a second enclosure for the arduino and simplify the wiring overall. What I did was break out (almost) all the pins on the Arduino to 25-pin ribbon cable headers. These three connectors will go to external DB25 connections on the back of the host computer, which then break out to cables going to the various sensors and motors within the scanner.

I wired all of the pullup resistors onto the board itself, which is that row of 12 that you see in the photos. Just finished assembling it, but haven't tested it out yet, beyond making sure all the traces on the board go where they're supposed to with a continuity tester. Maybe not the prettiest design, but the first time I've done something like this, so it's kind of cool to see it looking so finished. I was going to etch my own PCB but there just wasn't enough time, and it would have cost me almost as much in materials as having them manufactured (about $100 for the pair of boards, including shipping). Pretty painless overall.

In the mean time, all of the individual sensors and motors have been tested and I've built up a small library of code for everything we need to do. The camera is installed and the software's user interface is just about finished, so once the various cables are made, I can move on to the task of getting all the pieces to talk to each other from the control software, which is written in RealBasic (now Xojo).

The arduino itself is connected to the computer's motherboard with a header pin -> USB Type B cable I had in a drawer, in place of one of the front panel USB ports, which we're not using anyway. The control software uses the USB connection to speak with the arduino. The camera is the last big hurdle at this point. We bought a cheap camera from a manufacturer that also makes high end ones, and the code library they supply works with the whole range. So theoretically we can get this part going on the cheap, and then swap out the camera for a really nice one this Fall.

If there's one thing I would have done differently on this design, it's that I should have put a board-mounted DB25 connector on it, to free up a PCI Slot in the machine, should we ever need it. But for now, this will do.

Hi,
Nice work on this! I think the MEGA was a good choice.

Interesting other work being done in this area sycu as:
http://www.jiscdigitalmedia.ac.uk/blog/entry/open-source-film-scanning

Thanks! I'm familiar with the kinograph. it's an interesting project and probably pretty good if you're dealing with smaller volumes of film.

We are doing this for commercial work, so the DSLR route isn't really ideal. Also, we decided to buy a 1990's era film scanner (which took up to 30 seconds to scan a single frame) and modify it, so we didn't have to build a film transport from scratch. The camera in ours is a machine vision camera - the prototype is an inexpensive 4.6k model, but it'll be upgraded to one with a 6k+ sensor this fall, once we get the bugs worked out. We were able to reuse all of the motors and sensors in the original unit, so even though we had to buy the shell of a scanner to start, it really didn't cost that much when you consider the price of a new or even used high-end scanner.