Y Axis loses steps on layer change. External Drivers.



  • Hi all,

    I could really use some help with an issue I am having. I just upgraded my printer to a duet wifi 2 and now when I print the Y-Axis is stepping over every layer change. Here is a picture of a simple text cube with 20% infill. can anyone tell my why this is happening or how to fix it?Screen Shot 2020-06-13 at 5.19.17 PM.png Screen Shot 2020-06-13 at 5.19.36 PM.png



  • @Cameron Can you please provide the information

    • which hardware do you use (which Duet board, what printer, printer type)
    • which firmware version
    • content of your config.g file, homing files maybe needed also
    • a picture of the printer would be helpful if it's a mechanical problem


  • @JoergS5 The Printer is a Large 1000x1000x1000 Chinese Printer That I Gutted and replaced all of the electrical components except for the motors and drivers. Here are a few Pictures of that: Screen Shot 2020-06-13 at 5.44.03 PM.png

    The I am using a Duet 2 Wifi with an expansion Breakout Board to control the Stepper Drivers. Those drivers and corresponding Motors are as follows:

    E0 - Leadshine DM556 Driver - unbranded Nema 17 48mm x2
    E1 - Leadshine DM556 Driver - unbranded Nema 17 48mm x2
    X -- Leadshine CL57 Driver ----- Leadshine Easy Servo Motor D57CME21
    Y -- Leadshine CL57 Driver ----- Leadshine Easy Servo Motor D57CME31
    Z -- Leadshine CL86 Driver ----- Leadshine Easy Servo Motor 86CME85

    (for the Extruders there are 2 of these motors one for the beginning of the bowden line and one for direct drive feed)

    This is my Current Config

    ; General preferences
    G90 ; send absolute coordinates...
    M83 ; ...but relative extruder moves
    M550 P"Huge Printer" ; set printer name

    ; Network
    M552 S1 ; enable network
    M586 P0 S1 ; enable HTTP
    M586 P1 S1 ; enable FTP
    M586 P2 S0 ; disable Telnet

    ; Drives
    ; Drives driver direction, enable polarity and step pulse timing

    ;-------------X MOTOR-----------
    M569 P7 S0 R1 T2.5:2.5:5:10
    ;-------------Y MOTOR-----------
    M569 P6 S0 R1 T2.5:2.5:5:10
    ;-------------Z MOTOR-----------
    M569 P5 S0 R1 T2.5:2.5:5:10

    M584 X7 Y6 Z5 E9 ; set drive mapping to external drivers
    M92 X183.00 Y318.00 Z1290.00 E400.00 ; set steps per mm
    M566 X200.00 Y200.00 Z12.00 E120.00 ; set maximum instantaneous speed changes (mm/min)
    M203 X60000.00 Y60000.00 Z180.00 E1200.00 ; set maximum speeds (mm/min)
    M201 X500.00 Y500.00 Z50.00 E250.00 ; set accelerations (mm/s^2)
    M906 X1000 Y1000 Z1000 E1000 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 X950 Y950 Z1000 S0 ; set axis maxima

    ; Endstops
    M574 X1 Y1 Z1 S0 ; set active low and disabled endstops
    ;M574 X1 Y1 S0 ; X home to min. Y home to min. set active low and disabled endstops
    ;M574 Z1 S2 ; Define Z to use Probe. Home to Min

    ; Z-Probe
    M307 H7 A-1 C-1 D-1 ; disable heater on PWM channel 7 for BLTouch
    M558 P9 H5 F100 T9000 ; set Z probe type to bltouch and the dive height + speeds
    G31 P500 X-25 Y0 Z0 ; set Z probe trigger value, offset and trigger height
    M557 X25:975 Y25:975 S100 ; define mesh grid

    ; Heaters
    M305 P0 T100000 B4138 R4700 ; set thermistor + ADC parameters for heater 0
    M143 H0 S120 ; set temperature limit for heater 0 to 120C
    M305 P1 T100000 B4138 R4700 ; set thermistor + ADC parameters for heater 1
    M143 H1 S280 ; set temperature limit for heater 1 to 280C

    ; Fans
    M106 P0 S0 I0 F500 H-1 ; set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off
    M106 P1 S1 I0 F500 H1 T45 ; set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on

    ; Tools
    M563 P0 D0 H1 F0 ; 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

    ; Custom settings are not defined

    ; Miscellaneous
    M501 ; load saved parameters from non-volatile memory
    M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss



  • I cant figure out why the Y axis is shifting over on each layer. I have tries to change the M569 Settings and have only made things worse... any ideas on how I can narrow down this problem would be great!



  • @Cameron You have high M203 values. To verify that this is the reason, please don't change anything, print a few minutes, then make a M122 and publish it. The speed could result in hiccups, which lead to lost steps.

    Please look and report also the microstepping settings of the DM556 and values of the Servo Motors (are they set by switches or by software?)*). The Pulse/rev settings according to the switch settings. Please be aware where on is on the switch, sometimes its up, sometimes low position. There is an arrow or on sign on the switch to show where it is.

    *) CL57T and CL86T both have RS232 interfaces, if this means Pulse/rev can be set by software, the Pulse/rev settings could be different to the switch settings. (CL57 datasheet says "It is a RS232 communication port using to connect with PC software to configure the motor peak current, closed loop
    holding current, microstep, active level." => so you will need to check it. CL86 mentions only closed loop settings with RS232)

    The maximum pulses which the Duet can process to about 120.000 pulses per second per driver (120 kHz), so the values of speed and microstepping is limited. But I need to know the values above first to give a recommendation what could be good values to try. - if it' the reason at all 😉

    The reason for the printout could be a wrong M92 setting also. For calculating them, I need (additionally to the data above) the information how many teeth the pulleys at the stepper have (or trapezoid spindle properties, ball screw with which slope if you need those methods). X and Y values for M92 are different, a wrong value of one of them may be the reason.

    I just saw the start of the project in https://forum.duet3d.com/topic/16107/converting-a-large-chinese-3d-printer it's an interesting project!



  • In the M569 statements, try increasing the pulse duration to 3 or 4 us instead of 2.5.

    M569 P7 S0 R1 T2.5:2.5:5:10 becomes M569 P7 S0 R1 T4.0:2.5:5:10



  • I have tested with greater T values as-well as slower speed and acceleration. thee test resulted in significantly slower printing and the prints still have the shift in the Y axis each layer, although the distance of the shift was reduced. Here is the Diagnostic report:

    M122
    === Diagnostics ===
    RepRapFirmware for Duet 2 WiFi/Ethernet version 2.05.1 running on Duet WiFi 1.02 or later
    Board ID: 08DGM-917DA-G4MS4-6J9DG-3SN6S-9SXR8
    Used output buffers: 3 of 24 (9 max)
    === RTOS ===
    Static ram: 25712
    Dynamic ram: 93184 of which 0 recycled
    Exception stack ram used: 432
    Never used ram: 11744
    Tasks: NETWORK(ready,628) HEAT(blocked,1232) MAIN(running,3824) IDLE(ready,160)
    Owned mutexes:
    === Platform ===
    Last reset 00:16:49 ago, cause: software
    Last software reset time unknown, reason: User, spinning module GCodes, available RAM 11736 bytes (slot 0)
    Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0441f000 BFAR 0xe000ed38 SP 0xffffffff Task 0x4e49414d
    Error status: 0
    Free file entries: 10
    SD card 0 detected, interface speed: 20.0MBytes/sec
    SD card longest block write time: 24.2ms, max retries 0
    MCU temperature: min 29.9, current 31.5, max 31.9
    Supply voltage: min 1.1, current 24.0, max 24.2, under voltage events: 0, over voltage events: 0, power good: yes
    Driver 0: standstill, SG min/max not available
    Driver 1: standstill, SG min/max not available
    Driver 2: standstill, SG min/max not available
    Driver 3: standstill, SG min/max not available
    Driver 4: standstill, SG min/max not available
    Date/time: 2020-06-14 12:05:02
    Cache data hit count 3022018625
    Slowest loop: 20.31ms; fastest: 0.05ms
    I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0
    === Move ===
    Hiccups: 0, FreeDm: 160, MinFreeDm: 154, MaxWait: 132470ms
    Bed compensation in use: none, comp offset 0.000
    === DDARing ===
    Scheduled moves: 0, completed moves: 0, StepErrors: 0, LaErrors: 0, Underruns: 0, 0
    === Heat ===
    Bed heaters = 0 -1 -1 -1, chamberHeaters = -1 -1
    Heater 1 is on, I-accum = 0.2
    === GCodes ===
    Segments left: 0
    Stack records: 1 allocated, 0 in use
    Movement lock held by null
    http is idle in state(s) 0
    telnet is idle in state(s) 0
    file is idle in state(s) 0
    serial is idle in state(s) 0
    aux is idle in state(s) 0
    daemon is idle in state(s) 0
    queue is idle in state(s) 0
    autopause is idle in state(s) 0
    Code queue is empty.
    === Network ===
    Slowest loop: 35.84ms; fastest: 0.00ms
    Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0) Telnet(0)
    HTTP sessions: 1 of 8

    • WiFi -
      Network state is running
      WiFi module is connected to access point
      Failed messages: pending 0, notready 0, noresp 0
      WiFi firmware version 1.23
      WiFi MAC address 60:01:94:2e:cd:49
      WiFi Vcc 3.40, reset reason Turned on by main processor
      WiFi flash size 4194304, free heap 23880
      WiFi IP address 192.168.1.112
      WiFi signal strength -64dBm, reconnections 0, sleep mode modem
      Socket states: 0 0 0 0 0 0 0 0


  • the goal is to both get this printer to print properly, but also fast because of its large build volume I would rather have a fast print than an accurate print. if there are any settings that I should change that can help optimize for this please let me know.



  • @Cameron no hiccups at M122, but maybe they cover only the TMC drivers on the board which you don't use.

    Speed optimization on the cost of precision will be possible by high speed with lower microstepping and there are other ideas also, like gears or more-teeth-pulleys on the stepper. And in most cases it's the filament extrusion speed, not the XYZ speed which limits maximum speed. But you have to know why you cannot print correctly first...

    Other possibilities to check after the checks above:

    • pulley shifting on the stepper shaft
    • current too low
    • invalid model or slicer (Cura?) problem
    • damaged motor shaft

    While printing, can you make and report a M906 to see the currents please?


  • Moderator

    @JoergS5 said in Y Axis loses steps on layer change. External Drivers.:

    While printing, can you make and report a M906 to see the currents please?

    I don't know if those will show on an external stepper.



  • @Phaedrux good point, but I wonder whether the M906 values for xyz in config has any meaning then, because current is set with switches.

    I found Davids answer in https://forum.duet3d.com/topic/10428/setting-motor-currents-m906 so the M906 values in config will be ignored.


Log in to reply