When I got my first 3D printer I was extremely happy with all the new possibilities to create things but after some time I noticed the limitations of 3D printing. Plastic is easy to melt, sometimes it's not mechanically resistant enough and most importantly sometimes doesn't look good. Don't take me wrong here, I love 3D printing and I like plastic (except plastic waste) but there are things that look, work or feel way better when made out of nonplastic material. Imagine all your furniture made out of plastic. Sometimes I prefer wood, when I need strength, metal (mostly aluminum) is a way to go. That's where CNC milling machines are used. Usually, the cost of such machine is really high, most of the hobbyist, small makers can't afford such expensive equipment. That's why the idea of building my own CNC machine sparked in my head. Of course building with bare hands wasn't an option for me, that's hard not only to make but also to document. I wanted to create an easy to replicate machine that anyone can make. I spent a lot of time on the design of it to make assembly simple and keep the price low. Then there was a lot of testing, redesigning and modifying to make it the best I could. I used as popular and easy to buy components as I could: Dremel, LMU12 bearings, Nema17 motors, Arduino, aluminum profiles and only free software. That's how I managed to keep the price of my machine under $300. I already published 6 youtube videos about this project and it is quite popular on Thingiverse so you may ask why I am posting instructable that late? That's because I wanted to finish my machine completely and make the most detailed instructable I have ever done. This project is the biggest one for me for a lot of reasons, I will talk about them through this instructable. Enjoy :)
Follow me to don't miss my new projects:
Step 1: Watch All of the Videos!
This instructable is as detailed as it could be but it's always good to see a video of how to make something or how stuff works. Above you can find my 6 videos about DIY Dremel CNC, maybe I will make some more in the future, I will also add them here, but you can subscribe to my channel to don't miss any of this videos and my fututre projects.
Step 2: Parts
Here you can find an Excel sheet with all of the parts, quantities, various links and comments. Below you can find a complete list of everything we need
- Aluminum profiles 20x20mm 600mm long (X2)
- Aluminum profiles 20x20mm 300mm long (X5)
- 12mm rod 310mm (X2)
- 12mm rod 530mm (X2)
- 12mm rod 140mm (X2)
- Lead screw 500mm (X2)
- Lead screw 280mm (X1)
- Lead screw 120mm (X1)
- 12mm linear bearing (X12)
- 608zz bearing (X4)
- T nut M5 (X36)
- M6 x 25mm screws (X4)
- M5 x 10mm screws (X34)
- M5 x 16mm screws (X10)
- M3 x 20mm screws (X8)
- M3 x 12mm screws (X32)
Step 3: 3D Printing
3D printed parts are very important in this project so I would like to talk more about how to print and post-process them.
A lot of people may say that it's extremely important to keep infill super high but from what I noticed using very high infill doesn't help a lot, of course, there's nothing wrong with using high infill but in my opinion infill of about 20-40% is fine.
I printed all of my parts with PLA but it's better to print them with PETG cost of PETG is almost the same and both of them are easy to print but PETG is a little bit more flexible so it's harder to break it.
For some of the files, you need to use supports, make sure to put them in the proper orientation so that there is not a lot of support material to remove and that you are able to remove it.
You don't have to print parts labeled as OLD, those are old versions of some files that I shared in case someone wants to use them.
You can also find .f3d, .iges and .step files so you can easily edit my project.
Be careful while post-processing those parts, it's easy to break them. Also, make sure that you are able to fit all of the bearings inside, you should use a vise to put them in place so it should be tight. You may also need to sand slightly those pins that go into aluminum profiles it depends on the accuracy of your 3D printer.
There are also two "tools" those are not part of the CNC but are very useful to drill holes in aluminium profiles and wooden bed.
Step 4: Prepare for Assembly
Before assembling all of the components you may need to cut them to the proper length. Thanks to modular design it's up to you how long you want those components to be. I used 60cm and 30cm long aluminum profiles and 12mm rods. If you want to make a bigger machine you just have to use longer aluminum profiles, rods and lead screws, 3D printed parts stay the same. If you bought all of the parts cut to the length you wanted just skip this step.
If you have access to a miter saw use it to cut aluminum profiles that way you will have a perfectly straight edge of cut. I found those rods and lead screws impossible to cut with a hand saw so you need to use an angle grinder to do that.
At this point, it's also a good idea to put in place all of the bearings. I did it using a small vise, as I said depends on the quality of your 3D prints you may need to sand those slightly be careful because you don't want to break any part :)
Step 5: Z Axis
To make things easier we will start with the assembly of the Z axis. Put two rods in Z-axis carriage but not all the way through we have to put there Dremel holder too. Dremel holder should move freely on the linear bearings. 608zz beating should be already in place in the hole on the bottom of Z-axis carriage. Now we can install a stepper motor with a lead screw and 3D printed coupler. Fix the motor with M3 screws and make sure that both rods are secured with a screw at the bottom. To make it easier for further use point the stepper motor connector backward because that's where we will install electronics.
Step 6: X Axis
Tighten brass nuts to both 3D printed parts. Grab one of the X-axis carriages and join two rods to it. Then put a Z-axis carriage on those rods and close with the other X-axis carriage on the opposite side. Attach a motor with a lead screw to 3D printed part with M3 screws.
Step 7: Y Axis and Aluminium Frame
Y-axis is directly connected to the main frame of this machine. It's made out of 20x20mm aluminum extrusion profiles connected together with screws to ensure rigidity. I choose 20x20mm profiles because those are easy to get, not that expensive and fit the size of this machine. Bigger profiles could be used but for such a small machine it wouldn't make a lot of difference. Because this machine is modular you don't have to use specific lengths of the profiles. Do you want to make a big machine? -> use longer profiles. Do you want to make a smaller machine? -> use shorter profiles. I cut my profiles to 60cm (we need two of them) and 30cm (we need 4). Once you have profiles cut to a length that you want we can start drilling holes. We need to drill holes on the ends of longer profiles, to make that easier I designed 3D printable tool that you can put on the profile and then drill a hole with 6.5mm drill bit. It's 3D printable so made out of plastic, it's easy to drill it out but we only need to make 4 holes with this tool so that shouldn't be a big problem. On both ends of 2 shorter profiles, we have to make a thread with a tap. It's a good idea to pre-drill a hole for the tap with 5.2mm drill bit and then create an M6 thread.
Let's start by attaching stepper motors to 3D printed parts with M3 screws. We can also fix couplers to the motors. Put in place M5 screws with hammer nut to make it easier to assemble. You can slide 3D printed part with a motor on to the longer aluminum profile. On the other side, you can fix a shorter profile as shown on the pictures. Tighten the screws with hammer nuts. Also, don't forget to tighten an M6 screw on the side of the longer aluminum profile. Do the same on the other side. Attach middle brackets (you can install as many as you want (2 or 3) with corner connectors, M5 screws and hammer nuts.
We already installed Y-axis motor supports and lead screw support, right now we have to attach lead screws and Y-axis rods. Again thanks to the modularity of this machine it's up to you how long rods and lead screws will be (You have to figure out good length so that it will work with the length of your aluminum profiles).
It's time to connect X axis with the Y-axis, grab the X-axis (with Z-axis already installed) and put it on the rods and lead screws, you will have to rotate lead screws with your fingers to push the X-axis back a little bit
Step 8: Table
I had to find something that would be good for a table of the CNC. Table with slots would be great but it is expensive. I could make it out of aluminum plate or even steel but that's hard to cut (especially to cut it straight with an angle grinder). As most of us (makers) I don't have a huge CNC plasma, waterjet or laser that can cut such materials but I have a jigsaw so I can make it out of plywood. I finally used table saw to cut it straight but corners should be cut with jigsaw or handsaw. Plywood is strong enough, it's easy to cut and you can easily buy it anywhere so it seems to be a perfect choice.
With another 3D printed tool, I drilled holes on the edge of this plywood to attach it to an aluminum frame with M5x10mm screws and hammer nuts.
Because I don't want to destroy this plywood I added a wasteboard (MDF) on the top so that I can cut all the way through the material.
I also added threaded inserts to the table so that I can use M5 screws to attach material to the table of CNC. You can buy something like this online, you need to drill a hole and put it in place with a hammer, simple and cheap upgrade that is really useful.
Wasteboard - a piece of material that you can mill in when you mill all the way through the material and you don't want to destroy table of your CNC. It should be replaced after some time.
Step 9: Spindle
As the name of this project insists as a spindle I use a Dremel tool model 3000, there are already some people that successfully use a different model like 4000 or even completely different spindles. At the end of this instructable, I also write a little bit about the different spindle that I want to use with this machine. That's because Dremel limit's you only to 1/8 inch bits and also because of high rpm and low torque it's not ideal for machining for example aluminum (but it's possible). As long as you only want to machine wood, MDF, acrylic and even for delicate aluminum job Dremel works fine but there is no way to use bigger bit's for faster machining, there are not as many bits with a 1/8 inch shank as others and Dremel is relatively hard to mount.
But still, this is a super cheap entry-level solution for your first CNC with speed control and it's really good quality. You can always upgrade it later.
At the beginning of this project I wanted to add a relay to turn on and off the Dremel with a G-code command but because of some problems (I would have to add a socket to plug in a Dremel and then connect that to a wall outlet and protect all of that so that it would be safe, it's not worth it and it's hard to fit all of that on such small machine) I decided not to use it.
I was thinking a lot about the way of how Dremel should be attached to the spindle holder. Here is how I did it. There is a nut on the bottom of the Dremel, I thought that I can use it to fix it to the 3D printed part. That didn't work as good as I wanted to. So I added a support structure in the middle of the Dremel with a clamp so that you can squeeze it with M3 screws and nuts.
So every time I am machining something I have to remember to turn on the Dremel, I can also easily control the RPM of the Dremel with the slider on the top of it.
Step 10: Install GRBL
I got a lot of questions about how to install GRBL on Arduino. Don't worry that's very simple. We will need an Arduino with a USB cable and software that you can download here: https://github.com/grbl/grbl
Once you have a .ZIP file downloaded from a link above you can add to Arduino IDE as a library. Go to file examples and open an example from GRBL tab. You should see just one line of code, nothing more, that's ok. Connect Arduino to the computer and upload a program just like any normal program. And that's it GRBL is installed on Arduino, you don't have to modify any code. If you have problems with this step try to google "how to install GRBL on Arduino" you will find tons of tutorials on how to do that and how to troubleshoot your problems.
There is also one thing to change, you can do this through the serial monitor in Arduino IDE or console in CNCjs. All we have to do is send 3 simple commands:
$100 = 400 $101 = 400 $102 = 400
Send those commands separately. Depends on the resolution of your stepper motors and microstepping that you used you may need to use a different value than 400.
Step 11: Electronics
That was a really hard part for a lot of people, it's hard to make a schematic of connection between a CNC shield and stepper motors because there is no such part as CNC shield in almost any software. Almost any. I found a CNC shield part for fritzing! Isn't that great, fritzing is the easiest schematic software out there so anyone can understand it :) I found the CNC shield right here.
Before we will plug 4 stepper drivers to the CNC shield (there are only three on the schematic but we need 4), we need to connect jumpers because connectors for those are under stepper drivers. Those jumpers enable micro stepping we need to have all 3 connectors connected so that's the total of 12 jumpers but we also need 2 of them to mirror the movement of Y axis motor to the A motor and we can do so by putting two jumpers on the left side of the shield. Now you can plug stepper drivers and then stepper motors. How to plug stepper motors? It depends on the motors that you have there is no easy answer. If you notice that your motor is going in the oposite direction than it should you need to plug the motor the other way around (disconnect it, rotate 180 degrees around Z axis and plug back in place). Some people also use endstops in their Dremel CNC but I don't, if you want you can connect endstops to the right side of the CNC shield. And in the end, we can connect the power supply or the connector to the shiled to the screw terminal labeled as 12-36V. And that's all for the connection, really not that hard :)
Step 12: Power Supply
Initially, I used a 12V 30A power supply, but that was overkill for this project. I swap this power supply with my lab bench power supply to see how much current is needed to run it. I found out that max current consumption is smaller than 2A so I bought a 12V 3A power supply. Generally, there is nothing wrong with having too powerful power supply but there is no need to spend the extra money and this huge, bulky, 30A beast is just ugly. Right now I have a simple power supply with DC plug so I can easily connect it to the machine. Keep in mind that depends on the motors and other electronics that you use you may need a stronger power supply than 3A.
Step 13: Cable Management
It's always good to keep your cables tidy. You can find a lot of different ways to do the cable management, I prefer to use this cable wrap thing it's inexpensive and works well for various cables. You may also use cable drag chain but then you have to figure out how to mount it to the machine, it's more professional but harder to use. Keep in mind that cable management is very important in CNC machine because you don't want to cut cables while milling and you also don't want those cables to jam your machine and destroy your material while milling.
Step 14: CNCjs
That's the software for the computer, through it we will control our machine, send gcode and change some parameters through its console in GRBL. There is a lot of different gcode sender options like GRBL controller, mach3 and path pilot but I chose CNCjs because it's free and unlike every other software it looks incredibly good and is easy to control! You can install it on mac, windows and Linux another great advantage! You can even install it on a raspberry pi and control through browser away from the machine! All of that for free in an open source software! Sound's like a perfect solution and it really is so far for me. You can download it here:
If you have problems with connecting to the machine: most likely that's because wrong baud rate try to change the baud rate in CNCjs to 11520.
Step 15: Fusion 360
Fusion 360 do I have to explain what is it? If you have ever designed anything with CAD software you probably heard about Fusion 360. And to keep it short that's the best software ever! You can do anything with this (CAD, CAM, render, animations, simulations, collaborative design and even more) and it works both on mac and windows. I used Fusion to design Dremel CNC and right now I use Fusion to create Gcode and mill things with this machine. Above you can find my video about how to use Fusion360 and CNCjs with Dremel CNC. If you need some more info on that check out NYC CNC, great YouTube channel about CNC machining.
Step 16: Safety
Safety is a very important aspect of CNC machining, there is a lot of dangerous things that can damage you, you don't want to be damaged so here are my tips on how to stay safe with such machine. Fortunately, NEMA 17 motors aren't crazy fast and torque is as great as with some servo motors used in industrial CNC machines. But there is still a fast spinning spindle and danger of crushing your fingers. While machining there are chips flying all over the place so we need to have a safety glasses (because safety is number one priority) and depends on the material that we are machining (wood, MDF) we may need a mask. It's also a good idea to build an enclosure for DIY Dremel CNC and some people already build one, I am also planning to do this in the near future. Another safety improvement would be to add a big red safety switch so that in case something bad happens you can easily stop the machine (we can also do that in CNCjs but it takes more time and isn't that reliable). Keep in mind that material and bit may be hot after machining and make sure that machine finished its operation before putting your hands in the working area. Machining for a longer period of time is very uncomfortable for ears so some kind of hearing protection is recommended. I also thought about using active noise canceling headphones, should be perfect for a CNC machine because noise is very consistent but I don't have any headphones like this and those are quite expensive. Keep in mind that those are just some tips from me about safety while dealing with a CNC machine, there is a lot of things that can go wrong and you always have to be careful and think in order to be safe.
Step 17: Result
The result of this project just blows my mind! When I started it I just wanted to see if it is possible to create a 3D printed CNC machine, I wanted to build a tool that I will be able to use in my further projects. Right from the beginning of it, I knew that I will publish online all of the files and the instruction but I had never thought that this project will be so popular and that so many people will build it (check out next step). That's the biggest project of mine so far! Because of some problems and a lot of upgrades and tweaks that I did to the machine, it took me a long time before finishing this instructable, but I wanted it to be perfect and as detailed as possible so that everyone will be able to easily build an inexpensive CNC machine. Above you can see the newest images of the Dremel CNC with nice cable management and some small upgrades. There are also images of stuff that I milled on my machine. If you want to see what others made on Dremel CNC joint the Facebook group!
Step 18: How to Mill?
Choosing proper feeds and depth of cut is really just about experimenting. Start slow and shallow, slowly increase the speed and see what happen. Be careful, it's easy to break a milling bit. Keep in mind that going slow is as bad as going too fast, you need to be in between for best results. Here are the settings that I use:
- Feed: 800mm/min
- Depth of cut: 3mm
- Usually, I use adaptive clearing for everything and 2d contour for contour cut
- Dremel switch 8/10
- Feed: 500mm/min
- Depth of cut: 1mm
- Dremel switch 6/10
- Feedrate: 800mm/min
- Depth of cut: 0.2mm
- Dremel at full speed
Keep in mind that depends on your setup those values may not work at all!!!
And here are milling bits that I am using:
Step 19: Community
When I noticed that there is quite a lot of people on YouTube and Facebook asking for help regards to this project I decided to start a Facebook group so that everyone can help each other and share experiences. Starting a Facebook group was a great decision. Right now (March 2019) there are over 1200 people in the group, a lot of questions asked every week and even more great answers. There were also some good ideas about the project so according to the people from the group I did some changes to this machine. It's really amazing to see that many people from all over the world hyped about my project that started just as a small idea in my head. I even asked people in the group, where they are from and created a map with all of those places (see it above) AMAZING! All of the continents except Antarctica and I don't expect Dremel CNC to show up right there soon :)
The community behind this project is incredible! If you have some problems and want to ask a question - ask on the Facebook group.
Huge thanks to everyone in the group for helping each other!
Step 20: Updates & Upgrades
This project grew so much that you can find a lot of different versions of my design online, there are holders for different tools like a laser or vinyl cutter. I also redesigned some of the files so those are a little bit different from the original version that I still use. I will try to put all of the links below to the remixes and everything that is relevant:
I also upgraded the CNC with threaded inserts embedded in the table of the CNC and covers for lead screw to protect it from dust and chips.
Step 21: Conclusion
That's it for this project! I hope you enjoyed this instructable :) If you have any question ask them in the Facebook group or in the comments below! I would also love to hear what you think about the project :D
Grand Prize in the
Epilog X Contest
JoshHennesey made it!