add PROBE_CALIBRATE
This commit is contained in:
35
idm.py
35
idm.py
@@ -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(
|
||||||
|
|||||||
Reference in New Issue
Block a user