Fusion Post Processor Z starting job 1mm too high

I have a slight issue. I am trying to mill a PCB. I have done the design in Fusion 360 and used the FlyFisher post processor. The job is cutting above the board at about ±1mm. I am using CNC.js for the machine

I have gone through the FlyFisher settings, and the tool and job settings and can’t find this offset.

Anyone have any ideas?

I have uploaded the code here: https://drive.google.com/file/d/1E7h34mQgyLpODnqTcJOiFH0Bj4u_GUQD/view?usp=sharing

I doubt this is a Fusion 360 postprocessor issue. Most likely it is either how you set up the job in Fusion 360, or how you set up the start of the physical job. For example, if you fail to account for the touch plate thickness, it would cut too high.

The g-code file is not helpful without more information about how the job is set up.

I suggest:

  • Describe to us how you set up the Z height of your cut. What do you use for a reference (top of stock or spoil board), and how do you detect that height (touch plate, paper, eye).

  • Create a simple, one trace example of a PCB, verify that exhibits the same problem, put it in a ZIP file, and post it here.

Okay, ooking at this portion of the code…

M84 S0
G92 X0. Y0 Z0
; *** START end ***
; *** SECTION begin ***
;   X Min: -66.78 - X Max: -1.22
;   Y Min: 1.22 - Y Max: 49.78
;   Z Min: 0.4 - Z Max: 15.8
; Contour2 - Milling - Tool: 5 -  chamfer mill
; >>> Spindle Speed: Manual
M0 Turn ON 20000RPM
M117  Contour2
G1 X66.78 Y12.935 Z15.8 F200
G1 Z2.8 F200
G1 Z1.868 F200
G1 Y12.931 Z1.818 F200
G1 Y12.919 Z1.77 F200
G1 Y12.9 Z1.724 F200
G1 Y12.874 Z1.681 F200
G1 Y12.842 Z1.643 F200
G1 Y12.804 Z1.611 F200
G1 Y12.762 Z1.585 F200
G1 Y12.716 Z1.566 F200
G1 Y12.668 Z1.554 F200
G1 Y12.618 Z1.55 F200
G1 Y1.222 Z1.5 F200

What I see is this:

The code starts by setting the current position of hte tool to be X=0 Y=0 Z=0 It appears to me that this is defined with Z=0 as the position of the spoilboard not as the top of the material.

Look at the “SECTION begin” coment, it defined the range of motion for Z as all in the positive domain – 0.4 - 15.8mm range. I will ignore the high range as that seems to have room for clearance, but the low range means that it never moves back to the tool start position, let alone below it. If you set up your job with the tool at the top of your copper, it will not cut it.

The selection of G1 commands that I’ve included show the tool ramping down from a height of 2.8mm above the origin point to 1.5mm above the origin point. This seems a little deep to me for a circuit board cut, where I usually think of the base material as being about 1.8mm thick, but it is reasonable if the origin point is with the tool at the spoilboard.

so I’m guessing that the error is that you are starting the tool at the top of the PCB.

2 ways to fix this:

  1. The quick 'n dirty way: Change the line G92 X0 Y0 Z0 to instead read G92 X0 Y0 Z1.8 (Or whatever your calipers say the thickness of your PCB material is) using a text editor on the gcode file. (Looks like you’re a Mac user, so I don’t know what text editor you’d use. – I’d use vi, because I’m a Unix guy, but that’s not the most friendly of editors.) It is s simple ASCII text file, so any editor ought to do it.

  2. redefine the position of your stock in Fusion, so that it plunges into the negative realm.

  3. Start your tool position touching the spoilboard just below the Y=0 position of your stock. (The Y axis range seems to be from 1.22mm to 49.78mm.) This is probably the right way to do this, as it is what the CAM is expecting. I don’t know of your CAM is expecting to cut the PCB boundary out, I didn’t read that far in, and I don’t know how many sections there are, so that might not be the right position to start from either.

HI. I use a 0.5mm touch plate, after the touch plate has set the z height, I then drop the head to compensate by -0.5mm in CNC.js. My understanding was that the Post Processor uses this height as the 0 point for the Z Axis.

Touch plate is a metal plate and a crocodile clip on the bit, when the two touch they close a circuit.

Cool, thanks. I am going to give all of these a try in the morning.

I see the g92 x0 y0 z0, so you’re right that as long as you have the plate thickness correct and you don’t move after correcting for that, it SHOULD be the correct z.

So now we have to see the setup amd model in fusion. Make sure you have selected the correct point for the origin (first tab) AND that the stock size amd model location IN the stock are accurate (second tab).

I’ve made both of those mistakes.

1 Like


I have attached my settings in one long image. Previous post seemed like the image was corrupt on my end.

I tried 1 and it did indeed drop the height, but by a little too much.
So board is 1.35mm my cut depth is 0.4mm. The measured cut depth was 0.74mm. So it’s like 0.34mm over. Which is not a big deal with wood, but I am trying to machine a circuit board with a tapered bit, so 0.34mm is the difference between a board with clear tracks or a piece reasonably attractive workshop decor. :rofl:

Fusion setup looks good, but are you sure you have the correct post? The setup says you are setting the origin at the top of the board, so from your explanation I’d expect the following:
.place touchplate on top of the circuit board
.touch off from touch plate
.move down 0.5mm
.run gcode (that starts with G92 X0 Y0 Z0

Then all of your Z cuts would be ‘below’ the origin, in negative Z.

The problem is that THIS snippet implies you are setting the origin at the BOTTOM corner (relative to z).
Z Min: 0.4 - Z Max: 15.8

So, that would explain why you would never cut (since all the z points are positive). It just doesn’t match the setup. If you’ve posted multiple times (I do that) make sure you are grabbing the latest post. Otherwise, I’m not sure how you could get that post from that setup. But maybe I’m missing something obvious that one of the smarter folk here will catch.

I actually cut a piece for my car from steel (which was a very long epic adventure, lol) that took around 20 hours of breaking things and failing before I got something useable, cleaned up, and welded together before I realized I had an early version, one dimension was off, and the thing was completely unusable.

I’m outta time, I am going to have to get back on this on the weekend. What I am going to do as a start is just reinstall the FlyFisher post processor, and do a thorough check of my entire machines wiring and mechanics. It may be something small and stupid on that end.

I’ll then run some tests in MDF, this poor piece of circuit board has been subjected to enough in it’s miserable life. I’ll post if I come up with anything significant.

Is 200 a valid speed for your Z axis? If you try and move Z down too fast it will skip steps, think it got down low enough, but really be too high.

What would you recommend? I am open to any suggestions.

If it is a V1 firmware with no modifications, Ryan has set speed limit for all axis.

Okay… I am going to have to file this one under shrug and move on.

I checked all my wiring and mechanics, re-installed the Fusion post processor, re-generated the file, and it’s now working perfectly. Did a mock circuit cut in MDF and it’s doing the tracks really nicely at the correct milling dept. I really wish I had a valuable insight to add, but I don’t.

1 Like

Gremlins and pixies.