Introduction: A (partly) 3-D Printed CNC (HBOT)

About: I like to code, learning C, Python, HTML, JS, CSS, and also got an arduino when I was in 3rd grade (thus learning the C). I also like to 3D print. I got a Creality Ender 3 when I was in 6th grade. I also like …

So, in this instructable, I will show you how to build a cnc machine. It is scalable, so as long as you have 8 mm wide rods and a length of belt, you will be able to build this. You should also have access to some plywood. You should get a Arduino and a cnc shield (the combos on amazon aren't that expensive!) and bearings. Mine isn't that great, because I used my cheapo pla to print it, and the black piece holding up the motor is petg, but moisture got to my petg, so I couldn't reprint the parts and see if I could get it to mill a little better. This is a funny type of CNC, with a belt configuration called H-Bot. It is called H-Bot because a single belt runs in a H pattern.

Sorry for the complete cnc images, and not process pictures. I didn't think I would write an instructable about this. I'm also not the best person to be prepared.

based on the 3-D printed Dremel CNC made by Nikus.

Please give feedback on how to improve this instructable, as I am entering this into the CNC Contest and this is my first instructable.


  • some decently long 8 MM SMOOTH rods
  • a long piece of belt, like the stuff on your 3D printer (gt3 timing belt, I believe?)
  • at least 1 roll of overture pla (that stuff is strong) or petg/abs/whatever you want to use (DON'T use pro-3 pla from sainsmart. best filament brand to use is overture if you use pla.
  • screws
  • plywood
  • Arduino Uno
  • cnc shield
  • nema 17 steppers
  • at least a 36 watt (12 v, 3 a) power supply
  • go on github and look up "grbl". download the zip
  • and go get cnc js from here (github cnc js version page)
  • a few yards of wire might be helpful to.
  • flange bearings (make sure size is the same as on a 3D printer
  • 8 mm ID linear bearings LM8UU
  • M3 screws and M4 screws

Step 1: The Arduino and Flashing the Firmware

hey, did you go to GitHub and download grbl? better go do it! because now is the time to get the Arduino and the cnc shield connected with the steppers and up and running!

So, first, you should unzip the grbl zip file. then, go into the grbl folder and open "config.h" in your text editor. disable the first two homing instructions, and go down to line 153, uncomment that. uncomment line 147 and remove the "and" and then split the line. once that's done, you should import the grbl library to Arduino ide. wait, did you get the Arduino ide? go get it! why have you been forgetting everything? (if you haven't started laughing, you should get that its a joke.) If you don't know why you need to pay for it, you probably just haven't seen the download button on the donate page next to the pay and donate button (your not the only one, I'm sometimes like that too). finally, flash grbl to the Arduino using the example file grbl upload. oh... did you get stepper drivers??? assemble the stepper drivers and cnc shield (before pluggin in stepper drivers, jumper the 6 pins with the jumpers). then plug that into the arduino (unplug from pc first) and plug in your A, B, and C motors (X, Y, Z).

Now, go set up CNC JS according to the instructions at

Step 2: 3-D Print!

before we go any further, we need to 3-D print some stuff. wait, a LOT of stuff. print one of each file, and I will specify which files need to be printed twice: filename(twice).stl. Feel free to enhance my design!

note: I couldn't upload my pen file because I accidentally exported as .amf and not .stl.

You will need to go to thingiverse and download the belt gear for the motor and a lead screw coupler.

Step 3: (be Careful When) Building

start the hot glue gun, I made some bearing holes on the tool head carrier to big.

(sorry for the lack of pictures, I will post more once I get my machine rebuilt with petg.)

  1. fix the motor mounts (left side motor, right side motor) with a drill. I got the holes off by about 1 mm
  2. get the motors ready (2 motors, 2 gears) by putting gears onto motors
  3. mount the motor holders onto the plywood (you may need to use washers or make a little tube thing, I was half asleep when I designed the screw holes)
  4. mount the idler bearings (2 flange bearings on 1 M4 bolt) on the idler holders, mount those IN LINE with the motor mounts
  5. hammer the bearings into the main sliders (4 linear bearings total, 2 for each slider)
  6. slide the rod partway into the CNC, then slide the main sliders onto the rods, the slide the rods all the way in.
  7. hammer 2 bearings into the tool head carriage
  8. slide the "tower" (tool head carriage) onto two rods, push the rods into the main slider holes.
  9. push the last two rods partway into the tower, (wait, is the hot glue gun hot?) glue bearings into the tool head carrier and put the lead screw nut in, then put the tool head carrier in the tower. then slide down the rods the rest of the way.
  10. prepare the last motor: put the coupler on the motor, tighten it if you got one for screws/nuts. put the lead screw in the coupler, tighten that down. finally, put the motor on the tower with the lead screw down through the lead screw nut.
  11. tighten the motor. connect all the stepper motors.
  12. if you wanted a spindle, I found that a 555 motor would work if the machine was sturdier. because of that, this is still a work in progress. anyway, mount whatever you want on the tool head carrier.

Step 4: Get It to Move!

you need to have a power supply for this. you can probably find the 3-D printed dremel cnc. There, you can find good instructions on how to connect it up.

Look up how to tune an arduinos cnc steps per mm, if when you jog the cnc 10 mm and it moves 7 or 12 or 20 mm. A and B motors need to be the same. motor C or axis Z you don't need to worry about right now.

got the A/B motors tuned? good!

still got problems, but goes the right distance? try swapping a/b motor wires or swapping wire alignment.

push the linear rods into the "tower" part way, and put in the tool head carrier (did you screw in lead screw nut?). now install the motor with the lead screw / coupler. now tune Z.

got that done? good. tell me you made it, and tell me if I need to make it better!

You could also build your own attachments and upload to thingiverse!

V.2 will be posted as soon as I can get my petg dried (moisture. downstairs is not the best place to have a 3D printer). Major changes will be made (basically a complete redesign).

CNC Contest 2020

Participated in the
CNC Contest 2020