Erratic behavior, skipped steps



  • I'm starting to lose my mind a little troubleshooting my printer with DuetWifi. It worked fabulously for years, and then after a move I noticed that the y-axis was missing steps and creating slanted parts.

    Here is what I've done so far to troubleshoot:

    1. I switched out the belt and motor, but the problem persisted, still skipping on the y-axis
    2. I swapped the x and y motors, and the problem persisted, but in the x-axis. I never was expecting that to happen. This led me to believe that it was a software issue, something with PrusaSlicer.
    3. I switched to Cura 4.18, and it worked fine.
    4. I updated to Duet Firmware 3.2.2, and it started skipping steps in the y again.
    5. I lowered the acceleration values, and the skips went away in a test print.
    6. In the middle of an otherwise perfectly fine print, sliced with Cura 4.8, the print head started to "jitter" erratically. I can't really explain it any other way, but here is a video of what it was doing. It looks like it was skipping steps in the x and y, even though it printed fine up to that point.
    7. Thinking that there was a problem using the reprap g-code flavor, I set it to Marlin. Same thing happened, just a little later in the print.

    I'm at a loss at this point, and I'm hoping someone more capable of troubleshooting can help me!

    Here is the M122:

    RepRapFirmware for Duet 2 WiFi/Ethernet version 3.2.2 running on Duet WiFi 1.02 or later
    Board ID: 08DGM-95BNL-MGPSJ-6J1FA-3S86M-91ZVX
    Used output buffers: 3 of 24 (13 max)
    === RTOS ===
    Static ram: 23460
    Dynamic ram: 73388 of which 60 recycled
    Never used RAM 15172, free system stack 111 words
    Tasks: NETWORK(ready,186) HEAT(blocked,308) MAIN(running,405) IDLE(ready,20)
    Owned mutexes: WiFi(NETWORK)
    === Platform ===
    Last reset 00:13:56 ago, cause: power up
    Last software reset at 2021-02-22 22:09, reason: User, GCodes spinning, available RAM 15208, slot 2
    Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0041f000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a
    Error status: 0x00
    Aux0 errors 0,0,0
    MCU temperature: min 21.8, current 28.3, max 28.7
    Supply voltage: min 11.6, current 11.7, max 11.9, under voltage events: 0, over voltage events: 0, power good: yes
    Driver 0: position 1200, standstill, SG min/max 0/487
    Driver 1: position 1200, standstill, SG min/max 0/555
    Driver 2: position 2120, standstill, SG min/max not available
    Driver 3: position 0, standstill, SG min/max not available
    Driver 4: position 0, standstill, SG min/max not available
    Driver 5: position 0
    Driver 6: position 0
    Driver 7: position 0
    Driver 8: position 0
    Driver 9: position 0
    Driver 10: position 0
    Driver 11: position 0
    Date/time: 2021-02-22 23:26:00
    Cache data hit count 1019503598
    Slowest loop: 14.32ms; fastest: 0.21ms
    I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0
    === Storage ===
    Free file entries: 10
    SD card 0 detected, interface speed: 20.0MBytes/sec
    SD card longest read time 17.5ms, write time 0.0ms, max retries 0
    === Move ===
    DMs created 83, maxWait 105789ms, bed compensation in use: mesh, comp offset 0.049
    === MainDDARing ===
    Scheduled moves 30, completed moves 30, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 3], CDDA state -1
    === AuxDDARing ===
    Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1
    === Heat ===
    Bed heaters = 0 -1 -1 -1, chamberHeaters = -1 -1 -1 -1
    Heater 1 is on, I-accum = 0.0
    === GCodes ===
    Segments left: 0
    Movement lock held by null
    HTTP is idle 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
    Daemon is idle in state(s) 0
    Autopause is idle in state(s) 0
    Code queue is empty.
    === Network ===
    Slowest loop: 15.66ms; fastest: 0.00ms
    Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions
    HTTP sessions: 1 of 8
    - WiFi -
    Network state is active
    WiFi module is connected to access point 
    Failed messages: pending 0, notready 0, noresp 0
    WiFi firmware version 1.25
    WiFi MAC address 2c:3a:e8:0a:fd:be
    WiFi Vcc 3.35, reset reason Turned on by main processor
    WiFi flash size 4194304, free heap 25728
    WiFi IP address 192.168.1.50
    WiFi signal strength -48dBm, mode 802.11n, reconnections 0, sleep mode modem
    Clock register 00002002
    Socket states: 0 0 0 0 0 0 0 0
    

    Here is my config.g file:

    ; Configuration file for Duet WiFi (firmware version 3)
    ; executed by the firmware on start-up
    ;
    ; generated by RepRapFirmware Configuration Tool v3.2.3 on Mon Feb 22 2021 10:21:47 GMT-0500 (Eastern Standard Time)
    
    ; General preferences
    G90                                                                  ; send absolute coordinates...
    M83                                                                  ; ...but relative extruder moves
    M550 P"Printrbot Plus Metal"                                         ; set printer name
    M555 P2
    
    ; Network
    M552 S1                                                              ; enable network
    M586 P0 S1                                                           ; enable HTTP
    M586 P1 S0                                                           ; disable FTP
    M586 P2 S0                                                           ; disable Telnet
    
    ; Drives
    M584 X0 Y1 E3 Z4:2                                                   ; two Z motors connected to driver outputs 2 and 4 (E1)
    M671 X-50:310 Y100:100 S10                                           ; leadscrews  left & right (Middle of the bed in the Y axis)
    M569 P0 S1                                                           ; physical drive 0 goes forwards
    M569 P1 S0                                                           ; physical drive 1 goes forwards
    M569 P2 S0                                                           ; physical drive 2 goes forwards
    M569 P3 S0                                                           ; physical drive 3 goes forwards
    M569 P4 S0 
    M350 X16 Y16 Z16 E16 I1                                              ; configure microstepping with interpolation
    M92 X80.00 Y80.00 Z400.00 E415.00                                    ; set steps per mm
    M566 X900.00 Y900.00 Z60.00 E120.00                                  ; set maximum instantaneous speed changes (mm/min)
    M203 X6000.00 Y6000.00 Z300 E1200.00                                 ; set maximum speeds (mm/min)
    M201 X300.00 Y300.00 Z20.00 E250.00                                  ; set accelerations (mm/s^2)
    M906 X800 Y1000 Z800 E600 I30                                         ; set motor currents (mA) and motor idle factor in per cent
    M84 S30                                                              ; Set idle timeout
    
    ; Axis Limits
    M208 X0 Y0 Z0 S1                                                     ; set axis minima
    M208 X245 Y245 Z200 S0                                               ; set axis maxima
    
    ; Endstops
    M574 X1 S3                                                           ; configure sensorless endstop for low end on X
    M574 Y1 S3                                                           ; configure sensorless endstop for low end on Y
    M574 Z1 S2                                                           ; configure Z-probe endstop for low end on Z
    
    
    ; Z-Probe
    M950 S0 C"exp.heater3"                                               ; create servo pin 0 for BLTouch
    M558 P9 C"^zprobe.in" H3 F200 S2 T10000                              ; set Z probe type to bltouch and the dive height + speeds
    G31 P500 X22.395 Y-2.197 Z2.3                                        ; set Z probe trigger value, offset and trigger height
    M557 X23:250 Y20:240 S20                                             ; define mesh grid
    
    ; Heaters
    M308 S0 P"bedtemp" Y"thermistor" T100000 B4138                       ; 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
    M307 H0 B1 R0.5                                                     ; enable bang-bang mode for the bed heater and set PWM limit
    M140 H0                                                              ; map heated bed to heater 0
    M143 H0 S120                                                         ; set temperature limit for heater 0 to 120C
    M308 S1 P"e0temp" Y"thermistor" T100000 B4138                        ; 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
    M307 H1 B0 S1.00                                                     ; disable bang-bang mode for heater  and set PWM limit
    M143 H1 S280                                                         ; set temperature limit for heater 1 to 280C
    
    ; 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 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
    M671 X-50:310 Y100:100 S10                                           ; leadscrews  left & right (Middle of the bed in the Y axis)
    
    M572 D0 S0.05							                                                 ; Sets the linear advance to .10
    
    ; 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
    
    
    

  • Moderator

    Could be a grub screw slipping, or a bad motor cable. Give that a check.



  • @Phaedrux said in Erratic behavior, skipped steps:

    Could be a grub screw slipping, or a bad motor cable. Give that a check.

    Those would be my two suggestions.



  • Thanks, I checked the grub screw and it was tight. I replaced the motor (again), and I'll see if the problem goes away. Thanks for the suggestions!



  • @dwarren5684 A bad crimp on a connector could cause one pair of motor coils to misbehave - something else worth checking.........



  • This post is deleted!


  • I take it all back. This is really strange and I don't think it has anything to do with the stepper, wiring, or belt. I think the stepper was skipping originally, and when I soldered the connector pins it was resolved.

    The most recent print was going fine, and then it started to jitter like crazy just like in my video.

    This time, I hotswapped the x and y axis. After pausing the print during the jitter, I connected X stepper and connected it to the Y, and connected the Y stepper to the X. My thinking was that if it was a problem with the Y stepper motor, the problem should continue on the Y axis. It didn't, instead it transferred over to the X axis.

    I demonstrated the problem in this video. It is repeatable, but I don't know what is causing the symptom.

    Is there something I'm missing in how I configured fhe firmware?



  • @dwarren5684 That video is compelling evidence that there may be fault with the driver chip. Now it's not up to me because I'm just and end user like you, but unfortunately you've admitted that you hot swapped the wiring without first turning off power. The documentation clearly states that such an action could damage the driver chip. Which means that you might now struggle to get the board replaced under warranty.



  • @deckingman You're absolutely right, it was a risk. The driver operates normally initially, but then things start to fall apart.

    Next step is to try starting with the motors swapped to see if that driver continues to fail. If it does, I have two leadscrews for the z, and I could wire them in tandem to free up a driver. If I reach my limit, it's ok. My ancient printrbot could stand to be upgraded, and I'll happily buy a new duet board.



  • Swapping the X and Y from the beginning created the same behavior, but on the X axis this time. That must mean it's either the driver, or something in the slicer.

    I'll run the two Z motors in parallel, and use the free driver for the Y. I'm pretty confident that will clear up the error, so we'll see!

    I wonder if anyone else has had a driver fail, it would be interesting to see if this is the same behavior.


  • Moderator

    @dwarren5684 If it starts off fine, but then gets worse, I'd be looking for a heat-related break in the soldering, probably one of the solder legs of the driver chip. As it's an old board, it may have been through numerous heat cycles flexing the PCB. I'd go around the driver with a soldering iron, gently remelting the solder on each pin.

    Either that or it is a failing driver 😞 .

    Ian



  • A low cost stepper motor analyzer like this one can help diagnose current issues (bad connections, bad drivers, etc). https://forum.duet3d.com/topic/21312/low-cost-public-domain-stepper-analyzer-season-2?_=1614125424500

    The reference design is in the public domain, waiting for the right entrepreneur. 😉



  • @droftarts Thanks, I'll give it a try! I hadn't considered that. It is strange that the axis works fine for about 30 minutes, and then it starts to fail. Your idea of a faulty solder joint is a good one. I'm out of flux, so I'll need to put that off for later. First I'll test out how the system works with another driver.


  • administrators

    @droftarts said in Erratic behavior, skipped steps:

    @dwarren5684 If it starts off fine, but then gets worse, I'd be looking for a heat-related break in the soldering, probably one of the solder legs of the driver chip. As it's an old board, it may have been through numerous heat cycles flexing the PCB. I'd go around the driver with a soldering iron, gently remelting the solder on each pin.

    Either that or it is a failing driver 😞 .

    Ian

    Also check the soldering of the motor output connectors on the Duet. I once came across a Duet with a bad soldered joint on one of the pins.



  • I waited for the parallel connector adapter to wire them in parallel, then when I was reading the documentation I saw that there are two z connections in serial! Turns out I didn't need to order anything!

    I connected the Y to E1 and the Zs to the serial connectors. So far it's looking great. None of the jitter or missed steps that I was getting from before. I'm going to file this under the "if it isn't broken, don't fix it", but if I lose another driver I'll check the solder joints.

    One new issue that has cropped up is a long lag time between booting the duet and the motors becoming "engaged". Most of the time I try and home and the console says that the motors' phases aren't responding. Normally if I wait a while (10s) the motors will start working, but occasionally I need to restart and wait longer. Any ideas on that?

    Thanks all for your help! I don't think I could have troubleshooted to this point without the advice.


  • Moderator

    @dwarren5684 said in Erratic behavior, skipped steps:

    Normally if I wait a while (10s) the motors will start working

    Boot up can take a few seconds. 10 seconds from power on isn't unusual I think.


Log in to reply