MKS DLC32 looks like ideal board when using TMCs #29

Open
opened 2026-07-16 12:20:58 +02:00 by osiu97 · 5 comments
Owner

We wouldn't have to solder anything but uarts and these boards are dirt cheap.

We wouldn't have to solder anything but uarts and these boards are dirt cheap.
osiu97 added the Kind/Enhancement
Priority
Low
Status
Need More Info
labels 2026-07-16 12:21:27 +02:00
Author
Owner

MKS DLC32 V2.1: TMC2209 UART Modification Guide

1. Why the MKS DLC32 V2.1?

When building a custom ESP32 project requiring stepper motors and an extremely small footprint, the Makerbase MKS DLC32 V2.1 is an exceptional choice.

  • Tiny Footprint: Measures just 90x70mm.
  • Modularity: Features 3 stepstick slots, allowing you to plug in (and easily replace) standard TMC2208/2209 stepper drivers rather than relying on built-in, non-replaceable chips.
  • Power Delivery: Directly accepts 12V-24V input and steps it down to power the ESP32, bypassing the complex power delivery mismatch of 3.7V LiPo batteries and 12V-24V stepper requirements.
  • Cost & Availability: Mass-produced, thoroughly documented, and available for under $15.

2. The UART Challenge

Out of the box, the MKS DLC32 V2.1 routes traces to the stepsticks only for Standalone (STEP/DIR) mode. It does not natively route the ESP32's UART communication pins to the stepstick sockets.

Without UART, you:

  • Cannot set motor current via software (must use the VREF potentiometer screw).
  • Cannot configure microstepping on the fly (must use physical DIP switches).
  • Cannot use advanced features like StallGuard (Sensorless Homing) or read driver diagnostics.

To unlock these features, you must manually run jumper wires from the ESP32 to the PDN_UART pin on your stepsticks.


3. Can I Use Endstop Pins for UART?

Short Answer: No, unfortunately you cannot.

The Technical Reason:
On the MKS DLC32 V2.1, the Endstop inputs (X-, Y-, Z-) are wired directly to the ESP32's GPIO 35, GPIO 36, and GPIO 39.
In the ESP32 silicon, GPIOs 34 through 39 are strictly INPUT-ONLY pins. They do not possess the internal hardware (output drivers) required to transmit data. Because TMC2209 UART communication is half-duplex (it sends and receives over a single wire), the pin must be bidirectional (capable of both TX and RX).

Alternative Pin Choices (Preserving I2C)

If you want to keep the I2C pins (GPIO 21 and 22) free for other sensors or a display, you need to hijack other available bidirectional GPIOs on the board. Excellent candidates include:

  1. The Probe Pin: Mapped to GPIO 32. This is a standard, fully bidirectional GPIO.
  2. The EXP1 / EXP2 Headers: If you aren't using the standard Makerbase TFT touch screen, these headers expose several bidirectional GPIOs (like GPIO 12, 13, 14, 25, 26, 27) that you can easily plug female jumper wires into.

4. How to Wire the PDN_UART Hack

Step 1: Fix the 5V Logic Mismatch (CRITICAL)

The ESP32 uses 3.3V logic, but the DLC32 feeds 5V into the VDD logic pin of the stepstick sockets. If you wire the UART pin directly, the driver will blast 5V into your ESP32's 3.3V pin, which will damage or destroy it.

The Solution:
Desolder or snip off the VDD pin on the bottom of your TMC2209 stepstick so it does not insert into the DLC32 socket. Then, solder a small jumper wire from the stepstick's VDD pad directly to any 3.3V source on the DLC32 board (there is a 3.3V pin right next to the I2C header).

Step 2: Solder the UART Jumpers

Identify the PDN_UART pin on your stepstick (usually the 4th pin down on the side with the STEP/DIR pins).

  • Run a jumper wire from Driver 1's UART pin to your chosen ESP32 pin (e.g., GPIO 32 / Probe).
  • Run a jumper wire from Driver 2's UART pin to another chosen ESP32 pin (e.g., GPIO 25 on the EXP header).
  • Note: Using a separate GPIO for each driver avoids having to mess with hardware addressing resistors on the stepsticks.

Step 3: Configure Your Firmware

In your custom code (e.g., using the TMCStepper library), map the hardware serial instances to the pins you hijacked:

// Example pin definitions using custom hijacked pins
#define DRIVER_1_UART_PIN 32 // Connected to Probe
#define DRIVER_2_UART_PIN 25 // Connected to EXP1 header

// Because TMC2209 uses a single wire for RX and TX, define both to the same pin
HardwareSerial Serial1(1); 
Serial1.begin(115200, SERIAL_8N1, DRIVER_1_UART_PIN, DRIVER_1_UART_PIN);
# MKS DLC32 V2.1: TMC2209 UART Modification Guide ## 1. Why the MKS DLC32 V2.1? When building a custom ESP32 project requiring stepper motors and an extremely small footprint, the **Makerbase MKS DLC32 V2.1** is an exceptional choice. * **Tiny Footprint:** Measures just 90x70mm. * **Modularity:** Features 3 stepstick slots, allowing you to plug in (and easily replace) standard TMC2208/2209 stepper drivers rather than relying on built-in, non-replaceable chips. * **Power Delivery:** Directly accepts 12V-24V input and steps it down to power the ESP32, bypassing the complex power delivery mismatch of 3.7V LiPo batteries and 12V-24V stepper requirements. * **Cost & Availability:** Mass-produced, thoroughly documented, and available for under $15. --- ## 2. The UART Challenge Out of the box, the MKS DLC32 V2.1 routes traces to the stepsticks **only for Standalone (STEP/DIR) mode**. It does not natively route the ESP32's UART communication pins to the stepstick sockets. Without UART, you: * Cannot set motor current via software (must use the VREF potentiometer screw). * Cannot configure microstepping on the fly (must use physical DIP switches). * Cannot use advanced features like StallGuard (Sensorless Homing) or read driver diagnostics. To unlock these features, you must manually run jumper wires from the ESP32 to the `PDN_UART` pin on your stepsticks. --- ## 3. Can I Use Endstop Pins for UART? **Short Answer:** No, unfortunately you cannot. **The Technical Reason:** On the MKS DLC32 V2.1, the Endstop inputs (X-, Y-, Z-) are wired directly to the ESP32's **GPIO 35, GPIO 36, and GPIO 39**. In the ESP32 silicon, **GPIOs 34 through 39 are strictly INPUT-ONLY pins**. They do not possess the internal hardware (output drivers) required to transmit data. Because TMC2209 UART communication is half-duplex (it sends and receives over a single wire), the pin *must* be bidirectional (capable of both TX and RX). ### Alternative Pin Choices (Preserving I2C) If you want to keep the I2C pins (GPIO 21 and 22) free for other sensors or a display, you need to hijack other available bidirectional GPIOs on the board. Excellent candidates include: 1. **The Probe Pin:** Mapped to **GPIO 32**. This is a standard, fully bidirectional GPIO. 2. **The EXP1 / EXP2 Headers:** If you aren't using the standard Makerbase TFT touch screen, these headers expose several bidirectional GPIOs (like GPIO 12, 13, 14, 25, 26, 27) that you can easily plug female jumper wires into. --- ## 4. How to Wire the PDN_UART Hack ### Step 1: Fix the 5V Logic Mismatch (CRITICAL) The ESP32 uses **3.3V logic**, but the DLC32 feeds **5V** into the `VDD` logic pin of the stepstick sockets. If you wire the UART pin directly, the driver will blast 5V into your ESP32's 3.3V pin, which will damage or destroy it. **The Solution:** Desolder or snip off the `VDD` pin on the bottom of your TMC2209 stepstick so it does not insert into the DLC32 socket. Then, solder a small jumper wire from the stepstick's `VDD` pad directly to any **3.3V source** on the DLC32 board (there is a 3.3V pin right next to the I2C header). ### Step 2: Solder the UART Jumpers Identify the **PDN_UART** pin on your stepstick (usually the 4th pin down on the side with the STEP/DIR pins). * Run a jumper wire from **Driver 1's UART pin** to your chosen ESP32 pin (e.g., `GPIO 32` / Probe). * Run a jumper wire from **Driver 2's UART pin** to another chosen ESP32 pin (e.g., `GPIO 25` on the EXP header). * *Note: Using a separate GPIO for each driver avoids having to mess with hardware addressing resistors on the stepsticks.* ### Step 3: Configure Your Firmware In your custom code (e.g., using the `TMCStepper` library), map the hardware serial instances to the pins you hijacked: ```cpp // Example pin definitions using custom hijacked pins #define DRIVER_1_UART_PIN 32 // Connected to Probe #define DRIVER_2_UART_PIN 25 // Connected to EXP1 header // Because TMC2209 uses a single wire for RX and TX, define both to the same pin HardwareSerial Serial1(1); Serial1.begin(115200, SERIAL_8N1, DRIVER_1_UART_PIN, DRIVER_1_UART_PIN);
Author
Owner

borrowing from exp1/exp2 is fine

borrowing from exp1/exp2 is fine
Author
Owner

Don't snip off VDD, use a 470Ω to 1kΩ resistor in series with jumper wire

Don't snip off VDD, use a 470Ω to 1kΩ resistor in series with jumper wire
Author
Owner

Or we could also use different easily accesible board

Or we could also use different easily accesible board
Author
Owner

MKS DLC32 V2.1: TMC2209 UART Modification Guide

1. Why the MKS DLC32 V2.1?

When building a custom ESP32 project requiring stepper motors and an extremely small footprint, the Makerbase MKS DLC32 V2.1 is an exceptional choice.

  • Tiny Footprint: Measures just 90x70mm.
  • Modularity: Features 3 stepstick slots, allowing you to plug in (and easily replace) standard TMC2208/2209 stepper drivers rather than relying on built-in, non-replaceable chips.
  • Power Delivery: Directly accepts 12V-24V input and steps it down to power the ESP32, bypassing the complex power delivery mismatch of 3.7V LiPo batteries and 12V-24V stepper requirements.
  • Cost & Availability: Mass-produced, thoroughly documented, and available for under $15.

2. The UART Challenge

Out of the box, the MKS DLC32 V2.1 routes traces to the stepsticks only for Standalone (STEP/DIR) mode. It does not natively route the ESP32's UART communication pins to the stepstick sockets.

Without UART, you:

  • Cannot set motor current via software (must use the VREF potentiometer screw).
  • Cannot configure microstepping on the fly (must use physical DIP switches).
  • Cannot use advanced features like StallGuard (Sensorless Homing) or read driver diagnostics.

To unlock these features, you must manually run jumper wires from the ESP32 to the PDN_UART pin on your stepsticks.


3. Can I Use Endstop Pins for UART?

Short Answer: No, unfortunately you cannot.

The Technical Reason:
On the MKS DLC32 V2.1, the Endstop inputs (X-, Y-, Z-) are wired directly to the ESP32's GPIO 35, GPIO 36, and GPIO 39.
In the ESP32 silicon, GPIOs 34 through 39 are strictly INPUT-ONLY pins. They do not possess the internal hardware (output drivers) required to transmit data. Because TMC2209 UART communication is half-duplex (it sends and receives over a single wire), the pin must be bidirectional (capable of both TX and RX).

The Best Pin Choice: The EXP1 / EXP2 Headers

Since the endstop pins won't work and you want to preserve the I2C pins, the EXP1 and EXP2 headers (normally used for the offline TFT display) are the perfect target. These headers expose several bidirectional GPIOs that are completely free to use.
Excellent candidates on these headers include GPIO 25, GPIO 26, and GPIO 27.


4. How to Wire the PDN_UART Hack

Step 1: Fix the 5V Logic Mismatch (CRITICAL)

The ESP32 uses 3.3V logic, but the DLC32 feeds 5V into the VDD logic pin of the stepstick sockets. If you run a plain wire, the TMC2209 will transmit 5V on its UART pin straight into your ESP32, which can slowly degrade or instantly fry the pin over time.

The Inline Resistor Solution:
Since you prefer not to physically modify the stepsticks (no clipping or desoldering pins), you need to limit the current on the data line.

  • Solder a ~470Ω to 1kΩ resistor inline on each of your jumper wires.
  • This limits the current to a safe level, protecting the ESP32's 3.3V GPIOs from the 5V signals while still allowing two-way communication to pass through successfully.

Step 2: Solder the UART Jumpers

Identify the PDN_UART pin on your stepstick (usually the 4th pin down on the side with the STEP/DIR pins).

  • Run your resistor-equipped jumper wire from Driver 1's UART pin to an EXP header pin (e.g., GPIO 25).
  • Run your second resistor-equipped jumper wire from Driver 2's UART pin to another EXP header pin (e.g., GPIO 26).
  • Note: Using a separate GPIO for each driver avoids having to mess with hardware addressing resistors on the stepsticks.

Step 3: Configure Your Firmware

In your custom code (e.g., using the TMCStepper library), map the hardware serial instances to the EXP header pins you hijacked:

// Example pin definitions using the EXP header pins
#define DRIVER_1_UART_PIN 25 // Connected to EXP header
#define DRIVER_2_UART_PIN 26 // Connected to EXP header

// Because TMC2209 uses a single wire for RX and TX, define both to the same pin
HardwareSerial Serial1(1); 
Serial1.begin(115200, SERIAL_8N1, DRIVER_1_UART_PIN, DRIVER_1_UART_PIN);

HardwareSerial Serial2(2); 
Serial2.begin(115200, SERIAL_8N1, DRIVER_2_UART_PIN, DRIVER_2_UART_PIN);
# MKS DLC32 V2.1: TMC2209 UART Modification Guide ## 1. Why the MKS DLC32 V2.1? When building a custom ESP32 project requiring stepper motors and an extremely small footprint, the **Makerbase MKS DLC32 V2.1** is an exceptional choice. * **Tiny Footprint:** Measures just 90x70mm. * **Modularity:** Features 3 stepstick slots, allowing you to plug in (and easily replace) standard TMC2208/2209 stepper drivers rather than relying on built-in, non-replaceable chips. * **Power Delivery:** Directly accepts 12V-24V input and steps it down to power the ESP32, bypassing the complex power delivery mismatch of 3.7V LiPo batteries and 12V-24V stepper requirements. * **Cost & Availability:** Mass-produced, thoroughly documented, and available for under $15. --- ## 2. The UART Challenge Out of the box, the MKS DLC32 V2.1 routes traces to the stepsticks **only for Standalone (STEP/DIR) mode**. It does not natively route the ESP32's UART communication pins to the stepstick sockets. Without UART, you: * Cannot set motor current via software (must use the VREF potentiometer screw). * Cannot configure microstepping on the fly (must use physical DIP switches). * Cannot use advanced features like StallGuard (Sensorless Homing) or read driver diagnostics. To unlock these features, you must manually run jumper wires from the ESP32 to the `PDN_UART` pin on your stepsticks. --- ## 3. Can I Use Endstop Pins for UART? **Short Answer:** No, unfortunately you cannot. **The Technical Reason:** On the MKS DLC32 V2.1, the Endstop inputs (X-, Y-, Z-) are wired directly to the ESP32's **GPIO 35, GPIO 36, and GPIO 39**. In the ESP32 silicon, **GPIOs 34 through 39 are strictly INPUT-ONLY pins**. They do not possess the internal hardware (output drivers) required to transmit data. Because TMC2209 UART communication is half-duplex (it sends and receives over a single wire), the pin *must* be bidirectional (capable of both TX and RX). ### The Best Pin Choice: The EXP1 / EXP2 Headers Since the endstop pins won't work and you want to preserve the I2C pins, the **EXP1 and EXP2 headers** (normally used for the offline TFT display) are the perfect target. These headers expose several bidirectional GPIOs that are completely free to use. Excellent candidates on these headers include **GPIO 25, GPIO 26, and GPIO 27**. --- ## 4. How to Wire the PDN_UART Hack ### Step 1: Fix the 5V Logic Mismatch (CRITICAL) The ESP32 uses **3.3V logic**, but the DLC32 feeds **5V** into the `VDD` logic pin of the stepstick sockets. If you run a plain wire, the TMC2209 will transmit 5V on its UART pin straight into your ESP32, which can slowly degrade or instantly fry the pin over time. **The Inline Resistor Solution:** Since you prefer not to physically modify the stepsticks (no clipping or desoldering pins), you need to limit the current on the data line. * Solder a **~470Ω to 1kΩ resistor** inline on each of your jumper wires. * This limits the current to a safe level, protecting the ESP32's 3.3V GPIOs from the 5V signals while still allowing two-way communication to pass through successfully. ### Step 2: Solder the UART Jumpers Identify the **PDN_UART** pin on your stepstick (usually the 4th pin down on the side with the STEP/DIR pins). * Run your resistor-equipped jumper wire from **Driver 1's UART pin** to an EXP header pin (e.g., **GPIO 25**). * Run your second resistor-equipped jumper wire from **Driver 2's UART pin** to another EXP header pin (e.g., **GPIO 26**). * *Note: Using a separate GPIO for each driver avoids having to mess with hardware addressing resistors on the stepsticks.* ### Step 3: Configure Your Firmware In your custom code (e.g., using the `TMCStepper` library), map the hardware serial instances to the EXP header pins you hijacked: ```cpp // Example pin definitions using the EXP header pins #define DRIVER_1_UART_PIN 25 // Connected to EXP header #define DRIVER_2_UART_PIN 26 // Connected to EXP header // Because TMC2209 uses a single wire for RX and TX, define both to the same pin HardwareSerial Serial1(1); Serial1.begin(115200, SERIAL_8N1, DRIVER_1_UART_PIN, DRIVER_1_UART_PIN); HardwareSerial Serial2(2); Serial2.begin(115200, SERIAL_8N1, DRIVER_2_UART_PIN, DRIVER_2_UART_PIN); ```
Sign in to join this conversation.