Y axis moving when trying to move Z axis with multiple Z motors

  • Problem Encountered:
    With the current configuration settings the X and Y axis move as expected but when attempting to move the Z axis two of the four Z axis motors turn as well as both Y axis motors. This results in the printer moving in the Y axis and one half of the Z axis moving.

    Notable things regarding the issue:
    The Y axis motion is done at the Z steps per mm rate resulting in longer Y motion than would be expected
    With the current configuration the two Z motors that move are the left side motors
    Test commands were G91 followed by G1 H2 Z1 F100, this resulted in about 1mm of movement from one half of the Z axis and about 50mm of movement on the Y axis

    Machine hardware:
    6HC and 3HC expansion boards
    1 X Axis motor on the 3HC expansion board
    2 Extruder motors on the 3HC using seperate drivers
    2 Y Axis motors on the 6HC using separate drivers
    4 Z Axis motors on the 6HC using separate drivers

    Machine Software:
    RepRap Firmware 3.0RC1

    Current drive setup section of config.g

    ; Drives
    M569 P0 S1								; YR Rightside Y motor
    M569 P1 S0								; YL Leftside Y motor (needs inverted motion motor is flipped)
    M569 P2 S1								; ZL1 Leftside Front Z motor
    M569 P3 S1								; ZL2 Leftside Back Z motor
    M569 P4 S1								; ZR1 Rightside Front Z motor
    M569 P5 S1								; ZR2 Rightside Back Z motor
    M569 P1.0 S1								; X1 X Axis motor on Expansion Board 1
    M569 P1.1 S1								; E1 Extruder 1 motor on Expansion Board 1
    M569 P1.2 S1								; E2 Extruder 2 motor on Expansion Board 2
    M584 X1.0 Y0.0:0.1 Z0.2:0.3:0.4:0.5 E1.1:1.2			; Drive map (X Axis motor 0 on 3HC) (Y Axis Motors 0 and 1 on 6HC) (Z Axis Motors 2,3,4,5 on 6HC) (Extruders on motor 1,2 on 3HC)
    M350 X16 Y16 Z16 E16 I1                 			; Microstepping (Leave alone)
    M92 X80.00 Y80.00 Z4000.00 E420.00      			; Steps per mm (Requires calibration)
    M566 X100.00 Y50.00 Z10.00 E120.00     				; Max speed changes
    M203 X15000.00 Y10000.00 Z100.00 E1200.00 			; Max speeds (DO NOT INCREASE)
    M201 X500.00 Y250.00 Z20.00 E250.00     			; Max Acceleration (DO NOT INCREASE)
    M906 X3800 Y3800 Z1500 E700 I30            			; Motor Current (X and Y 3.8 Amps, Z 1.5 Amps, Extruders .7 Amps)
    M84 S30                                 			; Set idle timeout

  • Check all the motor connectors. I ran into a similar issues. I couldn't get a handle on it until I discovered that one pin in one of the connectors was melting. I had been using dupont connectors. These connectors are not robust enough and I have since changed them all out. If you have a single wire or more that are not making connection you will experience what you are describing even if the motor is not on the axis that you are having problem with.

  • Wont be back at the workshop until after Christmas, but I just rebuilt the setup the printer in question is running using parts I had on hand at home. This way I can continue trying to figure out what is going on.

    This is running the exact same config.g as the machine at the workshop (I just downloaded the one from my post above) and exhibits the same problem. Since both setups are showing the same problem using completely different hardware I think that likely rules out connections as the problem.

    The motors on their sides represent the Y axis motors, the 4 vertical motors are the Z axis motors with green and blue tape marking left and right sides of the machine.

    Sending G1 H2 Y50 F5000 twice with a pause between

    Sending G1 H2 Z1 F100 twice with a pause between

  • @HWW Nothing much leaps out at me from your config.g but as a long shot, try explicitly setting the board number for the main board drivers. What I mean is instead of M569 P0 S1, M569 P1 S0, M569 P2 S1 etc, use M569 P0.0 S1, M569 P0.1 S0, M569 P0.2 S1 etc....

    (Looking at your motor currents and axes lengths, that's a big machine!).

    Edit. Also try moving your M584 to before all those M569 commands.

  • @deckingman Gave all your suggestions a shot and nothing changed in the way it operated.

    Tried out a couple of different configurations as well just to see what kind of other behaviors would come out of it.

    Same setup as in my images above but with a different drive mapping. I defined all of what should be the Z motors as the Y axis and the Y motors on the Z axis.

    M584 X1.0 Y0.2:0.3:0.4:0.5 Z0.0:0.1 E1.1:1.2

    With this mapping the four vertical motors spun as expected when given Y movement commands, when a Z movement was given only two motors would run but it was two of the vertical motors (the two that would run were the motors matching the 0.2 and 0.3 in the Y section of the mapping)

    Trying a different test using the same mapping as in my original config but changing the order of the motors in the Z section of the drive map by reversing like so

    M584 X1.0 Y0.0:0.1 Z0.5:0.4:0.3:0.2 E1.1:1.2

    Behaves exactly how I suspected it might and results in the motors with the blue tape turning instead of the ones with the green tape, along with of course the two motors on their sides.

    I suspect that it really is something going on with the firmware but I do not know how to confirm or fix it.

  • @HWW said in Y axis moving when trying to move Z axis with multiple Z motors:

    I suspect that it really is something going on with the firmware but I do not know how to confirm or fix it.

    I'm leaning towards the opinion that you may be right and that it might be a firmware issue, but I'm just an end user like you. I am using 13 stepper drivers spread across the main board and 3 expansion boards but only a single Z motor, so I'm unable to replicate your set up. Hopefully David, @DC42 will step in soon with some suggestions or comments.

  • Moderator

    What firmware is installed on the expansion board? Send M115 B1


  • @HWW Just another suggestion but does it make any difference if you omit the H2 parameter? You'll need to use M564 H0 to allow moves prior to homing.

  • @droftarts Both the main board with M115 and the expansion with M115 B1 report back with Firmware 3.0RC1

    @deckingman Using M564 H0 and omiting the H2 parameter from the G1 commands results in the same movements, so no difference there.

  • Dont know why I didnt think of this before using the M584 command on its own spits out the drive mapping in the console. I never got around to actually testing the extruders but looks like those are mapped wrong as well. You can see in this photo I tried entering the M584 with the mapping command as well and the report after is also screwed up.

    2019-12-21 14.18.50Sml.jpg

    The first info from the M584 shows 0.0 and 0.1 mapped into the first two spots on the z axis followed by 0.5 and 0.4 this is using the last config line I was using which was "M584 X1.0 Y0.0:0.1 Z0.5:0.4:0.3:0.2 E1.1:1.2"

    Then in the console I tried entering my original config of "M584 X1.0 Y0.0:0.1 Z0.2:0.3:0.4:0.5 E1.1:1.2" and it again results in 0.0 and 0.1 in the first two spots with 0.2 and 0.3 filling the last two.

    And in both cases the extruders are mapped to 0.0 and 0.1 which I never noticed before as well

  • Moderator

    Try defining those connected to main board without 0. on front.


  • @droftarts No change in the result from removing the explicit board number, I also went ahead and threw in my other test of assigning all the Z motors to the Y axis to confirm that entering the mapping into the console was changing things and you can see the strange result from that as well. The Y axis is mapped correctly but both Z and E are incorrect.

    2019-12-21 14.31.52sml.jpg

  • Moderator

    Can you try mapping all drives individually in order, eg
    M584 X0.0 Y0.1 Z0.2 U0.3 V0.4 W0.5 A1.0 B1.1 C1.2 P9
    And see what it reports?

    The only other thing I notice is that in the RRF 3 overview notes, a comma is used to delimit the second board. Might be a typo, though? https://duet3d.dozuki.com/Wiki/RepRapFirmware_3_overview#Section_M584


  • @droftarts Assigning them all individually like that they mapped correctly, the drive map report matched the mapping command.

    I played around with it a bit more and I think whats happening has something to do with having multiple motors on two axis

    I tried M584 X0.0 Y0.1:0.2 Z0.3 U0.4 V0.5 W1.0 A1.1 B1.2 P8 and that mapped correctly

    However when I tried M584 X0.0 Y0.1:0.2 Z0.3:0.4 U0.5 V1.0 W1.1 A1.2 P7

    the resulting map was X0.0 Y0.1:0.2 Z0.1:0.2 U0.5 V1.0 W1.1 A1.2

    Also in all cases the extruders were mapped to 0:0 and 0:1 which I think is a default value since no E parameter was in the mapping

    2019-12-21 17.52.40sml.jpg

  • Yeah look at this one
    2019-12-21 17.59.07sml.jpg

    M584 X0.0:0.1 Y0.2:0.3 Z0.4:0.5 E1.0:1.1

    results in a reported drive map of
    X0.0:0.1 Y0.0:0.1 Z0.0:0.1 E0.0:0.1

  • Yep. I just tried two axis with two motors each. Reproduced the issue.

    12/21/2019, 7:02:51 PM	M584 X0.0 Y0.1:0.3 Z0.4:0.5 U0.2 E0.3:0.4
    12/21/2019, 7:02:58 PM	M584
    Driver assignments: X0.0 Y0.1:0.3 Z0.1:0.3 U0.2 E0.1:0.3, 4 axes visible

    Z should be 4 5, instead it is repeat of Y's 1 3. E is wrong as well, again, a repeat of 1 3

    Interestingly enough, it is OK to have multiple motors on Z and E. This is my day-to-day configuration on a tool changer:

    12/21/2019, 7:06:11 PM	M584
    Driver assignments: X0.0 Y0.1 Z0.3:0.4:0.5 U0.2 E1.0:1.1, 4 axes visible

  • Moderator

    So, bug? One for @dc42? Thanks for getting to the bottom of it!


  • Certainly looks like a bug.

    And I'm running what I believe to be the very latest:

    Board: Duet 3 MB6HC (MB6HC)
    DSF Version:
    Firmware: RepRapFirmware for Duet 3 MB6HC v0.6 or 1.0 3.0beta12+1 (2019-12-02b2)

  • Same thing happens if X has more than one motor, it "overlays" all later multimotor axis mappings.

    12/21/2019, 7:12:02 PM	M584 X0.0:0.3 Y0.1 Z0.4:0.5 U0.2 E1.0:1.1
    12/21/2019, 7:12:08 PM	M584
    Driver assignments: X0.0:0.3 Y0.1 Z0.0:0.3 U0.2 E0.0:0.3, 4 axes visible

    TRIPLE motor Z seems to work fine:

    12/21/2019, 7:13:29 PM	M584 X0.0 Y0.1 Z0.3:0.4:0.5 U0.2 E1.0:1.1
    12/21/2019, 7:13:42 PM	M584
    Driver assignments: X0.0 Y0.1 Z0.3:0.4:0.5 U0.2 E0.3:0.4, 4 axes visible

    However, DUAL motor Z overlays E:

    12/21/2019, 7:14:39 PM	M584 X0.0 Y0.1 Z0.4:0.5 U0.2 E1.0:1.1
    12/21/2019, 7:14:45 PM	M584
    Driver assignments: X0.0 Y0.1 Z0.4:0.5 U0.2 E0.4:0.5, 4 axes visible

  • @Danal Triple motor Z also overwrote the E mapping

    My best guess is that whatever values are getting used for multi motor mapping are not reset or filled or something between cycles of the code loop running

  • Yep, and it looks like it is the "single line parser" loop. Specifying each axis on a separate line yields proper results. For example, with this sequence, E never gets overlaid:

    12/21/2019, 7:17:40 PM	M584
    Driver assignments: X0.0 Y0.1 Z0.3:0.4:0.5 U0.2 E1.0:1.1, 4 axes visible
    12/21/2019, 7:17:45 PM	M584 X0.0
    12/21/2019, 7:17:58 PM	M584 Y0.1:0.3
    12/21/2019, 7:18:16 PM	M584
    Driver assignments: X0.0 Y0.1:0.3 Z0.3:0.4:0.5 U0.2 E1.0:1.1, 4 axes visible
    12/21/2019, 7:18:34 PM	M584 Z0.4:0.5
    12/21/2019, 7:18:41 PM	M584
    Driver assignments: X0.0 Y0.1:0.3 Z0.4:0.5 U0.2 E1.0:1.1, 4 axes visible
    12/21/2019, 7:18:54 PM	M584 E1.0:1.1
    12/21/2019, 7:18:59 PM	M584
    Driver assignments: X0.0 Y0.1:0.3 Z0.4:0.5 U0.2 E1.0:1.1, 4 axes visible

    This also provides a bypass until this is fixed.

  • @Danal A workaround solution until things get a proper fix!! Fantastic. I was just about to ask what your day to day config looks like since in the example from before it E got overwritten but you had a working readout from your day to day.

  • @HWW said in Y axis moving when trying to move Z axis with multiple Z motors:

    @Danal Triple motor Z also overwrote the E mapping

    You are correct!!!

    And I just looked in my actual config.g, and I'd separated the extruders because this is a toolchanger and I'm adding tools one at a time:

    ; Axis to driver mapping
    M584 X0 Y1 U2 Z3:4:5        ; X and Y for CoreXY.  U for toolchanger lock. Z has three drivers for kinematic bed suspension. 
    M584 E1.0:1.1               ; Extruders for four tools. 

    Man, a bullet dodged a few weeks back. That would have been VERY frustrating when I was trying to figure out a bunch of other stuff as well...!

  • I have added this as an issue to the github tracker

  • administrators

    @HWW said in Y axis moving when trying to move Z axis with multiple Z motors:

    I have added this as an issue to the github tracker

    It's probably a DSF issue not a RRF issue, because it doesn't happen when the Duet 3 is run in standalone mode.

Log in to reply