Marlin 1.1.9, TMC2130 V1.1, no movement
December 08, 2018 09:50AM
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

Edited 2 time(s). Last edit at 12/09/2018 01:06PM by HugoW.
Re: Marlin 1.1.9, TMC2130 V1.1, no movement
December 08, 2018 10:04AM
Quote
HugoW
Driver registers: X = 0xFF:FF:FF:FF
Y = 0xFF:FF:FF:FF
Z = 0xFF:FF:FF:FF
E0 = 0xFF:FF:FF:FF

"Reported register values of either 0x00000000 or 0xFFFFFFFF are bad responses."

Its not talking SPI correctly

how exactly have you wired the SPI bus and to where?

config shows your using TMC_USE_SW_SPI

but that conflicts with pins 44 and 64 below

#if ENABLED(TMC_USE_SW_SPI)
  #ifndef TMC_SW_MOSI
    #define TMC_SW_MOSI    66
  #endif
  #ifndef TMC_SW_MISO
    #define TMC_SW_MISO    44
  #endif
  #ifndef TMC_SW_SCK
    #define TMC_SW_SCK     64
  #endif
#endif

perhaps your using physical SPI port, in which case you should disable TMC_USE_SW_SPI in Configuration_adv.h

Edited 3 time(s). Last edit at 12/08/2018 10:13AM by Dust.
Re: Marlin 1.1.9, TMC2130 V1.1, no movement
December 08, 2018 10:48AM
Hi,

thanks for the quick response. I have soldered the SPI wires from the drivers to the pins on the connector for the LCD screen:
SDO on the drivers to port D50 MISO
CS goes to the before mentioned ports D40, D41, D44 and D64
SCK on the drivers to port D52 SCK
SDI on the drivers to D51 (MOSI)

I just changed this in the Configuration_adv.h following your comment:
   */
  //#define TMC_USE_SW_SPI
  #define TMC_SW_MOSI        D51
  #define TMC_SW_MISO        D50
  #define TMC_SW_SCK         D52
Taking out the standard pins and defining where they really are.

I uploaded, Marlin rebooted and I got this from M122:
SENDING:M122
		X	Y	Z	E0
Enabled		true	true	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		6/31	6/31	6/31	6/31
PWM scale		22	23	0	0
vsense		1=.18	1=.18	1=.18	1=.18
stealthChop	true	true	true	true
msteps		256	256	256	256
tstep		1048575	1048575	1048575	1048575
pwm
threshold		0	0	0	0
[mm/s]		-	-	-	-
OT prewarn	false	false	false	false
OT prewarn has
been triggered	false	false	false	false
off time		5	5	5	5
blank time	24	24	24	24
hysteresis
-end		2	2	2	2
-start		3	3	3	3
Stallguard thrs	0	0	0	0
DRVSTATUS	X	Y	Z	E0
stallguard
sg_result		0	0	0	0
fsactive
stst		X	X	X	X
olb
ola
s2gb
s2ga
otpw
ot
Driver registers:	X = 0x80:06:00:00
	Y = 0x80:06:00:00
	Z = 0x80:06:00:00
	E0 = 0x80:06:00:00

That looks better, but still no movement. I restarted the printer as a whole, disconnecting the USB and only reconnecting it after power-up. M122 changed to this:
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		6/31	6/31	6/31	6/31
PWM scale		1	1	1	1
vsense		1=.18	1=.18	1=.18	1=.18
stealthChop	true	true	true	true
msteps		256	256	256	256
tstep		1048575	1048575	1048575	1048575
pwm
threshold		0	0	0	0
[mm/s]		-	-	-	-
OT prewarn	false	false	false	false
OT prewarn has
been triggered	false	false	false	false
off time		5	5	5	5
blank time	24	24	24	24
hysteresis
-end		2	2	2	2
-start		3	3	3	3
Stallguard thrs	0	0	0	0
DRVSTATUS	X	Y	Z	E0
stallguard
sg_result		0	0	0	0
fsactive
stst		X	X	X	X
olb
ola
s2gb
s2ga
otpw
ot
Driver registers:	X = 0x80:06:00:00
	Y = 0x80:06:00:00
	Z = 0x80:06:00:00
	E0 = 0x80:06:00:00
X and Y went from enabled true to false for some reason.

Cheers,

Hugo
Re: Marlin 1.1.9, TMC2130 V1.1, no movement
December 08, 2018 10:59AM
Well its now talking, this is a start.

Do the drivers work if you reset your board without removing power? (reset button) The chip requires its power to be stable before it sees 5V on VCC_IO pin from arduino. There's a chance that 12V on your power supply stabilizes after the processor's power is already up and that will reset TMC2130 settings to defaults.

Edited 1 time(s). Last edit at 12/08/2018 11:00AM by Dust.
Re: Marlin 1.1.9, TMC2130 V1.1, no movement
December 08, 2018 11:14AM
I just started the RAMPS without the 24V power on, just USB:
SENDING:M122
		X	Y	Z	E0
Enabled		false	false	false	false
Set current	800	800	800	800
RMS current	1436	1436	1436	1436
MAX current	2025	2025	2025	2025
Run current	25/31	25/31	25/31	25/31
Hold current	6/31	6/31	6/31	6/31
CS actual		0/31	0/31	0/31	0/31
PWM scale		0	0	0	0
vsense		0=.325	0=.325	0=.325	0=.325
stealthChop	false	false	false	false
msteps		256	256	256	256
tstep		0	0	0	0
pwm
threshold		0	0	0	0
[mm/s]		-	-	-	-
OT prewarn	false	false	false	false
OT prewarn has
been triggered	false	false	false	false
off time		0	0	0	0
blank time	16	16	16	16
hysteresis
-end		-3	-3	-3	-3
-start		1	1	1	1
Stallguard thrs	0	0	0	0
DRVSTATUS	X	Y	Z	E0
stallguard
sg_result		0	0	0	0
fsactive
stst
olb
ola
s2gb
s2ga
otpw
ot
Driver registers:	X = 0x00:00:00:00
	Y = 0x00:00:00:00
	Z = 0x00:00:00:00
	E0 = 0x00:00:00:00

Switching on 24V:
SENDING:M122
		X	Y	Z	E0
Enabled		false	false	false	false
Set current	800	800	800	800
RMS current	1436	1436	1436	1436
MAX current	2025	2025	2025	2025
Run current	25/31	25/31	25/31	25/31
Hold current	6/31	6/31	6/31	6/31
CS actual		0/31	0/31	0/31	0/31
PWM scale		0	0	0	0
vsense		0=.325	0=.325	0=.325	0=.325
stealthChop	false	false	false	false
msteps		256	256	256	256
tstep		1048575	1048575	1048575	1048575
pwm
threshold		0	0	0	0
[mm/s]		-	-	-	-
OT prewarn	false	false	false	false
OT prewarn has
been triggered	false	false	false	false
off time		0	0	0	0
blank time	16	16	16	16
hysteresis
-end		-3	-3	-3	-3
-start		1	1	1	1
Stallguard thrs	0	0	0	0
DRVSTATUS	X	Y	Z	E0
stallguard
sg_result		0	0	0	0
fsactive
stst		X	X	X	X
olb
ola
s2gb
s2ga
otpw
ot
Driver registers:	X = 0x80:00:00:00
	Y = 0x80:00:00:00
	Z = 0x80:00:00:00
	E0 = 0x80:00:00:00

Resetting while 24V stays on:
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		6/31	6/31	6/31	6/31
PWM scale		0	0	0	0
vsense		1=.18	1=.18	1=.18	1=.18
stealthChop	true	true	true	true
msteps		256	256	256	256
tstep		1048575	1048575	1048575	1048575
pwm
threshold		0	0	0	0
[mm/s]		-	-	-	-
OT prewarn	false	false	false	false
OT prewarn has
been triggered	false	false	false	false
off time		5	5	5	5
blank time	24	24	24	24
hysteresis
-end		2	2	2	2
-start		3	3	3	3
Stallguard thrs	0	0	0	0
DRVSTATUS	X	Y	Z	E0
stallguard
sg_result		0	0	0	0
fsactive
stst		X	X	X	X
olb
ola
s2gb
s2ga
otpw
ot
Driver registers:	X = 0x80:06:00:00
	Y = 0x80:06:00:00
	Z = 0x80:06:00:00
	E0 = 0x80:06:00:00

Starting on 2V without the USB connected, USB only connected after start-up:
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		6/31	6/31	6/31	6/31
PWM scale		1	1	1	1
vsense		1=.18	1=.18	1=.18	1=.18
stealthChop	true	true	true	true
msteps		256	256	256	256
tstep		1048575	1048575	1048575	1048575
pwm
threshold		0	0	0	0
[mm/s]		-	-	-	-
OT prewarn	false	false	false	false
OT prewarn has
been triggered	false	false	false	false
off time		5	5	5	5
blank time	24	24	24	24
hysteresis
-end		2	2	2	2
-start		3	3	3	3
Stallguard thrs	0	0	0	0
DRVSTATUS	X	Y	Z	E0
stallguard
sg_result		0	0	0	0
fsactive
stst		X	X	X	X
olb
ola
s2gb
s2ga
otpw
ot
Driver registers:	X = 0x80:06:00:00
	Y = 0x80:06:00:00
	Z = 0x80:06:00:00
	E0 = 0x80:06:00:00

I wonder why 'Enable' stays false. Is that correct? I changed it:
// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
// :{ 0:'Low', 1:'High' }
#define X_ENABLE_ON 1
#define Y_ENABLE_ON 1
#define Z_ENABLE_ON 1
#define E_ENABLE_ON 1 // For all extruders

So now it says true:
SENDING:M122
		X	Y	Z	E0
Enabled		true	true	true	true
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		6/31	6/31	6/31	6/31
PWM scale		20	20	20	20
vsense		1=.18	1=.18	1=.18	1=.18
stealthChop	true	true	true	true
msteps		256	256	256	256
tstep		1048575	1048575	1048575	1048575
pwm
threshold		0	0	0	0
[mm/s]		-	-	-	-
OT prewarn	false	false	false	false
OT prewarn has
been triggered	false	false	false	false
off time		5	5	5	5
blank time	24	24	24	24
hysteresis
-end		2	2	2	2
-start		3	3	3	3
Stallguard thrs	0	0	0	0
DRVSTATUS	X	Y	Z	E0
stallguard
sg_result		0	0	0	0
fsactive
stst		X	X	X	X
olb
ola
s2gb
s2ga
otpw
ot
Driver registers:	X = 0x80:06:00:00
	Y = 0x80:06:00:00
	Z = 0x80:06:00:00
	E0 = 0x80:06:00:00

But still no movement.

Hugo
Re: Marlin 1.1.9, TMC2130 V1.1, no movement
December 08, 2018 11:39AM
microstepping is set to 256 should be 16... (I suspect this is default as you have asked for an illegal option, 1 microstep and Interpolate)

from configuration_adv,h

This is good.
#define INTERPOLATE true // Interpolate X/Y/Z_MICROSTEPS to 256

why is your microsteps set to 1? all these should be should be 16
#define X_MICROSTEPS 1 // 0..256
#define Y_MICROSTEPS 1
#define Z_MICROSTEPS 1
#define E0_MICROSTEPS 1
Re: Marlin 1.1.9, TMC2130 V1.1, no movement
December 08, 2018 12:30PM
I just thought the same thing, while eating my pasta. I changed it to 16, changed the steps / mm settings accordingly, and fitted the 3 jumpers under each driver. Nothing changed. But then I put the ENABLE_ON all back to 0, and we have movement! It all moves the wrong way so I need to invert some motor plugs, but it moves. Thanks!

Hugo
Re: Marlin 1.1.9, TMC2130 V1.1, no movement
December 08, 2018 12:39PM
Because of the speed limitations I would like X and Y to go to 8 microsteps as those motors are 0.9 degrees, but I'll figure that later... Now first switch the motor plugs and tune eveything so I can print a new spool holder that just snapped off...

Hugo
Re: Marlin 1.1.9, TMC2130 V1.1, no movement
December 09, 2018 06:36AM
Well, some progress was made but not everything is working.

- I cannot extrude. Everything is up and running, it seems, but the stepper motor of the extruder won't turn. I also see upon start-up that Marlin echoes to Pronterface: "Filament settings: Disabled". But I don't know where to enable them.

- Another problem is that the communication with the TMC2130s is not stable. I start the printer (and check with M122 that all enables are false) and run G28. This works sometimes, sometimes it doesn't. X and Y homing works, sometimes Z does as well. If Z homing fails, it is due to the Z and E enables coming back true, when M122. If it didn't fail here, then I ask G29 and during this operation it fails. M122 shows some enables have changed to true and everything stops. Resetting the printer works. I am now putting on a 1,5A step-down converter instead of the lonely LM7805 I soldered to the back of the Arduino Mega, hoping this will give a better / more stable 5V. Although the LM7805 should give 1,5A, too, and it is not really warm, I just hope this will fix something...

Hugo
Re: Marlin 1.1.9, TMC2130 V1.1, no movement
December 09, 2018 09:01AM
Nothing seems to fix the rather random problem.
- I lowered the currents (maybe it overheats...). No change, but I'll leave it low as the machine moves nicely.
- I changed from 16 to 8 microsteps (BTW, you don't need the jumpers. You can leave them off and define the microsteps in the configuration_adv.h. And off course correct the steps / mm in the configuration.h) I hoped it would make the processor less busy.
- I tried disabling stealth chop, more noise no solution. Turned it back on.
- I tried disabling TMC_DEBUG (M122) no solution, turned it back on.

I'm at a loss, now, the enabling is set to true fairly randomly, from not starting Z-probing on G28 to completely finishing G29. Somewhere in between it changes Z enabling to true which stops it. And E enabling is set to true (starts at false as it should be at startup) at any random move.

I am considering replacing Z and E with 4988s, just to be done with it. But I think this should work, somehow. I am not the first to use these things, right?

Cheers,

Hugo
Re: Marlin 1.1.9, TMC2130 V1.1, no movement
December 09, 2018 10:28AM
Well, that was a boring afternoon. The issue of the extruder is fixed, I fitted a different stepperdriver and now it works. I also think I know the enable issue is not an issue. Marlin keeps enable at false, until you call for the axis (or extruder) to move for the first time. Then enable becomes true and it all works.

The issue now comes down to the homing failing. I made a little gcode printfile and ran it from SD, as I feel the computer communication also burdens the MEGA's processor. The hotend heats up, Z moves, X and Y are homed, and then the Z should start homing but it doesn't. It comes back with "Homing failed" and I need to reset.

I also tried homing all axis individually, moving 10 mm away from each sensor before homing the next axle, but it keeps failing on the Z.

All thoughts are welcome, Iwill now change the topic title if I still can.

[EDIT] I'll start a new thread as this is a new issue that I think is not 2130 related.[/EDIT]

Hugo

Edited 2 time(s). Last edit at 12/09/2018 01:07PM by HugoW.
Re: Marlin 1.1.9, TMC2130 V1.1, no movement
January 30, 2019 08:38AM
[github.com]

For reinit tmc2130spi after psu return power to tmc you can Insert in top of startup g-code:

;poweron
M80
;M502 - factory reset to enable-steppers
M502
;M501 - Restore Settings to enable steppers
M501


or another way:

M80
M906 ... (from M501)
M569 ... (from M501 if exist)
M913 ... (from M501 if exist)
M914 ... (from M501 if exist)

it solved the problem in my case.

2DEV: For tmc2130spi requires modification code in restore_stepper_drivers. (called from power.cpp and M80_M81.cpp)

Edited 2 time(s). Last edit at 01/30/2019 08:40AM by Evg33.
Re: Marlin 1.1.9, TMC2130 V1.1, no movement
February 02, 2019 07:06AM
Hello, I have a similar problem (I am using just TMC2130 SPI in X and Y axis)
My M122 log is:

Y driver error detected:
 overtemperature
 short to ground (coil A)
 short to ground (coil cool smiley
 		X	Y
 Enabled		false	false
 Set current	800	800
 RMS current	795	795
 MAX current	1121	1121
 Run current	25/31	25/31
 Hold current	12/31	12/31
 CS actual		12/31	31/31
 PWM scale		5	255
 vsense		1=.18	1=.18
 stealthChop	true	true
 msteps		16	0
 tstep		1048575	4294967295
 pwm
 threshold		0	0
 [mm/s]		-	-
 OT prewarn	false	true
 OT prewarn has
 been triggered	false	false
 off time		5	15
 blank time	24	54
 hysteresis
 -end		2	12
 -start		3	8
 Stallguard thrs	0	0
 DRVSTATUS	X	Y
 stallguard			X
 sg_result		0	1023
 fsactive			X
 stst		X	X
 olb			X
 ola			X
 s2gb			X
 s2ga			X
 otpw			X
 ot			X
 Driver registers:	X = 0x80:0C:00:00
 	Y = 0xFF:FF:FF:FF

And my config_adv is:

  #define TMC_USE_SW_SPI

  #define TMC_SW_MOSI       51
  #define TMC_SW_MISO       50
  #define TMC_SW_SCK        52

I have tried the X axis alone and it gives no error and the motor moves. Then with Y axis and I get exactly the same error . Lastly the Z axis and the extruder alone and they work (even swapping betwen the two drivers that I have).
I have also changed the Y axis CS PIN to some of the free ones but I always get this error.

Any help would be appreciated
Re: Marlin 1.1.9, TMC2130 V1.1, no movement
February 02, 2019 07:48AM
The errors on Y are all due to SPI communication not working...

Driver registers: X = 0x80:0C:00:00
Y = 0xFF:FF:FF:FF

FF:FF:FF:FF means it is not talking correctly... so any errors displayed are just nonsense.

pop the Y driver into X and see if it works there. If it does you have a wiring issue on the SPI pins on Y, check all 4 of them
if it doesn't, dead stepper driver (bad soldering or just dead)

"I have also changed the Y axis CS PIN to some of the free ones but I always get this error."
what pins? you can't use d0 or d1 as that is really rx0/tx0

Edited 1 time(s). Last edit at 02/02/2019 07:53AM by Dust.
Re: Marlin 1.1.9, TMC2130 V1.1, no movement
February 03, 2019 03:02PM
I have tested all drivers on X axis and they work perfectly.

Further investigation has lead me to conclude that the problem is related with MISO pin. If I have all pins connected the board is still on, but once I connect this pin I get the error I mentioned, The same happens if I just connect MISO, I get the same error.

Obviously I have tried with another pins, instead of default D50, but I always get the same error.

Also I have tried it in 3 different boards and I have done the wiring twice, so that´s why I still think it is a Marlin related problem... but honestly I don´t know

Edited 1 time(s). Last edit at 02/03/2019 03:03PM by Canyonazo.
Re: Marlin 1.1.9, TMC2130 V1.1, no movement
February 03, 2019 06:12PM
Why are you changing the MISO pin ? if its works on X it should work on all of them.

all tmc2130 drivers are connected to the same MOSI, MISO and SCK lines in parallel.
The only thing that is different is each driver chip also has is own cs line

On a ramps the defaults are as follows.
#define X_CS_PIN 53
#define Y_CS_PIN 49
#define Z_CS_PIN 40
#define E0_CS_PIN 42

These you can move around without issues.
Sorry, only registered users may post in this forum.

Click here to login