Duet & Reprap firmware is destroying my CR10s Z stepper motors

  • 0_1523640447064_steppers.PNG

  • @simonboydfoley You need to click on the link at the top right of that image to calculate steps per mm. It pops up a little window where you can enter the details of your system and it will give you the correct steps per mm to use.

  • Thanks for that spot @Phaedrux I didn't notice that doh!

    I went back and copied my settings from Marlin to the duet .

    I also checked out the wiring and it all buzzed out correctly.
    The Stepper motors have coils rated at 6.5 Ohms.

    The problem still exists. However checking other CR10 Users who have upgraded to the Duet they have also used the spare Extruder 4 driver for the second Z Stepper motor ! and then using a M584 to map them to the Z Axis

    This is a little worrying and would but a total fail for the Duet card if it cant manage a simple dual z axis setup.

    I've never calibrated stepper motors before so I'm still researching to find out what the problem is (phase issues / voltage / current).

    The current setting in reprap on the drivers is confusing but I understand that the duet calculates the resistance and then adjusts the voltage to achieve the desired current.


  • Not sure what caused the problem but I tested and then reconnected everything and reduced the current to 700mA and found this setting


    ; Drives
    M569 P0 S1 ; Drive 0 goes forwards
    M569 P1 S0 ; Drive 1 goes forwards
    M569 P2 S0 ; Drive 2 goes forwards
    M569 P3 S1 ; Drive 3 goes forwards
    M350 X16 Y16 Z16 E16 I1 ; Configure microstepping with interpolation
    M92 X80 Y80 Z399.29 E95 ; Set steps per mm
    M566 X900 Y900 Z24 E300 ; Set maximum instantaneous speed changes (mm/min)
    M203 X3000 Y3000 Z1000 E3000 ; Set maximum speeds (mm/min)
    M201 X1800 Y1800 Z20 E5000 ; Set accelerations (mm/s^2)
    M906 X700 Y700 Z700 E700 I30 ; Set motor currents (mA) and motor idle factor in per cent
    M84 S30 ; Set idle timeout

    ; Axis Limits
    M208 X0 Y0 Z-1.32 S1 ; Set axis minima
    M208 X300 Y285 Z400 S0 ; Set axis maxima

    ; Lead Screw Offsets
    M671 X-20.0:325.0 Y100.0:100.0 ; leadscrew offsets from home

  • Problem Solved:

    It was the current / voltage that was set too high by the reprap firmware configurator

    Set current from 800 to 700 and the problem was solved.

    I got this fix from a fellow CR10 to Duet converter;

    For fellow CR10S users these are the Marlin settings for the stock stepper motors;

    X Axis Motor: (4.5 Ohms) A= 525 mA
    y Axis Motor: (4.5 Ohms) A= 600 mA
    z Axis Motor: (6.5 Ohms) A= 675 mA
    e Extruder Motor: (4.5 Ohms) A=600mA

    Steps per mm:
    x = 80
    y = 80
    z = 400
    e = 95

    Max Feed Rate:
    x = 2500
    y = 2500
    z = 100
    e = 25

    Max Acceleration:
    x = 3000
    y = 3000
    z = 100
    e = 10000

    Micro Step:
    x = 16
    y = 16
    z = 16
    e = 16

    Default Jerk:
    x = 10
    y = 10
    z = 0.3
    e = 5

    Default Acceleration = 575
    Default Retraction Acceleration = 1000
    Default Travel Acceleration = 1000

    Note: RepRap descriptive language for Endstop location is really confusing for Marlin users ....

    "High Location" and "Low Location" does not refer to where the endstop is located relative to the 0,0 origin ..... it refers to where the "Nozzle Head" will be when the end stop is triggered regardless of where it is located. So for CR10 Users all end stops are "Low Location" even though the Y axis end stop is located at 300 end of the bed (this wasted days of troubleshooting!)

    ; Endstops
    M574 X1 Y1 Z1 S1 ; Set active high endstops

  • administrators

    When using high inductance low current motors like the ones on your CR10, the two Z motors should either be connected to separate driver outputs, or connected in parallel to just one of the Z driver outputs with jumpers fitted in the second Z driver output.

    Connecting the two Z motors in series, which is how the two Z motor connectors are wired on the Duet, works better for the low inductance higher current motors that are more commonly used in 3D printers.

  • administrators

    @simonboydfoley "Active" high and "Active" low refer to how the switch is wired. An "active high" end stop is a switch that is normally closed and opens when it is triggered. This is considered "safer" since if a switch wire were to disconnect or switch were to fail it would in theory open the circuit and cause the switch to trigger. This prevents you from finding out your endstop switch isn't connected as your carriage slams into the side, or the nozzle crashes into the bed.

    In terms of location, my Y end stop is at the 300 end of my bed too. I have my Y end stop configured as a "high end" location. My nozzle position after homing is (0, 300), so I am not sure what you meant there. One thing that did trip me up is that even if you re-configure the location of the end stop (say using the configurator) you have to edit (or replace) your home.g and homeall.g to tell the printer to home towards the high end for Y. I didn't do this at first and ended up being very confused as for a short while as well.

  • Thanks for taking the time to reply. I attach a diagram to explain the gotcha on RepRapFirmware setup for homing on a CR1O in case it helps other people converting from Marlin to RepRapFirmware;

    This is the only way I could get it working. I have made an assumption here that RepRap does not have a dependency on the physical wiring direction of the motor and that you can override this by setting the stepper motor direction. I tried reversing the direction of my stepper motor (M569 P1 S0) and setting the Y stepper motor to High Location ....(Y2) which is logical ... but it would not work and tried to home the printer at (0,300) not (0,0).

    So I deduce that Low Location and High Location does not refer to where the End Stop is located ... but where the Nozzle will be when the end stop is triggered.


  • @dc42 Thanks for this information. Very helpful.
    When I looked at the Duet specs I was content that both the Duet and the Melzi wire the Z Stepper motors in series ... So I did not think there would be an issue because I did not know stepper motors would be that different on a CR10 compared to other printer.

    It then confused me why people were not using the second series Z Stepper driver port on the card and using E1 Extruder driver instead.

    What would be better .... move Z2 to E1 or buy 2 low inductance Z stepper motors ?

  • administrators

    Yes the low end/high end refers to where the nozzle is when the endstop switch is triggered.

    If the E1 output is free than I suggest you connect the second stepper motor to E1, to avoid having to buy new motors. Then put M584 X0 Y1 Z2:4 E3 in config.g, before any M350 or M906 commands.


Looks like your connection to Duet3D was lost, please wait while we try to reconnect.