G32 and This kinematics does not support auto-calibration
-
Good morning/afternoon all!
I've setup a rail system and a new E3D hotend for my Ender 5 Plus and while I've been working on recalibrating my Bed size, offsets, and mesh coordinates, I've run into a problem with my
G32
command telling me the kinematics don't support the auto calibration.I've looked through a few previous posts and read the gcode documentation, and while I have 4 coordinates configured in
M671
and 4 probe points configured in G30, I still get the above error. I can't seem to find the spot where this error is coming from...I can run
G32
and it probes my 4 points as expected, but I can't get any output to adjust me screws.I've put my files below, would love any insight someone might have:
config.g
; Configuration file for Duet WiFi (firmware version 3.4 beta 7) ; executed by the firmware on start-up ; ###################################################### ; General preferences ; ###################################################### G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Stargate SG-1 - Jackson" ; set printer name ; ###################################################### ; Global Variables ; ###################################################### global g_move_forward = 5 ; can be used to always move Z to known height global g_move_back = -{global.g_move_forward} ; can be used to always move Z to known height global g_axes_speeds = 6000 ; Speeds to move axes during homing ; Z-Lead Screw Positions global l_zlead_screw_x = 30 global r_zlead_screw_x = 335 global zlead_screw_y = 208 ; 4-P Bed Levelling Positions global fl_screw_x = 30 global fl_screw_y = 76.8 global fr_screw_x = 310 global fr_screw_y = 76.8 global bl_screw_x = 30 global bl_screw_y = 338 global br_screw_x = 310 global br_screw_y = 338 global g_print_end_mode = "HEAT OFF" ; determines if heaters are turned off when print is done global g_map_mode = "FULL" ; determines which kind of height map is created/loaded global g_probe_mode = "TWO" ; determines if z proving used consecutive or averaging global g_level_mode = "3PT" ; determines if 3 or 4 points are used for leveling ; BL-Touch Probe Offsets global probe_offset_x = -39 ; BL Touch X offset global probe_offset_y = 39.3 ; BL Touch Y offset global probe_offset_z = 1.523 ; BL Touch Z offset ; ###################################################### ; Network ; ###################################################### M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; ###################################################### ; Drives ; ###################################################### M569 P0 S0 ; X drive 0 goes backwards M569 P1 S1 ; Y drive 1 goes backwards M569 P2 S1 ; Z1 drive 2 goes forwards M569 P3 S0 ; E drive 3 goes backwards M584 X0 Y1 Z2 E3 ; set drive mapping ; ###################################################### ; Movement ; ###################################################### M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X80.00 Y80.00 Z800.00 E409 ; set steps per mm M566 X900.00 Y900.00 Z300.00 E2000.00 P1 ; set maximum instantaneous speed changes (mm/min) M203 X6000.00 Y6000.00 Z900.00 E6000.00 ; set maximum speeds (mm/min) M201 X500.00 Y500.00 Z500.00 E3000.00 ; set accelerations (mm/s^2) 200 M906 X800 Y800 Z800 E800 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; ###################################################### ; Axis Min/Max ; ###################################################### M208 S1 X25 Y9 Z-10 ; set axis minima M208 S0 X380 Y350 Z400 ; set axis maxima ; ###################################################### ; Endstops ; ###################################################### M574 X2 S1 P"xstop" ; configure active-high endstop for low end on X via pin xstop M574 Y2 S1 P"ystop" ; configure active-high endstop for low end on Y via pin ystop M574 Z1 S2 ; configure Z-probe endstop for low end on Z ; ###################################################### ; Kinematics ; ###################################################### M669 K0 ; ###################################################### ; Custom Probe config file ; ###################################################### M98 P"configs/probe_config.g" ; Config settings for my EZABL probe ; ###################################################### ; Heaters ; ###################################################### M308 S0 P"bedtemp" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin bedtemp M950 H0 C"bedheat" T0 ; create bed heater output on bedheat and map it to sensor 0 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"e0temp" Y"thermistor" T100000 B4138 ; configure sensor 1 as thermistor on pin e0temp M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1 M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H1 S285 ; set temperature limit for heater 1 to 280C ; ###################################################### ; Fans ; ###################################################### ;M950 F0 C"nil" ; Free up pin F0 ;M950 F0 C"fan1" Q500 ; Assign Fan0 for Prusa Slicer ;M106 P0 S0 H-1 M950 F0 C"nil" M950 F0 C"fan0" Q500 ; create fan 0 on pin fan3 and set its frequency M106 P0 S0 H1 T45 ; set fan 0 value. Thermostatic control 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 ; ###################################################### ; Custom Configurations ; ###################################################### ; Filament Runout Sensor M591 D0 P1 C"e0stop" S1 ; TFT Display Config M575 P1 S1 B57600 ; Miscellaneous M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss M501 ; load saved parameters from non-volatile memory
bed.g
; ###################################################### ; bed.g ; called to perform automatic bed compensation via G32 ; ###################################################### ; ###################################################### ; Probe points for my 4x Adjustment Knobs ; ###################################################### M671 X{global.fl_screw_x}:{global.fr_screw_x}:{global.bl_screw_x}:{global.br_screw_x} Y{global.fl_screw_y}:{global.fr_screw_y}:{global.bl_screw_y}:{global.br_screw_y} ; ###################################################### ; Home and probe near bed spring knobs ; Lead Screw Positions ; ###################################################### G28 Z; home G30 P0 X{global.probe_offset_x} + {global.fl_screw_x} Y{global.probe_offset_y} + {global.fl_screw_y} Z-9999 ; Front-Left G30 P1 X{global.probe_offset_x} + {global.fr_screw_x} Y{global.probe_offset_y} + {global.fr_screw_y} Z-9999 ; Front-Right G30 P3 X{global.probe_offset_x} + {global.bl_screw_x} Y{global.probe_offset_y} + {global.bl_screw_y} Z-9999; Back-Left G30 P2 X{global.probe_offset_x} + {global.br_screw_x} Y{global.probe_offset_y} + {global.br_screw_y} Z-9999 S4; Back-Right
-
@infidelprops
To do Auto Bed Leveling you have to have 3 or 4 Z axis lead screws/belts with a separate stepper for each one.
You config file only specifies one Z axis with one stepper.
Frederick
-
@fcwilt That's a bit weird... On my other Ender 5 printer, same setup as this one (but with different offsets/axis) and with that I am able to do a G32
config.g
; Configuration file for Duet WiFi (firmware version 3) ; executed by the firmware on start-up ; ###################################################### ; General preferences ; ###################################################### G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Stargate SG-1 - Oneill" ; set printer name ; ###################################################### ; Global Variables ; ###################################################### global g_move_forward = 5 ; can be used to always move Z to known height global g_move_back = -{global.g_move_forward} ; can be used to always move Z to known height global g_axes_speeds = 6000 ; Speeds to move axes during homing ; Lead Screw Positions global l_zlead_screw_x = 45 global r_zlead_screw_x = 307 global zlead_screw_y = 187.5 global g_print_end_mode = "HEAT OFF" ; determines if heaters are turned off when print is done global g_map_mode = "FULL" ; determines which kind of height map is created/loaded global g_probe_mode = "TWO" ; determines if z proving used consecutive or averaging global g_level_mode = "3PT" ; determines if 3 or 4 points are used for leveling ; ###################################################### ; Network ; ###################################################### M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; ###################################################### ; Drives ; ###################################################### M569 P0 S0 ; physical drive 0 goes backwards M569 P1 S0 ; physical drive 1 goes backwards M569 P2 S1 ; physical drive 2 goes forwards M569 P3 S1 ; physical drive 3 goes backwards M584 X0 Y1 Z2 E3 ; set drive mapping ; ###################################################### ; Movement ; ###################################################### M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X80.00 Y80.00 Z800.00 E138.00 ; set steps per mm M566 X900.00 Y900.00 Z300.00 E2000.00 P1 ; set maximum instantaneous speed changes (mm/min) M203 X6000.00 Y6000.00 Z900.00 E6000.00 ; set maximum speeds (mm/min) M201 X500.00 Y500.00 Z500.00 E3000.00 ; set accelerations (mm/s^2) 200 M906 X800 Y800 Z800 E800 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; ###################################################### ; Axis Min/Max ; ###################################################### M208 X5 Y0 Z-20 S1 ; set axis minima M208 X355 Y355 Z400 S0 ; set axis maxima ; ###################################################### ; Endstops ; ###################################################### M574 X2 S1 P"xstop" ; configure active-high endstop for low end on X via pin xstop M574 Y2 S1 P"ystop" ; configure active-high endstop for low end on Y via pin ystop M574 Z1 S2 ; configure Z-probe endstop for low end on Z ; ###################################################### ; Custom Probe config file ; ###################################################### M98 P"configs/probe_config.g" ; Config settings for my EZABL probe ; ###################################################### ; Heaters ; ###################################################### M308 S0 P"bedtemp" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin bedtemp M950 H0 C"bedheat" T0 ; create bed heater output on bedheat and map it to sensor 0 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"e0temp" Y"thermistor" T100000 B4138 ; configure sensor 1 as thermistor on pin e0temp M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat 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"nil" ; Free up pin F0 M950 F0 C"fan1" Q500 ; Assign Fan0 for Prusa Slicer and default for other slicers M106 P0 S0 H-1 M950 F1 C"nil" ; Free up pin F0 M950 F1 C"fan0" Q500 ; create fan 0 on pin fan3 and set its frequency M106 P1 S1 H1 T45 ; set fan 1 value. Thermostatic control is turned on ; ###################################################### ; Tools ; ###################################################### M563 P0 D0 H1 F1 ; 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 Configurations ; ###################################################### ; Filament Runout Sensor M591 D0 P1 C"e0stop" S1 ; TFT Display Config M575 P1 S1 B57600 ; Miscellaneous ; load saved parameters from non-volatile memory M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss M501
bed.g
; ###################################################### ; bed.g ; called to perform automatic bed compensation via G32 ; ###################################################### ; ###################################################### ; Probe points for my 4x bed scews with stock bed springs ; ###################################################### M671 X69:338:69:338 Y51:51:308:308 P0.5 ; Front-Left:Front-Right:Back-Left:Back-Right ; ###################################################### ; Home and probe near bed screws ; Lead Screw Positions ; ###################################################### G28 Z; home G30 P0 X127 Y58 Z-9999 ; Front-Left G30 P1 X380 Y58 Z-9999 ; Front-Right G30 P3 X127 Y318 Z-9999; Back-Left G30 P2 X380 Y318 Z-9999 S4; Back-Right ;G30 P4 X127 Y187.5 Z-9999 ; Left Lead Screw ;G30 P5 X380 Y187.5 Z-9999 S6; Right Lead Screw
-
@infidelprops said in G32 and This kinematics does not support auto-calibration:
M671 X{global.fl_screw_x}:{global.fr_screw_x}:{global.bl_screw_x}:{global.br_screw_x} Y{global.fl_screw_y}:{global.fr_screw_y}:{global.bl_screw_y}:{global.br_screw_y}
Can you send M671 by itself to see if it's evaluating your variables correctly?
Are you trying to do auto leveling or the manual leveling asssitant?
-
@phaedrux Thanks mate. I'm trying first the assisted bed levelling so I can adjust the bed knobs, and then I will go and get my G29 and mesh.
I just sent M671 and it says lead screws are not configured... I've put it in my config.g file towards the bottom of the file, and M671 still reports no leadscrews.
But what's interesting is I just replaced my variables with the actual values, and M671 now reports leadscrew coordinates configured.
;M671 X{global.fl_screw_x}:{global.fr_screw_x}:{global.bl_screw_x}:{global.br_screw_x} Y{global.fl_screw_y}:{global.fr_screw_y}:{global.bl_screw_y}:{global.br_screw_y} M671 X30:310:30:310 Y76.8:76.8:338:338
And now when I run G32, I get readings back to adjust the knobs. Is this a known feature where this Gcode doesn't accept variables?
-
@infidelprops you are using the wrong syntax for using variables in a parameter that takes several values. See https://duet3d.dozuki.com/Wiki/GCode_Meta_Commands#Section_Use_of_expressions_within_GCode_commands.
-
@dc42 ahhh, I did see that but didn't think it applied in this situation. Thanks for pointing that out mate