Category Archives: RF45/ZAY7045 CNC Milling Machine

antibacklash ballscrew upgrade on RF45 ZAY7045 Milling machine – Part 1

Antibacklash ballscrew upgrade for RF45 ZAY7045 milling machine

I converted my lathemaster ZAY7045 milling machine (a RF45 clone) to 3 axis CNC about 3-4 years ago with whatever parts and materials I had on hand as a proof of concept experiment.  The CNC conversion was one of the best things I have ever done.  I instantly fell in love with CNC machining.  At the time, I made the decision to run with the original very poor ACME threaded leadscrews with their 0.100″ pitch, AKA 10 turns per inch.  My original conversion could hardly be called more than a down and dirty hack but it did work.  Several problems with my original approach became apparent.  First and foremost  among my cnc machine woes was the ridiculous backlash on the factory parts, especially on the x axis leadscrew.   I programmed and tuned anti-backlash algorithms in my control software that are quite amazing, but they only compensate for the backlash rather then remove it.  With the extensive use the CNC mill gets  the backlash had been growing worse steadily. When the backlash reached 0.047″ I decided it was time to replace the x axis ACME threaded leadscrew with a nice anti-backlash ballscrew setup.


A 20mm diameter ballscrew and associated ballnut were the largest that would fit under the saddle.  As is often the way with tools, bigger is better when it comes to a ballscrew and it’s load handling ability.   In this case it had to move a few hundred pounds of table, motor, vice, stock, cutting fluid, etc.  I initially wanted to stuff a 25mm diameter ballscrew under the table, but after disassembly, careful measurement showed that it would not be physically possible to use 25mm diameter ballscrews.  The new 20mm ballscrew will have a metric thread pitch of 5mm, roughly traveling twice the distance per revolution as it did with the original acme leadscrew.  This is not a problem as the CNC software I use to drive my CNC mill can easily compensate for the change in the leadscrew thread pitch.  The calculations to determine the new movement per step are basic and straightforward.


I don’t intend to wax poetic on the variety, quality, and types of ballscrews available. Plenty of companies offer excellent reviews of Ballscrew engineering calculations and selection criteria.  I chose to use a 20mm ballscrew with a 5mm pitch (Part #: SFU2005-C7 ) of 975  mm in length, available from kellinginc cnc. See the dimensions and specs below.

detailed specs for the SFU2005 ballscrew2005-c7-975mm ballscrew end machining drawings

Dealing with Kelling Inc. is problematic at best. I have made four separate purchases from them, and twice I have had problems.  One time they sent me the wrong part and then tried to make me use what they sent instead of what I ordered in spite of it not working for my application.  Finally though,  Kelling Inc. resolved that particular issue by sending me the part I ordered but it was a hassle to get them to do so.  With the ballscrew, my issue was that unlike other vendors they do not including the 15mm x 1.0mm nut that threads onto the ballscrew to clamp it against a 5202 double angular contact bearing.  Having used higher end ballscrews for industrial repairs and machine designs in the past experience shows that other vendors include this nut (a sub 1$ part) with their ballscrews.  Kelling inc’s answer when I called to discuss this issue was that the nut is not included, nor available for sale individually, but I could buy their fixed end bearing mount BK15-C7 (Fixed End) for  $82.95 and then get the 15mm x 1.0 mm pitch bearing retaining nut I needed. I was not about to spend $83 for a $0.87 part.   With no solution offered by Kelling Inc. I set about finding the rare and elusive 15mm bearing retaining nut.  Scouring the net and my supplier database from the day job I found an industrial supply company that would sell me a few of the 15-1.0mm bearing retaining nuts manufactured by whittet higgins, part number KM-02. I ordered my 15mmx1.0 nut from the local KAMAN Industrial Technologies office down in Manchester as they would sell to me with no minimum order fee.


The ballnut came pre-installed on the SFU2005 ballscrew.  It was installed flipped 180 degrees from what was needed to work with my design for my CNC milling machine.  Removing a ballnut can be a lesson in frustration and hunting for hundreds of small ball bearings on the floor if you are not careful.  The short lesson on how to correctly remove a ballnut is as follows.  Machine a removal guide that fits over your machined ends and is the same outer diameter as the minor diameter of your ballscrews threading.  For my SFU2005-C7  ballscrew this minor diameter is 18mm.  I turned down a piece of sch 40 PVC pipe on my 100 year old lathe (yup it’s on the to be replaced tool list. As an  aside, it will go to an industrial museum as a donation when I do eventually replace it with the shiny new 14×40 Lathe I have already picked out for myself).  In the right hand pic above you can see that even though I used a ballnut removal tool, I still removed it over a tray.  This is just in case something goes wrong and all of the small steel balls fall out.  Better to be safe then sorry here, so use a tray.

   Upgrading to ballscrews on a RF45 ZAY7045 mill drill

I designed the new ballnut mount  to fit the original 8mm mounting bolt holes on the saddle.  My ballnut mount design is such that there is no need to machine the ballnut. I did not want to risk contamination of the ballnuts internal raceway and bearing mechanism.   my design lowers the ballnut below the raised nut mounting boss on the saddle assembly. There is very little clearance in this set up, but it works well and does fit.   Here are technical drawings of my design: RF45 ZAY7045 mounting block for SFU2005-C7 ballscrew – sae units & in metric units   RF45 ZAY7045 mounting block for SFU2005-C7 ballscrew – metric units

As you can see in the upper left photo, I had to clip the corners of the ball nut mount.  This is not reflected in the above drawings, but you should machine the corners off the ballnut mount before disassembling your machine if you copy my design.  I did it by hand with a carbide burr and hand files.  Also note that I have not yet installed a zerk fitting into the ballnut. I hope I can find a tight M6-1.0 90 degree Zerk fitting that will fit and clear the table.  For now I plan to use grease on the ball nut.  In the future I will add a self oiling system to the CNC machine and will convert the ballnut over to oil lubrication at that time.  Oil lubrication is superior in that it tends to wash away contaminates from the ballnut rather then collect them as grease does.

That is all for part 1 of the ballscrew upgrade on my CNC milling machine. This post continues in part 2.

My low cost three axis CNC controller


three axis CNC controller build - insides

I recently decided that it was high time to upgrade the original electronics I built for my CNC milling machine conversion on a RF7045 style milling machine.  The original electronics, shown below in the mess of wires and full size metal enclosure,  used a unipolar 4 axis control board and huge banks of power resistors to limit current.  It was poorly thought out and an ugly mess, but fully functional  The drawbacks to the original set up were primarily excessive heat generation (overheating in the summer) and an inefficient design.  Unipolar driven stepper motors produce considerably less torque then the same motor driven by a bipolar controller.   It was also a huge ugly mess with wires everywhere and heat sink banks outside the box.  The upgrade to the new CNC control unit was all spawned by Pololu’s black friday super sale on all of their great robotics and motor drivers.  If you haven’t been to Pololu’s website, definitely check out their products. Very good stuff at a good price, and on Black Friday 2011 a very very good price.


original unipolar four axis cnc controller hooked up to the RF 7045

The new low cost three axis CNC controller uses three Pololu A4988 stepper drivers in what I call the “Tie Fighter Configuration”.   I’ve  sandwiched them perpendicular to two larger circuit boards creating a channel for air flow.  With a   high velocity cooling fan and a custom heat sink mounted to Allegro’s A4988 microstepping bipolar stepper motor driver chip I hope to use these at or close to their 2.0 Amp max rating.  Eventually, when my reprap 3D printer is completed, I’ll print out a fan shroud to further increase airflow over the chips.  The data sheet for the A4988 is here,   pdf of the website for the pololu board is here,  current pinouts for board are here.  (data for me in the future)  As I continue to add or improve the CNC controller I will update this post.

million out the control panel for the ver 2.0 cnc controller  I/O board for the low Cost CNC controller

 The first version of my cnc controller had wires coming out of it connecting to the steppers.  This turned out to be terrible in use and was very unclean.   Version 2.0 had to have external mounted plugs for all of the external connections to the stepper motors, limit switches, power supply, and computer.  A bit of research on connector dimensions, a bit of CAD design, converting CAD to g-code (cnc machine program language) and the cnc machine running on the v1.0 cnc controller machined the next generation I/O board you see in the sequence of images above on the left.   In essence my CNC machine built parts to upgrade itself.  I think this is the coolest thing ever!  Having a machine that can make upgrades for itself.  Not quite self replicating like the Reprap 3D printer project but still pretty exciting stuff. As a kid this was the thing of Science fiction and not reality.

Connections to the milling machine and power supply labeled

The connections are labeled in the above photo showing the pre-testing assembled unit.  Post testing I realized I should add an on LED to the top as a main power indicator,  along with an LED indicator for the cooling fan power.  I ended up not being able to scrounge a usable DC/DC power supply chip.  I wanted to use a DC/Dc converter to  internally converting the 33V from the power supply into 12V for the cooling fan.  Instead I ended up using  a wall wort (aka plug in dc transformer) to supply power to the cooling fan and added an external plug jack to the case.   The bad part about this set up is there is no interlock.  In theory,  I could run the controller and not have the cooling fan powered up resulting in some sort of thermal meltdown.  The Ver 1.0 CNC controller had dozens of similar issues.  I had hoped to avoid this situation in this unit.   I plan to order a dc/dc converter  from Digikey in the near future and add the power for the cooling fan internally to prevent the possibility of thermal meltdown.

The above picture is of the “Tie Fighter Configuration” I’ve created.  The three little Pololu A4988’s are stacked in between the top and bottom boards.  This should create a nice cooling duct for the air supplied by the cooling fan to run over them to remove excess heat.  I will also make some copper u style heat sinks and mount them with Akasa double sided heat sink tape.  I’m hopeful that with this set up I can drive these little boards at close to their 2 amp max rating.  The CNC machine also made the aluminum bracket that mounts the boards to the right side of the case. More self upgrading on the machines part.  The Pololu’s are being run in their most basic configuration, ie. full step, with only step and direction imput from the computer to each board.   The three axis CNC controller also has a built in NC (normally closed) chain of limit switches and an E stop.  This set up uses a pull up resistor on the computer side.  When any one of the grounded NC switches is hit the output goes high and the computer instantly shuts off power to the motors sensing a mechanical limit or emergency.   Limit switches and an Emergency stop switch are necessities on any CNC controlled machine.  They keep  those G code programming errors from breaking something.  I’m using pc side controls, rather then the on board enable/disable built into the Pololu A4988 boards.

New three axis CNC controller in place and connected


Here she is, all hooked up and running the machine.  The Akasa heat sink tape has not arrived in the mail yet.  The CNC controller was run at only 0.7 amps for “testing” purposes.  Everything hooked up and worked well.  I was half expecting something to go up in smoke.   I am very pleased with the considerably smaller and less complicated version 2.0 CNC controller.  This new unit will drive the motors with about 40% more oomph which means faster machining time for me.    This is an ongoing project and I’m sure  I will continue to add and evolve in the coming months.  I’ll post more as I make changes.