The Laser module is the part of Smoothie that allows you to control laser cutters.
In general, laser cutters use a CO2 tube to generate the laser beam used for cutting and engraving.
Those tubes contain CO2 gas, and a high-voltage Power Supply Unit is used to pass electricity through the gas, generating the beam.
Using G-code, you tell Smoothie where to move and when to cut.
Smoothie moves the motors, and the Laser module talks to the laser power supply to tell it when to turn off and on, and using how much power.
firmware-cnc.bin.
In order to control the power of the laser tube, the laser PSU reads a PWM signal as its input.
Please look at the datasheet for your PSU to know which connection that signal is wired to.
From the Smoothieboard, you need to connect:
Both Ground pins are easy to find, and the PSU input you find in the manual/datasheet, now all you need is to find a PWM pin on the Smoothieboard.
There are 6 of them, but 4 of them are used for the step pins for stepper motor drivers.
Those for alpha and beta you won’t be able to use as you use those drivers to control the X and Y axes.
Depending on whether you have a Z axis, your gamma axis step pin could be used.
It is labelled ST3, on the JP12 header, near the M3 stepper motor driver.
You probably do not use your delta (M4) stepper motor driver on a laser cutter, so that pin can also be used, it is labelled ST4 on the JP15 header near the M4 stepper motor driver.
The other two are found near the microcontroller and the MOSFETS, on the JP33 header, and are labelled PWM0 and PWM1.
Choose which you will use, all have a GND header close-by (all are unlabelled) to make it convenient for wiring.
Now you need to find which GPIO pin/port number corresponds to the PWM pin you chose, so you can tell Smoothie which you’ll be using in the configuration file.
| Pin number for configuration | Label on the board | Comment |
|---|---|---|
| STP3 | Only if you are not using a Z axis/the gamma driver. Make sure you set gamma_step_pin to the “nc” value. The unlabelled pin in JP12 is GND. | |
| STP4 | Only if you are not using the delta driver. Make sure you set delta_step_pin to the “nc” value. The unlabelled pin in JP15 is GND. | |
| PWM0 | Only if you are not using the first small MOSFET (X8). All pins of JP10 are GND. | |
| PWM1 | Only if you are not using the second big MOSFET (X15). All pins of JP10 are GND. |
Smoothieboard v2 has dedicated PWM outputs available on the Gadgeteer headers. These are high-resolution PWM outputs suitable for laser control.
| Pin name for configuration | STM32 Pin | Location | Comment |
|---|---|---|---|
| PE9 | Gadgeteer GD | Timer 1, Channel 1 - High-resolution PWM | |
| PE11 | Gadgeteer GD | Timer 1, Channel 2 - High-resolution PWM | |
| PE13 | Gadgeteer GD | Timer 1, Channel 3 - High-resolution PWM | |
| PE14 | Gadgeteer GD | Timer 1, Channel 4 - High-resolution PWM | |
| PI5 | Gadgeteer GC | Timer 8, Channel 1 |
The Gadgeteer headers provide convenient 3-pin connections with signal, power, and ground for easy wiring.
Now that the PSU is wired to the Smoothieboard and that you know which pin you are using for control, you can change the configuration file to setup laser control.
You now need to edit the “config” file on the SD card (the default configuration file already contains example laser lines so you may only need to edit/enable those) to add or setup the laser part as follows:
# Laser module configuration
laser_module_enable false # Whether to activate the laser module at all. All configuration is
# ignored if false.
laser_module_pwm_pin 2.5 # this pin will be PWMed to control the laser. Only P2.0 - P2.5
# can be used since laser requires hardware PWM
#laser_module_maximum_power 1.0 # this is the maximum duty cycle that will be applied to the laser
#laser_module_minimum_power 0.0 # this duty cycle will be used for travel moves to keep the laser
# active without actually burning
#laser_module_pwm_period 20 # this sets the pwm frequency as the period in microseconds
[laser]
enable = true # Whether to activate the laser module at all
pwm_pin = 2.5 # This pin will be PWMed to control the laser
# Only P2.0-P2.5 can be used (hardware PWM required)
#maximum_power = 1.0 # Maximum duty cycle applied to the laser
#minimum_power = 0.0 # Duty cycle for travel moves (keeps laser active
# without burning)
#pwm_period = 20 # PWM period in microseconds
If needed, replace the 2.5 value for
Save the file, reset the board, you are now ready for laser testing.
| V1 Setting | V2 Setting | Description |
|---|---|---|
| Whether to activate the laser module at all. All configuration is ignored if false. The laser module is used for laser cutting using a laser diode or CO2 laser tube. When set to |
||
| This pin will control the laser. Pulse width will be modulated to vary power output (PWM). The preferred and more descriptive parameter for specifying the PWM control pin for the laser. PWM duty cycle directly controls laser power output percentage. CRITICAL: Only hardware PWM pins are supported: |
||
| DEPRECATED: Legacy parameter that specifies the pin controlling the laser through PWM. This setting has been superseded by |
||
| This pin turns on when the laser turns on, and off when the laser turns off. Provides a simple on/off signal synchronized with laser firing, independent of the PWM power level. This is a digital on/off signal, NOT PWM - it is either high or low. Commonly used to enable/disable air assist compressors, fume extraction fans, laser power supply enable pins for additional safety, or safety interlocks that monitor when laser is active. | ||
| This is the maximum duty cycle that will be applied to the laser. Value is from |
||
| This duty cycle will be used for travel moves to keep the laser active without actually burning. Useful for some diode setups. Value is from |
||
| DEPRECATED: This parameter has been deprecated and replaced by |
||
| Maximum S-value accepted from G-code commands. Determines the S-value range: set to |
||
| Whether the laser power should be proportional to the current speed, so as speed of movement ramps up (and down), laser power is proportionally adjusted, so that the amount of laser power/quantity of photons for a given distance/area is always constant, even if speed has to increase/decrease progressively. This is true by default. Enables automatic power scaling based on actual instantaneous movement speed. When enabled (default), power calculation: |
||
| PWM frequency expressed as the period in microseconds. Sets the PWM period (and thus frequency) for laser control. The PWM frequency equals 1,000,000 divided by this period value. This frequency affects how smoothly the laser power can be controlled and must be appropriate for your specific laser driver electronics. The system uses this period to limit the maximum rate of power adjustments. Default is |
||
| Default S value for laser operations when no S parameter is specified in G-code. Represents laser power as a fraction from |
Exactly how to wire your Smoothieboard to control your laser power supply is going to depend on the PSU itself, so we highly recommend you read the documentation for yours.
This is an example that should be the most common case, which you are most likely to encounter: the Chinese power supply with “H L P G IN 5V” connections.
In this example a RECI power supply but this should apply to most Chinese power supplies.
The basic idea is this: pin
Ground from the Smoothieboard is connected to ground on the Power Supply.
The rest is specific to the supply: P is connected to G through the door switch and water protect circuits, this ensures that if the door is opened or the water chiller turns off, the laser is turned off.
Finally, IN is connected to 5V, setting the laser power at full (but it can still be modulated by Smoothie’s PWM).
Here you could in theory replace the jumper by a potentiometer, allowing you to manually adjust the maximum laser power.
The wiring looks like this:
You then also need to configure the laser module accordingly:
# Laser module configuration
laser_module_enable false # Whether to activate the laser module at all. All configuration is
# ignored if false.
laser_module_pwm_pin 1.23o! # this pin will be PWMed to control the laser. Only P2.0 - P2.5
# can be used since laser requires hardware PWM
[laser]
enable = true # Whether to activate the laser module at all
pwm_pin = 1.23o! # This pin will be PWMed to control the laser
# Only P2.0-P2.5 can be used (hardware PWM required)
# 'o!' means open-drain and inverted
The wiring above probably won’t work on a K40, which are fairly weird machines (cheap comes at a cost).
For K40, see the several build logs linked to at the top of this page.
In particular, you’ll likely need to increase the pwm frequency, and wiring might need to be different depending on your model.
Here is how Smoothie laser control works:
The only difference is that when using
To test, try moving your laser with
G0 X10 F300
G1 X20 F300
You can set the power for the laser by using the S parameter. Values go from 0 (0%) to 1 (100%).
For example:
G1 X10 F300 S0.2
The following G-codes are supported by the Laser module:
laser_module_proportional_power configuration option, see its description for more details). This is not saved by the The following commands are available for testing (prepend @ in pronterface or
fire nnn where nnn is 0-100 percentage of power (example fire 10 will turn on laser at 10%)fire off turn off the test fire and return to automatic mode.