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.


Slow progress on CNC upgrade

I'm currently doing a lot of upgrades to my YOOCNC 6040.
However every step takes at least twice as long as planned.

back access

My CNC mill is inside a wooden enclosure that keeps the chips from spreading all across the workspace and gives me a place on top of the machine for control box and power sockets as well as a place to attach the articulated touchscreen computer running MACH3 to.
To get to all the parts, I need access to, I had to cut a wide hole into the back of this enclosure.
(Particularly one of the cable chains runs down the back.)

Status: DONE

cable chain

As a first step I upgraded the cable chains. 
Because I would add a lot of cables for the end-stops, I wanted cable chains that can be opened up to access the cables within. However I ordered the wrong ones and they turned out to require too much of a bending radius. So I had to order different ones from Motedis.

Status: DONE

end stops

The first real upgrade are end stops.
I had the parts for these in the drawer for years but never got around to mount them.
There are these wonderful end stop mounts from David Ryan. However I soon found out that 2 of them required drilling holes into the machine.
So I designed improved ones that used existing screws and the T-Slots on the side of the work table.

Problem is, the Purelogic PLCM-B1 requires me to provide my own power for all inputs. 
Up to now I had a 5V wall wart style power supply hooked just for the tool height probe.
This required me to create an external box that would distribute and provide power for every input.


Beefy A axis

My old A-axis had a longneck stepper motor on a wobbly 1:8 XL belt.
The belt was the wrong kind to begin with (XL belts are for driving things without changes in direction.)
I replaced it with a chinese 100mm K11 chuck on a 1:50 harmonic drive.
Nothing difficult here except to source these damn chinese plugs used in the YOOCNC.

Status: DONE

A axis end stop

I wanted a homing switch on the 4th axis too. So I designed a mount for an inductive switch and a way to trigger it using a washer.


3D Touch probe

I got myself a nice Usovo 3D touch probe from the Sorotech shop.
Problem #1 is: It's normally closed while my tool height probe is normally open.
Problem #2 is: When open and supplied with 5V, it still runs at 1.6V while the tool height probe runs at 1.1V. (Both are very imperfect switches)
The PLCM-B1 optocouplers interprete 1.6V as HIGH.

So I'm currently soldering some CMOS NAND gates to
a) Trigger only above 2.5V
b) Combine both probes as NAND(tool heigh, NOT(3D touch probe)) into the same input channel for MACH3.


ATC and compressor

For serveral years I had my eyed on an automatic tool changer from USOVO.
However I could not find silent compressors doing 8 Bar at the low point of hysteresis.

Now I ordered one here.
It is advertised to have 10bar pressure in the tank and provide 8 bar.
...Or so I thought.
That advertisement from Frada-Shop is WRONG.
It starts up at just 5 bar and at 8 bar the safety valve goes off.
The tank (rated at 13 bar) will never, ever reach 10 bar.

Frade-Shop has not reacted with any word about this discrepancy in their advertisement and the delivered product. The only reaction was "your tank is too small".

I'll try to get it to start at more then 5 bar and hope for the pressure-booster that Sorotech wants to announce soon.



One thing I want to add at a very late stage is bellows to protect the Z and Y axis from dust.
Dealers on AliExpress even have some cool looking metal reinforced bellows.


Servo drives

Another upgrade I want to do later is to replace the stepper motors with servo motors.
They have become quite cheap in china lately.



fix for broken OpenBuilds "End Stop Kit" plates

The mounting plates that come with the OpenBuilds "End Stop Kit" are crap.
  • Either you force the M3 bolts through the 2.5mm end stop and find no place to fixate them in the unthreaded 3mm holes in the plate
  • or you thread the M3 bolts through the plate and fixate them in the end stops...but then you have the head of the plates between the plate and the aluminium profile and things jsut don't aline flat.

I present 2 versions.
  • The "thread cutting" version assumes you 3D print the part and cut an M3 thread into the mounting holes for the end stop.
  • The other version has additional space for the head of the M3 bolts.
Both are also properly sized for the mounting holes of the end stops and don't use long holes to adjust to unknown sizes. The end position of the arm is always slightly beyond either the right, upper or lower side of the plate. (whatever position you choose for the switch)


Using a 3D touch probe in MACH3

I finally got my 3D touch probe!
Now I can finally probe
  • the exact center of my 4th axis (left+ride side in Y and probed height minus radius at the Y=0 position)
  • probe the A=0 position on my 4th axis be turning it until chuck #0 makes contact at a known probe location in X,Y,Z
  • check the orientation of non-conductive blocks of materials and rotate my work coordinate-system accordingly
  • probe the height of the top-side of non-conductive materials
  • check that I inserted a cylinder into the 4th axis straight
This also means that I can pause a long running job (when my weekend in the hobby workshop ends),
switch everything off, come back the next weekend and  home everything within 0,01mm to resume.

I just soldered on the connector (same connector I use for the existing tool-height probe) and have yet to test it in the YOOCNC6040.
It is normally closed but luckily my normally open tool height probe is modified to be kept high with an extra +5V line and gets pulled to GND on contact with the spindle. (The actual plan was to isolate the frame of the CNC and pull that to +5V. Then any metal to metal contact of the spindle to the machine would be an automatic E-Stop but I didn't get that to work due to the stepper casings being at GND and having conductive contact with the frame.)



Adding homing-sensor to 4th axis on CNC


I have a 4th axis on (both) my CNC milling machine(s).
I want a home switch that indicates a perfect 0°.
So I can stop a job, switch off the machine and later home all 4 axis to their homing switches, jog to the last position and continue the program.

Later I'd like to do the same for a planned 5th axis.


Ordered the sensor. Not started doing it yet. Stay tuned... (this blog posting will be updated)

Hardware choices

This is my 4th axis. (50:1 harmonic drive gearbox with a K11-100mm 3 way chuck attached.)

M8 2mm sensing DC 5 V NPN LJ8A3-2-Z/BX-5V zylinder induktive näherungsschalter sensor arbeitsspannung 5VDC spezielle für MCU

This is the sensor "Finglei Electric LJ8A3-2-Z/BX-5V" (5V NPN induction sensor) I'd like to mount as a home switch.

Why inductive?

The sensor needs to not block the movement of the 4th axis past 360°.
For a simple, mechanical switch that can be solved by attaching a ramp to the disc.
However it also needs to allow movement in the opposite direction. That doesn't work well with mechanical switches.

Optical switches can get confused by dust and shavings.

So I have chosen an inductive sensor as the most reliable and simple option.


I have taken my information from this tutorial and this discussion.

  • connect blue to GND
  • connect brown to +5V supply voltage for the sensor (I could have used a 48V sensor but I wanted to play it safe)
  • connect the remaining black wire to +5V via a 100KOhm pull-up resistor
  • and also connect the black wire to the input.
My PLCM-E3P CNC (used with the PLCM-B1 breakout board) provides me with 15 inputs to use here. They can work with 5V signals.

You can't use the +5V from the stepper-enable outputs to drive the sensor inputs.
(e.g. for a tool-height probe).
I had to add an extra 5V supply just for that existing tool-height probe.


My plan is to
3D print a mount for the sensor on the side of the gear box.
(Possibly using the slots that already mount the gear box to the table to not accidentally drill into the gears inside)

Then attach a modified wascher to one of the bolts securing the chuck to the plate to detect when it passes the sensor once every 360°

The sensor must have a gap of no more then 2mm to it's metal target.
Update: In  MK2 I forgot to leave clearance for the heads of the M6x30 machine bolts. So I had to change the design slightly for MK3.

Here is the 3d printable design of the sensor holder:


Multi Axis G-Code generation with CNC-Toolkit

Yes, CNC-tookit is ancient. But since Fusion 360 doesn't do the job...so well...
Here are my notes about how to get cnc-tookit running on a modern Windows 10 and create 4 and 5 axis toolpathes with it.

I may add screenshots to illustrate my notes at a later point.


I'm trying to figure out if and how to generate 4 and 5 axis G-Code in CNC-Toolkit to run on my heavily modified YooCNC 6040 machine.

Getting the software

  1. get GMax
  2. get CNC-Toolkit
  3. The registration website for the (always free) GMax software no longer exists... GMax registration workaround 
  4. I haven't looked at these yet  

Setting up Gmax

Before you start, you should select the system unit of meassurement in Gmax using Customize-Preferences... and then General-System Unit Scale.

Geometric assumptions

Some assumptions I do about the CNC machine:
  • We use a 4 axis machine with the A axis mounted on the bed of a carthesian CNC mill.
  • The A axis is running along the X axis (along Y it would be the B axis after all)
  • The center of rotation is at Y=0 Z=0
  • The stock starts at X=0 and ends at X>0
  • The stock is cylindrical. 
  • positive Z mean "up" from the center of rotation towards the spindle.
Further assumptions:
  • We use a ball nose cutter
  • We are only interested in FINISH-passes. (For roughing 3 axis milling of X+A+Z is enough)
  • STL-file and tool sizes and machine coordinates are in millimeter

From STL to G-Code 

I used this tutorial to make these notes.

  1. Make sure your object is already scaled to the right size.
  2. Orient your object along the Y axis.

Convert STL to 3DS

GMax doesn't seem to understand STL or the unual CAD file formats.
So we need a converter.

3D Exploration 1.5 can be found here : cnczone.com/forums/attachment.php?...
(Yes, you need a user account in the CNCZone forum.)
In Windows 10 you need to install this using compatiility settings.
It is discontinued but you should of cause still register it for 40.77 € +19% sales tax = 48.52 €.

If objects in the original file exceed the 64,000 faces per object limit for .3DS, it splits info face groups that you need to reunite inside Gmax using the Editable Mesh 'Attach' or 'Attach List function.

  1. Open "3D Exploration 1.5".
  2. Select your file on the right side.
  3. Select File-Save As... and the 3ds file format.

combine face groups

On the right side you have  a number of tabs,
  1. In the first tab, you can assign a name to your objects to identify them.
  2. In the "view" tab with the monitor icon, you can hide objects that clutter your view and render them as solid objects.
  3. In the tools tab, you can "attach" and "attach list" multiple face groups into a single mesh.

Load model

  1. File-Import your convertes mesh.
  2. Make sure it's oriented along the X axis due to limitations of cnc-toolkit.
  3. Note down the size of your stock.
  4. Select your object and in the top right panel, give it a name.

Run cnc-toolkit

  1. Run the "CNC-Toolkit-4.34b.ms" MaxScript file using the menu.

Next select your machine type.
  • XYZ is a 3 axis mill
  • XYZA has 
    • a 4th axis mounted on the work-surface that rotates around X
  • XYZAB has 
    • a 4th axis mounted on the work-surface that rotates around X and
    • an additional 5th axis "B" mounted on the Y gantry, rotating the spindle around Y
  • XYZABC has a trunnion arm mounted on the Y gantry
    • C mounted on the trunnion rotating around the vertical axis
    • B mounted on the C axis to rotate perpendular to to C
  • XYZAC has a 4th and 5th axis combination mounted on the work surface. 
    • A rotating the table and 
    • B rotating the part on the table surface
The offsets are the distance from center of rotation to the tip of the tool.
For an axis mounted to the work table,  as with XYZA and XYZAC I assume it's the distance from center of rotation to the origin point.

Create a cylinder of splines

  1. In the "parallel splines" section choose "helical" or "cylindrical"
  2. Enter apropriate X, Y and Radio -dimensions for your stock.
  3. Click "Make parallel splines" and wait a second for them to apear.
  • "Stepover Distance" controls the distance of parallel toolpathes at the outher diameter.(Oviously the closer they are to the center, the closer they get. Keep that in mind for stock that can melt or catch fire.)
  • Despite the name "Stepover" is an absolute distance between tool passes and ignoring the tool diameter.
  • "Stepover" also ignores any changes in radius during the later projection. As the spline gets near the center of rotation during projection, the resulting toolpathes are much closer then the initial "Stepover" distance.

Project splines onto surface

  1. In the "project spline" section, click "object" and select your object.
  2. Select the spline.
  3. Click "project around X axis"
  4. Delete the unprojected spline using edit-delete (it's no longer needed and can be re-created with just 1 button)
It should now wrap the surface of your object.
  • Height offset is otherwise known as a skin depth and allows for roughing passes

Create tool vectors along projected spline

  1. Up in the "angle control" section, choose "Use Reference Surface".
  2. Then "Pick Reference Surface".
  3. Select your object and the button should not read "Ref Mesh = ". 
  4. Select the projected spline. (Not the original spline. You can delete that one.)
  5. In the "toolpath generator" section, choose "Toolpath from Shape".
You may have to wait for a few seconds.

Generate g-code and show animation

Now you can use the "Tool Control" and "Postprocessor Options" sections to export your g-code to the "Script listener window" to copy and paste it.
(The other options here work in 3D Studio MAX but not in GMAX)

You can find that windows with F11 or in "MaxScript"- "MAXScript Listener..." .

After postprocessing, you can use "/" or the play-button in the lower right to see an animation of the milling process.


I have not yet fully understood how to compensate for the tool shape.
The tangent mode seems to use the entered tool diameter and offset it along the surface normal.
This simple method would of cause be problematic in pockets narrower then  1.0x the tool diameter that can not be milled with a tool of this size. However an infinitely small tool will try and the applied offset will cut widen the pocket beyond the intended geometry.

As an alternative I should test importing an existing 3 axis toolpath and having cnc-toolkit perform the too-orientation only. Aparently toolpathes from CamBam (trial versions) can be exported as DXF and imported into GMAX. I don't think that works for gcode -toolpathes of my favorite 3 axis CAM software.

I have also not understood yet how to use your own geometry to represent your machine for better visualision and for collision detection. Aparently you can "link" your own geometry to follow the path of the generated stand-ins and then hide the stand-ins.


Multi Axis G-Code generation with Fusion 360


I'm trying to figure out if and how to generate 4 and 5 axis G-Code in Fusion 360 (Hobbyist version = ultimate features) to run in MACH3 on my modified YOOCNC 6040 machine.
Because even the new "5 axis operations" in Fusion 360 don't work for organic shapes without contours. Any I only ever need/want 4 and 5 axis milling for organic shapes to get perfect surface finish on curved surfaces.


This is a WORK IN PROGRESS and I'm using this blog posting to collect the links and bits and pieces I found so far.

Machine compatibility

I could not yet determine if the machine control program (in my case MACH3) is required to support TCP (tool center point) compensation.
This means that X+Y+Z coordinates in G-Code refer to the center of the tip of the tool and A+B+C refer to the angle of attack.

During G-Code Generation Fusion 360 has absolutely no idea if a given orientation is mechanically impossible for the machine to perform and thus cannot aproximate it with a less then ideal angle of attack or a similar mitigation strategy.

It is clear that all calculations happen in the Machine Configuration.
To get there you already need to have a toolpath. It's in "postprocess"->Open Config.
"Tip: Ask your reseller about customization of the setup sheets and post proces" is not very helpful if you build the machine yourself and therefore ARE the "reseller".

Milling Strategies 

There is no German documentation yet.

Trying OpenBuilds linear actuators with end stops

I'm trying out expensive but (up to this step) well done OpenBuilds kits combined with cheap 20x20 I-Type aluminium profiles for a machine I'm building.

However uppon installing the OpenBuilds End-Stop kits I just got a big WTF moment....
(Images directly from the OpenBuilds Part Store website. So nobody can claim the photographer got it wrong...)

1) How the *** am I supposed to attach a micro switch to an aluminium plate like this? There is no thread for the screw to fasten to. It's just 2 oversized holes in the mounting plate. Inserting the screws liks shown just means to loosely stick them in there and want for them to simply fall out on their own.

No you can't insert them the other way around because these are not sink hole screws with tappered holes in the aluminium plate. So you don't get a flush surface to mount this crap to the aluminium profile rail.

2) Why is +Open Builds requiring a different tool-size (1mm hex) for "Micro Limit Switch Kit with Mounting Plate" then the 3 different tool sizes they already need for the "V-Slot™ Linear Actuator Bundle" (1.5mm, 2mm and a tiny one for the stepper)?

3) Why no use a smaller screw that fits THROUGH the holes in the micro switch instead of eating their own thread into the plastic.