Questions about M584



  • Hi,

    I have a DuetWiFi/Duex5 equipped printer with three Z axis steppers for auto-leveling using G32. The basic M584 looked like X0 Y1 Z5:6:7 E3

    But then I wanted to be able to jog each Z stepper manually when they got too far out of sync for G32 to correct them - at least it seemed to be reporting that it couldn't correct them.

    In any case I changed the drive mapping to M584 X0 Y1 Z5:6:7 E3 A5 B6 C7 and that got me the jog controls I wanted in DWC and they did indeed control the individual Z steppers.

    So here are two questions:

    1 - A single Z stepper would normally have been assigned to drive 2. Do I have to make some sort of entry in M584 for drive 2 to "disconnect" it from Z?

    2 - Does the firmware pick up the settings for things like steps/mm and current from Z5:6:7 and apply them to A,B,C or must I enter them explicitly into config.g?

    Thanks much.

    Frederick



    1. While the default assignment is X0 Y1 Z2 E3:4:5:6:7:8:9 in Duet + Duex, I think the first note in M584 is mainly about extruders assignment. ie You need to explicitly define the extruders if you are using one of the default extruders for another axis. Which you have done. I'm not sure how you can define the default Z drive to 'null', or even if you need to.

    2. I think it will use the default for the A, B and C axes, not pick them up from the Z. I tested this a few weeks ago, and I seem to remember that's what it does; I have a dual Z on my Cartesian machine, and mistakenly put the M584 X0 Y1 Z2:4 E3 after the motor settings, so while it set the steps per mm and other motor settings for one Z motor, it didn't for the other!

    @dc42 asked me to add this note in many of the gcode motor settings:

    RepRapFirmware does not support individual motor settings where an axis has multiple motors connected to different stepper drivers. The first parameter specified will be used for all motors on the axis. You should use identical motors on any axis that has more than one motor to avoid unexpected behaviour.

    Example: If you have two motors on your Z axis, physically connected to Z and E0 stepper drivers, configured with M584 Z2:3, set M92 Z80, not M92 Z80:80

    So your M92 (and other motors settings) would look something like:
    M92 X80 Y80 Z400 E350 A400 B400 C400

    As you have M584 X0 Y1 Z5:6:7 E3 A5 B6 C7 you probably want P4 on the end, to hide the A, B and C axes, or they will not be homed with the rest of the machine. Then 'enable' them, with M584 with no P value, in a macro to separately move/home them. There's this guide: https://duet3d.dozuki.com/Guide/Independent+Z+motors+and+endstop+switches/18

    Ian

    Ian



  • @droftarts

    Thank you, Ian

    That was clear and most helpful.

    I will visit the reference you provided and see what more I can learn.

    Frederick



  • @fcwilt said in Questions about M584:

    But then I wanted to be able to jog each Z stepper manually when they got too far out of sync for G32 to correct them - at least it seemed to be reporting that it couldn't correct them.

    you can increase the max correction settings using the M671 S parameter.

    @fcwilt said in Questions about M584:

    single Z stepper would normally have been assigned to drive 2. Do I have to make some sort of entry in M584 for drive 2 to "disconnect" it from Z?

    M584 X0 Y1 Z5:6:7 E3 A5 B6 C7 This unassigns the 2 Stepper from Z.
    you could also just define the 2 as a second extruder driver. if you do not assign it to a tool, it would not cause any problems


Log in to reply