CNC Dual Arm Plotter Version 2




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.

1 Person Made This Project!


  • Game Design: Student Design Challenge

    Game Design: Student Design Challenge
  • For the Home Contest

    For the Home Contest
  • Big and Small Contest

    Big and Small Contest


Anagha B V
Anagha B V

Question 5 years ago on Step 4

What is the dimension of the used four aluminium bars? What is meant by tubular spacers?


Answer 5 years ago

The distance between the holes for each of the plotters described in and is 285mm.

Another plotter, that works on a similar principle has a hole spacing of 300mm for each of the long arms, and is described in Step 4 of this article details how to make the spacers and cut them to length.

The "spacers", which aren't absolutely necessary but reduce joint wobble, are readily available hollow cylinders with an outside diameter of 3/16" and an inside diameter suitable for a 3mm bolt. If you choose not to use them just drill 3mm bolt holes for each joint. You can always enlarge these holes at a later date if neccesary.


5 years ago

This is really good! From your experience do you think it would be possible to get really crisp and straight lines with this approach like you would get with a more conventional plotter design? What is causing the wiggly lines in the current setup after you used stiffer arms?


Reply 5 years ago

Thank you for your comment :)

There are two reasons for the tiny wiggles.

(1) mechanical play and (2) an inherent design weakness that I discovered in ... this plotter uses the same code.

This weakness is fully explained in the comment section that follows the above article but to summarize, a one step motor error will move the pen somewhere between 2.42mm and 5.48mm before gearing assuming 100mm arms.

Using 16 times microstepping and 4:1 gearing the above figures translate to wiggle widths of 0.04mm and 0.09mm (approx. 0.1mm)

Conventional XY cartesian plotters such as do not suffer from this effect.

An alternative pen-lift for this plotter is described in This pen-lift has a smooth action regardless of pen dimensions.


5 years ago

Nice work. The only equivalent I have seen used steel cable instead of belts (recovered from a skipload of old continuous-drive chart plotters). This is much the cleaner end product.

Perhaps a pair of identical members for each arm - secured in an I-section format and with proper bearings at the elbow might improve matters?

The next stage will, presumably be a solenoid-operated pen?

After that, how about a similar device for digitising a sketch/drawing etc, and to immediately mirror it onto an wood/aluminium panel for drilling/cutting?


Reply 5 years ago

I-sections and good joint bearings are definitely required if you want to achieve the theoretical accuracy.

A solenoid operated pen lift, or the equivalent, would be better. The servo-horn, while simple, causes the arm to move slightly during the pen-up movement.

I have been experimenting with openCV and computer vision ... now there's a possibilty ;)


Reply 5 years ago

A servo for the pen would work if it drove a parallel-action pen (just a pair of pins on the pen with the servo horn between them, and the pen sat in a close-fitting tube).

Using something like this as an electronic pantograph - able to magnify or reduce the motions of a digitising pen would be wonderful. Make it an etch resist pen, and you can do etched artwork traced/magnified form an original.