Good morning @droftarts,
@droftarts said in Issues with Intermittent Stopping of the Z-Axis Motor:
Does the motor stop before any of the motors have hit an endstop? If so, I'd guess the problem was a poor/loose connection in the endstop wiring. Check the wiring to all the endstops. I don't think a pullup helps here, because they are wired NC.
Exactly, my motor stops before reaching the endstop. Before writing this, I checked all my Z-axis connections and replaced all the relevant cables. To give you an idea of how it's connected, my endstop is connected to a custom-designed PCB; from this board, via a flat cable, it goes to another PCB, and from there, two of the motors (Z1 and Z2) connect to another PCB through a different flat cable. From here, the system connects to the Duet3hc, while Z3, due to its location, goes directly to this last PCB.
Today, I am running tests after modifying the Z homing routine, which I changed this way following your recommendation.
; homez.g
; Homing for the Y-axis
G91 ; Set to relative positioning
G1 H1 Z{move.axes[2].max} F3000 ; Move
G1 H2 Z-5 F6000 ; Move
G1 H1 Z{move.axes[2].max/2} F360 ; Move
G90 ; Set to absolute positioning
M400 ; Wait for current moves to finish
I'm running this testing macro while writing this message, and the Z3 motor failed on loop 53 out of 100. I re-ran the macro, and this time Z2 failed on loop 71 out of 100. In each case, it always fails during homing, never with regular movement commands. Yesterday, I ran this same cycle, moving the Z axis up and down 1000 times without homing, just moving it from position Z0 to Z{move.axes[2].max-1}, and there were no failures, so I can rule out a mechanical cause. As for the error itself, it happened while I was present, and I could see that the motor that stops does not even attempt to move, while the other two, which are always positioned lower, keep trying to move. This is logical since none of them have reached their endstop.
if state.status = "processing" || state.status = "paused"
M118 S{"Cannot use during "^state.status}
M99
var cycle = 0
var count = 0
M291 R"Number of Cycles" P"Enter the number of cycles you want to perform" S5 L1 F10
set var.cycle = input
M400
while var.count <= var.cycle
M118 S{var.count^" of "^var.cycle}
G28 Z
G0 Z{move.axes[2].max-20} F{move.axes[2].speed}
set var.count = var.count+1
On another note, if I wanted to test enabling the internal Pull Up, would it be safe to configure it like this in my case?
M574 Z2 S1 P"^1.io2.in+^1.io1.in+^1.io0.in" ; Endstop configuration
Best regards,
Aitor