Thanks but... Isn't G76 for threading on a lathe and G33.1 for rigid tapping? I'm doing thread milling.
> -----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
