Skip to main content

TMC 2240

Basic Parameters

  • Input Voltage: 12V-36V
  • Applicable to: Klipper/RRF firmware
  • Drive Mode Support: TMC: SPI/UART
  • Integrated Temperature Detection
  • Universal Analog Input Full Protection and Diagnosis
  • Fully Integrated Lossless Current Sensing (ICS)
  • Stepper/Direction Interface with Microstep Interpolation microPlyer
  • Short Circuit Protection, Undervoltage Lockout, Chip Overheat Protection (Thermal Shutdown)
  • Supports stallGuard2 High Precision Sensorless Motor Load Detection
  • Integrated StallGuard2 and StallGuard4 Sensorless Motor Load Detection
  • Jitter-Free Combination of StealthChop and SpreadCycle, Solving the Motor Judder Problem at Chopper Switching Speed Points.
  • Higher Power Output and Lower Heat Generation. (Supports higher voltage, 3.0A MAX, suitable for high-end 3D printing work, and can work for longer periods without overheating or damage.)

Mainboard Jumper Instructions

  • TMC2240 defaults to using SPI jumper
  • Method to Use TMC2240 with UART Jumper

TMC2240 Reference Configuration

dangerous

The drive sampling resistor is rref: 12300, please do not set it incorrectly.

SPI Mode Reference Configuration

[tmc2240 stepper_x]
cs_pin:
spi_bus:
run_current: 0.65 # Motor Running Current Value
interpolate: False # Whether to Enable 256 Microstep Interpolation (Not Recommended)
rref: 12300
stealthchop_threshold: 0 # Silence Threshold (If Not Needed, Set the Value to 0)

UART Mode Reference Configuration

[tmc2240 stepper_x]
uart_pin:
run_current: 0.65 # Motor Running Current Value
interpolate: False # Whether to Enable 256 Microstep Interpolation (Not Recommended)
rref: 12300 # Drive Sampling Resistor
stealthchop_threshold: 0 # Silence Threshold (If Not Needed, Set the Value to 0)
  • If the following error occurs

  • You need to log in to the user who has installed Klipper via SSH terminal and then execute this code

    sed -i 's/"uart_pin"/\'"'"'uart_pin'\''/g' ~/klipper/klippy/extras/tmc2240.py

Infinite Limit Usage Instructions

Infinite Position Usage Tip
  • Infinite position usage requires occupying a limit port, normally IO1 is used for the first drive position, IO2 for the second drive position, and so on.
  • When using infinite position, please make sure not to connect anything to the corresponding limit port.
  • For some FLY motherboards, the drive ports are directly connected, please pay attention to whether DIAG is directly connected to the corresponding pin.
Infinite Limit Usage Tip
  • The original endstop_pin: needs to be masked or deleted, add endstop_pin: tmc2240_stepper_x:virtual_endstop
  • After configuring diag0_pin:, the limit status refresh is not triggered
  • When configuring driver_SGT:, you need to test a suitable value, usually 1
  • Reference Configuration
[stepper_x]
# endstop_pin:PF3 # Need to mask or delete the original limit port
endstop_pin: tmc2240_stepper_x:virtual_endstop
homing_retract_dist: 0 # Do not change 0, as it may cause the homing to fail

[tmc2240 stepper_x]
diag0_pin: ^!PG12
driver_SGT: 1