Surface finish issues in 3D carves

I got a replacement spindle motor
I decided to go with the Makita as it has user serviceable brushes. (easier to change, easier to check)

I did a few more test cuts:

Feeds and speeds were calculated with GWizard.

  • Bit: 3.175mm Ball Nose [1/8 inch]
  • Width of Cut: .0318mm (10%) [0.0125 inch]
  • Feed: 2032.0 mm/min [80 inch/min]
  • Speed: 30,000 (#6) rpm
  • Strategy: Offset (spiral), Climb
  • Depth of Cut: 0.66mm (machining allowance from rough cut) [0.026 inch]
  • Finished with Minwax “Gunstock” stain and Tongue Oil

A good clean cut some hint of the texture but almost not noticeable

I ran another test same as above but at 1524.0mm/min [60 inch/min]
No surface finish issues, But the overall finish out pretty bad. In this case I think it was the wood

I tried my 3 stage cut.
Chip Clearing Roughing Pass with a 1/4" bit

A roughing pass with the 1’8" bit. (Feeds and speeds were calculated with GWizard.)
(I set the depth of cut for this bit to the material depth so that it was done in one pass)

  • Bit: 3.175mm Ball Nose [1/8 inch]
  • Width of Cut: .0318mm (10%) [0.0125 inch]
  • Feed: 6137.6 mm/min [241 inch/min]
  • Speed: 30,000 (#6) rpm
  • Strategy: 3D Raster along Y axis
  • Depth of Cut: 0.66mm (machining allowance from rough cut) [0.026 inch]
  • Finished with Minwax “Gunstock” stain and Tongue Oil

A finishing pass with the 1’8" bit. (Feeds and speeds were calculated with GWizard.)

  • Bit: 3.175mm Ball Nose [1/8 inch]
  • Width of Cut: 1.27 (40%) [0.5 inch]
  • Feed: 5714.2 mm/min [225 inch/min]
  • Speed: 30,000 (#6) rpm
  • Strategy: Offset (spiral), Climb
  • Depth of Cut: 0.25mm (machining allowance from rough cut) [0.0098 inch]
  • Finished with Minwax “Gunstock” stain and Tongue Oil

A very clean cut. The second finishing pass added about 10 min to the cut time.
The 40% stepover with a ball nose was pretty ugly. But it was cleaned up with the finishing pass.
But the surface finish?
Is. Still. There
Now with a cut depth of 0.25mm it was maybe .01mm almost invisable.
So faint that when the grain lifted from the staining it smoothed it out.

At this point I am convinced that it is not an issue with bit contacting wood.
A bit of googling acceleration turned this artical up
So I re-ran the first control cut, same settings but I adjusted my acceleration for X and Y down to 400

  • Bit: 3.175mm Ball Nose [1/8 inch]
  • Width of Cut: .0318mm (10%) [0.0125 inch]
  • Feed: 3314.6 mm/min [130.5 inch/min]
  • Speed: 27000 (#6) rpm
  • Strategy: Offset (spiral), Climb
  • Depth of Cut: 0.66mm (machining allowance from rough cut) [0.026 inch]
  • Finished with Minwax “Gunstock” stain and Tongue Oil
  • Acceleration X and Y 400

There is some artifacting but it is dramatically reduced!
(The shuddering I was noticing while it carves was also reduced.)

I think I am finally getting a handle on this. :grinning:
It also explains why it is happening on my 3D carves (with tones of tiny moves) and not my 2.5D pocketing carves (mostly longer moves)

I know if your acceleration is set too high you can start skipping steps.
But other than longer carves from not reaching higher speeds on small moves, I am not sure there is an issues with slower acceleration?

Depending on how much of a impact acceleration may have on cut times I could always make 2 post processors with the various acceleration settings in the header.

What was your acceleration before?

Default: X = 500, Y = 500, Z = 50

Having gotten good results I went with BIG.
This had been part of the plan all along, to make a jumbo sized carve out of a redwood 12x2.
And the main reson I have been focused on trying to optimize speed as I did not want to do this as a +30 hour carve.

The initial carve came out well, a bit of chipping but fine for a tiki mask.
Using my slower acceleration the main carve took a bit over 4hours as opposed to the estimated 1.5
For a total of around 6 hours.
However, the ripple is back.
Apparently by increasing the size I had increased whatever was causing the ripple?

I made some brackets to stiffen the Yaxis, added more brackets to bolt the XC to my work table.
Referenced the acceleration setting of other CNC builds (The OX and the CBeam machine)
Did another print only to have the vac hose fall, jam the Y axis, deflect the print so the bit cut across he hold down bolt, broke the bit, damaged the collet adaptor and gouged the hell out of my carve.
And the ripple was still there.
Noticing how the bad the run out was on the now damaged collet adaptor I was using I retired it.

Thinking that run out may have been a factor I did another control carve.
Resetting acceleration to default (500) using a new bit adaptor, a new (shaper) shorter (sickout) bit.

The wood I was using was a bit thinner than calculated so the carve was a too thin and the wood would noticeably flex as it carved!
In spite of this (or because of it) the carved turned out very nice

I did another carve with properly sized stock and tried a 3 step carve. It turned out ok. The ripple is still there but it is significantly less from previous carves.

It seems like everything I try helps to reduce it, but doesn’t eliminate it. Which seems to indicate that I am not addressing the root cause.
The thing I am finding frustrating is the numbers I am getting for roughing and end mills are cutting fine. It just seems to be the ballnose that is giving me problems. This leads me to believe I am doing the calculations wrong.

Hi, Bob Warfield from CNCCookbook here. Aaron asked me for thoughts and I responded with this:

Woof, that’s a pretty subtle effect, and BTW, love the Tiki!

I think it is interesting that lowering the acceleration helped. Note that there are high end machines that allow you to set up separate acceleration curves for roughing vs finishing–you’re in good company with this strategy.

Datron and Okuma are two such. There are also g-codes that do something similar–Google “Exact Stop.” I don’t think you’ll find such things on a Shapeoko, however.

One piece of information I do not have is I am not watching the cutting action, so I don’t know the exact motions being made. If any axis is changing directions in the area of the artifacts, I would strongly suspect backlash is at fault. I have to believe a machine like a Shapeoko has a fair bit of backlash.

There are some other possibilities, but I hesitate to even speculate as they’re so esoteric. For example, it is possible there is an artifact in the CAD file that leads the CAM to “purposefully” create that visible artifact in the work. I am imagining if there is a sharp directional change there rather than a smooth curve, it could happen. Remember, g-code only has lines and arcs, and most CADAM simulates non-arc curves as a bunch of line segments with a certain tolerance. You can get what’s called “Faceting” as a result. This article describes some faceting issues:

And they look like this when 2 1/2D machining:

I believe faceting could produce an artifact like what you’re seeing. You can try to reduce tolerances in the CADCAM to eliminate it. I don’t know what file format you use, but you could try viewing the CAD in a program that lets you zoom in enough to try to see the faceting. A good STL viewer should show it pretty clearly if you output STL and view it. Most CAM thinks of things as meshes when doing 3D work, so STL shows you what the CAM sees, FWIW.

So what to do?

You’re at a point of experimentation. You can further reduce acceleration. You could try reducing the feedrate on the finish pass, though I am skeptical about that helping much. You could reduce stepover even more. All of those will probably radically slow down performance.

Alternatively, you can break the rules (Kobayashi Maru style?) and step outside the CNC process altogether. You have a pretty darned nice finish there (congrats!). How much effort is it to eliminate the artifact with a little sandpaper? If the additional time to sand it out is radically less than the time lost through one of the above methods, you win.

Aaron went on to mention this happens when he specifies a spiral tool path but not on a zig zag path. If the spiral cuts a circular spiral rather than a rectangular spiral, this is another clue it may be backlash. A full circle reverses direction at 12, 3, 6, and 9 o’clock. You’ll see a glitch proportional to backlash at each of those positions.


Armed with more information I decided to do a simpler cut.
I make up 5 domes, each cut separately from the same piece of wood. This way the couture 3D carve path would be almost a perfect circle.
The circle should test belt backlash and the slope of the dome would test the Z axis as I had a suspicion that the issue was occurring when the bit was cutting up slope.

Wood: Cedar (well seasoned)
Finish Bit: 1/8" Ball Nose (New bit)
Depth of Cut: 0.25mm [0.0098 inch]
Stepover: 3.18mm (10%)
RPM: 30,000 (Makita #6)
Feed: (Varies)
Acceleration: Standard
Finish: Golden Pecan, Tongue oil

The first one was at the GWizard recommend settings of 6724.4 mm/min [264.7 inch/min] climb milling. I was a bit hesitant about so high a feed but went with it.
I was surprised how well it cut. There was some surface ripple but it seemed less pronounced than on my masks.

The second one was at 3048 mm/min [120 inch/min] climb milling
(the burn marks are where the tabs failed and it got sucked up into the dust shoe and rubbed against the collet)
The ripples is still there but noticeably less. Also you can see the slight seam where the Z height change would occur, the 45 deg line in the lower left-hand quadrant.

The third one was at 1524 mm/min [60 inch/min] climb milling.
You can see the height change line and what appears to be a bit of ripple just before it.
(There is one ring that seems to be off. I don’t know if this was a missed step but I think it was issues with my clamping)

The fourth one was at 1016 mm/min [40 inch/min] climb milling.
This one is smooth and ripple free. No sign of the height change line either

The fifth one goes back to the original feed of 6724.4 mm/min [264.7 inch/min] but switched to conventional milling.
The ripple is back, it seems to be the same pattern and strength as in the first one,. You can also see the height change line.

The fact that the first and fifth both have about the same ripple seems to indicate that it is not a conventional vs climb issue.
The fact that it changes gradually over such a wide change in speed seems to indicate it is not a harmonics issue. If it was frequency related I would expect to see a more dramatic change as it moved out of the specific frequency range?
I am using a better collet adaptor to minimize runout. But I would imagine that if it was a runout issue it would be consonant over all the feeds?
I am using a shorter bit to minimize stickout. Now this bit doesn’t have a depth collar so my stickout length is estimated. But I did not change the bit between carves so whatever it is, it is consistent between each. With the tiny depth of cut I am using I am guessing it is not a stickout / bit deflection issue. For the first carve the bit deflection calculates out at ~0.000272mm. Which is very low.

That leaves what, vibration, twisting of the gantry, flexing of the rails, other?

Taking a really close look at the ripple it seems to be occurring during Y axis moves. With no visible ripple at 12 o’ clock and 6 o’ clock and maximum ripple at 3 o’ clock and 9 o’ clock. Though that could have something to do with the wood grain.

So I took a closer look at the Y rails and poked them. (literally)
The brackets I had added to bolt it to the table were towards the middle of the rails and the corners were kind of floating just above the table and if pushed would flex and twist just a bit.
Obviously something in the table or frame is out of square.
I shifted the table brackets out to the corners and bolted it down to the table. Now it is much more secure. I can still get a little flex but it takes a lot more force as I am flexing the table surface. (A large sheet of MDF under the XC resting on top of the table)

So here are a few theories.
At higher feeds the higher acceleration / decelerations are causing vibration.
This vibration may be causing the spindle to shake and gantry to twist a bit, which is why the ripple seems to be in the Y direction.
This vibration could be causing the whole frame to shake and twist just a bit.
Both could be happening.

I will try another test print with the new brackets at the corners and see if that makes a difference.
If I am still getting ripple I will then try reducing acceleration on the Y axis and see what effect that may have.

No mater what the results I plan on redoing my table top (torsion box?) and adding a few more rails to base of the XC frame.

Additional theory
At higher feed rates back EMF from the paired Y motors are starting to interfere with each other.
This is a longshot, but can be tested by getting a controller with separate Y drive chips.

I do plan on upgrading my controller at some point. (Using the current G shield to rehab my old MaxNC mill.) But that will be a bit due to finances.

Anyone out there with a X Controller willing to try my crazy fast feed rates on a bit of cedar fencing and see what happens? :wink:

I re-ran the dome tests with the newly relocated brackets.
(the new batch of domes were a bit smaller to better fit the wood)
The results were about the same

Because I was not doing the climb / conventional variation I had an extra spot on the wood.
So I did a 3D carve with a cool octopus model I found on thingverse :wink:

This latest test seems like it may have a bit less ripple, but it is so subtle it could be due to variations in the wood.
The next test will be to do different accelerations for just the Y axis and see if that has any impact.
I am going to see if I can set up some modified post processors to automate changing the acceleration settings.

1 Like

Any chance you can recalculate the Speeds and Feeds with a slower RPM? 30,000rpm seems high to me given the small amount of contact with he surface with a .125" ball nose. The chip load would be pretty low and heat build up in the bit would be the reason that GWizard recommended the 67724.4 mm/min feed rate.

That kind of feed rate will through the machine around a bit… if you went for a lower end RPM maybe GWizard would give a better feed rate for the machine and possibly smooth out the dome?

1 Like

Good point!
I have been letting GW recommend RPM, only manually altering it to match a approximation of what a dial #'s rpm should be. It usually seems to wind up wanting a higher RPM than the router can give.
But I could do a recalc at around a #2 or #4. Goodness knows the router is a lot quieter at that speed.
An easy way to do this is just reset the routers max to the lower dial #'s RPM in the machine profile.

I have already generated the code for the acceleration test, so I will run that as is.
But assuming I can’t eliminate the ripple at high feeds, dropping the RPM seems like a good way to get GW to calculate feed rates below the ripple threshold.

1 Like

I started to run the velocity test last night.
After the roughing was done I loaded up the merged GCode and the XC when crazy!
It seemed to have some kind of crazy offset or something as it was trying to move way past the limits of the machine, crashing the rails.
After a E-Stop and reset I looked at the GCode to see what went wrong. (as it had not even gotten to the acceleration change part yet)
When I modified the post processor I had accidently used a older version that still had the tool selection info in the header. This is what the processor choked on.
I removed the tool select info and did a quick air cut test and it ran fine.
I fixed my post processors and will rerun the carve tonight.

Some of the gcode files generated with my modified post processors would fail, generating a error early in the print. I was able to carefully resync and restart so I didn’t loose my zero. I am not sure what was causing the error as the G code looked the same as “normal” code.
Re-typing the first feed rate fixed some. Retyping the spindle speed fixed others. My best guess is that there was a not displayed character somewhere that was causing the error?
VCarve didn’t like the “$121=” in the postprocessor, probably it is some kind of variable or program command.
So “don’t do that thing” :wink:
It doesn’t need to be in the post processor. Manually changing the acceleration is easy, or I can easily manually add it to the G code if I needed too. I was trying to be clever, and wound up making more work for myself.

I ran a velocity test with the domes.
Again, the wood I was using was a little on the thin side so they kept breaking free of their tabs and getting sucked up into the vacuum hose during the final profile cut.
Wood: Cedar (well seasoned)
Finish Bit: 1/8" Ball Nose (New bit)
Depth of Cut: 0.25mm [0.0098 inch]
Stepover: 3.18mm (10%)
RPM: 30,000 (Makita #6)
Feed: 6724.4 mm/min [264.7 inch/min] climb milling
Y Axis Acceleration: (Varies)
Finish: Golden Pecan, Tongue oil

I started with a Y axis acceleration of 400 mm/sec^2 (Default is 500) and reducing it by 100 for each.
There is not any real difference between each dome. But when you compare the 400 to the 100 you can see a slight difference.

Here is the acceleration 400 mm/sec^2

Here is the acceleration 100 mm/sec^2
(The circle defect is where it rubbed against the spindle when it got sucked up into the dust shoe :rage:)

Looking closely the 100 seems to have a slightly less ripple, reduced ripple height? (amplitude?) but more interestingly the space between the ripples is noticeably shorter, reduced frequency?
That is a interesting and unexpected result.
I am sure this result is significant, and a big clue as to what is going on. But I am unsure as to what it is.
I will have to think on that for a bit.

At this point I don’t think there is much else I can do to test without changing the controller.
I would REALLY like to try running this test with a X Controler to see if having the Y motors separated has any impact.

Following @sketch42 advice I limited the RPM in GWizard and re-ran my calculations.
And it worked in that I am getting much more reasonable numbers.
I think sketch42 has solved the initial issue of why GW would give me good workable numbers for my 1/4" bits but such high, problematic numbers with my 1/8" bits.
Answer - RPMs!

I am in the process or re-running all my numbers for Makita #3 (18,000) and Makita #2 (14,000)
GW has been updated and the new version is giving me slightly different numbers. :confused:
It is also having a problem setting the ballnose radius for new bits, so these calculations might be for 90 deg not 30. :unamused: But it is a start.

I did a tiki carve using Maitak #3 for all operations
Wood: Cedar (well seasoned)
Finish Bit: 1/8" Ball Nose (New bit)
Depth of Cut: 0.25mm [0.0098 inch]
Stepover: 3.18mm (10%)
RPM: 18,000 (Makita #3)
Feed: 3045.1 mm/min [119.9 inch/min] climb milling
Y Axis Acceleration: 500mm/sec^2 (default)
Finish: None (yet)

A good, clean cut. It took about 50 min for the 1/8" single rough and thin finish pass. The ripple is there, a bit less but quite visible at the right angle

I will try running one with feeds for Makita #2 (14,000)

1 Like

On the whole I have found this to be a very educational experience. I have really learned to understand my machine and software. I have also tuned my machine better.
I am really impressed at how good a carve I am getting at these high speeds. Except for the ripple these are clean, accurate carves at feed in excess of 6000mm/min [236 inch/min]!

The thing I find frustrating is that the ripples start to show up around 1500mm/min [59 inch/mm] and only grows slightly with increase in feed. If I can just track this down I can cut most things FAST.

For example. Here is a 3D test carve at high feeds (part of my acceleration test)

Wood: Cedar (well seasoned)
Finish Bit: 1/8" Ball Nose (New bit)
Depth of Cut: 0.25mm [0.0098 inch]
Stepover: 3.18mm (10%)
RPM: 30,000 (Makita #6)
Feed: 6724.4 mm/min [264.7 inch/min] climb milling
Y Axis Acceleration: 300mm/sec^2
Finish: Light Walnut, Tongue oil

The wine barrel has a wood textured surface. So there are no smooth areas for the ripple to show up on.
I don’t know if the ripple is not occurring at all or is just being obscured by the 3D texture. Either way the results a very good even at this high feed. So I know that the XC can handle it.

Another option is to stop using the spiral strategy and switch to a raster. Doing a thin finish in both X and Y directions. It takes twice as long, but x2 carve time is better than x6 carve time (for a “clean” spiral cut).
Also a woodworker commented on his youtube video that he always ran his carves raster in both directions (on his pro CNC) to eliminate the little “fuzzies”. The second pass (at 90deg) cleaning up the bits from the first.
Something worth trying, especially when using pine.

1 Like

I did a tiki carve using Maitak #2 for all operations
Wood: Cedar (well seasoned)
Finish Bit: 1/8" Ball Nose (New bit)
Depth of Cut: 0.25mm [0.0098 inch]
Stepover: 3.18mm (10%)
RPM: 14,000 (Makita #2)
Feed: 2368.4 mm/min [93.2 inch/min] climb milling
Y Axis Acceleration: 500mm/sec^2 (default)
Finish: None (yet)

A bit rougher of a cut. I am not sure if this is due to the lower RPM or just a variation in the wood.
Interestingly this also took about 50 min for the 1/8" bit rough cut and finish pass. So the slower feed rate had almost no impact on actual carve time? I am guessing that the feeds are close enough the Z feed is the limiting factor?
The ripples is still there, only slightly less noticeable on the nose.
The router is noticeably quieter at this RPM, difficult to hear over the shop vac when it is not actually cutting wood.

I will try doing one at Makita RPM #1 (10,000), Feed 1888 mm/min [74.3 inch/min]
and see how that comes out. I am curious to see what impact it will have on actual carve time.

I did a tiki carve using Maitak #1 for all operations
Wood: Cedar (well seasoned)
Finish Bit: 1/8" Ball Nose (New bit)
Depth of Cut: 0.25mm [0.0098 inch]
Stepover: 3.18mm (10%)
RPM: 10,000 (Makita #2)
Feed: Feed 1888 mm/min [74.3 inch/min]
Y Axis Acceleration: 500mm/sec^2 (default)
Finish: None (yet)

A even rougher of a cut. It is from the same piece of wood as before so the lower RPM is having an impact on quality. I forgot to record the total cut time :unamused:
Only a few faint ripples remain, most are gone, and the nose is smooth.
The router is so quiet at this RPM!. I love it. I am definitely going to upgrade to (quiet) spindle at some point.

Reviewing the TinyG settings I found one that specifically affect acceleration / deceleration in corners.
“junction acceleration” I think this may have a big impact on the “ripple” as it seems to be due to the spindle shuddering as it moves.

I am in the process of doing a major gantry upgrade to, hopefully, dramatically stiffen up the gantry and eliminate more of flex that is contributing to this shuddering.

Those pesky lines in a 3D carve. Here is a little info for anyone looking for info on it.