add PROBE_CALIBRATE

This commit is contained in:
Sgr A* VMT
2024-04-21 20:34:43 +08:00
parent c7538abdd9
commit 26a8e0d232

35
idm.py
View File

@@ -24,6 +24,7 @@ from . import probe
from . import bed_mesh from . import bed_mesh
from . import thermistor from . import thermistor
from . import adc_temperature from . import adc_temperature
from . import manual_probe
from mcu import MCU, MCU_trsync from mcu import MCU, MCU_trsync
from clocksync import SecondarySync from clocksync import SecondarySync
@@ -42,6 +43,7 @@ class IDMProbe:
self.x_offset = config.getfloat("x_offset", 0.0) self.x_offset = config.getfloat("x_offset", 0.0)
self.y_offset = config.getfloat("y_offset", 0.0) self.y_offset = config.getfloat("y_offset", 0.0)
self.probe_calibrate_z = 0.
self.trigger_distance = config.getfloat("trigger_distance", 2.0) self.trigger_distance = config.getfloat("trigger_distance", 2.0)
self.trigger_dive_threshold = config.getfloat("trigger_dive_threshold", 1.0) self.trigger_dive_threshold = config.getfloat("trigger_dive_threshold", 1.0)
@@ -128,12 +130,45 @@ class IDMProbe:
desc=self.cmd_PROBE_help) desc=self.cmd_PROBE_help)
self.gcode.register_command("PROBE_ACCURACY", self.cmd_PROBE_ACCURACY, self.gcode.register_command("PROBE_ACCURACY", self.cmd_PROBE_ACCURACY,
desc=self.cmd_PROBE_ACCURACY_help) desc=self.cmd_PROBE_ACCURACY_help)
self.gcode.register_command('PROBE_CALIBRATE', self.cmd_PROBE_CALIBRATE,
desc=self.cmd_PROBE_CALIBRATE_help)
self.gcode.register_command("Z_OFFSET_APPLY_PROBE", self.gcode.register_command("Z_OFFSET_APPLY_PROBE",
self.cmd_Z_OFFSET_APPLY_PROBE, self.cmd_Z_OFFSET_APPLY_PROBE,
desc=self.cmd_Z_OFFSET_APPLY_PROBE_help) desc=self.cmd_Z_OFFSET_APPLY_PROBE_help)
# Event handlers # Event handlers
def _move(self, coord, speed):
self.printer.lookup_object('toolhead').manual_move(coord, speed)
cmd_PROBE_CALIBRATE_help = "Calibrate the probe's z_offset"
def probe_calibrate_finalize(self, kin_pos):
if kin_pos is None:
return
z_offset = self.probe_calibrate_z - kin_pos[2]
self.gcode.respond_info(
"%s: z_offset: %.3f\n"
"The SAVE_CONFIG command will update the printer config file\n"
"with the above and restart the printer." % (self.name, z_offset))
configfile = self.printer.lookup_object('configfile')
configfile.set("idm model " + self.model.name, 'model_offset', "%.3f" % (z_offset,))
def cmd_PROBE_CALIBRATE(self, gcmd):
manual_probe.verify_no_manual_probe(self.printer)
# Perform initial probe
lift_speed = self.get_lift_speed(gcmd)
curpos = self.run_probe(gcmd)
# Move away from the bed
self.probe_calibrate_z = curpos[2]
curpos[2] += 5.
self._move(curpos, lift_speed)
# Move the nozzle over the probe point
curpos[0] += self.x_offset
curpos[1] += self.y_offset
self._move(curpos, self.speed)
# Start manual probe
manual_probe.ManualProbeHelper(self.printer, gcmd,
self.probe_calibrate_finalize)
def _handle_connect(self): def _handle_connect(self):
self.phoming = self.printer.lookup_object("homing") self.phoming = self.printer.lookup_object("homing")
self.mod_axis_twist_comp = self.printer.lookup_object( self.mod_axis_twist_comp = self.printer.lookup_object(