Z motor skipping steps

  • When running bed probing, one of the Z motors (typically the right) will just skip one of the movements, while the other will keep going, causing the whole X axis to crash into the glass plate on the bottom. It happens randomly, and I have already tried swapping the wires, buying new motors, and buying new wires, yet this keeps happening.I cannot understand why. no errors are shown in the log. sometimes it will fail halfway through, sometimes it will work, and sometimes, it fails on the first move. could this be a defective board?

  • Moderator

    Post your config.g. Are you using Z motors on different drivers, or both connected to Z? If different drivers, could be M584 is after motor settings.


  • They are both on the default Z Controller.

    ; Configuration file for Duet Maestro (firmware version 3)
    ; executed by the firmware on start-up
    ; generated by RepRapFirmware Configuration Tool v2.1.4 on Sun Dec 15 2019 20:30:18 GMT-0500 (Eastern Standard Time)
    ; General preferences
    G90                                                ; send absolute coordinates...
    M83                                                ; ...but relative extruder moves
    M550 P"Aiden's 3D Printer"                         ; set printer name
    ; Network
    M551 P"[REDACTED]"                                  ; set password
    M552 P0.0.0.0 S1                                   ; enable network and acquire dynamic address via DHCP
    M586 P0 S1                                         ; enable HTTP
    M586 P1 S0                                         ; disable FTP
    M586 P2 S0                                         ; disable Telnet
    ; Drives
    M569 P0 S0                                         ; physical drive 0 goes backwards
    M569 P1 S0                                         ; physical drive 1 goes backwards
    M569 P2 S0                                         ; physical drive 2 goes backwards
    M569 P3 S1                                         ; physical drive 3 goes forwards
    M584 X0 Y1 Z2 E3                                   ; set drive mapping
    M350 X16 Y16 Z16 E16 I1                            ; configure microstepping with interpolation
    M92 X80.00 Y80.00 Z400.00 E94.00                   ; set steps per mm
    M566 X480.00 Y480.00 Z24.00 E300.00                ; set maximum instantaneous speed changes (mm/min)
    M203 X18000.00 Y18000.00 Z300.00 E1500.00          ; set maximum speeds (mm/min)
    M201 X1500.00 Y1500.00 Z100.00 E10000.00           ; set accelerations (mm/s^2)
    M906 X1020 Y1020 Z1020 E1020                       ; set motor currents (mA)
    M84 S0                                             ; Disable motor idle current reduction
    ; Axis Limits
    M208 X0 Y0 Z0 S1                                   ; set axis minima
    M208 X200 Y200 Z180 S0                             ; set axis maxima
    ; Endstops
    M574 X1 S0 P"!xstop"                               ; configure active-low endstop for low end on X via pin !xstop
    M574 Y1 S0 P"!ystop"                               ; configure active-low endstop for low end on Y via pin !ystop
    M574 Z1 S2                                         ; configure Z-probe endstop for low end on Z
    ; Z-Probe
    M950 S0 C"^zprobe.mod"                                  ; create servo pin 0 for BLTouch
    M558 P9 C"zprobe.in" H5 F120 T6000      ; set Z probe type to bltouch and the dive height + speeds
    G31 P500 X-36 Y-42 Z0.46                           ; set Z probe trigger value, offset and trigger height
    M557 X36:200 Y42:200 S20                           ; define mesh grid
    ; Heaters
    M308 S0 P"bedtemp" Y"thermistor" T100000 B3988     ; configure sensor 0 as thermistor on pin bedtemp
    M950 H0 C"bedheat" T0                              ; create bed heater output on bedheat and map it to sensor 0
    M143 H0 S120                                       ; set temperature limit for heater 0 to 120C
    M307 H0 B0 S1.00                                   ; disable bang-bang mode for the nozzle heater and set PWM limit
    M308 S1 P"e0temp" Y"thermistor" T100000 B3988      ; configure sensor 1 as thermistor on pin e0temp
    M950 H1 C"e0heat" T1                               ; create nozzle heater output on e0heat and map it to sensor 1
    M143 H1 S280                                       ; set temperature limit for heater 1 to 280C
    M307 H1 B0 S1.00                                   ; disable bang-bang mode for the nozzle heater and set PWM limit
    ; Fans
    M950 F0 C"fan0" Q500                               ; create fan 0 on pin fan0 and set its frequency
    M106 P0 S0 H-1                                     ; set fan 0 value. Thermostatic control is turned off
    M950 F1 C"fan1" Q500                               ; create fan 1 on pin fan1 and set its frequency
    M106 P1 S1 H1 T45                                  ; set fan 1 value. Thermostatic control is turned on
    ; Tools
    M563 P0 S"Extruder" D0 H1 F0                       ; define tool 0
    G10 P0 X0 Y0 Z0                                    ; set tool 0 axis offsets
    G10 P0 R0 S0                                       ; set initial tool 0 active and standby temperatures to 0C
    ; Custom settings are not defined
    ; Miscellaneous
    M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss
    T0                                                 ; select first tool
    M950 S0 C"^zprobe.mod"

  • does the mechanic on the right side runing smooth? have you tried to set the motor currents for the z axis to 80% from the motors maximum current?

  • on the previous motors, yes. the current motors are set to 1020mA as that is the safe limit. the motors are rated at 1.5A each, so at 80% it would be 2.4A, being over the duet's limit of 1.6A this only affects one motor though.
    Also, by skipping, I mean it makes no noise, and does not even try to move, while the other motor will move. which is odd, as they are wired in parallel.

  • @CaptainSnowball said in Z motor skipping steps:

    which is odd, as they are wired in parallel.

    Why not serial? In serial configuration the current through the motor is guaranteed to be identical.

  • sorry, I meant Series. My bad.
    they are both on the Z controller that the Maestro has.

  • @CaptainSnowball said in Z motor skipping steps:

    M584 X0 Y1 Z2 E3 ; set drive mapping

    M584 X0 Y1 Z2:4 E3 ; set drive mapping

    and connect the second motor to E1 (dont forget to add the jumpers to the second z connector)

  • Moderator

    @CaptainSnowball As both motors are connected to the Z driver pins, I'd guess this was a motor-side problem. Your Z axis motor settings look sensible, shouldn't be causing skipping, though does this happen at all speeds, or the fastest speed the axis will allow? Because the Z motors are wired in series, any break or poor connection on one motor would cause the same effect on the other side. Wiring is series keeps the current the same, but halves the voltage, though the stepper driver should take account of this and increase the voltage (if possible). As you have 1.5A rated steppers, you can set the current to 1200mA.

    Most likely something is stalling the motor; either the axis is jamming (which is the most likely) or there's a problem internally with the motor, for example metal swarf in motor - test by disconnecting both Z motors, and turning the motor shaft with your fingers, feeling for any point that feels tight or the motor feels rough, compared to the other motor.

    Are the motors the same (brand/type)? Unmatched motors could have different resistance, and one motor need more current. Even motors that are the same manufacturer and part number can vary. Are you using 12V or 24V PSU? If 12V, it's possible (depending on the specification of your motors) that it's not enough to voltage is going through both motors, in which case wiring each motor to a separate driver, as @Veti suggests, but this does mean you need to have a way of levelling your X gantry, ideally with a probe. See https://duet3d.dozuki.com/Wiki/Bed_levelling_using_multiple_independent_Z_motors


Log in to reply