Various wiring issues with the X- and Y-axis (SKR Pro V1.2, TMC2209, Dual Endstops)!

Hi,

I’m currently in the process of wiring my mpcnc and I came a cross a couple of issues that I don’t really know where they stem from.

Current Hardware:

  • SKR Pro V1.2 with TFT35 V3.0
  • 5x TMC2209
  • Bench top power supply set to 12V 5A (temporary)
  • 22 AWG cable for wiring the stepper motors

Current Firmware:

  • V1CNC_SkrPro_Dual_2209-2.0.7.2-src.zip (pre-configured)

What I’ve Done so far:

  • disabled the sensorless pins
  • set the drivers to UART
  • connected the motors individually to the drivers on the SKR Pro for dual endstop support:
    • motor X0 to X
    • motor X1 to E0
    • motor Y0 to Y
    • motor Y1 to E1
    • motor Z to Z
  • connected both motor and board power inputs to the power supply
  • hooked up the touchscreen display
  • flashed both the SKR Pro and display with preconfigured firmware

What I have NOT done yet:

  • connect the end stops anywhere

What works so far:

  • the SKR PRO and touch screen seem to be flashed right
  • the z-axis moves up and down fine

Issues:

X-Axis

Generally works fine when moving in one direction, however every time I suddenly step in the opposite direction the X1-motor seems to lag a little behind X0, before it engages (turns on).

UPDATE: Seems like I was mistaken here! The X-motor doesn’t really do anything, however I had briefly connected it to the Z-port on the SKR Pro and then it moved. I’ve also tested its driver with another motor and that seems to work too. Driver, cable, and motor are thus fine. I’m cluesless!

Y-Axis

At first I thought the that the Y0-motor was moving in the opposite direction of the Y1-motor, however when touched the pulley on its shaft while prompting the motor to move, it rather seemed to spin through. Note that this is not the case, if I power everything down. The pulley is firmly attached with Loctite. The motor also rattles loudly while doing this.

UPDATE: The motor seems to turn about a turn in one direction and then abruptly turns a little in the other direction, which makes it seem like it spins through. My guess is that there’s something wrong with it, but I don’t know how to test it further.
I’ve already excluded that there’s something wrong with its cable or driver. Bother have been tested with other motors and they work fine.

“No Printer Attached” and “All Down” Warnings

The TFT often displays these warning (when starting up), however the machine still seems to be able to move.

What I’ve debugged so far

  • controlled all cables that I did the connections of with a multimeter
  • checked the stepper motors by attaching an LED to see if it lights up if the shaft gets turned
  • checked the voltage that the SKR Pro puts out for the motors, and here Y and E0 don’t seem to output any current, whereas all the others seem to provide a small voltage when prompted to?
  • switched out the drivers of Y and E0 but nothing really changed

Unfortunately, I hadn’t tested the hardware before assembling the mpcnc, which probably would have been easier.

The endstops shouldn’t affect you until you send a home command.

Getting the response from M122 may help. The all low warning is telling you it can’t talk to one of the drivers. It might be hard to do in the screen, so you will need to connect a computer.

When I do this, it outputs this over and over:

Rcv: X:25/22-|I|  Y:25/22/-|I|  Y2:25/22/-|I|  Z:25/22/-|I|
Rcv: X:25/22-|I|  Y:25/22/-|I|  Y2:25/22/-|I|  Z:25/22/-|I|
Rcv: X:25/22-|I|  Y:25/22/-|I|  Y2:25/22/-|I|  Z:25/22/-|I|
Rcv: X:25/22-|I|  Y:25/22/-|I|  Y2:25/22/-|I|  Z:25/22/-|I|
Rcv: X:25/22-|I|  Y:25/22/-|I|  Y2:25/22/-|I|  Z:25/22/-|I|
Rcv: X:25/22-|I|  Y:25/22/-|I|  Y2:25/22/-|I|  Z:25/22/-|I|
...

Whoa. I haven’t seen that before. What version do you have from M115?

This is the doc for M122, with some example output:

I could totally be wrong but I believe you have the wrong firmware…I think you need the one for SKRPro

https://github.com/V1EngineeringInc/MarlinBuilder/releases/download/510/V1CNC_SkrPro_Dual_2209-2.0.7.2-src.zip

As above, the firmware you are using is for the SKR V1.3 and not the SKR Pro V1.2.

This returns:

Send: M115
TION_MODES:1
Rcv:  Cap:ARCS:1
Rcv:  Cap:BABYSTEPPING:0
Rcv:  Cap:CHAMBER_TEMPERATURE:0
Rcv:  ok
Send:  M503 S0
Rcv:     G21 ; Units in mm (mm)
Rcv:     M149 C  ; Units in Celsius
Rcv: 
Rcv:  M92 X100.00 Y100.00 Z400.00 E100.00

@Smartalec_87 & @gforce2010: I’ll try to reflash it and see what that does, but maybe I have put the wrong filename above, since I remember following the link from the mpcnc documentation about the SKR Pro V1.2.

Reflashing with V1CNC_SkrPro_Dual_2209-2.0.7.2-src.zip didn’t change anything. I guess I already had that one.

I’ve updated my above post with some other findings! I did some further debugging.

There should be a line that starts with “FIRMWARE NAME”. Are you doing this from the screen? You may not be getting the full picture.

Yes, the mpcnc currently sits in the basement, whereas my desktop computer is on the first floor. It’s a pretty large house. I’ve taken your previous comment about connecting it to a computer to heart, however that’s currently difficult to do. I either have to unmount the motors, undo the current cable management, and reconnect everything near my computer or reassemble my “cyberdeck” (raspberry pi + touchscreen) and try with that. I’m also not sure, if it even will connect to my desktop, which is a mac. I did a quick web search yesterday, and it seems to be problematic.

If you’re looking to know which firmware I’m using, it’s definately V1CNC_SkrPro_Dual_2209-2.0.7.2-src.zip. I’ve reflashed the SKR Pro yesterday, but nothing much changed.

I’ve also done some more debugging.

Concerning the problem with the weirdly spinning X1-motor, I can pretty much rule out that it has something to do with the SKR Pro, driver, or cable. It shows the same behaviour when connected to another motor port on the SKR Pro with a different cable and driver.
Either there’s something wrong with the motor, or it somehow gets a messed up signal, which I don’t know how to debug further.

The Y0-motor, its connecting cable, and driver all seem fine and working when connected to another motor port on the SKR Pro, however nothing much happens when it’s hooked up to the Y-port of the board. It’s either the board or firmware, in my opinion, but I’m out of ideas how to debug this further.

Thanks for your support so far. It’s greatly appreciated!

As expected, I couldn’t get Repetier Host on macOS to connect to the SKR Pro. I tried different baud rates and even installed the CH340/341 divers, but to no avail.

Well, I would expect only people with problems post about it.

I use Linux and it generally works fine. I don’t know how much from windows or from linux is transferrable.

In windows, a common problem is that people install repetier server at the same time, which grabs the serial port.

In Linux a common problem is permissions. I need to be in the dialout group to talk over serial ports. It shows up as something like /dev/ttyACM0 or /dev/ttyUSB0. I think the mac ports are more obscure.

On all systems, the board needs to power the chil. There is a jumper to make it powered by usb (make sure you out it back) or you need to power it by 12V while trying to connect.

The reason that step is important to me is because it confirms there weren’t any problems while flashing it. If it says v510D, then I know the firmware made it all the way to the end.

Another option if you have a pi and a spare sd card is to install octopi on it. Then connect from your phone, tablet, or desktop while it is connected to the motors and use the terminal tab there to do your debugging.

I agree that points away from the firmware.

The motors are really dumb. There really isn’t anything that can go wrong with them. Wiring is much more likely, and seeing the actual output from M122 might tell us if the driver gets into a funny state.

Have you checked the grub screws?

1 Like

I did this and it worked right away! Thanks for the tip.

Here is the full report for the M115 command:

Send: M115
Recv: FIRMWARE_NAME:Marlin 510D 2.0.7.2 (Mar  4 2021 04:38:08) SOURCE_CODE_URL:https://github.com/MarlinFirmware/Marlin PROTOCOL_VERSION:1.0 MACHINE_TYPE:V1CNC 510D EXTRUDER_COUNT:0 UUID:cede2a2f-41a2-4748-9b12-c55c62f367ff
Recv: Cap:SERIAL_XON_XOFF:0
Recv: Cap:BINARY_FILE_TRANSFER:0
Recv: Cap:EEPROM:1
Recv: Cap:VOLUMETRIC:0
Recv: Cap:AUTOREPORT_TEMP:0
Recv: Cap:PROGRESS:0
Recv: Cap:PRINT_JOB:1
Recv: Cap:AUTOLEVEL:0
Recv: Cap:RUNOUT:0
Recv: Cap:Z_PROBE:0
Recv: Cap:LEVELING_DATA:0
Recv: Cap:BUILD_PERCENT:0
Recv: Cap:SOFTWARE_POWER:0
Recv: Cap:TOGGLE_LIGHTS:0
Recv: Cap:CASE_LIGHT_BRIGHTNESS:0
Recv: Cap:EMERGENCY_PARSER:0
Recv: Cap:PROMPT_SUPPORT:0
Recv: Cap:SDCARD:1
Recv: Cap:AUTOREPORT_SD_STATUS:0
Recv: Cap:LONG_FILENAME:0
Recv: Cap:THERMAL_PROTECTION:1
Recv: Cap:MOTION_MODES:1
Recv: Cap:ARCS:1
Recv: Cap:BABYSTEPPING:0
Recv: Cap:CHAMBER_TEMPERATURE:0
Recv: ok

And this is the output of M122:

Send: M122
Recv: axis:pwm_scale/curr_scale/mech_load|flags|warncount
Recv: 		X	X2	Y	Y2	Z
Recv: Address		0	0	0	0	0
Recv: Enabled		true	false	true	true	false
Recv: Set current	900	900	900	900	900
Recv: RMS current	887	1602	887	887	887
Recv: MAX current	1251	2259	1251	1251	1251
Recv: Run current	28/31	28/31	28/31	28/31	28/31
Recv: Hold current	22/31	22/31	22/31	22/31	22/31
Recv: CS actual	22/31	0/31	22/31	22/31	22/31
Recv: PWM scale
Recv: vsense		1=.18	0=.325	1=.18	1=.18	1=.18
Recv: stealthChop	false	false	false	false	false
Recv: msteps		16	256	16	16	16
Recv: tstep		max	0	max	max	max
Recv: PWM thresh.
Recv: [mm/s]
Recv: OT prewarn	false	false	false	false	false
Recv: triggered
Recv:  OTP		false	false	false	false	false
Recv: pwm scale sum	25	0	25	25	25
Recv: pwm scale auto	0	0	0	0	0
Recv: pwm offset auto	36	0	36	36	36
Recv: pwm grad auto	14	0	14	14	14
Recv: off time	3	0	3	3	3
Recv: blank time	24	16	24	24	24
Recv: hysteresis
Recv:  -end		-1	-3	-1	-1	-1
Recv:  -start		1	1	1	1	1
Recv: Stallguard thrs	0	0	0	0	0
Recv: uStep count	56	0	56	56	56
Recv: DRVSTATUS	X	X2	Y	Y2	Z
Recv: sg_result	2	0	2	2	0
Recv: stst			*
Recv: olb				*		*
Recv: ola				*		*
Recv: s2gb
Recv: s2ga
Recv: otpw
Recv: ot
Recv: 157C
Recv: 150C
Recv: 143C
Recv: 120C
Recv: s2vsa
Recv: s2vsb
Recv: Driver registers:
Recv: 		X	0x80:16:00:00
Recv: 		X2	0x00:00:00:00	 Bad response!
Recv: 		Y	0x80:16:00:C0
Recv: 		Y2	0x80:16:00:00
Recv: 		Z	0x80:16:00:C0
Recv: 
Recv: 
Recv: Testing X connection... OK
Recv: Testing X2 connection... Error: All LOW
Recv: Testing Y connection... OK
Recv: Testing Y2 connection... OK
Recv: Testing Z connection... OK
Recv: ok

Do you have any idea what might be going wrong with the X1-motor (here X2)?
As mentioned before, I’m fairly certain that it isn’t the motor, nor the cable, or driver.

As for the Y0-motor, I’ve tested with an ESP32 and some code that should have made it spin unidirectionally, however it didn’t manage. It rotated erradically back and forth, while vibration a ton. This is what caused the loud rattling noise, when it was still mounted on the mpcnc. The grub screws of the pulley were firmly fixed with Loctite! I’ll have to get a new one.

That definitely sounds like a wiring issue. Check the connectors for bad crimps at the board, and if there’s an extension, at those connectors, too.

Your X2 driver sounds like a fail.

The 510D firmware is correct, so that’s not the problem.

Could be, but then it has to be the cable that goes into the motor, and that’s above my pay grade. I tried to open the motor, but the screws seem to be made out of Chinesium, because they are so frail and fickle that they instantly strip, and no, I didn’t use a powered drill.

I’ve switched it out with two other drivers that were confirmed to work for other motors and nothing really changed. The cable and motor have also been tested and work fine!

Confirmed. Good flash.

It isn’t talking to that driver. There may be a jumper wrong, or a bad driver or maybe a bad solder. None of that is correct for X2 because it is just seeing ground on that pin instead of data.

I can’t quite tell which motors these line up with. If it is Z, then you have to enable the driver first (by moving it). But if it still says ola/olb, then it thinks there is a break in the wire.

It may be Y1 and Z (and Z may just be because it isn’t enabled).

I’ve again switched out the drivers of X2 and X, and later X and Z, and the error with X2 persists, which definitely rules out the driver as a culprit.
I’ve also replaced the UART jumper, just to make sure, and checked whether there were any jumpers installed under the driver. There were none.
It must be the board, which is a huge bummer since it’s expensive and hard to come by here in Europe.

I had previously disconnected the defective Y-motor (Y0), which might have caused confusion here. What do you mean by “enabling the driver”?

I’ve reconnected it and re-run M122. Now it only marks olb for Y with an *. ola is all white space, no marks here. However, stst has an * for X2.
What do these abbreviations stand for? What does it mean?

Here’s the entire report again:

Send: M122
Recv: axis:pwm_scale/curr_scale/mech_load|flags|warncount
Recv: 	                        X	X2	Y	Y2	Z
Recv: Address		0	0	0	0	0
Recv: Enabled		true	false	true	true	true
Recv: Set current	900	900	900	900	900
Recv: RMS current	887	1602	887	887	887
Recv: MAX current	1251	2259	1251	1251	1251
Recv: Run current	28/31	28/31	28/31	28/31	28/31
Recv: Hold current	22/31	22/31	22/31	22/31	22/31
Recv: CS actual	22/31	0/31	22/31	22/31	22/31
Recv: PWM scale
Recv: vsense		1=.18	0=.325	1=.18	1=.18	1=.18
Recv: stealthChop	false	false	false	false	false
Recv: msteps		16	256	16	16	16
Recv: tstep		max	0	max	max	max
Recv: PWM thresh.
Recv: [mm/s]
Recv: OT prewarn	false	false	false	false	false
Recv: triggered
Recv:  OTP		false	false	false	false	false
Recv: pwm scale sum	25	0	25	25	25
Recv: pwm scale auto	0	0	0	0	0
Recv: pwm offset auto	36	0	36	36	36
Recv: pwm grad auto	14	0	14	14	14
Recv: off time	3	0	3	3	3
Recv: blank time	24	16	24	24	24
Recv: hysteresis
Recv:  -end		-1	-3	-1	-1	-1
Recv:  -start		1	1	1	1	1
Recv: Stallguard thrs	0	0	0	0	0
Recv: uStep count	56	0	56	56	56
Recv: DRVSTATUS	X	X2	Y	Y2	Z
Recv: sg_result	2	0	2	2	2
Recv: stst			* <-- X2
Recv: olb				* <-- Y
Recv: ola
Recv: s2gb
Recv: s2ga
Recv: otpw
Recv: ot
Recv: 157C
Recv: 150C
Recv: 143C
Recv: 120C
Recv: s2vsa
Recv: s2vsb
Recv: Driver registers:
Recv: 		X	0x80:16:00:00
Recv: 		X2	0x00:00:00:00	 Bad response!
Recv: 		Y	0x80:16:00:80
Recv: 		Y2	0x80:16:00:00
Recv: 		Z	0x80:16:00:00
Recv: 
Recv: 
Recv: Testing X connection... OK
Recv: Testing X2 connection... Error: All LOW
Recv: Testing Y connection... OK
Recv: Testing Y2 connection... OK
Recv: Testing Z connection... OK
Recv: ok

Again, I can confidently say that there is not break in the extension cable, that the driver works fine, as well as the motor, when connected to another motor port.
The break must be somewhere on the SKR Pro. :frowning:

Y2 (Y1) is fine and Z, too. The Y-motor is definitely broken somehow, and the problem with the X2-motor doing nothing, seems to be maybe board-related…

Ok, that shows expected results for Z at least.

So the problem remains with that socket if you swap the driver, ot the motor?

I’d get a magnifying glass and check the solder points for the socket. I might even use a heat gun to reflow the solder a little, just to be sure. Those errors are reasonably rare, but could be.

Yes.

What am I looking for except missing solder or gaps?

I don’t think my heat gun can go that high.

That’s all you’re looking for. These are hand built (I think) and we have seen one case of one pin just not getting any solder. You can also look for burnt up parts or traces (the internal wiring in the pcb) being broken for some reason.

It looks like it has a wiring problem. Those ola/olb dont false alarm in my experience, as long as the motor is engaged and reporting valid data.

Enabled or engaged. When you turn on the machine, the drivers are disabled. You can freely spin them. When you jog the machine, the motors engage and move. They stay engaged for like 20mins of idle, or until you cut power. If you haven’t sent a movement, then they aren’t enabled and the driver doesn’t know if there is an open loop or not.

1 Like