External stepper drivers shift X axis, Y OK
-
Hello,
I try use Duet 6HC + 2x 1XD for external driver (em705 leadshine). Both axes are equally configured and connected. However, the X axis gradually shifts in the positive direction. The Y axis doesn't do that. Interestingly, when I reconnected the output cables (from 1XD) to the drivers, X is no problem and Y started to shift . So it means a timing problem but only for the X axis.Some idea where start?
Pictures, config files and M122 repors under pictures.
many thanks for help.
; General preferences
G90 ; send absolute coordinates...
M83 ; ...but relative extruder moves
M550 P"velkej" ; set printer name
G4 S1; Drives
M584 X40.0 Y41.0 Z0.0:0.2 E0.4 ; set drive mapping
M569 P40.0 S0 R1 T2.7:2.7:6:6 ; change enable polarity, active = disable drive
M569 P41.0 S0 R1 T2.7:2.7:6:6 ; change enable polarity, active = disable drive
M569 P0.0 S0
M569 P0.2 S0 ; physical drive 0.2 goes forwards
M569 P0.4 S1 ; physical drive 0.3 goes forwardsM671 X0:400 Y200:200 S10
M350 Z8 E16 I1 ; configure microstepping with interpolation
M92 X142.22 Y142.22 Z400.00 E420.00 ; set steps per mm
M566 X500.00 Y500.00 Z25.00 E150.00 ; set maximum instantaneous speed changes (mm/min)
M203 X18000.00 Y18000.00 Z1400.00 E7500.00 ; set maximum speeds (mm/min)
M201 X1250.00 Y1250.00 Z250.00 E5000.00 ; set accelerations (mm/s^2)
M906 Z1750 E450 I40 ; set motor currents (mA) and motor idle factor in per cent
;M569 P40 T2.7:2.7:2.7:2.7
;M569 P41 T2.7:2.7:2.7:2.7
M84 S10 ; Set idle timeout; Axis Limits
M208 X0 Y0 Z0 S1 ; set axis minima
M208 X400 Y400 Z420 S0 ; set axis maxima; Endstops
M574 X1 S1 P"40.io1.in" ; configure active-high endstop for low end on X via pin io0.in
M574 Y2 S1 P"41.io1.in" ; configure active-high endstop for low end on Y via pin io1.in
M574 Z1 S2m122 b41
Diagnostics for board 41:
Duet EXP1XD firmware version 3.2.2 (2021-02-11)
Bootloader ID: SAMC21 bootloader version 2.0 (2020-10-15b1)
Never used RAM 5912, free system stack 44 words
HEAT 90 CanAsync 89 CanRecv 83 MAIN 397 AIN 64
Last reset 02:14:38 ago, cause: power up
Last software reset data not available
Driver 0: position 415993, 142.2 steps/mm
Moves scheduled 3894, completed 3894, in progress 0, hiccups 0
No step interrupt scheduled
VIN: 25.6V
MCU temperature: min 24.9C, current 32.3C, max 32.5C
Ticks since heat task active 97, ADC conversions started 4039420, completed 4039420, timed out 0
Last sensors broadcast 0x00000000 found 0 100 ticks ago, loop time 0
CAN messages queued 76, send timeouts 0, received 76692, lost 0, free buffers 36
23. 4. 2021 20:02:00 m122 b40
Diagnostics for board 40:
Duet EXP1XD firmware version 3.2.2 (2021-02-11)
Bootloader ID: SAMC21 bootloader version 2.0 (2020-10-15b1)
Never used RAM 5912, free system stack 44 words
HEAT 90 CanAsync 85 CanRecv 83 MAIN 397 AIN 64
Last reset 02:14:35 ago, cause: power up
Last software reset data not available
Driver 0: position -519814, 142.2 steps/mm
Moves scheduled 4312, completed 4312, in progress 0, hiccups 0
No step interrupt scheduled
VIN: 25.3V
MCU temperature: min 24.1C, current 32.2C, max 32.3C
Ticks since heat task active 2, ADC conversions started 4037997, completed 4037997, timed out 0
Last sensors broadcast 0x00000000 found 0 5 ticks ago, loop time 0
CAN messages queued 88, send timeouts 0, received 77103, lost 0, free buffers 36 -
@petrkroupa said in External stepper drivers shift X axis, Y OK:
M569 P40.0 S0 R1 T2.7:2.7:6:6 ; change enable polarity, active = disable drive
M569 P41.0 S0 R1 T2.7:2.7:6:6 ; change enable polarity, active = disable driveHow did you determine the timing?
-
@petrkroupa, a gradual shift (typically 1 microstep per direction reversal) usually indicates that the 3rd or 4th (more often the 3rd) value in the T parameter of the M569 command is too low.
-
-
Just to repeat two identical drivers, both set the same. The problem is only on X. After switching the connectors on 1XD boards (DRV-OUT), X was ok and Y was not. The part, of course, turned 90 degrees.
@DC42 - Yes, it's definitely a gradual shift of two or three steps each layer. When I tried this with MARLIN firmware it was awful and unsolvable. That's why I switched to Duet.
@Phaedrux - timing seting :
min 2.5 us for pulse and 2.5us for sleep. 5us for direction change.
I also solved that the signal for PULZ should be at 0 and at rest 1. This is possible by simply connecting the outputs from the 1XD card. Connect both outputs for step + and - however, swap them.
I'll try to increase the timing a lot 10: 10: 10: 10 and see what prints.
however, I still don't understand why only one driver does it.
-
@petrkroupa are both drivers running the same firmware version?
-
@dc42 - I tried to find out something about the firmware of these drivers but it seems that the update is not possible. However, the error moves to the second driver after the cables are reconnected. So I don't assume it's EM705. Both 1XDs have the same FW. The print is currently completed with a timing of 10: 10: 10: 10 and the error is the same. I'll try 10: 10: 20: 20 again, but I doubt it.
I will try to change the addresses to 1XD and swap them. Isn't there a mistake here. Any other ideas?
-
10:10:30:30 it looks a little better. I'll try 10: 10: 50: 50 but that's really extreme....
-
@petrkroupa said in External stepper drivers shift X axis, Y OK:
@dc42 - I tried to find out something about the firmware of these drivers but it seems that the update is not possible. However, the error moves to the second driver after the cables are reconnected. So I don't assume it's EM705. Both 1XDs have the same FW.
What firmware versions are they running? I suggest you use 3.3beta3.
I guess it's possible that one of the boards has a weaker output than the other, so that it needs longer timings to be recognised.
-
@dc42 10: 10: 50: 50 looks almost good. I tried another print and gyroid infill. I had to extremely reduce the M566. X100 Y100 otherwise the steps were lost very much. I'm starting to realize that the EM705 doesn't like fast changes of direction ....
I'll try to upgrade to version 3.3 and do a few more tests, but I'm afraid that I connect the X and Y motor directly to 6HC, increase the supply voltage and I won't waste any more time on us all.
-
Summary:
After approx 1Kg PLA and one dead (fried) stepper motor....
EM705 doesn't like quick changes of direction. Timing can be 3:3:50:50 and the prints look almost good. Unfortunately, M566 X75 Y75 must be set at the same time. I also tried 15: 15: 50: 50 (and more) but the first two numbers have no effect unless they are less than 2. But print is then terribly slow. As soon as I start to increase M566 , there is a shift and then a loss of more steps. Especially with giroid infill.
I checked the timing on the oscilloscope and also found no problem.
I've been figuring out why the shift is only in one X axis. After a thorough measurement, I found a shift in the Y axis, but significantly smaller. I tried different ways to switch between each other (1XD, drivers, motors, wiring....), and in the end I thought of turn the model over and generating GCODE again. The offset has shifted to the Y axis. It only depends on how many aggressive changes of direction are in a given axis. On the calibration cube, the shift was the same in both directions.
Currently, X and Y are connected to the internal Duet3 6HC drivers. The supply voltage is 30V and everything works perfectly. M566 X800.00 Y800.00 Z25.00 E150.00, M203 X18000.00 Y18000.00 Z1400.00 E7500.00, M201 X1250.00 Y1250.00 Z250.00 E5000.00
I think we can close this topic. Personally, I do not recommend using the EM705 on a 3D printer. But of course anyone can try it.
-
@petrkroupa Can you use a multimeter and check the current being drawn by the stepper controller on both the PUL and DIR signals?
The manual says the controller needs a minimum of 7 milliAmps, typical 10 ma max 16ma and maybe the Duet isn't driving the built-in optocouplers strongly enough.
Just a longshot.
-
@alankilian -11mA. 4,6V.
It also occurred to me. I tried to add a resistor (just to try) to reduce the current. Nothing has changed until the input voltage is lower than 2.7V. Then the driver stops working completely.