Spoilboard Surfacing - 2D Adaptive Clearing - Tool Bottoming Out

More
04 Nov 2023 17:29 #284550 by Lethal69GTO
I am not sure what I am doing incorrectly, clearly not understanding settings in F360 for spoilboard surfacing using 2D Adaptive Clearing.

I chose 2D Adaptive Clearing because my spoilboard model in F360 is sized to maximum usable area of DIY PintNC machine, 24"x38"and there is no available X-Y to accommodate overrun of the tool, limit switches would be reached.  From hat I gather, the 2D Adaptive Clearing keeps the tool within the confines of the spoilboard dimensional limits.

The tool of choice is a BINSTAK 4-flute, 2" diameter, 1/2" cut length, 1/2" shank, and 2.5" OAL.  The bottom-most edge of the flute cutting edge is 1-1/16" below the spindle collet.  In F360 it is defined as a Face Mill, tool parameter definition in attachment.

I know the right side of my spoilboard sits higher than the left, maybe 1-1.5mm.  I thought about adjusting the difference mechanically but that would require too much machine disassembly, so I am hoping surfacing can rectify the issue even if it means more material needs to be removed on right side.

My issue is shortly after the job starts it would appear cutter is trying to take too much material and the spindle is bottoming out, see attachment.  The Bottom Height is from Selected Contour with Offset of -1.0mm.  Top Height is Stock Top, Offset of 0mm.  The "Passes" Multiple Depth step setting originally started out at 0.1mm, didn't work.  Changed to 0.02mm, didn't work.  Just tried 0.015mm, didn't work.

Would those with the devine knowledge please review my settings, and if a better solution is warranted, please advise.  Thank you.

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

More
20 Nov 2023 10:11 #286007 by andypugh
I would jog to the lowest point, touch-off the tool to zero there, and ask F360 to mill down to zero over the whole area.
This assumes that the tool can physically reach, of course.

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

More
20 Nov 2023 21:20 #286101 by Lethal69GTO

I would jog to the lowest point, touch-off the tool to zero there, and ask F360 to mill down to zero over the whole area.
This assumes that the tool can physically reach, of course.

 

Thanks.  I gave up with using F360 to define the setup and program, seemed nothing I tried could alleviate boundary issues.  So I rolled my own toolpath program cutting left-to-right one direction only and front to back.  I set Z touch-off zero to the highest side not wanting to overload the spindle again where it comes to a stop with the thought process to take the high side off first and work its way down to low side elevation.  Not using tool table.

I don't think my program is quite correct.  Once the level zero iteration completes the drop to next layer cut down doesn't seem to be taking off any material, the flutes appear to be still at level zero and this is true for every successive pass.  Could use a review and feedback on the program.  Its my first, so I am sure there must be a mistake I am not seeing.  Thank you.
 
Attachments:

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

More
20 Nov 2023 21:41 #286103 by spumco
After a quick glance I don't see anything horribly wrong with your program.

If you artificially set your Z0 about 25mm above the stock and comment out the M3 then run it, does the DRO display the programmed height at the 2nd pass? i.e. Z-0.064mm?

If it does display the correct Z height, if you've got the means maybe you can stop it and measure if the Z is actually where its supposed to be.

That's a really small distance (about 0.002" I think)... maybe a couple of lost steps or frame flex and the cutter is only making dust?

Have you tried doubling the depth of cut per pass?

PS - This might also be a good time, perhaps once you get through this, to look in to incremental programming and subroutines.  Off the top of my head I think this program could be done with about 20 lines of code.  You could set up some variables in the program (cutter dia, rpm, travel limits, cut depth, stepover) and have a nice template for spoilboard surfacing that's easy to use for different tools.

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

More
21 Nov 2023 14:21 #286172 by andypugh
Every section has a Z0 in it, so it will only go to Z0.

The file could be made easier to edit, and more compact, by using LinuxCNC O-words.

Note that this is completely untested, I am nowhere near a LinuxCNC machine at the moment.

#<z_bot> = 1
#<zz_top> = -2
#<x_min> = 0
#<x_max> = 980
#<y_min> = 0
#<y_max> = Y592.740
#<stepover> = 60
#<feed> = 2540
#<plunge> = 333

G00 G17 G40 G49 G54 G80 G90 G91.1 G94 G21 G54
M09 ; Turn off all coolant, both mist (M7) and flood (M8).
G53 G0 X0 Y2
M3 S5250
G04 P04

O<surface> SUB
  #1 = #<y_min>
  O100 WHILE [#1 LT #<y_max}
    G1 F#<feed> Y#1
    G1 F#<feed> X#<x_max>
    O200 IF [[#1 + #<stepover>] LT #<y_max>]
      #1 = #1 + #<stepover>
    0200 ELSE
      #1 = [#1 + #<stepover>
    O200 ENDIF
    G1 F #<feed> X#<x_min>
    O210 IF [[#1 + #<stepover>] LT #<y_max>]
      #1 = #1 + #<stepover>
    0210 ELSE
      #1 = [#1 + #<stepover>
    O210 ENDIF
  O100 ENDWHILE
  ; One last cut at x_max
  G1 F#<feed> Y#<y_max>
  G1 F#<feed> X#<x_max>
O<surface> ENDSUB

; Z cuts here. This could be a G-code loop too, if you wanted

G0 Z2
G0 X#<x_min> Y#<y_min>
G1 Z0
O<surface> CALL
G0 Z2
G0 X#<x_min> Y#<y_min>
G1 Z1
O<surface> CALL
G0 Z2
G0 X#<x_min> Y#<y_min>
G1 Z1
O<surface> CALL

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

More
21 Nov 2023 14:37 #286178 by andypugh
I just noticed that the code does not use #<z_bot> or #<zz_top> So setting those will have no effect.

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

More
21 Nov 2023 18:50 #286186 by Lethal69GTO

After a quick glance I don't see anything horribly wrong with your program.

If you artificially set your Z0 about 25mm above the stock and comment out the M3 then run it, does the DRO display the programmed height at the 2nd pass? i.e. Z-0.064mm?

If it does display the correct Z height, if you've got the means maybe you can stop it and measure if the Z is actually where its supposed to be.

That's a really small distance (about 0.002" I think)... maybe a couple of lost steps or frame flex and the cutter is only making dust?

Have you tried doubling the depth of cut per pass?

PS - This might also be a good time, perhaps once you get through this, to look in to incremental programming and subroutines.  Off the top of my head I think this program could be done with about 20 lines of code.  You could set up some variables in the program (cutter dia, rpm, travel limits, cut depth, stepover) and have a nice template for spoilboard surfacing that's easy to use for different tools.

 

I do exactly as posed in your question, Z is arbitrarily set to around 12mm.  Yes, DRO displays the proper Z with each pass iteration.

Yes, I have the means to stop the executing program at will.  I'll have to dig out my feeler gauges and measure.  Didn't think about that.  Visually the flutes are so so so close on each pass, but not touching as expected thereby no dust is being generated.

Not sure frame flex is a factor for how short the X axis is and is material being 0.125-2x3" steel tube, but plausible and a consideration.  Dust is definitely being made, but only on the first pass at height zero.  Afterwards, nada.

Agreed, a really small distance for sure, practically nothing in reality.  Think I will make increments of 0.127mm (0.01in).  The initial adaptive clearing program gave me a scare with the spindle coming to a stop as it was eating a huge amount of material on the initial spiral entry into the material.  Since then I have made several complete runs with the home-brew program and have about half the spoilboard surfaced, each time setting zero on the high side, each time a smidge being removed.

Yes, I started with implementation of subroutines, one as an outer control loop for the layer iteration and a second inner loop for each pass along the Y.  Something to revisit as my initial attempt using them was throwing errors when loaded into Axis.  The laborious way was the most direct and dirty way to figure out and get the processing and program working properly.

Appreciate the assistance and will take your observations and considerations into account for next edit.

- Darryl

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

More
21 Nov 2023 19:18 #286188 by Lethal69GTO

I just noticed that the code does not use #<z_bot> or #<zz_top> So setting those will have no effect.
 


Understood.  I completely understand and agree that the program is overly cumbersome to read and sucks to modify for sure, I don't like it at all.  Thank you for the code sample and recommendation.  My initial program was very similar using variable declaration as you have, it was the calling the subroutines that was not working out, my syntax was nowhere correct.  I'll study the subroutines and air-cut test.  Again, thank you.

True, every section has a Z0 in it, but after that Z0 there is Z-0.064 desired surfacing depth of cut, then the next pass Z0 followed by Z-0.127, etc.  I was copying stuff from a F360 program that failed to run due to X or Y exceeding machine limits.  From what I could ascertain the retraction to a Z height is made then the  move to the next X0, Y<point>, followed by Z down to 1.0mm immediately followed by the reduction to desired depth of cut.  Something like the following from a F360 file, N90 and N120 would be my Z0 before the start of the plunge cut at Z-0.064, Z-0.127, etc.  Your assistance is much appreciated.

N60 G1 Z5. F2540.
N65 Z-0.01 F333.33
N70 X0. F2540.
N75 X889.
N80 Z10.
N85 X-27.94 Y42.751
N90 Z5.
N95 Z-0.01 F333.33
N100 X0. F2540.
N105 X889.
N110 Z10.
N115 X-27.94 Y76.649
N120 Z5.
N125 Z-0.01 F333.33

- Darryl

 

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

More
21 Nov 2023 20:21 #286190 by spumco

The laborious way was the most direct and dirty way to figure out and get the processing and program working properly.
 

You are not alone in the brute-force method during initial proram fiddling.

Your program was uncomfortably familiar.

Good luck!

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

More
23 Nov 2023 02:37 #286293 by Lethal69GTO
Got it, program is so purty now.  Thanks @andypugh and @spumco.  Appears to be running decently on Axis development environment.  Tomorrow will give it an air test on the actual machine.

%
; 9100
; 24x38 SPOILBOARD SURFACING ROUTINE (25x39 workpiece)
; 2D FACE - 70% STEPOVER
; T2 D=76.2 CR=0. - ZMIN=-1.10 - 4-FLUTE FACE MILL
#<_z_max>    = 2
#<_x_min>    = 0
#<_x_max>    = 980
#<_y_min>    = 0
#<_y_max>    = 600
#<_stepover> = 60
#<_feedrt>   = 2540
#<_plunge>   = 333
 
o<layer> sub
  #<ypos>  = 0  ;Y axis position
  #<z_doc> = #1 ;Z depth of cut
 
  o<yloop> while [#<ypos> LE #<_y_max>]
    (debug, Y=#<ypos>)    
    G1 F#<_feedrt> X#<_x_min> Y#<ypos>
    G1 F#<_feedrt> Z#<z_doc>
    G1 F#<_feedrt> X#<_x_max>
    G1 F#<_feedrt> Z#<_z_max>
    #<ypos> = [#<ypos> + #<_stepover>]
   o<yloop> endwhile
    
   G1 F#<_feedrt> Z#<_z_max>
   G1 F#<_feedrt> X#<_x_min> Y#<_y_min>
   
   o<layer> return
o<layer> endsub
o<surface> sub

  #<z_step>  = -0.127  ;Depth of cut per pass
  #<z_doc>   = 0       ;Current Z depth of cut
  #<z_btm>   = -1.1    ;Total depth of cut
 
  o<z_loop> while [#<z_doc> GE #<z_btm>]
    (debug, Z=#<z_doc>)    
    o<layer> call [#<z_doc>]
    #<z_doc> = [#<z_doc> + #<z_step>]
  o<z_loop> endwhile
    
  G1 F#<_feedrt> Z#<_z_max>
  G1 F#<_feedrt> X#<_x_min> Y#<_y_min>
 
  o<surface> return
o<surface> endsub

G00 G17 G21 G40 G49 G54 G80 G90 G91.1 G94
M09 ; Turn off all coolant, both mist (M7) and flood (M8).
G53 G0 X0 Y0
M3 S5250
G04 P04
o<surface> call
M2 (END OF PROGRAM)
%

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

Moderators: Skullworks
Time to create page: 0.205 seconds
Powered by Kunena Forum