Struggling to get stall detect homing to work.

  • Hi, jut picked up the duet and got it wired in to my printer. Id like to setup the sensor-less homing using the stall detection but cant seem to get it working.

    My machine is a coreXY, 300*300 (its a hypercube Evolution).

    First I set the stall detection using:

    M915 X Y S5 R0 F1

    I've tried S values from -55 to 55 with no success. Also tried F1 and F0, and R0 and R1.

    Then I follow this program from the duet help pages (😞

    ;''' Sensorless Homing test file for RepRapFirmware on Kossel'''
    M400 ; make sure everything has stopped before we make changes
    M574 X2 Y2 Z2 S3 ; set endstops to use motor stall
    M913 X50 Y50 Z50 ; reduce motor current to 50% to prevent belts slipping
    G91 ; use relative positioning
    G1 S1 X700 Y700 Z700 F4000 ; move all carriages up 700mm, stopping at the endstops
    G1 Z-5 F2000 ; down a few mm so that we can centre the head
    G90 ; back to absolute positioning
    M400 ; make sure everything has stopped before we reset the motor currents
    M913 X100 Y100 Z100 ; motor currents back to normal
    G1 X0 Y0 F2000 ; centre the head and set a reasonable feed rate
    M574 X2 Y2 Z2 S1 ; set endstops back to normal so that homedelta.g works

    This results in no movement when calling the G1 - I have a feeling it makes the current too low. I have my printer configured to 1.5A current for X and Y (more than I expected) and it wont move reliably below that level.

    I exclude the M913 from the program and the axis moves fine, crashes into the end of the axis and continues trying to drive. It seems like the motors are not detecting stall at all.

    Any help getting this working would be great!


  • Replace M915 X Y S5 R0 F1 by M915 X Y S5 R0 F0.
    Do not remove M913, just increase slightly until the false stalls disspear.

  • Which firmware do you have?
    from the 1.21 changelog:

    On Cartesian and CoreXY printers, normal G0 and G1 moves are no longer allowed before the corresponding axes have been homed. In particular, if your homex.g, homey.g and homeall.g files raise Z a little at the start and lower it at the end, you will need to add the S2 parameter to those G1 Z moves. Otherwise the G1 Z move will be refused unless Z has already been homed and the homing macro will be terminated.

    See my thread with similar issue, i have a D-BOT that is similar to an hypercube:
    Stall detection for homing issue

    maybe can help you too

  • @edchamberlain said in Struggling to get stall detect homing to work.:

    G1 S1 X700 Y700 Z700 F4000

    Ive been moving the axis with G1 S1 X700 Y700 Z700 F2000 which runs ok - I think its the S1 parameter that says "this is a homing move" so the printer allows it despite axis not being homed.

    Will have a go with your suggestions (and carlossprs) this afternoon and let you know how I get on!

  • administrators

    1. The R parameter is not relevant when using stall detection endstops.

    2. If the motors don't move at all when you execute the G1 S1 move, it may be that the motors already register as stalled (you can check using M122). If so, execute a small G1 S2 move in the opposite direction first to un-stall them. On a CoreXY machine, apply this move to both X and Y motors. In a future firmware update I may change the code to wait for at least 1 full step of movement before the stall is recognised.

    3. If the motors move a very small amount when you execute the G1 S1 move then either the M915 stall detection threshold (S parameter) is too low (so increase it) or the acceleration is too high (so reduce it).

    4. If the motors don't stop at the endstops, either the stall detection threshold is too high, or the move is too slow for stall detection to work (see the M915 H parameter).

    Stall detection can be tricky to get working well. Prusa uses high-inductance motors in the i3 Mk3 to make it easier. The downside with high inductance motors is that they can't manage such high speeds.

    HTH David

  • Wow - it works great! Im using this line to home X:

    M915 X Y S5 R0 F0 M400 M574 X2 Y2 Z2 S3 M913 X75 Y75 G91 G1 S1 X700 F4000 G90 M400 M913 X100 Y100 Z100

    and for Y:

    M915 X Y S5 R0 F0 M400 M574 X2 Y2 Z2 S3 M913 X75 Y75 G91 G1 S1 Y700 F4000 G90 M400 M913 X100 Y100 Z100.

    That homes both axis but how do I now use these settings for the 'Home X' and 'Home Y' buttons on the web interface?

  • @edchamberlain ad them to the homex.g and homey.g files.

  • @carlosspr Silly question but where do I find them?

  • Moderator

    @edchamberlain Those would be in the system directory alongside config.g and the other system macros.

  • @edchamberlain If you use DWC go to Settings | System Editor menu option. From there you can modify all configuration files.

    0_1525514301972_Screenshot from 2018-05-05 13-57-40.png

Log in to reply