Problem with external stepper drivers

  • Hello
    i am newbie in Duet and i am really impress with everything.
    I am user advanced with Arduino2560 and marlin firmware but i see than somethings in the Duet are really better and different.

    Today i finish to wiring the DuetWifi&Expansion breakout board with last stable firmware 1.20
    I use external stepper drivers for XYZ axis and i connect in E2/E3/E4 Motor.
    I test the steppers and if i move +/-1 or +/-10 is correct but when move +/-100 the movement start(first 20-30mm) well but after the stepper do wrong noise and move slow and clogged until the movement finish.
    I try to reduce jerk but not solved, i reduce acceleration and if i use weird acceleration like 1 or 2 mm/s is ok, but of course the movement have really slow acceleration.

    I try to configure M569 with the value T2 but i don't find solution
    My external stepper driver say: Pulse width:>2.5us.
    I attach a photo

    I want comment than with marlin and 2560 i don't have problems with this external stepper driver.
    I am sure than is a problem of my config, i am newbie maybe i forget config something.

    Thanks for the help

  • administrators

    It sounds to me that your T parameter is still too low. Try T5. Also check that you have the correct driver numbers in the M569 commands.

  • Tested with T5 and T10, nothing change, the problem continue
    Problem happen in X Y and Z

  • administrators

    Please provide a link to the datasheet for those drivers. Also post your config.g file.

  • Datasheet:


    ; Configuration file for Duet WiFi (firmware version 1.20 or newer)
    ; executed by the firmware on start-up
    ; generated by RepRapFirmware Configuration Tool on Wed Mar 14 2018 18:47:26 GMT+0100 (CET)
    ; General preferences
    G90                                                                            ; Send absolute coordinates...
    M83                                                                            ; ...but relative extruder moves
    ; Network
    M550 PMyPrinterName                                              ; Set machine name
    M552 S1                                                                        ; Enable network
    M587 S"CNC" P"JJ393267652NHHJHJHHK" I192.168.2.202 J192.168.2.1 K255.255.255.0 ; Configure access point and IP addresses. You can delete this line once connected
    M586 P0 S1                                                                     ; Enable HTTP
    M586 P1 S0                                                                     ; Disable FTP
    M586 P2 S0                                                                     ; Disable Telnet
    ; Drives
    M569 P0 S1 T2                                                                    ; Drive 0 goes forwards
    M569 P1 S1 T2                                                                     ; Drive 1 goes forwards
    M569 P2 S1 T2                                                                     ; Drive 2 goes forwards
    M569 P3 S0                                                                     ; Drive 3 goes backwards
    M569 P4 S1                                                                     ; Drive 4 goes forwards
    M584 X7 Y6 Z5 E3:4                                                             ; Apply custom drive mapping
    M350 X16 Y16 Z16 E16:16 I0                                                     ; Configure microstepping without interpolation
    M92 X160 Y160 Z320 E504:504                                                    ; Set steps per mm
    M566 X60 Y60 Z18 E120:120                                                      ; Set maximum instantaneous speed changes (mm/min)
    M203 X4500 Y4500 Z1500 E6000:6000                                              ; Set maximum speeds (mm/min)
    M201 X100 Y100 Z100 E1000:1000                                                 ; Set accelerations (mm/s^2)
    M906 X800 Y800 Z800 E1000:1000                                                 ; Set motor currents (mA)
    M84 S0                                                                         ; Disable motor idle current reduction
    ; Axis Limits
    M208 X0 Y0 Z0 S1                                                               ; Set axis minima
    M208 X1150 Y800 Z500 S0                                                        ; Set axis maxima
    ; Endstops
    M574 X1 Y1 S0                                                                  ; Set active low endstops
    M558 P0 H5 F120 T6000                                                          ; Disable Z probe but set dive height, probe speed and travel speed
    M557 X15:1085 Y15:785 S20                                                      ; Define mesh grid
    ; Heaters
    M305 P0 T100000 B4725 C7.060000e-8 R4700                                       ; Set thermistor + ADC parameters for heater 0
    M143 H0 S300                                                                   ; Set temperature limit for heater 0 to 300C
    M305 P1 X150                                                                   ; Configure thermocouple for heater 1
    M143 H1 S300                                                                   ; Set temperature limit for heater 1 to 300C
    ; Fans
    M106 P0 S0.1 I0 F500 H-1                                                       ; Set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off
    M106 P1 S0.5 I0 F500 H T45                                                     ; Set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on
    M106 P2 S0.5 I0 F500 H T45                                                     ; Set fan 2 value, PWM signal inversion and frequency. Thermostatic control is turned on
    ; Tools
    M563 P0 D0 H1                                                                  ; 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
    M563 P1 D1 H1                                                                  ; Define tool 1
    G10 P1 X0 Y0 Z0                                                                ; Set tool 1 axis offsets
    G10 P1 R0 S0                                                                   ; Set initial tool 1 active and standby temperatures to 0C
    ; Automatic saving after power loss is not enabled
    ; Custom settings are not configured
    ; Miscellaneous
    I see than you do some changes in the 1.21RC for external stepper drivers, maybe is for this?
    I use 1.20.

  • Tested in 1.21RC4 and happen the same

  • administrators

    You have the driver numbers as 0, 1, 2 in your first three M569 commands, so the T2 parameter is being applied to the internal drivers, not the external drivers. Your M584 command maps XYZ to drivers 7, 6 and 5. So the P parameters in those M569 commands need to be 5, 6 and 7 not 0, 1 and 2.

  • Tested and works!!!
    Two questions:

    • My correct value is supposed than is T2.5? or biggest?
    • Is working…. Taa:bb:cc:dd?? (you say: planned for a future firmware version)

  • One thing….
    Axis X and Y works perfect, but Z not.
    Axi Z have same stepper driver but.
    My table is moved for 4 stepper, each stepper use one driver.
    The four drivers is connected to E4 output PUL/DIR.
    Perhaps is for this?

  • administrators

    Your drivers require a 5us setup time from DIR changing to the leading edge of STEP, so it would be best to use T5 at present.

    The Taa:bb:cc:dd syntax is implemented in firmware 1.21RC5 which I hope to release tomorrow, perhaps even tonight. Then you should be able to use T2.5:2.5:5:0.

  • You are true, tested with 5 and is ok, tested with 10 and is ok.
    What will be the difference between use 5 or 10?

    Thanks for everything.

  • administrators

    The higher the T value you use, the lower the maximum step rate will be and the more CPU time it will use in generating step pulses. This may affect the maximum microstepping that you can set those drivers to.

  • Only want question more (sorry but this discuss is really interesting….)
    -What Steps/rev you advise? 1600-3200... or that?

  • administrators

    3200 or 6400 would be typical values. The limiting factor is the step pulse rate at the highest speed that you want the motors to move.

  • With the new RC5 is necessary totally configure the M569,
    so the correct is T2.5:2.5:5:0? (like you say in the old post)

    Minimum driver step pulse width: 2.5
    Step pulse interval: 2.5
    Direction setup time: 5
    Direction hold time: 0

    Regard to the draw of my external stepper driver:


    I think than the correct is:
    Minimum driver step pulse width: 2
    Step pulse interval: 5
    Direction setup time: 1
    Direction hold time: 1

  • administrators

    That diagram doesn't give the minimum step interval, so you need to work it out from the maximum step rate quoted on the data sheet. The second T parameter is the minimum interval between the end of one step pulse and the start of the next.

  • So, You advise me use this:

    Minimum driver step pulse width: 2.5
    Step pulse interval: 2.5
    Direction setup time: 5
    Direction hold time: 0


  • administrators

    If the maximum step pulse rate is 200kHz, then yes.

Log in to reply