V groves in bar on cnc lathe

More
16 Jan 2015 08:30 #55065 by nilrods
I was trying to figure out how I would code the following, cutting v grooves in bar stock on a CNC lathe. I looked around all over on the web and couldn't find any examples.

I know it would be easy to program the gcode to just plunge in directly but I was thinking it would be better to do like a threading cycle does and start on one side and slowly slide at an angle to get to full depth. Doesn't look like I can use a threading cycle though since there is no pitch. I am sure there is something simple I am missing.

Any thoughts on how to approach this one? Think of it as a v grooving a pulley, just smaller on say 1/2 bar stock. There would be multiple parallel grooves cut in the bar.

Any insight would be helpful.

Thanks,
Chris

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

More
16 Jan 2015 09:47 #55066 by accuartisans
This really depends on your tooling that you are using. In the past I would use a grooving tool, plunging x number of plunges that would cut the complete bottom, then still using the grooving tool plunge each side of the groove angle. Depending on the angle spread (if it's wider that the grooving tool) you may need to do a rough plunge part of the angled sides. There really isn't a "canned" cycle to do this approach that I know of.

km

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

More
17 Jan 2015 00:14 #55091 by nilrods
Well the tooling I was going to use was a 60 degree threading tool.

I kind of wondered if there wasn't some easy way since I couldn't find anything online. Oh well sounds like time to break out the rusty trig then or maybe see what Bobcad will produce.

Thanks,
Chris

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

More
17 Jan 2015 00:37 #55094 by andypugh

I was trying to figure out how I would code the following, cutting v grooves in bar stock on a CNC lathe. I looked around all over on the web and couldn't find any examples.


I would code this by hand using a loop.

The loop would increment the depth.

So, first move is cut in at the taper angle to the first depth increment, then a Z feed to (nearly) the full width, then feed out at the taper angle.
Next cut starts at the same point, plunges a bit deeper, cuts a bit shorter.

Not quite the same thing, but I hand-coded this a few days ago to cut a circular groove:

imagebin.ca/v/1oGV3BuEoYon

Ignore the fact that it is not a semi-circle, I forgot to switch to the XZ plane, and strange results happen in that scenario. It just shows a simple loop to cut a profile.

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

More
17 Jan 2015 02:35 #55103 by nilrods
Andy,
Thanks for the idea. Yeah that is kind of what I was thinking of also. Was just hoping there was an easier way I didn't know.

I will give something like you did a try.

Thanks,
Chris

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

More
17 Jan 2015 15:35 - 17 Jan 2015 15:40 #55120 by Rick G
Replied by Rick G on topic V groves in bar on cnc lathe
You could look at NGCGUI...

linuxcnc.org/docs/html/gui/ngcgui.html
www.linuxcnc.org/index.php/english/forum...broutines-and-ngcgui





The below code is not correct but a quick hack of an existing sub, but it gives you an idea.
(odvcut for lathe from odtaper3)

;Do not use, not a working sub
;concept only

o<odvcut>sub
     #<Large_Diam> =    #1 (=1.00 Large Diameter)
     #<Small_Diam> =    #2 (=0.500 Small Diameter)
     #<Max_Cut> =       #3 (=0.100 Max Depth of Cut)
     #<Start_z> =       #4 (=0.00 Z Start of Cut)
     #<Center_z> =      #5 (=-.500 Z Center of Cut)
     #<End_z> =         #6 (=-1.00 Z End of Cut)
     #<Feed> =          #7 (=4 Feed IPM)
;     #<Final_Cut> =	#7 (=.005 Final Cut)
;     #<Fin_ Feed> = 	#8 (=2 Final cut speed)
;     #<Spring_Cuts> =   #9 (=0 Spring Cuts)
     

#<Stock_Diam_F> = #<Large_Diam>
#<Start_Diam_F> = #<Small_Diam>

;#<Large_Diam> = [#<Large_Diam> + #<Final_Cut>]
;#<Small_Diam> = [#<Small_Diam> + #<Final_Cut>]


#<Z_Len> = [0 - [#<End_z> - #<Start_z>]] ; length of Z cut
#<Cut_Amount> = [#<Large_Diam> - #<Small_Diam>] ; deepest X cut
#<Cuts> = FUP [[#<Cut_Amount> /  #<Max_Cut>]] ; round up the number of passes to reach deepest cut
#<Max_Cut> = [#<Cut_Amount> / #<Cuts>] ; amount to take off X each pass
#<Z_Cut> = [#<Z_Len> / #<Cuts>] ;length of each Z cut


;(DEBUG, Stock_Diam  #<Large_Diam>)
;(DEBUG, Target_Amount #<Target_Amount>)
;(DEBUG, Max_Target_Cut #<Max_Target_Cut>)


g18 (xz plane)
g20 (inches)
g40 (cancel cutter radius compensation)
g49 (cancel tool lengthoffset)
g90 (absolute distance mode)
g94 (units/min feedrate)
g54 (Coordinant system 1 default)
g7  (diameter mode)
g64 p.001 q.001 

M3 ; spindle cw

G0 X[#<Large_Diam> + .010] Z#<Start_z>
F#<Feed>
G1 X#<Large_Diam> 

#<Current-Diameter> = #<Large_Diam>
#<Current-Z> = #<Start_z> 
#<X_Target> = #<Large_Diam>
#<Z_Target> = #<Start_z> 

;#<Z_Target> = [#<Z_Target> - #<Z_Cut>]

o100 while [#<Cuts> gt 0]

#<Current-Diameter> = [#<Current-Diameter> - #<Max_Cut>]  
#<Z_Target> = [#<Z_Target> - #<Z_Cut>]

;G0 X [#<Current-Diameter> + .010]
G1 X #<Current-Diameter> Z #<Center_z>
;G1 X #<Current-Diameter>  
G1 X #<Large_Diam> Z #<End_z>
G0 X [#<Large_Diam> + .010]
G0 Z #<Start_z>

#<Cuts> = [#<Cuts> - 1]

o100 endwhile

; add finish cut here 
 

M5             ; stop spindle
G0 Z #<Start_z>

o<odvcut>endsub
Attachments:
Last edit: 17 Jan 2015 15:40 by Rick G.

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

Time to create page: 0.117 seconds
Powered by Kunena Forum