Show HN: I built a CNC-machine from scratch, using 40x 3D-printed parts
github.com
github.com
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 :)
One favorite trick of mine is to print out 1:1 drill pattern drawings and center-punch through the paper onto my metal workpiece for all the drill locations. Fast and accurate.
https://www.instructables.com/Creating-Printed-Circuit-Board...
(I found it printed slightly off sized if I sent a 2D drawing straight to the printer.)
I've used Inkscape to make basic shapes, and pay for Fusion 360. TBH I've never actually thought to take one of my 3D Fusion models and use it to make a 2D template for drilling. That makes sense...
Tubes and extrusions you buy cheap rarely have dimensioning and tolerance you’d want to accept out of the box. To get what you need, best just to use geometry of hole centers, and adjustable fine parts.
I set a limit of 1/128 inch on any garage woodworking projects. This is 8 mil (thousandths of an inch) or 0.2 mm. Wood and plastics (and even aluminum) fluctuate from moisture and temperature enough to make this a lower limit of reasonable value, though I’m getting closer to 5 mil in router precision. It’s not a fine carpentry shop and I’m not making anything that really needs better than eyeball precision (hand marking) which would be about 1/32 inch.
Applying geometric dimensioning and tolerance to design has been a liberating experience. I’m not a mechanical engineer or even otherwise anywhere close to the industry so I really had no idea how to assess or compare designs.
[0] http://www.nakka-rocketry.net/sorb.html
[1] https://hackaday.io/project/181165-my-machinery-2021-direct-...
[2] https://www.sciencedirect.com/science/article/pii/S221282711...
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.
Generally agree. Torque is only needed to a specific threshold. If it requires a lot of torque, then that's probably a good sign to slow the movement down (for the sake of the machine's longevity).
Not sure what you mean by that. I dont know all the tools in the world, but generally a chipped tool gets less sharp. Even something like obsidian would get less sharp in regards to the intended use with a random chip as compared to a well knapped tool.
"cutting speed is a function that increases a machines' longevity."
I'm not sure you are using cutting speed the same way I'm talking about movement. Applying too much lateral torque to a router bit is how bits break, bearings wear prematurely, etc. You don't need much torque to move the router.
If you want faster cutting speed, then the RPM of the bit can be increased, or using a different bit design. You can cut faster and it still shouldn't require much torque for the movement.
I actually didn't have enough torque to move the router through lots of material until I moved to some fairly serious stepper drivers and configured them to use max current and voltage (IE, I got a 48V, max 20A power supply). Even then, if if accidentally move the router bit while it's not spinning into the work, the motors stall well before the bit breaks (1/4" carbide end mill).
Yeah, that makes sense. That sounds like it's really not that much torque the way you describe - just above functional minimum and no where near too much (eg people forcing it through and breaking bits).
A common problem that causes chatter and poor tool life is not taking a large enough chip. Large chips stabilize the tool (the rotation of the tool pulls it into the part) as well as allowing for a more continuous, uninterrupted cut (whereas too small of chips cause the flutes to have to re-engage the cut over and over, and the number of engagements and tool life have an inverse relationship).
PLA is the way (the MPCNC, for example, is designed with PLA in mind) in this case, as with ABS you most likely need higher printing temps, bed temps, an enclosure to keep even the slightest drafts out...
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.
What I recently made: a terrain map of california cut into plywood. It's several feet by several feet (~600mmx600m), 0.75" (almost 19mm deep at the lowest points in california) and wall-mount-worthy.
No, it's not parametric in that way. But it is possible to extend the "mill-bed" by:
* X-axis: Increase length of frame and bridge profiles. Buy longer MGN12H rails used for the X-axis.
* Y-axis: Increase length of frame profiles. Buy longer MGN12H rails used for the X-axis.
* Z-axis: Increase the vertical beams between lower and upper frame. Buying longer MGN12H rails used for the Z-axis and a longer acme rod.
+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!
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.
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.

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.

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!
It depends. Also, to be more accurate, you need high modulus (vibration dampening) and strength. An extremely strong material that doesn't dampen vibration isn't helpful, for example.
If you need to produce "Live Laugh Love" signs, you need enough stiffness and dampening that you can cut wood or plastic and have it look clean visually / need minimal post-processing before applying a finish, and do so quickly enough that your labor costs aren't high (never ever EVER leave hobbyist-level CNC machines unattended!) If you can do so with something approaching ideal chip load on the tool so you don't wear through them like crazy, even better (also you get more chips than dust, which is better for you, your dust collection system, etc.) Endmills work best when they take a nice bite out of whatever you're cutting; heat from cutting leaves with the chip. Too small a bite and you're just rubbing the workpiece, and the tool cutting edge isn't cutting, but getting polished smooth.
If you need to produce accurate parts, you have to do spring and finish passes anyway (for those who don't know: even very stiff CNC machines still have flex in them. You do a rough cut at ideal chip load for your endmill, then one or more "small bite" follow-up passes where there is far less load on everything and thus the endmill face is closer to where it should be.) Since you're doing those passes to get your dimensions, machine "stiffness" mostly just lets you do it all faster.
When it comes down to it, all you really need in a CNC machine in terms of "stiffness" is enough to let your endmill spend most of its time working at an ideal chip load without wandering all over the place. If the endmill's positioning changes too much with the machine flexing or vibrating, then one flute of the endmill could end up getting much more of a chunk to bite off than it should, and...snap.
Beyond not destroying your endmills, more stiffness just lets you go faster. And like they say in the car world, speed costs money; how fast do you wanna go?
Stiffness is not the only important factor; dampening is also important. That's why you see some epoxy-gravel composite builds. Lots of mass, very strong (the stone), very high dampening (the epoxy.)
One of the unfortunate things about hobby-level CNCs is that they use palm router motors with extremely high spindle speed, but they're not terribly stiff, and most of them come with software that has rudimentary CAM path generation. The high spindle speed means that you have very little tolerance between the tool flute getting too little of a bite and too much of a bite, which is easy to do when the frame isn't very strong (and at high spindle speeds, vibration dampening starts to get very important, too.)
Hobby-level CNCs benefit enormously from more advanced milling techniques like trochoidal milling, or "adaptive clearing", as Fusion 360 calls it (I think.) Trochoidal milling maintains tool load while optimizing for using as much of the side of the endmill as possible (spreading wear on more of the tool.) The machine appears to "nibble" away, instead of steaming along whatever profile is being cut. A simple profile on a weak frame machine means a very shallow depth of cut to keep forces low, but that means all of your cutting is being done by a very small portion of the endmill.
They also benefit from having as slow a spindle speed as possible. There are speed controllers available to help reduce the speed of a palm router, which also lowers noise and reduces bearing and brush wear.
I'm in kind of a rush so hopefully someone can correct or clarify where needed.
I have a low-cost CNC (X-carve) that has serious stiffness problems that I don't want to fix. Adaptive clearing has allowed me to do far more successful cuts in reasonable time.
I've never broken an endmill. SOmething else gives before the endmill (I use carbide mills on hardwood). Belt tension, the belt itself, the wheels, the clamps, etc.
I would add that when you go close or bellow 0.01 then also perfectly controlling your holders (runout) and being wary that the tool, no matter how stiff, bends as well, so you should control your overhangs as well.
I guess with hobby machines it doesn't matter much if you use linear rails because you basically will never wear them out, but I found with my previous v wheel machine that this was a very real problem.
The wiki: https://wiki.printnc.info/en/home The Discord (very active): https://discord.gg/RxzPna6 The GitHub repo: https://github.com/threedesigns/printNC
There's also the "PrintNC Store": https://threedesign.store
[1] https://www.reddit.com/r/engineering/comments/qkn996/almost_...
I wouldn't even expect to cut several pieces of wood with this toy CNC machine.
It's like something you'd cobble together in a WW2 prison camp behind enemy lines.
2. They did it to learn and share what they learned. Job done!
3. "cobble together in a WW2 prison camp behind enemy lines" - really?
Oh right, because at that point it's cheaper to just pay the 80€ setup fees for a single CNC machined part on xometry.
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).
But yes, industry uses optical technology in large CNCs all the time. Some homing switches are physical clicky switches, some are inductive proximity sensors, but an optical 'horseshoe' througbeam/fiberoptic sensor is the standard for highly repeatable sensor-based homing. Depending on your control system, homing to a hard stop by measuring motor torque can also be highly effective, then you don't even need switches.
I've personally worked on a number of CMMs (coordinate measuring machines, basically a CNC with a probe tip for checking that something was machined within tolerances instead of a spindle for actually cutting it) that use 90V DC motors and Heidehein glass scales for positioning. We calibrate them using laser interferometers; another optical technique - just with a single beam. Those same CMMs are being phased out across the industry in favor of optical measurement systems, just because they're faster.
Shane of the excellent "Stuff Made Here" Youtube channel recently made a big CNC painting robot that did optical tracking for a coarse positioning stage and used steppers for the local stage: https://youtu.be/osUTMnDFV30
For comparison, a typical ball screw, has positioning accuracy/resolution of around .02mm
It would be useful if CNC machines did a depth scan of the bed before starting to cut, to make sure that the machining plan didn't run the tool into a clamp or something. Not super high precision, just enough to check clearances.
Most of the headaches of CNC machining involve getting the workplace, tools, and clamps in the right place. Only then can the machine do its thing by itself. Help in that area would make CNC cutters more accessible to amateurs.
Some CNC machines intended for unattended operation have microphones or MEMS accelerometers listening to the cutting, to detect when something has gone wrong, like a worn-out tool. Monitoring spindle torque is common. Too little means the tool broke. Too much means the tool wore out.
It uses brushless motors and encoders.
If you use a crude algorithm, maybe. But given what's possible with photogrammetry, I think you can use that as another sensor fusion input, with a kalman filter or something similar, and get even more precision at the output.
That's way more complicated when it comes to the algorithm, of course. But the idea was being able to plug more sensors and improve precision.
Quite interesting, thanks for mentioning. They attempt to directly emulate stepper motors with brushless motors and encoders.
The OP is coming from the CNC milling world where positional accuracy is more or less solved: you use cheap steppers or servos but expensive, precision-ground ballscrews; then you swear on Machinery's Handbook not to drive your machine too fast.
The real demons in dimensional accuracy come from things like spindle runout, deformation of the tool, and flexing and vibrations of the machine, fixture and workpiece (that are often different going in one direction than another!). Certain operations like drilling can't be corrected in real time. There are additional concerns like minimum amounts of material that can be removed with each pass - too little and you are just burnishing the workpiece.
Machinists actually do solve these problems in software when they generate toolpaths and fixturing.
Optical tracking might be useful, but it also might not for the reasons I'm about to describe
CNC machines generally get "better" as they get bigger, not because they have stronger motors, but because they are more rigid. The problem with this CNC is not power, its rigidity. It will cut well enough for wood and plastic, assuming that the spindle is fast enough. However it will deflect significantly as the material "pushes back" against the cutting force.
In this machine, they are using belts an pulleys (which are contrary to common opinion not very elastic) The pulley used to keep the belt in tension are on plastic parts, which are elastic. (steel is also elastic, but much stiffer, so at this scale wouldn't flex as much, well not before the bolts bend)
With all this flex, it affects the accuracy during the cut. you might have felt when a drill bit binds up in a hole, and the whole drill is wrenched from your hand. That happens in a CNC when starting a cut, or plunging into a pocket.
Where big machines come in, is that they have huge mass, which allows for large rails/linear bearings, which are much more rigid. The more mass also means that when the end mill comes under load, the work piece gets the push back because its generally less mass than the gantry.
TL;DR:
yes you can use optical methods for homing, but its better to spend the money on more mass for the x/y/z assembly.
Edit to add the link to the plotter: https://www.thingiverse.com/thing:2349232
Great work!
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?
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.
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?
Edit: did not realize I was replying to solvespace, bring on the arcs!
There's a guy working on a g-code template right now. It should substitute the g-code into the template on export so it's machine ready.
I'd like to get into all that, but I'm still working on construction tools and stuff.
(Maybe it's as simple as putting it in a foam enclosure or something? That sounds bad for spindle cooling, though.)
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.
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?
I only picked up imperial thanks to binging This Old Tony videos.
It's basically the culmination of thousands of years of humans getting better at precision. Things didn't take off until the 1700s, really got amazing around WWII, and has undergone amazing results since then.
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.
And, I already have that same Makita router so I am more tempted to try this... because of the pictures!
What's stopping you? Go for it! :D
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.
It works really well, and as yet I have yet to kill it, for me that's a good metric.
it never dulls.