Moving Up, Z-Axis Comes to Life

My 3D prints wouldn’t be very 3D if I didn’t get some z-axis control so I dove into the most complicated fabrication this project had (not that it’s all that complicated). First up I started turning some diameters on my leadscrew. It’s an 11/32″-10, 3 start leadscrew (I think) that I picked up for free as a sample. The Shapeoko style ACME screw probably would have worked just as well, but despite my overblown budget for tools, I am trying to make this printer for cheap.

Lead Screw

First step, I made some shims of aluminum foil, folded four layers thick, to act as a bit of a cushion between the lathe chuck jaws and the leadscrew. I previously tested the hardness of the leadscrew by scratching it with a steel file so I knew it was soft enough to cut. Without making some actual soft-jaws for the chuck (which you really should have a 4-jaw chuck for anyway) I figured the aluminum foil might help a bit.

Using a carbide bit, I turned the 8mm diameters for the 608 skate bearings to slide on and the 1/4″ diameter for a retaining nut. The 8mm diameter was just slightly smaller than the original leadscrew OD, but there seems to be enough of a step to retain the bearing. After I pulled the leadscrew off I cleaned up the ends of the threads by the end of the 8mm diameter so the leadnut would slide on nice without cutting into it. (The plastic leadnut can’t take too much rough play.)

Next I used a 1/4″-28 threading die to put some threads on one end of the leadscrew. I clamped the leadscrew back in the lathe to hold it steady. It was a bit tricky to get things started, because the material is still fairly hard. After the threads were cut as far as they could go, I turned on the lathe and used a Dremel cutoff wheel to add an undercut at the end of the threads by hand. (I didn’t have a small grooving tool made up.)

Bearing Plates

Next up was the bearing plates. I started with some aluminum plate and cut them to rough length on the bandsaw.

The first piece that was cut had a nice square end to start, but the second had two bandsaw-cut ends. I cleaned up one edge in the mill, then I thought I would stack both the upper and lower plates and clamp them and mill them at the same time. This was NOT a good idea, likely because I was being lazy and didn’t try to give the pieces a nice matching machined edge in the clamping direction; relying on the stock width. The longer one ended up sliding around while I was milling so I fell back to just clamping one at a time and measuring. You can see in the first picture below that I’m lifting my small vise off the table using some parallels turned on their sides and using a third, taller one to adjust for square.

Since both plates would be needing a nice 22mm hole for the bearing and I didn’t have a 22mm reamer or the appropriate drill sizes I knew I would be breaking out my rotary table. This meant I was going to be spending some setup time and I wanted to get both plates done in one go. I modified the bottom plate design from what I originally had so it was exactly the same (minus holes for mounting the motor). I clamped both plates (now of equal length) in the vise again and used a small army of drill bits and reamers to get all the other holes machined. I also tapped some holes for the #8-32 screws I was using to retain the bearings and milled the slots.

After the initial machining everything was done except for the 22mm bearing hole. You can see that on the lower bearing plate (right) I didn’t drill the side holes completely for the motor mount. I didn’t need these holes in the bottom plate (though I left the top one anyway), and my vise parallels were right below the bottom plate in those areas so I couldn’t drill through anyway.

Now it was set up the rotary table. It took a few tries to figure out what I was doing, but finally I got it. I used a MT2 taper in the center of the rotary table and carefully moved the mill table so that the taper lined up with an empty endmill holder in the mill head. This got me close enough to indicate off. and finish the job. Luckily I had a dial test indicator holder that fit in that same endmill holder (3/8″). I pulled out the MT2 taper from the rotary table and put the indicator in, adjusting the mill table as needed.

Now that the rotary table was centered on the mill head the next step was to center the work on the rotary table. I realized that I should not have tried to open up the bearing hole as large as possible before putting it on the rotary table. This center hole was too large for me to use my center-finder now so I ended up just putting in the reamer I last used to open that hole. This got things centered pretty well, then I had to indicate off the surface again. To prevent the two plates from separating I put some screws through the conveniently placed tapped holes.

They came out nice and shinny:

Leadnut Bracket

I used my paper template method to layout hole locations on the leadnut bracket as well. Here I needed to layout holes in more than one plane. I found out that a Tap-Ease stick did a pretty good job at sticking the templates down. The waxy stuff would hold the paper to the aluminum, but still allow me to slide it and adjust it to the right spot if needed.

I just used a hand drill and bench vise for the two M5 holes. I learned from my mistake this time and made sure I kept the large hole hole on the other side…small…before I started milling it on my rotary table. This allowed me to use a center in the punched mark. Before clamping I used a few small vise parallels under the aluminum angle’s overhang to space it up from the vise a bit. This isn’t an awfully rigid way to clamp the part for this milling operation, but chatter didn’t matter much for this hole. It just had to be reasonably close to the diameter of the leadnut.

Here’s the final bracket. I messed up the first time I tried to make it because I drilled the two M5 holes as clearance holes instead of tapped. While trying to assemble the z-axis I couldn’t figure out how I planned to fit the M5 nuts in place. That was because I didn’t. Oh well, the second time through was much faster and I hadn’t taken apart my milling setup yet.

Next I needed to trim down the lead nut so it wouldn’t interfere with the x-axis motor. The disk sander made quick work of it. I started freehand then to get the angle right I mounted the leadnut to the bracket and used the edge of the bracket as a visual guide.

The assembly starts by attaching the top bearing plate to the z-axis MakerSlide and putting the leadscrew with bearing and coupling in place. (The leadnut isn’t trimmed yet because I forgot the first time I assembled it.) The motor attaches through some standoffs with M3x40 screws. The leadnut bracket is installed on the XZ shuttle and the z-axis assembly drops in from above.

Here’s the z-axis assembled:

I checked the flexibility again and wasn’t happy with things. It also seemed like the z MakerSlide was at a bit of an angle. Looking at the bottom of the XZ shuttle I noticed that the v-wheels were a bit too closely spaced. This is due to the shim washers being thinner than the bearing on the top side. I pulled things appart and replaced five of the shim washers with a bearing. The bearing was actually cheaper than the same size spacer from McMaster-Carr, and it was on hand.

I’m still not confident that both v-wheels are in the right places, but it feels better than it was. Next I checked the square of the z-axis. I wasn’t happy here either. It looked like the top of the extrusion was tipped a bit to the back of the machine. (toward the right of the image) I ended up disassembling the y-axis carriages enough to loosen up the screws that held the x-axis extrusion tight. Then I shifted the screws within their clearance to straighten up the z-axis.

I also checked the x-axis MakerSlide for perpendicularity to the base of the y-axis carriages.

Design Hardening: Brackets

After re-assembling things, I was about to start checking the height setup of the upper frame in preparation of really doing some printing. I noticed a missed opportunity with the z-adjust brackets. I should have made them longer so they could also pick up the bottom of the y-axis MakerSlide extrusions and help keep the frame rigid. So I made them. I did have to sneak a bit of extra thought here too. Since the brackets would be mounting to the top surface of the MakerSlide they had to avoid the v-rail feature. This meant that the screws had to be offset a bit instead of centered in the bracket as before.
I also added some extra brackets to the lower frame and moved the double L brackets that hold the legs to the top frame from the front to below the x-axis extrusion.
Here’s a shot of the machine as it is.
Next it was time to give things a real test. I zip tied a pen to the z-axis and got ready to write a message. My less-than-optimal work process was to:
  1. Create a drawing in SolidWorks and export it as a dxf file.
  2. Import the dxf into a SolidWorks part file sketch.
  3. Use HSMWorks to create toolpaths for the 2D contouring operation.
  4. Export G-Code from HSMWorks.
  5. Use a Python script correct the G-Code for use with my firmware.
  6. Load the G-Code into PrintRun (Pronterface).
  7. Print!
You can download all the files shown in the video below on my Box.com folder here.

[youtube https://www.youtube.com/watch?v=VKxtmuk3qOg]

First Print! (In 2D)

I solved my stepper reverse motion problem. The reason it wouldn’t move in reverse is that it was checking for the state of the endstop. The endstop was not connected and the pull-up resistors were not active. This should have been pretty obvious because the Sprinter firmware even warns you about this in the comments around the endstops, but I still missed it. Just to temporarily get by placed a jumper between the signal and ground for the Y min endstop. I also turned on the endstop pullups and set the inverting to true:

//// Endstop Settings
#define ENDSTOPPULLUPS 1 // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
const bool ENDSTOPS_INVERTING = true; //set to true to invert the logic of the endstops

After that I tested things with the scope again. Now everything works fine! (Except I will need to get some real endstops in place.) Below you can see the pulse traces from both the forward (top) and reverse (bottom) movements.

I went on to making some real endstops. I scavenged some opto-interrupters from some scrap machines. These particular ones needed a 2.2k ohm resistor tying the Vcc wire to the signal wire. I spliced the wires and soldered in the resistor before making up the crimp ends for the connectors. I threw some small heat shrink tubing around the outboard end of the Vcc wire and a larger tube around the whole setup.

I used some SteelTec pieces and strips of steel shipping straps (from the crate of my Smithy 3-in-1 delivery) to make some flags. The one below is for the Y-axis.

These endstops had a threading bushing pressed in them. I wanted to mount the Y-Axis sensor to the t-slot extrusion. At first I was thinking about drilling out the M3 threads so I could pass an M4 or M5 screw through it. Instead I used a Dremel cutoff disk (the thin one) to make a slot at the end of the M3 screw. Now I had a place to turn it with a slotted screwdriver. I put a #6 washer on the screw then threaded it from the bottom up into the sensor, leaving a bit of a gap underneath the sensor base. Then I slid the assembly onto my t-slot extrusion and used a screwdriver to finish snugging up the inverted M3 screw. Remember: lefty-tighty.

For the X-Axis I also used some SteelTec brackets to mount the sensor. I found some random round bushing that was about the right height I needed and put that in place as well. Later I’ll print myself some nicer brackets.

To guide the wires for the Y endstop I decided to run them in the bottom of the Y Makerslide extrusion. I needed to find something quick to push the wire in the lower t-slot so I wrapped some extra toolbox lining material around some pieces of coathanger. I also tried a few other materials such as the more smooth foam toolbox liner, but this grippy one seemed to work the best.


I also tried making some little dots out of hot glue. They seemed to work ok, but they took much more time to make than I thought they were worth. I had to constantly rotate the glue until it cooled down or else it would just spread out.

Now it was time to get to printing. I didn’t feel like complicating my workflow with CAM tools to generate my machine’s G-Code, so I sketched a simple image out on some graph paper and gave it coordinates. I then manually wrote all the G-Code to make the moves. After remembering to remove the top to the marker, everything worked! The extra tall H below was because I didn’t re-zero the machine as I thought I did when I went to write the upper image. Although, the machine did follow the first path very well.
Here’s a video of the action:

[youtube https://www.youtube.com/watch?v=GkJNYom9nwA]