AtomStack M100 / grbl/ESP32 and $33

I have an AtomStack M100 (20W) attached to a grbl/ESP32 board and it doesn’t support $28. It does support $33 though (spindle/laser pulse-width modulation frequency), which is set to 1kHz. The M100 laser has has a frequency value of 1kHz printed on the side label too.

Is it safe to change this from the default of 1 kHz in order to better engrave in color on stainless steel? If so, what setting(s) would produce the best results?

Here are my current Spindle PWM settings for reference:
$33 => $Spindle/PWM/Frequency=1000.000
$34 => $Spindle/PWM/Off=0.000
$35 => $Spindle/PWM/Min=0.000
$36 => $Spindle/PWM/Max=1000.000

Thanks in advance!

When you first connect the controller to LightBurn what is the initial connection message?

I’d like to know which build this is so I can document it and get it to the team working on this section.

Hi John,

Here is the message:



Target buffer size found


I can bring up a FluidNC control panel, by pointing a browser at the machine, but it doesn’t appear to be running it because there is no config.yaml in the flash filesystem. I’m guessing that the configuration was baked into the firmware machine.h at compile time. I can also telnet to it, and connect via serial too.

Do you know of a way to output the pin information in grbl, like stepper mappings, etc.? If not, do you know how to get grbl or ESP32 to tell me what chip set it’s running on?

I just setup fluidnc on this board (amazon links)
HiLetgo UNO R3 D1 R32 ESP32
With a arduino cnc shield
Using these to break out the limit switches

Here is my basic config.yaml file that works with that setup. Note the limit switch pin locations are different than what the shield uses.

name: “Wemos R1 ESP32”
board: “Wemos R1 ESP32”

engine: RMT
idle_ms: 250
dir_delay_us: 1
pulse_us: 2
disable_delay_us: 0

shared_stepper_disable_pin: gpio.12

steps_per_mm: 100
max_rate_mm_per_min: 6000
acceleration_mm_per_sec2: 200
max_travel_mm: 900
cycle: 2
mpos_mm: 10
positive_direction: false

  limit_all_pin: gpio.39:low
    direction_pin: gpio.16
    step_pin: gpio.26

steps_per_mm: 100
max_rate_mm_per_min: 6000
acceleration_mm_per_sec2: 200
max_travel_mm: 900
cycle: 2
mpos_mm: 10
positive_direction: false

  limit_all_pin: gpio.4:low
    direction_pin: gpio.27
    step_pin: gpio.25

steps_per_mm: 800
max_rate_mm_per_min: 2000
acceleration_mm_per_sec2: 25
max_travel_mm: 1000
cycle: 1
mpos_mm: 10
positive_direction: true

  limit_all_pin: gpio.35:low
    direction_pin: gpio.14
    step_pin: gpio.17

miso_pin: gpio.19
mosi_pin: gpio.23
sck_pin: gpio.18

cs_pin: gpio.5
card_detect_pin: NO_PIN

pwm_freq: 5000
output_pin: gpio.32
enable_pin: gpio.33
direction_pin: NO_PIN
disable_with_s0: false
s0_with_disable: true
tool: 100
speed_map: 0=0.000% 1000=100.000%

in the fluidnc web interface the start/message I am using :
Screenshot 2023-08-05 021820

Grbl \V [FluidNC \B (\R) \H]

the config.yaml is uploaded by hitting that green folder button and needs to match the name in the screenshot to work. took me like 5 hours to google everything and get it setup, what board are you running?

Thanks sir! Is there a way for me to find out which board it is, without disassembling the laser controller? I think it’s an AtomStack LaserBox ESP32 v1.0, but cannot figure out which command I would use to confirm this.

I also believe that I have found a config.yaml that matches this board, but I’m not sure if I would break the controller by uploading it to flash. So far, I haven’t been able to successfully back up the stock firmware (with, so I’m a bit skiddish.

Here is what I currently see in the FluidNC web interface…

Thanks again! read_mac will output the info you are looking for. I uploaded about 15-20 bad firmwares. before i got my stuff figured out. Didn’t hurt anything. Did your board come with fluidnc preinstalled? I ask because I had “issues” following the fluidnc installation process and had to fire up VSC and install it like that. The way fluidnc works is the setup is 100% generic, its the config.yaml that changes the settings. So you don’t have to reflash when you setup/change things you just update your config, upload it, reboot it. also use the fluidterm that comes with the firmware so you can see boot messages and errors

Awesome! So, it operates somewhat like klipper on my 3D printer. I’m not sure whether it’s running fluidnc now or not. I get the web interface, but there is no config.yaml in flash…so, I’m guessing not. The laser is working great with the stock firmware, so I’m hesitant to mess with it unless I can get it back to stock somehow. and the esptool read_flash keeps throwing errors. I just got it to backup 100%, but it threw a digest mismatch at the end.

Does your team have some feedback on the laser frequency settings too? I’d like to avoid frying the laser inadvertently if possible. Maybe it just runs at 1kHz and that’s it…not sure at this point.

Here’s what I get from read_mac: v3.1
Found 2 serial ports
Serial port COM4
Detecting chip type… ESP32
Chip is ESP32-D0WD (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 94:e6:86:6d:85:8c
Uploading stub…
Running stub…
Stub running…
MAC: 94:e6:86:6d:85:8c
Hard resetting via RTS pin…

A quick MAC Address lookup doesn’t show a registered vendor.

Thanks again John!

1 Like

googling the chipset its the same one that comes on the AtomStack LaserBox ESP32. for the rest I dont have a clue on I am new to laser stuff but long time embedded systems guy and it doesnt surprise me the chip mac is unregistered lots of knockoff chips out there

Ah! I was googling the wrong thing. :blush:

Thanks so much for all of your help John!

Take care,

Please test with the GRBL-LPC profile in LightBurn.

If you can’t read and write to the $33-$36 commands through the Console window (and if it’s config file only) then you may be stuck with that.

Will do it. Thanks again!

This topic was automatically closed after 30 days. New replies are no longer allowed.