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

    Motor current idle factor not working over canbus?

    Scheduled Pinned Locked Moved
    Duet Hardware and wiring
    4
    36
    1.1k
    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.
    • mike_bundefined
      mike_b
      last edited by

      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!

      droftartsundefined 1 Reply Last reply Reply Quote 0
      • droftartsundefined
        droftarts administrators @mike_b
        last edited by

        @mike_b I highlighted this thread to @dc42, he said he'd look into this when he's back in the office on Monday.

        Ian

        Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

        mike_bundefined 1 Reply Last reply Reply Quote 0
        • mike_bundefined
          mike_b @droftarts
          last edited by

          @droftarts thank you, very much appreciated!

          dc42undefined 1 Reply Last reply Reply Quote 0
          • dc42undefined
            dc42 administrators @mike_b
            last edited by

            @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 created this issue in Duet3D/RepRapFirmware

            closed Main board used as expansion board doesn't handle idle current percent #1019

            Duet WiFi hardware designer and firmware engineer
            Please do not ask me for Duet support via PM or email, use the forum
            http://www.escher3d.com, https://miscsolutions.wordpress.com

            mike_bundefined 2 Replies Last reply Reply Quote 0
            • mike_bundefined
              mike_b @dc42
              last edited by

              @dc42 thank you! Adding the command to the config file of the expansion board worked. Did you need any help with testing?

              1 Reply Last reply Reply Quote 0
              • mike_bundefined
                mike_b @dc42
                last edited by

                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?"

                dc42undefined 1 Reply Last reply Reply Quote 0
                • dc42undefined
                  dc42 administrators @mike_b
                  last edited by

                  @mike_b yes, please test it in 3.6.0-alpha.5.

                  Duet WiFi hardware designer and firmware engineer
                  Please do not ask me for Duet support via PM or email, use the forum
                  http://www.escher3d.com, https://miscsolutions.wordpress.com

                  mike_bundefined 1 Reply Last reply Reply Quote 0
                  • mike_bundefined
                    mike_b @dc42
                    last edited by mike_b

                    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?
                    dc42undefined 1 Reply Last reply Reply Quote 0
                    • dc42undefined
                      dc42 administrators @mike_b
                      last edited by

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

                      Duet WiFi hardware designer and firmware engineer
                      Please do not ask me for Duet support via PM or email, use the forum
                      http://www.escher3d.com, https://miscsolutions.wordpress.com

                      mike_bundefined 2 Replies Last reply Reply Quote 0
                      • mike_bundefined
                        mike_b @dc42
                        last edited by

                        @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

                        droftartsundefined 1 Reply Last reply Reply Quote 0
                        • droftartsundefined
                          droftarts administrators @mike_b
                          last edited by

                          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

                          Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

                          mike_bundefined 1 Reply Last reply Reply Quote 0
                          • mike_bundefined
                            mike_b @droftarts
                            last edited by

                            Hey @droftarts - I'm controlling normal axes (the z-axis motor specifically) on the Mini 5+ expansion board. Since my z-axis is belt driven, any changes in the idle current are quite noticeable; for example, my print bed drops like a rock :D. Is there anything I can do on my end to help with this debugging? For example, make a video of the behavior? Post my full config? Let me know

                            droftartsundefined 1 Reply Last reply Reply Quote 0
                            • mike_bundefined
                              mike_b @dc42
                              last edited by

                              Hey @dc42, I just realized I left you hanging! Back on Sept 12, I replied with "Let me get back to you this weekend," but I got caught up in moving to a new house and haven't had much time to follow up. Sorry about that!

                              1 Reply Last reply Reply Quote 0
                              • droftartsundefined
                                droftarts administrators @mike_b
                                last edited by

                                @mike_b said in Motor current idle factor not working over canbus?:

                                Is there anything I can do on my end to help with this debugging? For example, make a video of the behavior? Post my full config? Let me know

                                Config.g would be good, then I can replicate your setup. Video if you've got time! Is it multiple motors combined to make Z axis? I didn't test that.

                                Ian

                                Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

                                mike_bundefined 1 Reply Last reply Reply Quote 0
                                • mike_bundefined
                                  mike_b @droftarts
                                  last edited by

                                  @droftarts ok, sounds good, I'll try to get this for you this weekend. And to answer you question: I am running 4 motors on the z-axis

                                  droftartsundefined 1 Reply Last reply Reply Quote 0
                                  • droftartsundefined
                                    droftarts administrators @mike_b
                                    last edited by

                                    @mike_b I set up a test with 4x Z motors on the Mini 5+ as expansion board, M906 I# and M84 S# seemed to work correctly in RRF 3.6.0-beta.1 and 3.5.3. I connected a stepper motor too, and ran into this bug in 3.5.3 (fixed in 3.6.0-beta.1): https://github.com/Duet3D/RepRapFirmware/issues/1058

                                    I reverted back to 3.5.2, and finally did manage to replicate your bug. The motors on the Mini5+ expansion board did respect any M84 S# time, but always dropped back to 30% idle hold. Interestingly, sending M906 I# also caused the machine axes to be reset (ie unhomed), which didn't seem to happen in 3.5.3 or 3.6.0-beta.1.

                                    When you get the chance, please check the firmware version you have installed. Are you running in SBC mode? If you still experience problems, please post your config.g and any other relevant files.

                                    Ian

                                    droftarts created this issue in Duet3D/RepRapFirmware

                                    closed [bug]: RRF 3.5.3 - Extruder drives on mainboard-as-expansion-board not moving #1058

                                    Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

                                    mike_bundefined 1 Reply Last reply Reply Quote 0
                                    • mike_bundefined
                                      mike_b @droftarts
                                      last edited by

                                      Hey @droftarts, sorry about for the late reply, the new house and the move and still taking up all my time. Anyway, yeah, I'm still experiencing the same problem. Here is a screenshot of my firmware, all 3.5.3. My setup is two Mini 5+ boards and SBC mode. Here is my config.g on the expansion board:

                                      M906 I90
                                      M954 A40
                                      

                                      The issue happens whenever I remove the M906 command from the expansion board config. Below is my config.g for the main board. I'm very much new to duet so please do let me know if I'm doing anything dumb:

                                      ; get variables
                                      M98 P"/sys/constants.g"
                                      
                                      ; General
                                      G90  ; absolute coordinates
                                      M83  ; relative extruder moves
                                      
                                      ; Wait a moment for the CAN expansion boards to become available
                                      G4 S2
                                      
                                      ; Kinematics; Cartesian
                                      M669 K0
                                      
                                      ; Drivers
                                      M569 P0.0 S1 D3 V9   ; x0
                                      M915 P0.0 S10        ; x0, stallguard threshold
                                      
                                      M569 P0.1 S0 D3 V9   ; x1
                                      M915 P0.1 S10        ; x1, stallguard threshold
                                      
                                      M569 P0.2 S0 D3 V9   ; y0
                                      M915 P0.2 S10        ; y0, stallguard threshold
                                      
                                      M569 P0.3 S1 D3 V9   ; y1
                                      M915 P0.3 S10        ; y1, stallguard threshold
                                      
                                      M569 P40.0 S1 D3 V9  ; z0
                                      M569 P40.1 S1 D3 V9  ; z1
                                      M569 P40.2 S1 D3 V9  ; z2
                                      M569 P40.3 S1 D3 V9  ; z3
                                      
                                      M569 P121.0 S1 D3 V2   ; e
                                      
                                      ; ---- axes
                                      M584 X0.0:0.1 Y0.2:0.3   Z40.0:40.1:40.2:40.3  E121.0      ; axis mapping
                                      
                                      M350 X16      Y16        Z16      E16  I1     ; microstepping with interpolation
                                      M906 X1200    Y1200      Z1200    E500        ; axis driver currents
                                      M917 X100      Y100      Z100     E70         ; set motor standstill
                                      M92  X79.87    Y79.80    Z160.31  E722.76     ; steps per mm
                                      M208 X-10:270  Y-15:270  Z0:295               ; minimum and maximum axis limits
                                      
                                      ; ---- motor idle
                                      M84  S600  ; idle timeout, 10min
                                      M906 I95   ; idle current, 95%
                                      
                                      ; ---- accelerations and jerks
                                      M203 X15000   Y15000   Z6000 E2000    ; maximum speeds (mm/min) E max: 8.3mm/sec, 20mm^3/sec
                                      M201 X6000    Y6000    Z1000 E1000    ; accelerations  (mm/s^2) individual axes
                                      M204 P6000 T3000                      ; accelerations  (mm/s^2) total motion, (P)rinting and (T)ravel
                                      M566 X1200    Y1200    Z200  E400  P1 ; maximum instantaneous speed changes (mm/min)
                                      
                                      ; ---- temp Sensors
                                      M308 S0 P"0.temp0"   Y"thermistor" A"Heated Bed"     T10000 B3892 ; bed
                                      M308 S1 P"121.temp0" Y"pt1000"     A"Nozzle"                      ; nozzle
                                      M308 S2 P"40.temp0"  Y"thermistor" A"Filament Dryer" T10000 B3892 ; filament dryer
                                      
                                      ; Fans
                                      ; --- air pump; brushed DC motors should operate nicely with a PWM freq of 50 to 100
                                      M950 F0 C"0.out2" Q250
                                      M106 P0 C"Tool fan"      S0 B0.0 H-1 L0 X0.5
                                      
                                      ; --- turn on auto when heatbreak is 45C
                                      M950 F1 C"121.out2"
                                      M106 P1 C"heatbreak fan" S0 B0.1 H1 T45 L0 X1
                                      
                                      ; --- BAG enclosure fan 1
                                      M950 F3 C"!0.out3"
                                      M106 P3 C"BAG fan 1 (weak)" S0 B0.1 H-1 L0 X1
                                      
                                      M950 F4 C"!0.out4"
                                      M106 P4 C"BAG fan 2 (strong)" S0 B0.1 H-1 L0 X1
                                      
                                      ; Heater, bed
                                      M950 H0 C"0.out5" T0 Q500                          ; create heater #0
                                      M140 P0 H0                                         ; configure heated bed #0
                                      M143 H0 P0 T0 C0 S140 A0                           ; heater monitor #0 for heater #0
                                      M307 H0 R0.645 K0.227:0.000 D11.51 E1.35 S1.00 B0  ; PID tune
                                      
                                      ; Heater, extruder
                                      M950 H1 C"121.out0" T1   ; create heater #1
                                      M143 H1 P1 T1 C0 S310 A0 ; configure heater monitor #0 for heater #1
                                      M570 H1 P15 T20          ; fault only after 15sec and 20C excursion
                                      
                                      if global.hotend == "magnum"
                                        M307 H1 R2.510 K0.449:0.000 D5.91 E1.35 S1.00 B0 V23.7
                                      elif global.hotend == "mosquito"
                                        M307 H1 R3.039 K0.404:0.000 D5.22 E1.35 S1.00 B0 V23.4
                                      else
                                        M307 H1 B1
                                      
                                      ; Endstops
                                      M574 X1 S4
                                      M574 Y1 S4
                                      M574 Z0
                                      
                                      ; Tools
                                      M563 P0 S"T0" D0 H1 F0 ; create tool #0
                                      M568 P0 R0 S0          ; initial tool #0 active and standby temperatures to 0C
                                      if global.nozzle_diameter < 0.6 ; heater feedforward for tool 0
                                        M309 P0 S0.08
                                      if global.nozzle_diameter >= 0.6
                                        M309 P0 S0.3
                                      
                                      ; z-probe dock
                                      M950 S0 C"out6" Q50    ; servo, assign GPIO port 1 to out9 (Servo header), servo mode
                                      M950 J0 C"!0.io0.in"   ; sensor
                                      
                                      ; z brake
                                      M569.7 P40.3 C"out1" S100
                                      
                                      ; accelerometer; I is the orientation
                                      M955 P121.0 I24
                                      
                                      ; sensorless homing
                                      M915 X Y R0 F0
                                      
                                      ; extra sensors
                                      M308 S10 Y"mcu-temp" P"0.dummy"  A"0.MCU"
                                      M308 S11 Y"mcu-temp" P"40.dummy" A"40.MCU"
                                      M308 S12 Y"mcu-temp" P"121.dummy" A"121.MCU"
                                      
                                      ; electronics bag fan
                                      M950 F5 C"40.out6"
                                      M106 P5 C"electronics fan" B0.1 H11 T45 L0 X0.7
                                      

                                      Finally, I know I did mention uploading a video, and I still can, if you think it would be helpful. However, it really wouldn't be too exciting, you'd just see the printer start up, and in the case when the expansion board config file lacks the line M906 I90 the z stage would drop... I have the cracks in some plastic parts at the bottom of the printer to prove it 😄 Anyway, let me know if there is anything else I can do to help!

                                      droftartsundefined 1 Reply Last reply Reply Quote 0
                                      • droftartsundefined
                                        droftarts administrators @mike_b
                                        last edited by

                                        @mike_b Okay, from your screenshot you're running in SBC mode:

                                        25041d3c-32e1-46c1-b0b9-a30f488074d4-image.png

                                        I'll check with @chrishamm, as it is clearly working in 3.5.3 in standalone mode.

                                        Ian

                                        Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

                                        mike_bundefined 1 Reply Last reply Reply Quote 0
                                        • mike_bundefined
                                          mike_b @droftarts
                                          last edited by

                                          @droftarts yup, running in SBC mode. Is our current running hypothesis that this could be an SBC-related issue? If so, would you like me to test without SBC mode on my end?

                                          droftartsundefined 1 Reply Last reply Reply Quote 0
                                          • droftartsundefined
                                            droftarts administrators @mike_b
                                            last edited by

                                            @mike_b said in Motor current idle factor not working over canbus?:

                                            Is our current running hypothesis that this could be an SBC-related issue? If so, would you like me to test without SBC mode on my end?

                                            Please do, if you're happy to. I'm confident it's working in standalone, just need @chrishamm to check if/why it's happening in SBC mode.

                                            Ian

                                            Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

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