Leveling 3 independent Z motors - Offset on one motor
-
Hi,
I got three motors, two on the left side and one on the center of the right side. Probe is a bltouch.
When I run True Bed Leveling, it always brings the right motor 1.5mm closer to the nozzle even though it's triggering at the same height. I have no idea what's causing this. When it has done this correction, it repeadetly get the same results, but with the right side of the bed sitting 1.5mm closer to the nozzle.
Please help!
Some info on the setup:
CoreXY - BLV MGN Cube
Duet 3 6HC
Real BlTouchHere's three levelings back to back.
28.7.2022, 14:14:03 G32 Leadscrew adjustments made: -0.161 -0.159 -0.159, points used 3, (mean, deviation) before (-0.160, 0.001) after (0.000, 0.000) 28.7.2022, 14:12:54 G32 Leadscrew adjustments made: -0.159 -0.160 -0.162, points used 3, (mean, deviation) before (-0.161, 0.001) after (0.000, 0.000) 28.7.2022, 14:10:59 G32 Leadscrew adjustments made: -0.160 -0.158 -0.163, points used 3, (mean, deviation) before (-0.160, 0.002) after (0.000, 0.000)
; Configuration file for Duet 3 (firmware version 3) ; executed by the firmware on start-up ; ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Juggernaut" ; set printer name M669 K1 ; select CoreXY mode ; Network M552 P0.0.0.0 S1 ; enable network and acquire dynamic address via DHCP M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives M569 P0.0 S0 ; physical drive 0.0 goes forwards M569 P0.1 S0 ; physical drive 0.1 goes forwards M569 P0.2 S0 ; physical drive 0.2 goes forwards M569 P0.3 S1 ; physical drive 0.3 goes backwards M569 P0.4 S0 ; physical drive 0.4 goes forwards M569 P0.5 S1 ; physical drive 0.5 goes backwards M569 P121.0 S1 ; physical drive 121.0 goes backwards M584 X0.4 Y0.3 Z0.0:0.1:0.2 E121.0 ; set drive mapping M671 X-35:-35:500 Y342.5:112.5:227.5 S3 ; set lead screw locations M350 X16 Y16 Z16:16:16 E16 I1 ; configure microstepping with interpolation M92 X80.00 Y80.00 Z1600.00 E420.00 ; set steps per mm M566 X900.00 Y900.00 Z80.00 E120.00 ; set maximum instantaneous speed changes (mm/min) M203 X20000.00 Y20000.00 Z180.00 E1200.00 ; set maximum speeds (mm/min) M201 X5000.00 Y5000.00 Z100.00 E250.00 ; set accelerations (mm/s^2) M906 X1000 Y1000 Z1200:1200:1200 E750 I40 ; 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 X440 Y440 Z200 S0 ; set axis maxima ; Endstops M574 X1 S3 ; configure sensorless homing on X M574 Y1 S3 ; configure sensorless homing on Y M574 Z1 S2 ; configure Z-probe endstop for low end on Z M915 X Y R0 F0 ; sensorless homing sensitivity ; Z-Probe M950 S0 C"121.io0.out" ; create servo pin 0 for BLTouch M558 P9 C"^121.io0.in" H5 F120 T6000 ; set Z probe type to bltouch and the dive height + speeds G31 P500 X0 Y55 Z0.5 ; set Z probe trigger value, offset and trigger height M557 X15:435 S210 Y70:435 S175 ; define mesh grid ; Heaters M308 S0 P"temp0" Y"thermistor" T100000 B4725 ; configure sensor 0 as thermistor on pin temp0 M950 H0 C"out0" T0 ; create bed heater output on out0 and map it to sensor 0 M307 H0 B1 S1.00 ; enable 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"121.temp0" Y"thermistor" T100000 B4725 C7.06e-8 ; sensor 1 (toolboard) M950 H1 C"121.out0" T1 ; create nozzle heater output on 121.out0 and map it to sensor 1 M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H1 S300 ; set temperature limit for heater 1 to 300C ; Fans M950 F1 C"121.out0" Q500 ; create fan 1 on pin 121.out0 and set its frequency M106 P1 S0 H-1 ; set fan 1 value. Thermostatic controll 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 M563 P1 D1 H2 F1 ; define tool 1 G10 P1 X0 Y0 Z0 ; set tool 1 axis offsets G10 P1 R0 S0 ; set initial tool 1 active and standby temperatures to 0C M563 P2 D2 H3 F2 ; define tool 2 G10 P2 X0 Y0 Z0 ; set tool 2 axis offsets G10 P2 R0 S0 ; set initial tool 2 active and standby temperatures to 0C ; Custom settings are not defined ; Miscellaneous M575 P1 S1 B57600 ; enable support for PanelDue
; bed.g ; called to perform automatic bed compensation via G32 ; G28 G30 P0 X15 Y112.5 Z-99999 ; Left Front G30 P1 X15 Y342.5 Z-99999 ; Left Rear G30 P2 X435 Y227.5 Z-99999 S3 ; Right Center
; homez.g ; called to home the Z axis ; G91 ; Relative positioning G1 H2 Z5 F6000 ; Lift Z relative to current position G90 ; Absolute positioning G1 X227.5 Y227.5 F6000 ; Go to center of bed G30 ; Home Z by probing the bed
-
@teejay187 said in Leveling 3 independent Z motors - Offset on one motor:
M584 X0.4 Y0.3 Z0.0:0.1:0.2 E121.0 ; set drive mapping
M671 X-35:-35:500 Y342.5:112.5:227.5 S3 ; set lead screw locationsAre you certain that the order in which you have declared the Z drivers in M584 matches the order in which you have declared the leadscrew locations in M671? IOW, the motor connected to driver 0 drives the leadscrew at X-35 Y342.5; and similarly for the other two.
-
I swapped the two left motors and then the adjustments got gradually worse, so I now know that M671 is pointing to the correct drives in M584. It's now counting the motors clockwise.
I tried to manually level the bed until the blTouch started triggering near each lead screw. I tried moving the head around manually and I could see that the bed was 100% flat and kept the same distance to the nozzle.
Then I tried to run G32 and it probed the almost same points, but it still adjusts so that the bed is closer to the nozzle on the right side. If I run G32 again I get close to zero error, but the bed is still higher on the right side.
Long story short. When I level manually, everything is correct. When using G32 it offsets the right motor by around 0.8mm.
I have only adjusted the files on the SD card, not generated them in the tool. Also the blTouch is connected to a 1LC tool board.
-
What firmware version are you using? There were some limitations on using probes connected to expansion boards and the z motors connected to the mainboard.
Due to CAN latency the motors connected to expansion boards may slightly overshoot the position at which the endstop or Z probe was triggered. This would not usually matter for an endstop switch, but it does mean that if the Z motor(s) is/are connected to an expansion board then repeated probing with a Z probe (e.g. for mesh bed compensation) is not advisable. This restriction is removed in firmware 3.4.
https://docs.duet3d.com/en/User_manual/RepRapFirmware/CAN_limitations
-
@teejay187 said in Leveling 3 independent Z motors - Offset on one motor:
M350 X16 Y16 Z16:16:16 E16 I1 ; configure microstepping with interpolation
M92 X80.00 Y80.00 Z1600.00 E420.00 ; set steps per mm
M566 X900.00 Y900.00 Z80.00 E120.00 ; set maximum instantaneous speed changes (mm/min)
M203 X20000.00 Y20000.00 Z180.00 E1200.00 ; set maximum speeds (mm/min)
M201 X5000.00 Y5000.00 Z100.00 E250.00 ; set accelerations (mm/s^2)
M906 X1000 Y1000 Z1200:1200:1200 E750 I40 ; set motor currents (mA) and motor idle factor in per centAlso in these commands the Z values should only be defined once for the axis, not per motor. This may be causing issues so remove the duplicates.
-
Hi,
Here's what I'm running.
1.8.2022, 12:15:40 M115 FIRMWARE_NAME: RepRapFirmware for Duet 3 MB6HC FIRMWARE_VERSION: 3.4.1 ELECTRONICS: Duet 3 MB6HC v1.01 or later FIRMWARE_DATE: 2022-06-01 21:09:12 1.8.2022, 12:14:20 M115 B121 Duet TOOL1LC rev 1.0 or earlier firmware version 3.4.2rc1 (2022-07-06 16:20:30)
blTouch is connected to the 1LC. Should I move it to the Duet 3 maybe? I think I have the extension cables for it.
Also removed all duplicate values for the Z motors, but the problem persists.
-
@teejay187 Firmware on the mainboard is 3.4.1, but the toolboard runs on 3.4.2rc1...
Maybe the mainboard update didn't work? -
Thanks! I tried upgrading everything to 4.3.2RC1 and the error is still present. I was really hoping the firmware mismatch to be the problem.
I've tried to adjust probing speeds too, but the error is still the exact same. It corrects about 0.6mm when I have the bed level.
-
@teejay187 most likely the print head is tilting as it moves in X so that the relative heights of the nozzle and the BLTouch are different at the left and right hand ends.
This is best corrected mechanically, however you can compensate for it using H parameters in the G30 commands in bed.g.
-
I did some more testing now. It is indeed the problem. Upon closer inspection I can see that the X-extrusion is twisted ever so slightly because of very uneven powder coating.
Thank you all for the pointers!
-
-