Question over stepper powerdown timeout

  • Hi
    I'm using a duet wifi (latest) with the latest firmware 2.01
    Just to ask is there a timeout value that can be set to turn off the motors altogether after a fixed period of time?

    I know M18 can be issued to manually turn off all motors by the user
    and M84 S30 will cause the motors to go into idle mode after 30 seconds
    which isn't a full shutdown but just a low power state

    but what I'm interested in is a timeout that turns the motors off altogether after a fixed period of time.
    I tried using 0 for the idle power, but this doesnt deactivate the motors altogether.

    It's common for Marlin to do this after 30 seconds.
    perhaps this is a feature which hasn't been rolled in yet.

  • administrators

    The problem with turning the motors off completely is that you can't be sure that the axes will remain in the same position when you power them up again. Most boards running Marlin don't have the option to reduce motor current other than to zero, so that's probably why Marlin turns them off completely.

    I could change the code so that zero idle current percentage turns off the motors completely, but it really ought to reset the status to "not homed" too as M18 does.

  • @dc42 said in Question over stepper powerdown timeout:

    I could change the code so that zero idle current percentage turns off the motors completely, but it really ought to reset the status to "not homed" too as M18 does.

    Yes, to me going to zero current would be bad without flagging that the axis needs to be homed again. To easy to have an axis loose position.

  • I agree that turning the motors off completley should equal not homed
    I could add in the motor off command after every print or operation like calibrating since a home should proceed everything i do anyway.
    But I thought it might be useful to have it as an option for the idle

  • administrators

    I've added an item to the work list to consider implementing in firmware 2.02: setting idle current to 0% to disable motors and flag them as not homed. I'll probably make M913 behave the same way too because I think it shares the same code..

  • thanks very much

  • I can foresee problems with this. I've always thought of the idle current being less than the full current used for printing but sufficient to prevent axis movement in the event of an accidental knock or some such. Idle HOLD is how I've always thought of it. According to the wiki, the default value is 30% but it will always be 100mA. Presumably this 100mA was at some time deemed to be the minimum that would hold the axes in place in the event of an accidental knock or even the vibration of someone walking past the printer while it is standing on a wood floor. What is being proposed is to do away with this minimum. OK when it's set to zero, the axes will be flagged as not homed but sooner or later, somebody is going to set the value to say 5% or 1% or some other very low number. Then they are going to accidentally tap a gantry, it's going to move, they will then start a print, the head will crash into something and do some damage and they will be complaining on these forums. Someone will point out that it's their own fault for setting the idle current too low and the response will be that it shouldn't be possible to do that.

    Maybe the answer is to flag axes as not homed if the idle current is set below a certain value - say 10% or 100mA rather than set to zero? But I can still see people complaining or making mistakes.

    The OP could perhaps just use a macro to pause for nnn seconds than instigate M18?

  • I would say that those of us that want the motors to turn off after a timeout should have the option to do that (if by setting the idle current to 0%)

    As far as the idle current being too low / resulting in a moved or unhomed machine for those that dont want that.
    This should just be a case of the end user not using 1% but the recommended 30% instead, or perhaps something larger.

    Ultimatley your not going to be able to predict all the different combinations of use cases or types of machines that are likley to be used.

  • @garlicbread May I just ask why you want to turn the motors off after a certain period of time? As opposed to turning them off instantly or setting them to a lower holding current after a period of time. I'm struggling to understand the need for this particular usage case.

    Of course, those of us with some experience would never use a load idle hold current so for me personally, it's not an issue. But we do get a lot of "nooby's" who make mistakes and it's those users that I'm concerned about. As an example, a recent addition to the firmware is that it defaults to not being able to move any axes unless they have been homed. This is to prevent "noobys" inadvertently crashing their print heads but us more experienced users can turn that default behaviour off.

    So what concerns me is that we currently have a kind of "fail safe" idle hold default which is going to be turned off and will allow "noobys" who may not know any better, to damage their printers.

  • In my case I'm using a Anycubic Kossel Linear Plus.
    The reasons for wanting to turn the power off automatically are

    • The noise generated by the motors even in idle mode at the lowest setting.
    • The 12V PSU (the original one that came with the printer) tends to kick its fan in after a while if current is being drawn which makes a bit of noise. (its not the best PSU in the world)
    • I'm lazy and don't want to have to issue a motor off command after every time I do something with the printer a few minuites later :), I admit I could add the motor command to the end of the print G-Code, but I prefer the behaviour I'm used to with Marlin.

    As far as I can see the default or recommend value should be 30% not 0% as a starting point which is something you would need to set explicitley in the config. so I don't think it's going to be defaulting to this value by accident.
    If it's a concern, then perhaps use -1 as a value to shut off the motors after a timeout.

Log in to reply