Odd behavior of Stepper motors on Duet 3.



  • Duet 3 v3.1.1 w/ SBC, all up to date.

    I am building a fairly complex tool-changing large format 3D printer and I have just gotten around to doing my first full power up and initial calibration and I have noticed that my Z motors were not moving at all. I checked wiring, no shorts, no crazy resistance values. I have tried swapping to different drivers and still no movement. all I get is a small pulse at the start then small clicks (like a full step) every 1-1.5 seconds. I have changed the current settings from 1000mA all they way to 3800mA (motors are rated to 4.2A) and nothing changes. I can run M122 diagnostics and I receive that the drivers are still in standstill mode. I thought maybe I had a bad board so I swapped it out with another new Duet 3 and Same issue. Then i thought maybe motor was bad, so I pulled some known good motors out of another printer and again same thing happened. Perhaps I have an issue in my config??? hopefully you guys can see something that I am just missing.



  • === Diagnostics ===
    RepRapFirmware for Duet 3 MB6HC version 3.1.1 running on Duet 3 MB6HC v1.01 or later (SBC mode)
    Board ID: 08DJM-956L2-G43S8-6J9F6-3S46P-KU2LD
    Used output buffers: 1 of 40 (16 max)
    === RTOS ===
    Static ram: 154604
    Dynamic ram: 164116 of which 20 recycled
    Exception stack ram used: 320
    Never used ram: 74156
    Tasks: NETWORK(ready,1968) HEAT(blocked,1112) CanReceiv(suspended,3436) CanSender(suspended,1488) CanClock(blocked,1436) TMC(blocked,192) MAIN(running,4544) IDLE(ready,76)
    Owned mutexes:
    === Platform ===
    Last reset 00:25:21 ago, cause: software
    Last software reset at 2020-07-25 23:33, reason: User, spinning module LinuxInterface, available RAM 74144 bytes (slot 1)
    Software reset code 0x0010 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0444a000 BFAR 0x00000000 SP 0xffffffff Task MAIN
    Error status: 0
    MCU temperature: min 33.2, current 33.5, max 33.7
    Supply voltage: min 23.9, current 24.0, max 24.0, under voltage events: 0, over voltage events: 0, power good: yes
    12V rail voltage: min 12.1, current 12.2, max 12.2, under voltage events: 0
    Driver 0: standstill, reads 61196, writes 2 timeouts 0, SG min/max 0/50
    Driver 1: standstill, reads 61198, writes 0 timeouts 0, SG min/max not available
    Driver 2: standstill, reads 61198, writes 0 timeouts 0, SG min/max not available
    Driver 3: standstill, reads 61198, writes 0 timeouts 0, SG min/max not available
    Driver 4: standstill, reads 61198, writes 0 timeouts 0, SG min/max not available
    Driver 5: standstill, reads 61196, writes 2 timeouts 0, SG min/max 0/71
    Date/time: 2020-07-25 23:58:20
    Slowest loop: 5.83ms; fastest: 0.15ms
    === Storage ===
    Free file entries: 10
    SD card 0 not detected, interface speed: 37.5MBytes/sec
    SD card longest read time 0.0ms, write time 0.0ms, max retries 0
    === Move ===
    Hiccups: 0(0), FreeDm: 375, MinFreeDm: 374, MaxWait: 0ms
    Bed compensation in use: none, comp offset 0.000
    === MainDDARing ===
    Scheduled moves: 2, completed moves: 2, StepErrors: 0, LaErrors: 0, Underruns: 0, 0 CDDA state: -1
    === AuxDDARing ===
    Scheduled moves: 0, completed moves: 0, StepErrors: 0, LaErrors: 0, Underruns: 0, 0 CDDA state: -1
    === Heat ===
    Bed heaters = 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamberHeaters = 1 -1 -1 -1
    === GCodes ===
    Segments left: 0
    Movement lock held by null
    HTTP* is ready with "M122 D0 S0 F0" in state(s) 0
    Telnet is idle in state(s) 0
    File is idle in state(s) 0
    USB is idle in state(s) 0
    Aux is idle in state(s) 0
    Trigger* is idle in state(s) 0
    Queue is idle in state(s) 0
    LCD is idle in state(s) 0
    SBC is idle in state(s) 0
    Daemon* is idle in state(s) 0
    Aux2 is idle in state(s) 0
    Autopause is idle in state(s) 0
    Code queue is empty.
    === Network ===
    Slowest loop: 0.89ms; fastest: 0.01ms
    Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions Telnet(0), 0 sessions
    HTTP sessions: 0 of 8

    • Ethernet -
      State: disabled
      Error counts: 0 0 0 0 0
      Socket states: 0 0 0 0 0 0 0 0
      === CAN ===
      Messages sent 1826, longest wait 0ms for type 0
      === Linux interface ===
      State: 0, failed transfers: 0
      Last transfer: 17ms ago
      RX/TX seq numbers: 49358/49360
      SPI underruns 0, overruns 0
      Number of disconnects: 0
      Buffer RX/TX: 0/0-0
      === Duet Control Server ===
      Duet Control Server v3.1.1
      Code buffer space: 4096
      Configured SPI speed: 8000000 Hz
      Full transfers per second: 32.65


  • ; General Prefences
    G90 ; send absolute coordinates...
    M83 ; ...but relative extruder moves
    M550 P"Duet 3" ; set printer name

    ; Drives
    M569 P10.0 S1 R0 T2.5:2.5:50:50 ; Physical drive 10.0 goes forward (X)
    M569 P11.0 S1 R0 T2.5:2.5:50:50 ; Physical drive 11.0 goes forward (Y)
    M569 P0.4 S1 ; Physical drive 0.4 goes forward (Z1)
    M569 P0.5 S1 ; Physical drive 0.5 goes forward (Z2)
    M569 P0.1 S1 ; Physical drive 0.1 goes forward (F0)
    M569 P0.2 S1 ; Physical drive 0.2 goes forward (F1)
    M569 P0.3 S1 ; Physical drive 0.3 goes forward (F2)
    M569 P20.0 S1 ; Physical drive 20.0 goes forward (E0)
    M569 P21.0 S1 ; Physical drive 21.0 goes forward (E1)
    M569 P22.0 S1 ; Physical drive 22.0 goes forward (E2)
    M569 P0.0 S1 ; Physical drive 0.0 goes forward (C)
    M584 X10.0 Y11.0 Z0.0:0.5 C0.1 E20.0:21.0:22.0:0.4:0.2:0.3 ; Set Drive Mapping
    M350 Z8 C8 I0 ; Configure Microstepping w/o Interpolation
    M350 E16:16:16:16:16:16 I1 ; Configure Microstepping w/ Interpolation
    M92 X80.00 Y80.00 Z1600.00:1600.00 C100.00 E208.70:208.70:208.70:111.69:111.69:111.69 ; Set Steps per mm
    M566 X600.00 Y600.00 Z12.00:12.00 C120.00 E120.00:120.00:120.00:120.00:120.00:120.00 ; Set maximum instantaneous speed changes (jerk) (mm/min)
    M203 X6000.00 Y6000.00 Z300.00:300.00 C3000.00 E2500.00:2500.00:2500.00:2500.00:2500.00:2500.00 ; Set Maximum Speeds (mm/min)
    M201 X500.00 Y500.00 Z20.00:20.00 C400.00 E2500.00:2500.00:2500.00:2500.00:2500.00:2500.00 ; Set Maximum Accelerations (mm/s^2)
    M906 Z1800 C400 E1100:1100:1100:1250:1250:1250 I100 ; Set Motor Currents (mA) and Motor Idle Factor (%)
    ;M84 S30 ; Set Idle Timeout

    ; Stall Detection
    M915 C S1 F0 H200 R4700 ; Set Stall detection settings for Coupler

    ; Axis Limits
    M208 X0 Y0 Z0 C0 S1 ; Set Axis Minima
    M208 X1550 Y1350 Z995 C500 S0 ; Set Axis Maxima

    ; Endstops
    M574 X1 S1 P"io1.in" ; Configure Active-high endstop for low end on X-axis via Pin io1.in
    M574 Y1 S1 P"io2.in" ; Configure Active-high endstop for low end on Y-axis via Pin io2.in

    ; Z-Probe
    M558 P5 C"io3.in" H5 F120 T7500 ; Set Z-probe type to switch and set dive-height and speeds
    G31 P500 X0 Y0 Z2.5 ; Set Z-probe trigger value, offset, and trigger height
    M557 X25:1525 Y50:1325 S125 ; Define Mesh-Grid size

    ; Heaters
    M308 S0 P"temp0" Y"thermistor" T200000 B3241 ; Configure sensor 0 as thermistor on pin temp0
    M950 H0 C"out0" T0 ; Create bed heater output on out0 and map it to sensor 0
    M307 H0 B1 S1.00 ; Enable Bang-Bang mode for the bed heater and set the PWM limit
    M140 H0 ; Map Heated bed to heater 0
    M143 H0 P0 S150 T0 ; Set temperature limit for heater 0 to 150C
    M308 S1 P"temp1" Y"thermistor" T100000 B4725 C7.06e-8 ; Configure sensor 1 as thermistor on pin temp1
    M950 H1 C"out1" T1 ; create chamber heater output on out 1 and map it to sensor 1
    M307 H1 B1 S1.00 ; Enable Bang-Bang mode for the chamber heater and set the PWM limit
    M141 H1 ; Map Chamber heater to heater 1
    M143 H1 P0 S80 T1 ; Set temperature limit for heater 1 to 80C
    M308 S2 P"20.temp0" Y"thermistor" T100000 B4725 C7.06e-8 ; Configure sensor 2 as thermistor on pin 20.temp0
    M950 H2 C"20.out0" T2 ; Create nozzle heater output on 20.out0 and map it to sensor 2
    M307 H2 B0 S1.00 ; disable Bang-Bang mode for heater 2 and set PWM limit
    M143 H2 P0 S285 T2 ; Set temperature limit on heater 2 to 285C
    M308 S3 P"21.temp0" Y"thermistor" T100000 B4725 C7.06e-8 ; Configure sensor 3 as thermistor on pin 21.temp0
    M950 H3 C"21.out0" T3 ; Create nozzle heater output on 21.out0 and map it to sensor 3
    M307 H3 B0 S1.00 ; disable Bang-Bang mode for heater 3 and set PWM limit
    M143 H3 P0 S285 T3 ; Set temperature limit on heater 3 to 285C
    M308 S4 P"22.temp0" Y"thermistor" T100000 B4725 C7.06e-8 ; Configure sensor 4 as thermistor on pin 22.temp0
    M950 H4 C"22.out0" T4 ; Create nozzle heater output on 22.out0 and map it to sensor 4
    M307 H4 B0 S1.00 ; disable Bang-Bang mode for heater 4 and set PWM limit
    M143 H4 S285 ; Set temperature limit on heater 4 to 285C

    ; Fans
    M950 F0 C"20.out2" Q500 ; Create fan 0 on pin 20.out2 and set its frequency
    M106 P0 S1 H2 T60 ; set fan 0 value. thermostatic control on. Mapped to heater 2
    M950 F1 C"21.out2" Q500 ; Create fan 1 on pin 21.out2 and set its frequency
    M106 P1 S1 H3 T60 ; set fan 1 value. thermostatic control on. Mapped to heater 3
    M950 F2 C"22.out2" Q500 ; Create fan 2 on pin 22.out2 and set its frequency
    M106 P2 S1 H4 T60 ; set fan 2 value. thermostatic control on. Mapped to heater 4
    M950 F3 C"!out4" Q500 ; Create fan 3 on pin out4 and set its frequency
    M106 P3 S1 H-1 ; set fan 3 value. thermostatic control off.
    M950 F4 C"out5" Q500 ; Create fan 4 on pin out5 and set its frequency
    M106 P4 S1 H-1 ; set fan 4 value. thermostatic control off.
    M950 F5 C"out6" Q500 ; Create fan 5 on pin out6 and set its frequency
    M106 P5 S1 H-1 ; set fan 5 value. thermostatic control off.

    ; Tools
    M563 P0 S"Tool 0" D0:3 H2 F0 ; Define Tool 0
    G10 P0 R0 S0 ; Set initial tool 0 active and standby temperatures to 0C
    M567 P0 E0.5:0.5 ; Set Mixing ratios for Tool 0
    M563 P1 S"Tool 1" D1:4 H3 F1 ; Define Tool 1
    G10 P1 S0 R0 ; Set initial tool 1 active and standby temperatures to 0C
    M567 P1 E0.5:0.5 ; Set mixing ratios for tool 1
    M563 P2 S"Tool 2" D2:5 H4 F2 ; Define Tool 2
    G10 P2 S0 R0 ; Set initial tool 2 active and standby temperatures to 0C
    M567 P2 E0.5:0.5 ; Set mixing ratios for tool 2

    ; Tool Offsets
    G10 P0 X0 Y0 Z-5 ; Set Tool 0 Axis offsets
    G10 P1 X0 Y0 Z-5 ; Set Tool 1 Axis offsets
    G10 P2 X0 Y0 Z-5 ; Set Tool 2 Axis offsets

    ; Deselect all Tools
    T-1

    ; Miscellaneous
    M376 H15 ; Bed compensation taper height
    M575 P1 S1 B57600 ; Enables Paneldue
    M501 ; load saved parameters from non-volatile memory (config-override.g)
    M911 S20 R22.5 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; Set voltage thresholds and actions to run on power loss



  • i had some weird behavior on my Z axis not too long ago , i fixed my problem by swapping the stepper motor cable , cable was fine but for some weird reason wasn't working as intended , if you havent tried a different calbe try it it might fix your problem



  • @Dad003 we tried that. When i said i tested additional motors i meant we did some with flying leads and some with new short wires. The 4 on the printer are not an easy swap as they are coupled to the screws and under our 1500lb printer, so we just made new connectors and basically have a test bench with the new motors sitting on the ground next to the Duet 3 so we can test them.


  • Moderator

    The clicking sound is usually an indication that the motor phases are wired incorrectly.

    Verify that the phases are wired correctly

    https://duet3d.dozuki.com/Wiki/Choosing_and_connecting_stepper_motors#Section_Identifying_the_stepper_motor_phases


  • Moderator

    @R3D said in Odd behavior of Stepper motors on Duet 3.:

    M584 X10.0 Y11.0 Z0.0:0.5 C0.1 E20.0:21.0:22.0:0.4:0.2:0.3 ; Set Drive Mapping

    Which drivers are you actually using for Z? In the M584 command it appears you are using drivers 0 and 5, but in the comments of M569 it says 0.4 and 0.5 are for Z and 0.0 is for C.



  • I was using 0.4 and 0.5, but i have been switching them up to make sure it wasn't a bad driver. once the issue is fixed I will switch them all back to the original positions.



  • I have swapped the wires around to all 8 possible ways without the driver shorting to ground i.e. A+,A-,B+,B- and A-,A+,B+,B- and A-,A+,B-,B+ and A+,A-,B-,B+ and B+,B-,A+,A- and B+,B-,A-,A+ and B-,B+,A-,A+, and B-,B+,A+,A-. all combinations should work but none of them provided any rotation at all.....running out of things to test......starting to pull my hair out trying to figure this out.



  • @R3D I can't see anything to suggest you have done this so...
    Can you operate a stepper off the suspect drive on the bench? For clarity, that would be a different stepper motor/s with new wiring loom and no load.

    Also, bare in mind I haven't seen your build so I don't know how feasible this suggestion is. But if you send a move command to the problem stepper/s and manipulate the wiring harness, particularly near corners, is there any change?



  • @Hytek I have been, see picture. I have disconnected all other drives and I am testing one drive with more than one motor in every configuration I listed before, all without rotation. 20200726_210958 (1).jpg



  • @R3D Have you tested any of the failed stepper motors back in a known good source, i.e. the other printer you mentioned. This is just a precautionary measure before the next suggestion in case the stepper has taken damage.

    If you plug your Z stepper/s into X or Y driver do they become active?

    Sorry I can't help on the firmware side, I'm new to Duet myself


  • Moderator

    I would try using a very stripped down config.g that only has the commands for the main X Y Z E drivers. Get a fresh test config from the web config tool just to test. With so many drives etc it can quickly get jumbled.

    https://configtool.reprapfirmware.org/Start



  • So I created a bare bones config and I can now move the stepper motors...does that mean i have too much going on in my config that the Duet 3 cant handle it all?


  • Moderator

    Not necessarily, but it does mean there is something in your drives block that isn't right. Add one drive at a time and configure all it's parameters for all of the commands and test it works. Eat an elephant one bite at a time.



  • hmmmm, alright. looks like another long night for me.



  • @R3D said in Odd behavior of Stepper motors on Duet 3.:

    M584 X10.0 Y11.0 Z0.0:0.5 C0.1 E20.0:21.0:22.0:0.4:0.2:0.3 ; Set Drive Mapping
    M350 Z8 C8 I0 ; Configure Microstepping w/o Interpolation
    M350 E16:16:16:16:16:16 I1 ; Configure Microstepping w/ Interpolation
    M92 X80.00 Y80.00 Z1600.00:1600.00 C100.00 E208.70:208.70:208.70:111.69:111.69:111.69 ; Set Steps per mm
    M566 X600.00 Y600.00 Z12.00:12.00 C120.00 E120.00:120.00:120.00:120.00:120.00:120.00 ; Set maximum instantaneous speed changes (jerk) (mm/min)
    M203 X6000.00 Y6000.00 Z300.00:300.00 C3000.00 E2500.00:2500.00:2500.00:2500.00:2500.00:2500.00 ; Set Maximum Speeds (mm/min)
    M201 X500.00 Y500.00 Z20.00:20.00 C400.00 E2500.00:2500.00:2500.00:2500.00:2500.00:2500.00 ; Set Maximum Accelerations (mm/s^2)
    M906 Z1800 C400 E1100:1100:1100:1250:1250:1250 I100 ; Set Motor Currents (mA) and Motor Idle Factor (%)

    The XYZ axes M584 is correct, but M92, M566, M203, M201 it is not possible to define multiple Z values. XYZ values are defined for those M G-Codes per axis, only one value each. Only for the extruders multiple values are allowed, because the are interpreted as if they are separate axes. deckingman explained it nicely, but I cannot find the link in the forum.
    Found it: https://forum.duet3d.com/topic/17153/duet3-expansion-board-3hc-no-can-connection/31?_=1592929742064

    Wiring stepper (stepper disconnected from the driver!): there is a simple method to find the pairs: keep all 4 wires separated, turn the shaft to find out the torque force. Then short two wires and if you cannot turn the motor any more, they belong together. You cannot find out the rotation direction with this method, however.


Log in to reply