I finally ordered an ATC spindle

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.

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.



Camera ball leveler

I had a spare minute and designed my own camera ball leveler.
I'm thinking about machining 2 or 3 of these in different sizes for personal use.
There are different commercial designs out there but due to little demand they are all rather expensive despite their simple nature.


Machining my own GH4/GH5 battery grip

I'm waiting for my pre-ordered Panasonic GH5 and am looking at different cages for it that are coming up.
Problem is... no cage has all the features I like and the ones announced now are terribly expensive.
We're walking >500€ for basically a piece of Aluminium.

So I'm testing the waters about making my own.

The plan 

I don't have a GH5 yet, but I have a second GH4 that has no cage yet.
So the idea is to make a cage for the GH4 first and then modify the design for the GH5.

Also I want one feature in there, that no current cage has:
I want a cage that works with the battery grip added. So I can rig up the camera and switch batteries from the side while the camera is recording.

However because the dimensions and ergonomics are difficult to get perfect, I'll make a conventional cage first and then create an alternative lower assembly that accomodates a battery grip.


I took a 3D scan of a GH4, found that the dimensions are completely off and scaled it differently in X, Y and Z to fit a real GH4.
So here I am, 3D printing an oversimplified cage and fitting it to the camera to see where the dimensions of the 3D scan are off and I need to shift things around. Also this means I can hold it in my hand and see if there is any chance for the ergonomics to work out.

Overall a surprisingly good fit.
Some minor adjustments to the battery- and card-doors needed.
Grip needs to be slightly smaller to be comfortable when reaching for the record-button.
Planned on how to do the battery grip support and incorporate a rod-holder and Metabones support.


The second prototype only had minor issues with allowing the flip out screen to fully tilt, battery door, 2mm additional space for the flash,...



The third prototype needs some minor tweaks at the battery door and has a few cutouts that are a few millimeter larger then they need to be.


 The fourth prototype finally has 1/4-20 UNC and 3/8 UNC cheeseplatet to mount equipment. It also features holes for the 2 registration pins that keep the camera aligned and has 1/4" and 3/8" holes in the bottom to mount it to a tripod.


The corners have been rounded and the registration holes in the bottom changed slightly.
This should be the last version before starting on a special configuration that supports battery grips.
To not add too many new pieces, it will probably not be an attachment but have different sides and a different bottom from the regular version. This requires more material but actually only 4 screws to change from one version to the other.
Okay, I messes up a meassurement on the bottoma and had to do another iteration.
Taking the opportunity to give the 1/4-20 UNC camera thread the proper 82° tapper, including 2 unused M3 threads for a possible wooden grip (requires a modified right side) and labeling the name of the camera type this is intended for. After all, the GH5 cage will look very similar.

1/4-20 UNC thread and both register-pins fit.
Battery door opens.
SD-Card door opens.
Flash unfolds.
Screen rotates fully in both dimensions.
All access panels open.
All buttons reachable.
Camera can be held normally and comfortably.
Lens release button easy to reach.

Next step:  Creating a second configuration for GH4+Battery Grip


I finished the very first alternative configuration of this design that is supposed to fit a GH4 + Battery grip.
Also....my GH5 has shipped.

I hope to print the BG1 prototype on Monday and check how well it fits.
If things go well I can start the adaptations for the GH5 right after the GH4+BatteryGrip version is considered finished.

Stay tuned....

more to come soon....


Why I'm NOT using GWizard by CNCCookbook anymore

My $230 GWizard lifetime license was revoked on Monday and I'm now investigating HSMAdvisor (Desktop) + FSWizard (Android) for $97 (license limited to 2.2KW). All this despite actually finding GWizard to be a useful tool to have.


Update: Looks like I'm not the only one.

Timeline of events

2017-02-15 start of a 30 day trial.
Email advises me to write to a specific email address if I have any questions.

2017-02-23 Asking about 3 particular issues I found when trying to calculate tappared tools.
No response.
  • Can't enter any decimal places for tapper angle
  • deflection calculation is obviously wrong for tapered tools. (At this point I still suspected human error on my side)
  • optimize cut width doesn't work at all for tappered tools

Later another issue pops up:
  • With POM (low melting point plastic) the software advises me to max out my RPM. This causes molten shavings. Cooling was set to "air only" and I did cool with 2 bar of air pressure directly to the tool.

2017-02-20 purchase of a lifetime license for $228.99 because it has still proven to be a useful tools and if need be I could even work around or live with the shortcomings identified in the trial period.

2017-03-01 2 newsletters despite me not signing up for any newsletters. Trying to read them on a phone proved impossible because the advertisement blocks 90%-100% of the screen.
I'm reporting the terrible UX design of newsletter and blog with screenshots taken from a particularly large and high resolution phone to illustrate the issue.
(I'm sure to have missed a number of newsletters that I can't date here because I have already deleted them.)

 I was asked for a product review via email.
Due to the open issues visible to me, I gave a 3 star rating. Balanced in the middle of the scale. Neither particularly good, not particularly bad.
"The calculator is good. It always recommends maximum RPM for plastics that simple melt at these levels and calculates the same deflection for conical cutters and for feeble cylindrical micro tools with the same tip diameter. You are still constantly bombarded with advertisement for the g-wizard on the website and now also via email. You can ask questions about bugs but don't expect any answer."
Nothing personal, all facts, all true.

Suddenly I get a refund notification.
There is no accompanying communication explaining why this happened. I'm suspecting that I may have accidentally pushed some "refund" button instead of "close survey" and am trying to get in contact with anyone at CNCCookbook to get an explanation and hopefully reverse this.

No answer, so I look around for other contact details.
I find a bob@ email address and a Google+ profile of the (sole?) operator of CNCCookbook.
(No idea who "bob" is at this point but I don't care at this point either.)

2017-03-09 Finally a human answers.
  • Bob Warfield, the site owner himself simply terminated my license and it was due to the review 3 days earlier.
  • Yes, my issues are already known and being investigated. No explanation why nobody responded in all these weeks to tell me this simple fact.
  • It was apparent that he takes any critique on his calculator or website/newsletter personally. (A professionally acting software developer would think of a bug found as a very good thing since it can now be fixed.)
  • He was also exaggerating what was being written well beyond the meaning of the words. This and the lack of communication before leads me to believe that he is very bad at customer and there is no customer care staff taking care of his claimed 60.000+ users on the blog.
  • He gives his linkedin page as credentials, boosting about having founded 7 companies. (No info about how many of them failed.) From there I see that he never got his master/diploma degree and only worked in management all the time. No experience as developer, UX designer or customer care documented.


Using Omron MX2 / WJ200 in Mach3 using modbus via RS485

This is just a note for myself on how to set up the Omron MX2 (identical to the Hitachi WJ200) to be controlled via RS482 from MACH3.
It is based on:
 I have not tested these with an Omron MX2 yet!!!

Wiring up the VFD:

RS485 wiring:

T+ = SP
T- = SN
(VFD only support half dublex)

RS485 register settings:

Group C
C096 "Communication Selection"= "00-Modbus RTU"
C071 "Communication Speed"= XXX
C072 "Modbus Address"="1"

Group A
A001 "Frequency source" = "03: modbus network"
A002 "Run command source" = "03: modbus network"

Click "Download All (PC->Device)"
Save EPROM: yes

MACH3 Config->Ports and Pins:

[X] Modbus Input/Output support
[X] Modbus Plugin support
Restart MACH3

MACH3 Function Cfgs->Setup serial modbus control:

Port Number = RS485 serial port number
Baud rate = XXX
Timeout > 30ms

Cfg #0
[x] enabled
Device: "start/stop"
Adress Modbus(Var):  0
Refresh Timeout: 25ms
"Output Coils"

Cfg #1
[x] enabled
Device: "frequency"
Adress Modbus(Var):  1 (stated as 001h in VFD manual, chapter B-4-2)
Refresh Timeout: 25ms
"Output Holding"

Cfg #2
[x] enabled
Device: "trip status"
Adress Modbus(Var):  3? (stated as 004h "Inverter Status B" in VFD manual)
Refresh Timeout: 25ms
"Input HoldingCoils"
("3" is correct because it is the third register. 0x001+0x002 are "1"???) 

[X] Modbus Run
You should see: "no error"

MACH3 Operator->Brain Editor #0:

DRO-Value = 99-RPM Ratio

Select it
"A*40000"  for a 400Hz spindle with .01 resolution
"A*100000"  for a 1KHz spindle with .01 resolution

Select it
"Serial plugin enabled"

MACH3 Operator->Brain Editor #1:

"Output 1" ("spindle run" depends on your MACH3 setup)

Select it

Select it
"Serial plugin enabled"

MACH3 Operator->Brain Editor #2:

"Serial plugin enabled"

Select it
"Compare Immediate"
"equal to"
"2"  (0x003 "Inverter Status B"="2 tripped" in VFD manual)

Select it

Save brain file

MACH3 Operator->Brain Comtrol:

reload all
select brain file
[x] enabled

MACH3 Config->Spindle Pulley:

Check "max speed"


4th axis steady rest (DE: Lünette) for my CNC

Today I made myself a small steady rest for my CNC.
It's very easily 3D printed and intered specifically for milling.
This is because you push down on the part and only need to support the underside.
Also it mounts to the T-slot table of my YOOCNC 6040+Z using M6 bolts).

I did this because I am planning some very agressive milling and don't think that my tailstock alone will be enough to support the stock during roughing.


ATC choices

I'm thinking of upgrading my YOOCNC 6040 desktop CNC mill to an automatic tool change.
These are the options I'm evaluating:

Option 1


  • 2500eur
  • 27.600RPM
  • 700W (0.15Nm)
  • SK15-ER11 (tools up to 8mm)
  • 5xSK15 included, +60eur for additional ones
  • 1.5Kg
  • 0.01mm runout
  • can drive a pneumatic tool magazin.
  • needs 8 bar minimum (Mechatron pressure booster required)

Option 2

Mechatron Vorsatzwechsler

  • 1000eur
  • 24.000RPM max
  • existing 2.2KW spindle (up to 0.9Nm)
  • SK10(ER11+ER16) 
  • adds +1.7Kg to the existing 6Kg spindle
  • make the spindle too large and top-heavy for the gantry
  • needs 10 bar minimum (Mechatron pressure booster required)

Option 3

Can I get the ATC-8022-42 instead? (2.2Kw 42.000RPM, HSK25)  - 6500CHF -> too expensive
  • 3900eur
  • +150eur per SK20 toolholder 
    • runout < 2µm
    • or 50-60eur for ER16, ER20 and ER25(<=16mm) collets
  • +27eur per ER16 collet with low runout
    • +10eur per ER25 collet at Usovo
    • or cheap in China
  • 30.000RPM
  • 2.2KW (0.7Nm)
  • SK20-ER16 (tools up to 10mm)
  • SK20-ER20 (tools up to ??mm)
  • SK20-ER25 (tools up to 16mm)
  • 8Kg (+2Kg over the existing spindle)
  • has it all.
  • needs only 6 bar
The option to use cheap SK20 tool holders for drills and roughing tools and precise ones for finishing tools is quite interesting.

Option 4

Chinese spindle GDL80-20-30Z/2,2
  • 2400eur+customs+19% import sales tax = 2900eur + customs
  • 30.000RPM
  • 2.2KW
  • SK20 (15°)
  • 8Kg (+2Kg over the existing spindle)
  • needs only 6.5 bar


Apparently there are cheap 60.000 RPM spindles with no tool change.
Obviously for plastic and wax these would cut down a lot on milling time.


Do I need 2.2Kw to do the full 30.00RPM in POM, wax and soft wood?
700W should be enough but there is little reserve.

source: http://www.kimla.pl/en/HowtochooseaCNCspindle
Aluminum, plastic, wood or laminate with
cutters up to 5mm  - 0.8kW 24,000 rpm is sufficient,
cutters up to 8mm - 1kW spindle,
cutters up to 12mm - 3.3kW spindle

Steel: (15,000 to 18,000 rpm) cutters up to 10mm - 3.3kW spindle
cutters up to 12mm - 5.6kW spindle
cutters up to 16mm - 7kW spindle
cutters up to 20mm - 10kW spindle.

Drill in steel - more powerful spindle because
6mm drill at 2000rpm with the 5.6kW 18,000 rpm spindle

You cannot compare the powers of spindles with the powers of conventional milling machines because they have gears and there is no need to have such a torque reserve.

How much of a time difference are 24.000RPM vs 30.000RPM in the end?

What tools >8mm would I want to use? 
I could use 16mm instead of 10mm planers.