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]

XZ Carriage Trouble

After my struggle with trying to level the upper frame I decided to design some adjustment screws. I used 1/4-20 threaded rod and some strips of steel. I wanted to make a template that I could lay over my steel strip stock to easily layout the holes. I tried just printing the drawing at 1:1 scale with 100% zoom, but my printed image was off by quite a bit. The 1.5″ dimension became 1.636″.

 I found out what zoom % I would need and then tried printing again. I was able to get within about 0.001″ (as best as I can tell measuring the printed line). One problem with adjusting the zoom level in the printing dialog is that you can only round to the nearest percentage. I then realized I could just print at 100% but put my scale factor in the User Defined drawing scale in SolidWorks.

With my templates in hand, it was fairly quick work cutting some 3/4 x 1/8″ steel strip with a cutoff wheel on my angle grinder and then marking the hole locations with a center punch. I then used progressively larger drill bits to open the holes with a hand drill.

I cut the threaded rod to size with an angle grinder as well. I used a bench grinder to clean up the cut end a bit, then used a Dremel to touch up the start of the thread.

I joined the steel brackets to the rod with some 1/4-20 nuts and to the frame with some M5 screws and T-nuts. I had to slide the legs inboard a bit to keep the adjustment screws outboard, but that wasn’t much trouble.

Next I worked on making my belt clamps for the Y-Axis. The clamps use an M5 screw, nuts, and a T-nut to  adjust the tension. Grooves on the top hold the teeth of the belt to less clamping pressure is required (and less belt damage). I also made a non-adjustable version for the back end.

To cut the aluminum angle I placed it corner up on the miter saw. I didn’t like the idea of the saw hitting a thin leg that was facing up at a right angle. I used two shims under some hex keys stuck in the fence to apply clamping pressure. The cuts came out clean, but the last bit of the corner wasn’t quite cut, closest to the base of the saw.

I moved the aluminum angle out a bit from the fence using some vice parallels and this cleaned things up.

I used the same template layout method that I used with the steel strips. This time I had two templates, one for the top and one for the front of the bracket. To mark the grooves, I used a center punch in their lower right hand corners, then laid out lines as guides.

I tapped the holes on the top for 10-32 screws. Grooves were cut with a Dremel cut-off wheel.

Some grooves are cut better than others, but the clamps hold quite well and don’t seem to damage the belts.

After I was cleaning up from this job, I found out that my tapping could have been much easier if I realized what my handy tap holder was capable of. I was wondering what this little bar sticking out if it was for, then realized that it was a switch that selected between ratcheting in, ratcheting out, and locking in place. My next tap jobs will go much faster.

Next I built up the XZ Carriage assembly, leaving the bottom wheels off so I can drop it onto the X-Axis track.

I put this carriage on the extrusion and tightened it up. Unfortunately there was quite a lot of flex. It was rotating about the X-axis so that with modest pressure there was almost a quarter inch deflection at the tip.

Looking more closely it appeared that the problem was deflection between the inner and outer races of the ball bearings. If you look closely you can see the plastic wheel and bearings stay still while the screw and other components move along the screw’s length.

I didn’t want to work with different wheels and bearings so it was time to go back to the drawing board and see how to stiffen things up, maybe with an extra row of wheels. While I was in the garage though, I thought I’d give my stepper motors a real-life test for the Y-axis with my newly installed belts and clamps. This led to more problems. Using Sprinter firmware and Pronterface I was able to at about 5000 mm/min in the positive Y quite repeatably. At this point I was using two NEMA 23 motors driven with a single Pololu stepper and this mess of recycled ATX power supply wire.

One of the steppers had the coil polarity reversed so that it would step in the opposite direction.

Things seemed to be ok for slow speeds in both directions, but once I started creeping up to even modest speeds I would loose steps while moving in the -Y. I tried increasing the current on my stepper driver, but that didn’t seem to help. In fact, when I got to about 3/4 current level, my steppers started to flutter like bumble bees; not wanting to remain in one place. I did have a heat sink on the driver chip and plenty of air flow. The chip was cool to touch during the whole process. My suspicions right now are:

  1. Long and messy wiring is inviting the chance for inductance loops.
  2. The coil resistance of these steppers is not what the driver was meant to handle (TBD).
  3. While two NEMA17 motors may be driven by most 3D printers at slow speeds for Z, it may not follow that two NEMA23 motors may be driven by my machine at faster Y speeds. (This may require separate chips that share step, direction, and enable signals.)
  4. My firmware may not be configured properly (acceleration ramps, etc).
  5. I may have unrealistic expectations for how fast any one axis should be able to move.

The project is starting to look like a machine though:

Cartesian Robot Takes Shape

I’ve been doing quite a bit of work lately in sorting out the details of my Cartesian robot. One of the big things to do was to make sure I know what all my stock lengths will be and find out how much aluminum extrusion I will need to buy. I was certain SolidWorks custom properties would help me out, but it did end up being a bit more complicated than I thought so I’ll post it here.

First, all of my extrusions have a base SolidWorks part and configurations for each place they are used. In addition to having a column control the extrusion length, I also added the $PRP@StockSize field. This will automatically populate the file property StockSize with the values in the column:

This saves the trouble of having to manually fill in each Configuration Specific file property. Here you can see the same value from the Design Table showing up in the File->Properties window:

Note: Another way to do this without using a design table would be to open that File Properties window and type the following expression under the Configuration Specific Properties (including quotes):
“Length@Boss-Extrude1@@SlideZ@maker_slide.SLDPRT”

Using that above method you could pick different metrics to represent the StockSize in different configurations.

Now onto the Bill of Materials. I created a drawing from my top level assembly with an Isometric view and inserted a BOM. I choose the “bom-stock size” because it already had a column ready to accept StockSize properties. Also, some of my extrusions are within sub-assemblies so I wanted an indented BOM. Finally I said that my part configurations could be grouped only if they had the same name, like “Leg”:

The result was very messy for a real drawing, but it was just the BOM I was after. You can see that many parts don’t have a StockSize, but all the extrusions do (though some are off screen, and off page…):

To get the BOM in a more workable format I right clicked the BOM item in the Feature Manager and clicked Save As to save an external xlsx file. Note: The part names looked funny with weird characters at first, but when I made all the font Calibri everything looked fine again. Now I used some fancy new Excel tricks I learned to sum up all the stocks. In the case of the MakerSlide extrusions I made this formula:
=SUMIFS(F10:F110,B10:B110,”*”&”MakerSlide”&”*”)

Where Column F contains the QTY * StockSize and Column B is the Part Number (or name). The first argument in the function is the range of values that will be summed if the criteria is met. The second argument is the range of values on which to check the criteria. The third argument is the actual criteria, which must be in string form. Here I am building a string with wildcards and some text (“MakerSlide”) that I know will be in the names I’m looking for.

Of course these summaries don’t take into account wasted material from cuts or limited base stock lengths, but it is helpful.

Back to my 3D Printer/Desktop Manufacturing machine:
My build area is going to be about 14.7″ x 12.7″ x 7.6″. This puts my entire machine size at a just-barely-desktop-sized 28″ x 22.15″.

I decided on using belt drives for X and Y. The drive setup will be similar to a Shapeoko desktop mill. I will be using larger Gates HTD 3mm pitch x 9mm wide belts. The image below is a sectioned view from the back of the XZ Shuttle. You can see the belt running under the idler rollers then up over the black pulley in the center.

For the Y-Axis I have two NEMA 23 steppers which will be driven from the same driver board. I would have rather run a shaft across from one to a bearing-mounted pulley, but that proved to be more complicated than it was worth at the moment, seeing as I have plenty of steppers. A shaft in the current setup would interfere with my X axis pulley and my Z axis lead nut. I could flip the Y motor carriage plates upside down and run the shaft underneath the X axis MakerSlide but then the eccentric wheels will be on top. I didn’t like the idea of those eccentric wheels constantly feeling a weight that would act to work them free.

For the Z-axis I have a very similar design to the Shapeoko’s Acme Z-Axis upgrade. I happened to have a leadscrew and nut of about the right size though, so my travel will be 0.3″ per rev vs Shapeoko’s 0.083″. If I find this is too much I can easily buy some acme rod from McMaster.

Another key difference is that my leadscrew passes behind the carriage plate. This allows me to get my Z-axis MakerSlide (and supporting wheels) closer to the carriage plate. I think this will give me a more rigid setup. The bearings are simple 608 skate bearings and are held away from the center of the MakerSlide (in the Z direction) by some aluminum angle mounted underneath. These bearings could be pressed in to the top and bottom caps like I’ve seen in other designs, but I didn’t like the idea of not having a hard stop.

The leadscrew is held in place by the machined shoulders. It will be turned down to fit through the bearing’s bore. Below you can also see a simple model of a 7.2V battery powered Dremel tool that I plan to use as my first cutting spindle. This will help me make some simple parts for my extruder design (TBD).

One final tip: I was looking around trying to find Delrin Acme nuts for cheap. I had no luck at all and (until I realized I already had a leadscrew and nut set) I was going to buy a tap and make my own. If you’ve ever looked for Acme taps you’ll know that they are ridiculously expensive. Well, I was reminded of this simple but effective way to make your own taps. Check out this video on making an Acme tap using only an Acme threaded rod and some simple tools:

[youtube https://www.youtube.com/watch?v=vgAIgSvzitE&fs=1&source=uds&w=320&h=266]

Even though this tap won’t be nearly as nice as one you can buy for $60 or more, it will certainly cut Delrin and brass.