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
