I finally ordered an ATC spindle

Project history

  1. Evaluating my choices in  back in February
  2. Decided on what ATC system to get in March. 
  3. The Usovo spindle and parts finally arrived in April
  4. Mounting spindle and cables in May
  5. Defining M06 tool change macro
  6. Next project: designing a chain link tool library

For my CNC mill, I always wanted an automatic tool changer.
I was comparing options for ages now and evaluating in detail how to attach the Omron version to my MACH3 using RS485.

Now I made my purchase.

I ordered the Usovo WZW105 kit and not the Mechatron ATC spindle.

It's enough for my needs.
The update is much less complex because it's an all-in-one package.
It's much cheaper and I can't justify the expense.
  • The Mechatron option is about 5000€ while the Usovo is about 3000€.
  • The USOVO comes with a control unit with all pneumatic, inverter and solenoid valve parts included. Thus the upgrade is a much simpler process.
  • The USOVO comes with a really cool, pneumatically operated, tool magazine. Dust proof with a tool height  probe build in.
  • The more expensive Usovo SK15 tool holders (59€) compared to Chinese SK20 (28€) don't make up that price difference.
  • With the Mechatron I could use tools up to 16mm while SK15-ER11 is limited to my currence 8mm. That's good enough for me. It only makes a difference for the surface finish when milling flat surfaces and I hardly ever do that. The stiffness of the machine limits that already.
  • Calculating a number of Feed rated and tool deflections, the higher RPM make the Usovo +15% faster then my current spindle and the Mecatron +20% faster. 15% is enough for me.
  • The Usovo option has a bit more runout but it's within perfectly acceptable limits for the type of work I do on the machine and the tool lengthes I use.


Aparently with USOVO you can not use one version of the SK15 tool holders in the other tool magazine. Up to now I was under the impression that the 59eur tool holders would fit both kinds.
So I adapt my plan to get both tool holders.

The 6 position regular tool library with pneumatic cover and tool height sensor for the 6 most commonly used tools.

Next to it the 5 position ring-holder. This one is capable of holding my 3D touch probe.
Then add an extension to the pneumatic cover of the 6 position tool holder to also protect the tools in the 5 position holder from dust.

Later design an automatic, chain operated tool library using ring holders.

Update 2:

The spindle is waiting for me at home and I'll unbox it this weekend.
Festo air pressure fittings and adaptors needed to attach it to my workshop compressor are already on their way.

home switches

I need home switches for X, Y and Z on our machine.
Because the tool magazine is at a fixed location on the machine and I need to know how to get there.

The difference between Machine and work part -coordinates (and thus work part offsets) will be a concern from now on.


Apparently you need to add a Visual Basic macro to MACH3 to handle the "M06 T" macro.
Here in an introduction to MACH3 scripting that specifically handles tool-change:

It seems to explain all or many relevant aspects in enough details for a software developer to understand. You need to replace the existing (empty) M06_start macro with a newly written one and in the crowded Mach3 setting dialog switch from "ignore tool change" to "auto tool change".

I made some notes:
Relevant tools and documentation:
Relevant system DROs
  • (System DRO list)
  • 0-5 - current location (we want this restored after a tool change)
  • 18 - current feed rate (we want this restored after a tool change)

Relevant OEM DROs
  • OEM DRO list 
  • 1200 - tool change location X (not used by default)
  • 1201 - tool change location Y (not used by default)
  • 1202 - tool change location Z (not used by default)
  • ...
  • 83, 84, 85,...88 - current location (we want to return there after a tool change)
  • 836 - current tool length
Relevant G-Code
  • G53 - move in absolute machine coordinates (G0 or G1 must be active and the current feed rate is used) so using "G00 G53 ... F300" is a better idea
  • G31 Z-10.0 F20 - you should already know this. Move at 20mm/min to Z-10 until the PROBE-input is triggered. Store position in DRO 2000,2001,2002
Relevant VB code
  • Code("...") - executed G-Code
  • GetOEMDRO(1200) - get the value of the DRO 1200
  • SetOEMDRO(1200, 0) - set the value of DRO 1200 to 0.00 
  • SetDRO(0, 0) - zero the X position (system DRO 0 = fixture offset set to value 0)
  • "X " & "1200" - concatenate the strings into "X 1200" 
  • ";" at line-endings should NOT be there
  • "While isMoving" + "Wend" - wait for move to be completed
  • "Response=MsgBox("okay?", 1) + "If (Response = 1) Then ..."  ask a yes/no question 
  • CurrentFeed = GetOemDRO(818) 'Get the current feedrate to return to later
    CurrentAbsInc = GetOemLED(48) 'Get the current G90/G91 state
    CurrentGmode = GetOemDRO(819) 'Get the current G0/G1 state
  • If CurrentAbsInc = 0 Then 'if G91 was in effect before then return to it
    Code "G91"
    End If
    If CurrentGMode = 0 Then 'if G0 was in effect before then return to it
    Code "G0"


After getting this to work, I'm really tempted to design my own carrousel tool magezin.


Keine Kommentare: