GreatLight CNC Machining Factory logo
CNC Machining
Rapid Prototyping
Materials
Industries
News
About GL

Get Instant Quote

Build guide

How to Make an Arduino Mini CNC Plotter Machine

A step-by-step build guide for engineers who want a working 2-axis plotter, not a shelf ornament. We cover frame stiffness, belt and lead screw choices, GRBL settings, pen offset, and the errors that stall most first builds. Read it and you can judge which parts are worth machining and which are not.

2-axis XY gantryGRBL 1.1 on Arduino UnoBelt or lead screw drivePen offset in firmware
how to make arduino mini cnc plotter machine
Quick answer

Key takeaways

Frame stiffness sets your accuracyA plotter on a flexing frame draws wobbly circles no matter how good the firmware is.
Belts for speed, lead screws for repeatabilityGT2 belt at 20 teeth suits drawing. T8 lead screw is slower but holds position under pen drag.
Steps per mm is the one number to get rightCalculate it from pulley teeth, microstepping, and belt pitch before you cut anything.
Pen offset is a firmware setting, not a mechanical fixGRBL has no Z axis on a pen plotter, so the offset lives in your CAM post or a small Z lift.
Torque drops fast above 600 mm/minSmall NEMA 17 motors lose steps when you push feed rates past what the driver current allows.
System architecture

What an Arduino Mini CNC Plotter Actually Contains

An arduino mini cnc plotter is three subsystems bolted to one frame: motion, drive, and control. Motion is the X and Y axes plus whatever holds the pen. Drive is the stepper motors and the belts or screws that turn rotation into travel. Control is the Arduino, the CNC shield, and the stepper drivers.

Every drawing problem traces back to one of those three. A circle that closes with a visible flat spot is a motion problem. A circle that drifts in size across the page is a drive problem. A circle that stops halfway is a control problem. Knowing which subsystem owns the symptom saves hours of guessing.

The frame is where most builds fail. A 3 mm acrylic gantry will flex 0.2–0.5 mm under pen drag, and that flex shows up as backlash you cannot tune out in software. Use aluminium extrusion, 12 mm plywood, or machined plate. If you have access to a mill, a 6 mm aluminium gantry plate removes this variable entirely.

Two axes are enough for drawing. Adding a Z axis for pen lift is a separate problem, and it doubles your wiring and tuning work. Build the 2-axis version first, get it drawing clean lines, then add a servo or a small Z stage.

  • 1
    MotionX and Y rails, carriages, pen holder
  • 2
    DriveNEMA 17 steppers, GT2 belts or T8 lead screws
  • 3
    ControlArduino Uno, CNC shield, A4988 or DRV8825 drivers
  • 4
    FrameRigid base plate and gantry uprights
Motion hardware

Rails, Bearings, and Drive Train Choices

For a drawing area around 300 × 300 mm, 8 mm smooth rod with LM8UU linear bearings is the cheapest option that still works. The bearings have some play, typically 0.05–0.1 mm, which is acceptable for a pen. If you want tighter motion, use MGN12 linear rail; it costs more but removes the play.

Belt or lead screw is the choice that matters most. A GT2 belt with a 20-tooth pulley moves 40 mm per motor revolution. It is fast, quiet, and easy to tension. A T8 lead screw with 2 mm pitch moves 8 mm per revolution at 4-start, or 2 mm at single-start. It is slower but holds position when the pen pushes sideways.

Pick belts when you want speed and long travel. Pick lead screws when your pen drags hard, when you draw with a marker, or when you need the carriage to stay put after a power cut. Mixing the two, belt on X and screw on Y, is common and works fine.

Tension matters more than most builders expect. A GT2 belt should deflect roughly 3–5 mm when you press it at the midpoint with light finger pressure. Too loose and you get backlash on direction changes. Too tight and you load the motor shaft bearings and hear a whine at low speed.

Coupling the motor to a lead screw needs a flexible coupler, not a rigid one. Rigid couplers transfer every tiny misalignment into the screw, which shows up as a periodic wobble in the drawing. A 5 × 8 mm aluminium flexible coupler costs little and removes the problem.

Electronics

Wiring, Drivers, and Power for the Build

The standard stack is an Arduino Uno with a CNC shield, two A4988 or DRV8825 drivers, and a 12 V 2 A supply. The shield plugs straight onto the Uno, and the drivers sit in the X and Y sockets. Leave the Z socket empty for a 2-axis plotter.

Set the driver current before you connect the motors. A NEMA 17 rated at 1.5 A per phase should run at 1.0–1.2 A, which is roughly 0.7–0.85 V measured on the Vref pin. Higher than that and the drivers overheat and shut down mid-drawing. Lower and the motors skip steps under load.

Microstepping changes your steps per mm. A4988 modules are usually set to 1/16 microstepping. With a 20-tooth GT2 pulley and 200-step motors, that gives 200 × 16 ÷ 40 = 80 steps per mm. Write that number down. You will enter it in firmware.

Power the Arduino from USB during setup and from the 12 V rail during drawing. If you power both at once, some shields back-feed the USB port. Use a 12 V supply of at least 2 A; a plotter with two motors draws 1.2–1.8 A in normal motion and spikes higher on direction changes.

Keep motor wires away from the limit switch wires. Stepper cables carry switching noise, and a limit switch line running parallel to them will trigger false stops. If your machine homes to the wrong corner, this is usually the reason.

Firmware

GRBL Setup and Steps per mm Calculation

Flash GRBL 1.1 to the Uno, then open a serial terminal at 115200 baud. Type $$ to dump the settings. The two you must change first are $100 and $101, the X and Y steps per mm values.

Work out the number from your hardware, not from a forum post. Steps per mm = (motor steps × microstepping) ÷ (pulley teeth × belt pitch). For a 200-step motor, 1/16 microstepping, 20-tooth pulley, and 2 mm GT2 pitch: 200 × 16 ÷ (20 × 2) = 80. For a T8 lead screw with 2 mm pitch at 1/16 microstepping: 200 × 16 ÷ 2 = 1600.

Set $110 and $111, the maximum rate, to something conservative at first. 600 mm/min on a belt machine and 300 mm/min on a lead screw machine are safe starting points. You can raise them once the machine draws a clean square without losing position.

Set $120 and $121, the acceleration, to 100–200 mm/s². Too high and the motors stall on sharp corners. Too low and the drawing takes forever and the pen dwells at every vertex, which makes dots darker than the lines.

After flashing, jog each axis with G0 X10 and G0 Y10. Measure the actual travel with calipers. If you commanded 10 mm and got 9.6 mm, multiply your steps per mm by 10 ÷ 9.6 and re-enter it. Two rounds of this gets you within 0.1 mm over the full travel.

Accuracy

Pen Offset, Backlash, and What Limits Drawing Quality

A pen plotter has no Z axis, so the pen tip is always offset from the carriage center. That offset means the drawn position depends on travel direction. A 15 mm offset produces a 30 mm error on a direction reversal if you do not compensate.

The fix is either a G92 offset in your G-code or a small Z lift that raises the pen between strokes. GRBL can drive a servo on the Z pin as a simple on/off output, which is enough for pen up and pen down. Set the servo travel so the pen clears the paper by 1–2 mm when raised.

Backlash shows up as a small gap or overlap where a line reverses direction. Measure it by drawing a horizontal line out and back with the pen loaded, then measure the offset between the two passes with a loupe. On a belt machine, 0.1–0.3 mm is normal. Replace or retension the belt if it exceeds 0.5 mm.

Drawing quality also depends on the paper and pen. A fine liner on smooth paper gives a crisp line down to about 0.3 mm width. A ballpoint on textured paper will wander and the line width will vary with speed. If you are testing mechanical accuracy, use the same pen and paper every time.

If you later need parts that hold ±0.005 mm instead of ±0.2 mm, the plotter frame logic still applies: stiffness first, then drive, then software. That is the same order we use when machining a bracket or a fixture plate.

  • 1
    Measure backlash with a back-and-forth lineDraw out and back, then measure the gap with a loupe
  • 2
    Keep the pen offset under 20 mmLonger offsets amplify direction-dependent error
  • 3
    Use one pen and one paper for all testsChanging either changes the line width and hides real error
Build sequence

Step by Step: How to Make an Arduino Mini CNC Plotter Machine

Work in this order. Skipping ahead to firmware before the frame is square costs you more time than it saves.

  • 1
    Cut and drill the base plateUse 12 mm plywood or 6 mm aluminium. Drill the rail mounting holes on a drill press, not by hand. Hole spacing should match your rail length to within 0.5 mm. Hand-drilled holes put the rails out of parallel and the carriage will bind at the ends of travel.
  • 2
    Mount the Y rails and carriageBolt the two Y rails to the base with equal spacing along their length. Slide the carriage on before you tighten the far end. Tighten one end, check that the carriage rolls freely along the whole length, then tighten the other.
  • 3
    Build the X gantryMount the X rails on the gantry plate, then bolt the plate to the Y carriage. Check squareness with a machinist square. If the gantry leans 0.5°, your squares will come out as parallelograms and no firmware setting fixes it.
  • 4
    Install motors, pulleys, and beltsMount the NEMA 17 motors on their brackets. Fit the GT2 pulleys with the set screw on the flat of the shaft. Route the belt and tension it to 3–5 mm deflection at the midpoint. Check that the belt runs centered on the pulley, not rubbing the flange.
  • 5
    Wire the electronicsSeat the CNC shield on the Uno. Insert the drivers with the correct orientation, then set Vref to 0.7–0.85 V. Connect the motors to the X and Y sockets. Keep limit switch wiring separate from motor wiring.
  • 6
    Flash GRBL and set steps per mmUpload GRBL 1.1, open the serial monitor at 115200 baud, and set $100 and $101 to your calculated value. Set $110/$111 to 600 mm/min and $120/$121 to 150 mm/s² as starting points.
  • 7
    Calibrate travel and square the axesCommand 100 mm on each axis and measure. Adjust steps per mm by the ratio of commanded to actual distance. Repeat until the error is under 0.1 mm over 100 mm. Then draw a 100 mm square and measure both diagonals; they should match within 0.5 mm.
  • 8
    Set pen offset and draw a test fileMount the pen so the tip sits within 10–20 mm of the carriage center. Apply the offset in your CAM post or as a G92 shift. Draw a test file with circles, sharp corners, and long straight lines to expose backlash and skipped steps.
Drive options

Belt vs Lead Screw vs Rack for a Mini Plotter

Numbers assume a 200-step motor at 1/16 microstepping.

Drive typeSteps per mmBest forWatch out for
GT2 belt, 20T pulley80Fast drawing, 300–500 mm travelBacklash if tension is low
GT2 belt, 16T pulley100Small frames, finer resolutionHigher belt load per tooth
T8 lead screw, 2 mm pitch1600Heavy pen drag, marker workSlow, needs flexible coupler
T8 lead screw, 8 mm pitch400Balance of speed and holdingMore torque needed to start
Rack and pinionVaries by moduleLong travel above 600 mmBacklash unless preloaded

When the Plotter Approach Stops Working

Build the plotter to learn G-code, steps per mm, and backlash. When your part needs ±0.005 mm, Ra 0.8–1.6 μm, and a real inspection report, move it to a machining center. We run 127 CNC machines across 3 plants in Dongguan and Singapore, quote in 12 hours with free DFM analysis, and ship in 3–5 days.

FAQs

Arduino Mini CNC Plotter Build Questions

Can I build this without any machining tools?

Yes, if you accept a plywood or acrylic frame and hand-drilled holes. The trade-off is accuracy: expect 0.2–0.5 mm of error from frame flex and hole misalignment.

If you want better numbers, have the gantry plate and motor brackets machined. A 6 mm aluminium plate with drilled and reamed holes removes the flex and keeps the rails parallel.

Why does my plotter draw circles as ovals?

The two axes have different steps per mm values. Check $100 and $101 against your hardware math, then command 100 mm on each axis and measure the real travel.

A second cause is belt tension. If the X belt is looser than the Y belt, the X axis will lag on direction changes and the circle will compress along that axis.

How much current should the stepper drivers get?

For a NEMA 17 rated at 1.5 A per phase, set the driver to 1.0–1.2 A. On an A4988 that is about 0.7–0.85 V on the Vref pin.

If the drivers get too hot to touch within a minute, lower the current or add a heatsink and fan. Overheating drivers shut down mid-drawing and the pen stops in place.

What feed rate should I start with?

Start at 600 mm/min on a belt-driven machine and 300 mm/min on a lead screw machine, with acceleration at 100–200 mm/s².

Raise the feed rate in 100 mm/min steps and redraw a test square each time. The first speed where corners round off is above your limit. Back off 20% from there.

Do I need limit switches?

They are not required for drawing, but they make homing repeatable. Without them you must set the origin by hand at the start of every job.

If you fit them, wire them on separate cable runs from the motors. Noise on the switch lines causes false triggers, and the machine will home to a random corner.

Can the same electronics drive a small milling spindle?

The control side is the same, but the mechanical side is not. A plotter frame is built for pen forces of a few newtons. A cutting tool pushes back with tens of newtons and the frame will deflect.

For anything that removes material, you need a rigid frame, preloaded linear rails, and ball screws. That is a different machine, not an upgrade to this one.

Send Us the Parts Your Plotter Cannot Make

Upload a STEP file and we return a quote with DFM notes within 12 hours. No minimum order quantity, from one prototype to 10,000+ parts, and 100% inspection before shipment.

12-hour quoteNo MOQ100% inspectionNDA on request

Follow us

More Build and Machining Notes

We publish setup notes, tooling trials and inspection data from the factory floor.

FacebookTikTokYouTubeLinkedInInstagramThreadsPinterest

Trusted by engineers and manufacturers worldwide

Tesla Ford Motor Company BYD Auto Denso Magna International Boeing Airbus Medtronic KUKA FANUC