Picture of Arduino Controlled CNC / 3D Printer Hybrid

Mother Nature Makes ... We Build.

BuildersBot Fuses 3D Printing & CNC Milling Into One Builder’s Dream ""

The BuilderBot is an Open Design machine, that uses Open
Software and Open Hardware. It is a product of open projects such as the RepRap, Arduino and Repetier .

The objective of this instructable is to guide your way throw the entire making process of building a BuildersBot machine. An open design Arduino Controlled CNC Router that can also perform 3D printing.

The instructions will cover all areas such as design, mechanics, electronics and software.

But before you go any further take a look at machine's concept design:

And also the machine build photos and the machine in action:

Finally check out the insane effects of the RGB led's on BuildersBot:

Warning Viewer Discretion Advised (Strong Language)

Remove these adsRemove these ads by Signing Up

Step 1: The BuildersBot OpenDesign (Sketchup)

Picture of The BuildersBot OpenDesign (Sketchup)

To view the the machine in 3D just Download the attached sketch file and access the BuildersBot OpenSource Design (in metric system and is in 1 by 1 scale).

Use this design as much as possible for guidance during this instructable.

NOTE: Use trimble/google sketchup to open the file.

1-40 of 321Next »
PrashanthC117 hours ago

can i scale it up...?

aldricnegrier (author)  PrashanthC111 hours ago

Absolutely, i wish mine was 10cm longer on the X axis :)

Hello aldricnegrier

Could you please tell me how to change the language in the LCD? I have trouble understanding the default language.

aldricnegrier (author)  dj_freakout6 days ago

Hello Dj,

In configuration.h search for "language"

dptung200212 days ago

it is lucky to see your project here using M542 driver

could you please describe how to wiring that motor Driver to ramps in more detail, because i have headache of cannot using Nema23 with ramps via DRV8825 ( as the motor just viberated - not move) and i got a m542 now and still do not know how to use and wire it with ramps

really need your help


aldricnegrier (author)  dptung20026 days ago

Hello dptung2002,

Do you have a decent power supply?

ChaoukiA12 days ago

Hello ! @aldricnegrier

i like your work :)

and i would like to told you , that i would like to creat one

but the probléme is :
* Dimension of this printer
* Arduino code
* How to use

servion24 days ago

Nice chassis, but what is the advantage of stainless steel? Is there something better than extruded aluminium bars?

aldricnegrier (author)  servion15 days ago

Thank you,

I don't know, i did not try aluminum bars.

dwalker3019 days ago

Beautiful! I love it! So much work and attention to detail going in to this. I have seen many professional rigs that could never hope to achieve this level of quality.

aldricnegrier (author)  dwalker3019 days ago

:) thank you, i am glad you can see and appreciate all the small details.

jpmasse31 month ago

Hi aldricnegrier,

I have been messing with this for some time and have almost everything working. However, x- and z-axes will work correctly but there is no response in the y-axis. I have followed through everything and can't seem to get it. Any thoughts?

Thank you.

aldricnegrier (author)  jpmasse31 month ago

Hi jpmasse3,

You need to debug the problem.

First Objective, test is all drivers and all motors work.

- Remove all endstops (disable all endstops via software config.h)

- Test the X motor and X driver on the X pins (pulse direction) of the RAMPS board

- Test the Y1 motor and Y1 driver on the X pins (pulse direction) of the RAMPS board

- Test the Y2 motor and Y2 driver on the X (pulse direction) pins of the RAMPS board

- Test the Z motor and Z driver on the X pins (pulse direction) of the RAMPS board

After this test you know that all motors and all drivers are working properly.

Second Objective, connect all drivers and motors on the ramps board

Now you know every thing works you just need to follow the wiring connections, i speculate you have endstop problems.

dj_freakout1 month ago

Hi aldricnegrier,

Could you tell the number of steps you have used in the driver?
Thank you :)

aldricnegrier (author)  dj_freakout1 month ago


I set 12800 pulse per revolution on all drivers, this setup results in 128 steps per mm on X and Y axis and 2560 steps per mm on Z axis

Thank you Aldricengrier :)

Have you got noise problems with the end stops? I am experiencing false alarms all the time, all this because of noise. :(

aldricnegrier (author)  dj_freakout1 month ago

You have to keep your cables short, if they get to long, you will have problems. THis is because the voltage drops from 5V to 4V or less when you have long cables (more resistance). You can solve this by suppying 5V to the endstops from another source besides the Arduino. If you do this you just need to connect comon grounds.

aldricnegrier (author)  aldricnegrier1 month ago

i am refering to the cables from the endstops.

Thank you so much for the reply, I think I have cured the issue. I added ferrite beads to all the cables inside the electronics enclosure, and then made sure that the limit wires didn't touch the stepper wires in anyway. and I added a 560 ohm resistor along with a 0.47uf capacitor to each end stop. Evrything works well now, even homing is smooth :)
Thanks again :)

aldricnegrier (author)  dj_freakout1 month ago


aldricnegrier (author)  dj_freakout1 month ago

Noise on the endstops is a know issue for the ARDUINO RAMPS combination, you can power the endstos with a "better" 5V source or implement a filter:

profort1 month ago
Wonderful build how long does it take?
aldricnegrier (author)  profort1 month ago

Thank you :) i like when you like :)

It took me 4 to 6 months because i did not have full time acess to a workshop.

BIGDOG12341 month ago

When I configured the Configuration.h file just as you did I got this error.

Arduino: 1.6.3 (Windows 7), Board: "Arduino Mega ADK"

Commands.cpp: In function 'void process_command(GCode*, byte)':

Commands.cpp:1133:4: error: expected '}' before 'else'

}else if(GCODE_HAS_T(com)) {


Commands.cpp:1133:4: error: expected '}' before 'else'

Error compiling.

What should I do.

aldricnegrier (author)  BIGDOG12341 month ago

Just download the firmaware i uploaded to instructables and upload to
our board unsing, Arduino IDE 1.0.5 or older version. I speculate it
has to do with the IDE Version.

aldricnegrier (author)  BIGDOG12341 month ago

I don't know, i never used Arduino Mega ADK.

BIGDOG12341 month ago

I got the same error on my Mega 2560.

Arduino: 1.6.4 (Windows 7), Board: "Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"

Commands.cpp: In function 'void process_command(GCode*, byte)':

Commands.cpp:1133: error: expected '}' before 'else'

}} else if(GCODE_HAS_T(com)) {


expected '}' before 'else'

aldricnegrier (author)  BIGDOG12341 month ago

Just download the firmaware i uploaded to instructables and upload to our board unsing, Arduino IDE 1.0.5 or older version. I speculate it has to do with the IDE Version.

JosephA91 month ago

Absolutely amazing instructable! Congratulations. I'm doing sort of one and I'm going to support on this guide. I'll upload photos when I start making it.

aldricnegrier (author)  JosephA91 month ago

Thank you JosephA9 :)

Photos would be great.

PatriziaR1 month ago

I can reduce the size of the bars linear x, y, z respectively from 20mm to 16mm for x, 20 to 16 for y, 16 to 12 for z.
I wanted to reduce de size of the whole CNC.
hello domenico

aldricnegrier (author)  PatriziaR1 month ago

Sounds good :)

dj_freakout1 month ago

Hi aldricnegrier,

Will the 3D printing function work without the LCD? The ebay seller has some shipping issue with mine and I don't wanna wait longer...

Thank you :)

aldricnegrier (author)  dj_freakout1 month ago

Hi DJ,

Yes, it works without the LCD. But in this case i think you need to disable LCD suport on the firmware. I am not shure, you need to try it out.

Hi Aldric, this is a very nice project, I am in the process of gathering the parts I need to build my own. I would like to ask you something, since I couldn't find this information. Does the 3d printer and cnc router firmwares coexist or they have to be uploaded every time you change functionality of the buildersbot?

Also please detail, if possible, on how to get a 3d sketch file printed or routed, as this information would be very valuable for all of your readers and enthusiasts of 3d printing and cnc routing.

Thank You,


Hi Andrei,

Very nice question :)

When i built the machine i used 2 different firmware setings, one for CNC and one for 3D printing, mainly regarding thermistor setings (heatbed and extruder) on or off.

After that i discovered a way to allow for a single firmware, you just need to put a thermistor on when you are CNC milling. IF you look closely to the photos where CNC milling is on, you can see a thermistor connected to the wires near the Z motor.

A very nice hack :)

Regarding CNC turorial and 3D printing tutorial, just follow any Prusa i3 / repetier tutorial and any CAMBAM tutorial (CNC).

chrisbeardy2 months ago

Hello, great job, I have a question, how did you implement the limit switches/end stops?

aldricnegrier (author)  chrisbeardy2 months ago

I only use one X and one Y endstop.

OK, what did you use for them? were they physical or digital?

aldricnegrier (author)  chrisbeardy2 months ago

3 wire mechanical end-stops, just like the ones in the electronic circuit wiring.

1-40 of 321Next »