What's new
What's new

Thread mill program cutting only one side of the hole

jgrasty

Aluminum
Joined
Sep 19, 2013
Location
Texas
Newbie machinist here. I'm cutting a 11/32"-36 internal thread into Delrin, 0.319" diameter hole 0.3" deep. The problem I'm having is the hole is only cutting threads on the -X side of the hole; the +X side of the hole is not touched. I'm using a single form thread mill from Maritool with a cutting diameter of 0.240". The tool is exactly centered on the hole at the end of line 7, below, so the tool is where it needs to be when the tool is fed into the hole at the start.

I'm guessing the spreadsheet creator is making some assumption that is incorrect for my machine, but I've not been able to figure it out, thus asking here.

The code was generated by the "Single Profile Thread Mill Assist Program" found at Thread Mill Assist Program using settings:

Major diameter: 0.34375"
Cutter diameter: 0.240"
Pitch: 36
Full Thd Depth: 0.290"
SFM: 600
Feed per tooth: 0.0001 (intentionally set low so I could watch it cut)
Flutes: 4

Code:

%
O00000001
G90
G20
G54
G00 X0 Y0 F18.0 S9550 M03
G00 Z0
G01 G91 Z-0.29694 F50.0
G01 G41 X0.0259 Y0.0259 D1
G03 X-0.259 Y0.0259 Z0.00347 I-0.0259 J0 F1.15
G03 X0 Y0 Z0.02778 I0 J-0.0519 F1.15
G03 X0 Y0 Z0.02778 I0 J-0.0519 F1.15
G03 X0 Y0 Z0.02778 I0 J-0.0519 F1.15
G03 X0 Y0 Z0.02778 I0 J-0.0519 F1.15
G03 X0 Y0 Z0.02778 I0 J-0.0519 F1.15
G03 X0 Y0 Z0.02778 I0 J-0.0519 F1.15
G03 X0 Y0 Z0.02778 I0 J-0.0519 F1.15
G03 X0 Y0 Z0.02778 I0 J-0.0519 F1.15
G03 X0 Y0 Z0.02778 I0 J-0.0519 F1.15
G03 X0 Y0 Z0.02778 I0 J-0.0519 F1.15
G03 X-0.0259 Y-0.0259 Z0.00347 I0 J0.0259 F2.31
G01 G40 X0.0259 Y-0.0259 F50.0
G90
M05
M02
%

Any ideas what I'm doing wrong here?

Thanks!
 
I did not plot out your code but look at these four things: where your center of hole is relative to drilled hole center position. Where cuttercomp starts. The I and J signs could be wrong and finally where you are defining the starting position in Z ( top or bottom) this last may cause the code generator to post something wrong.
 
Last edited:
hello in your first g03 line
is that a typo x-.259
where as all your other x moves are .0259
 
Can't help with your programming problem BUT.......

Unless your cutter is razor sharp (as in 10x glass SHARP) Your feed of 0.0001 is too low and likely to cause rubbing and burning.
 
no worries
isn't a person here who hasn't done it
let he who has not sinned cast the first stone
have a good day
 
Can't help with your programming problem BUT.......

Unless your cutter is razor sharp (as in 10x glass SHARP) Your feed of 0.0001 is too low and likely to cause rubbing and burning.

Agreed. I only ran it this speed so I could see if the basic motion was correct before cutting.
 
G00 X0 Y0 F18.0 S9550 M03
G00 Z0
G01 G91 Z-0.29694 F50.0
G01 G41 X0.0259 Y0.0259 D1
G03 X-0.259 Y0.0259 Z0.00347 I-0.0259 J0 F1.15
G03 X0 Y0 Z0.02778 I0 J-0.0519 F1.15

G03 X0 Y0 Z0.02778 I0 J-0.0519 F1.15
G03 X0 Y0 Z0.02778 I0 J-0.0519 F1.15
G03 X0 Y0 Z0.02778 I0 J-0.0519 F1.15
G03 X0 Y0 Z0.02778 I0 J-0.0519 F1.15
G03 X0 Y0 Z0.02778 I0 J-0.0519 F1.15
G03 X0 Y0 Z0.02778 I0 J-0.0519 F1.15
G03 X0 Y0 Z0.02778 I0 J-0.0519 F1.15
G03 X0 Y0 Z0.02778 I0 J-0.0519 F1.15
G03 X0 Y0 Z0.02778 I0 J-0.0519 F1.15
G03 X-0.0259 Y-0.0259 Z0.00347 I0 J0.0259 F2.31
G01 G40 X0.0259 Y-0.0259 F50.0
G90
M05
M02
%

Any ideas what I'm doing wrong here?

Thanks!

Your code is basically correct. However, to be absolutely correct, J-0.0519 should be J-0.0518. There is no Rounding going on; 0.0259 x 2 is 0.0518, so that's the number that should be used. This is not going to make a difference you will see, and it will be centered in the "X" axis in any regard. Theoretically, you code would cut harder at 6 o'clock (Y-) in a hole located at X0.0 Y0.0, as the center of the J-0.0519 circle is at X0.0 Y-0.0001. Its just a small point, but if you're going to bother to create code, its just as easy to create the correct code.

If the hole that you've produced is truly at X0.0 Y0.0, assumed from your comment "The tool is exactly centered on the hole at the end of line 7", then I would be looking at a mechanical issue with your machine, as your code will not give you the error you've mentioned.

Regards,

Bill
 
Last edited:
And one other thought: When you get the code figured out, maybe get rid of all of those F1.15's.
While they are not hurting anything at the moment, F is modal and only needs to be defined once until it needs to be changed to something else.
 
One other thing you can do to shorten your program is to loop the line where you're cutting the thread. Instead of writing the same line 10 times, you can put
G03 X0 Y0 Z0.02778 I0 J-0.0519 F1.15 L10
That will repeat that line 10 times. Note that you need to be in incremental to do this.
 
Fixed your code, the red parts. Should terminate properly now. I've seen cutter comp act funny, as in, only cutting on 1 side, especially if your trying to comp to much of the tool. Sometimes it's better to use a wear comp instead.
Hopefully you'll see a screen shot.
Dave

o00000001
g90
g20
g54
g00 x0 y0 f18.0 s9550 m03
g00 z0
g01 g91 z-0.29694 f50.0
g01 g41 x0.0259 y0.0259 d1
g03 x-0.0259 y0.0259 z0.00347 i-0.0259 j0 f1.15
g03 x0 y0 z0.02778 i0 j-0.0519 f1.15
g03 x0 y0 z0.02778 i0 j-0.0519 f1.15
g03 x0 y0 z0.02778 i0 j-0.0519 f1.15
g03 x0 y0 z0.02778 i0 j-0.0519 f1.15
g03 x0 y0 z0.02778 i0 j-0.0519 f1.15
g03 x0 y0 z0.02778 i0 j-0.0519 f1.15
g03 x0 y0 z0.02778 i0 j-0.0519 f1.15
g03 x0 y0 z0.02778 i0 j-0.0519 f1.15
g03 x0 y0 z0.02778 i0 j-0.0519 f1.15
g03 x0 y0 z0.02778 i0 j-0.0519 f1.15
g03 x-0.0259 y-0.0259 z0.00347 i0 j-0.0259 f2.31
g01 g40 x0.0259 y-0.0259 f50.0
g90
m05
m02
 

Attachments

  • thread.jpg
    thread.jpg
    94.4 KB · Views: 356
Fixed your code, the red parts. Should terminate properly now. I've seen cutter comp act funny, as in, only cutting on 1 side, especially if your trying to comp to much of the tool. Sometimes it's better to use a wear comp instead.
Hopefully you'll see a screen shot.
Dave

o00000001
g90
g20
g54
g00 x0 y0 f18.0 s9550 m03
g00 z0
g01 g91 z-0.29694 f50.0
g01 g41 x0.0259 y0.0259 d1
g03 x-0.0259 y0.0259 z0.00347 i-0.0259 j0 f1.15
g03 x0 y0 z0.02778 i0 j-0.0519 f1.15
g03 x0 y0 z0.02778 i0 j-0.0519 f1.15
g03 x0 y0 z0.02778 i0 j-0.0519 f1.15
g03 x0 y0 z0.02778 i0 j-0.0519 f1.15
g03 x0 y0 z0.02778 i0 j-0.0519 f1.15
g03 x0 y0 z0.02778 i0 j-0.0519 f1.15
g03 x0 y0 z0.02778 i0 j-0.0519 f1.15
g03 x0 y0 z0.02778 i0 j-0.0519 f1.15
g03 x0 y0 z0.02778 i0 j-0.0519 f1.15
g03 x0 y0 z0.02778 i0 j-0.0519 f1.15
g03 x-0.0259 y-0.0259 z0.00347 i0 j-0.0259 f2.31
g01 g40 x0.0259 y-0.0259 f50.0
g90
m05
m02

Hi Dave,
Good pickup on the g03 x-0.0259 y-0.0259 z0.00347 i0 j0.0259 f2.31, but I think that would be a typo, the same as the OP stated the g03 x-0.259 y0.0259 z0.00347 i-0.0259 j0 f1.15 was back in Post #6.

g03 X-0.0259 Y-0.0259 z0.00347 i0 J0.0259 f2.31 would have an arc centre outside the hole he's thread milling. Therefore, as the OP starts the thread Z-0.29694 down the hole from Z Zero, with the existing code driving the tool in the positive direction only 0.28474, assuming the top of the Workpiece is Z Zero, the very top thread would be damaged in the Y+ direction with a circular move that would be unmistakeable; see attached picture.
Thrd1.JPG

Its wear comp the OP's using. The J values used are only the difference between the Cutter Radius and the Radius of the Thread Major Diameter, not 0.1719 if full Cutter Rad Comp were being used.

Regards,

Bill
 
Hi Bill,
I figured he was comping all the tool, there in lies the problem "I think" as I've seen that problem before, cutting only 1 side. Not going to rule out a mechanical issue though either "or" the tap drill hole in the wrong spot.
Dave

P.S. I read all your programming posts, wish I knew HALF as much as you do. :bowdown:
 
Thanks, all, for the help. I'm cutting good parts now.
So what did you do to resolve the issue? Discounting the probable typos and small errors in your program listing, there seems not to be anything in the program that will result in your stated problem.

I'm skeptical of the Spread Sheet you're using. The math used to determine the Z move during the blend in and out of the Major Diameter is the Thread Lead multiplied by .125 (the same a divided the Lead by 8). This probably doesn't cause an actual issue, due to the amount of clearance on the single point tool, but if one bothers to carry out a calculation, its just as easy/hard to carry out the correct calcs.

I believe the author considers that if the diameter of the Blend circle is half that of the Thread Major Diameter, and the Engage/Disengage arc is through a quadrant of the Blend circle, then the the Z move must be 1/8 of Lead. This is incorrect. From a practical point of view, it may not be an issue, but the correct method is to:
1. Calculate the Helix Angle of Lead being used with the Thread Major Diameter.
2. Calculate a Lead for the Blend Circle that results in the same Helix Angle as that of the Thread Major Diameter.
3. Multiply the Lead found in 2 above by the fraction the Engage/Disengage Sector is of the full circle.


Regards,

Bill
 
So what did you do to resolve the issue? Discounting the probable typos and small errors in your program listing, there seems not to be anything in the program that will result in your stated problem.

I'm skeptical of the Spread Sheet you're using. The math used to determine the Z move during the blend in and out of the Major Diameter is the Thread Lead multiplied by .125 (the same a divided the Lead by 8). This probably doesn't cause an actual issue, due to the amount of clearance on the single point tool, but if one bothers to carry out a calculation, its just as easy/hard to carry out the correct calcs.

I believe the author considers that if the diameter of the Blend circle is half that of the Thread Major Diameter, and the Engage/Disengage arc is through a quadrant of the Blend circle, then the the Z move must be 1/8 of Lead. This is incorrect. From a practical point of view, it may not be an issue, but the correct method is to:
1. Calculate the Helix Angle of Lead being used with the Thread Major Diameter.
2. Calculate a Lead for the Blend Circle that results in the same Helix Angle as that of the Thread Major Diameter.
3. Multiply the Lead found in 2 above by the fraction the Engage/Disengage Sector is of the full circle.


Regards,

Bill

All I did was correct the typos. I didn't modify the spreadsheet. It seems to cut the threads I need, though I've not done any metrology on the threads. Eventually, I'll write my own routines.

For external threads, I ended up writing my own routine, as I couldn't find any (free) online tool to cut non-standard threads.
 
All I did was correct the typos. I didn't modify the spreadsheet. It seems to cut the threads I need, though I've not done any metrology on the threads. Eventually, I'll write my own routines.

For external threads, I ended up writing my own routine, as I couldn't find any (free) online tool to cut non-standard threads.

I comprehended that the typos were made in listing the code in this your Post to the Forum, particularly given your comment in Post #6.

What type of control are you using? With most controls, a check is made to ensure that the End Point of a programmed arc is on the Circular Trajectory defined by the Arc Centre and Radius given by the current slide location and the I/J addresses of the Arc Command block. In other words, it checks that the Radius of the End Point relative to the described arc centre, is the same as the Radius of the Start Point relative to the described arc centre, within a tolerance set via parameter. If the code doesn't meet this criteria, an alarm is raised.

In Fanuc and many other controls, when the set value of the parameter is 0, the difference of radii is not checked. If the control has high–precision contour control (HPCC), and when HPCC mode is active, a check is made for a difference in the arc radius even if the set value is “0” (with the allowable limit = 0).

%
O00000001
G90
G20
G54
G00 X0 Y0 F18.0 S9550 M03
G00 Z0
G01 G91 Z-0.29694 F50.0
G01 G41 X0.0259 Y0.0259 D1

Up to this point, the program defines a current Absolute location of X0.0259 Y0.0259

G03 X-0.259 Y0.0259 Z0.00347 I-0.0259 J0 F1.15

The above block defines a Helical Move, with
1. the Arc Component centred at X0.0 Y0.0259
2. an End point at Absolute X-0.2331 Y0.0518
3. an Arc Radius of 0.0259

The above End Point is not within a Bull's Roar of being correct, and therefore, an alarm should have been raised.

The alternate format for circular moves is using an "R" address instead of I, J and K. When this format is used, the control calculates the Arc Centre from the Start Point, End Point and Radius passed to it from the program code. It does this only when the data supplied defines a Geometrically possible move. The arc defined by the following code is Geometrically impossible.

G01 G41 X0.0259 Y0.0259 D1
G03 X-0.259 Y0.0259 Z0.00347 I-0.0259 J0 F1.15

and impossible by a Bull's Roar.

In all Motion Controls, the target point is sacrosanct, and by Hook or by Crook, that target will be made. Commonly, when "R" circular motion format is used, if the End Point is Geometrically impossible, the control swings the arc as best it can, and then moves linearly to the target End Point. But "R" format was not being used, so an alarm should have resulted.

The End Point described by G03 X-0.259 Y0.0259 Z0.00347 I-0.0259 J0 F1.15 is wrong by four times the diameter of the thread diameter being cut (corrected for the radius of the cutter). Accordingly, it wouldn't just be a case of cutting harder on the X- side, but that of watching the programmed code destroy the Cutter and Workpiece, as the control will be wanting to finish at a point that's nowhere near being inside the bore being cut. As the Cutter is starting at the bottom of the bore, this erroneous move could not have been overlooked; the fireworks and noise would have been a fairly obvious give away. But lets say that by some obscure process the cutter did manage to get to the target point, the thread would then be machined about a centre coordinate of Absolute X-0.2331 Y0.0, with the control continuing its attempt to destroy the cutter where it had failed when the cutter was able to finish the G03 X-0.259 Y0.0259 Z0.00347 I-0.0259 J0 F1.15 command block.

Regards,

Bill
 
Last edited:








 
Back
Top