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]

Steppers, Scopes and Missing Pulses

As mentioned in a previous post, I was having trouble with my y-axis motors not doing as they were told. Thinking it might be at least part due to my crappy wiring job, I starting making some improvements. I bought some stepper motor wire from Inventables. This wire has four conductors plus a shielding and an uninsulated ground wire.

I crimped on some Molex style female pins on the ends and a latching connector to connect to the motor side. I then slipped on some heat shrink tubing from the untouched end and tried to shrink it with a hot glue gun. Don’t do this. It works, but the residual hot glue around the tip makes a stringy mess. For the other end I used the side of an old soldering iron. Note: I say an old iron and not my good one because it does leave some residue that will stain the iron. You can see the ground conductor sticking out the bottom of the heat shrink tube. I saved this in case I wanted it later, which I did.

I crimped on an extra ground wire to the conductor and crimped a ring terminal onto that. When crimping the ring terminal I stripped off about 3/8″ of insulation from the wire, then folded the exposed wire over the insulation. This gave me a thicker thing to crimp on. The end near the stepper wire is a bit of a mess, I tried using the base of another grounding ring terminal to crimp the wires without soldering, but ended up soldering anyway. The other side was better. On the other side I used a non-latching connector to plug into the RAMPS shield.

With my connections made I started testing my my motor using Pronterface to send code to the Arduino running Sprinter firmware. Some more on my setup:

Pololu A4983 Stepper Driver
Configured for 1/16 stepping
Trim pot set about 10 o’clock
Single Y motor (Left) connected to Z socket using shielded 3ft stepper wire.
Acceleration ramping in Sprinter OFF

Making 100 mm jogs back and forth and increasing speed in invervals of 500mm/min, I started to loose steps at 11000 mm/min. The loss was only on the negative direction though. Even more strange was that when I went back to speeds I had successfully achieved before, I now stopped short on the negative direction.

The Pololu heat sink and the motor were both remaining cool throughout the testing. I tried enabling acceleration ramping because at the higher speeds there was some violent jerking, even when it did complete a move.

// Comment this to disable ramp acceleration
#define RAMP_ACCELERATION 1
 //// Acceleration settings
#ifdef RAMP_ACCELERATION
// X, Y, Z, E maximum start speed for accelerated moves. E default values are good for skeinforge 40+, for older versions raise them a lot.
float max_start_speed_units_per_second[] = {20.0,20.0,0.2,10.0};
long max_acceleration_units_per_sq_second[] = {70,70,50,10000}; // X, Y, Z and E max acceleration in mm/s^2 for printing moves or retracts
long max_travel_acceleration_units_per_sq_second[] = {500,500,50,500}; // X, Y, Z max acceleration in mm/s^2 for travel moves
#endif

Things were less jerky, but I still stopped short when moving in the negative Y direction. I even tried reducing the max acceleration with no improvement. It wasn’t like the motor was pulling out and shuddering  it was as though it just stopped receiving step commands.

It was time to break out the big guns now. I set up an oscilloscope (borrowed from a friend) and connected it to the step pin and a ground on the RAMPS I2C breakout. I left the power to the motors OFF and just looked at the signals coming from the Arduino Mega. The pulses came in two widths. Primarily there were small pulses at 2.1us widths, but occationally there were also 8.4us wide pulses. The image below shows a trace where I am triggering on each rising edge and showing “persistance”.

Looking at a longer time scale I can see that each of the pulses are far apart and there was no chance that the pulse width would merge into the next pulse as I speculated at one point. Below is a longer trace showing two 100mm moves at 9000mm/min. The upper trace is the forward direction and the lower is reverse. (Persistance was used to keep the forward trace on the screen while taking the reverse trace.) Both traces show pulses throughout the entire 0.666sec of time they should. The motor power is still off at this point. Zooming in on the reverse trace I didn’t see any abnormalities.

I turned the motor power on and tried again at 9000mm/min. Now the motor stops short on the return and, interestingly, my pulses stop at the same time!

I repeated this test and made a video:

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

Pulses stopped at 0.296sec when they should have continued to 0.666sec. That’s only 44.444mm of travel time. I measured the remaining distance (from the 100mm commanded) to the tape marking my start point. This was 50mm. Discrepancy may be due to the cart inertia carrying it after pulses end, or some pullout occurring in both directions during the violent starts.

It is curious that the pulses only stopped early when the motor was powered. This suggests that the motor power has some interaction with the controller being able to send signals.

Next Steps:

  • Investigate effects of endstop options (in firmware and hardware)
  • Investigate firmware options for STEP_DELAY_MICROS and STEP_DELAY_RATIO to combat missing steps
  • Add a second motor

X-Axis: Bigger Stronger Faster

I had trouble with my XZ Carriage flexing a bit too much for my liking. Before I tried extreme measures of adding a second piece of MakerSlide and another set of wheels, I figured I’d try some Open Rail first. I sponsored the Kickstarter project so I had some samples laying around. I cut two strips of this to the same size as my x-axis MakerSlide extrusion and bolted them on.

That’s a ton of T-nuts and M5 screw. I had to carefully line up all the T-nuts first then hold the Open Rail in place while I put in the screws. If I bumped it and shifted a T-nut away from a screw hold before I put a screw in, I would have to pull everything apart and start over. Luckily this didn’t happen.

I actually had more trouble with trying to use washers as spacers when reassembling my XZ carriage. I helped hold a stack together with a bit of tape. This worked pretty well. Also worth noting is that the orientation of these flat washers matter. These washers are stamped and have one rounded edge and one more sharp edge. The washers also curve just slightly away from the rounded edge. If you stack them so that they are all pointing in the same direction they have a smaller stack height than if you alternate them. I alternated my washers and that got me within about half a mm of where I wanted them.

You can see the alternating washers in the spacer set closest to the camera below. After struggling with that for about 3 minutes you can see my improved assembly method on the far one. You can also see the extra set of V-wheels for the new V-rail.

This modification did add quite a lot of stiffness to the XZ carriage. The z-axis does not flex nearly as much. Now the weak point seems to be a combination of two things:

  1. The carriage plate closest to the z-axis bends in the middle away from the screws. This is bending within the carriage plate itself. Modifications such as these reinforcing blocks shown about halfway down on this forum topic should also help me. (But I will have trouble trying to fit things around my Z Leadscrew.
  2. The z-axis V-wheel bearings are shifting on their races in the same way the x-axis ones did. I’m going to live with this problem for now. Things may improve when the leadscrew is installed.

The architecture for the x-axis on my machine didn’t lend itself to having the same style belt clamps as the x-axis did. I originally wanted to run the belts close to the extrusion as shown in the picture above. I tried putting some eye-bolts on the Y Carriage plate, but this would end up stealing over an inch of my usable x-axis travel on each side. The yellow cable tie shown was an attempt to make a larger radius for the belt to push it closer to the x-axis extrusion.

Next I thought of having some bracket that would push the eye bolt down from the top. This would make it much closer to the carriage plate, but it would be complicated and would not be as friendly to adjust. Also shown here is another attempt at increasing the wrap radius using some home electrical wire (single copper conductor).  I didn’t like this either.

I even tried making something out of Steel Tec parts, but this was a mess.

Next I started playing around with putting the eye bolts on the motor carriage plate instead. I had to route the belt upside down now, around some extra idler pulleys installed on the top corners of the X motor carriage plate. Although the time I put into machining the other idler pulleys so they would fit between the V-wheels would now be a waste (yes, btw, I machined those pulleys) and this setup doesn’t look quite as nice, I think this will be my best option.

I went back to CAD and some sketch paper and figured out what my bracket would have to look like. I needed to make the eye bolt a bit higher than the belt horizon because I needed room for the lock nut over top of the Y motor. If I made the bolt in line with the horizon, then the threads would be just above the motor and I couldn’t tighten it there. I thought about tapping the bracket, but that would mean I would have to remove the belt to turn the bolt and tighten it or else twist the belt. I printed a template and fabbed it up. Apparently I was paying too much attention to the vertical dimensions because my eye bolt mounting hole needed some post-design shifting in the horizontal to get it to line up with the belt. A rat tail file helped me out.

With both brackets completed I used some pieces of Steel Tec to make belt clamps. Those are #8 screws and nuts. This all turned out pretty well.

Ok, I wasn’t going to mention machining these idlers I didn’t end up using, but there are some interesting points. I did some sketching and found out that I could still fit a 9mm idler between my V-wheels when I doubled my rails. These little salvaged idlers are a machined tube with a 5x5x16mm bearing pressed in them. I knew I needed only enough room for 2 shim washers on either side of the bearing and I needed to make sure I machined it symmetrically. So, I put the two washers on the bearing and measured the depth to the outer edge. Then, on my lathe I faced the bearing end until I got to this depth.

Aloris BXA Quick Change on Smithy Granite

First off: Quick info for anyone wanting to put an Aloris BXA toolpost holder on your Smithy Granite 1324 as quickly as possible with acceptable results should buy:
  • Aloris BXA holder (used, from eBay $230)
  • Smithy’s Chicago Bolt (new, $3.50)
  • Bronze Sleeve Bushing 1/2 x 5/8 x 1-1/8″
  • Flat Washer 9/16″
  • Aluminum or other thin foil for shimming

Here’s a look at all the parts needed.

I needed to make a slight detour from the 3D desktop fabrication project to put my lathe back together. Many months ago I bought an Aloris BXA quick change toolpost holder with some accessories on eBay for cheap. I needed to modify my lathe’s compound top slide to accept the larger bolt required for the larger toolpost holder.

After pulling the compound apart, I decided that I didn’t feel like trying to press out the existing shaft, then try to machine a  larger replacement and press it in, all while having a crippled lathe. So, I took the easy route and bought Smithy’s “Chicago Bolt” for $3.50 and figured out how to make it work.

This bolt diameter was still too small for the Aloris holder, but I bought a 1/2 x 5/8 x 1-1/8 bronze bushing to bridge the gap. Seeing as the original compond’s bolt was metric and the Aloris’ bore was English, I had to shim the shaft with some aluminum foil to get a tight fit. I also had to buy a 9/16″ flat washer to go under the Chicago Bolt at the top of the toolpost holder.

I re-assembled my compound (having taken it apart only to see if I wanted to replace the bolt, which I didn’t) and put everything back on my lathe. Quick and easy, the toolpost holder was on the compound. The bolt doesn’t supply the same clamping force as the massive 1/2″ Aloris one would, but I think on the whole things are better now. Maybe later I’ll modify the compound top slide, but for now I have a much easier way to adjust my cutting tools and swap between them.

It did seem to work pretty well for cutting. The height had plenty of adjustment both up and down. Even if it’s not as solid as it would be on a toolroom lathe, it’s certainly more solid than the original Smithy toolpost holder. And, this American-made steel was cheaper than a Chinese knock-off that I could buy new.

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:

Assembly Starts

I still have a few design details to work out, but I’ve gotten anxious to see some metal take shape. I started with cutting all of my aluminum extrusions to length. I installed my new blade on my miter saw and checked to see that it was square in both directions. The built-in clamp was too wide to properly hold the 20×20 extrusion so I used some quick clamps instead. This was an 8 ft long piece so I supported the far end with the table from my Woodmaster Multi Tool (the original Shopsmith).
I noticed after a few cuts that the ends weren’t getting cut quite as clean. I took a look at the saw blade and picked off a few aluminum chips that had gotten stuck. Then I used some wax lubricant on each tooth and also put a bit along the cut line of the extrusion. For each subsequent cut I just lubricated the extrusion. Things seemed to go very cleanly after that.

I checked the ends with a square and they seemed fine, but I would later find out that they weren’t quite good enough for one location. The length came out very close; within half a mm.

All the extrusions, ready to go:

 I was getting ready to tap one of the MakerSlide extrusions for the X-Axis when I accidentally pulled my clamp apart too far and pieces went flying so I had to take a quick detour to figure out how to get it back together. This was NOT how it went together:

Finally I think I got it back in order:

I clamped the end of that quick clamp in a vise and then clamped the MakerSlide and a scrap piece of 20×40 extrusion in the quick clamp so I could tap the end. Here I’m using another small piece of extrusion with one hole drilled out for clearance for an M5 to help keep my tap square.

I also decided to put a transfer pin through the other hole to keep my tapping guide in place while I worked.

After the holes were tapped I bolted the carriage plates to the end of the X-Axis and checked them for perpendicularity. This is the only spot where I really needed to be concerned with being square because this will determine how square my X axis is to my Y axis. Unfortunately it wasn’t very square:
It’s cold out and I didn’t really feel like getting my mill ready to clean up the end so I decided to shim the extrusion with some aluminum foil. Six layers did the trick here and brought my extrusion square with the carriage plate.

Next I needed to adjust the length of some spacers I bought. McMaster didn’t happen to have a 13.35mm spacer so I had to make due with a 14mm one. (This is what happens when you mix English and metric parts.) I tried using a bit of sandpaper on my bench and rubbing the spacer on that, but I couldn’t keep it perpendicular. Next I tried resting the spacer in the slot of some scrap extrusion and using my disk sander and a miter gauge. This worked pretty well except on the second spacer when I over-achieved and had to use a shim washer to make up for the extra mm I took off. I used my thumb to press the extrusion to the miter gauge and my forefinger to slide the spacer into the sanding disk.

Using my spacers and lots of other hardware in my fancy parts bin shown in my last post, I started assembling the X-Axis assembly.

The lower wheel axle is quite a pain to get together because it has two eccentric spacers which protrude into the aluminum plate. Therefore you need to leave the top screws loose a bit so you can open up the bottom of the plates. I have a feeling this will be a pain to adjust later too.

Next I started laying out my bottom frame pieces. I used an old mirror I had to act as a flat build surface. I added some extra T-nuts into the extrusion before I tightened the ends. It’s easier to ignore them later than to unbolt everything to add some.

I did the same with the top frame. Here I had to use some vise parallels to keep the V rails of the MakerSlide extrusions off the flat surface.

Before I tightened the left end of the frame down, I made some measurements to make sure my Y-Axis MakerSlide rails were parallel. I noticed that once I locked down three corners, the forth had a bit of spring to it and didn’t want to rest closed. I flexed it into place though and I don’t think it will cause me trouble.

Next it was time to add the legs. The design calls for the lower frame to rest half an inch above the floor so that a wooden milling surface can be placed underneath. I neglected to build my wooden plate first to space the lower frame, so I had to make due with some half inch aluminum jig plate instead. I also added some L-Brackets loosely near the top in preparation for the upper frame.

To rest the upper frame in place before I tightened everything down I used some quick clamps on each leg. Then I measured and tightened each corner down.

Finally I added the X-Axis assembly. I had to remove the lower wheels and then replace them after I rested the assembly on the upper frame’s Y-Axis rails. So far it’s looking just like how I designed it. The Y-Axis movement is very smooth. My goal is to finish the X and Y movement and get my electronics in place before I start fabrication of some of the trickier Z-Axis parts.

Lessons Learned

  1. This assembly will definitely need some adjustment screws for leveling the top frame to the build floor. I should be able to incorporate something without much trouble though.
  2. My miter saw did not cut square enough after a basic setup. It would benefit from a proper zero-clearance fence and floor insert. I knew about these things, but I didn’t have the right material to make one and was lazy.
  3. Surface mounted angle brackets would have been better for the top and bottom frame assemblies. (The ones that would sit on the top or bottom of the frame rather than on the front or side.) This would eliminate the need for an elaborate flat surface with vise parallels in assembly.
  4. A little wax lubricant helps quite a lot for cutting aluminum with a miter saw.
  5. Aluminum foil is a handy shim stock.

Parts!

I recently received the remaining parts I’ll need to build my desktop fabrication machine: glass for my build plate, a bunch of metric hardware, heat resistant tubing, timing belts, tiny drill bits, spacers, an M5 tap, 20mm T-slot extrusion, and some aluminum angle (architectural):

McMaster was incredibly fast at getting the parts out (as usual). I placed my order at 11pm on a Sunday. At 11:30 that night I realized I forgot to add something so I emailed them. They were able to add it and my whole order was out the door before 7am Monday and at my door on Wednesday.
Harbor Freight had a nice plastic organizer on sale. Things look so much more awesome when neatly organized. (Pay no attention to the mess behind the box.)

I bought some more hangers to store my extrusions in my garage too. That’s my MakerSlide stock in front.

I also picked up a saw blade for cutting the extrusions and some drive pin punches my “reman” activities.

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.

Electronics and Firmware Test

Tuesday I was able to send some commands to my RAMPS electronics. It’s a small step, but now that I can make a stepper motor move I can try out some ideas for lead screws. I was able to use RepSnapper to tell the firmware to turn the fan on/off and to jog the x-axis motor.

While I was connecting my steppers I had to figure out what wires went where.  On my salvaged motors I was able to find that it had the following terminals:

  • B\
  • B
  • A
  • A\
While the RAMPS board has the labels:
  • 2B
  • 2A
  • 1A
  • 1B

I was pretty confident that hooking up the pins in order would get the job done (B\ = 2B) but to check I measured the resistance between leads. Between B and B\ I measured about 1.13Ohms (about the same for A, A\). Between any other pin combination I read infinite resistance/no continuity. This confirmed that I was at least hooking up the right coils. As it turns out the direction was right as well.

The motor seemed to step a repeatable amount when I jogged first in a positive direction then in the same negative distance. I turned down (CCW) the current limiting potentiometer on the Pololu stepper driver almost all the way and the motor still had good torque and stayed cool. When I had it set at about the midpoint the motor seemed to whistle a bit and started to get warm even with the fan blowing on it.

The fan turned on and off fine, but RepSnapper has an option to change the fan voltage which didn’t seem to work. Maybe my hardware only supports on/off control here. The ultra-light, translucent, adhesive mounting brackets I used to hold the fan to my desk worked surprisingly well and stopped it from walking away.

My power supply seems to be working wonderfully with a bit of stereo wire clamped in the binding posts and screwed into the RAMPS terminal plug.

Next steps:

  • Build some lead screw prototypes with weights on them
  • Have the motors turn the lead screws and see how fast I can jog back and forth without skipping steps or melting motors.