@droftarts Thank you.
It's a 3mm pitch belt on a 20T pulley that's giving the 300 micron step!
The set-up is a 6XD connected to a 1XD which is connected to a 1HCL. There are clearpath servos on the 6XD and 1XD, and a nema 23 on the 1HCL which is the one we've been discussing. Here's the config:
;Configuration File 'config.g'
;General preferences for MB6XD
;
G91 ;Set to Relative Positioning
;FAN CONTROL
M950 F0 C"!out4+out4.tach" ;Set up fan pin/s
M106 S0.4 ;Turn fan on (40%)
;LED CONTROL
M950 P0 C"out6" ;Right LED pin
M950 P1 C"out7" ;Left LED pin
M98 P"/macros/ledfade.g" S1.0 ;Fade LEDs to set value (0-255 or 0.0-1.0)
; Turn on pi
M950 P0 C"123.out0"
M42 P0 S255
;CANBUS
G4 S5 ;Wait for expansion boards to boot up
;MOTOR DRIVERS
M569 P1 R1 ;Y0 - Set driver 1: enable is HIGH
M569 P2 R1 ;Y1 - Set driver 2: enable is HIGH
M569.1 P123.0 T3 E1:30 R100 ;X - Driver 0 on board 123, Duet 3D magnetic encoder, pre-stall error when 1 step error (0.3mm), driver error when more than 30 step error (9mm). Proportional constant of 100
M569 P123.0 D4 ;X - Driver 0 on board 123, closed loop mode
M569 P122.0 R1 S0 ;Z - Driver 0 on board 122, enable HIGH, direction non-default
M584 X123.0 Y1:2 Z122.0 ;XYZ Set drivers
M906 X2800 I30 ;X motor 2.8A (30% at idle)
;MOTION PARAMETERS
M92 X53.33 Y40 Z40 ;Set axis steps per unit (steps per mm)
M203 X60000 Y180000 Z160000 ;Set maximum feedrate (mm/min) 60,000mm/60s==1000mm/s==1m/s
M201 X6000 Y8000 Z9000 ;Set max acceleration (mm/second^2)
M205 X10 Y10 Z10 ;Set allowable instantaneous speed change (mm/s). If we go from 0 to the values set here we'll do so with infinite acceleration. Anything above that will use values set in M201
M208 X0:240 Y0:3130 Z0:1648 ;Set axis min:max travel (mm)
M350 X16 I1 ;Set microstepping mode (1/n steps per rev)
;ENDSTOP AXIS
M574 X1 P"!123.io0.in" S1 ;input 0 on 123 for X
M574 Y1 P"!io3.in+!io2.in" S1 ;inputs 2 and 3 for Y (ORDER DEPENDENT to pair correct endstop to correct driver)
M574 Z1 P"!122.io1.in" S1 ;input 1 on 122 for Z
;NETWORKING
M550 P"MB6XD" ;Set name
M552 P0.0.0.0 S1 ;DHCP test
;M552 P192.168.254.2 ;IP Address
;M554 P192.168.254.1 ;Gateway
;M553 P255.255.255.224 ;Netmask
;M552 S1 ;Network, GO!
;E-STOP EMERGENCY
M950 J1 C"^io0.in" ;Index (J=input) 0 uses input pin 0 (pullup) - Physical ESTOP
M950 J2 C"^io1.in" ;Index (J=input) 1 uses input pin 1 (pullup) - Y ERROR
M950 J3 C"^122.io0.in" ;Index (J=input) 3 uses input pin 0 on 122 (pullup) - Z ERROR
M581 P1 T0 S1 ;Configure index 1 to trigger T0 (emergency stop), rising edge
M581 P2 T2 S1 ;Configure index 2 to trigger T2 (Y motor stall), rising edge
M581 P3 T3 S1 ;Configure index 3 to trigger T3 (Z motor stall), rising edge
M582 T0 ;Check if physical estop switch has been reset on bootup
And here's the result from the M122 B123:
Diagnostics for board 123:
Duet EXP1HCL rev 1.0a or earlier firmware version 3.5.0-rc.2 (2023-12-14 08:55:39)
Bootloader ID: SAME5x bootloader version 2.4 (2021-12-10)
All averaging filters OK
Never used RAM 45932, free system stack 184 words
Tasks: EncCal(1,nWait,0.0%,472) Move(3,nWait,0.0%,104) CLSend(3,nWait,0.0%,150) HEAT(2,nWait,0.3%,112) CanAsync(5,nWait,0.0%,67) CanRecv(3,nWait,0.0%,46) CanClock(5,nWait,0.0%,70) TMC(4,nWait,247.1%,325) MAIN(1,running,116.9%,265) IDLE(0,ready,0.0%,30) AIN(2,nWait,12.1%,265), total 376.4%
Last reset 02:09:58 ago, cause: software
Last software reset data not available
Driver 0: pos -14292, 53.3 steps/mm, ok, SG min n/a, mspos 8, reads 7411, writes 9788 timeouts 0, steps req 0 done 0
Moves scheduled 2, completed 2, in progress 0, hiccups 0, segs 5, step errors 0, maxLate 0 maxPrep 149, maxOverdue 0, maxInc 0, mcErrs 0, gcmErrs 0, ebfmin 0.00 max 0.00
Peak sync jitter -7/8, peak Rx sync delay 189, resyncs 0/0, no timer interrupt scheduled
VIN voltage: min 48.2, current 48.2, max 48.3
V12 voltage: min 12.2, current 12.2, max 12.2
MCU temperature: min 28.5C, current 36.2C, max 36.2C
Last sensors broadcast 0x00000000 found 0 24 ticks ago, 0 ordering errs, loop time 0
CAN messages queued 62416, send timeouts 0, received 38603, lost 0, errs 0, boc 0, free buffers 38, min 38, error reg 0
dup 0, oos 0/0/0/0, bm 0, wbm 0, rxMotionDelay 330, adv 37142/37199
Closed loop driver 0 mode: closed loop, pre-error threshold: 1.00, error threshold: 30.00, encoder type rotaryAS5047, position 5350
Encoder reverse polarity: yes, full rotations 0, last angle 5351, minCorrection=-8.0, maxCorrection=9.9, agc 63, mag 4730, no error
Tuning mode: 0, tuning error: 0, collecting data: no
Control loop runtime (us): min=2, max=64, frequency (Hz): min=8928, max=15000
Accelerometer: none
I2C bus errors 12, naks 0, contentions 0, other errors 0