Wednesday, 22 September 2010

Up and Down: z-axis pictures

Yesterday, pieces of MDF, some rods, and a bunch of bolts turned themselves into a working z-axis just by magic (and me, spending a day in the garage). Together with the Arduino, stepper motor, and driver, I am proud to say, my one-dimensional cnc router is almost complete...

Z-axis operational. The Logitech speaker at top right
is a marketing department requirement
and otherwise has no engineering benefit.

I only have little background in woodworking (some cupboards and shelves), so what completely scared me was to meet the required accuracy with drilling holes to keep things parallel/perpendicular. We're talking linear bearings, not cupboard doors. I guess I re-invented a few woodworking tricks on the way to make it happen. I quadruple-checked everything before cutting and drilling, so it took some time.

It is difficult to convey the feeling you get when, after drilling 24 holes, you insert the shafts into the linear bearings and the end-mounts, and things are actually parallel and work and slide nicely. Phew ! First time lucky.

Effectively, there was only one deviation from the engineering plan posted previously. The hose clamps I use to connect the motor axis to the threaded rod have a screw stick out and I had to widen the hole of the stepper motor mounting plate. I couldn't just cut all the way through, though, because I would get too close to the stepper mounting holes, so I had to cut a ring 5mm deep into the 16mm MDF around the already existing main hole. A new challenge, but it worked. I wish I had a router at that time. Addendum: I'll have to do the same for the small square plate on top so it can move up all the way towards the stepper motor.

Hose clamps are little trouble makers.

The stepper motor mounting holes (the ones on the motor, not the MDF) presented their own challenge: They are so close to the stepper motor body, it is all but impossible to hold nuts in a position that allows passing a bolt through them. In fact, I can't even put the bolt through from the stepper motor's side as the bold head is too large. This made for some interesting solution for the two bolts that hold the stepper in place at the bottom end as they are at the level of the base plate.

Using metal clips to hold down the ball bearings seems to work fine (so far). They resist a quite reasonable manual force to pry them out. We'll see what that means in the real world...

Feels sturdy. I could cut a groove below
the bearing should it become a problem.

The M12 nut is hidden below the square MDF board. It feels stable and it sits in a small groove in the MDF board, so it isn't moving at all. The biggest problem, though, is that the nut has a fair bit of free play along the threaded rod. This is probably the biggest disappointment at this stage. It might not matter too much for the z-axis, as the weight will hold things down, but for x and y this might not be great. My friend Caliper says it's about 0.65mm.

A tightened nut.

I also tried some "new and stylish" ways to use bolts. I know, old hat for you, but new to meee...

It's almost like IKEA. Except, this time all parts came in the box.

Finally, last night I had a little time to quickly setup my Arduino, stuck a temporary cooling "device" to the G251 and typed out a quick stepper routine. Gingerly I plugged in the power supply, brazing myself for any sorts of mechanical or (heaven forbid!) coding errors. But no, things worked, and the stepper pulled the sledge calmly (at half a rotation per second, ie, 1,000 micro-steps per second) along its intended path.

Arduino in (micro-)control.
The red wire on the breadboard is my
poor-man's E-Stop. I did hold onto it tightly for a while.

The latest in cooling technology. I believe Intel
will contact me shortly to negotiate rights.
(Yes, there is cooling paste. I'm a professional!)

Now it's time for some Arduino Stepper Motor Interrupt Service Routine programming to "push the speed envelope".

The need for speed - limited only by a 1.75mm pitch threaded rod...


Andy said...

Looks great. I liked the home-made coupling. Would you be willing to post or e-mail me your code? I am not much of a code-warrior and it would save me a lot of time. My power supply arrived yesterday and I'm planning on starting to put everything together today. I'm very excited for the first trial run.


Thomas said...

Thanks. The coupling was my dad's suggestion. The stepper-motor side consists of 3 hoses stacked inside each other.

I'll be posting more Arduino source code on the blog as it becomes usable.

What hardware are you using?

Andy said...

So far this is what I have:
Materials used:

•36" ball bearing slide with belt drive system & stepper motor, from e-bay
•Stepper motor power supply: 16034PS 36V 4.2A, from
•Stepper drive: Geckodrive G251 from
•microcontroller: Arduino from hacktronics
•display: LCD arduino kit from hacktronics

It's just going to be a single axis system, so it'll be much more simple than your CNC router.

I'll be posting more details on my blog as things move along:

A friend and I are planning on building a CNC router similar to what you are building. Watching your progress plus my simple single axis work project will really smooth our progress on our eventual 3 axis CNC project.

Thomas said...

Andy, do you have any details on your belt-drive system from eBay? I had a look around a couple of shops here but couldn't find anything suitable. I was considering using this for the x/y axis.

Andy said...

Sure, this is the exact system that I purchased:

That seller has a fair amount of equipment for sale. I believe the origional asking price for the linear system I purchased was $250 or so, and my offer of $75 was accepted.

I think my search terms on e-bay were "linear motor." It seems like there is a fair amount of systems out there, but the price varies wildly. It seems like many sellers are asking pretty unreasonable amounts for their used equipment.

Thomas said...

Andy, blog-posted you some code. Let me know if my scribbles are powerful enough to reach across the oceans to move things.

Your linear actuator looks great. Expensive postage to Australia.


Jelle at protospace said...

I'm far too late to the party, but your axis look way over-engineered. I deduce from your MDF usuage you are not looking for very fine precision. In that case, bronze bushings instead of linear bearings are fine; you will have much more room for error if you just glue them in with a dab of epoxy (and some wood dust). likewise for the way you connect your sliding shafts: a pillow block is nice, but you could have double drilled your MDF endplates and anchored your shafts in that. A drill press is the only necessary tool (but a belt sander would be nice too).
For the coupling of the stepper to the leadscrew: if you have access to a lathe, just dill a hole in it of the correct size, and glue it with epoxy. Some rubber washers can absorb the wobble.
You should have a look at the mantis router as designed by David Carr (or have a look at the derivatives at

ball bearing slide said...

Wow..wonderful images of ball bearings. The PCB (printed circuit boards) and circuits shown in the last two pictures about cooling technology reminds me the days I used to make sholdering the circuits during my engineering. I used to make circuits with microprocessors, microcontrollers etc.