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]

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.

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.

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.

3D Printer Lab Power Supply

I while back I heard about RepRap and instantly fell in love with the idea of making a 3D printer. I began to think of ideas and acquire parts, including electronics. However, I was side-tracked for a while by life and only recently started putting real work back into the project. I do love the idea that a RepRap can make many of its own parts, but I want a bit more functionality in my own printer.  I was originally inspired by the HydraMMM, a 3D printer and CNC mill.

Surfing around various maker sites I came across the Kickstarter project for MakerSlide. I thought this stuff would be great for my multi-purpose 3D printer so I became a backer of the project. I also found some more inspiration from this CNC router prototype made of MakerSlide (pictured here).  Here’s what I have so far on my design:

This design differs from the CNC router in a few ways:

  1. It’s not nearly as done.
  2. The Z-Axis has the MakerSlide extrusion moving up and down instead of having a carriage ride on a stationary slide.
The Buildlog router uses larger carriages with motors that direct drive lead screws. I like how clean the design looks, but I have a few concerns. The screws look like normal threaded rod. It’s great because it’s super cheap, but will it be smooth enough? Also, typical threaded rod only has 1 “start” which means that the drive ratio is very slow. Compare that to the direct belt drive of Buildlog’s ORD Bot 3D printer frame. Like most belt driven 3D printers, ORD bot can move very fast in the X and Y directions. The Z axis does have threaded rods, but you rarely need fast traverse in that direction. Looking around I don’t see much of any 3D printers using screw drives for X and Y or using a stationary build platform. (Most move the Y axis.)
But I want my machine to be a lightweight mill too, and I don’t want to be moving around a large platform with wood or aluminum on it. Rather than searching all over the web for the answer to my lead screw drive question I decided to just test a few concepts. But to do that I would need a way to get my stepper motors moving so I need to assemble my RAMPS electronics from Ultimachine.com. This is about the time I realized that buying electronics before you are going to use them is a bad idea. My RAMPS V1.2 had been sitting around so long they had come out with two new versions with handy features that could come in useful in the future. Oh well, this will still work.
Some tips I came across when I would building my RAMPS kit: I have a wooden desk as my electronics work area, and my Panavise clone with suction base does not stick to it well. So, I bought a cheap plastic clipboard that I can attach the vise to. The clipboard has many handy features. It holds the suction for quite a long time (most of a day). It is clear, so I can see if I have things trapped under it. And it has a handy clip, which may come in useful to hold wires out of my way at times.
After I struggled to use my vise and my helping-hands tool to solder the pin headers on one of my Pololu stepper drivers, I found another nice use for this vise and clipboard. I put the stepper driver on its pin headers in a small breadboard to try to solder it, but the breadboard kept sliding away from my iron. Until, on my messy desktop, it hit the edge of the clipboard. Now I could do an entire header easily from the right side while everything stayed in place.
My RAMPS was now assembled, but I needed something to power it. I read up on converting a PC power supply into a lab power supply that could be used for many things, not the least of which would be my 3D printer. I looked at this site to get an overview of the process. The basis of my project is an old PSU I pulled out of a computer that mysteriously stopped working. I checked the supply the best I could by connecting resistors and measuring voltages with a multimeter. The PSU seemed to check out fine, so I had at it.
I started off by grouping the +5V, +12V, and Ground leads to some ring terminals. These ones were all part of the chain of connectors that run to accessories like optical drives (not the main ATX connector).
I had read many sites about the topic in the past and heard something about paying attention to the different “rails” inside a PSU and how it is not always a good idea to connect ones even if they are the same voltage. From this site I got some more info. I decided I would connect all my grounds because I don’t care a whole lot about electrical noise at this point, but that I would not connect the two separate clusters of +12V wires. Before I delt with the rest of the wires I started in on the 10 Ohm power resistor that is needed to provide a load so that the PSU will stay on. It’s connected between the +5V line and ground. I first thought of heat shrinking over the edges of the resistor, but I realized that this will stop heat-transfer to the case when I mount it, and later cut the tube off. This resistor got zip tied to the vented side of the PSU case.
I started working on my on-off switch for the power supply. I’m not sure why having a switch that controls the PSU like a computer does is better than just using the rocker at the back of the PSU, but I saw other people do it, so I did it too. Plus, this gives me the chance to add a fancy LED to the grey “Power OK” wire.
I drilled three holes: 2 for the switch and its alignment tab, and one for the LED. I held the LED in place with a bit of hot glue.
Next it was time to deal with those other wires from the main ATX connector. I just grouped all of the same colors together and crimped them into ring terminals. I read that one of the orange wires might be a 3.3V sense wire that needs to be connected to 3.3V. I just grouped them all anyway. Note that I am using odd-sized terminals. They are 10-12 gauge wire terminals, but their rings have an OD of only about 0.3″, as opposed to the more common 3/8″ OD for that gauge. I found these at an auto parts store (I think) and they’re nice because they can hold a good grouping of wires and still bolt nicely to the binding posts.
Here you can see the additional ground wires from the ATX connector and the +5V, +12V, and ground from the accessory connectors attached to the binding posts. Also note how one of the ground wire groups has the larger style ring terminal and it is sandwiched between two of the smaller ones.
I put the case back together now, moving the fan outside on top to give more room for the extra wires inside.
What about all the other colors? Some sites say to just cut them off short. Other sites break out all the voltages to different binding posts. I decided to just leave them hanging out of the original opening but shrink wrap the ends so they don’t short on anything. I may find that I’ll need these for something later. I also left the fan speed control wire sticking out with these. I may find that I need to tell the fans to turn faster if the PSU doesn’t have its own temperature regulator.
Time to fire this thing up and test. The fans are spinning! And the LED is on! I checked the voltages and got 5.0249V and 12.540V with my multimeter. So far so good. Next I’ll start getting my stepper motors wired up to RAMPS and get some things moving.
I noticed I forgot the fan guard so I attached that carefully with connectors made just for the purpose. You’ll also notice that the screws I’m using to hold the PSU case together aren’t the original ones. Why? Well, I couldn’t find them, but I did find these cooler looking ones that I had salvaged from the frame my cousin’s dead Alienware PC case. I think they go with the things-sticking-out-everywhere theme of my PSU.