Asymetric motor amperage on combined axis
-
I'm guessing that the motors for the remainder in the group are getting whatever the default amps setting is.
Have you tried explicitly setting the currents for each motor?
e.g.
M906 X2000:2000 Y2000 Z1800:1800:1800:1800 E1000 I30
Its also not recommended to run at maximum current but more in the 70-90% mark.
-
@fxstein Try explicitly assigning all your motors to axes and extruders in your M584. Currently you have only assigned motors to X and Z. When you do that, it doesn't necessarily remove the default assignment unless you explicitly make it so, and strange things can happen. So your M584 needs to have settings for Y and any Es as well as X and Z.
-
@jay_s_uk said in Asymetric motor amperage on combined axis:
I'm guessing that the motors for the remainder in the group are getting whatever the default amps setting is.
Thought so too.
Have you tried explicitly setting the currents for each motor?
e.g.
M906 X2000:2000 Y2000 Z1800:1800:1800:1800 E1000 I30
I have not tried that mainly because @dc42 says not to do it in various threads on the forum. Will test to see if it makes a difference.
Its also not recommended to run at maximum current but more in the 70-90% mark.
Thank you! Well aware of the motor limits - have been discussed in multiple threads. With microstepping you can actually go over 100% if needed. It’s a question of torque needed vs weight and resulting speed/acceleration capabilities.
The reason I am always measuring is to make sure I am operation within safe margins of error. 50-60C after extended runs are totally within spec for the motors I am using.
Having said so, I fully expect to be able to lower to motor amperage once I get them all symmetrical.
Once again Thank you!
-
@deckingman said in Asymetric motor amperage on combined axis:
@fxstein Try explicitly assigning all your motors to axes and extruders in your M584. Currently you have only assigned motors to X and Z. When you do that, it doesn't necessarily remove the default assignment unless you explicitly make it so, and strange things can happen. So your M584 needs to have settings for Y and any Es as well as X and Z.
Thank you!
To be hontest I still don’t fully understand the ‘default assignments’ part. I guess I was thinking that because I am using all Duet2 WiFi drivers in their default assignments that all extra motors/channels on the Duex5 are the only ones I have to worry about.
Also the default config on the Modix did not come with an M584 to begin with - and I just kept adding on.
Makes total sense to define all motors/axis and even if it only to have a clean definition.
Will try and report back.
Other than measuring the motor temps, is there any way to tell what amperage or load any particular driver is running at? Can the SG values of the M122 be leveraged for that? (Trying to get to a systematic and then automated approach to validate optimal operation Of a particular system)
Thank you very much!
-
@fxstein You could try sending just M906 with no parameters but I'm pretty sure that it will return the motor currents for each axis, not for each motor. That's because of this little snippet from the wiki for M906 https://duet3d.dozuki.com/Wiki/Gcode#Section_M906_Set_motor_currents
quote...................
"Example: If you have two motors on your Z axis, physically connected to Z and E0 stepper drivers, configured with M584 Z2:3, set M906 Z200, not M906 Z200:200"
..........end of quote
So motor currents are (should be) set per axis, not per motor and each motor should get the same setting.
One way to force asymmetric (or symmetric) currents is to use additional axes. So for example if you have M584 X0:3 then create two axis for X and U instead by using M584 X0 U3. Then set the motor currents for each of the X and U axis using M906. Then finally remap both motors to X by using M584 X0:3 and you'll find that the motor currents retain their initial settings rather than "inherit" the setting for the axis. (at least that is what DC42 told me a long while ago in another thread on a different topic).
There is of course another possibility, which is that the difference in temperature you noticed is caused by a difference in load on each motor. Belt tension or some sort of friction might cause that to happen. Or possibly a difference in (passive) cooling. Are the motor mounts identical? Are the motors subjected to the same air flow (if any exists)?
-
@deckingman I first thought of all the same reasons you mention for X. And I have read the wiki.
But then I see the exact same behavior on the Z-axis with the one motor on the Duet running significantly hotter than the other 3 on the Duex.
And there is a significant difference in the Stallguard numbers for X1 vs X2 and the same for ZL1 vs ZL2/ZR1/ZR2.
Need to wait for a current larger print to finish before I can try out the earlier suggestions. Thanks!
-
@fxstein I'm not sure if this will work but you could try sending M584 U6 V7 W8. This would create three new axes using the additional Z motors 6,7 and 8. In theory, if you don't specify a motor current for them, then they should "inherit" the motor current from your M906 Z setting in config.g. So then if you send M906 without any additional parameters, you should get a report back of the setting for all axes. If things are working as expected, then the reported current for Z U V and W should all be the same and they should match the value you set in M906 in config.g (for Z). If they are not, then it looks like you've unearthed a hitherto unknown bug (unless my suggested test method is flawed and some other default value for motor current is applied when new axes are created).
-
@deckingman Just ran an M906 while the print is running. And I think you were right all along with the axis default assignment.
Could not find any documentation to explaining the default assignments.It looks like ALL Duex5 channels are by default assigned as extruders. I assumed only the Duet channels had default assignments.
M906 Motor current (mA) - X:2000, Y:2000, Z:1800, E:1000:1000:1000:1000:1000:1000:1000, idle factor 30%
So I have been testing and tuning the machine with 4 out of 7 motors running at 50% of their current. Cannot wait to change that and retune...
Soon time to switch to 3.x and forget all those default assignments...
Overnight print is at 92%...
-
@fxstein Looks like you have a reason and a solution so all good yes?
-
Just getting to it now that the print has finished.
First I did try your suggestion:
M584 U6 V7 W8 ; followed by M906 Motor current (mA) - X:2000, Y:2000, Z:1800, U:1000, V:1000, W:1000, E:1000:1000:1000:1000:1000:1000, idle factor 30%
It is validating the theory that the drivers on the Duex have default assignments of extruders and as such inheriting the amperage of those. Running the M906 without parameters was a good start and unmapping the axis confirmed that. Need to remember that.
Ok. Changed config.g drive mapping to:
; Setup combined axis M584 X0:5 ; combine drive 0 (X1) and 5 (X2) for X-Axis M584 Y1 ; single drive 1 for Y-Axis M584 Z2:6:7:8 ; combine drives 2 (ZL1), 6 (ZL2), 7 (ZR1), 8(ZR2) for Z-Axis M584 E3:4 ; only 2 extruders to release the remaining Duex5 drivers from default extruder mapping
When I now run M906 and also unmap the axis I get:
M906 Motor current (mA) - X:2000, Y:2000, Z:1800, E:1000:1000, idle factor 30% M584 U6 V7 W8 M906 Motor current (mA) - X:2000, Y:2000, Z:1800, U:1800, V:1800, W:1800, E:1000:1000, idle factor 30%
SHowing the correct motor amperages for all motors involved (same for the second X-axis). That solved the mystery.
Summary
Basically all drivers on the Duex5 are by default mapped as extruders. All axis and all extruders should explicitly be mapped to their respective axis. This can be done by multiple M584 statements (like I did by axis in order to better document) and in no specific order as long as all of them come before the likes of M350 and M906.I will mark this thread as SOLVED. Thank you very much for your help getting to the bottom of this.
-
FYI: Tried to mark the original post as (SOLVED) but being told by the forum that I can only edit a post for 3600 seconds
-
@fxstein For info, prior to gen 3, I think the defaults are X0, Y1, Z2 and every driver after that defaults to being an extruder. So that includes any other drivers on the main board and all drivers on any expansion board (Duex2 or Duex5).