DLC32 v2.1 programming

Hello everyone, I’m building a 600x800mm burner with autohoming and autofocus. I’m going to use a DLC32 v2, but I’m struggling with the programming.

1: Can I use it as is with the default settings?

If so, I don’t understand how to adjust the settings for my build; which values ​​should I change?

If not, which firmware should I flash it with? On the board’s GitHub page, I only find firmware for boards paired with a monitor, and I don’t have one.

2: What’s the difference between XY and normal cores?

3: My board is equipped with TMC2209 chips; do I need to configure them on the board?

I saw on the board that there are switches under the TMC chips; do I need to change the default values? (All 3 are at the top)

My burner is based on a Twootree TS2; can I use its firmware?

Thanks in advance for your help.

Christophe

Depends on your setup.

The values you need to. It’s very hard to tell you without having the hardware. Unfortunately, this is part of your research / learning curve if you design your own hardware. Basically, you only need to adjust the directions of the steppers and the steps/mm values to make the firmware match the physics of the machine.

The monitor is not relevant; you can ignore it. But I suggest using FluidNC or grblHAL. The original firmware is not maintained very well, and configuration capability is reduced. I suggest starting with FluidNC (but you will need to dive into the configuration as well!!).

If you are building mechanics, you should have come across this. Google for “CoreXY mechanics”, you will find plenty of information. If you don’t know what it is, you probably didn’t use it :slight_smile: But it’s impossible to tell without knowing your mechanics.

You can’t configure them at all. The only way is to use them as drop-in-replacements. They won’t provide any major advantage over A4988 drivers, but they won’t harm as well. You can make them software-configurable, but this includes soldering and (no offense) since you ask so many basic questions this will be task for later, once you understood the basics.

You don’t need to change them, that setting is ok.

No. A firmware is tied to the mainboard it runs on. The laser head doesn’t matter at all. It just gets a 5V PWM signal from any mainboard, which every firmware will provide. There is absolutely nothing specific about the laser head that the firmware would include.

You can also read some of these tips: Mainboard Replacement - Diode Laser Wiki

And I suggest reading the wikis of the firmwares (FluidNC has a great wiki) as well. I know it’s a bit overwhelming in the beginning, but after some time it gets much easier :slight_smile:

3 Likes

Thanks for the explanation, I’ll go with FluidNC. Is it compatible with all versions of Lightburn (I’m on 1.4.05)?

I configured my DLC32 V2.0 to run on my glass tube co2 laser. I used the steps and direction from the board, that have outputs, prior to the driver hardware.

There are a few issues.

  1. my Ruida uses two control signals to the laser power supply. This doesn’t exist with a grbl or FluidNC firmware. They are usually connect to Laser enable and the pwm or IN of the lps is toggled by the cpu to control power. IMHO, this drives an analog device (glass tube) like it’s digital, never a good idea in my mind.
  2. driving the motor stepper drivers are close to the maximum draw for a direct connection to the DLC32.

Do you have motor drivers or are you using the driver hardware that comes with the DLC32?

What kind of stepper motors do you have, with the stock drivers on the DLC32 support your motors, current wise?

:grinning_cat:

Yes. It talks the grbl-gcode protocol, which is “universal” and works with every LB version (in general).

For some reason I was thinking he was using a glass tube co2.. so what I posted probably isn’t relevant.

:crying_cat:

Hello everyone, I’m making progress programming my board with FluidNC, but I sometimes struggle to know which values ​​to use depending on my hardware. I compare it with existing programs. I have a quick question: in the DLC32 parameters, what are the units of measurement for the values ​​$110 to $112, $120 to $122, and $130 to $132? Thanks in advance for your help. Christophe

Hello, here is my programming; what do you think?
My engraver measures 600 on the X-axis, 800 on the Y-axis, and 63 on the Z-axis. The starting position is in the bottom left corner and is controlled by a switch. My laser head can engrave at speeds up to 20,000 mm/min. I will use an I2C relay to trigger my air pump.

board: MKS-DLC32 V2.1

name: Laser Chris 800x600

meta: 20/02/2026

arc_tolerance_mm: 0.002

junction_deviation_mm: 0.01

verbose_errors: false

report_inches: false

start:

must_home: false

deactivate_parking: true

check_limits: false

stepping:

engine: I2S_STATIC

idle_ms: 250

pulse_us: 4

dir_delay_us: 0

disable_delay_us: 0

segments: 12

axes:

shared_stepper_disable_pin: I2SO.0

shared_stepper_reset_pin: NO_PIN

x:

steps_per_mm: 80.000

max_rate_mm_per_min: 6000.000

acceleration_mm_per_sec2: 500.000

max_travel_mm: 600.000

soft_limits: true

homing:

  cycle: 2

  allow_single_axis: true

  positive_direction: false

  mpos_mm: 0.000

  feed_mm_per_min: 150.000

  seek_mm_per_min: 1500.000

  settle_ms: 250

  seek_scaler: 1.100

  feed_scaler: 1.100



motor0:

  limit_neg_pin: gpio.36:low

  limit_pos_pin: NO_PIN

  limit_all_pin: NO_PIN

  hard_limits: true

  pulloff_mm: 1.000

  stepstick:

    step_pin: I2SO.1

    #change direction using direction_pin: I2SO.2:high

    direction_pin: I2SO.2:low

y:

steps_per_mm: 80.000

max_rate_mm_per_min: 6000.000

acceleration_mm_per_sec2: 500.000

max_travel_mm: 800.000

soft_limits: true

homing:

  cycle: 2

  allow_single_axis: true

  positive_direction: false

  mpos_mm: 0.000

  feed_mm_per_min: 150.000

  seek_mm_per_min: 1500.000

  settle_ms: 250

  seek_scaler: 1.100

  feed_scaler: 1.100



motor0:

  limit_neg_pin: gpio.35:low

  limit_pos_pin: NO_PIN

  limit_all_pin: NO_PIN

  hard_limits: true

  pulloff_mm: 1.000

  stepstick:

    step_pin: I2SO.5

    #change direction using direction_pin: I2SO.6:high

    direction_pin: I2SO.6:low

z:

steps_per_mm: 533.330

max_rate_mm_per_min: 5000.000

acceleration_mm_per_sec2: 200.000

max_travel_mm: 63.000

soft_limits: true

homing:

  cycle: 0

  positive_direction: false

  mpos_mm: 0.000

  feed_mm_per_min: 300.000

  seek_mm_per_min: 1000.000

  settle_ms: 250

  seek_scaler: 1.100

  feed_scaler: 1.100



motor0:

  limit_neg_pin: gpio.34:low

  limit_pos_pin: NO_PIN

  limit_all_pin: NO_PIN

  hard_limits: false

  pulloff_mm: 1.000

  stepstick:

    step_pin: I2SO.3

    #change direction using direction_pin: I2SO.4:high

    direction_pin: I2SO.4

i2so:

bck_pin: gpio.16

data_pin: gpio.21

ws_pin: gpio.17

spi:

miso_pin: gpio.12

mosi_pin: gpio.13

sck_pin: gpio.14

sdcard:

cs_pin: gpio.15

card_detect_pin: NO_PIN

#user outputs can be controlled with M64 P0 (turn P0 on) and M65 P0 (turn P0 off)

#User Outputs | Wiki.js

#it seems only 4 ports work at a time, but all pins work

#on command makes pin 3.3V (high), off command 0V (low)

#available pins: 5,18,19,22,23,25,26,27,32,33,39,I2SO.7, SDA 0 / SCL 4

user_outputs:

digital0_pin: NO_PIN

digital1_pin: NO_PIN

digital2_pin: NO_PIN

digital3_pin: NO_PIN

#define user inputs

#all the following pins can have be assigned those pins:

#available pins: 5,18,19,22,23,25,26,27,32,33,39,I2SO.7, SDA 0 / SCL 4

#example: gpio.5:low:pu; # Pin 5, logic is active low (connected switch should pull to GND when pressed) and pull-up resistor activated

control:

safety_door_pin: NO_PIN

reset_pin: NO_PIN

feed_hold_pin: NO_PIN

cycle_start_pin: NO_PIN

macro0_pin: NO_PIN

macro1_pin: NO_PIN

macro2_pin: NO_PIN

macro3_pin: NO_PIN

#executed when macro_pin is activated

macros:

startup_line0:

startup_line1:

macro0:

macro1:

macro2:

macro3:

coolant:

flood_pin: NO_PIN

mist_pin: NO_PIN

delay_ms: 0

probe:

pin: gpio.22:low

check_mode_start: true

Laser:

pwm_hz: 1500

output_pin: gpio.32

enable_pin: I2SO.7

disable_with_s0: false

s0_with_disable: true

tool_num: 0

speed_map: 0=0.000% 1000=100.000%

off_on_alarm: true

#if you want to connect a small display to the board, define I2C bus and oled sections

#Displays | Wiki.js

#this configuration uses the SDA/SCL labeled pins available on the DLC32 board.

i2c0:

sda_pin: gpio.0

scl_pin: gpio.4

oled:

i2c_num: 0

i2c_address: 60

width: 128

height: 64

radio_delay_ms: 1000

Everything is millimeters, seconds etc. Standard units :slight_smile:

1 Like