Scrap MDF Sheet As CNC Working Surface

Once its homing switch was moved to the correct position, our Z-axis is ready to go to work. However, it doesn’t have a surface to work on just yet. The XY table forming the heart of this project was originally designed for the purposes of optical inspection, which meant it has a big open space in the middle for cameras and similar optical instruments to see. Big open spaces are not conducive to CNC milling operations!

Fortunately, as part of its original design, this table does have precisely placed mounting points for other equipment. These holes were, in fact, used to bolt the X and Y modules together at right angles to each other. We’ll use these mounting points to install a work surface. For precision work, we want something rigid. Ideally something just as strong as the table elements, say maybe a half inch steel plate.

But for learning purposes, we don’t need anything so fancy. We just need a reasonably flat surface we can work with. Following the theme, we’re going to re-purpose something for the task. This time, it is the main backing board for a retired home treadmill. This piece of laminated MDF had been sitting outdoors for several years and used as a ramp for moving heavy things around. The smooth laminated surface really reduced friction! But it also meant the surfaces are scratched up, and there are signs of water damage at the non-laminated surfaces. Still, it was the biggest, flattest, and most expendable thing on hand for our machine. So it was cut up with [Emily]’s table saw then 12 holes drilled on a drill press. Counter-boring those holes allows the top working surface to remain clear. We’re not worried about the cutting tool hitting one of these fasteners — they are outside of range of motion — but it allows flexibility in workplace positioning.

For our first test, we used a scrap piece of wood left from a laser cutter project and a RotoZip cutting bit. The first programmed operation will be the same smiley face test program we used before we even had a Z-axis. Whose G-code, we have now learned, never moved Z-axis at all! There are only spindle on/off codes, likely designed for laser engraving. Which also explained the speed, which pushed the RotoZip bit too fast, bending it quite alarmingly until we turned up the spindle speed. It did all right, but until we get the machine dialed in, what we really should use is a stouter cutting tool.

CNC first programmed cut using Rotozip bit

Reposition CNC Z-Axis Homing Switch

Top of the CNC mill electrical work items list was making sure it had a functioning Emergency Stop button. Once that was completed, the next work item was the Z-axis homing switch. For a vertical mill, we want the Z-axis homing operation to take it to its highest position, furthest away from workpiece. This is reverse of many 3D printers, which home against the print bed. This is because 3D printers have the luxury of  starting from an empty print bed as a characteristic of additive manufacturing. A CNC vertical mill, representing subtractive manufacturing, could not make such an assumption since the workspace would have work fixtures and material stock.

Our initial Z-axis homing switch was appropriate for our initial orientation of the mechanism, allowing it to home to the top of its travel. But once it was flipped around, the homing switch is now sensing the bottom of its travel instead. We need to find another mounting position before we could have a good Z axis.

Z homing switch wrong end

This switch had the luxury of sitting next to the motor and conveniently sensing the approach of the carriage. Its height was sized to match the length of the motor ballscrew coupler, engaging the switch just before the carriage would run into the coupler.

This linear actuator have no convenient location to sense the other end of the range of motion. Since there was no coupler on the other side, a similar mechanism would subtract from valuable range of motion. We didn’t have a good place until we installed the spindle motor mount plate, whose top edge gave us an feature we could use to trigger the homing switch.

From that point, it was a matter of running through a few 3D prints to find the correct dimensions to trigger a homing switch while maximizing useful travel distance. Now our Z-axis homes against the top of its range of travel again, let’s give it an useful surface to work on.

CNC Physical Controls Panel V2

When I started to build a panel for physical control buttons, I had planned to use arcade console buttons. Big, bright, and durable, they were designed to take a punishment and I thought they would serve well. But before I finished the first version, I had switched to a more task specific button for the emergency stop. I proceeded with arcade buttons for the other two, but [Emily] had a better idea.

She had salvaged some control buttons from retired industrial machinery, so these would be buttons originally designed for the purpose of machinery and not controlling a video game character. They should be given a second life doing their old jobs on a new pieced-together CNC vertical mill.

Salvaged switches for hardware buttons

Using them would require designing and printing another panel. They were smaller in diameter so I thought maybe I could get away with a shim, but even though their smaller diameter required less panel front surface, their mechanism for disassembly and installation actually required more clearance under the panel. As a result I had to rearrange the buttons from forward-back to side-by-side. This is a good thing – the results more closely mimicked that seen on real industrial equipment like this Haas console. My three-button panel is a poor comparison to that full featured beast, but is a lot cheaper.

I also appreciate the black rim on these buttons, making them more difficult to press them accidentally compared to arcade buttons lacking such protection. It was also interesting to note these buttons have provision for three switches underneath, controlling three circuits at once. These, however, only have a single switch in the center slot and given these were salvaged we are unlikely to populate the remaining two slots.

I started the physical button control panel task planning to use three arcade buttons I had on hand. By the time I completed the second version of the panel, no arcade buttons were used but the panel looked better and worked closer to the way they would be on actual machinery. I call that a success, and turned my attention to the Z-axis homing switch.

CNC Physical Controls Panel V1

Our mini CNC vertical mill project now has almost all the basic mechanical components in place. We’ve done a quick drill test, but that was under manual control. There still several very important things to add before we let the machine run G-code, the top of the list is an “emergency stop” button for when things don’t go according to plan. It would also be nice to have physical buttons for “cycle start” and “feed hold”, but that is less critical. I soldered some headers earlier in preparation for this, now I need to connect them to physical buttons.

I originally planned to reuse some arcade console buttons I already had on hand, but then realized there is existing convention for emergency stop buttons: once pushed, they stayed pushed until twist to release. They also have a distinct appearance everyone (not just myself) would recognize, and these are things I want to have on my own machine. I bought the cheapest one I found on Amazon (*) and the tactile feel of this unit definitely reflected its low price. If I were to do this again I’d hunt for a more substantial-feeling (and more expensive) alternative. But in the meantime, it seems to work well enough electrically and the low budget nature matches the rest of the project.

For the “Cycle Start” and “Feed Hold” buttons, I continued with the original plan of reusing arcade buttons I had on hand. I have a nice red one for “Feed Hold” but I didn’t have a green one for “Cycle Start”. I used a yellow one in the meantime, maybe I’ll paint it green later.

Then I designed and started printing a panel for these buttons, paying special attention to the emergency stop button’s support structure. I want people to be able to slam on this button hard in a panic without breaking anything. Unfortunately, due to an uncooperative 3D printer, I couldn’t get a finished print of the panel in time for a work session.

Hardware buttons panel - partial

No matter, it was enough for me to begin the wiring work for this project. Obviously I couldn’t mount the buttons on the machine until I returned later with a completely printed panel in another session. However, even as I was wrapping up this panel for physical buttons, we were already talking about an upgrade.

(*) Disclosure: As an Amazon Associate I earn from qualifying purchases.

CNC Spindle Mounting Plate

Once our new CNC spindle passed initial inspection, it was time to get to work mounting it to our Z-axis linear actuator. Again, the piecemeal nature of this machine meant the parts would not bolt up directly so we’ll need to fabricate another adapter plate. This meant cutting another piece off of the same 1/8″ aluminum stock used to mount the Z-axis on our gantry and marking up the dimensions we’d need.

Four holes were drilled to line up with the actuator extrusion beam, and four more drilled to line up with the motor mounting block that was part of the spindle package. The original plans were to use bolts and nuts across the board, but there was a problem with clearance: the motor mounting holes were almost exactly the width of the Z-axis rollers, leaving insufficient clearance for either M6 nut or bolt head.

The obvious solution was to tap M6 threads into the aluminum, avoiding the need for nuts and associated clearance. Unfortunately we had no M6 taps on hand, but [Emily] the resourceful improviser had a trick up her sleeve: We had plenty of M6 steel bolts, and we wanted to tap aluminum. Steel is harder than aluminum, and so with some modifications with the grinder, she turned one of the M6 bolts into a functional M6 tap.

Cheap spindle mounting plate creative tapping

Bolting directly into newly tapped aluminum, our M6 bolts would still just barely scrape the Z-axis roller assembly. Switching to thicker washers gave us the spacing needed to clear the rollers, allowing the spindle to move across the entire range of motion on our Z-axis.

Cheap spindle mounting plate installed

As a quick test, we mounted an 1/8″ drill bit into the spindle and performed the ceremonial first cut of this machine. I was moving the Z-axis via manual jog controls in bCNC, we still have a few more things to take care of before running this machine under automated program control.

Examining Air Cooled ER11 CNC Spindle

Up until this point, almost everything in the home brew vertical mill CNC project has been salvaged or reused from some previous project. But we’ve come to the point where the Z-axis drive has been properly configured for a spindle motor… that we don’t have. We have smaller lighter motors that aren’t strong enough for the job, we have big beefy motors too heavy for our gantry. While we could potentially use a Dremel or a RotoZip as a stepping stone, the decision was made to buy a cheap milling/engraving spindle from Amazon (*) for the project.

The product page proclaims a maximum of 500 Watts and maximum speed of 12,000 revolutions per minute. We’ll measure power draw once we can put it to work, and we have tachometers to measure its speed range. We don’t expect it to actually hit those numbers, but they seemed reasonable. The part that we were most skeptical about was the proclaimed precision: 0.01-0.03 mm of runout. This is a very high level that we doubted was reasonable in this price range.

The first test after unpacking all components was the obvious basic test: does it spin up? Once we established that it does indeed turn, the second test was then to mount a Starrett dial test indicator (*) to measure its actual runout.

Cheap spindle on Amazon getting dial indicator

The results were… surprisingly good! When the motor is not under stress and turning freely, it actually stayed within a very tight range. This specific dial test indicator was in Imperial units, measuring a range within +/- 0.0005 inch. This is in the ballpark of +/- 0.0127 mm, so the product listing was not a complete lie.

For practical purposes, though, we’ll never have that level of accuracy. There is a lot of flex in the system — from the motor output shaft to ER11 collet — to take us out of that range. A single finger press was enough to bend things beyond the technically-not-wrong runout, so we shouldn’t expect very high precision from this spindle after we mount it on our Z-axis and run under real cutting forces.

(*) Disclosure: As an Amazon Associate I earn from qualifying purchases.

Turn That Z-Axis Mechanism Around

Fourth iteration of Z-Axis was mounted expediently for the pen plotter test, where we found the ball screw was bent but everything else looked good enough to proceed. Following that success, I will make a better mount for this linear actuator to solve some problems with the quick test configuration we had used.

Zv4 mounted by vertical extrusion with old bracket

Problem #1: the test mount was a 3D printed plastic bracket. The best thing that can be said about the rigidity of the mount was that it is better than tape.

Problem #2: old mount leaves long Z-axis mechanism in place, moving the small carriage. Fine for plotters, but for a small vertical CNC mill we want the Z-axis mechanism to move out of the way of the work piece. This means flipping the mechanism around, mounting it by the small carriage so motor moves the entire assembly out of the way.

Zv4 aluminum mounting board in progress

A scrap piece of aluminum was drafted for this purpose. Holes were drilled by hand for fasteners. The accuracy leaves something to be desired, but the hope is that the machine will eventually get to a point where it can make a superior replacement for itself.

Zv4 aluminum mounting board almost ready

Because the carriage aluminum extrusion beam does not have the same spacing as the gantry aluminum extrusion beam, this plate allows us to bolt them together. Here it is almost ready for installation.

Zv4 mounted by aluminum sheet

Installation complete. Now when the tool moves up, the rest of the Z-axis moves up and out of the way with it. It is now ready for a CNC spindle.

Plotter Test With New Z-Axis Exposed Screw As Bent

One of the reasons I didn’t design and print yet another iteration of the pen holder was that I thought it was more important to design and print a mounting bracket for the Z-axis stepper motor. Up until this point, the stepper controller module was merely taped to the gantry. This was never going to be an acceptable long term solution.

Stepper driver - tape mounted

Once the stepper driver was mounted with a proper bracket and tested with the Z-Axis version 3, we removed Zv3 and installed Zv4 in its place. Complete with simple homing switch and parallel link pen holder. For this first test Zv4 was held with the same 3D-printed bracket used in Zv3, though that is already on the list for replacement.

After the fourth Z-axis assembly was installed, I loaded and ran the Sawppy portrait program used for testing the third Z-axis assembly. The Y-axis flex really messed up the plot far more than originally expected.

After watching the thing mangling a Sawppy wheel, I stopped the test. There was no point in going further. Here’s Sawppy wheel drawn by fixed mount for comparison.

Sawppy portrait result of flexible pen holder

But a beautiful pen plotter was never the point of the exercise. Making the machine act as a pen plotter was merely a way for us to visually confirm that the Z-axis is moving more-or-less in sync with the rest of the machine. So as poor as the new pen plot is, the main objective was accomplished.

The test did, however, uncover a problem with the salvaged Z-axis: the ball screw is bent. Now that it is under computer control we can run it at a consistent speed (better than turning it by hand) and now we can feel a small but definite wobble in the carriage. This would explain why it was retired! This wobble was evidently too much for its previous owner, but it’s still too early for us to give up on it. It is possible the wobble won’t be the biggest source of inaccuracy in this pieced-together CNC mill, and even if it is, we’ve established that this is a common and affordable form factor we can easily replace.

Therefore, we shall leave Z-axis version 4 in place and continue working on the rest of the machine until the wobble proves to be a problem.

Parallel Link Pen Holder Only a Minor Improvement

Abandoning rubber band flexible mechanism as too weak, I started thinking about using the 3D printed plastic itself as the compliance mechanism. I’ve long lamented about the lack of rigidity in 3D printed plastic, now is my chance to turn that flexibility to my advantage. Thus was born the second pen holder iteration, using two printed plastic links in parallel to keep the pen vertical.

Most of the thought went into how to print these links so that they could move independent from the underlying base. I toyed with the idea of printing support structures, or have them hang in air and take my chances, before I realized I could take another long-standing headache of 3D printing and turn it to my advantage. The weakest part of a 3D print are the bonds between layers. When a part starts to fail, it almost always fails along layer lines. So I will print this design in one piece, fully planning to break the two printed plastic links apart at the layer line to achieve my goal of two flexible links.

I printed these links across the entire width of the space I had to work with, because I thought longer links will shorten horizontal deflection as the links bend. As it turns out, such horizontal deflection was not the most significant problem. The two parallel links did indeed constrain motion along X-axis, and allowed pen movement along Z-axis, but it was not very resistant to forces along Y-axis.

At this point I ran out of time to create yet another iteration of pen holder before the SGVHAK meet, so I brought this print with me to test on the machine.

Rubber Band Pen Mount Was Too Flexible

Now our Z-axis version 4 has a homing switch, I thought I would again repeat the pen plotting test that I performed with Z-axis version 3. And to do that, I will need a pen holder.

Our problem with the previous plotter test was that our pen was rigidly held. This meant it could not adjust for the uneven height of the drawing surface. We compensated for this by mounting the paper on squishy foam, but still the pen was borderline drawing in one part of the paper and on another part, it pushed so far into the foam to risk tearing the paper. I thought I should build a flexible (“compliant”) pen holding mechanism.

This first draft here had a vertical channel for holding the pen, and rubber band to keep the pen inside that V-shaped channel allowing for vertical movement. In theory the pen would only move within the channel vertically and the rubber band will prevent movement along any other axis. In practice, the rubber band did not constrain movement very much, the pen flexed along every axis. This will be a problem as the pen is drawing, as it needs to resist sideways bending forces.

Onward to the next draft.

A Simple Homing Switch for New Z-axis

So we’re changing the Z-axis mechanism yet again, but before we can mount it on the machine, the newly salvaged hardware needs a few additions. First on the list is a homing switch. The switch itself is a small momentary roller lever micro switch multipack purchased from Amazon (*) and its mounting bracket will be 3D printed. The bracket will in turn be installed to one of the conveniently tapped hole that already existed on the motor mounting plate. This set of holes might be for compatibility with a larger printer, but for this machine’s purposes it will host a homing switch.

The height of the homing switch mounting bracket will be dictated by the distance between the top of the carriage and the blue rigid coupler connecting the ball screw and motor output shaft. If the bracket is too tall, we lose valuable range in our linear travel distance. If the bracket is too short, it would be useless because the carriage will hit the coupler before it triggers the switch.

We actually have some debate which way should be Z-axis “zero”. There are two potential ways to mount this linear actuator module, and there are two schools of thought on where Z zero should be. Should it be the top of the range of travel (common in CNC vertical mills) or the bottom of the range (common in 3D printers and plotters)?

For today we’ll proceed with this simple switch mount because we’re not even sure this mechanism will work yet. It is the easiest thing to do right now, so let’s not overthink things until we establish it works. The test we’ve been using for motion control is to try drawing with a pen, so I’ll set that up.

(*) Disclosure: As an Amazon Associate I earn from qualifying purchases.

Yet Another Z-Axis Candidate Emerges

This whole project started with a pair of salvaged Parker linear motion stages, bolted at right angles to each other. That formed X and Y axis which has always been the center of the project, but there has been a few iterations on a Z-axis. Shortly after squaring away 12V power for the third iteration, we already have a candidate for number four.

This linear stage was retrieved from a pile of retired electronics & hardware due for recycling. The main reason it is interesting is because of the ball screw at the heart of the mechanism. If this works, it would have less backlash than the ACME leadscrew of iteration three, and certainly higher precision than the belt drive mechanism of iteration two.

Ballscrew Z axis label

The tag at the bottom says DBX1204-100. Plugging that into a web search found it and several very similar items broadly labeled as “100mm Linear Stage Actuator”. Here’s one example (*) among many. Starting at about $65 USD, they are pretty affordable. A closer look unveiled a few factors contributing to this price. The first is the bearing at the bottom (under the tag in this picture) which appears to be a commodity 608 form factor bearing. These bearings might be highly precise… or they might be out of tolerance QA rejects and there’s no way to know.

Ballscrew Z axis rigid coupler

A similar mark is the top end: the commodity sized NEMA17 stepper motor’s internal bearing directly handles the top end, mounted with a rigid coupler that will not adapt to misalignment or slack. This simple design makes things cheap, but it also means precision alignment will vary as wildly as the range of quality found at these mass commodity sizes.

Ballscrew Z axis pinched wires

Beyond the design considerations, we looked over this specific unit for reasons why it might have been retired. The wires seem to have been routed through some tight spots, with pinch marks showing on insulation. A bit worrisome, but an electrical continuity test passed so they should still work well enough.

Ballscrew Z axis gouge

We’re more worried about this. This gouge in the backbone aluminum beam implied this assembly absorbed an impact of some sort. Did this damage retire the assembly? Or was it injury from being thrown in the retirement pile?

Regardless of these question marks, this mechanism will become the fourth version of the Z-axis. Mainly on the promise of its ball-screw accuracy. And if it doesn’t work out, we’ve got more Z-axis candidates and worst case, replacements are affordable. Let the integration work begin!

(*) Disclosure: As an Amazon Associate I earn from qualifying purchases.

Mounting Z-Axis 12V Power Supply

Wiring was never my favorite part of a project, but it needed to be done. A lot of it at that. After the latest plotter test, I picked up the next item on the to-do list: the 12V power supply for Z-axis. It was just set on the table for testing the second and third iteration of Z-axis, held only by gravity which meant it started shifting position and threatened to fall off the edge when the XY stage movement hit the table’s resonance and everything started shaking. We should mount it rigidly on some part of this machine.

My first thought was to 3D print a bracket for this power supply, and mount it to one of the aluminum extrusion beams. But then I thought it would make more sense to put it alongside X and Y axis control boxes which are combination power supply and stepper driver modules. I’ll mount the Z-axis power supply here, but I’ll hold off moving the stepper drive here as well since that would involve re-routing many more wires.

CNC 12V PSU mounted on plate below

I drill three holes in the metal panel mounted below the table for X and Y axis driver modules. Even after the 12V power supply was bolted in place, there’s plenty of room left on this panel for the Z-axis stepper driver in the future, and possibly also the ESP32 control board. This is the eventual destination for all electrical components, but one step at a time. Of course, it would help if I don’t keep changing parts of the machine

Pen Plotting With Third Iteration Z-Axis

After third iteration of CNC Z-axis was installed, we wanted to perform a simple test. This particular assembly already had brackets to hold a spindle of some kind. We don’t know what it used to be, but measuring the hole we infer it was approximately 65mm in diameter. We didn’t have a suitable cutting tool on hand, so we reverted back to the old standby: testing it as a pen plotter.

We didn’t have any 65mm diameter pen, either, but we do have plenty of plastic bits in the form of failed and abandoned 3D prints. A few blocks were fished out of the bin and took up space so we could clamp a pen in the spindle holder. A pen could not reach the surface of the XY table, so a cardboard box and a few sheets of foam were used to raise the working surface. It’s not precise by any stretch of the imagination, but it’ll suffice for a pen plotting test.

The test plot was the ~25 minute variant of a Sawppy portrait. This file previously helped us determined UGS was not going to work in this particular configuration, and that bCNC worked better. Now we’ll feed this G-code throub bCNC to plot with the new Z-axis holding a pen.

Since the pen was clamped rigidly in the holder, and the work surface was crude with boxes and foam, the paper was not level. For one side of the sheet, the pen barely made enough contact to draw. On the opposite side, it dug deeply enough to start damaging the paper. But it did not tear, so we’re calling it unintentional embossing.

The results looked pretty good! It’s a good confidence booster before I return to more housekeeping tasks of building this machine.

Integrating Transplanted CNC Z-Axis

Bolting on a transplanted Z-axis assembly gives us a screw driven linear actuator with open-loop control via stepper motor, plus a switch for finding home position. Electrically this assembly is identical to the belt drive assembly we had wired up earlier, this second round of electrical integration consisted only of crimping some connectors on new wires.

For hardware configuration, the first stop is always to punch in part numbers to see what we get. We can tell this stepper motor is in a standard NEMA 17 form factor, but we needed to search on its part number SM42HT47-1684B to discover specs such as maximum current per phase. (1.68A) We conservatively capped our driver to a low value of 1.0A just to be safe, leaving room to increase if we need to.

The steps per revolution for this motor was unstated, so we’ll start with the assumption 200 steps per revolution typical of such motors and adjust as needed. We then measured the lead screw on this Z-axis. Since everything else on this machine is metric, we used metric measurements and it appeared to be 2mm per revolution. This maps the motor neatly into 100 whole steps per mm.

A test run with whole steps sounded very rough, so we increased the stepping up to 4 microsteps and a corresponding adjustment in Grbl to 400 microsteps per mm. This gave us smoother movement at the loss of some holding torque. We won’t know if that loss would be a problem until we start putting some heavier tools on that spindle holder.

In the meantime, we’ll start testing the same way we tested the servo Z-axis: use it as a pen plotter. Only this time we’ll have a stepper controlled screw drive Z-axis.

A New Home For CNC Z-Axis

Our hacky CNC machine project upgraded to a real CNC Z-axis courtesy of a retired CNC router project. It was a modular design built out of extrusion beams and commodity M5 fasteners, which made it easy for us to remove the Z-axis and transfer it to our project.

The modular nature also made it easy to make modifications, and as we mounted this Z-axis on our machine we could see signs of creativity by the previous owner. We’re not sure exactly what problems all of these modifications were intended to solve, perhaps we will learn as we get further on this project. For now, the focus is on exploration which means a preference for nondestructive modification until we have a better idea of what we are doing.

HAKNC bracketWhich means we’re not going to drill into aluminum for mounting holes just yet, we’ll get started with a simple 3D printed bracket for mounting this Z-axis assembly on our gantry. We would prefer to have mount it just a little bit lower, bit we were hampered by the 3D printed limit switch mount. It may get replaced later, but for now it dictates our Z-axis mounting height.

Thanks to the use of flexible aluminum extrusion beams on both CNC projects old and new, mechanically speaking it was relatively painless to transplant this Z-axis from one machine to another. Now we proceed to electrical and software integration.

A New Candidate Z-Axis From Retired CNC

We didn’t get very far with a belt drive stepper Z-axis before another candidate emerged. This is the gantry of a CNC router table, with some sort of a spindle holder and two stepper-controlled axis. The Z-axis moving the spindle holder up/down, and one of the linear axis. X or Y I can’t tell. The other axis would roll on rails and controlled via belts missing from this picture.

There’s a name on the spindle holder, and a search for Inventables CNC found their current product called X-Carve which shows some superficial similarity to what we have before us. But this one showed signs of several modifications by its previous owner. We do not have the full history of it, we just knew it was a CNC project that was left behind several months ago when its owner moved to a different city. It was given to another person, who then offered it to us because we were likely to make use of it immediately on our project.

And use it we shall, because that Z-axis looks a lot better than the one we were ready to start exploring. This Z-axis module uses a leadscrew, which we expect to offer superior precision (good) at a loss of top speed (probably less important for Z axis.) It was originally designed to be a CNC Z-axis, built with aluminum extrusion beams far more rigid than the thin folded sheet metal construction of our belt-drive assembly. Our belt-drive sheet metal Z-axis was the X-axis of a Monoprice Mini Select 3D printer, which meant it was not designed to take the kind of loads that would be necessary for CNC cutting anyway.

Let’s mount this modified Inventables Z-axis and make it work instead.

Initial Tests Of Stepper Motor Z-Axis

We have wired up our first pass of a stepper motor controlled Z-axis, with a stand-alone stepper motor driver powered by a stand-alone 110V AC to 12V DC power supply unit. All connected to a mechanical assembly that was formerly the X-axis of a Monoprice Mini 3D printer.

First test was to verify electrical functionality. The entire assembly was connected to our Grbl ESP32 controller while sitting on the XY table, and we verified there were no escapes of magic smoke. (Yay!) We then used bCNC on the laptop to command Z-axis movement, and verified the direction was correct. (The distance was not, but we can figure that out later.) At this point we were running short on time available at the shop, so we followed up the electrical test with a quick and dirty mechanical test.

The machine has a vertical aluminum beam where we had taped our sharpie markers earlier, and fastened our servo Z-axis for that series of tests. Now, with a mechanical assembly almost as tall as the beam, we’ll need to decide if we still need that vertical beam for permanent installation.

But for a temporary test while we were short on time, the vertical beam is great for us to zip-tie the mechanical assembly in place. It is crooked (not nearly vertical) but it was enough for us to gain confidence this assembly is actually going to work for us. There are still things to be figured out: a rigid mounting solution that doesn’t involve zip ties, plus Grbl parameters to correct movement distance.

But for today, we’re just happy to run through homing routine on all three axis before proceeding further.

Wiring Z-Axis Assembly To Stepper Driver

The Monoprice Select Mini 3D Printer is an impressive demonstration of how costs could be wrung out of a basic cartesian 3D printer design. We could debate whether the tradeoffs were worthwhile, but the level of integration resulting in parts count reduction is indisputable. I have extracted the X-axis from a non-functioning Mini printer intending to leverage its highly integrated mechanical assembly. But it turned out the advantageous mechanical integration was balanced by the disadvantages of electronics integration.

The Mini 3D main board is a single monolithic circuit board, with stepper motor driver chips surface mounted directly to the PCB. This meant electronics associated with the X-axis mechanical assembly could not be easily extracted and reused, and we had to use a stand-alone stepper motor driver.

While I was busy routing wires for X and Y axis and cleaning up the tangles, Emily stepped up to handle the task of wiring this Z-axis. In the shop she found a stepper motor driver module gathering dust and got approval to use it in this project. The motor presumably runs best on 12V as that was the power supplied by the Mini’s AC adapter, but there was no existing 12V power rail on our machine to tap into. Our Grbl ESP32 controller ran on USB 5V from the laptop, which was itself running on standard Dell 19V power. The Parker ZETA4 controllers plugged directly to 110V AC and each had its own internal power supply.

So Emily also had to dig up an 110V AC to 12V DC power supply to wire up to the stepper driver. It was also gathering dust and had amperage capacity far higher than what we needed for the motor, but it was easily available so we went with it. Once everything was wired up, it’s time to test what we have.

Repurposing Broken 3D Printer X-Axis To Use As Z-Axis

It feels like a lot longer than three years ago, but that’s when I started my adventures in 3D printing with the Monoprice Select Mini 3D Printer. It was limited in print volume and print quality, but it served as a good introduction to 3D printing so I felt I understood the field enough to invest in larger and more capable printers.

My Mini was retired from active duty and sat in a box until I loaned it out to Emily for the exact same purpose of giving her an introduction to 3D printing. And just as I did, the introduction led her to purchase a larger printer and my mini went back into its box.

Now it has been pulled out of the box for a third tour of duty elsewhere. This time, I am trading it away. It is destined for local technology outreach events, and in exchange for my working but limited printer I’m receiving a non-working Monoprice Mini to tear apart. Here is my printer performing a test print to verify it still works, the final print it will perform in my possession.

MP Mini X axis

Before I agreed to this trade, I was ready to tear it apart for the sake of extracting its X-axis. That black horizontal arm is a small self-contained linear actuation unit: it has a standard stepper motor, guide rods with linear bearings, and a belt-controlled carriage. Plus a micro switch for axis homing, all inside an integrated stamped sheet metal unit.

I wanted to use this X-axis assembly as the Z-axis for our Grbl CNC project. And the timing of this trade is fortuitous, because now I’m not destroying a perfectly working printer. It is not going to be rigid enough to handle a CNC cutting tool, merely an incremental upgrade over the servo-controlled Z-axis. This allows us to take our first step towards a stepper-controlled Z-axis for our machine.