Threading

More
02 Sep 2013 18:34 #38424 by BigJohnT
Threading was created by BigJohnT
This is my G76 threading subroutine. Place the attached image in the same directory.
(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
Attachments:
The following user(s) said Thank You: Dinuka_Shehan

Please Log in or Create an account to join the conversation.

More
14 Jul 2017 02:38 #95784 by 10K
Replied by 10K on topic Threading
Here's another version of a threading subroutine. I designed it so that you have to input the minimum amount of information - the nominal diameter, the TPI, and the length of thread. It's in imperial units, but could be converted fairly easily if desired.

My lathe has manually controlled speed, so that is not set by the subroutine.
Attachments:
The following user(s) said Thank You: Dinuka_Shehan, Фрезер

Please Log in or Create an account to join the conversation.

More
17 Aug 2019 15:45 - 17 Aug 2019 19:34 #142393 by Dinuka_Shehan
Replied by Dinuka_Shehan on topic Threading
Can threading with manually controlled speed(without vfd) lathe with this command lines?
I can measure spindle rpm with handheld tachometer!

don'tyouhavemetricthreadsub
Last edit: 17 Aug 2019 19:34 by Dinuka_Shehan.

Please Log in or Create an account to join the conversation.

More
23 Aug 2019 14:31 #142958 by 10K
Replied by 10K on topic Threading
I don't have a VFD. Speed control of my lathe is outside of LinuxCNC. I do have two detectors on my lathe spindle. One is an index that gives one pulse per revolution. The other is a proximity probe that counts gear teeth to give several pulses per revolution. If I recall correctly, you can also have a second detector on the gear teeth to give direction, but it's not absolutely necessary for threading.

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.
The following user(s) said Thank You: Dinuka_Shehan

Please Log in or Create an account to join the conversation.

More
23 Aug 2019 20:50 - 21 Sep 2019 06:48 #143010 by Dinuka_Shehan
Replied by Dinuka_Shehan on topic Threading
:P
Last edit: 21 Sep 2019 06:48 by Dinuka_Shehan.

Please Log in or Create an account to join the conversation.

More
18 Oct 2019 22:14 - 18 Oct 2019 22:15 #148230 by Dinuka_Shehan
Replied by Dinuka_Shehan on topic Threading


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?
Last edit: 18 Oct 2019 22:15 by Dinuka_Shehan.

Please Log in or Create an account to join the conversation.

More
18 Oct 2019 23:15 #148232 by 10K
Replied by 10K on topic Threading
Here's a metric threading routine
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:
The following user(s) said Thank You: chimeno, nkp, tommylight, Dinuka_Shehan, Фрезер

Please Log in or Create an account to join the conversation.

More
19 Oct 2019 03:43 #148280 by Dinuka_Shehan
Replied by Dinuka_Shehan on topic Threading
It is complicated for change values.
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.

More
19 Oct 2019 14:41 #148328 by 10K
Replied by 10K on topic Threading
You don't have to change anything in the program. Link it to your GUI, and run it from there. I'm using the gmoccapy GUI. It'll bring up the parameters on an easy to change screen. Most of the info is OK as is. Input the thread size and pitch, and it'll generate the code automatically.

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
The following user(s) said Thank You: chimeno, Clive S, Dinuka_Shehan, Фрезер

Please Log in or Create an account to join the conversation.

More
21 Oct 2019 06:34 #148444 by Dinuka_Shehan
Replied by Dinuka_Shehan on topic Threading

You don't have to change anything in the program. Link it to your GUI

How to link with gui.
Steps or any guidance please!

Please Log in or Create an account to join the conversation.

Time to create page: 0.118 seconds
Powered by Kunena Forum