Page 1 of 1

Beyond PPI? duty cycle

PostPosted: Fri May 18, 2012 5:04 pm
by jv4779
I have been experimenting with PPI using LinuxCNC (formerly EMC2). The very non-intuitive relationship between speed and PPI had me perplexed at many times. After reading more info on the Bart's experiments the idea of "power delivered" and "linear energy density" and their relationship to feed rate, PPI, and laser power was more clear.

"Power delivered" is a measure of how many watts is being pushed into the material, watts = joules / sec, which is a per second quantity. PPI times feed rate determined this value. More PPI or more feed rate increased the delivered power. Which is opposite of how most view the relationship, faster feed rate should cut deeper.

"linear energy density" is a measure of how long the "power delivered" spends at each linear point. This determines how deep a cut is. If one inch is cut at a constant power delivery level, how long this one inch takes determines how deep the cut because 1 second per inch will be half the total power send into the same linear distance as 2 seconds per inch. To go deeper PPI is increased and feed rate is decreased by the same proportion.

After all this I decided to simplify to feed rate and duty cycle. To determine the "power delivered" all you need to do it multiply duty cycle by laser power level (ie 40w at full power). To get "linear energy density", just set feed rate. The end result if if the material is too melty, reduce duty cycle. To cut deeper increase feed rate.

I have implemented this in LinuxCNC using Ben Jackson laserfreq.comp. Using reverse spindle to mean duty cycle (ie M4 S55 is 55% duty cycle). The code


Re: Beyond PPI? duty cycle

PostPosted: Fri Jul 27, 2012 10:29 pm
by sliptonic
I'm curious about your duty cycle implementation and would like to try it out.

I'm having to manually reconcile your config with mine. So far I've got it to load with a custom panel that combines mine and yours. It also moves the X and Y axis but has a strange effect on the rapid speed.

Bottom line; I'm having a difficult time getting your config to run on my laser. Any chance you'd be willing to chat on IRC and answer some questions?

Re: Beyond PPI? duty cycle

PostPosted: Sat Jul 28, 2012 2:24 pm
by jv4779
You can use my laserfreq.comp in an existing 2.x emc config almost unchanged. You have to add a dummy hal net connection to make the gui allow setting ccw spindle. Without that i believe that M4 will work just fine in gcode.

Keep in mind that atleast on my laser with a 3ms pulse on time, 0-50% increases power and 51-100% actually decreases the cut depth. My theory is that after 50% the off time goes less than 3ms and you start to loose the added power boost of pulsing.

Most of my hal changes were some simplifications and conversions to a different raster style. The raster changes are independant of the duty cycle and ppi.

Do you have a specific problem? Also putting your experimental config in a git hub branch so i can see would help alot.

Re: Beyond PPI? duty cycle

PostPosted: Sun Jul 29, 2012 6:25 pm
by sliptonic
Thanks Jeremy,
I got it working with just the laserfreq. Results look good. I'm laser cutting parts for an OpenROV. After dialing it in, the new parts are less runny on the bottom. Thanks for a cool improvement!

Re: Beyond PPI? duty cycle

PostPosted: Tue Jul 31, 2012 1:29 am
by jv4779
I think there is still room for improvement. Why the effective cut depth starts to drop off after 50% bugs me.

Re: Beyond PPI? duty cycle

PostPosted: Wed Aug 13, 2014 4:19 pm
by sliptonic
I've been running with the duty cycle implementation for about a year and it's been working fine. I'm in the process of making some other configuration changes and thought I'd implement some of your other changes like the raster and the controls in your pyvcp panel.

I have most of that working but, so far, I can't get the duty cycle or PPI leds to do anything. Also, the pyvcp.spindle gauge doesn't read anything.
My postgui.hal file wires them up as shown below and I see those signals in halshow. Am I misunderstanding what these controls are telling me?

net laser-freq-duty-cycle <= => pyvcp.duty-cycle-mode
net laser-freq-ppi <= => pyvcp.ppi-mode
net laser-freq-abs <= abs.0.out => pyvcp.spindle
net laser-power-cmd => pyvcp.power

Re: Beyond PPI? duty cycle

PostPosted: Wed Aug 20, 2014 4:34 pm
by jv4779
Those net connections look correct. If it shows on the panel depends on if the custompanel.xml has matching halpin=? in the xml. You also need to have "addf abs.0 servo-thread" or the abs.0 module will not update.

Since my laser is pretty much working I don't visit this forum very frequently. PM is a better way to get my attention.