GRBL for laser engraver - no signal on pin 11

First of all, I am not sure if this is the best place to post this question, apologies if it’s in the wrong place.

I have finalized a first version of my engraver but can’t seem to make the last step : firing the laser at will.

Material :
Arduino uno + cnc shield v3 + GRBL 1.1h

Issue : I can’t seem to generate the PWM signal by using M3 commands using laserGRBL using “M3 S100” command.

Whatever value I send, the signal desperately stays flat zero volt (well OK a few mV but not the PWM signal I am looking for)

Goal : I need to have a constant low power firing of the laser to be able to focus it properly.

This is not a material issue as I have checked the pin 11 (Z-=) with an oscilloscope and a very simple sketch and it functions perfect as shown in the picture attached.

The moving parts functions well (axis, endstops are OK).

Questions :

  • Is the “M3 S100” the right way to fire the laser constantly at a 100/255 percentage of the max power of the laser ?
  • Are my configuration values incorrect regarding the laser functions (see below) ?
  • Is there something in the GRBL config.h which could cause this issue ?

Here is below my GRBL configuration

Thanks in advance for any help … I have read hundreds of posts on the subject to no avail and this is getting me crazy…


EDIT : I also attached my config.h

$0=10 (Step pulse time)
$1=25 (Step idle delay)
$2=0 (Step pulse invert)
$3=0 (Step direction invert)
$4=0 (Invert step enable pin)
$5=1 (Invert limit pins)
$6=0 (Invert probe pin)
$10=1 (Status report options)
$11=0.010 (Junction deviation)
$12=0.002 (Arc tolerance)
$13=0 (Report in inches)
$20=0 (Soft limits enable)
$21=1 (Hard limits enable)
$22=1 (Homing cycle enable)
$23=0 (Homing direction invert)
$24=25.000 (Homing locate feed rate)
$25=500.000 (Homing search seek rate)
$26=250 (Homing switch debounce delay)
$27=3.000 (Homing switch pull-off distance)
$30=255 (Maximum spindle speed)
$31=0 (Minimum spindle speed)
$32=1 (Laser-mode enable)
$100=100.000 (X-axis travel resolution)
$101=100.000 (Y-axis travel resolution)
$102=250.000 (Z-axis travel resolution)
$110=6000.000 (X-axis maximum rate)
$111=6000.000 (Y-axis maximum rate)
$112=500.000 (Z-axis maximum rate)
$120=100.000 (X-axis acceleration)
$121=100.000 (Y-axis acceleration)
$122=10.000 (Z-axis acceleration)
$130=830.000 (X-axis maximum travel)
$131=830.000 (Y-axis maximum travel)
$132=200.000 (Z-axis maximum travel)

config.h (48.5 KB)

In config.h, is variable spindle enabled?

From config.h around line 335:

// Enables variable spindle output voltage for different RPM values. On the Arduino Uno, the spindle // enable pin will output 5V for maximum RPM with 256 intermediate levels and 0V when disabled. // NOTE: IMPORTANT for Arduino Unos! When enabled, the Z-limit pin D11 and spindle enable pin D12 switch! // The hardware PWM output on pin D11 is required for variable spindle output voltages.

define VARIABLE_SPINDLE // Default enabled. Comment to disable.

define VARIABLE_SPINDLE // Default enabled. Comment to disable.

yes it is. Thanks.