Reassigning all drivers to a single axis



  • I have just set up a Duet 3 6HC in standalone mode with 6 Nema 23 steppers. I want to assign all 6 on board drivers to a single axis (I have been attempting to use the X axis but Im not concerned which I use). When I use M584 in my config file, if I assign drivers 0.0 to 0.5 to the X axis, only 0.0 runs when I prompt a move in the X axis. If I assign 0.1 to 0.5 to X, all drivers run except for 0.0. Am I missing something that is required, is it necessary to assign a driver to each axis or something similar? I have appended my config file for reference. Thanks in advance for any help.

    ; Configuration file for Duet 3 (firmware version 3)
    ; executed by the firmware on start-up
    ;
    ; generated by RepRapFirmware Configuration Tool v3.1.4 on Tue Oct 27 2020 14:34:47 GMT+0000 (Greenwich Mean Time)

    ; General preferences
    G90 ; send absolute coordinates...
    M83 ; ...but relative extruder moves
    M550 P"Project SL" ; set printer name

    ; Network
    M552 P192.168.1.11 S1 ; enable network and acquire dynamic address via DHCP
    M586 P0 S1 ; enable HTTP
    M586 P1 S0 ; disable FTP
    M586 P2 S0 ; disable Telnet

    ; Drives
    M569 P0.0 S1 ; physical drive 0.0 goes forwards
    M569 P0.1 S1 ; physical drive 0.1 goes forwards
    M569 P0.2 S1 ; physical drive 0.2 goes forwards
    M569 P0.3 S1 ; physical drive 0.3 goes forwards
    M569 P0.4 S1 ; physical drive 0.4 goes forwards
    M569 P0.5 S1 ; physical drive 0.5 goes forwards
    M584 X0.1:0.2:0.3:0.4:0.5 ; set drive mapping
    M350 X16 I1 ; configure microstepping with interpolation
    M92 X80.00 ; set steps per mm
    M566 X900.00 ; set maximum instantaneous speed changes (mm/min)
    M203 X6000.00 ; set maximum speeds (mm/min)
    M201 X500.00 ; set accelerations (mm/s^2)
    M906 X700 Y700 Z700 E700:700:700 I30 ; set motor currents (mA) and motor idle factor in per cent
    M84 S30 ; Set idle timeout

    ; Axis Limits
    M208 X0 Y0 Z0 S1 ; set axis minima
    M208 X230 Y210 Z200 S0 ; set axis maxima

    ; Endstops
    M574 X1 S1 ;

    ; Z-Probe
    M558 P0 H5 F120 T6000 ; disable Z probe but set dive height, probe speed and travel speed
    M557 X15:215 Y15:195 S20 ; define mesh grid

    ; Fans
    M950 F0 C"out3" Q500 ; create fan 0 on pin out3 and set its frequency
    M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off
    M950 F1 C"out4" Q500 ; create fan 1 on pin out4 and set its frequency
    M106 P1 S1 H1 T45 ; set fan 1 value. Thermostatic control is turned on

    ; Tools
    M563 P0 D0 H1 F0 ; define tool 0
    G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets
    G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C

    ; Custom settings are not defined



  • @tomlj That's an odd one. Perhaps there is something embedded deep in the firmware which means that at least 2 axes have to be defined? Dunno- just a guess. But how about creating another axis like this....

    M584 X0.0 Y0.1 Z0.2 U0.0:0.1:0.2:0.3:0.4:0.5 P4

    This will mean that any G1 X Y or Z move will work as normal but a a G1 U move should run all 6 motors. The "P4" is necessary to make the U axis visible and to be able to control it.

    Give that a try and let us know how it goes.



  • @deckingman Thank you for the suggestion. If I add the line as suggested then the U axis doesnt even show up on DWC, and sending a G1 U** move doesnt work. However, if I remove any one of the drives from the list for the U axis(i.e 0.0) then it does show up, and runs the assigned five motors as before. The X,Y,Z moves work as normal as you said, do you think its fair to assume this is a firmware flaw of some sort? Thanks again.


  • administrators

    The maximum number of drivers per axis is currently 5. You will get an error message if you try to assign size drivers to one axis. To see errors from commands in config.g, run M98 P"config.g".

    I can increase it to 6 on Duet 3 if you like.



  • @dc42 Though I'm sure its low on any of your to-do lists, it would be greatly appreciated if you could increase the max to 6 in a future update!


  • Moderator

    May I ask why you need all 6 drivers on a single axis?



  • @Phaedrux this is part of a grant-funded feasibility study for a new technology that is being developed. It requires 6 Nema 23 motors (about which I believe you assisted with my other question on power supply sizing) to run synchronously on a global radial hub with stall detection and reasonably high current per driver. The Duet 3 is capable of this and is really good value compared to alternatives, and I have been an avid proponent of the Duet series for a number of years in most applications that require stepper control. I would rather have all drivers on one axis to avoid a situation where, most likely by accident, motors are working against others that are in a locked state, which could damage the mechanism.


  • Moderator

    Interesting. I hope you'll be able to share more specifics when it's up and running.



  • @Phaedrux unfortunately there is a media embargo on the specifics of the project currently, but we will undoubtedly share more news when permitted!



  • @tomlj Another possibility that might work, depending on your requirements, would be to create a tool with 6 extruders and use an extruder move to drive them. Something like this

    M563 P0 S"6 Drives" D0:1:2:3:4:5 H1 ;

    Not sure if you'd be forced to assign a heater as well- maybe not. But in any case, use M302 to allow cold extrude.

    Then you'd need to set the mixing ratio e.g.
    M567 P0 E1.00:1.00:1.00:1.00:1.00:1.00 ; set mixing ratio to 100% for every extruder

    Then a G1 Enn Fnn should drive all 6 motors concurrently. I know this is possible because I happen to have a machine with 6 extruders feeding a 6 input mixing hot end.


  • administrators

    @tomlj said in Reassigning all drivers to a single axis:

    @dc42 Though I'm sure its low on any of your to-do lists, it would be greatly appreciated if you could increase the max to 6 in a future update!

    It's a one-character change so I've already done it.


Log in to reply