This mod breaks with the tradition in this project of doing everything at minimal cost. There's simply no getting around the fact that the Z stepper motor setup in the early Monoprice Select Minis which were produced, caused a lot of issues with Z-wobble and banding artifacts in prints. I was fortunate to come across a used Mini made in the summer of 2016 that exhibited some of these issues, and I was curious to find out if replacing the Z-Axis motor with a NEMA17 motor with an integrated Leadscrew would help. I also hoped that it would speed up the movement of the printer in Z moves, because the stock motor is so slow that configuring the slicer to perform Z-hops on retract actually makes blobbing worse because the Z movement time is long enough for the nozzle to drool. This project shows how the mod was done.
The first thing you need is a NEMA17 motor with leadscrew with a matching nut. I was able to find several sets of them on Amazon.com, and they all seem to be made as upgrades for the Prusa I3 and clones. That means they all have a 300mm long lead screw. This value includes the portion of the screw inside the motor, so it's really about 260mm long. This is actually too long to fit inside the Mini. Note that you can probably get away with a separate motor and leadscrew using a coupler to join them. There should be plenty of room for the coupler under the X-Axis gantry. There must be a standard footprint for the nuts on these lead screws because the hole pattern in the new nut matched the holes in the X-axis gantry on my Mini exactly.
Through some careful measurement and calibrated guesswork, I determined that the lead screw for the Mini with this modification should be 220mm in length, so I measured the correct distance from the top of the NEMA17 Motor, and marked the spot to cut with a piece of tape I happened to have laying around.
I used a rotary tool with a cutting wheel installed to cut the leadscrew to the proper length. I tried to do this as carefully as possible and as straight as possible, by rotating the leadscrew by hand as I cut into it around the perimeter and toward the middle until the excess part fell off.
The cut end of the lead screw was a little jagged and had sharp edges and it was difficult to get the nut to thread on, so I used a bench grinder to round off the end of the lead screw to get rid of the sharp edges. Now the not would go on and off easily. With the motor prepared, it's time to dig into the guts of the mini and swap the motors and lead screws. I've already detailed how to remove the existing lead screw in my previous project entry: https://hackaday.io/project/14823-monoprice-select-mini-maximum-3d-printer-mods/log/51880-dont-go-wobbly-on-me-now and how to remove the X-axis gantry and Z-axis rods in this project log: https://hackaday.io/project/14823-monoprice-select-mini-maximum-3d-printer-mods/log/45659-adding-3d-printed-z-axis-rod-stabilizers. You will want to perform the Z-axis stabilizers and install them with this upgrade because these mods compliment each other and most of the same disassembly steps are required for them both.
The next step is replacing the lead screw nut on the X-axis gantry with the new one that came with the leadscrew. Take out the 4 screws from the existing nut and swap in the new nut. You will need some M3 screws to hold the new nut in place. Note that the nut can sit on top of or below the gantry. If you use a separate motor and leadscrew with a coupler, you will possibly have to put the leadscrew nut on the top of the gantry to leave space for the coupler under the gantry.
You should have a printed NEMA17 mounting bracket for the Z-axis already printed and ready to install. If not, grab the file from our Thingiverse page here: http://www.thingiverse.com/thing:2199805 and put your mini back together and print it out. ;-) The bracket plastic doesn't matter (as long as you don't use flexible filament) because it should not get too hot. You will want to use thick (>1mm) walls and top/bottom with heavy (>25%) infill to make sure this part is stiff and does not flex. Be sure it is not warped when you print it too. It has to be perfectly flat.
The bracket mounts on top of the NEMA17 motor and has recessed countersunk holes for four M3 socket cap screws. The bracket only works in this orientation, so be sure the screws are in the countersunk holes and are not bottoming out in the motor. They screws have to be secured to the plastic so the motor cannot move. Different motors seem to have different depth threaded holes so try a few screws until you find ones that don't hit the bottom of the holes in the motor.
Reassemble the Z-axis rods and X-axis gantry as described in the "Z-axis stabilizers" part of this project, and insert the NEMA17 motor into the chassis from below. Do not install the screws in the Z-axis rod ends shown here with red arrows just yet. You will also need to start the leadscrew threads into the leadscrew nut on the gantry and turn the leadscrew by hand until the NEMA17 motor can slide in place without the gantry hitting the upper extent of travel.
You can now install the screws through the motor bracket and into the z-axis rod stabilizers, holding the rods and the motor to the chassis and also in perfect alignment to each other. You may need slightly longer screws for this as the screws now need to go through the motor bracket.
The last thing you need to do is wire up your motor. If your motor has wires connected directly to it, you may have to do a little digging around the MPSM facebook Group to find out the correct way to wire your motor. I picked a motor with a cable that plugs in so that I could use the cable that came with the printer, only I was surprised to find out that the old motor and new motor had different plugs. Fortunately, the NEMA17 motors in the printer did have the same plug as the new NEMA17 motor. The only odd plug was on the old Z-axis motor. I simply took off the cable going to the Y-axis motor in the mini, and used that as a model to copy when making the cable for the new motor. All I did was cut the plug off the old Z-axis cable and spliced the wires to the cable that came with the printer in the correct locations. It worked!
At this point, you should be ready to test the new motor and then configure the main board with the new motor parameters. To test the motor you can just power up and use the "move" menu to move the Z-axis up and down. The motor should rotate freely and raise and lower the gantry without hitting anything. If all is good, you can reassemble the covers on the printer and move on to calibrate the board to the motor.
Calibrating the printer CPU for the new motor is easy, and you must do this or the size of your prints will be way out of whack. I used the calculator at www.prusaprinters.org/calculator to find out the correct steps per millimeter for my motor and lead screw combination. I know from the seller that my motor is a 1.8 degree (200 steps per revolution) motor, and the printer can do 1/16th microstepping. The leadscrew thread pitch is 8mm per revolution, and the motor has no gearing, so the ratio is 1:1. Plugging those numbers into the calculator gives me a result of 400 steps per millimeter. The calculator even nicely reminds me that the G-code for this uses the M92 command (but it does have a type where it calls this out as the X axis).
All that's left to do is send this to the printer to tell it the new value for Z steps per mm and we're done. The easiest way to make this happen is to open up a text editor and create a text file and stuff the commands into it and then save it as "xxxx.gcode" and take it to the printer and print "xxxx.gcode" (use any name you like in place of xxxx.gcode). The printer will read the settings and configure the printer accordingly.
The file I used looks like:
M92 Z400 ; Configure Motor
M500 ; Save New Settings
G28 ; Home All Axis
M84 ; Disable All Motors