Consistently undersized holes and oversized parts

Hi,

I’ve completed my Lowrider build and got a nice crown.

Now that I’m running some cutting tests into 12mm MDF, I’ve noticed that while the cuts look great, my dimensions are off. The holes and pockets are 1.2mm smaller in every dimension and the parts are about 1.5mm bigger in every dimension (edge to edge). This is true regardless of the length of the part or hole, so I’m currently not expecting it to be a steps per unit thing.

I used a simple test DXF with a round pocket and used Estlcam to generate my Gcode. I attached the gcode and a screenshot since I can’t attach the DXF or the Estlcam file. If needed, I can upload these somewhere else.

The bit is a 3mm upcut 2 flute carbide end mill I got from Aliexpress and I measured it to assure it’s actually 3mm in diameter.

I’m running Marlin 2.0 on a SKR V1.1 board with DRV8825 stepper drivers (1/16 microstepping). It’s a fairly new, cheap 32 bit board (I had planned to use a MKS Gen L, but broke it).

Anything I should check or additional details I can provide to help me debug this?

Thanks!

Frederik

test-square-Sketch-1.gcode (18.7 KB)

Are you sure your bit size is correct in your CAM software? Are you using EstlCam? It sounds to me like the software thinks you have something like a 1/4 inch bit but in real life you have a 1/8 inch bit. That would cause what you are seeing.

That was my first thought as well Aaryn. However looking at the Gcode it appears that this is not the case. In the last part it’s cutting out a 75x75mm square part where the lower left corner is at X=0, Y=0. I’ve pasted a snippet of relevant gcode below where you can see it’s traveling to the extremes plus a 1.5mm offset which sounds correct for a 3mm bit.

I’m wondering if maybe somehow Marlin misinterprets the arc moves (on 32 bit boards?)

 

;No. 4: Part 2
G01 X76.5000 F250
G01 Y0.0200 F250
G02 X75.0000 Y-1.5000 I-1.5001 J-0.0198 F250
G01 X0.0200 F250
G02 X-1.5000 Y0.0000 I-0.0198 J1.5001 F250
G01 Y34.4900 F250
G01 Y40.4900 F250
G01 Y74.9800 F250
G01 X-1.4962 Y75.1061 F250
G02 X0.0000 Y76.5000 I1.4962 J-0.1061 F250
G01 X34.4900 F250
G01 X40.4900 F250
G01 X74.9800 F250
G02 X76.5000 Y75.0000 I0.0198 J-1.5001 F250
G01 Y40.5100 F250
G01 Y34.5100 F250
G01 X76.8000 F250
G01 Z-12.3200 F180
G01 X76.5000 F250
G01 Y0.0200 F250
G02 X75.0000 Y-1.5000 I-1.5001 J-0.0198 F250

Hmmmm. I agree the Gcode looks correct. Head scratcher.

You could be right about the 32 bit boards but I don’t think that sort of thing would go unnoticed. I would expect to see more issues like that listed in the Github Marlin Issue Lists.

If it isn’t gcode then it must be the machine. I wonder if your machine is loose at all. With the Router unplugged and the steppers locked could you grab the bit and wiggle it around. Does the machine have any play in the X or Y direction? Lose belts or tension bolts can cause strange behavior with cuts. Maybe get a video of it cutting a circle hole. Possibly pictures of the hole afterward.

Thanks Aaryn for walking through this with me. Before I got to this point, I did have loose belts and pulleys, which resulted in things like oval holes, but these have been fixed. I can’t detect any play in the machine.

I might try an 8 bit board, just to rule that one out.

You were spot on Aaryn. I just used the same gcode to cut some HD foam as Ryan suggests in the Milling Basics document and the dimensions were accurate to <+/- 0.05mm.

I had been cutting MDF at 2.4mm DOC at 8.33mm/sec and 15k RPM with my 3mm 2 flute endmill. That didn’t seem excessive to me based on what I read on the forum, but it seems that it’s not the right approach. When I tried to increase the RPM to 30k/min, the bit got black, so I’m thinking that’s too fast.

I tightened the belts even more and will now try the following

  • different (better?) bits
  • higher speeds
  • lower feeds
  • lower DOC
Any hints as to which settings I should tune?

Well, that settles it. I’ve replaced my cheap 3mm Aliexpress end mill (22mm long) with an 8mm long single flute cutter of the same diameter, but from a reputable local manufacturer (European Norm Tools). I’ve also increased the speed to 22k RPM.

My dimensions are now spot on and my cuts look super professional. It was tool deflection due to insufficient cutting force after all. Maybe the tool was too long too.

Thank you again for your help Aaryn, you pointed me the right way!

1 Like

To necro this thread…

I’m trying to cut 1/2-inch holes in 3/4-inch plywood and am using a 1/4-inch bit. My holes are coming out a bit small… worst hole has been around 0.46 inches and best hole at 0.48 inches. What level of accuracy should I be able to expect?

I set up gcode to cut 9 different holes at different feed rates (900, 800, 700… 100) just to see if I was running it to fast. I repeated it at two different speeds on the router (2 setting, and 4 setting on the 611), and then tried two two different bits (at 2 setting on router). One bit was cheap chinese 1/4-inch straight cut and another was a 1/4-inch spiral (can’t remember which direction, might be a compression) from Maslow CNC. I get basically the same results on all the cuts and the 900 mm/min feedrate was about the same as the 100 mm/min. My DOC is 3.2 mm per pass (1/2-width of the bit… is that too much per pass on the lowrider?)

I looked at the gcode developed by easel (series of G1 straight lines to approximate the circle) and the max dimensions are 0.4983 inches apart. This is the beginning portion of the gcode:

G21
G90
G1 Z5.000 F228.6
G0 F1500 X76.254 Y58.789
G1 Z-3.200 F225.0
G1 X76.938 Y58.974 F900.0
G1 X78.043 Y59.678 F900.0
G1 X78.538 Y60.301 F900.0
G1 X78.858 Y61.041 F900.0
G1 X78.977 Y61.928 F900.0
G1 X78.868 Y62.750 F900.0
G1 X78.555 Y63.501 F900.0
G1 X78.056 Y64.150 F900.0
G1 X77.395 Y64.657 F900.0
G1 X76.571 Y64.997 F900.0
G1 X75.762 Y65.091 F900.0
G1 X74.972 Y64.974 F900.0
G1 X73.809 Y64.370 F900.0
G1 X73.309 Y63.875 F900.0
G1 X72.896 Y63.187 F900.0
G1 X72.673 Y62.385 F900.0
G1 X72.669 Y61.504 F900.0
G1 X72.883 Y60.714 F900.0
G1 X73.292 Y60.006 F900.0
G1 X73.871 Y59.425 F900.0
G1 X74.641 Y58.986 F900.0
G1 X75.454 Y58.775 F900.0
G1 X76.254 Y58.789 F900.0
G1 Z-6.400 F225.0

The max X is 78.977 and min X is 72.669, yielding a difference of 6.308 mm. By adding the width of the router bit (which I measured to be 6.3 mm wide between cutting edges on the straight bit) I should be at 12.608 mm (0.4964 inches) but I’m not really coming very close… unless that’s what I should expect from an accuracy standpoint.

I encountered some inaccuracy that was repeatable, where holes would be too small and parts would be too big by the same amount (almost exactly). If I remove the bit and insert it again, it’s different but when I leave it alone it’s repeatable.

As a workaround I cut a test part and hole (with finishing pass) and measure the effective width of the bit that way, which takes runout into account. Then plug that into CAM and you should get precise holes and parts, to within your repeatability. If it’s not repeatable then you’re out of luck anyway so that’s the best possible.

It’s ugly but I chalk it up to not using precision spindles or collets.

Thanks for the response. I tried doing it on my foam spoilboard and got basically the same result. Everything was a little small.

So if my hole was, say, 1 mm too small in diameter, would I tell the cam software the bit is 6.35 mm - 0.5 mm (half the error) = 5.85 mm?

Every 1mm that you fudge the diameter, the cut will move by -0.5 mm. For a hole this will change the radius by half the fudge amount, so the change in diameter of the hole will be equal to the fudge amount.

If you holes are too small by 1 mm, you would subtract 1 mm from the diameter of the tool.

Well, I had a 50/50 shot at guessing correct, but, I used 1/2 the error and I’m pretty much spot on… 0.495 inches. I also cut a part (8-inch square) and it came out 1/32 inch shy. I’ll take it!

But, that all still makes me wonder… I don’t know if my belt tension is correct and wonder if any of that could have an impact. I’m hesitate of overtightening it. Im also wondering if some of the default settings of the controller could be throwing it off. I have to set my max feedrates everytime I reset things because the FW feedrates are way too high (z axis won’t even lift at the default rate). See Adjust cncjs travel speed. I’m wondering if settings like acceleration/jerk might be too high as well. Is there a post with “standard” or “recommended” settings?

I looked at the current Configuration.h file for the “V1CNC_Rambo” firmware (the one that was last updated) and find the following values:

DEFAULT_MAX_FEEDRATE { 50, 50, 15, 25 }
DEFAULT_MAX_ACCELERATION { 180, 180, 80, 180 }
DEFAULT_ACCELERATION 180
DEFAULT_RETRACT_ACCELERATION 3000
DEFAULT_TRAVEL_ACCELERATION 180
(Appears CLASSIC_JERK is disabled, so…)
DEFAULT_EJERK 5.0
JUNCTION_DEVIATION_MM 0.04

When I run M503 on a reset mini-rambo, I get:
M203 X120.00 Y120.00 Z30.00 E25.00
M201 X400.00 Y400.00 Z100.00 E2000.00
M204 P400.00 R3000.00 T400.00
M205 B20000.00 S0.00 T0.00 J0.10

I already knew the FW didn’t have the correct feedrate values, but I think the acceleration values are off maybe jerk… EJERK is the same 5.0 value in both the current mini rambo FW and the v1cnc_rambo, but junction_deviation_mm is different … So, I’m going to try everything again, but issue the following beforehand:

M203 X50 Y50 Z15
M201 X180 Y180 Z80
M205 J0.04

Update:

Got pretty much same result, but this time everything was more consistent… 0.475 inches. So I tried increasing the size of the hole proportionally (0.5*0.5/0.475 = 0.526) and got pretty much spot on with the hole and I could fit my bolt into it.

That setting is not used when we use Junction deviation. I should have a set of new firmware for everything soon, waiting to see if my change gets pulled into Marlin first.

1 Like