Threading
(info: G76 Threading)
o<g76> sub
#<tool> = #1 (= 7 Tool)
#<rpm> = #2 (= 250 RPM)
#<diameter> = #3 (Diameter)
#<tpi> = #4 (TPI)
#<inital_depth> = #5 (= 0.010 Inital Depth)
#<thread_depth> = #6 (= 0.045 Thread Depth)
#<spring_pass> = #7 (Spring Passes)
#<z_start> = #8 (= 0.100 Z Start)
#<z_end> = #9 (Z End)
#<x_offset> = #10 (= 0.025 X Offset)
#<q_angle> = #11 (= 29.5 Combine Angle)
#<taper> = #12 (= 0 Taper 0=none 2=exit)
#<coolant> = #13 (= 8 Coolant 8 On 9 Off)
#<pitch> = [1/#<tpi>]
#<radius> = [#<diameter> / 2]
G8 G18 G20 G40 G49 G97
T#<tool> M6 G43
M#<coolant>
S#<rpm> M3
G0 Z#<z_start> X[#<radius> + #<x_offset>]
G76 P#<pitch> Z#<z_end> I-#<x_offset> J#<inital_depth> K#<thread_depth> Q#<q_angle> L#<taper> E#<thread_depth> H#<spring_pass>
M5 M9
G53 G0 X0 Z0
o<g76> endsub
JT
Please Log in or Create an account to join the conversation.
My lathe has manually controlled speed, so that is not set by the subroutine.
Please Log in or Create an account to join the conversation.
- Dinuka_Shehan
- Offline
- Platinum Member
- Posts: 346
- Thank you received: 26
I can measure spindle rpm with handheld tachometer!
don'tyouhavemetricthreadsub
Please Log in or Create an account to join the conversation.
The one pulse per revolution is needed, as it assures you're starting the thread at the same location each pass. This is absolutely necessary.
Multiple pulses per revolution allow you to change the rpms on the lathe during threading.
I don't think it would be possible to have only the reading from a handheld tachometer to thread.
If you need the metric version of the threading subroutine, I think that I wrote one. I'm away from my system at the moment, and can't check. Just let me know.
Please Log in or Create an account to join the conversation.
- Dinuka_Shehan
- Offline
- Platinum Member
- Posts: 346
- Thank you received: 26
Please Log in or Create an account to join the conversation.
- Dinuka_Shehan
- Offline
- Platinum Member
- Posts: 346
- Thank you received: 26
If you need the metric version of the threading subroutine, I think that I wrote one. I'm away from my system at the moment, and can't check. Just let me know.
Have not you created a metric one?
Please Log in or Create an account to join the conversation.
o<threading-metric> sub
(metric threading subroutine)
(threading-metric.ngc)
(July 11, 2016 - M Kennedy)
(Change these values)
#<_MajorDiameter> = #1 (Major Diameter)
#<_Pitch> = #2 (Pitch mm)
#<_Z_Finish> = #3 (+/- Z Length mm, Z)
(Don't usually have to change these values)
(PeakOffset is initial tool clearance)
#<_PeakOffset> = #4 (= -.1 Offset -ext, +int, I)
#<_TipRadius> = #5 (= 0.005 Tip Radius)
#<_Z_LeadIn> = #6 (= 2.5 Z Leadin)
#<_Z_Final> = #7 (= 50 Z Final Position)
#<_Spring_Passes> = #8 (= 1 Spring Passes, H)
#<_First_Cut_Depth> = #9 (= 0.18 First Cut Depth, J)
#<_Depth_Regression> = #10 (= 1.2 Depth Regression, R)
#<_CompoundSlideAngle> = #11 (= 29.5 Angle, Q)
#<_TaperAmount> = #12 (= 0 Taper)
#<_TaperType> = #13 (= 0 Taper Type, L)
(check to see if tool set)
o100 if [#5400 EQ 0]
(msg, Tool not set)
M2
o100 endif
(Calculations)
(calculate ThreadDepth, K)
o110 if [#<_PeakOffset> GT 0]
(internal = pitch * cos30 * 2 * 6/8 - 2 * tip radius)
#<_ThreadDepth>=[#<_Pitch> * 1.299 - 2 * #<_TipRadius>]
(thread height = pitch * cos30 * 2 * 5/8)
#<_MinorDiameter>=[#<_MajorDiameter> - #<_Pitch> * 1.0825]
#<_Diameter>=[#<_MinorDiameter> - #<_PeakOffset>]
o110 else
(external = pitch * cos30 * 2 * 7/8 - 2 * tip radius)
#<_ThreadDepth>=[#<_Pitch> * 1.5155 - 2 * #<_TipRadius>]
#<_Diameter>=[#<_MajorDiameter> + #<_PeakOffset>]
o110 endif
G7 G18 G54 G90 G94
G21 (set metric units)
G95 (feed per revolution mode)
M3
F0 S500
(Go to OD and Z Lead in)
G0 X#<_Diameter> Z#<_Z_LeadIn>
(Thread)
G76 P#<_Pitch> Z#<_Z_Finish> I#<_PeakOffset> J#<_First_Cut_Depth> R#<_Depth_Regression> K#<_ThreadDepth> Q#<_CompoundSlideAngle> H#<_Spring_Passes> L#<_TaperType>
G00 X#<_Diameter>
G00 Z#<_Z_Final>
G20 (set standard units)
M5
o<threading-metric> endsub
Attachments:
Please Log in or Create an account to join the conversation.
- Dinuka_Shehan
- Offline
- Platinum Member
- Posts: 346
- Thank you received: 26
O codes and hash tags confused me.
Can you please tell me how to create code with this.
Any examples
Please Log in or Create an account to join the conversation.
Here's the section of my .INI file that links this and several other o-code programs in:
# NGCGUI Entries
# Note: TKPKG (one or more) specifies tcl/tk apps to embed in axis tab pages
TKPKG = Ngcgui 1.0
NGCGUI_FONT = Helvetica -10 normal
EMBED_TAB_NAME = NGCGUI
EMBED_TAB_LOCATION = ntb_user_tabs
EMBED_TAB_COMMAND = gladevcp -x {XID} ./pyngcgui_popupkeyboard.ui
NGCGUI_PREAMBLE = lathe_std.ngc
NGCGUI_SUBFILE = threading.ngc
NGCGUI_SUBFILE = threading-metric.ngc
NGCGUI_SUBFILE = npt_pipe.ngc
NGCGUI_SUBFILE = turning.ngc
NGCGUI_SUBFILE = taper-od.ngc
NGCGUI_SUBFILE = facing.ngc
NGCGUI_SUBFILE = knurling.ngc
NGCGUI_OPTIONS = nonew noremove
Please Log in or Create an account to join the conversation.
- Dinuka_Shehan
- Offline
- Platinum Member
- Posts: 346
- Thank you received: 26
How to link with gui.You don't have to change anything in the program. Link it to your GUI
Steps or any guidance please!
Please Log in or Create an account to join the conversation.