Build a Simple 3D CNC Plotter - Arduino Based 400x400mm

by MertArduino in Circuits > Arduino

645 Views, 5 Favorites, 0 Comments

Build a Simple 3D CNC Plotter - Arduino Based 400x400mm

Build a simple CNC plotter | 3D printing of large parts on Bambu Lab

Hi friends, I previously built a mini CNC plotter that had a limited working area of approximately 100 x 100 millimeters. Additionally, the project used a custom PCB. I’ve made some improvements to this project. As requested, I set up a circuit on a breadboard featuring stepper motor drivers and an Arduino Nano. I also redesigned the X and Y axes to be interlocking.

Dividing and Printing Large 3D Parts

Ekran Resmi 2026-04-09 10.11.52.png
Ekran Resmi 2026-04-09 10.12.16.png
Ekran Resmi 2026-04-09 10.12.34.png

The biggest change is the size. This new version has a working area of around 400 by 400 millimeters. But my printer, the Bambu Lab A1, only supports up to 256 by 256 millimeters. So I used the cut tool in Bambu Studio.

I selected the dovetail mode and adjusted the rotation settings. Then I fine-tuned depth, width, and flap angle before placing the cut. After that, I used the perform cut option to split the model. Now the axis is divided into two parts. I temporarily removed one part and exported the other as an STL file. Then I brought back the removed part. I exported it separately as another STL file. This way, both parts are ready for printing.

You can get the Print Profile and all STL files here: https://makerworld.com/en/models/2632836-build-a-simple-3d-cnc-plotter#profileId-2907504

For print settings, I focused on quality. Smooth surfaces are important for the gear rails to move freely. That’s why I used higher quality settings. I also set wall loops to 3. This makes the outer walls stronger, especially at the connection points. Thin walls could cause weakness in split areas. I applied the same cutting process to the gear rail parts. These are the most sensitive components of both axes. So I recommend using careful cut and print settings here. After exporting all parts separately, we can move on to printing.

Once all parts are printed, we start with cleaning. Remove the supports carefully before assembly. You can use a thin flat screwdriver for tight areas. Be careful not to damage the sliding channels. The gear rails need to move smoothly inside them. If everything is clean, we can start assembling.

Assembly

Ekran Resmi 2026-04-09 10.12.51.png
Ekran Resmi 2026-04-09 10.13.12.png
Ekran Resmi 2026-04-09 10.13.26.png
Ekran Resmi 2026-04-09 10.13.39.png
Ekran Resmi 2026-04-09 10.13.50.png
Ekran Resmi 2026-04-09 10.14.05.png
Ekran Resmi 2026-04-09 10.14.22.png
Ekran Resmi 2026-04-09 10.14.36.png

Assembly is simple and fun, just like building blocks. First, connect the split parts of the Y-axis slider. Make sure everything fits tightly. Then assemble the Y-axis gear rail parts. I made the fit slightly tight, so you may need to apply some pressure. Both parts should connect fully and move smoothly.

Next, assemble the X-axis components. Insert the gear rail and slider parts together. At this point, both axes are almost ready.

Now let’s install the motors. This project uses 5-volt hobby stepper motors with an Arduino Nano. Start by attaching the 3D-printed gears to the motors.

Then mount the motors onto the X and Y axes. Align the gear rails properly before placing them. Secure everything using M3 screws.

Since the X-axis sits on the Y-axis, we need support for the free end. So I added a wheel-like support part. Assemble this support piece and attach it to the X-axis. Fix it with screws to ensure stable movement.

Then place the X-axis onto the Y-axis frame. Secure the X-axis in place using screws. Finally, install the Z-axis motor for pen movement. Attach the pen holder to the motor shaft.

Now the mechanical assembly is complete. Next, let’s move on to the electronics enclosure. I designed a box that moves along with the Y-axis. The base of the box fits onto the X motor and Y gear rail. It’s designed to be easily removable. For the circuit, you’ll need a few basic components.

Circuit

Ekran Resmi 2026-04-09 10.15.00.png
Mini-CNC-Plotter-Stepper-Nano.png

You will need an Arduino Nano, three stepper drivers, a breadboard, and some jumper wires. Follow the shared wiring diagram for connections. Also, use extension cables for the X and Y motors. Once everything is connected, we can continue.

28BYJ-48 ULN2003 5V Stepper Motor - https://amzn.to/3KuDNa2

Arduino Nano - https://amzn.to/41jx2jV

Breadboard - https://amzn.to/47TFDxo

Jumper Wires - https://amzn.to/3PXInnm

6V Power Supply - https://amzn.to/3NTcLyB

Uploading GRBL to Arduino

Ekran Resmi 2026-04-09 10.15.17.png
Ekran Resmi 2026-04-09 10.15.29.png

Before drawing, I ran a few tests. This helped confirm the movement and working area. Everything worked as expected. Then I placed a sheet of paper on the base. I fixed it using tape from the corners. After that, I installed the pen on the Z-axis.

Now let’s move to the software part. First, upload the GRBL firmware to the Arduino. No changes are needed in the code.

Setting Up the Page for the Drawing Area and Generating G-code

Ekran Resmi 2026-04-09 10.15.50.png
Ekran Resmi 2026-04-09 10.16.02.png
Ekran Resmi 2026-04-09 10.16.14.png

Next, download and open Inkscape. Create a page that matches your working area. Import any image you want to draw. Convert the image into a vector. Delete the original image afterward. Then export the result as an SVG file.

To generate G-code, use an online tool like JSCut. Import your SVG and set the required values. Then create the operation and generate the file. Save the G-code file.

Control the CNC Plotter

Ekran Resmi 2026-04-09 10.16.25.png
Ekran Resmi 2026-04-09 10.16.41.png
Ekran Resmi 2026-04-09 10.16.54.png
Ekran Resmi 2026-04-09 10.17.06.png

Now install and open UGS software. This will control the CNC plotter. Select the correct port and connect the machine. Open the setup wizard once connected. Use the controls to test axis movement.

Check if all axes move in the correct direction. If any axis moves backward, you can invert it in the settings. Next, position the axes to your starting point. Adjust the Z-axis so the pen is just above the paper. Then reset the machine position to zero.

Complete the setup steps and finish the wizard. Now import your G-code file. Start the machine and observe carefully. During the first run, keep your hand near the pause button. Watch for any incorrect movement or pen issues. Be ready to stop the machine if needed.

I noticed a small issue with the pen position. So I paused the machine and fixed it. After that, everything worked properly. Now the CNC plotter is fully ready. With fine tuning, you can get even better results. That’s something you can improve over time.

The main goal of this project was to show how you can go beyond the size limits of a 3D printer. By splitting large models into parts, you can build much bigger projects. This technique opens up many possibilities. I hope this video was helpful for you. Feel free to ask your questions in the comments. Thanks for reading, and see you in the next project!

Required Links:

  1. GRBL Firmware - https://github.com/TGit-Tech/GRBL-28byj-48
  2. Inkscape - https://inkscape.org/release/inkscape-1.0.1/
  3. Convert your SVG files - https://jscut.org/
  4. UGS Platform - https://winder.github.io/ugs_website/download/
  5. 3D Parts - https://makerworld.com/en/models/2632836-build-a-simple-3d-cnc-plotter#profileId-2907504