Newbie wanting some advice

I have recently purchased a david laserscanner kit, which includes a line laser, digital camera and calibration panels. I want to be able to automate scanning, to resolve quality issues when scanning by hand and enable me to increase the resolution and framerate of my scans.

I basically need a system that will do two things, and am wondering if arduino is the way to go, over kill, or totally wrong for my needs.

I need two basic functions.

  1. A turn table that rotates the item to be scanned in 15 or 30 degree increments.
  2. An arm holding the laser that enables the laser line to 'very slowly' and smoothly pan up and down over the item to be scanned.

I get the impression that I will need in addition to a frame to hold it all together:

1x Arduino 1x Motor Shield 2x Motors

What else will I need to do this project, and assuming I buy my boards assembled, would this be an easy thing to make and program?

I'm not an electronics expert but I've read many tutorials and watched many videos allready. According to your specification, I don't think that you will need any more electronic parts - just the frame you mentioned (and maybe, nuts, bolts, gears, hinges, threaded rods; depending on your design).

What you want to accomplish sounds quite straight forward and relatively easy to do (except that you may have to assemble the motor shield by yourself, but there are guys out there who know how to do that). In my opinion the best type of motors to use will be stepper motors (like those in a scanner). There are stepper motors which you only have to attatch to the motor shield without any further "external" components. In fact the motor shield was designed to be used for exactly that. However, there are motors (e. g. those that need a high power source; i think > 12 volts, but I could be misremembering) you can't just attach to the board.

I hoped that helped.

Keep on hacking!

A turn table that rotates the item to be scanned in 15 or 30 degree increments.

With a stepper motor you have good control over the amount you've turned the table. You could also use geared motors but then you'd need some sort of feedback to know the table's angle.

An arm holding the laser that enables the laser line to 'very slowly' and smoothly pan up and down over the item to be scanned.

Does this have to move linearly up and down, or can it be fixed in the center of the obect and rotated. If the second you could strap the laser to an RC servo. If the first then probably some threaded rod and another stepper.

An Arduino is not an overkill, this is a good sized project for one.


I've been looking into this a bit more and found a hack for a £30 robot arm to enable it to be controlled from the arduino board.

I understand that the motor shield can manage 4 basic motors and 2 intelligent motors/servos.

The £30 robot arm kit uses 5 crappy motors of which 4 could be managed by the shield. The 5th motor (wrist) being replaced with a stepper motor for my scan. The turntable would be controlled with a 360 degree servo on the second intelligent motor controller.

The hack I saw doesnt use a motor shield, but i need the 2 servo/steeper motor controls. I need to double check that a motor shield enables control of 4 basic motors AND 2 intelligent motors, or whether the shield can deal with 4 basic motors OR 2 intellignet motors.

How much motors you can drive depends on the shield.

Official Arduino Motor Shield: According to the documentation of David Cuartielles it says: "The IC used on the motor shield can be used to drive one stepper motor, or two DC motors controlling speed and direction, or four DC motors controlling with fixed direction."

MotorShield from adafruit According to the documentation of ladyada: "# 2 connections for 5V 'hobby' servos connected to the Arduino's high-resolution dedicated timer - no jitter!

Up to 4 bi-directional DC motors with individual 8-bit speed selection (so, about 0.5% resolution)

Up to 2 stepper motors (unipolar or bipolar) with single coil, double coil, interleaved or micro-stepping. "

Edit: "up to x motors" means that you can either drive for example 4 DC motors or 2 stepper motors.

It was the same spec you posted from ladyada that I was refering to.

So one of these ‘advanced’ motor shields gives me control of 2x servos and a choice of either 4x DC motors or 2x Stepper Motors.

So, if i need to control 6 motors, that leaves me control of two motors short. Will i need two shields, or could the arduino itself run a couple of DC motors?

Assuming you have a UNO or similar: According to the pin usage the shield uses all of the 14 digital IOs. You can't just put another motor shield on top of it because the pin assignment would then be ambiguous. (maybe not if you wanted two motors to do exactly the same it would work, but I'm not sure about that).

The reason why one would use a motor shield is not just he wants to drive motors. There are motors which you can just plug in and turn it on and off just like an LED. The amount of current the motor draws decides if you will need a motor driver (e. g. the motor shield) or not.

Assuming that the motors you have in mind draw more current than a pin could cope with, I think that for your special purpose it would be better to build a motor driver on your own. Someone correct me please if I'm wrong (especially because I think it can be challenging for a beginner to build a motor driver).

i have to add that the shield pin usage documentation at the playground and ladyada's documentation diverge.

Ladyada says: "What pins are not used on the motor shield?

All 6 analog input pins are available. They can also be used as digital pins (pins #14 thru 19)

Digital pin 2, and 13 are not used.

The following pins are in use only if the DC/Stepper noted is in use: Digital pin 11: DC Motor #1 / Stepper #1 (activation/speed control) Digital pin 3: DC Motor #2 / Stepper #1 (activation/speed control) Digital pin 5: DC Motor #3 / Stepper #2 (activation/speed control) Digital pin 6: DC Motor #4 / Stepper #2 (activation/speed control)

The following pins are in use if any DC/steppers are used Digital pin 4, 7, 8 and 12 are used to drive the DC/Stepper motors via the 74HC595 serial-to-parallel latch

The following pins are used only if that particular servo is in use: Digitals pin 9: Servo #1 control Digital pin 10: Servo #2 control "