On Wednesday 21 March 2018 14:38:09 Ken Strauss wrote:

> Thanks but...
> Isn't G76 for threading on a lathe and G33.1 for rigid tapping? I'm
> doing thread milling.
>
G76 is istr limited to lathe's as its not subject to the g17-19 rules. 

G33.1 can function on any axis set of a mill. So it might be modifyable 
for your use. I've used it for rigid tapping with the head laid 
horizontal on my G0704. Worked well.

Andy's code looks much simpler, so I would first see if it could do what 
you need to do.

I only have one thread mill, .750" OD and its likely too big, or almost 
too big for a 1" pipe thread.


> > -----Original Message-----
> > From: Gene Heskett [mailto:[email protected]]
> > Sent: Wednesday, March 21, 2018 2:07 PM
> > To: [email protected]
> > Subject: Re: [Emc-users] Tapered Helix
> >
> > On Wednesday 21 March 2018 10:47:31 Ken Strauss wrote:
> > > I need to thread mill some tapered threads (similar to normal pipe
> > > threads -- NPT). I am considering using polar coordinates in
> > > incremental mode to approximate a tapered helix. Is that
> > > reasonable? Is there a better way? Will cumulative errors bite me
> > > after hundreds of incremental moves?
> >
> > How big, Ken? Inside I assume... I have used both the G76 and G33.1
> > for
>
> low
>
> > angle stuffs by setting the entrance or exit paper length to
> > 1 pitch less than the length of the thread.  The man page is wrong
> > when
>
> says
>
> > the taper limit is 1/2 the thread length. I think that could be
> > extended
>
> by
>
> > doing the first using that rule of one pitch less than the total
> > stroke,
>
> and if
>
> > thats not deep enough, advance the z a multiple of the pitch, I've
> > not
>
> proved
>
> > it, might need some adjusting, and reduce the starting r by the
> > height difference used in the first pass.
> >
> > I have used this code to make a socket in the end of a shaft, that
> > with a matching taper threaded nut, and making 4 petals out of the
> > walls with
>
> edm,
>
> > to compress an A2 shaft onto a smallish ball screw, by tightening
> > the nut.
>
> Its
>
> > driving the x axis of my Sheldon 11x36 right now. With some green
> > threadlocker in the socket, I don't expect it to slip until I loosen
> > the
>
> nut.
>
> > Here is that file, quite complex because I tend to make a one trip
>
> Bumstead
>
> > out of projects like this, so it can be switched from boreing to
> > turning
>
> yadda
>
> > yadda.
> >
> > Setup ATM for making the nut described above. load it into LinuxCNC,
> > and expand the backplot to get a good view of what it does.  Reading
> > the code
>
> will
>
> > show you where and what to modify for your project, if its usable at
> > all. ===================cut here>
> > %
> > ( this is to make use of the g33 routine to carve a thread in the
> > format )
>
> ( of a
>
> > pipe thread, in this case an odd size that would resemble a 3/16" )
> > ( pipe thread is indeed there ever was such a thing. :) ( because
> > that seems to
>
> be a
>
> > Merican only thing, all starting dimensions are in inch) ( there is
> > a BS
>
> spec,
>
> > looks a lot like ASTME to me :) ( since everything is converted to
> > metric
>
> below,
>
> > make sure its in metric mode) ( We start not with a Merican
> > fractonal, but
>
> at
>
> > any arbitrary size ) ( and tpi, and degrees of taper desired if
> > desired. )
>
> ( length
>
> > of taper will be based on the thickness of the nut, which will
> > determine )
>
> (
>
> > that the stated angle will be true for the length of the nut ) (
> > however,
>
> the
>
> > actual Z travel will be longer since the initial Z should be a ) (
> > couple
>
> mm's
>
> > from first contact.)
> > (logopen,/home/gene/linuxcnc/g33debug.txt)
> > G21 (metric)
> > G8 (lathe radius mode)
> > G61
> > S350
> > ( set straight, like g76 by bypassing the G33 stuff)
> > #<_do_taper>                = 0.000000
> > #<_taper_deg>               = 7 ( degrees here, translates to sin[7]  later)
> > #<_bore_turn>               = 0.00000000 ( 1 for bore, zero for an
>
> external
>
> > profile)
> > #<_input_is_inch>   = 1.00000000 ( zero for all metric inputs)
> > #<_tpi>                     =       50 (adjustable. If input is inches,
>
> use inch, else
>
> > PUT mm's here)
> > #<_mkmmfctr>                =       25.4 (inch <-> metric conversion)
> > ( constants from Cecils images )
> > #<_e_xz_fctr>               =       0.7082000000 ( external -x +z combined 
> > feed
> > factor)
> > #<_e_doc_fctr>              =       0.6134000000 ( external thread
>
> d.o.c. external
>
> > cuts deeper)
> > #<_i_xz_fctr>               =       0.6250000000 ( internal +x +z combined 
> > feed
> > factor)
> > #<_i_doc_fctr>              =       0.5427000000 ( internal thread
>
> d.o.c. internal
>
> > is shallower)
> > (edit these)
> > #<_start_OD>                =       0.75500000 ( this is inches at the 
> > min/max
>
> OD
>
> > of thread it fits)
> > #<_thread_len>              =       0.56000000 (is inches, thickness of
>
> nut I
>
> > started with )
> > #<_passes>          = 25.00000000 (easy on the tool, constant advance)
> > #<_spring_passes>   = 5.00000000
> >
> >
> > (z advance derived from Cecils images IS NOT 100% CORRECT YET)
> > #<_e_z_advance>             = [[#<_e_xz_fctr> - #<_e_doc_fctr>] /
>
> #<_passes>]
>
> > #<_i_z_advance>             = [[#<_i_xz_fctr> - #<_i_doc_fctr>] /
>
> #<_passes>]
>
> > (log,38 e z advance per pass=#<_e_z_advance>)
> > (log,39 i z advance per pass=#<_i_z_advance>) ( now the x
> > increments) #<_e_x_advance>         = [#<_e_doc_fctr> / #<_passes>]
> > #<_i_x_advance>             = [#<_i_doc_fctr> / #<_passes>]
> > (log,43 e x advance per pass=#<_e_x_advance>)
> > (log,44 i x advance per pass=#<_i_x_advance>) ( these figures s/b
> > very
>
> small )
>
> > o005 IF [#<_input_is_inch> gt 0.50000000]
> >
> > #<_tpmm>            = [#<_mkmmfctr> / #<_tpi>] (mm's! - is correct )
> > #<_start_OD>                = [#<_start_OD> * 0.5000000 * #<_mkmmfctr>]
> > #<_thread_len>              = [#<_thread_len> * #<_mkmmfctr>]
> >
> > o005 ELSE
> >
> > #<_tpmm>            = #<_tpi>
> >
> > o005 ENDIF
> > (log,57 tpmm=#<_tpmm>)
> > (log,58 start OD in mm=#<_start_OD>)
> > (log,59 thread length in mm=#<_thread_len>)
> >
> > ( now we have the Major radius start_OD that everything else
> > references
>
> one
>
> > way or another )
> > #<_e_x_mnr_R>               =       [#<_start_OD> + [#<_e_doc_fctr> *
> > #<_tpmm>]] ( final d.o.c. )
> > #<_e_x_mjr_R>               =       [#<_start_OD> + #<_tpmm>]
> > #<_i_x_mjr_R>               =       #<_start_OD> ( final size of thread s/b
>
> correct
>
> > )
> > ( s/b reasonable mm's?  below )
> > (log,65 i_x_mjr_R=#<_i_x_mjr_R>)
> > #<_i_x_mnr_R>               =       [#<_i_x_mjr_R> - [#<_i_doc_fctr>*
> > #<_tpmm>]] ( starting bore size for the nut )
> >
> > (log,68 tpmm=#<_tpmm>)
> > (log,69 e_mjr_R=#<_e_x_mjr_R>)
> > (log,70 e_mnr_R=#<_e_x_mnr_R>)
> > (log,71 i_mjr_R=#<_i_x_mjr_R>)
> > (log,72 i_mnr_R=#<_i_x_mnr_R>)
> >
> > #<_e_pass>  =       [#<_e_x_advance> / #<_passes>]
> > (log,75 e_pass=#<_e_pass>)
> > #<_i_pass>  =       [#<_i_x_advance> / #<_passes>]
> > (log,77 i_pass=#<_i_pass>)
> >
> > ( now 4 more things that will be needed, P/8 will be assumed as ) (
> > real
>
> tip flat
>
> > + 0.000, but real tip flat width has yet TBD. So ) ( assume it has a
>
> finite value =
>
> > pdiv8 with the sign made negative ) ( so pdiv8=0.00, pdiv6 and pdiv4
>
> reduced
>
> > accordingly.  This DOES NOT ) ( change with the thread being cut,
> > but with
>
> the
>
> > chip doing the cutting ) ( So P/6 will be P/6 - real tip flat ) (
> > and P/4
>
> will be P/4
>
> > - real tip flat )
> > #<_realtipflat>     =       -0.1175930000 (will make pdiv8=0.0000 until
>
> I know
>
> > better )
> > #<_pdiv8>           =       [[#<_tpmm> / 8.00000000 ] + #<_realtipflat>]
> > #<_pdiv6>           =       [[#<_tpmm> / 6.00000000 ] + #<_realtipflat>]
> > #<_pdiv4>           =       [[#<_tpmm> / 4.00000000 ] + #<_realtipflat>]
> > (log,90 realtipflat=#<_realtipflat>)
> > (log,91 pdiv8=#<_pdiv8>)
> > (log,92 pdiv6=#<_pdiv6>)
> > (log,93 pdiv4=#<_pdiv4>)
> > ( now we can adjust realtipflat until its correct, but my machine )
> > ( is
>
> not THAT
>
> > accurate. Time to make that tapered front gib. ) ( 2 months later!)
> > (
>
> done,
>
> > made both, turned out to be hell with a twisted file!) ( looks like
> > I
>
> might be
>
> > ready to state the premise of what we do with ) ( all this data. )
> >
> > o100 IF [#<_bore_turn> gt 0.500000]
> > (we're making a nut)
> > #<_start_rad>       = #<_i_x_mjr_R>
> > #<_end_rad> = #<_i_x_mnr_R>
> > #<_x_advance>       = #<_i_x_advance>
> > #<_z_advance>       = -#<_i_z_advance>
> > #<_back_clear>      = [#<_end_rad> - [#<_tpmm> * 0.50000000]]
> > #<_z_end>   = -#<_thread_len>
> > #<_x_taper> = -[0.50000000 * #<_thread_len> * SIN[#<_taper_deg>]]
> >
> > o100 ELSE
> > ( we are turning a shaft)
> > #<_e_x_mnr_R>       =       [#<_start_OD> - [#<_e_doc_fctr> * #<_tpmm>]] (
> > final d.o.c. )
> > #<_e_x_mjr_R>       =       [#<_start_OD> + #<_tpmm>]
> > (we're cutting an external taper)
> > #<_start_rad>       = #<_e_x_mnr_R>
> > #<_end_rad> = #<_e_x_mjr_R>
> > #<_x_advance>       = #<_e_x_advance>
> > #<_z_advance>       = #<_e_z_advance>
> > #<_back_clear>      = [#<_start_rad> + 1]
> > #<_z_end>   = -#<_thread_len>
> > #<_x_taper> = [0.50000000 * #<_thread_len> * SIN[#<_taper_deg>]]
> > o100 ENDIF
> > (log,115 start rad=#<_start_rad>)
> > (log,116 end rad=#<_end_rad>)
> > (log,117 x advance per pass=#<_x_advance>)
> > (log,118 z advance per pass=#<_z_advance>)
> > (logclose)
> > (m6t6)
> > m3
> > #<_z_tmp> = 0.00000000
> > #<_x_tmp> = 0.00000000
> > (G1 f650 Z2)
> > (G1 X#<_start_rad>)
> >
> > o600 IF [#<_do_taper> gt .5000000]
> >
> > o500 WHILE [#<_passes> gt 0.0000000]
> > (G1f400 Z#<_z_tmp>)
> > G1 F500 X[#<_start_rad> - #<_x_tmp>]
> > G1 Z#<_z_tmp>
> > (G33 x z k)
> > G33 Z[#<_z_end> + #<_z_tmp>] X[#<_end_rad> - #<_x_tmp>] K#<_tpmm>
> > G1 F800 x#<_back_clear>
> > G1 F950 z#<_z_tmp>
> > #<_z_tmp>   = [#<_z_tmp> + [-#<_z_advance> * 4.0000000]]
> > #<_x_tmp>   = [#<_x_tmp> + #<_x_advance>]
> > #<_passes>  = [#<_passes> - 1.00000000]
> > o500 ENDWHILE
> > #<_count>   = #<_spring_passes>
> > o550 WHILE  [#<_count> ge 0.00000]
> > g1 x#<_back_clear>
> > g1 F750 z#<_z_tmp>
> > G1 F600 X[#<_start_rad> - #<_x_tmp>]
> > G33 Z[#<_z_end> + #<_z_tmp>] X[#<_end_rad> - #<_x_tmp>] K#<_tpmm>
> > #<_count>   =       [#<_count> - 1.000000]
> >
> > o550 ENDWHILE
> >
> > G1 F500 Z0.0000 (back at starting Z)
> > #<_z_tmp>   = 0.00000
> > #<_x_tmp>   = 0.00000
> >
> > G1 F50 x[#<_start_OD> + 2.355000000] (in mm's folks, shrink to cut
> > deeper) G1 z#<_z_tmp>
> > (debug,start_od=#<_start_OD>)
> > #<_thread_len>      =       [#<_thread_len> + 0.25000]
> > (debug,thread_len=#<_thread_len>)
> > #<_i_tmp>   =       -1.75000
> > (debug,_tpmm=#<_tpmm>)
> > #<_k_tmp>   =       [#<_tpmm> * 1.95000]
> > (debug,k_tmp=#<_k_tmp>)
> >
> > o600 ENDIF
> > #<_k_tmp>   =       [#<_tpmm> * 1.95000]
> > #<_i_tmp>   =       0.90000
> > G1 F400 x[#<_start_OD> - 2.400]
> > G1 F400 z0.0000     ( and back to the starting z)
> > ( one line added to cut rear tapered nut)
> > #<_e_taper> = ABS[#<_thread_len> - #<_tpmm>]
> > G76 Z-#<_thread_len> I#<_i_tmp> j.150 P#<_tpmm> K#<_k_tmp> Q29.9
> > R1.7 H10 E#<_e_taper> L2
> >
> > G1 x[#<_start_OD> - 2.000]
> > G1 F950 z200
> > m5
> > m2
> > <cut here==================
> >
> > --
> > Cheers, Gene Heskett
> > --
> > "There are four boxes to be used in defense of liberty:
> >  soap, ballot, jury, and ammo. Please use in that order."
> > -Ed Howdershelt (Author)
> > Genes Web page <http://geneslinuxbox.net:6309/gene>
>
> ----------------------------------------------------------------------
>------ --
>
> > Check out the vibrant tech community on one of the world's most
> > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> > _______________________________________________
> > Emc-users mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/emc-users
>
> ----------------------------------------------------------------------
>-------- Check out the vibrant tech community on one of the world's
> most engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Emc-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/emc-users



-- 
Cheers, Gene Heskett
--
"There are four boxes to be used in defense of liberty:
 soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)
Genes Web page <http://geneslinuxbox.net:6309/gene>

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Emc-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-users

Reply via email to