3D Printed CNC Router

The Journey: Written throughout 2020

The Mostly Printed CNC (MPCNC): a project that serves as a capstone to the passions that I have cultivated over the years. I discovered this project during the research process for my 3D printer. Over the course of my research, I developed strong affinities towards a selection of YouTube content creators, many of which I still watch in my spare time. One of these YouTubers, Teaching Tech, detailed his journey to create, mod, and use a MPCNC, specifically the Lowrider 2 model.

Over the course of late 2019 and early 2020, the MPCNC stayed as an afterthought in my mind, occasionally coming to the front and offering an interesting conversation topic. During the tail-end of the ill-fated 2019-2020 FRC season, our team was discussing the possibility of purchasing a metal capable router as changing the CNC set up from bar stock to plate stock took an extremely tedious ~1 hour. During the longer meeting this often wasn’t a huge concern, but during shorter meetings where the queue was as long as the meeting, this one hour queue always left some groups dissatisfied and without fabricated parts. After Covid-19 prematurely ended the season, talks about purchasing a CNC router grew with the administration, but were ultimately shut down due to the exorbitant costs and the seemingly little value.

When I caught wind that the router proposal had died down, I decided on a moonshot idea: to write up a quick pitch for the LowRider 2 CNC and market it as not only a metal-capable CNC router, but also a learning experience for whomever is involved in its construction. I was invested in the concept, but I never expected to receive the overwhelmingly positive feedback from the mentors that I received. This extended to the administration and by the beginning of summer the MPCNC was a go. Here’s the one pager that I used in my pitch: Lowrider CNC Plans

In parallel with my other projects over the summer, I spent weeks perfecting details of the construction and part selection of the MPCNC. One of my close friends had seen the potential of the MPCNC and decided to build one for his guitar-making hobby—he wants to turn this into a side business. When he surprised me with his progress I felt a wave of mixed emotions: shock, amazement, pride, and even a tinge of betrayal, but these quickly subsided and were replaced with another emotion: ecstasy. I was wholeheartedly interested in how he did it and used him as motivation to modify parts and try to out do what he had accomplished.

Sending my proposal to mentors and school administration during the peak of summer I wasn’t expecting a reply, but I got one within a few days, however, it contained bittersweet news. The CNC was fully approved—the sweet— but due to Covid-19 the legal department of the school was still trying to collect its marbles regarding sending (potentially) dangerous tools home with a high schooler. I was devastated by this, as I thought this was the school’s way of saying, “Yo that’s a cool idea and if Coronavirus wasn’t a thing we’d definitely get one for y’all, but since, well Coronavirus, we need to pull the plug on this... indefinitely.” After continually checking in with the robotics mentors bi-weekly I got disheartened and eventually stopped asking.

Summer ended and distance learning began, during one of the weekly robotics meetings I was pleasantly surprised, the CNC was being approved as a project. What followed was a long series of logistical emails and changes to the format of the project. The CNC was gonna be a multi person project, then it became a single person project at the robotics lab, and after a few other format changes mostly due to the severity of Covid-19 the final format was decided: I would take the kit home and work on it in my garage. In mid-November I went to the lab and picked up the filament and started the ~60 hours of printing. Shortly before winter break, I went in and picked up the supplies for the actual CNC, the metal, the motors, the fasteners, the bearings, etc.

The Build: Written on Day of or Day after.

Day 1: 12/19-12/20

Finally! After almost a year (10 months) of trying to persuade the administration and mentors and trying to find a “Covid-19 friendly format” I finally had the CNC in my hands and boy was I excited to start.

I started off by inventorying all of the parts to see if anything was missing, this did not go as planned. For the motherboard that I bought, the stepper motor drivers needed to be purchased separately, and in a fantastical miscommunication (I still don’t know how this happened) rather than buying the required 5 that we needed (or 8 to save on costs), we ended up purchasing 24—keep in mind that each of these cost ~12 dollars... Besides this everything seemed to be there and I was ready to proceed.

I started off my organizing all of the nuts and bolts into ziploc bags for easy access. Then I started off by assembling the frame. This was something that took a lot of finesse. For each of the parts I need to hold 2  heavy metal tubes securely while putting a thin 3d printed spacer between them and also tightening 4 bolts evenly (with a lock nut that wasn’t a captive nut). With my dad’s help, the cracking of two of the 3D printed pieces—this shouldn’t have any impact on the machine, and about 3 hours, the frame was ready and assembled.  I also need to add the x -rollers, this took significantly longer than I expected. The bolt had to go through plastic-bearing-plastic (or nothing here)-locknut and with the tight tolerances tightening this assembly took a lot of time as I needed to make around ~10 rotations to get adequate pressure. Each bolt took ~7-8  min to do, this may seem like not that big of a deal, but for just the 4 rollers (pictured below), I need to do this 12 times (+ 4 more as I forgot to put them in while tightening the rails).

I then had to continue this bolt- plastic-bearing -plastic-lock nut combination for 16 other components (for the Z axis, where Z is up and down). This ended up taking me to the end of Day 1 for two reasons: One, it was 9 O'clock and I skipped lunch, making me really hungry. And Two, I had done almost everything I could have done with the parts that I had. I still needed CNC’d wood for the side panels and the carriage (the irony of needing CNC’d wood for a CNC. This left me with a rough assembly that looked like this:

Day 2: 12/22

After my friend, the one who built the CNC over the summer, used his CNC to cut the plywood I needed and dropped it off I was able to continue the building process. The holes that he drilled, while in the right spot they were nowhere near the right size. To combat this I had to drill the holes out, but this presented a problem: drilling plywood has an extraordinary chance of splitting, considering that the holes were on the edges of the work, I couldn’t follow any method that I knew about drilling the plywood. I didn’t have other pieces of wood that I could use as sacrificial surfaces to prevent tear out (I think that’s the technical term). I had to improvise and since I didn’t have any spares I had to be extremely careful. After a moment of deliberation I tried a few things. Rather than using the final hole size drill bit I worked my way up, but when I tried to drill the hole the plywood started to chip, dang, that was the only “legit” method that I could think of. I then tried something that I remember being told not to do, as it was considered a poor idea—woodworkers avert your eyes! I ran the drill bit, starting with a smaller size, in reverse until I had slowly gone through the board, only after I did this, I was able to turn the drill in the right direction and clean up the hole. For each of the 8 holes I had to step through 3 sizes of drill bits paying 110% attention to make sure that I didn’t accidentally wreck these irreplaceable pieces of wood—talk about stress!

After doing this I had to add the 3rd bearing for 8 more assemblies. I couldn’t have done this earlier as this “bolt sandwich” contained: bolt-plywood- plastic-bearing-plastic -locknut. It was even harder to secure this work as I had a massive piece of plywood that I also needed hold. This ended up taking much longer than I anticipated, taking 2.5 hours rather than the expected 1.5. After this was all said and done I was finished with the side rollers and had an assembly that looked like this:

Each side roller looked like this (I haven’t put the lead screw in):

After I did all of this I had to put the center on the 4 rollers. This wasn’t as difficult as the other parts, but I was still difficult as the alignment of the holes was directly correlated with the tension on the rollers. This along with the bolts being just barely long enough gave very little room for the nut to engage. This made it much more difficult. After mounting the router and the X-axis-controlling stepper motor to the plate, which they didn’t include enough bolts for so I had to look through a pile of spare bolts until I found 4 that worked, I was ready to call it for the night, this is when I noticed my mistake. I had put the assembly 180° off. I decided to call it for the night anyways, I would work on fixing this while I am waiting for the wood glue to dry for the sled. This was my progress by the end of day 2, with the incorrectly aligned toolhead:

Day 3: 12/24

What’s the saying? There ain't’ no rest for the wicked? Well the holiday spirit isn’t going to divert my focus away from the CNC. I went to Home Depot, list in hand, to get all of the wooden pieces that I needed. After spending 2 hours cutting the wood and collecting what I needed I finally had everything. On a quick tangent, the wood cutting machine (for sheets) was really cool. It’s called a vertical panel saw and I have never saw seen anything like it. I found it really cool how it perfectly cut the wood without the normal hassles with a table saw.

After getting the wood home—I never realized how heavy mdf is— I started clamping the wood on top of the table with the intention to start the construction of the sled. This is when I realized the huge mistake that I made. The 2x4 is actually 1.5 x 3.5, for some reason I thought this was 1.5 x 3, as a result of this the 2x4 actually interferes with the rollers. The only option that I have is to get the wood recut, which is gonna take a few days. Until then I decided to finish everything else that I can, this included fixing the direction of the toolhead carriage and cutting the metal angle that is used to mount the wires. My mistake:

This is what the sled will look like (upside down) when it’s completed:


Day 4: 12/29


Oh how I missed working on the CNC. I spent some time (I think partially the day before) fixing the center carriage which was flipped 180 degrees, this took about 20 min and after this was done I had to sort out the situation with the wood. I was initially planning on going back to home depot either to : a. Get an inch cut of the width of the wood or b. Buy smaller wood and get that cut to size; Luckily I had to do neither. One of my close friends' dad, who lives technically next door (there are a bunch of houses, but they are on another street), was able to cut the wood for me. We used a skill saw on the back of his truck bed and a few clamps. It made a huge mess, but in the end I was able to cut off an inch from the end. The cuts even looked half decent! After getting a splinter (or 4) getting the wood back home, I sanded the rough parts down and prepped it for assembly.

I called my good friend over and we worked together, socially distance and with masks, on the glue up and wood screw up. We first put the wood roughly where it was supposed to go. After getting one of my sister’s art brushes (sorry!) I had all the tools for the initial glue up. For the initial glue up, we basically moved the 2x4 (now missing an inch, so 2x3?) 1.5 in. to the left (the 2 is actually 1.5) and then with this slit of mdf we put the glue, we then put more glue on the 2x3 (that sounds unnatural) and then mated the glued up surfaces together. After applying a metric ton of clamps (insert clamp champ meme here), we started drilling holes. The drill bit burned me a few times (it got over 200 degrees fahrenheit!) and after wearing a pair of gloves I was able to drill out the remaining holes. You may be asking, why do I need to touch the drill bit? Good question, for some reason, the bit keeps on falling out of the drill—and yes I have tightened it real good.
The glue up (missing clamps):


We may have gone overboard (pun intended) making 14 holes (on each side!) rather than the needed 6, but shrug. After screwing everything in, and removing all the clamps I had a sled that was ready to be used, just not in the snow. This was by far the messiest part of the whole build and I also enjoyed it the most. The other parts of the build felt almost monotonous, don’t get me wrong, I loved listening to Daft Punk (the first website I made for fun; the link) and tightening bolts for 10+ hours, but this is slightly more fun. After putting everything in, there was one spot where the 2x4 (2x3 whatever, I give up) was pretty mangled and sharp (from factory). I didn’t think of a better solution and ended up following what my dad suggested, put a thick layer of wood glue and let it harden, if there is any annoying glue, sand it down. I did it and can’t really do anything else until that is dry. I took a few new photos, here:

You can see the path of wood glue on the left side near the back.

CNC and the table. 👀. Oh yeah, it's all coming together!

Day 5: 12/30


One more day until this sorry excuse for a year can come to close. Man, I hope 2020 wasn’t a warm-up for 2021. Anyways, the CNC is now kinematically ready!

After vacuuming any excess sawdust or dried glue, I flipped the sled around and onto the comically small table. I then cleaned off the top surface to remove any lingering particles. After that I put the stock that will eventually become the spoilboard onto the wooden piece. This stock had a few knicks in it so I used some left over mdf sawdust and wood glue to fill it up. Then I took the spoilboard and centered it on the board. This gave me the sled, fully operational.

The Lowrider CNC was now ready to be mounted on the sled, I was really nervous, what if I had miscalculated by an inch or so, it has happened before. I decided to attach the z-rods and then took the entire assembly and put it on the table. I first panicked when I tried to put the CNC from the top and then realized that there was no way that this would have worked. After sliding the CNC from the side everything....worked out! I was relieved. The only minor issue was that in certain places, the Y-axis movement was not perfectly smooth, however this is probably just b/c the machine hasn’t been fully squared yet. After this I tested the X, Y, and Z motion, all of which worked perfectly. Then I lowered the gantry to the lowest position and started looking for flat spots or irregularities. Besides, the one I found earlier, I didn’t find any others.

I placed the router in and thought a little bit about how I would manage the cabling. I decided that the router would probably be plugged into a ceiling outlet while the machine would probably be plugged into any other outlet. I also contemplated adding integrated wiring, but realized that is something that I would do later.

I am so relieved that this part worked and can’t wait to begin the wiring, I’ll probably end up asking my friend who already built his on how to cable manage the CNC. Here are a few shots and videos that showcase the kinematics in action!


View from the table height:


Explanation of Kinematics

“Sizzle” of Kinematics



Day 6: 1/8

Welp, it's been a whole year since I’ve worked on this, damn time goes by quickly... With the junior year crunch starting, I’m getting less and less time to work on the CNC, but you know what, I said I'm gonna do it, so I am. Also happy new year. Hope 2021 is better than 2020 (Dre and Capital Insurrection 🤔)

Before I can work on wiring up the stepper motors and etc I first have to attach and tension the belts. Future Vedansh here, skip the next paragraph if you want to avoid my rant about why electronics look ugly*.

In my (mechanically minded) opinion, electronics ruin the looks of the machine (*if not done properly). Most of the machines that I have seen and have worked on are mechanically focused and have little thought given to the electronics — a infamous saying during robotics design reviews is: “Electronics will figure something out”. As a result, most designs don't actually try to conceal the wiring and more often then not, the smooth powder coat and painted accents don’t look as good after everything has been plugged in. My goal has always been to try and make my mechanical design as easy as possible for anyone who is (unfortunate enough to be) working with me, so that they can perform their best. Since I am doing basically all the mechanical and electrical work, I thought I may as well make the wiring look as clean as possible.

Anyways, the belts add character to the machine, unlike most (but not my) electronics (see my rant above, if you skipped).

To attach the belts I first created a loop on the belt spool, this took a bit of finesse and I omitted a 3D printed spacer because it serves little purpose. After attaching the belt with a zip-tie (I started with the x-axis) to one side, I realized the mistake I made. The large spool won’t fit through the ~5 mm opening that serves to attach the belt to the pulley. I had to cut off the section that I just made and I first spent 10 min trying to put the belt through the pulley— at least a friend came over and helped tremendously with getting everything to go in.

The tight hole the belt needs to be threaded through.

What the loop looks like.

After redoing the loop, cutting the belt to size (if I cut at the end of the axis, it's just long enough), adding another loop, and tensioning the belt, I was finished with the X-axis. This is what the CNC now looks like from a top view!


Here is a video of the kinematics with the belt. The belt stays stationary, the motor moves.

After completing the X-axis, I started work on the Y-axis, specifically both of the rails. This CNC has 2 Y-axes. I call them Y1 (or Y left) and Y2 (or Y right). To attach the belts, we need to attach the anchors to the table. This is also what the machine uses to self-square. I started by aligning the 3D printed part to the edge of the table then drilling the holes. This took a bit of trial and error (though the error was mostly me just not feeling confident), but eventually I drilled the holes for one of the pieces.

In a rush to try and move on the other side, I used an impact driver to put the screws in. This was a huge mistake. Since I was using a countersunk head screw with a non-countersunk plastic piece, there was a point of high stress, and since I forgot to stop right before I hit the plastic, the piece cracked. Shit. I was frustrated that I was gonna need to print another of this model, but then it occurred to me, this piece is gonna be experiencing little if any stress. So I just chucked a clamp on the piece to prevent the print from splitting any more and decided to manually tighten it with a good ol’ fashioned screwdriver. This is how it looked:

I did the same thing on the other side. Just to make sure that this didn’t loosen over time, I coated each screw in a thin layer of wood glue, this would hopefully add a little bit of strength and fill in any gaps, mostly the one between the wood and the plastic, reducing the destructive potential of potential weak points. I then added the belt, this time threading it through the, somehow even more tight, y-axis. This is the crazy path we needed to push the belt though:

I attached the zip ties and repeated this for the other side.

The Y-axis (oooo, cool angle):

I thought I’d be able to continue with the electronics, but unfortunately I had to wait for mounting hardware, in the meanwhile, I disassembled the CNC (I just removed the carriage from the Z-axis (which uses lead screws rather than belts). This left me with an assembly that looks like this:


Day 7: 1/13

After 6 days of working on the mechanical portion of the CNC, it’s quite relieving to be working on something else. I am a mechanical engineer by experience and electronics is definitely not my strong suit, which is precisely why I am really excited about wiring everything up. I believe that I can make the electronics look really well integrated into the overall CNC, hopefully by creating modifications to the design to accommodate such changes.

I found some of the mounting hardware that I needed and was ready to start attaching the mounts for the limit switches. These mounts need to be attached to the wooden side panels, but on the inside. I sort of forgot about this step while assembling the CNC which is why I had to partially disassemble it. I also have to clamp the Y axis (the wooden assembly) to the frame in an unusual way just to gain access to the place where I want to put the limit switch.

I drilled out the mounting spot for the y limit switch, which I did in a VERY jank way. I wasn’t able to get the precise hole location as the large 3D printed pieces prevented my drill from even starting the hole. I contemplated my choices. The only logical option that I could think of was to print something like this. This is a handheld manual drill that while slow, may allow me to accurately drill the holes from the inside rather than the outside.

I decided to YOLO it, but I did so with a strategy in mind. The hole size that I needed was around 2mm. I had a bunch of ~1/2 mm bits— these are the ones that break if you look at them. I started off by trying to visually place the holes, using calipers and ensuring alignment from the x and y axis. After doing this I drilled the first hole. This was pretty much bang on. With the location of the second hole now clear I drilled the second hole. Then I put the piece and looked at the alignment. There was a slight shift on one of them, so I simply drilled another hole w/ the fragile bit and after a bit of time I was finally able to get the tiny holes roughly aligned. Then I took the larger bit and made the holes bigger. This— admittedly convoluted— method worked much better than I thought it would.

After finishing this step I started to plan the rest of my wiring. I needed to understand where each of the wires go and to do this, I put each wire in the roughly right spot. This way, I had a better idea of where each wire goes. I spent about 30 min just deciding how I would run the cables and after that I started putting the wires in their rough locations. This is what the table looked like at this stage.


After this I started to focus on the electronics. I went through half the internet trying to find a wiring diagram for the motherboard, and there really wasn’t a reliable one. I decided to read through the manufacturers schematics and try to interpret where each of the jumpers go. These jumpers are physical connections that I need to make on the motherboard in order to ensure that all the electrical pathways are solid. Once I was confident in what I had, I simply had to do the electrical connections. After doing that, I put the stepper motor drivers in their spots and put the heatsinks on the drivers. Here is an image of the finished board.


The next step was to start wiring everything up, and in order to do that I decided that I should first solder all wires to the limit switches, then mount the limit switches. I asked my neighbor of his soldering iron and my anticipation grew.

Day 8: 1/14-15

Sheesh! Today was a productive day!

In the morning I received all of the mounting hardware for the CNC that I needed. This was 2 boxes of nuts and bolts needed for mounting many miscellaneous things. The funny thing about the box I bought was the pricing scheme. I really only needed a few M3, a few M2, and a couple of nuts for each, instinctively I went to McMasterCarr to look for the nuts and bolts that I needed. I realized that it would take a few days to get here (closer to 5, and keep in mind this happened on the 11th or so) and I felt as if the price was a little bit high, sure enough I was right. I went onto Amazon and found these two boxes for about the same price, but containing more than 10 times the variety and number of bolts— they were a little bit weaker, but for this use case it really doesn’t matter. (Yes I used photoshop to remove the label information, nice try)


I borrowed the soldering iron from my cousin who lives next door— I thought this was gonna be a piece of cake, boy how I was wrong. I’ve used his soldering iron before, and since neither of us solder that much, it's one of the cheapest soldering irons out there. As a result of build up on the soldering iron tip, there was only one small spot which contained enough heat to actually melt the solder. What made this much harder is the fact that the soldering must be done on the CNC, as the cables are looped through holes. If the soldering is not done on the machine, it is impossible to put the cables through the cable management holes.

This led me to do one of the most crazy, but also comical things that I have done on this project. While the soldering iron would be heating up, I would be wiring the limit switches and somehow clamping it down (I also didn’t have any clamps that were able to do the job 🤣). After that was done, I would make sure everything was in order, dash to the soldering iron, unplug it, then solder one hole. If I got lucky, I would have enough heat for 2 holes. What made this even harder was that there was only one tiny crevice where the soldering iron actually allowed the solder to melt, everywhere else, the temperature wasn’t nearly high enough. I spent the next few hours soldering 10 holes.

What made this even better was the fact that I was soldering the WRONG HOLES. Through what can only be described as a massive hole in the documentation and an oversight on my part, it turns out that I had wired the limit switch to be normally open. This means that the switch will have current always flowing through it and when the switch is pressed, the current flow will stop. This is not really the best solution for the long run. I need to basically resolve each of the limit switches— talk about a waste of time!


After spending another hour or so resoldering each of the holes, which at this point felt agonizing because the soldering iron seemed to become even less and less cooperative, I was finally finished. I then had to screw the limit switches in. For 3 of the limit switches, I could simply find a surface on the CNC, I used the back of the Z axis stepper motor, to rest the pieces and comfortably tighten it up. The cables had slack so I could easily pull a few inches. This only really worked for the X and Z axis, which when done ended up looking like this.

This is the Z axis switch, the cable goes to a hole in the aluminum channel, allowing it to be very neatly organized.


This is the X-axis limit switch, the cable didn’t really have a logical path to go through so I put it like this. Also this was the last switch that I made, meaning that the soldering iron was basically toast; I used blue tape, in lieu of electrical tape, to create a makeshift stress relief.


The Y limit switches were another beast all together. These limit switches were literally nestled underneath the entire carriage in a space that is literally 1 and a half inches wide and has the belt going through it. Putting the limit switches was a MASSIVE pain. Everytime I put the screw in, I wouldn’t have the dexterity— to be fair very few others would either— to get the allen key and hold. After that getting the screw to go through the limit switch into the hole in the plastic also took a lot of trial and error. And as a cherry on top, as soon as I thought I was done with 2 of the holes, the limit switch literally fell out, this was because the bolt that I was using didn’t go through the entirety of the plastic. I had to swap from M2 - 10mm to M2- 12mm, luckily I caught this with only one hole. After spending literally 75 min putting 4 screws in (that’s not an exaggeration), I was FINALLY done with all of the limit switches. The only thing I hope is that now I don’t fry them using the wrong plug (I have actually plugged it in without power into the wrong plug, but that is purely due to how closely the pins are.) Anyways, this is what the Y axis limit switches look like— hopefully you can appreciate my plight.


After pretty much burning through the day attaching 5 limit switches, I decided to try something different, I took a few “Glam Shots” of the CNC at this stage. Here are a few of the images I took.



Time to work on testing and firmware!

Day 9: 1/22-23

The next order of business was to start actually wiring things up! I have spent so much time in the area that I was comfortable in, now wiring is an area outside of my comfort zone....

Call it laziness or whatever, I haven't gotten around to the rest...