Using 12 Independent Axes

  • I'm new to using RepRapFirmware and the duet boards so I'm sure there is an easy solution but I don't know what it is.

    I am using the boards as a prototype platform to drive 12 motors independent of each other. To do this I have the Duet2 wifi, Duet 5 expansion board, and 2 external drivers attached to the CONN_LCD connector.

    I tested all my connections and am able to drive my motors from each of my 12 drivers but for the current firmware, the documentation says the M584 command only supports XYZUVWABCD which gives me 10 axes. My question is what can I do to independently drive 2 more axes? I thought of using extruder drives but I'm not sure how to set those up to use limit switches to home each axis individually.

    Thank you for your help, I've included my config file below (I would like to change the CD axes to another letter to open up the CD axes to be the last 2 axes from the expansion board.

    My firmware versions are 3.1.1 for the duet and 1.24 for the PanelDue.

    M584 X0 Y1 Z2 U3 V4 W5 A6 B7 C10 D11
    M569 P0 S1                          ; Drive X goes forwards clockwise is down (change to S0 to reverse it)
    M569 P1 S1                          ; Drive Y goes forwards clockwise is down
    M569 P2 S0                          ; Drive Z goes forwards clockwise is down
    M569 P3 S0                          ; Drive U goes forwards clockwise is down
    M569 P4 S0                          ; Drive V goes forwards clockwise is down
    M569 P5 S0                          ; Drive W goes forwards clockwise is down
    M569 P6 S1                          ; Drive A goes forwards clockwise is down
    M569 P7 S1                          ; Drive B goes forwards clockwise is down
    M569 P10 S1 R0 T15:24:30:0          ; Drive C goes forwards clockwise is down
    M569 P11 S1 R0 T15:24:30:0          ; Drive D goes forwards clockwise is down
    ; set endstop configuration (0=none, 1=low, 2=high)
    M574 X2 S1 P"!xstop"
    M574 Y2 S1 P"!ystop"
    M574 Z2 S1 P"!zstop"
    M574 U2 S1 P"!e0STOP"
    M574 V2 S1 P"!e1STOP"
    M574 W2 S1 P"!duex.e2stop"
    M574 A2 S1 P"!duex.e3stop"
    M574 B2 S1 P"!duex.e4stop"
    M574 C2 S1 P"connlcd.enca"
    M574 D2 S1 P"connlcd.encb"
    M906 X2400 Y2400 Z2400 U2400 V2400 W2400 A2400 B2400 C1000 D1000           ; Set motor currents (mA)
    M92 X64 Y64 Z64 U64 V64 W64 A64 B64 C64 D64                                ; Set axis steps/mm
    M350 X16 Y16 Z16 U16 V16 W16 A16 B16 C16 D16                               ; Microstep
    M203 X5000 Y5000 Z5000 U5000 V5000 W5000 A5000 B5000 C50000 D50000         ; Maximum speeds (mm/min)
    M201 X50 Y50 Z50 U50 V50 W50 A50 B50 C500 D500                             ; Accelerations (mm/s^2)
    M566 X25 Y25 Z25 U25 V25 W25 A25 B25 C25 D25	                             ; Minimum speeds mm/minute
    M208 X7 Y7 Z7 U7 V7 W7 A7 B7 C10000 D10000                                 ; set axis maxima (adjust to suit your machine)
    M208 X0 Y0 Z0 U0 V0 W0 A0 B0 C0 D0 S1                                      ; set axis minimum (adjust to make X=0 and Y=0 the edge of the bed)

  • administrators

    You can use stall-detection to stop a G1 H1 move on an extruder drive. Will that be sufficient?

    I have work scheduled to increase the supported number of axes beyond 10.

  • @dc42 Thanks for your timely response. My current application is only moving the stepper motor about a quarter revolution and I can't get it to accurately use stall detection with such a small and slow movement so need to use limit switches on this design.

    The next rev of the design will be different and I will easily be able to use stall detection moving forward but in the meantime, I was wondering if there is a way to use limit switches so I can learn as much as possible from this current rev.

  • administrators

    You could use M584 and M574 to switch one of the axes between 3 motor/endstop pairs during homing.

  • @dc42 Brilliant! Thanks for your help

Log in to reply