Error: This kinematics does not support auto-calibration
-
I have a Corexy printer big size and I'm facing an error: This kinematics does not support auto-calibration.
When I use the G32 command, the X and Y axes move to the center of the bed and raise the bed until it touches the probe. Then it moves to select four points. After selecting the fourth point, the error message appears: This kinematics does not support auto-calibration.
I don't know what's causing the problem. I use four motors in the Z axis.
file bed.gM280 P0 S160 ; BLTouch deploy M561 ; clear bed compensation G28 ; home all axes G30 P0 X10 Y1100 Z-99999 ; motor 0.3 (left back corner) G30 P1 X10 Y10 Z-99999 ; motor 0.2 (left front corner) G30 P2 X1100 Y10 Z-99999 ; motor 0.5 (right front corner) G30 P3 X1100 Y1100 Z-99999 S4 ; motor 0.4 (right back corner), final point to level 4 motors
file config.g
; Configuration file for RepRapFirmware on Duet 3 Main Board 6HC ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.5.8 on Thu Jan 09 2025 09:36:34 GMT-0800 (Pacific Standard Time) ; General G90 ; absolute coordinates M83 ; relative extruder moves M550 P"Duet 3" ; set hostname ; Accessories M575 P2 S0 B57600 ; configure PanelDue support ; Network M552 P0.0.0.0 S1 ; configure Ethernet adapter M586 P0 S1 ; configure HTTP ; Wait a moment for the CAN expansion boards to become available G4 S2 ; Accelerometers M955 P121.0 I20 ; configure accelerometer on board #121 ; Smart Drivers M569 P0.0 S1 D2 ; driver 0.0 goes forwards (X axis) M569 P0.1 S1 D2 ; driver 0.1 goes forwards (Y axis) M569 P0.2 S1 D2 ; driver 0.2 goes forwards (Z axis) M569 P0.3 S1 D2 ; driver 0.3 goes forwards (Z axis) M569 P0.4 S1 D2 ; driver 0.4 goes forwards (Z axis) M569 P0.5 S1 D2 ; driver 0.5 goes forwards (Z axis) M569 P121.0 S1 D2 ; driver 121.0 goes forwards (extruder 0) ; Motor Idle Current Reduction M906 I30 ; set motor current idle factor M84 S30 ; set motor current idle timeout ; Axes ; Define positions of Z motors M584 X0.0 Y0.1 Z0.2:0.3:0.4:0.5 ; map Z to drivers 0.2, 0.3, 0.4, 0.5 M671 X0:0:1110:1110 Y0:1110:1110:0 S0.5 ; positions of Z motors, max deviation 1mm M350 X16 Y16 Z16 I1 ; configure microstepping with interpolation M906 X2500 Y2500 Z2500 ; set axis driver currents M92 X20 Y20 Z6400 ; configure steps per mm M208 X0 Y0 Z0 S1 ; set minimum axis limits M208 X1110 Y1110 Z2005 S0 ; set maximum axis limits M566 X1200 Y1200 Z200 ; set maximum instantaneous speed changes (mm/min) M203 X12000 Y12000 Z300 ; set maximum speeds (mm/min) M201 X1500 Y1500 Z300 ; set accelerations (mm/s^2) M557 X50:10600 Y50:1060 S264 ; define mesh grid for compensation ; Extruders M584 E121.0 ; set extruder mapping M350 E16 I1 ; configure microstepping with interpolation M906 E800; set extruder driver current M92 E420 ; configure steps per mm M566 E120 ; set maximum instantaneous speed changes (mm/min) M203 E3600 ; set maximum speeds (mm/min) M201 E250 ; set accelerations (mm/s^2) ; Kinematics M669 K1 ; configure CoreXY kinematics ; Probes M558 K0 P9 C"^121.io0.in" H5 F120 T6000 A5 S0.02 ; configure BLTouch probe G31 P500 X0 Y0 Z0.7 ; set Z probe trigger value, offset and trigger height M950 S0 C"121.io0.out" ; create servo for BLtouch ; Endstops M574 X1 P"121.io1.in" S1 ; configure X endstop M574 Y1 P"io0.in" S1 ; configure Y endstop M574 Z1 S2 ; configure Z endstop ; Sensors M308 S2 P"temp0" Y"pt1000" A"Heated Bed1" ; configure bed sensor 1 M308 S3 P"temp1" Y"pt1000" A"Heated Bed2" ; configure bed sensor 2 M308 S4 Y"average" A"Bed Temp" H2:3 ; average of S2 and S3 M308 S1 P"121.temp0" Y"pt1000" A"Nozzle" ; configure nozzle sensor ; Heaters M950 H0 C"out1" T4 ; create heater 0 for bed M140 H0 ; assign bed to heater 0 M143 H0 S140 ; configure heater monitor for heater 0 M307 H0 R2.43 D5.5 E1.35 K0.56 B1 ; configure heater model M950 H1 C"121.out0" T1 ; create heater 1 for extruder M143 H1 S285 ; configure heater monitor for heater 1 M307 H1 R2.43 D5.5 E1.35 K0.56 B0 ; configure heater model ; Heated beds M140 P0 H0 ; assign bed to heater 0 ; Fans M950 F0 C"121.out1" ; create fan 0 M106 P0 C"Tool Fan" S0 B0.1 H1 T50 ; configure tool fan M950 F1 C"121.out2" ; create fan 1 M106 P1 C"Part Fan" S0 L0 X1 B0.1 ; configure part fan ; Tools M563 P0 S"Tool 0" D0 H1 F0 ; create tool 0 G10 P0 X0 Y0 Z0 ; set tool offsets G10 P0 R0 S0 ; set tool temperatures ; Miscellaneous T0 ; select tool 0 M591 D0 P1 C"121.io2.in" S1 ; custom setting
-
@meki05 the documentation for M671 says that it must come after the M669 - which is not the case in your config.g - might be worth swapping the order.
I ended up putting my M671 in bed.g
-
@dwuk3d looking at the code - ZLeadscrewKinematics.cpp it looks like setting numLeadscrews = xSize - is the critical line - as this field needs to be >1 - and this only seems to be called when M671 is called with KinematicsType not set to CoreXZ -
When I had this issue it was because xSize didn't equal ySize - because I had specified the list of X and Y coordinates incorrectly.
bool ZLeadscrewKinematics::Configure(unsigned int mCode, GCodeBuffer& gb, const StringRef& reply, bool& error) THROWS(GCodeException) { if (mCode == 671 && GetKinematicsType() != KinematicsType::coreXZ) { // Configuring leadscrew positions. // We no longer require the number of leadscrews to equal the number of motors. If there is a mismatch then auto calibration just prints the corrections. // We now allow just 1 pair of coordinates to be specified, which in effect clears the M671 settings. bool seenX = false, seenY = false; size_t xSize = MaxLeadscrews, ySize = MaxLeadscrews; if (gb.Seen('X')) { gb.GetFloatArray(leadscrewX, xSize, false); seenX = true; } if (gb.Seen('Y')) { gb.GetFloatArray(leadscrewY, ySize, false); seenY = true; } bool seenPFS = false; gb.TryGetFValue('S', maxCorrection, seenPFS); gb.TryGetFValue('P', screwPitch, seenPFS); gb.TryGetFValue('F', correctionFactor, seenPFS); if (seenX && seenY && xSize == ySize) { for (float& v : lastCorrections) { v = 0.0; } numLeadscrews = xSize;
-
@dwuk3d Thank you very much, the problem has been solved.
-
undefined Phaedrux marked this topic as a question
-
undefined Phaedrux has marked this topic as solved