Introduction: CNC Dual Arm Plotter Version 2

About: 55+ years in electronics, computers, and teaching ... now retired.

This instructable shows how to improve the accuracy and resolution of the plotter described in

The accuracy was improved by using:

  • thick aluminium shoulder arms to prevent sideways flexing.
  • metal sleeves at each joint to eliminate sideways movement due to the 3mm bolt threads.
  • a light-weight gel-tipped ink cartridge (optional).

The resolution was improved by a factor of 8 by:

  • using a 4:1 step down belt drive to achieve more motor steps.
  • using a controller that supports 16 times microstepping.

Step 1: Circuit

The above circuit shows two 12 volt stepper motors [1] connected to Big EasyDriver controllers set to 16 times microstepping.

Adjust each motor current, in turn, to 400mA by rotating the Big EasyDriver potentiometer while monitoring the current drain shown on the CPS-3205 power supply.


An alternate circuit using 6 volt stepper motors and EasyDriver controllers set to 8 times microstepping is shown in instructable

If you choose to use 6 volt steppers, the supply voltage must be reduced to 6 volts. You will also need to adjust the motor currents to 600mA and the following code definitions to:

#define STEPS_PER_DEG 6400/360

DELAY_MIN = 5000,

Step 2: Parts List

A parts list is attached.

All items were obtained from

Step 3: Code

The code for this plotter is attached.

The code is identical to that used in apart from the following definitions:

#define STEPS_PER_DEG 12800/360


DELAY_MIN = 2500,

Step 4: The Arms

The shoulder arm

Replace each of the plastic shoulder rulers with 6mm x 30mm flat aluminium bar.

Drill two holes 285mm apart. Use the holes in one arm as a template for the second.

One hole should have a diameter of 3/16 inches (4.76mm).

The diameter of the other hole should be 6mm.

The elbow arm

Replace the plastic elbow rulers with 1mm x 30mm flat aluminium bar. Thin aluminium allows the pen-lift to raise the arm assembly.

Drill two holes 285mm apart. Use the holes in one arm as a template for the second.

One hole should have a diameter of 3/16inches (4.76mm).

Custom-fit the other hole to fit the pen-holder.

The elbow joint

Trim 4mm from the end of a 3/16 inch tubular radio spacer. A simple method of doing this is to insert 4mm of the spacer into an electric drill then hold the spacer against a hacksaw blade while the drill rotates.

Fit the shoulder and elbow arms over this spacer then sandwich the spacer between two 3mm washers using a 3mm nut and bolt.

The elbow joint should now spin freely without wobble or unwanted sideways movement.

Step 5: Positioning the Motors and Spindles

Place a 6mm bolt through a GT2-80 6mm bore pulley [1]. Add a 6mm nut and washer then, using the existing 6mm motor clearance hole, sandwich the baseboard between another 6mm washer and nut.

Fit a GT2-20 5mm bore pulley to a motor and place it on top of the base board. Now loop a GT2-200 timing belt around the pulleys and mark the outside edges of the motor while the belt is tight. Remove the bolt and motor.

Slot the existing 6mm motor clearance hole. The slot allows the timing belt to be tensioned.

Make a pencil rubbing of the motor and use it as a template to drill four 3mm corner holes for mounting the motor and a 6mm clearance hole for the motor shaft.

Mount the motor and attach the GT2-20 pulley to the motor shaft.

Hack-saw the top off the bolt. The bolt may now be fitted to the base board (last photo).


The bore diameter of 6mm pulleys is actually 6.35mm (1/4 inch). The three center-punch marks around the hole (first photo) reduce the effective hole-size to 6mm to eliminate wobble. Next time I will purchase pulleys with a 5mm bore diameter and drill them to fit the bolt.

Step 6: Attaching the Shoulder Arms

Clamp a shoulder arm to the GT2-80 pulley as shown above and drill a 3mm diameter hole.

Fit a 3mm nut and bolt to prevent the arm slipping while you drill a second 3mm hole on the opposite side.

The temporary 6mm lock bolt may now be removed.

Step 7: Tensioning the Timing Belt

Place the GT2-200 timing belt over the 6mm spindle.

With the shoulder-arm attached, place the GT2-80 pulley over the spindle and lock in place using a 6mm drill-collet. Do not tighten the GT2-80 grub-screws ... the pulley must be free to rotate about the spindle.

Loosen the under-neath nut and slide the spindle towards the motor.

Fit the timing belt around the GT2-80 pulley and GT2-20 pulleys.

Slide the spindle away from the motor until the belt is taut then tighten the 6mm spindle nut.

Step 8: Results

The above photos track the improvements made to the original "CNC Dual Arm Plotter" described in instructable

Photo 1

Plot of on-board "target" using software version 1. Notice how all lines are curved much like a vertical plotter.

Photo 2

Plot of "target" using software version 2. This software calculates the motor settings for EACH motor step.The lines are now straight but the image leaves much to be desired due to unwanted joint movement. Notice how much the center of the cross has been moved upwards.

Photo 3

Plot of "target" from this belt-drive plotter using the same software. The horizontal and vertical line are virtually straight due to the increased resolution and better joints. The original plotter had a theoretical half-step error of 0.513mm. The "wiggles" for this plotter approach the pen-width which is 0.4mm.

Photo 4

"Radial line" test using the original plotter.

Photo 5

The same "radial line" test using this plotter. Notice how the horizontal, vertical and diagonal lines are all straight. The stepped nature of the lines in-between are due to the stepping ratio needed to correct the inherent line distortions. This probably accounts for why the circle in photo 3 is not smooth ... the line angle is continuously changing. While noticeable in these photos the "wiggles" are really quite small.

Photo 6

Some text output from this plotter, Again the horizontal and vertical line portions are relatively smooth.


The addition of belt drives, better elbow joints, and rigid arms, improve the plotter resolution and accuracy.

The accuracy is significantly improved by using stiffer shoulder-arms and better shoulder joints.

The expected improvement in resolution through the use of gearing isn't as great as expected. The horizontal, vertical, and diagonal lines all show an improvement, Other angles. however, still show tiny "wiggles".

  Click here   to view my other instructables.