Mastering the Art of Broaching Involute Splines: A Guide for CNC Lathes and Mills

Writing a CNC program for broaching internal involute splines can be a complex task, but it can be made easier by understanding some key concepts and techniques. In this blog post, we will discuss the benefits of using a G68 Coordinate Rotation command when programming to run in a CNC mill, we will discuss the benefits of using subprograms, and we will provide examples of CNC lathe and CNC mill programs for broaching a 12 tooth spline with a single tooth broach insert.

Using G68 Work Coordinate Rotation when broaching splines in a CNC mill

Using a G68 Work Coordinate Rotation g-code when CNC milling can greatly simplify the broach programming process by allowing the user to create a programmed path which stays parallel to the machine’s axis. By using a G68 to rotate the machine’s work coordinate system instead of the part, the program aligns the broach cutter to the next index position without the need to reposition the workpiece or rewrite new code to feed the broach into the material at an angle. This eliminates the need for manual adjustments and reduces the risk of human error. Incorporating G68 Work Coordinate Rotation g-code in the CNC milling process can greatly simplify the programming of internal involute splines and increase efficiency. An example of a G68 adjustment is as follows: “G90G68X0.0Y0.0R30.0” this rotates the machine’s work coordinate system by 30.0 degrees from the X0 Y0 position to an absolute value of 30 degrees. A “G91G68R30.0” indexes the work coordinate incrementally by 30 degrees. G69 cancels the G68 and sets the rotation back to normal

Make life easier by using subprograms

One of the key benefits of using subprograms in CNC programming is that they allow you to create repeating geometry without the need to rewrite the code. This can make the programming process more efficient and less prone to errors. Here are some examples of why you may want to use a subprogram when programming a spline: 

  • A subprogram can be created to cut a single tooth parallel to the X or Y axis. This subprogram can then be used over and over again to cut all the teeth. 
  • Programming the Broach to cut teeth which are in line with the machine’s axis is fairly straightforward. No angular feeds or retracts are required.  
  • Creating a subprogram for broaching a single tooth shortens the main program and allows you to adjust the major diameter by simply editing a single number
  • A subprogram can be used inside a subprogram

For CNC mill broaching a 12 tooth involute spline with an insert which has a single tooth, here is an example of a basic program. Please note that this is an example only and should only be used as a guide:

(BROACHING A 12 TOOTH SPLINE IN HAAS VERTICAL MILL WITH NO 4TH AXIS - MAIN PROGRAM)
(PROGRAM FEEDS TOWARDS Y POSITIVE DIRECTION)
(NOTE - G91 IS INCREMENTAL AND G90 IS ABSOLUTE)
(THIS PROGRAM CAN ONLY BE USED WHEN THERE IS ADEQUATE CLEARANCE BETWEEN THE BORE AND THE BACK OF THE HOLDER)

%
T10M06H10D10(USING T6MMML CNC BROACH TOOL)
G00G90G54G43(PART HAS .925 MINOR AND 1.115 MAJOR)
X0Y0.0324M08(START POINT FOR Y)
Z0.625(START .625 ABOVE PART)
#100=15.0(SET SPINDLE ROTATION SOURCE TO 0)
G69(ROTATION OFF)
M97P100L12(CUT 12 SPLINES)
M30

(THIS SUB PROGRAM SETS M19 INDEX POSITION)
N100M19P#100(INDEX SPINDLE TO VALUE IN #100)
M97P200L95(GOTO LINE N200 L TIMES - L95 X .001 = .095)
G90G00X0Y0(GO TO CENTER OF BORE)
#100=#100+30.0(INCREMENT SPINDLE ROTATION SOURCE CLOCKWISE)
G91G68R-30.0(INCREMENTALLY ROTATE WORK COORDINATE)
M99

(THIS SUB PROGRAM TAKES EACH PASS)
N200G91G1Z-1.5F300.(FEED Z- INCREMENTALLY .200 BEYOND END OF SPLINE)
G91G00Y0.0947(RETRACT Y INCREMENTALLY OUT OF KEYWAY)
G91G00Z1.5(RETRACT Z INCREMENTALLY ABOVE PART)
G91G00Y-0.0947(RETURN INCREMENTALLY TO PREVIOUS CUT POSITION)
G91G01Y-0.001(DEPTH OF CUT PER PASS)
M99
%

To give you an idea of how to write a CNC lathe program for broaching a spline, here is an example of a basic program for broaching a 12 tooth spline with an with an insert which has a single tooth. Please note that this is an example only and should only be used as a guide:

%
O0008
(SPLINE BROACH MACRO PROGRAM)

(FOR MORI SEIKI NL1500 - MAIN PROGRAM)
(BROACHING A 12 TOOTH SPLINE WITH THE T6MML HOLDER) 
(CONTAINS SUB PROGRAM #0070)

(ENTER YOUR KEYWAY DATA ON THE NEXT 5 LINES)
#501=1.00(ENTER KEYWAY LENGTH HERE)
#502=.925(ENTER STARTING DIAMETER HERE)
#503=1.115(ENTER ENDING DIAMETER HERE)
#504=.001(ENTER RADIAL DOC PER PASS HERE)
#505=300.0(ENTER IPM FEED RATE HERE)
#506=12.0(ENTER NUMBER OF TEETH)

(DO NOT EDIT THESE 5 LINES)
#507=[[#503-#502]/2](AUTO CALCULATES FULL DEPTH)
#508=[#507/#504](AUTO CALCULATES NUMBER OF PASSES)
#509=1(RESETS PASS COUNTER)
#510=[360/#506]
#511=1(RESETS INDEX COUNTER)

G20(INCH INPUT)
G98(FEED PER MINUTE)
G50S500(SET MAX RPM)
G00G30U0W0(RAPID TO HOME POSITION)
T0100(CALL TOOL)
M45(C-AXIS MODE ON)
G0C0(ROTATE C AXIS)
G0X[#502]Z.625T0101(CALL OFFSET AND RAPID .625 INCH IN FRONT OF PART)
M8(COOLANT ON)
#509=1(RESETS PASS COUNTER)
#511=1(RESETS INDEX COUNTER)
M98P0060L[#506](CALL O0060 TO SET ROTATION #506 TIMES)
M46(C-AXIS MODE OFF)
G0G99Z1.M9(COOLANT OFF)
#509=1(RESETS PASS COUNTER)
#511=1(RESETS INDEX COUNTER)
G30U0W0T0100(GO HOME AND CANCEL OFFSET)
M30(RESET PROGRAM)


O0060
(ROTATION SUB PROGRAM)
M68(SPINDLE BRAKE)
M98P0070L[#507](CALL O0070 AND REPEAT #507 TIMES)
#509=1(RESET PASS COUNTER)
M69(RELEASE SPINDLE BRAKE)
G00C[#510*511](INDEX SPINDLE)
#511=#511+1(SPINDLE INDEX COUNTER)
M99

O0070
(BROACH SUB PROGRAM)
G98G1Z[[[#501]*[-1]]-.200]F[#505](FEEDS .200 BEYOND #501)
X[#502](RETRACT ON X)
G0Z.625(RETRACT ON Z)
#509=#509+1(PASS COUNTER)
G0X[#502+[#509*[#504*2]]](RAPID TO NEXT X POSITION)
M99(RETURN TO MAIN PROGRAM)
%

When broaching involute splines in both lathes and mills, it is important to consider the different options for indexing the part. In a lathe, this can be done using the C axis and can be used in combination with the brake. In a CNC mill you can either use an indexer to index the part or if you have a machine with an adjustable M19 position this can be used in combination with the G68 mentioned above. Most machines use either a P, R, or S value to adjust the M19. For example: M19 P30.0, or M19 R30.0, or M19 S30.0

In order to achieve the best results when broaching involute splines, it is essential to ensure that the setup is as rigid as possible. This means that the workpiece should be securely clamped in place and that the cutting tool should be held as firmly as possible. A lack of rigidity can lead to tool deflection, which can result in poor surface finish and accuracy. Follow these links to learn more about Rigidity and the best clamping method when mounting a CNC Broach tool

Finally, it is important to dial in the part before starting the broaching process. This means that the workpiece should be rotated and the tool should be adjusted until the correct cutting angle is achieved. This can help to ensure that the finished product meets the desired specifications.

In conclusion, broaching involute splines in CNC machines requires a combination of knowledge and techniques, from using subprograms, using G68, to ensuring rigidity and dialing in the part. By understanding these concepts and techniques, you can improve the efficiency and accuracy of your broaching operations.

Share

Written by:

15 Posts

View All Posts
Follow Me :
error: Content is protected !!