Hi,
after fighting a 32-bit Chinese controller for a year it finally decided to even blow some mosfets, so I now upgrade my printer to a simple RAMPS 1.4 on 24V with TMC2130 V1.1 drivers. Should be nice. I set everything up, all sensors and the hotend are working. Now I need the axles (and the extruder) to move. But they refuse.
I went through the Configuration.h (besides the usual settings for endstops and CoreXY and such), starting at line 540:
* Stepper Drivers
*
* These settings allow Marlin to tune stepper driver timing and enable advanced options for
* stepper drivers that support them. You may also override timing options in Configuration_adv.h.
*
* A4988 is assumed for unspecified drivers.
*
* Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC5130, TMC5130_STANDALONE
* :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
*/
#define X_DRIVER_TYPE TMC2130
#define Y_DRIVER_TYPE TMC2130
#define Z_DRIVER_TYPE TMC2130
//#define X2_DRIVER_TYPE A4988
//#define Y2_DRIVER_TYPE A4988
//#define Z2_DRIVER_TYPE A4988
#define E0_DRIVER_TYPE TMC2130
//#define E1_DRIVER_TYPE A4988
//#define E2_DRIVER_TYPE A4988
//#define E3_DRIVER_TYPE A4988
//#define E4_DRIVER_TYPE A4988
In Configuration_adv.h, from line 1081:
/**
* To use TMC2130 stepper drivers in SPI mode connect your SPI pins to
* the hardware SPI interface on your board and define the required CS pins
* in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3 pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.).
* You may also use software SPI if you wish to use general purpose IO pins.
*
* You'll also need the TMC2130Stepper Arduino library
* (https://github.com/teemuatlut/TMC2130Stepper).
*
* To use TMC2208 stepper UART-configurable stepper drivers
* connect #_SERIAL_TX_PIN to the driver side PDN_UART pin with a 1K resistor.
* To use the reading capabilities, also connect #_SERIAL_RX_PIN
* to PDN_UART without a resistor.
* The drivers can also be used with hardware serial.
*
* You'll also need the TMC2208Stepper Arduino library
* (https://github.com/teemuatlut/TMC2208Stepper).
*/
#if HAS_TRINAMIC
#define R_SENSE 0.11 // R_sense resistor for SilentStepStick2130
#define HOLD_MULTIPLIER 0.25 // Scales down the holding current from run current
#define INTERPOLATE true // Interpolate X/Y/Z_MICROSTEPS to 256
#define X_CURRENT 800 // rms current in mA. Multiply by 1.41 for peak current.
#define X_MICROSTEPS 1 // 0..256
#define Y_CURRENT 800
#define Y_MICROSTEPS 1
#define Z_CURRENT 800
#define Z_MICROSTEPS 1
#define X2_CURRENT 800
#define X2_MICROSTEPS 16
#define Y2_CURRENT 800
#define Y2_MICROSTEPS 16
#define Z2_CURRENT 800
#define Z2_MICROSTEPS 16
#define E0_CURRENT 800
#define E0_MICROSTEPS 1
#define E1_CURRENT 800
#define E1_MICROSTEPS 16
#define E2_CURRENT 800
#define E2_MICROSTEPS 16
#define E3_CURRENT 800
#define E3_MICROSTEPS 16
#define E4_CURRENT 800
#define E4_MICROSTEPS 16
/**
* Use software SPI for TMC2130.
* The default SW SPI pins are defined the respective pins files,
* but you can override or define them here.
*/
#define TMC_USE_SW_SPI
//#define TMC_SW_MOSI -1
//#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1
/**
* Use Trinamic's ultra quiet stepping mode.
* When disabled, Marlin will use spreadCycle stepping mode.
*/
#define STEALTHCHOP
/**
* Monitor Trinamic TMC2130 and TMC2208 drivers for error conditions,
* like overtemperature and short to ground. TMC2208 requires hardware serial.
* In the case of overtemperature Marlin can decrease the driver current until error condition clears.
* Other detected conditions can be used to stop the current print.
* Relevant g-codes:
* M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given.
* M911 - Report stepper driver overtemperature pre-warn condition.
* M912 - Clear stepper driver overtemperature pre-warn condition flag.
* M122 S0/1 - Report driver parameters (Requires TMC_DEBUG)
*/
//#define MONITOR_DRIVER_STATUS
#if ENABLED(MONITOR_DRIVER_STATUS)
#define CURRENT_STEP_DOWN 50 // [mA]
#define REPORT_CURRENT_CHANGE
#define STOP_ON_ERROR
#endif
/**
* The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD.
* This mode allows for faster movements at the expense of higher noise levels.
* STEALTHCHOP needs to be enabled.
* M913 X/Y/Z/E to live tune the setting
*/
//#define HYBRID_THRESHOLD
#define X_HYBRID_THRESHOLD 100 // [mm/s]
#define X2_HYBRID_THRESHOLD 100
#define Y_HYBRID_THRESHOLD 100
#define Y2_HYBRID_THRESHOLD 100
#define Z_HYBRID_THRESHOLD 3
#define Z2_HYBRID_THRESHOLD 3
#define E0_HYBRID_THRESHOLD 30
#define E1_HYBRID_THRESHOLD 30
#define E2_HYBRID_THRESHOLD 30
#define E3_HYBRID_THRESHOLD 30
#define E4_HYBRID_THRESHOLD 30
/**
* Use stallGuard2 to sense an obstacle and trigger an endstop.
* You need to place a wire from the driver's DIAG1 pin to the X/Y endstop pin.
* X, Y, and Z homing will always be done in spreadCycle mode.
*
* X/Y/Z_HOMING_SENSITIVITY is used for tuning the trigger sensitivity.
* Higher values make the system LESS sensitive.
* Lower value make the system MORE sensitive.
* Too low values can lead to false positives, while too high values will collide the axis without triggering.
* It is advised to set X/Y/Z_HOME_BUMP_MM to 0.
* M914 X/Y/Z to live tune the setting
*/
//#define SENSORLESS_HOMING // TMC2130 only
#if ENABLED(SENSORLESS_HOMING)
#define X_HOMING_SENSITIVITY 8
#define Y_HOMING_SENSITIVITY 8
#define Z_HOMING_SENSITIVITY 8
#define X_HOME_BUMP_MM 0
#define Y_HOME_BUMP_MM 0
#define Z_HOME_BUMP_MM 0
#endif
/**
* Enable M122 debugging command for TMC stepper drivers.
* M122 S0/1 will enable continous reporting.
*/
#define TMC_DEBUG
/**
* M915 Z Axis Calibration
*
* - Adjust Z stepper current,
* - Drive the Z axis to its physical maximum, and
* - Home Z to account for the lost steps.
*
* Use M915 Snn to specify the current.
* Use M925 Znn to add extra Z height to Z_MAX_POS.
*/
//#define TMC_Z_CALIBRATION
#if ENABLED(TMC_Z_CALIBRATION)
#define CALIBRATION_CURRENT 250
#define CALIBRATION_EXTRA_HEIGHT 10
#endif
/**
* You can set your own advanced settings by filling in predefined functions.
* A list of available functions can be found on the library github page
* [github.com]
* [github.com]
*
* Example:
* #define TMC_ADV() { \
* stepperX.diag0_temp_prewarn(1); \
* stepperY.interpolate(0); \
* }
*/
#define TMC_ADV() { }
#endif // TMC2130 || TMC2208
And beause I use the RepRap Discount Full Graphics controller and SD, I relocated the X and Y call pins to 44 and 64:
// Steppers
//
#define X_STEP_PIN 54
#define X_DIR_PIN 55
#define X_ENABLE_PIN 38
#ifndef X_CS_PIN
#define X_CS_PIN 44
#endif
#define Y_STEP_PIN 60
#define Y_DIR_PIN 61
#define Y_ENABLE_PIN 56
#ifndef Y_CS_PIN
#define Y_CS_PIN 64
#endif
#define Z_STEP_PIN 46
#define Z_DIR_PIN 48
#define Z_ENABLE_PIN 62
#ifndef Z_CS_PIN
#define Z_CS_PIN 40
#endif
#define E0_STEP_PIN 26
#define E0_DIR_PIN 28
#define E0_ENABLE_PIN 24
#ifndef E0_CS_PIN
#define E0_CS_PIN 42
#endif
#define E1_STEP_PIN 36
#define E1_DIR_PIN 34
#define E1_ENABLE_PIN 30
#ifndef E1_CS_PIN
#define E1_CS_PIN 44
#endif
When I start the machine, everything seems OK. As said, sensors and hotend work. But no movement. When I ask M122, this is what I get in return:
SENDING:M122
X Y Z E0
Enabled false false false false
Set current 800 800 800 800
RMS current 795 795 795 795
MAX current 1121 1121 1121 1121
Run current 25/31 25/31 25/31 25/31
Hold current 6/31 6/31 6/31 6/31
CS actual 31/31 31/31 31/31 31/31
PWM scale 255 255 255 255
vsense 1=.18 1=.18 1=.18 1=.18
stealthChop true true true true
msteps 0 0 0 0
tstep 4294967295 4294967295 4294967295 4294967295
pwm
threshold 0 0 0 0
[mm/s] - - - -
OT prewarn true true true true
OT prewarn has
been triggered false false false false
off time 15 15 15 15
blank time 54 54 54 54
hysteresis
-end 12 12 12 12
-start 8 8 8 8
Stallguard thrs 0 0 0 0
DRVSTATUS X Y Z E0
stallguard X X X X
sg_result 1023 1023 1023 1023
fsactive X X X X
stst X X X X
olb X X X X
ola X X X X
s2gb X X X X
s2ga X X X X
otpw X X X X
ot X X X X
Driver registers: X = 0xFF:FF:FF:FF
Y = 0xFF:FF:FF:FF
Z = 0xFF:FF:FF:FF
E0 = 0xFF:FF:FF:FF
It seems weird to me the enable is false, I don't think it should. But I don't know how to fix that.
I used no jumpers on the RAMPS board (hence the low number of steps per mm you can find above) and I removed the pin following Dir and Step (with the little gear) as I read somewhere that should help. I can easily solder them back, I just heated the pin and pushed it up.
Where to look next? All help is appreciated, I just want to have a reliable printer again after a year of many longer prints failing.
Cheers,
Hugo