Motor current idle factor not working over canbus?
-
Hi everyone. I have two Mini5+ boards controlling 8 stepper motors. When I try to set the motor current idle factors, using a command like this:
M906 I100
no matter where in my config I place this command, all the motors connected to the Mini5+ board that is being used as the expansion board do not obey this command, they all seem to default to the default value of 30%, not the 100% value set explicitly in the M906 command. All motors connected to the main board do obey this command. Is this some undocumented limitation of CAN? I think I read through all the limitations listed here: https://docs.duet3d.com/User_manual/RepRapFirmware/CAN_limitations but nothing matching my issue seem to show up. Any idea what could be causing this? Thanks in advance! -
-
@droftarts thank you, very much appreciated!
-
@mike_b I confirm this is a bug. Created https://github.com/Duet3D/RepRapFirmware/issues/1019.
Possible workaround if you always want to use the same idle current: add command M906 I100 to the config.g file of the board being used as an expansion board. This workaround will stop working when the bug fix is implemented.
-
@dc42 thank you! Adding the command to the config file of the expansion board worked. Did you need any help with testing?
-
Hi @dc42, I realize this is an old thread, but I was wondering if the fix for this bug (commit here) is included in
3.5.3-rc.1
? If it is, I can confirm that the issue persists, as I still can't change the idle current on motors connected to my Mini5+ board, which I'm using as an expansion board. Would you like me to test this on the 3.6 alpha release?" -
@mike_b yes, please test it in 3.6.0-alpha.5.
-
Hi @dc42 running the following setup:
Product Short Name Version Duet 3 Mini 5+ Mini5plus 3.6.0-alpha.5+1 Duet 3 Expansion Mini5plus Mini5plus 3.6.0-alpha.5+1 Duet 3 Expansion TOOL1LC TOOL1LC 3.6.0-alpha.5 Duet Software Framework DSF 3.6.0-alpha.2 Duet Web Control DWC 3.6.0-alpha.2
And unfortunately this does not resolve the bug. I am still unable to set a custom idle current on the expansion board; i.e. the idle current remains at the default value, irrespective of what I set in my
M906
command. Here are some extra bits of info that might be helpful:- first, despite the idle current actually being set to the default initially -- I can tell this because my build plate drops; I have a belt driven z-axis with brakes -- running M906 without any parameters reports the desired idle current:
11/09/2024, 07.42.26 M906 Motor current (mA) - X:1200, Y:1200, Z:1200, E:500, idle factor 75%
- second, the interesting part is that despite the idle factor being set to the default initially, it appears as thought eventually, the motors do enter the desired 75% idle current, I can tell this because the build plate wont crash again. I'm not sure exactly how to verify this, I guess I could use my voltmeter to test current into the motor?
-
@mike_b might it be the case that if the motors are already running at idle current then changing the idle current percentage doesn't update them, but if you then use the motor and then let it go idle then the new idle current percentage is used?
-
@dc42 Great question! Unfortunately, I can’t give a definitive answer at this point without conducting more thorough testing, I’m not entirely sure about the exact sequence of events. Let me get back to you this weekend
-
I have tested this in both 3.5.3 and 3.6.0-beta.1, and both appear to work correctly for me, with the axes on the mainboard-as-expansion-board controlling normal axes.
@mike_b are you controlling normal axes, or extruders, on the Mini 5+ expansion board? If it's extruders, I'll redo the tests with the extra motor configured as such.
Test setup: two Mini5+, running 3.6.0-beta.1. First board is on my normal bedslinger, second board has 1 motor attached to driver 0, and only has M954 A60 in its config.g. Configured motor as U axis, with same parameters as X axis.
Test: Initially M906 I30 and M84 S30 were set. I changed M84 S10, and idle timeout dropped to 10 seconds, on motors connected to both boards following a move of that axis (X and U tested). Changed M906 I100, motors on both boards maintain 100% current. Other M906 I# and M84 S# values tested, with the correct behaviour observed. So appears to be working correctly in 3.6.0-beta.1.
Reverted firmware to 3.5.3 on both boards, and ran tests again. Same result, so it seems to working as expected.Ian