top | item 29096954

Show HN: I built a CNC-machine from scratch, using 40x 3D-printed parts

462 points| mfi | 4 years ago |github.com | reply

140 comments

order
[+] mfi|4 years ago|reply
I just finished my latest project, building a CNC-machine from scratch using an Arduino Uno, GRBL and 40x 3d-printed parts. It’s able to mill wood and aluminium, up to ~20mm thick.

As with all my other projects, I think they should be executed in the open where other people can learn from my mistakes and get inspired to build their own things! Therefore I’ve spend a lot of time writing a free complete tutorial of the build, documenting every step with text and detailed images, creating a complete bill of materials (including STL-files for the 3d-printed parts) etc. I don’t want any dependencies on DIY-websites, so I’ve hosted it on GitHub, where anyone can clone it locally.

I built this machine to gain more knowledge about mechanical engineering, electrical wiring, stepper motors, GRBL, CAD, CAM etc. Also, I guess I can build new fun things with the machine? Overly-engineered birdhouses maybe?

Setup:

* It’s running on an Arduino Uno, CNC-shield and GRBL.

* 40 parts are 3d-printed (all the red parts in the video)

* It’s based on Ivan Miranda’s blueprints, but I’ve adjusted some parts and structured the bill of materials.

* It uses 2x 19:1 geared NEMA17 stepper motors for the Y-axis and 1x for the X-axis. The Z-axis is using a standard NEMA17 motor.

* HTD5M belts and pulleys are used for X-axis and Y-axis. GT2 belt and pulleys are used for the Z-axis.

If you have any questions, feel free to contact me. You’ll find my email in the top of the guide :)

[+] aquaphile|4 years ago|reply
Nice work! You made a lot of great design choices.

+1 to those that recommend upgrading your extrusions and motor mount on future iterations. The rigidity is well worth it.

If you are ever deciding between belts and ballscrews, I recommend ballscrews. It is worth the extra $$.

For the milling of aluminum, I suggest adding a compressed air nozzle. It will make a huge difference in milling AL. Also, some of the new bits are fantastic at hogging out aluminum. For reference see pic at https://drive.google.com/file/d/1BWvOOwmaQljwhdBzYNvilYDKdsy...

We built our own 5-axis CNC too, to do large envelope parts trimming. It looks like Frankenstein, but works pretty well. See a pic at https://drive.google.com/file/d/0Bydp4fsq-EhtUndOTlZTcU1fTEU.... We use it to trim the chassis parts for our baby car seats at https://kioma.us

Keep on building!

[+] dekhn|4 years ago|reply
I understand you put thought and time into your approach and it was a hobby to learn more abotu the process (and thus you know about MPCNC but decided to make your own). I've also build similar systems and I've learned some timesaving tricks that have paid off in terms of hobbyist enjoyment.

I really like buying the majority of the parts from a place like OPenBuildsPartStore, rahter than assembling frames from channel manually. Time/cost/quality tradeoff is hard to beat here.

I strongly recommend switching to Grbl_Esp32 https://github.com/bdring/Grbl_Esp32 with external controllers (this board https://www.tindie.com/products/33366583/6-pack-universal-cn... with these plugins https://www.tindie.com/products/33366583/external-stepper-mo... and these controllers https://www.amazon.com/STEPPERONLINE-1-0-4-2A-20-50VDC-Micro...). That's what I ended up with because tuning current using the little pots is dumb, and you want a TON of current going to those huge motors. ESP32 + Grbl has a bunch of nice features that aren't in plain old Uno GRBL.

My system has high torque NEMA23 with no gears (same motor for all 3 axes), I can't see any situations where adding more torque to the X or Y axes using a smaller gearer stepper makes sense.

[+] 2muchcoffeeman|4 years ago|reply
>I can build new fun things with the machine? Overly-engineered birdhouses maybe?

I don’t have space for a workshop. I live in an apartment. So I’m pretty limited in the sorts of materials and tools I can use. 20mm of wood is probably quite useful. My table top and shelves aren’t 20mm thick. If this can go through MDF I’d say it’s really useful.

[+] jacquesm|4 years ago|reply
What a fantastic project. Is the design parametric, in other words, are there parts that would need to be scaled up to have larger x, y or z axis or are those all off the shelf and are the various STL files for the components the same if the design is scaled up?
[+] zwieback|4 years ago|reply
Awesome. Can it mill aluminum? If so, would you consider replacing some of the 3D printed parts with machined parts?
[+] eduardosalaz|4 years ago|reply
The CNC Shield is a blessing, shame the Gerber files aren't being published for newer versions.
[+] billconan|4 years ago|reply
very cool! thanks for sharing. I don't have the equipments to drill holes on aluminum parts, I will probably need to use https://8020.net/ to build one.
[+] giantg2|4 years ago|reply
You mention aluminium. Any plans to add a lubricant sprayer?
[+] roland35|4 years ago|reply
what material did you use for 3d printing? I would think PETG or ABS is probably best?
[+] Wesxdz|4 years ago|reply
I'd love to have an open source CNC machine to design joinery with http://ma-la.com/tsugite.html Ideally a whole house and most of the furniture...

If anyone has any ideas on how to accelerate build times of open hardware, that's something I'm trying to solve. Creating high quality instructionals is a huge amount of work and I think instructionals should be automatically generated by computer vision and have interactable elements, ideally AR, but even just highlighting wiring diagrams on hovering would be hugely helpful. Even if things are well documented, replication is still insanely pyrrhic without economy of scale or universal fabrication. It's time consuming because it's hard to replicate knowledge/tool environments quickly.

[+] mfi|4 years ago|reply
I can't help you with ideas of how to accelerate build times of open hardware, but thank you so much for sharing that link. Looks really promising, will probably test it using the CNC-machine someday soon!
[+] gunshai|4 years ago|reply
I forwarded this to a structural engineer who specializes in timber design. That website you linked is really cool.
[+] mayapugai|4 years ago|reply
Hey, this is a great project. I am working on a project that involves both hardware and software much like your CNC project.

I especially like how the README.md is exquisitely well-written, complete with images. May I ask - did you manually link the pictures and links while writing the README or did you use a program that let you generate the source md file from a WYSIWYG editor?

PS. I am a newbie here. So, I really hope this question isn't against the code of conduct here.

[+] spdebbarma|4 years ago|reply
There are a limited number of ways you can link your images on a Github README. The format is the same for all methods.

![image description](image.png)

1. You might upload to a bucket online and link them individually.

![image]https://cdn.bucket.url/image.png)

2. Upload the images to your Github repo in a folder and relatively link them.

![image](./images/image.png)

3. Edit your README on the WYSIWYG editor on Github itself and paste the images using Ctrl+V. Github will automatically host and link the image in your file.

I hope this has been helpful!

[+] primitivesuave|4 years ago|reply
Your polite and inquisitive message exemplifies the code of conduct here :) Welcome!
[+] metal_am|4 years ago|reply
For anything CNC, there's no substitution for stiffness. And you're not going to get that with aluminum extrusions. Something like the PrintNC would be 1,000 times more capable due to using steel.
[+] MayeulC|4 years ago|reply
This got me wondering: most CNCs and 3D printers use switches for calibration, plus stepper motors for positioning.

Has anyone tried to use cameras or a Valve Lighthouse (0.3mm precision), maybe with accelerometers and encoders, for tracking? That would allow the use of cheaper, faster, torquier, more efficient DC motors, as well as release the accuracy constraints for a lot of parts (depending on which part is being tracked).

The goal would be to trade hardware complexity and price for software complexity, since it's easier to re-purpose software (and something like lighthouse base stations has multiple uses, so the price could be shared between projects).

[+] roland35|4 years ago|reply
Very cool! I am actually also making a 3d printed pen plotter! I love how easy it is to get common hardware like bearings, plus how nice it is to print parts on demand.

Edit to add the link to the plotter: https://www.thingiverse.com/thing:2349232

[+] mfi|4 years ago|reply
Yeah, the 3d-printer is a game-changer in these type of DIY projects!
[+] axegon_|4 years ago|reply
Congratulations! I'm working on one in my spare time but I've decided to cram in as much features as possible(as far as not being able to cram all the features into an arduino or esp32 so ultimately I'm opting for a raspberry pi for connectivity, monitoring, safety and so on). I got it working about a month ago with some tools and hardware I borrowed from my dad but the problem there was... My dad's negligence, meaning all the tools and hardware were half dead. In any case I managed to cut out two pieces I needed for a different project(and see that it works after all). And I also plan on open sourcing it. though most of the code is written in Rust. With the exception of a small webserver for monitoring the process remotely(even visually with a tiny webcam) - no point in wasting so much effort on that and dealing with all the async-await-read-write locks that come along with it. The webserver mostly parses logs and makes system calls to binary files.
[+] mfi|4 years ago|reply
That sounds like an amazing project! Please open-source it, I would love to read more about it :)
[+] jaxn|4 years ago|reply
Really neat project!

Maybe I missed it, but is there a general cost estimate anywhere? I saw the BoM, and assume most the cost is in the router and stepper motors, but is this like ~$500?

[+] aidenn0|4 years ago|reply
Now we need someone to make a 3d-printer out of 40x CNC'd parts and we'll have a never-ending supply of both!
[+] senectus1|4 years ago|reply
This is fantastic.

I've been putting off buying a 3D printer but I've always wanted to get a CNC machine... this might push me over the edge. The idea of having end to end manufacturing capability on the desk is very very attractive.

The things I could do with this combination... what a time to be alive.

[+] phkahler|4 years ago|reply
Do any of these small CNCs support G02 and G03 for circular arcs?

I was recently looking at G-code output from Solvespace and figure we need to update it to produce those codes rather than tiny linear segments. But will the home-built CNCs even support that?

[+] opencl|4 years ago|reply
Most of the small hobbyist machines I've seen (including this one) use Grbl, and Grbl does support G02/G03.
[+] dekhn|4 years ago|reply
grbl supports arcs and it represents the most common Gcode firmware on these "home-builts"
[+] malwrar|4 years ago|reply
Thanks for this guide! Just realized I have everything I need on-hand to follow your guide & wanted to comment and let you know I plan to follow it this weekend. Looking forward to it!
[+] 0des|4 years ago|reply
Please post about this if you do, this project looks awesome. Though I don't have the parts on hand yet, I'm strongly considering building one as well.
[+] jrockway|4 years ago|reply
Does anyone have suggestions for making a CNC mill that's quiet enough to run in my apartment? I'm thinking about getting one of the cheap $250 Aliexpress specials (I only want to mill PCBs), but I'm guessing it's going to be too loud to run in a building where other people live. If I can make some performance tradeoff for relative quietness, I'd love to do it.

(Maybe it's as simple as putting it in a foam enclosure or something? That sounds bad for spindle cooling, though.)

[+] kedikedi|4 years ago|reply
Sound is one thing but also think of the dust, especially if you’re planning to machine pcb at your home. That’s not good stuff.

But speaking of sound, some of it comes from the spindle. The faster it turns, the more noise it makes (usually). I was using a dremel as my spindle some time ago and it was veery noisy. Then I tried another machine that had a bigger spindle, that one was much quieter.

Then there’s the sound of the material being processed. The cutting bit hits the material at spindle_speed*flute_count Hz. This also creates hell of a vibration.

So you need to do two things: dampen the vibrations, and block the radiated noise. Plus you want to make sure you have some sort of dust control.

[+] 542458|4 years ago|reply
Nice! I built an older model MPCNC years ago, and was able to get pretty great results with it relative to the tiny cost and huge flex in the frame. I managed to cut some brass Christmas ornaments that I’m pretty proud of.

I like that you’re using racks here - the belts on the MPCNC were a major weak point in my experience. I wonder if you could get away with 3D printed racks and pinions. There’s a lot of structural plastic in there already, would the hit from accuracy from using lesser racks make a difference?

[+] bmsleight_|4 years ago|reply
Love to see the brass Christmas ornaments have you a photo ?
[+] metal_am|4 years ago|reply
You can buy ball screws somewhat cheaply direct from China. That'd be the way to go.
[+] cinntaile|4 years ago|reply
Do you know how accurate it is?
[+] mfi|4 years ago|reply
I milled a test block in wood to check the accuracy, and it was sub-millimeter accurate. I can't measure further than that as my tools doesn't allow it. But I doubt that it's super accurate due to the 3d-printed parts, aluminium instead of steel etc.
[+] dogma1138|4 years ago|reply
That would depend on many things including the material and feed rate.

For plastic/wood you can get pretty decent precession on these machines within 200-300 microns or so since it should be rigid enough to not deflect much with these materials.

For smaller parts any issues of gantry squareness would also not translate to the milled part as much.

You can also cut aluminum as long as you are going slow to avoid deflection but don’t expect excellent surface finish and sub 500* micron tolerances.

*High end industrial machines can do tolerances within 10 microns when they are operated by an experienced machinist. 100 microns off spec not to mention 500 microns would result in parts being binned normally at least for critical tolerances.

[+] ElijahLynn|4 years ago|reply
The pictures on that README are insane! So HELPFUL!

And, I already have that same Makita router so I am more tempted to try this... because of the pictures!

[+] mfi|4 years ago|reply
Haha yeah, I spent quite a lot of time to document everything. I sometime have trouble following tutorials because they leave out things that are obvious to them, but not to the reader. So I've really tried to include every step in detail, even though they might be "simple" and obvious.

What's stopping you? Go for it! :D

[+] jzer0cool|4 years ago|reply
Slightly unrelated, I was curious if anyone here could recommend a 3d printer? Smaller one would be better just trying out now. Does not need to be too accurate (nice if it does) but looking for something that is budget and most for doing very flat 3d objects (ie: height no more than 1-2 inches, within a width/length much smaller than 10x10 cm)
[+] lsllc|4 years ago|reply
Probably not what you are looking for, but if you can afford it, I can highly recommend the Prusa I3 MK3S+ (actually I have the MK3S, but it's pretty similar).

The quality of the prints is incredible and the printer is really easy to use. I've printed a bunch of parts for use around the house that have solved problems where there's no way I could get a commercial solution -- I can just design what I want in Fusion 360 and print it.

This was my first (and only!) 3D printer so I don't have any comparisons, but I have been tempted to get a Ender-3 (Pro) just as a comparison (although I don't really have the space for 2 3D printers).

I did recently augment it with OctoPrint on a RPi with a touch screen (and of course a 3D printed front "console" that accommodated it) ... makes it much nicer to use and I can remotely manage via Wifi.

[+] the_cat_kittles|4 years ago|reply
the ender 3 is cheap and does everything i need