G32 on dual-Z axis cartesian problem
-
When I run G32, it correctly measures the set points, but the leadscrews will adjust in the opposite direction, making the gantry skewed and uneven to the bed.
M122
M122 === Diagnostics === RepRapFirmware for Duet 3 Mini 5+ version 3.4.5 (2022-11-30 19:41:16) running on Duet 3 Mini5plus WiFi (standalone mode) Board ID: P5DZW-GQ6KL-K65J0-409NU-KKW1Z-H1QDZ Used output buffers: 1 of 40 (13 max) === RTOS === Static ram: 103652 Dynamic ram: 110352 of which 0 recycled Never used RAM 27708, free system stack 206 words Tasks: NETWORK(ready,11.5%,253) HEAT(notifyWait,0.0%,358) Move(notifyWait,0.0%,363) CanReceiv(notifyWait,0.0%,942) CanSender(notifyWait,0.0%,336) CanClock(delaying,0.0%,341) TMC(notifyWait,0.7%,115) MAIN(running,85.3%,425) IDLE(ready,1.6%,30) AIN(delaying,0.9%,272), total 100.0% Owned mutexes: === Platform === Last reset 00:00:13 ago, cause: software Last software reset at 2023-03-01 13:03, reason: User, GCodes spinning, available RAM 27556, slot 0 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00000000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x00 Aux0 errors 0,0,0 MCU revision 3, ADC conversions started 13666, completed 13666, timed out 0, errs 0 Step timer max interval 1396 MCU temperature: min 32.5, current 33.3, max 33.6 Supply voltage: min 24.0, current 24.0, max 24.1, under voltage events: 0, over voltage events: 0, power good: yes 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 140, read errors 0, write errors 1, ifcnt 109, reads 683, writes 9, timeouts 0, DMA errors 0, CC errors 0 Driver 1: standstill, SG min 138, read errors 0, write errors 1, ifcnt 147, reads 683, writes 9, timeouts 0, DMA errors 0, CC errors 0 Driver 2: standstill, SG min 74, read errors 0, write errors 1, ifcnt 110, reads 682, writes 9, timeouts 0, DMA errors 0, CC errors 0 Driver 3: standstill, SG min 56, read errors 0, write errors 1, ifcnt 110, reads 682, writes 9, timeouts 0, DMA errors 0, CC errors 0 Driver 4: standstill, SG min 0, read errors 0, write errors 1, ifcnt 74, reads 683, writes 9, timeouts 0, DMA errors 0, CC errors 0 Driver 5: not present Driver 6: not present Date/time: 2023-03-01 13:03:17 Cache data hit count 25423027 Slowest loop: 3.73ms; fastest: 0.13ms === Storage === Free file entries: 10 SD card 0 detected, interface speed: 22.5MBytes/sec SD card longest read time 2.0ms, write time 0.0ms, max retries 0 === Move === DMs created 83, segments created 0, maxWait 0ms, bed compensation in use: none, comp offset 0.000 === MainDDARing === Scheduled moves 0, completed 0, 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, 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 idle 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 119, received 0, lost 0, boc 0 Longest wait 0ms for reply type 0, peak Tx sync delay 0, free buffers 18 (min 18), ts 67/0/0 Tx timeouts 0,0,66,0,0,51 last cancelled message type 30 dest 127 === Network === Slowest loop: 15.35ms; fastest: 0.00ms Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0) HTTP sessions: 1 of 8 = WiFi = Network state is active WiFi module is connected to access point Failed messages: pending 0, notready 0, noresp 0 WiFi firmware version 1.26 WiFi MAC address e8:68:e7:e5:50:1f WiFi Vcc 3.35, reset reason Power up WiFi flash size 2097152, free heap 24096 WiFi IP address 10.0.0.34 WiFi signal strength -74dBm, mode 802.11n, reconnections 0, sleep mode modem Clock register 00002002 Socket states: 0 0 0 0 0 0 0 0
config.g
; Configuration file for Duet 3 Mini 5+ (firmware version 3.3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.3.15 on Tue Feb 28 2023 22:26:05 GMT+0100 (Central European Standard Time) ; General preferences M575 P1 S1 B57600 ; enable support for PanelDue G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Duet Bear" ; set printer name M669 K0 ; Network M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives M569 P0.0 S1 D3 V10 ; X physical drive 0.0 goes forwards M569 P0.1 S1 D3 V10 ; Y physical drive 0.1 goes forwards M569 P0.2 S0 D3 V10 ; Z physical drive 0.2 goes forwards M569 P0.3 S0 D3 V10 ; Z physical drive 0.3 goes forwards M569 P0.4 S1 D2 ; E physical drive 0.4 goes backswards M584 X0.0 Y0.1 Z0.2:0.3 E0.4 ; set drive mapping M350 X32 Y32 Z16 E16 I1 ; configure microstepping with interpolation M92 X320.00 Y320.00 Z400.00 E932.00 ; set steps per mm M566 X900.00 Y900.00 Z60.00 E300.00 ; set maximum instantaneous speed changes (mm/min) M203 X6000.00 Y6000.00 Z600.00 E3600.00 ; set maximum speeds (mm/min) M201 X2000.00 Y2000.00 Z100.00 E250.00 ; set accelerations (mm/s^2) M906 X1000 Y1000 Z800 E800 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S60 ; Set idle timeout M671 X-30:223 Y0:0 S1 ; define dual driven z-axis ; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minima M208 X228 Y208 Z198 S0 ; set axis maxima ; Endstops M574 X2 S3 ; configure sensorless endstop for high end on X M574 Y2 S3 ; configure sensorless endstop for high end on Y M574 Z1 S2 ; configure Z-probe endstop for low end on Z ; Sensorless homing sensitivity ;M915 X S30 H140 R0 ; sensitivity of X and Y sensorless homing, R2 = pause print M915 Y S10 H200 R0 ; sensitivity (S) of X and Y sensorless homing, R2 = pause print ; Z-Probe M558 P5 C"io3.in" H2 F2000 T12000 A3 S0.03 ; set Z probe type to unmodulated and the dive height + speeds G31 P500 X25 Y-24 Z0.83 ; set Z probe trigger value, offset and trigger height M557 X30:225 Y15:225 S60 ; define mesh grid ; Heaters M308 S0 P"temp0" Y"thermistor" T100000 B3950 ; configure sensor 0 as thermistor on pin temp0 M950 H0 C"out0" Q13 T0 ; create bed heater output on out0 and map it to sensor 0, PWM 25 M307 H0 B0 S1.00 ; disable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C M308 S1 P"temp1" Y"thermistor" T100000 B3950 ; configure sensor 1 as thermistor on pin temp1 M950 H1 C"out1" T1 ; create nozzle heater output on out1 and map it to sensor 1 M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H1 S280 ; set temperature limit for heater 1 to 280C ; Fans M950 F0 C"out5" Q500 ; create fan 0 on pin out5 and set its frequency M106 P0 S1 H1 T50 ; set fan 0 value. Thermostatic control is turned on ; Tools M563 P0 S"Biqu H2" 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 T0 ; select first tool
bed.g
; bed.g ; called to perform automatic bed compensation via G32 ; ; generated by RepRapFirmware Configuration Tool v3.3.15 on Tue Feb 28 2023 22:26:05 GMT+0100 (Central European Standard Time) M561 ; clear any bed transform M558 H3 F2000 T12000 ; dive height G28 G30 P0 X223 Y79 Z-99999 G30 P1 X30 Y79 Z-99999 S2
-
I believe I’ve encountered this problem before, try swapping the probe points in bed.g
G30 P0 X30 Y79 Z-99999
G30 P1 X223 Y79 Z-99999 S2 -
@Velvia Most likely it is this (especially the bold part):
You must use the M671 command to define the X and Y coordinates of the leadscrews. The M671 command must come after the M584 command and must specify the same number of X and Y coordinates as the number of motors assigned to the Z axis in the M584 command; and these coordinates must be in the same order as the driver numbers of the associated motors in the M584 command. The M671 command must also come after any M667 or M669 command.
M584 X0.0 Y0.1 Z0.2:0.3 E0.4 M671 X-30:223 Y0:0 S1
I expect the Z motor connected to driver 0.2 is on the right of the bed (at X223), and the Z motor connected to the driver 0.3 is on the left of the bed (at X-30). But your M671 configures them the other way around. You can either:
- swap the motors connectors over (turn off the Duet first)
- or edit config.g to
M584 X0.0 Y0.1 Z0.3:0.2 E0.4
(Z motor order swapped) - or edit config.g to
M671 X223:-30 Y0:0 S1
(Z leadscrew definition swapped)
Ian
-
@droftarts This fixed it, thank you!
edited config.g to M671 X223:-30 Y0:0 S1 -
-