I've been inside Universal Laser Systems lasers.  The laser doesn't have 
a throttle, just an on/off for the beam, and it's like this:

The beam is about 0.008" dia, 1/125th of an inch.

If you specify <100% power in vector mode, there is a Pulse Per Inch 
(PPI) factor used.  If you specify 50% power 300 PPI, it cuts at 1/600th 
in on, 1/600th in off. When it's on it's full power. That's not wide 
enough of a stop to leave any unburned length. For any given point, it 
receives less exposure to the beam.

When hitting the corners of a square, of course, acceleration rules 
apply to full stop/full start the vectors, and since it's less than the 
commanded speed, the exposure would be increased past the specification. 
So it does add a  DIFFERENT pwm to reduce power when the speed is below 
the target command, but it's fast- like 1000 pulses per inch, or might 
be in the time domain, I don't know.  It's not affected by the commanded 
PPI.  This does seem to mean that if you command 50% power and 500PPI, 
when it does the start/end of vectors and isn't at commanded speed, 
there's a series of 1/600th in on/off segments, AND within the ON 
segment it's pulsing at 1000PPI.

With rastering, there's two modes.  One is more "analog" and does high 
frequency PWM based on shade as it passes.
The other uses a fixed-length PWM as it goes, based on shade. Like on 
333 vertical raster lines per inch, it has a 60-lines-per-inch 
horizontal resolution.  That is, a 127 value in an 8-bit greyscale is 
1/120th in on, 1/120th in off.  It's an offset pattern, every other line 
starts 1/120th of an inch offset, to make a diamond-shaped grid.

There's also random-density mode, where it makes dots.  But it's hard to 
really nail down what it's doing- the laser must burn in a line.  It 
can't actually do a circular dot without stopping, which it doesn't do.  
It can burn pill-shapes of varying lengths.

Just thinking on this- you COULD specify that a straight 50% power 
vector line is a long string of G-codes- M62, one  G11/600th in segment 
on, M63, one G1 1/1600th off, interleaved over and over. It would be a 
VERY long file, and might have slow execution, and won't take into 
account acceleration.  Also, it is not uncommon to want to change power 
on the fly, and that'd be impossible- you'd have to regenerate the whole 
G-code.

FYI, in my experience with ULS lasers, yes you can change the speed & 
power of VECTORS on the machine after the job is generated.  However you 
cannot change the number of vertical lines per inch on rastering.  You 
can change the raster speed.  Which makes sense.

So the way I interpret it, no, that's all totally wrong to generate 
G-code pulses within the vectors, instead you'd generate the PWM within 
LinuxCNC's software.

But, now, rastering- that's genuinely complicated.  Like I say, at least 
2 modes here.  In either case I can't imagine how to do it with 
LinuxCNC's software.  In the case of the "analog raster mode" (using a 
high speed PWM and changing it rapidly), well I still don't get how 
you'd specify all the raster data.  You could use the Z to specify the 
power, but then it'll want to ramp into and out of pixels, which sounds 
pretty wrong.  e.g. with 100 DPI 50% gray, it would be:
G1 X0      Y0 Z0
G1 X0.05 Y0 Z1
G1 X0.10 Y0 Z0

And you'd end up with a sawtoothed path, instead of a square pixel.  
That's not quite right.  It would have to be:
G1 X0 Y0 Z0
G0 Z1
G1 X0.05 Y0
G0 Z0
G1 X0.10 Y0

Which might work, but it sure sounds awkward.

Danny


On 4/30/2016 7:22 AM, Nicklas Karlsson wrote:
> If you have problem with PWM signal generation there are plenty of cheap
> micro controller development board available although protocols may be
> worse. I guess it could be an idea to search m-codes for "professional"
> laser cutters or maybe reuse codes usually used for spindle.
>
> 2016-04-30 3:48 GMT+02:00 Bruce Layne <linux...@thinkingdevices.com>:
>
>> I still haven't built my 3' X 5' 80W CNC laser, but it'll be controlled
>> by LinuxCNC when I do.  I've had a big pile of laser parts for almost
>> three years.  Maybe later this summer, if I finally find some mojo.
>>
>> LinuxCNC is better for cutting and embossing/engraving lines. LinuxCNC
>> is not good for raster laser engraving.  Most of my laser jobs are
>> cutting and light scoring which are essentially vector jobs, but I do
>> have a few logos that are currently raster engraved on a friend's laser,
>> which is essentially operating as a Windows printer using a proprietary
>> printer driver, under CorelDraw.  My logos are simple, made of solid
>> shapes, and I expect to render them as vector engravings by outputting
>> vector image files from Inkscape.  That's the plan, anyway.  If you want
>> to laser engrave photographs, you will probably need some way to raster
>> engrave.  In that case, LinuxCNC may not be a good option for you.
>>
>> I've seen a few CNC lasers that used the -Z hack to turn the laser on,
>> and that does have a certain simplicity, but I think it's too kludgey
>> with too many tradeoffs and undesirable behaviors from the trajectory
>> planner.  I plan on using M codes to turn the laser on and off.  I also
>> plan on using the Z axis to drive stepper motors to jog the table
>> elevation when setting up a job at the correct height.  In theory, I
>> could laser engrave 3D objects by using the Z axis as well, but I don't
>> plan on using any Z motion in my laser G code, other than maybe a fixed
>> Z offset at the beginning from the homed Z position is I decide to have
>> a hardware Z=0 with relative offsets from that for each job.  I also
>> plan on a light duty 4th axis for laser cutting round objects.  One of
>> my production jobs requires laser cutting and embossing cylindrical tubes.
>>
>> For reduced power settings, I'll pulse width modulate a signal to turn
>> the laser on and off fairly quickly.
>>
>> Many people would assume that it'd be easier and faster to draw
>> something in CorelDraw and "print" it on the laser, but I hate it, and
>> would much rather have direct control of the G code.  The CorelDraw
>> print driver for the laser may be faster when making one or two of
>> something, but it gives me no control over the order in which features
>> are cut on the laser, which results in clumsy production jobs that are
>> difficult to run because the order of subsequent steps are random, and
>> there is a lot of wasted motion.  I want the control that I get writing
>> G code by hand, in a logical progression.  To some extent, this is an
>> extension of the lack of control I have in Windows, compared to Linux.
>> I think it's more of a philosophical difference than a technical
>> difference.
>>
>> Sorry, but I haven't implemented any of this LinuxCNC laser stuff yet,
>> so I have only this generic advice and no specific LinuxCNC example code.
>>
>>
>>
>> On 04/29/2016 08:29 PM, Danny Miller wrote:
>>> Having some preliminary thoughts about LinuxCNC's appropriateness to be
>>> a laser cutter, like 120W CO2.  The other option is the open-source
>>> Lasersaur or Axecut.   Those aren't particularly advanced trajectory
>>> planners or anything.
>>>
>>>     Can it be a good tool for lasering?
>>>
>>> I did see where some people had done it with some hacks, but I don't
>>> know how practical they are.  There was something about using a negative
>>> Z-value to turn on the laser.
>>>
>>> A lot of things come to mind.
>>>
>>> One, often the laser needs to turn on and off quickly, without
>>> stopping.  If it's technically implemented as a Z-move, it would slow to
>>> move the nonexistent Z-axis.  Would that work by just changing the
>>> Z-acceleration to something ridiculously high?
>>>
>>> Two, sometimes we do reduce the cut power, to only mark the surface
>>> instead of cutting it.  Initially you reduce the depth of cut by
>>> increasing speed, but if it's paper, you can't increase the speed
>>> enough, you have to cut back on the power.  And the required power will
>>> change inside the document.  How would that get specified, just with a
>>> differing Z-depth?
>>>
>>> When not at the specified speed due to acceleration limits, the software
>>> needs to reduce the power to avoid delivering more energy/mm than the
>>> user specified.  Actually this sounds like the easiest part, presuming
>>> we can get an accurate instantaneous speed.
>>>
>>> All power adjustments come via a PWM pin.
>>>
>>> Danny
>>>
>>
>>
>> ------------------------------------------------------------------------------
>> Find and fix application performance issues faster with Applications
>> Manager
>> Applications Manager provides deep performance insights into multiple
>> tiers of
>> your business applications. It resolves application problems quickly and
>> reduces your MTTR. Get your free trial!
>> https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
>> _______________________________________________
>> Emc-users mailing list
>> Emc-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/emc-users
>>
> ------------------------------------------------------------------------------
> Find and fix application performance issues faster with Applications Manager
> Applications Manager provides deep performance insights into multiple tiers of
> your business applications. It resolves application problems quickly and
> reduces your MTTR. Get your free trial!
> https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
> _______________________________________________
> Emc-users mailing list
> Emc-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/emc-users
>


------------------------------------------------------------------------------
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
_______________________________________________
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users

Reply via email to