Thanks Thanks:  0
Needs Pictures Needs Pictures:  0
Picture(s) thanks Picture(s) thanks:  0
Results 1 to 2 of 2
  1. #1
    Join Date
    Sep 2009
    Location
    Newcastle
    Posts
    549

    Default LinuxCNC laser control (or why you don't need a DSP)

    I've just in the process of finishing a DIY large format (~1200mmx700mm) CO2 laser cutter and wanted to share my control system.

    It's commonly said you need a DSP (costs ~$500) to be able to both vector cut and engrave in the same file, and is considered nearly essential by many for a usable laser. But thanks to some great work by some people over at buildlog.net, that is far from true.

    bjj (Ben Jackson) developed a linuxcnc component + configuration that allows software PPI. His code is available on github
    jv4779 (Jeremy Van Grinsven) built on Ben's work adding a 'duty cycle' mode in addition, as well as a simple control panel with useful information (such as power level) and control such as go to origin and set origin. His code is available on github
    Their work is built on work by others, whom they credit in their github pages.

    In to the details:
    I'm using:
    40W glass laser + analog power supply taken from a cheap K40 laser, which came with Moshidraw.
    TB6560 red 3 axis stepper driver board (~$40 shipped from ebay) Manual
    12V 180W PSU
    Aluminium extrusion frame - my own design.

    Set up LinuxCNC
    Easily done via the LiveCD.
    Stick it in a computer, boot up and install.
    Other guides cover this, so I won't. But it is very simple.

    Basic settings
    Use Stepconf wizard to get your machine moving.
    Set the pins.
    Test movement and velocity and acceleration.
    For a laser you'll want very high acceleration.
    Find the maximum settings before your steppers stall and then scale back ~30%

    Laser firing
    The bjj and jv4779 configs allow a few methods to fire the laser.

    The simplest is 'magic Z' in which the laser is turned on when the Z axis is negative, and turned off when it goes positive.
    This has the advantage of working with any CAM program without modification of a post processor.
    Simply set a very small Z move (e.g. Z0.01 to Z-0.01) at a very high velocity (this is to avoid any pause as the machine thinks the Z axis is moving).

    There is also the option to trigger via a digital out. This would require modification of a post processor for in most CAM software.
    Bart of buildlog.net fame has done exactly that for Vectric products and covers it in a guide: Creating A Laser Post Processor at Buildlog.Net Blog

    To control the laser with the TB6560 board and other breakout boards that don't actually break out all the parallel outputs you'll need to do a quick bit of soldering.
    I soldered a wire on to pin 8 of the parallel port on the TB6560, and a wire on to a ground pin of the port. I connected the wires to J4 (red wires) on my powersupply (which was originally hooked up to a head marked laser and ground on the Moshidraw board). The test button goes on to the other pins of J4.
    I also soldered a spare on to pin 9 for any future output needs (as the 3 axis board only uses 6 output pins for motors, and 1 for relay control)

    I've hooked up the 240V supply for the laser power supply to the relay on the TB6560, so that the laser cannot fire when I'm not expecting it to, for example if an estop is triggered.
    The relay stays open for a number of seconds specified in the .ini - this is great for hooking up air assist or exhaust. I've got air assist (90L/min aquarium air pump) hooked up that turns on at the start of a job and turns off 10 seconds after lasering is done.

    Laser power control
    This is the real magic part of the bjj and jv4779 configs. They allow software control of power level, even using an analog power supply (non-pwm).

    bjj has implemented 'PPI' - it's actually done in pulses per millimeter (ppmm), which means you'll use values ~1/25th quoted for PPI.
    This is triggered by M3 Sxx, where M3 is the gcode for spindle on clockwise and Sxx is the pulses per mm. S10 is 10 ppmm, S100 is 100ppmm. Over a certain number of pulses per mm you'll get continuous cutting (depends on the minimum firing time of your laser, which seems to be around 3ms, as well as feedrate).
    M3 also turns the relay on, so without M3 code active the laser can't fire. This also means that the laser can't fire if M5 (stop spindle) is called in the gcode, or if M3 S0 is present.
    PPMM/PPI differs from conventional laser firing in that cutting power is not determined by 'power / speed' where slower = deeper cut. The laser is pulsed precisely based on distance, so that in fact running faster results in more power delivered to the material in a given time frame. This means adjusting settings is not a simple linear thing.

    jv4779 has expanded on bjj's configs by adding duty cycle.
    M3 is ppmm (PPI mode) and behaves the exact same.
    M4 (gcode for spindle counter-clockwise) is duty cycle mode which he talks about in the buildlog forum
    Duty cycle is a bit easier to adjust because it is simpler relationship. To cut deep at the same power, just slow down the feedrate.

    Integrating the configs
    Once you have a basic linuxcnc config tested, with appropriate pin outs, and axis velocities etc, you'll need to edit those values in to bjj or jv_4779 config.
    This requires some editing of the .hal file and the .ini.
    In the .hal you'll need to replace the pins and whatever limit / home switches you've set

    For the above TB6560 board my pins are:
    Code:
    net xstep => parport.0.pin-02-out
    setp parport.0.pin-02-out-reset 1
    setp parport.0.pin-03-out-invert 1
    net xdir => parport.0.pin-03-out
    net ystep => parport.0.pin-04-out
    setp parport.0.pin-04-out-reset 1
    setp parport.0.pin-05-out-invert 1
    net ydir => parport.0.pin-05-out
    #net zstep => parport.0.pin-08-out
    net laser-final => parport.0.pin-08-out
    setp parport.0.pin-08-out-reset 1
    net zdir => parport.0.pin-09-out
    setp parport.0.pin-14-out-invert 1
    #net spindle-on => parport.0.pin-14-out
    net laser-exhaust => parport.0.pin-14-out
    net min-home-x <= parport.0.pin-10-in
    net max-home-y <= parport.0.pin-11-in
    Note I've commented out zstep and replaced it with 'net laser-final' (the hal pin that fires in the laser).
    Spindle-on is with 'net laser-exhaust' which controls the relay and leaves the relay on for the number of seconds specified in the .ini file. This is handy for air assist, which I keep on for 10 seconds after laser has turned off.

    In the .ini file you'll need to put in the appropriate values for your machine in the axis settings, as well as edit the paths to a couple of files.

    Raster engraving
    Both bjj and jv_4779 have implemented raster engraving features.
    I haven't tried either yet.

    The simple way to do raster engraving, that allows engraving (raster) and cutting vector) in the same file is to do the raster in CAM. Generate a pocket operation using the kerf of the laser as the tool diameter, with appropriate power settings.

    Workflow
    Drawing -> CAM -> LinuxCNC
    I'm using Vectric Aspire mainly, which has adequate drawing tools. Sometimes I'll use Solidworks (as I love relationship / dimension based drawing - if there is a good cheap 2D drawing program that works like this I'd like to know).
    Once I've got the vectors in Aspire I start generating toolpaths.

    I've set up a few 'tools' that are the laser with different settings. E.g.:
    'Laser Cardstock Cut' with tool diameter 0.3mm, spindle speed 15 (= M3 S15 in gcode = 15ppmm)
    'Laser Cardstock Score' with tool diameter 0.3mm, spindle speed 3 (= M3 S2 in gcode = 3ppmm)

    I haven't worked out how to choose M3 or M4 (ppm vs duty cycle) in Aspire - there doesn't seem to be a way to choose spindle direction. So at present I quickly hand edit / replace M3 with M4 if desired.

    Conclusion
    While the above requires a bit of editing some config files, it doesn't require in depth coding (others have kindly done the work!).
    I managed to get my laser going with minimal fuss, in a couple of hours.
    I've only done this recently, so there is a lot more fiddling to be done. But I'm impressed at being able to take a K40 laser, add a $40 stepper controller and now have a system that blows Moshidraw out of the water and allows software control of laser power.

    Please post any questions / comments. I'll aim to add some pictures at some point.

  2. # ADS
    Google Adsense Advertisement
    Join Date
    Always
    Location
    Advertising world
    Posts
    Many





     
  3. #2
    Join Date
    Jan 2010
    Location
    Melbourne
    Posts
    2,636

    Default

    Whilst I'm not into CNC's, this is a great write up and a superb contribution to the forum. Well done.
    -Scott

Similar Threads

  1. I'm spiraling out of control
    By gal turner in forum WOODTURNING - PEN TURNING
    Replies: 14
    Last Post: 11th April 2010, 04:07 PM
  2. Out of Control
    By Dovetail in forum BOX MAKING
    Replies: 5
    Last Post: 16th October 2007, 04:58 AM
  3. Remote Control box
    By Bwillie in forum BOX MAKING
    Replies: 3
    Last Post: 10th October 2006, 07:16 PM
  4. DVD control box holder
    By Gumby in forum WOODWORK PICS
    Replies: 3
    Last Post: 11th January 2005, 08:01 AM
  5. Remote Control Box
    By Goldy in forum WOODWORK PICS
    Replies: 12
    Last Post: 5th January 2005, 10:21 PM

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •