Buildlog.net 2.x 40W Laser Cutter

lasercutter.jpg

Status No Longer at LMN
Zone
Owner Timothy Schmidt
Tool Type Laser Cutter
Member Category Coder / Crafter
User Manual equipment
Manufacturer N/A
Model N/A
SOPs Link
Checkout Required
barcodeDon't have barcode reader? Click here.

Specifications

Our lasercutter is modified from the Buildlog.net 2.x 40W Laser Cutter design. Its outer dimensions have been lengthened from the original 600mm to approximately 900mm. It uses a RepRap RAMPS 1.4 motherboard, which incorporates stepper drivers. It makes use of an 18mm ZnSe focus lens with 55mm focal length.

Z axis travel is 98mm (software limited to 95mm) from home switch to air nozzle tip. The workpiece should be approximately 13mm from the tip of the air nozzle when cutting.

Workflow

Firmware

Firmware is on github, here: buildlog-lasercutter-marlin

G Codes

The laser is controlled by sending commands (“g codes”) to it via USB→serial connection. Additionally, the laser control electronics can read files containing these commands from an inserted SD card without the aid of an attached computer.

There are several ways to command the laser to fire, each is enabled or disabled at compile time, according to the following option in Configuration.h:

Each of these firing controls accepts the following parameters, which can also be manipulated without firing or moving the laser by using them with the M649 command:

  ; Moves to (5, 6, 7) at speed 8, laser off
  G0 X5 Y6 Z7 F8
  
  ; Moves to (5, 6, 7) at speed 8, laser pulsing 1.2 times per millimeter, for 50ms, at 60% power, with serial diagnostics messages, in Pulsed mode.
  G1 X5 Y6 Z7 F8 P1.2 L50000 S60 D1 B1
  
  ; Without moving in any axis, pulse the laser for 50ms at 60% power, with serial diagnostics messages, in Continuous mode.
  M3 L50000 S60 D1 B0
  
  ; Without moving in any axis, turn the laser off.
  M5
  
  ; Without moving in any axis or turning the laser on or off, set the laser power to 50%, pulse length to 60ms, pulses per millimeter to 1.2, in Pulsed mode, without serial diagnostics.
  M649 S50.0 L60000 P1.2 B1 D0
  ----------------------------
  S: intensity (0.0-100.0)
  L: duration (microseconds)
  P: pulses per mm
  D: diagnostics (0 = off, 1 = on)
  B: laser firing mode (0 = continuous, 1 = pulsed, 2 = raster)

In Continuous mode, the laser is turned on, and remains on at the selected intensity until it's instructed to turn off.

Pulsed mode fires punctuated bursts at intervals matching P: PULSES_PER_MM, each lasting for L: DURATION. That gives us all the information we need to time the laser firing and extinguishing from the inner loop of the stepper driver interrupt handler - the core of the firmware. This makes the positioning and timing of pulses in Pulsed mode much more accurate than any other method. Pulse positions are accurate to the nearest step in any axis and reliable minimum pulse times of 250 microseconds have been measured on a 16Mhz Atmega 2560 (better may be possible, but hasn't been tested). Stock Marlin's minimum pulse length is 8.2 milliseconds on the same hardware, and permits adjustments no smaller than 1 millisecond.

Raster mode is a special variation of Pulsed mode which allows you to specify a unique intensity for each pulse in a variable-length horizontal line of evenly spaced pulses, with configurable 'pixel' size and aspect ratio, arbitrary line-advance, and selectable left or right blitting. This is everything required for maximally efficient arbitrarily large 2D image blitting, but allows for a number of other uses as well. An obvious improvement would be to allow for Raster blitting along an arbitrary line in 3D space - patches welcome! Because pulse timing can be done in the stepper driver interrupt handler, and the information necessary for many pulses is contained in a single command, Raster mode is very fast. Raster mode only works with the “G7” command which accepts a number of unique parameters:

  G7 N0 L68 DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhaGBUQFRiZ0ZPVExARUU6RTpITD1GU05Q
  -------------------------------------------------------------------------------
  N: new line: increments Y axis by LASER_RASTER_MM_PER_PULSE * LASER_RASTER_ASPECT_RATIO from Configuration.h 0 = negative movement in the X axis, 1 = positive X axis movement.
  L: byte length of the packed pixel set
  D: data, base 64 encoded 0-255/pixel

In firmware, you have two options for controlling a laser:

  1. Single pin: The LASER_FIRE pin supplies a PWM signal at at Hz specified as LASER_PWM in Configuration.h, adjusting duty cycle of the wave to control intensity, and supplies logic level LOW when off. Common for laser diode
  Wiring diagram:
  
  -------
  | G   |  ----  Ground
  | TTL |  ----  LASER_INTENSITY
  -------
  1. Two pin: The LASER_FIRE pin supplies a logic level signal HIGH for fire, LOW for extinguish. The LASER_INTENSITY pin supplies a PWM signal at at Hz specified as LASER_PWM in Configuration.h, adjusting duty cycle of the wave to control intensity.
  Wiring diagram:
  
  ------
  | H  |  ----  LASER_FIRE
  | L  |
  | WP |
  | G  |  ----  Ground
  | I  |  ----  LASER_INTENSITY
  | 5V |
  ------

laser.cpp contains the laser_fire and laser_extinguish functions

This firmware also has options to control peripherals of a laser cutter such as the air assist, water pump or even idle shut off via a slave arduino.

Components

Many of the laser cutter's components were purchased from LightObject.

Consumables

Tutorials

Maintenance

Belt tensioning procedure

Y Axis

X axis

Z axis leveling procedure

Z Axis Homing and bed height setting

Resources

Taller case

Brian Adams suggests that since we have a Z axis, we could extend the Z axis, which would entail a taller case and longer Z-axis leadscrews. This would permit things like the laser origami (see http://www.wired.com/design/2013/02/laser-origami/).

Sam's Laser FAQ

YouTube video testing the laser cutter