Independent Y and Z Motors not working



  • M569 P5 S1                   ; physical drive 5 goes forwards
    M584 E0 X1 Y2:3 Z4:5             ; set drive mapping dual y on 2&3 + dual z on 4&5
    ;M584 E0 X1 Y3 Z5             ; new set up 050820 date
    M350 X16 Y16 Z16 I1            ; configure microstepping with interpolation
    

    On Duet3D 6HC. This results in:
    X motor on Driver 1 moves +/-
    Y 2 and 3 motors on Drivers 2 and 3 move +/-
    Z 4 and 5 motors not moving when commanded
    Yet the Y motors respond as if they were Z motors moving slowly +/-

    Tests follow:
    If M584 is set as E0 X1 Y3 Z5, then all these move +/- as commanded
    If M584 is set as E0 X1 Y2 Z4, then all these move +/- as commanded

    Some sort of motor "confusion"?



  • Maybe you also have to specify parameters for both drivers for the other configs like so

    ; Drives
    M569 P0 S1                   ; physical drive 0 goes forwards
    M569 P1 S1                   ; physical drive 1 goes forwards
    M569 P2 S1                   ; physical drive 2 goes forwards
    M569 P3 S1                   ; physical drive 3 goes forwards
    M569 P4 S1                   ; physical drive 4 goes forwards
    M569 P5 S1                   ; physical drive 5 goes forwards
    M584 E0 X1 Y2:3 Z4:5                  ; set drive mapping dual y on 2&3 + dual z on 4+5
    M350 X16 Y16:16 Z16:16 I1             ; configure microstepping with interpolation
    M92 X53.33 Y53.33:53.33 Z53.33:53.33  ; set steps per mm
    M566 X900 Y900:900 Z12:12             ; set maximum instantaneous speed changes (mm/min)
    M203 X6000 Y6000:6000 Z180:180        ; set maximum speeds (mm/min)
    M201 X500 Y5000:5000 Z20:20           ; set accelerations (mm/s^2)
    M906 X800 Y800:800 Z800:800 I30       ; set motor currents (mA) and motor idle factor in per cent
    M84 S30  
    

    or hopefully someone else will chime in.



  • Just tried this edit to config.g and got this error set in the console.

    5/8/2020, 12:04:50 PM 	Error: M350: Driver 2 does not support x0 microstepping with interpolation
    Driver 3 does not support x0 microstepping with interpolation
    Driver 2 does not support x0 microstepping with interpolation
    Driver 3 does not support x0 microstepping with interpolation
    


  • @bearer From wiki: 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



  • @Jim46 It's most likely the position of the M584 within your config.g file. It must come earlier than any M350 or M906 commands. I'm not sure if assigning additional motors to axes works the same as if you create new axes, but to be safe I'd suggest you put the M584 before any M92, M201, M203, M208, M350, M566, M574, M667 and M669 commands.

    Failing that, suggest you post your entire config.g.



  • Hi All, thanks for your help. In the following config.g set up... X1 motor runs well +/- Trying to run the Y or Z motors causes the Status to show busy for a long time. Nothing else works when busy.

    ; Configuration file for Duet 3 (firmware version 3)
    ; executed by the firmware on start-up
    ;System on 05/08/20
    ; generated by RepRapFirmware Configuration Tool v2.1.8 on Mon May 04 2020 10:26:28 GMT-0600 (Mountain Daylight Time)
     
    ; General preferences
    G90                            ; send absolute coordinates...
    M83                            ; ...but relative extruder moves
    M550 P"duet3"             ; set printer name
     
    ; Network
    M552 P0.0.0.0 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 S1                   ; physical drive 0 goes forwards
    M569 P1 S1                   ; physical drive 1 goes forwards
    M569 P2 S1                   ; physical drive 2 goes forwards
    M569 P3 S1                   ; physical drive 3 goes forwards
    M569 P4 S1                   ; physical drive 4 goes forwards
    M569 P5 S1                   ; physical drive 5 goes forwards
    M584 E0 X1 Y2:3 Z4:5                      ; set drive mapping dual y on 2&3 + dual z on 4+5
    M350 X16 Y16 Z16 I1                       ; configure microstepping with interpolation
    M92 X53.33 Y53.33:53.33 Z53.33:53.33 E400 ; set steps per mm
    M566 X900 Y900:900 Z12:12 E2000           ; set maximum instantaneous speed changes (mm/min)
    M203 X6000 Y6000:6000 Z180:180 E6000      ; set maximum speeds (mm/min)
    M201 X500 Y5000:5000 Z20:20 E3000         ; set accelerations (mm/s^2)
    M906 X800 Y800:800 Z800:800 I30           ; set motor currents (mA) and motor idle factor in per cent
    M84 S30                                   ; time out
    
     
    ; Axis Limits
    M208 X0 Y0 Z0 S1               ; set axis minima
    M208 X1000 Y1000 Z1000 S0      ; set axis maxima
     
    ; Endstops
    M574 X1 S1 P"io1.in"
    M574 Y1 S1 P"io2.in"
    M574 Z1 S1 P"io3.in"
     
    ; Z-Probe
    M558 P0 H5 F120 T6000          ; disable Z probe but set dive height, probe speed and travel speed
    M557 X0:1000 Y0:1000 S50       ; define mesh grid
     
    ; Heaters
     
    ; Fans
     
    ; Tools
     
    ; Custom settings are not defined
    M302 P1 ; allow cold extusion (clay is cold)
    

    Hope this helps,
    Jim


  • Moderator

    @Jim46 said in Independent Y and Z Motors not working:

    M92 X53.33 Y53.33:53.33 Z53.33:53.33 E400 ; set steps per mm M566 X900 Y900:900 Z12:12 E2000 ; set maximum instantaneous speed changes (mm/min) M203 X6000 Y6000:6000 Z180:180 E6000 ; set maximum speeds (mm/min) M201 X500 Y5000:5000 Z20:20 E3000 ; set accelerations (mm/s^2) M906 X800 Y800:800 Z800:800 I30 ; set motor currents (mA) and motor idle factor in per cent

    You only need one value for the Y and Z motors.

    Like this:

    M92 X53.33 Y53.33 Z53.33 E400 ; set steps per mm                                                                                                                                                                            
    M566 X900 Y900 Z12 E2000           ; set maximum instantaneous speed changes (mm/min)                                                                                                                                                                            
    M203 X6000 Y6000 Z180 E6000      ; set maximum speeds (mm/min)                                                                                                                                                                            
    M201 X500 Y5000 Z20 E3000         ; set accelerations (mm/s^2)                                                                                                                                                                            
    M906 X800 Y800 Z800 I30           ; set motor currents (mA) and motor idle factor in per cent
    


  • @Phaedrux said in Independent Y and Z Motors not working:

    You only need one value for the Y and Z motors.

    that was just a long shot from me, started out with just the one value which didnt't work either.



  • ; Configuration file for Duet 3 (firmware version 3)
    ; executed by the firmware on start-up
    ;System on 05/10/20
    ; generated by RepRapFirmware Configuration Tool v2.1.8 on Mon May 04 2020 10:26:28 GMT-0600 (Mountain Daylight Time)
     
    ; General preferences
    G90                            ; send absolute coordinates...
    M83                            ; ...but relative extruder moves
    M550 P"duet3"             ; set printer name
     
    ; Network
    M552 P0.0.0.0 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
    M584 E0 X1 Y2:3 Z4:5                      ; set drive mapping dual y on 2&3 + dual z on 4+5
    M569 P0 S1                   ; physical drive 0 goes forwards
    M569 P1 S1                   ; physical drive 1 goes forwards
    M569 P2 S1                   ; physical drive 2 goes forwards
    M569 P3 S1                   ; physical drive 3 goes forwards
    M569 P4 S1                   ; physical drive 4 goes forwards
    M569 P5 S1                   ; physical drive 5 goes forwards
    ;M584 E0 X1 Y2:3 Z4:5                      ; set drive mapping dual y on 2&3 + dual z on 4+5
    M350 X16 Y16 Z16 I1                        ; configure microstepping with interpolation
    M92 X53.33 Y53.33 Z53.33 E400              ; set steps per mm
    ;M92 X53.33 Y53.33:53.33 Z53.33:53.33 E400 ; set steps per mm
    M566 X900 Y900 Z12 E2000                   ; set maximum instantaneous speed changes (mm/min)
    M203 X6000 Y6000 Z180 E6000                ; set maximum speeds (mm/min)
    M201 X500 Y5000 Z20 E3000                  ; set accelerations (mm/s^2)
    M906 X800 Y800 Z800 I30                    ; set motor currents (mA) and motor idle factor in per cent
    M84 S30                                    ; time out
    
     
    ; Axis Limits
    M208 X0 Y0 Z0 S1               ; set axis minima
    M208 X1000 Y1000 Z1000 S0      ; set axis maxima
     
    ; Endstops
    M574 X1 S1 P"io1.in"
    M574 Y1 S1 P"io2.in"
    M574 Z1 S1 P"io3.in"
     
    ; Z-Probe
    M558 P0 H5 F120 T6000          ; disable Z probe but set dive height, probe speed and travel speed
    M557 X0:1000 Y0:1000 S50       ; define mesh grid
     
    ; Heaters
     
    ; Fans
     
    ; Tools
     
    ; Custom settings are not defined
    M302 P1 ; allow cold extusion (clay is cold)
    

    Hi Phaedrux,
    I made the changes you recommended and it improved the results,
    X motor moved +/- well
    Y motors moved +/- well
    Z motors when commanded did not move; however the Y motors moved slowly.
    Clearly not right, yet I can't see anything that causes this.
    Ideas?


  • Moderator

    @Jim46 said in Independent Y and Z Motors not working:

    M350 X16 Y16 Z16 I1 ; configure microstepping with interpolation

    You're missing E16 here.

    @Jim46 said in Independent Y and Z Motors not working:

    M906 X800 Y800 Z800 I30 ; set motor currents (mA) and motor idle factor in per cent

    You're also missing the motor current for E here.

    For your motor currents, target 60-85% of the motors rated value to ensure smooth clean motion. Are your Z motors different than the other motors? Do they require more current?

    How do you have the Z motors connected?

    If you connect the Z motors to other drivers, do the motors work then?

    If you connect the X and Y motor to the Z drivers, do they move then?



  • Hi Phaedrux,
    I made the M350 change, it now reads:
    M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation

    I'm running NEMA23 motors from OpenBuilds on all axes. They have, I think, a Rated Current DC 3.0A/Phase.
    https://openbuildspartstore.com/nema-23-stepper-motor-high-torque-series/
    Presently, on the Duet3D 1.0 board (connected to RPi4 using the Duet microSD card), the:
    X motor is on Driver 1
    Y motor 1 is on Driver 2
    Y motor 2 is on Driver 3
    Z motor 1 is on Driver 4
    Z motor 2 is on Driver 5

    In the single motor mode, I was successful moving all motors +/- using
    M584 E0 X1 Y2 Z4 as you see no Drive 3 and 5
    Then, I used this
    M584 E0 X1 Y3 Z5 as you see no Drive 2 and 4

    Yet when trying dual mapping

    M584 E0 X1 Y2:3 Z4:5 ; set drive mapping dual y on 2&3 + dual z on 4+5

    This is when the problem occurs of Y moving slowly when Z commands are sent.

    I switched the Y (was on Drives 2 & 3) and Z motors ( was on Drivers 4 &5) are now Y motors connected to Drivers 4 & 5, and Z motors connected to Drivers 2 & 3. The motors connected to Drivers 2 & 3 run +/- smoothly when a Y command is given. They also move +/- slowly when a Z command it given. The motors on Drivers 4 & 5 are not working when in dual mode. Yet, they work in single motor mode.
    Any more ideas? (is there something wrong with the board?)
    Jim


  • Moderator

    @Jim46 said in Independent Y and Z Motors not working:

    M906 X800 Y800 Z800 I30

    For those motors try increasing your motor currents a bit for testing.

    M906 X1600 Y1600 Z1600 E1600 I30 Which is 60% of their rated max. For normal operation you may want to increase that even further.

    I'm still a little confused on what there would be movement of the Z axis when you're commanding movement of the Y axis.

    Just to confirm, the motors are on the test bench and not actually installed in a printer kinematic yet, correct?

    How are you commanding movement of the motors?
    Are you running any homing macros yet?

    Can you send M584 in the console by itself and report back with what it says?

    Your M584 looks correct and it is early enough in your config.g The only thing that maybe sticks out to me is that the E letter assignment is first, when it would typically be last. So maybe try modifying it to be M584 X1 Y2:3 Z4:5 E0

    Can you also send M122 and report back with that as well?



  • Hello Phaedrux,
    Thanks for your suggestions.
    I updated the M906 and M584 as suggested.
    To clarify; I make commands from the Machine Movement table in the Dashboard.
    When I command the X motor on Driver 1 I get nice +/- movement.
    When I command, say the +50 on Y, the dual Y motors on Drivers 2 & 3 gives nice +/- movement.
    When I command, say the +25 on Z, the dual Z motors on Drivers 4 & 5 DOES NOT move the Z motors. However, the Y motors DO move as if they think they are the Z motors, that is, they move slowly. Again no Z motor movement in the dual motor mode.
    Yes, this is a bench set up where I am trying to determine if the motors move correctly when given a command.
    No Homing Macros yet. I don't know how to set those up so far.
    When I run M122 on the DashBoard, it gives a warning that the "response takes too long" and say see the Console. I open the Console and don't find an M122 event. Therefore, no information.
    I updated the RRF Config tool and added the changes recommended.
    Here it is,

    ; Configuration file for Duet 3 (firmware version 3)
    ; executed by the firmware on start-up
    ;
    ; generated by RepRapFirmware Configuration Tool v2.1.8 on Mon May 11 2020 13:56:00 GMT-0600 (Mountain Daylight Time)
    
    ; General preferences
    G90                            ; send absolute coordinates...
    M83                            ; ...but relative extruder moves
    M550 P"Duet 3"                 ; set printer name
    
    ; Network
    M552 P0.0.0.0 S1               ; enable network network and acquire dynamnic address via DHCP
    M586 P0 S1                     ; enable HTTP
    M586 P1 S0                     ; disable FTP
    M586 P2 S0                     ; disable Telnet
    
    
    
    ; Drives
    M584 X1 Y2:3 Z4:5 E0           ; set drive mapping, dual on Y drives 2&3 and Z drives on 4&5
    M569 P0 S1                     ; physical drive 0 goes forwards
    M569 P1 S1                     ; physical drive 1 goes forwards
    M569 P2 S1                     ; physical drive 2 goes forwards
    M569 P3 S1                     ; physicsl drive 3 goes forwards           
    M569 P4 S1                     ; physical drive 4 goes forwards
    M569 P5 S1                     ; physical drive 5 goes forwards
    
    M350 X16 Y16 Z16 E16 I1              ; configure microstepping with interpolation
    M92 X53.33 Y53.33 Z53.33 E400        ; set steps per mm
    M566 X900.00 Y900.00 Z12.00 E2000    ; set maximum instantaneous speed changes (mm/min)
    M203 X6000.00 Y6000.00 Z180.00 E6000 ; set maximum speeds (mm/min)
    M201 X500.00 Y500.00 Z20.00 E3000    ; set accelerations (mm/s^2)
    M906 X1600 Y1600 Z1600 E1600 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 X1000 Y1000 Z1000 S0      ; set axis maxima
    
    ; Endstops
    ; WARNING: No endstops configured
    
    ; Z-Probe
    M558 P0 H5 F120 T6000          ; disable Z probe but set dive height, probe speed and travel speed
    M557 X0:1000 Y0:1000 S50       ; define mesh grid
    
    ; Heaters
    
    ; Fans
    
    ; Tools
    
    ; Custom settings are not defined
    M302 P1                        ; allow cold extrusion (clay is cold)
    
    

    Thanks again, Jim



  • Hi Phaedrux,
    I forgot to report m the M584 command, I just did it and here are the result in the Console. The field is blue and the text reads:
    5/12/2020, 11:59:17 AM M584
    Driver assignments: X0.1 Y0.2:0.3 Z0.2:0.3 E0.0, 3 axes visible.
    That looks a little strange to me. Would it be X0.1 Y0.2:0.3 Z0.4:0.5 E0.0 ??? If this is so, how do you edit that?
    Also Side question. Can I use 53.3333 on Line 29 M92 Steps per mm?
    Thank you so much,
    Jim


  • Moderator

    Alright, that confirms my suspicion. At least that explains why Y is moving. I think we need to modify how your M584 is written. The way you have it currently works in RRF2, but in RRF3 we need to specify the board location of the drivers so that it knows if it's on the main board or on a tool board, etc.

    Try this

    M584 X0.1 Y0.2:0.3 Z0.4:0.5 E0.0
    

    The leading 0 identifies the main board. The number after the period is the driver number on that board.

    https://duet3d.dozuki.com/Wiki/Gcode#Section_M584_Set_drive_mapping

    In RRF_3, M584 works the same way as in RRF_2, with exception that on Duet 3 the driver on expansion boards are assigned with <board address>.<driver number>. Example:
    M584 X0 Y1 Z2 E3:4:1.0:1.1
    The "0" index for the main board is implicit, this is equivalent to the previous example:
    
    M584 X0.0 Y0.1 Z0.2 E0.3:0.4:1.0:1.1
    

    I should have clued into that sooner.

    @Jim46 said in Independent Y and Z Motors not working:

    Also Side question. Can I use 53.3333 on Line 29 M92 Steps per mm?

    Yes, decimal values are supported in Reprap firmware.



  • @Phaedrux said in Independent Y and Z Motors not working:

    The leading 0 identifies the main board. The number after the period is the driver number on that board.

    he had it like that initially and no drivers worked, removing the 0. resulted in some success. could be changed since RRF3.0 though.


  • Moderator

    @bearer Hmmm. I also thought it was implied for the main board with no leading board identifier, but the result of M584 in the console indicates that either the M584 in config.g is either not being applied or there is another M584 hiding out somewhere else.



  • Greetings,

    Up dated M584
    M584 X0.1 Y0.2:0.3 Z0.4:0.5 E0.0 ; set drive mapping, dual on Y drives 2&3 and Z drives on 4&5
    Ran M584 and came back in console with:
    5/12/2020, 3:18:04 PM M584
    Driver assignments: X0.1 Y0.2:0.3 Z0.2:0.3 E0.0, 3 axes visible.
    To your point, it looks like M584 is not updating the Z drives. How does one find a ghost version of M584? Or, could this be an issue in the firmware?
    It seems like we might be near an answer?
    jim



  • @Jim46 I don't see an M501 in your config.g so that rules out the possibility of it being config_overide.g. Try sending M98 P"config.g". This will run the config.g file again. Then send M584 again and report the result.


  • Moderator

    @Jim46 what version of RRF3 are you using? Send M115 and post reply. Earlier versions had an issue with defining more than one multiple motor axis in one M584 command. Try:

    M584 X1 Y2:3
    M584 Z4:5 E0
    

    Ian


Log in to reply