Multiple X homes produce cumulative error
-
I am experiencing a very weird issue when homing X. Every time I home X after the initial home 3.9 mm is being added to the new ending X coordinate. Resulting in a cumulative error after multiple homing sequences such as with bed leveling. Y and Z home normally and have a repeatable ending coordinate as expected. Setup , diagnostics and config files are below. Any suggestions are appreciated.
setup is a Duet3 MB6HC with a revision 1.2 toolboard in an SBC setup with an RPI 4
Stable releases
DWC version 3.4.0
DSF veersion 3.4.0
RRF firmware version 3.4.0Diagnostics:
M122 === Diagnostics === RepRapFirmware for Duet 3 MB6HC version 3.4.0 (2022-03-15 18:57:24) running on Duet 3 MB6HC v1.01 or later (SBC mode) Board ID: 08DJM-956BA-NA3TN-6J1D6-3SJ6L-TV86U Used output buffers: 1 of 40 (21 max) === RTOS === Static ram: 151000 Dynamic ram: 66092 of which 100 recycled Never used RAM 133408, free system stack 129 words Tasks: SBC(ready,0.6%,466) HEAT(notifyWait,0.0%,321) Move(notifyWait,0.0%,269) CanReceiv(notifyWait,0.0%,772) CanSender(notifyWait,0.0%,356) CanClock(delaying,0.0%,339) TMC(notifyWait,8.0%,58) MAIN(running,91.2%,923) IDLE(ready,0.2%,30), total 100.0% Owned mutexes: HTTP(MAIN) === Platform === Last reset 00:13:39 ago, cause: power up Last software reset at 2022-05-25 13:30, reason: User, GCodes spinning, available RAM 132976, slot 0 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0043c000 BFAR 0x00000000 SP 0x00000000 Task SBC Freestk 0 n/a Error status: 0x00 Aux0 errors 0,0,0 Step timer max interval 135 MCU temperature: min 32.5, current 34.6, max 43.5 Supply voltage: min 24.0, current 24.1, max 24.2, under voltage events: 0, over voltage events: 0, power good: yes 12V rail voltage: min 12.0, current 12.0, max 12.1, under voltage events: 0 Heap OK, handles allocated/used 0/0, heap memory allocated/used/recyclable 0/0/0, gc cycles 0 Events: 0 queued, 0 completed Driver 0: standstill, SG min 0, mspos 8, reads 42318, writes 11 timeouts 0 Driver 1: standstill, SG min 0, mspos 860, reads 42302, writes 27 timeouts 0 Driver 2: standstill, SG min 0, mspos 1020, reads 42302, writes 27 timeouts 0 Driver 3: standstill, SG min 0, mspos 280, reads 42302, writes 27 timeouts 0 Driver 4: standstill, SG min 0, mspos 280, reads 42302, writes 27 timeouts 0 Driver 5: standstill, SG min 0, mspos 280, reads 42303, writes 27 timeouts 0 Date/time: 2022-05-25 21:37:25 Slowest loop: 62.14ms; fastest: 0.03ms === Storage === Free file entries: 10 SD card 0 not detected, interface speed: 37.5MBytes/sec SD card longest read time 0.0ms, write time 0.0ms, max retries 0 === Move === DMs created 125, segments created 3, maxWait 188953ms, bed compensation in use: none, comp offset 0.000 === MainDDARing === Scheduled moves 135, completed 135, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === AuxDDARing === Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamber heaters -1 -1 -1 -1, ordering errs 0 Heater 1 is on, I-accum = 0.0 === GCodes === Segments left: 0 Movement lock held by null HTTP* is doing "M122" in state(s) 0 Telnet is idle in state(s) 0 File is idle in state(s) 0 USB is idle in state(s) 0 Aux is idle in state(s) 0 Trigger* is idle in state(s) 0 Queue is idle in state(s) 0 LCD is idle in state(s) 0 SBC is idle in state(s) 0 Daemon is idle in state(s) 0 Aux2 is idle in state(s) 0 Autopause is idle in state(s) 0 Code queue is empty === CAN === Messages queued 7358, received 16324, lost 0, boc 0 Longest wait 3ms for reply type 6026, peak Tx sync delay 88, free buffers 50 (min 49), ts 4098/4097/0 Tx timeouts 0,0,0,0,0,0 === SBC interface === Transfer state: 4, failed transfers: 0, checksum errors: 0 RX/TX seq numbers: 32058/32058 SPI underruns 0, overruns 0 State: 5, disconnects: 0, timeouts: 0, IAP RAM available 0x2b880 Buffer RX/TX: 0/0-0, open files: 0 === Duet Control Server === Duet Control Server v3.4.0 Code buffer space: 4096 Configured SPI speed: 8000000Hz, TfrRdy pin glitches: 0 Full transfers per second: 26.30, max time between full transfers: 54.8ms, max pin wait times: 43.5ms/10.0ms Codes per second: 0.28 Maximum length of RX/TX data transfers: 5660/924
Config.g
Configuration file for Duet 3 (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.1.3 on Sat Jul 11 2020 20:25:37 GMT-0500 (Central Daylight Time) ; ================ General preferences================= M80 c"pson" ; Turns on the ATX power supply G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M669 K1 ; select CoreXY mode ; ===================== Network======================== ;M550 P"BLV CUBE" ; Set machine name-Now set through RPI ;M552 S1 ; Enable network ;M587 S"NETWORK_NAME" P"PASSWORD" ; Configure access point. You can delete this line once connected ;M552 P###.###.###.### ; IP Address ;M553 P###.###.###.### ; Subnet Mask ;M554 P###.###.###.### ; Default Gateway M586 P0 S1 ; Enable HTTP M586 P1 S0 ; Disable FTP M586 P2 S0 ; Disable Telnet ; ======================Drives========================= M569 P0.0 S1 ; physical drive 0.0 goes forwards D3 = STEALTHCHOP 2 ENABLED M569 P0.1 S1 ; physical drive 0.1 goes forwards M569 P0.2 S1 ; physical drive 0.2 goes forwards M569 P0.3 S1 ; physical drive 0.3 goes forwards M569 P0.4 S1 ; physical drive 0.4 goes forwards M569 P0.5 S1 ; physical drive 0.5 goes forwards M569 P20.0 S1 ; physical drive Toolboard 20.0 goes forwards ; ===============Stealthchop tunning=================== ;M915 P0.0 T150 ;not working ;M915 P0.1 T150 ;M915 P0.2 T150 ;M915 P0.3 T150 ;M915 P0.4 T150 ;M915 P0.5 T150 ; ==============Independent Z Leveling================= M671 X-16:345:345 Y168:284:44 S10 ; leadscrew pivot point: Front left -36:157, Right Rear 345:301, and Right Front 346:17 ; =================Drive Settings====================== M584 X0.1 Y0.2 Z0.3:0.4:0.5 E20.0 ; set drive mapping Z3=Left Front, Z4= Right Rear, Z5=Right Front M350 X32 Y32 Z16 E16 I1 ; configure microstepping with interpolation M92 X200.00 Y200.00 Z800.00 E1272.8 ; set steps per mm M566 X600.00 Y600.00 Z24 E240.00 ; set maximum instantaneous speed changes (mm/min) M203 X12000.00 Y12000.00 Z800.00 E1200.00 ; Set maximum speeds (mm/min) mm per minute/60=mm per second M201 X2500 Y2500 Z100 E800 ; Set accelerations (mm/s^2) changed from 3000 for X and Y M906 X1600 Y1600 Z1600 E800 I30 ; Set motor currents (mA) and motor idle factor in per cent M84 S30 ; Disable motor idle current reduction ; ================Axis Limits========================== M208 X-4.1 Y0 Z0 S1 ; set axis minima M208 X330 Y296.7 Z340 S0 ; set axis maxima ; =================Endstops============================ M574 X1 S1 P"20.io1.in" ; configure active-high endstop for X Min M574 Y2 S1 P"0.io2.in" ; configure active-high endstop for high end on Y via pin i02.in M574 Z1 S2 ; configure Z-probe endstop for low end on Z ; =================Z-Probe============================= M950 S0 C"20.io0.out" ; create servo pin 0 for BLTouch M558 P9 C"^20.io0.in" H5 F3000 T12000 ; set Z probe type to bltouch and the dive height + speeds G31 P100 X-25 Y0 Z3.39 ; set Z probe trigger value, offset and trigger height M557 X20:300 Y20:300 P10:9 ; define mesh grid ; ================Heaters============================== M308 S0 P"0.temp0" Y"thermistor" A"Bed Temp" T100000 B3950 ; configure sensor 0 as thermistor on pin temp0 M308 S1 P"20.temp0" Y"thermistor" A"Extruder Temp" T100000 B4725 C0.0000000706 ; configure sensor 1 as thermistor on pin 20.temp0 M950 H0 C"0.out0" Q10 T0 ; create bed heater output on out0 and map it to sensor 0 M950 H1 C"20.out0" T1 ; create nozzle heater (Hot End E-0) output on 20.out0 and map it to Temp sensor 1 M307 H0 R0.830 C367.1 D3.29 S1.00 ; Set PID for bed heater M140 H0 ; map heated bed to heater 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C M307 H1 R2.803 C133.7:129.2 D4.07 S1.00 V24.5 ; Set PID for Hotend .4mm nozzle 235 C M143 H1 S285 ; Set temperature limit for heater 1 to 285C M308 S2 P"mcu-temp" Y"mcu-temp" A"Duet Board" ; Configure MCU sensor ; ==================Fans=============================== M950 F0 C"20.out1" Q100 ; create fan 0 on pin 20.out1 and set its frequency M106 P0 C"Layer Fan" S0 H-1 ; set fan 0 value. Thermostatic control is turned off M950 F2 C"!0.out6" Q25000 ; create fan 2 on pin out6 and set its frequency M106 P2 C"MB Fan" T30:45 H2 ; set fan 2 value. Thermostatic control is turned on M950 F1 C"20.out2" Q500 ; create fan 1 (hot end fan) on pin 20.out2 and set its frequency M106 P1 S255 H1 T30 ; set fan 1 value. Thermostatic control is turned on ; =================Tools================================ M563 P0 S"Extruder 1" 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 ; ==============pressure Advance======================== ;M572 D0 S0.026 ; Set pressure advance to offset elasticity ; ====Dynamic Acceleration Adjustment and Non-linear==== M592 D0 A0.015 B0.0012 L0.2 ;M593 P"daa" F42.1 ; ==========Accelerometer Settings====================== M955 P20.0 I10 ; specify orientation of accelerometer on Toolboard 1LC with CAN address 20 ; ===========Custom settings are not defined============ ;M564 H0 ; Let the Jog buttons work blv: added to allow jog buttons ; ==================Miscellaneous======================= M575 P1 S1 B57600 ; enable support for PanelDue ;M575 P2 S1 B57600 ; enable support for BLV NeoPixels M911 S22 R23 P"M913 X0 Y0 G91 M83 G1 Z3 E-3 F1000" ; set voltage thresholds and actions to run on power loss M912 P0 S-10.62 ; mcu calibration temperature offset T0 ; select first tool ; ====================== Duet 3 (ID#0) ==================== ;0.out0 - NC ;0.out1 - Bed heater ;0.out2 - Hot end ;0.out3 - NC ;0.out4 - NC ;0.out5 - NC ;0.out6 - NC ;0.out7 - Water cooling radiator fan ;0.out8 - NC ;0.out9 - NC ;0.out4.tach - NC ;0.out5.tach - NC ;0.out6.tach - NC ;0.io0.in - PanelDue TX ;0.io1.in - BLV Arudino TX ;0.io2.in - NC ;0.io3.in - Y Endstop ;0.io4.in - GPIO pin for on trigger ;0.io5.in - NC ;0.io6.in - NC ;0.io7.in - emergency stop switch ;0.io8.in - Off button C ;0.io0.out - PanelDue RX ;0.io1.out - BLV Arduino RX ;0.io2.out - NC ;0.io3.out - NC ;0.io4.out - NC ;0.io5.out - NC ;0.io6.out - NC ;0.io7.out - NC ;0.io8.out - NC ;0.pson - Power on 5v relay wired for SBC always on and Duet 3 in standby ;0.spi.cs0 - NC ;0.spi.cs1 - NC - this can be your PT100 board ;0.spi.cs2 - NC ;0.spi.cs3 - NC ;0.temp0 - Bed heater ;0.temp1 - NC ;0.temp2 - NC ;0.temp3 - NC ;0.mcu-temp - Virtual Temp Sensor ; ================ Toolboard 1 (CAN ID#20) ================ ; 20.out0 - NC due to bug in RRF3.3 ; 20.out1 - Layer Fan 1 ; 20.out2 - Layer Fan 2 ; 20.out2_tach0 - NC ; 20.out1_tach0 - NC ; 20.io0.in - BLTouch Signal pin ; 20.io1.in - X min active low endstop switch ; 20.io2.in - Reserved for filament monitor ; 20.io0.out - BLTouch Servo pin ; 20.temp0 - Extruder Thermistor ; 20.temp1 - NC ; 20.button0 - NC ; 20.button1 - NC ; 20.CAH_H - Duet CAN1_H ; 20.CAH_L - Duet CAN1_L
bed.g
; called to perform automatic bed compensation via G32 ; ; generated by RepRapFirmware Configuration Tool v3.1.3 on Sat Jul 11 2020 20:25:37 GMT-0500 (Central Daylight Time) M291 P"Leveling Axis, leveling bed" R"Probing.." S1 T2 M561 ; clear any bed transform G29 S2 ; clear bed height map G90 ; absolute positioning G1 Z10 H0 ; Making sure we're not going to hit the side of glass G91 G28 ; home all axis bb M400 ; Wait for move to finish G30 P0 X40 Y166 Z-99999 ; Probe near left lead screw position G30 P1 X305 Y283 Z-99999 ; Probe near right rear lead screw position G30 P2 X305 Y45 Z-99999 S3 ; Probe near right front lead screw position G28 G30 P0 X40 Y166 Z-99999 ; Probe near left lead screw position G30 P1 X305 Y283 Z-99999 ; Probe near right rear lead screw position G30 P2 X305 Y45 Z-99999 S3 ; Probe near right front lead screw position G28 G30 P0 X40 Y166 Z-99999 ; Probe near left lead screw position G30 P1 X305 Y283 Z-99999 ; Probe near right rear lead screw position G30 P2 X305 Y45 Z-99999 S3 ; Probe near right front lead screw position G28 M291 P"Leveling finished !" R"Probing.." S1 T2
homeall.g
; called to home all axes ; ; generated by RepRapFirmware Configuration Tool v3.1.3 on Sat Jul 11 2020 20:25:38 GMT-0500 (Central Daylight Time) M17 ; Power steppers for Stealthchop auto tune G4 P200 ; Pause 200ms G91 ; relative positioning M98 P"homex.g" ; Home X G4 P200 ; Pause 200ms M98 P"homey.g" ; Home Y G4 P200 ; Pause 200ms M98 P"homez.g" ; Home Z G90 ; absolute positioning
Homex.g
; called to home the X axis ; ; generated by RepRapFirmware Configuration Tool v3.1.3 on Sat Jul 11 2020 20:25:38 GMT-0500 (Central Daylight Time) G91 ; relative positioning G1 H2 Z3 F2000 ; Drop Z 3mm G1 H2 X5 Y5 F8000 ; move X away a little so the switch is not pressed G1 H1 X-400 F8000 ; move left 400mm, stopping at the endstop G1 X5 F5000 ; move away for second pass G4 P500 ; wait 500msec G1 H3 X-300 F300 ; (second pass) G1 X15 F5000 ; move away from end G1 H2 Z-3 F2000 ; Raise z back G90 ; back to absolute positioning G4 P100 ; wait 400ms
-
@jasbeckett code tags added for readability.
Ian
-
@jasbeckett in homex.g you have
G1 H3 X-300 F300 ; (second pass)
Homing moves should be H1. H3 is most likely the issue:
H3: terminate the move when the endstop switch is triggered and set the axis limit to the current position, overriding the value that was set by M208.
Ian
-
@droftarts Thanks for the keen eye. This behavior didn’t start until I just updated to 3.4.0. I will update my homing files and see if that fixes the issue.