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.



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

Project history

  1. Designing+prototype cages for GH5, GH4, GH4+battery grip and GH4+YAGH.
  2. next step: add hand strap
  3. next step: machine cages from Aluminium
  4. Next project: unknown
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 talking more then 5 00€ 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.



GH5 cage - design done (inclusing adjustments for Metabones)
  • Prototype 3D printed in carbon fiber reinforced Amphora™ 3D
  • Field Trials: Currently they have to prove itself during 2 multi-day shots in May.
  • Then I'll machine one from solid aluminium later.

GH4 cage - design done
  • small modification for Metabones lens support needed.
GH4+battery grip cage - design done
  • will 3D print in PLA+carbon fiber in a few weeks
GH4+YAGH cage - TODO
  • will start working on it next week
Atomos Ninja Flame cage - Work in Progress
  • Currently working in the 3rd prototype
  • Mates perfectly and securely with GH4/GH5 cages

GH4 MK1 

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.

GH4+BG MK4 - perfect fit

The 4th iteration of the cage for GH4+battery grip was a perfect fit.
I'll now start work on the GH5 cage...

GH5 MK3 - looking good

It's not finished yet but the GH5 cage is progressing rapidly.
Very snug and comfortable fit.

GH5 MK6 - getting there

The curve of the former flash needed a few design changes on the cage.
Also all cheeseplate holes are aligned now and some accomodations have been made to fit and support my large Metz 64 AF-1 flash.
The curves look more stylish too and I just MAY be able to get this registration pin to work.
Panasonic positioned it way too close to the battery door and removed the second one.
It looks like I can't make use of these shiny new threads intended for the HDMI lock because anything in that place would prevent the user from inserting the camer into the cage or opening the doors on the left side.

GH5 MK9 - perfect fit

Took a ton of tiny changes to get this to be perfect.
I'm, ready to make a carbon fiber version next ween and use that for a few month.
Then I'll decide about making a version from aluminium.
It is designed to need machining from one side only and a few match-drilled and tapped M3 holes that can easily be done manually.

GH5 MK12 - Metabones modifications

Perfect clearance for Metabones now in my GH5 cage. (GH4 is prepared to get the same.)

Also a second angle element in the front makes this even more rigid. (flash sync socket is not blocked.)

When I started this, I thought it would take me a day or two to design a cage.
I never anticipated the amount of details needed to make this work perfectly and ergonomically.

Along with the huge Metz 64 AF-1 flash and Metabones adaptors and various lenses, the giant Rode Stereo Videomic X has also been tested to fit. 

GH5 MK12 - 3D printing in carbon fiber

I'm currently 3d printing a working model of the GH5 cage from Amphora 3D reinforced with 20% carbon fibre. I opted to not make it 100% solid because experience tells that 80% solid is just as strong but doesn't exhibit any of the practical problems of possibly extruding slightly more filament then actually fits into some closed space.

Because this filament is so abbrasive, I'm using an Olsson Ruby nozzle made from an actual, industrial ruby crystal. 

This carbon fiber cage will have to prove itself in actual use during a trip to the Ukraine at the beginning of May and an event in central Germany at the end of May.
If it doesn's show any room for improvement, I'll consider CNC milling a final cage from Aluminium.

GH5 MK12 - field trials

The final imperial screws arrived. The final metric screws are too late for the first of the two field trials.

Atomos Flame/Inferno series recorders

I also have a prototype cage for the Ninja Flame/Shogun Flame/Shogun Inferno series.
It matches the holes on my Shogun cage and mates securely with the underside of the GH5/GH4 cages. Thus for stage events I can mount the camera (with battery grip) on top of the Atomos recorder and it will stay locked in orientation and position during smooth panning motions while being above head-level during standing ovations.
The battery grip also allows me to have the battery inside the camera as a backup in case mains power/Atomos power station fails or I need to hot-swap the battery in the (accessible) battery grip.
So even if a cable is pulled, there is still an internal recording that keep on running without loosing as much as a frame.

Atomos MK4


Made the holes for HDMI plugs larger and the oversized hole for the LANC cable smaller.
Hole for accessing the power button is now rounded.
Added additional 1/4-20 UNC and 3/8-16 UNC mounting holes to top and sides.
Top mates with the 701HDV mating recesses of the GH4/GH5 cages, so a single bolt (assessible without taking out the Atomos) can quickly secure the camera on top of the recorder.

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"