Stall Guard



  • I am not able to get Stall Guard to detect anything at all after the print starts.

    I have tried many settings currently trying the below with no luck....
    M915 X Y S-60 R3 F1 H400

    I am using E3d motors currently set to 1000ma on the X and Y.

    Any ideas on what I could try would be great!

    One more thing. I am currently using stall guard for homing X and Y...

    Thanks!


  • Moderator

    What are your steps per MM on X and Y? How fast are you printing when you try to stall it?



  • Steps per mm, is 160. Speed depends on the movement. I have it set to 100mms but its not going that fast because of the short moves on the current print. I don't remember the speed it was moving when I was testing this out. How fast should it go? I know it can't be slow, but not sure what speed slow is.

    Thanks


  • administrators

    The H400 parameter in your M915 means that stall detection is disabled below 400 full steps per second. Your steps/mm is 160, so assuming you have microstepping set to x16, that's 10 full steps/mm. Therefore stall detection will kick in above 400/10 = 40mm/sec.



  • @dc42

    I misunderstood what H was for. I thought it needed to match the steppers .9 degree.... I assumed it could be adjusted for finer calibration, but didn't know it was used like that. I will test this again shortly.

    Thanks!


  • administrators

    @BlueDust, at low speeds stall detection gets less reliable and more sensitive to temperature. That's why the H parameter exists. You can try reducing it, but that may result in false stall warnings, especially when the motors get hot.



  • @dc42
    Right now I am still not getting anything to happen. It cannot detect any stalls. I can hold the belts so the carriage doesn't move and nothing happens. So if I can get it to be too sensitive and at least see something work, I would be seeing some progress.

    I am trying this right now.... I am just changing these settings live during a print a small amount at a time to see if it does anything. So far it runs the rehome.g file when I update the M915.
    M915 X Y S-10 F0 H200 R3

    But 10 minutes ago, I have this.
    M915 X Y S-10 F0 H100 R3

    Appears minimum speed the Duet is showing is 25mms, but going up to 100mms during this print.

    Is there any other config I can show you that would help troubleshoot this?
    M92 X160 Y160 Z800 E834.377
    M566 X500 Y500 Z2 E1000
    M201 X1000 Y1000 Z250 E2400
    M203 X9000 Y9000 Z800 E800
    M906 X1000 Y1000 Z1600 E1000 I30

    M574 X1 Y1 S3



  • @dc42
    I also wanted to add that when I hold the belts, they do not skip. The motors themselves are skipping/shaking.

    Also to compare it... This is my rehome file. Same any my homeall minus the Z axis, and it works.

    M913 Y60 X60             		; reduce motor current to 60% to prevent belts slipping
    
    M915 X Y S3 R0 F0 H400			; X sensitivity to 5, do nothing when stall, unfiltered
    
    G91                     ; relative positioning
    G1 Z5 F6000 S2          ; lift Z relative to current position
    
    G1 H1 Y-305 F5000       ; home Y axis
    G1 H1 X-305 F5000	; home X axis
    
    G1 X20 Y20 F6000  
    
    G1 H1 Y-305 F5000       ; home Y axis
    G1 H1 X-305 F5000	; home X axis
    
    G1 X1 Y1 F6000          ; go back a few mm
    G92 X0 Y0
    
    G90
    M913 Y100 X100      	; motor currents back to normal
    


  • I feel like there is something I am missing to actually enable the feature during a print.
    This doesn't do anything.

    M915 X Y S-64 F0 H0 R3

    Do I have to put the M915 in the config.g file, or can I run a script to enable it like I do with all of the homing config files? I ask because I am just sending the M915 command to the printer while testing this out. It is not in the config.g file. I feel like if it is in there, it will be overridden after I home the printer and become irrelevant. SO if I am just implementing this command in the wrong place, that is why it is not working.


  • Moderator

    I'm guess H0 isinvalid and it's using the default instead. Try H50? Possibly the same with F0? I don't have the wiki open on my phone ATM.

    I don't think there is anything wrong with sending it whenever you want. Nothing really needs to be in config.g.



  • @Phaedrux
    I am just more confused now...
    I have tried H50 already. I just went to the extreme with 0. I already use F0 for sensorless homing. It should just make it more sensitive at sharp movements and F1 should be used during normal printing.
    I am just trying to get it to work during a print and just trip once so I have some proof this feature works. It currently doesn't make any sense to me why it works for homing and I can't get it to work during a print. I must have some other setting enabled/disabled that is affecting it.


  • Moderator

    Is this on I duet wifi? Or maestro?



  • @Phaedrux

    Duet2 Ethernet


  • Moderator

    12v or 24v?



  • @Phaedrux
    24v



  • I don't know if this is actually relevant, but I also read that this Stall Guard may need some fine tuning pointing to this formula sheet.
    I filled it out best to my understanding, but do not know how to use it.

    a2c76831-9e37-4081-8920-7d255b8d89f0-image.png


  • Moderator

    Do you have a link to that sheet?


  • Moderator

    Have you tried getting it to detect a stall on a pure diagonal move to isolate just a single motor?



  • @Phaedrux
    There is a link on the Sensorless homing wiki page that takes you to another page to talk about motors. This site has a link to download the calculation sheet I shared the screen shot of.

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



  • @Phaedrux
    I just printed a large print with long movements and held the belts still.

    I can try printing a large calibration cube and see what happens.
    Thanks.


  • administrators

    @BlueDust said in Stall Guard:

    M915 X Y S-10 F0 H200 R3

    With S-10 I would expect the motor to register stalled nearly all the time. You can check by sending M122 during a print and looking at the driver status.

    On my delta I have M915 set to warn about motor stalls. Using the same M915 settings as when I test sensorless homing on that machine, I get occasional (false) warnings. So I know that it is working at least some of the time.



  • @dc42
    I have been having a lot of trouble with the nozzle getting stuck in the print, and breaking different Z probes and why I want to fix this feature. I am having a lot of Z probe issues again caused by the crashes and not able to bed level. I will run m122 after I can print again.
    Thanks


  • administrators

    I have this on my list to look at, but I need to get firmware 3.01-RC3 released first. Please remind me again on Monday, assuming 3.01-RC3 is released by then.



  • @dc42 said in Stall Guard:

    M122

    As I do use stall guard for homing, I wanted to compare both before and after I enabled it for printing...

    This is before I enabled stall guard (printing)

    M122
    === Diagnostics ===
    RepRapFirmware for Duet 2 WiFi/Ethernet version 2.05 running on Duet Ethernet 1.02 or later + DueX5
    Board ID: 08DGM-9T6BU-FG3S0-7JTDL-3SN6N-TS6VG
    Used output buffers: 3 of 24 (24 max)
    === RTOS ===
    Static ram: 25712
    Dynamic ram: 93836 of which 0 recycled
    Exception stack ram used: 656
    Never used ram: 10868
    Tasks: NETWORK(ready,628) HEAT(blocked,1232) DUEX(suspended,160) MAIN(running,1300) IDLE(ready,160)
    Owned mutexes:
    === Platform ===
    Last reset 70:56:51 ago, cause: software
    Last software reset at 2020-02-28 21:23, reason: User, spinning module GCodes, available RAM 11240 bytes (slot 2)
    Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0441f000 BFAR 0xe000ed38 SP 0xffffffff Task 0x4e49414d
    Error status: c
    Free file entries: 8
    SD card 0 detected, interface speed: 20.0MBytes/sec
    SD card longest block write time: 17.0ms, max retries 1
    MCU temperature: min 33.7, current 36.2, max 39.4
    Supply voltage: min 23.5, current 23.8, max 24.5, under voltage events: 0, over voltage events: 0, power good: yes
    Driver 0: ok, SG min/max 0/201
    Driver 1: ok, SG min/max 0/205
    Driver 2: standstill, SG min/max not available
    Driver 3: ok, SG min/max 0/1023
    Driver 4: standstill, SG min/max not available
    Driver 5: standstill, SG min/max not available
    Driver 6: standstill, SG min/max not available
    Driver 7: standstill, SG min/max 0/1023
    Driver 8: standstill, SG min/max 0/1023
    Driver 9: standstill, SG min/max 0/1023
    Date/time: 2020-03-02 20:20:51
    Cache data hit count 4294967295
    Slowest loop: 261.76ms; fastest: 0.08ms
    I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0
    === Move ===
    Hiccups: 0, FreeDm: 157, MinFreeDm: 132, MaxWait: 21532997ms
    Bed compensation in use: none, comp offset 0.000
    === DDARing ===
    Scheduled moves: 189, completed moves: 165, StepErrors: 0, LaErrors: 0, Underruns: 0, 0
    === Heat ===
    Bed heaters = 0 -1 -1 -1, chamberHeaters = -1 -1
    Heater 0 is on, I-accum = 0.2
    Heater 1 is on, I-accum = 0.3
    === GCodes ===
    Segments left: 1
    Stack records: 3 allocated, 0 in use
    Movement lock held by null
    http is idle in state(s) 0
    telnet is idle in state(s) 0
    file is doing "G1 X170.351 Y213.116 E12.2842" in state(s) 0
    serial is idle in state(s) 0
    aux is idle in state(s) 0
    daemon is idle in state(s) 0
    queue is idle in state(s) 0
    autopause is idle in state(s) 0
    Code queue is empty.
    === Network ===
    Slowest loop: 372.96ms; fastest: 0.05ms
    Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0) Telnet(0)
    HTTP sessions: 1 of 8
    Interface state 5, link 100Mbps full duplex
    === Filament sensors ===
    Extruder 0: pos 280.55, errs: frame 164 parity 0 ovrun 0 pol 5 ovdue 0
    

    This is just what I had used to enable it this time...

    M915 X Y S3 F1 H100 R3
    

    Same print as above Diagnostic text. I just ran the M915 command mentioned above, printer rehomed itself, and I copied the M122 Diagnostic text.

    M122
    === Diagnostics ===
    RepRapFirmware for Duet 2 WiFi/Ethernet version 2.05 running on Duet Ethernet 1.02 or later + DueX5
    Board ID: 08DGM-9T6BU-FG3S0-7JTDL-3SN6N-TS6VG
    Used output buffers: 1 of 24 (24 max)
    === RTOS ===
    Static ram: 25712
    Dynamic ram: 93836 of which 0 recycled
    Exception stack ram used: 656
    Never used ram: 10868
    Tasks: NETWORK(ready,628) HEAT(blocked,1232) DUEX(suspended,160) MAIN(running,1300) IDLE(ready,160)
    Owned mutexes:
    === Platform ===
    Last reset 71:04:28 ago, cause: software
    Last software reset at 2020-02-28 21:23, reason: User, spinning module GCodes, available RAM 11240 bytes (slot 2)
    Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0441f000 BFAR 0xe000ed38 SP 0xffffffff Task 0x4e49414d
    Error status: c
    Free file entries: 8
    SD card 0 detected, interface speed: 20.0MBytes/sec
    SD card longest block write time: 0.0ms, max retries 0
    MCU temperature: min 38.3, current 38.9, max 39.2
    Supply voltage: min 23.7, current 24.1, max 24.2, under voltage events: 0, over voltage events: 0, power good: yes
    Driver 0: ok, SG min/max 79/192
    Driver 1: ok, SG min/max 80/184
    Driver 2: standstill, SG min/max not available
    Driver 3: ok, SG min/max 0/1023
    Driver 4: standstill, SG min/max not available
    Driver 5: standstill, SG min/max not available
    Driver 6: standstill, SG min/max not available
    Driver 7: standstill, SG min/max not available
    Driver 8: standstill, SG min/max not available
    Driver 9: standstill, SG min/max not available
    Date/time: 2020-03-02 20:28:27
    Cache data hit count 4294967295
    Slowest loop: 3.33ms; fastest: 0.09ms
    I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0
    === Move ===
    Hiccups: 0, FreeDm: 142, MinFreeDm: 128, MaxWait: 0ms
    Bed compensation in use: none, comp offset 0.000
    === DDARing ===
    Scheduled moves: 4941, completed moves: 4905, StepErrors: 0, LaErrors: 0, Underruns: 0, 0
    === Heat ===
    Bed heaters = 0 -1 -1 -1, chamberHeaters = -1 -1
    Heater 0 is on, I-accum = 0.2
    Heater 1 is on, I-accum = 0.3
    === GCodes ===
    Segments left: 1
    Stack records: 3 allocated, 0 in use
    Movement lock held by null
    http is idle in state(s) 0
    telnet is idle in state(s) 0
    file is doing "G1 X208.678 Y124.970 E0.4618" in state(s) 0
    serial is idle in state(s) 0
    aux is idle in state(s) 0
    daemon is idle in state(s) 0
    queue is idle in state(s) 0
    autopause is idle in state(s) 0
    Code queue is empty.
    === Network ===
    Slowest loop: 6.89ms; fastest: 0.05ms
    Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0) Telnet(0)
    HTTP sessions: 1 of 8
    Interface state 5, link 100Mbps full duplex
    === Filament sensors ===
    Extruder 0: pos 280.20, errs: frame 164 parity 0 ovrun 0 pol 5 ovdue 0
    


  • @dc42
    I know I am a little late with this... Reminder. 🙂
    As always, Thank you for your help!


Log in to reply