Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login

    Asymetric motor amperage on combined axis

    Scheduled Pinned Locked Moved Solved
    Duet Hardware and wiring
    3
    14
    662
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • fxsteinundefined
      fxstein
      last edited by

      Forgot to mention - these are all identical motors on all axis (except the extruders)

      deckingmanundefined 1 Reply Last reply Reply Quote 0
      • jay_s_ukundefined
        jay_s_uk
        last edited by

        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.

        Owns various duet boards and is the main wiki maintainer for the Teamgloomy LPC/STM32 port of RRF. Assume I'm running whatever the latest beta/stable build is

        fxsteinundefined 1 Reply Last reply Reply Quote 2
        • deckingmanundefined
          deckingman @fxstein
          last edited by

          @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.

          Ian
          https://somei3deas.wordpress.com/
          https://www.youtube.com/@deckingman

          fxsteinundefined 1 Reply Last reply Reply Quote 2
          • fxsteinundefined
            fxstein @jay_s_uk
            last edited by

            @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!

            1 Reply Last reply Reply Quote 0
            • fxsteinundefined
              fxstein @deckingman
              last edited by

              @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!

              deckingmanundefined 1 Reply Last reply Reply Quote 0
              • deckingmanundefined
                deckingman @fxstein
                last edited by

                @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)?

                Ian
                https://somei3deas.wordpress.com/
                https://www.youtube.com/@deckingman

                fxsteinundefined 1 Reply Last reply Reply Quote 1
                • fxsteinundefined
                  fxstein @deckingman
                  last edited by

                  @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!

                  deckingmanundefined 1 Reply Last reply Reply Quote 0
                  • deckingmanundefined
                    deckingman @fxstein
                    last edited by deckingman

                    @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).

                    Ian
                    https://somei3deas.wordpress.com/
                    https://www.youtube.com/@deckingman

                    fxsteinundefined 1 Reply Last reply Reply Quote 1
                    • fxsteinundefined
                      fxstein @deckingman
                      last edited by

                      @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%...
                      Screen Shot 2020-06-09 at 11.04.58 AM.png

                      deckingmanundefined 1 Reply Last reply Reply Quote 0
                      • deckingmanundefined
                        deckingman @fxstein
                        last edited by

                        @fxstein Looks like you have a reason and a solution so all good yes?

                        Ian
                        https://somei3deas.wordpress.com/
                        https://www.youtube.com/@deckingman

                        fxsteinundefined 1 Reply Last reply Reply Quote 1
                        • fxsteinundefined
                          fxstein @deckingman
                          last edited by fxstein

                          @deckingman

                          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.

                          1 Reply Last reply Reply Quote 0
                          • fxsteinundefined
                            fxstein
                            last edited by

                            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

                            deckingmanundefined 1 Reply Last reply Reply Quote 0
                            • deckingmanundefined
                              deckingman @fxstein
                              last edited by

                              @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).

                              Ian
                              https://somei3deas.wordpress.com/
                              https://www.youtube.com/@deckingman

                              1 Reply Last reply Reply Quote 1
                              • First post
                                Last post
                              Unless otherwise noted, all forum content is licensed under CC-BY-SA