• Tags
  • Documentation
  • Order
  • Register
  • Login
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
624
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.
  • undefined
    fxstein
    last edited by 9 Jun 2020, 04:30

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

    undefined 1 Reply Last reply 9 Jun 2020, 05:30 Reply Quote 0
    • undefined
      jay_s_uk
      last edited by 9 Jun 2020, 05:27

      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

      undefined 1 Reply Last reply 9 Jun 2020, 13:37 Reply Quote 2
      • undefined
        deckingman @fxstein
        last edited by 9 Jun 2020, 05:30

        @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

        undefined 1 Reply Last reply 9 Jun 2020, 13:48 Reply Quote 2
        • undefined
          fxstein @jay_s_uk
          last edited by 9 Jun 2020, 13:37

          @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
          • undefined
            fxstein @deckingman
            last edited by 9 Jun 2020, 13:48

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

            undefined 1 Reply Last reply 9 Jun 2020, 14:37 Reply Quote 0
            • undefined
              deckingman @fxstein
              last edited by 9 Jun 2020, 14:37

              @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

              undefined 1 Reply Last reply 9 Jun 2020, 17:09 Reply Quote 1
              • undefined
                fxstein @deckingman
                last edited by 9 Jun 2020, 17:09

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

                undefined 1 Reply Last reply 9 Jun 2020, 17:37 Reply Quote 0
                • undefined
                  deckingman @fxstein
                  last edited by deckingman 6 Sept 2020, 17:38 9 Jun 2020, 17:37

                  @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

                  undefined 1 Reply Last reply 9 Jun 2020, 18:10 Reply Quote 1
                  • undefined
                    fxstein @deckingman
                    last edited by 9 Jun 2020, 18:10

                    @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

                    undefined 1 Reply Last reply 9 Jun 2020, 19:20 Reply Quote 0
                    • undefined
                      deckingman @fxstein
                      last edited by 9 Jun 2020, 19:20

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

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

                      undefined 1 Reply Last reply 9 Jun 2020, 20:22 Reply Quote 1
                      • undefined
                        fxstein @deckingman
                        last edited by fxstein 6 Sept 2020, 20:23 9 Jun 2020, 20:22

                        @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
                        • undefined
                          fxstein
                          last edited by 9 Jun 2020, 20:28

                          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

                          undefined 1 Reply Last reply 10 Jun 2020, 07:10 Reply Quote 0
                          • undefined
                            deckingman @fxstein
                            last edited by 10 Jun 2020, 07:10

                            @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
                            11 out of 14
                            • First post
                              11/14
                              Last post
                            Unless otherwise noted, all forum content is licensed under CC-BY-SA