def _probe(self, speed): toolhead = self.printer.lookup_object('toolhead') curtime = self.printer.get_reactor().monotonic() if 'z' not in toolhead.get_status(curtime)['homed_axes']: raise self.printer.command_error("Must home before probe") homing_state = homing.Homing(self.printer) pos = toolhead.get_position() pos[2] = self.z_position endstops = [(self.mcu_probe, "probe")] verify = self.printer.get_start_args().get('debugoutput') is None try: homing_state.homing_move(pos, endstops, speed, probe_pos=True, verify_movement=verify) except self.printer.command_error as e: reason = str(e) if "Timeout during endstop homing" in reason: reason += HINT_TIMEOUT raise self.printer.command_error(reason) pos = toolhead.get_position() self.gcode.respond_info("probe at %.3f,%.3f is z=%.6f" % (pos[0], pos[1], pos[2])) return pos[:3]
def _home_axis(self, axis): homing_state = homing.Homing(self.selector_tool) homing_state.set_no_verify_retract() try: homing_state.home_axes(axis) except homing.EndstopError as e: # TODO: Instead of responding with an error # Give user a chance to recover self.gcode.respond_error(str(e))
def cmd_PROBE(self, params): toolhead = self.printer.lookup_object('toolhead') homing_state = homing.Homing(toolhead) pos = toolhead.get_position() pos[2] = self.z_position try: homing_state.homing_move(pos, [(self.mcu_probe, "probe")], self.speed, probe_pos=True) except homing.EndstopError as e: raise self.gcode.error(str(e)) self.gcode.reset_last_position()
def cmd_G28(self, gcmd): # Move to origin axes = [] for pos, axis in enumerate('XYZ'): if gcmd.get(axis, None) is not None: axes.append(pos) if not axes: axes = [0, 1, 2] homing_state = homing.Homing(self.printer) homing_state.home_axes(axes) for axis in homing_state.get_axes(): self.base_position[axis] = self.homing_position[axis]
def cmd_TRAM_Z(self, params): if self.z_rail is None: self.gcode.respond_info("Unable to locate z-rail, aborting") return toolhead = self.printer.lookup_object('toolhead') z_tmc2130 = self.printer.lookup_object('tmc2130 stepper_z') event_time = self.reactor.monotonic() status = toolhead.get_status(event_time) if status['status'] == "Printing": self.gcode.respond_info("Cannot Tram during a print, aborting") return if self.tmc_z_endstop is None: # TODO: Already Using TMC to home. Just homing max, home # to top, move up 10mm? return homing_max = self.z_rail.position_max speed = self.z_rail.homing_speed self.z_rail.position_max = 230. cur_pos = toolhead.get_position() start_pos = list(cur_pos) move_pos = list(cur_pos) start_pos[2] = self.z_rail.position_min move_pos[2] = 220.0 toolhead.set_position(start_pos, homing_axes=[2]) move_d = abs(220.0 - self.z_rail.position_min) est_steps = sum( [move_d / s.get_step_dist() for s in self.z_rail.get_steppers()]) dwell_t = est_steps * homing.HOMING_STEP_DELAY home = homing.Homing(self.printer) try: home.homing_move(move_pos, [self.tmc_z_endstop], speed, dwell_t=dwell_t) except homing.EndstopError as e: reason = str(e) raise self.gcode.error(reason) toolhead.wait_moves() if self.tram_current is not None: z_tmc2130.set_current_regs(self.tram_current, z_tmc2130.hold_current) # Move up 10mm for tramming next_pos = toolhead.get_position() next_pos[2] += 10 toolhead.move(next_pos, 10.) next_pos[2] -= 50 toolhead.move(next_pos, 10.) toolhead.wait_moves() toolhead.motor_off() if self.tram_current is not None: z_tmc2130.set_current_regs(z_tmc2130.run_current, z_tmc2130.hold_current) self.z_rail.position_max = homing_max
def cmd_PROBE(self, params): toolhead = self.printer.lookup_object('toolhead') homing_state = homing.Homing(toolhead) pos = toolhead.get_position() pos[2] = self.z_position try: homing_state.homing_move( pos, [(self.mcu_probe, "probe")], self.speed, probe_pos=True) except homing.EndstopError as e: reason = str(e) if "Timeout during endstop homing" in reason: reason += HINT_TIMEOUT raise self.gcode.error(reason) self.gcode.reset_last_position()
def cmd_G28(self, params): # Move to origin axes = [] for axis in 'XYZ': if axis in params: axes.append(self.axis2pos[axis]) if not axes: axes = [0, 1, 2] homing_state = homing.Homing(self.printer) if self.is_fileinput: homing_state.set_no_verify_retract() homing_state.home_axes(axes) for axis in homing_state.get_axes(): self.base_position[axis] = self.homing_position[axis] self.reset_last_position()
def cmd_G28(self, gcmd): # Move to origin axes = [] for pos, axis in enumerate('XYZ'): if gcmd.get(axis, None) is not None: axes.append(pos) if not axes: axes = [0, 1, 2] homing_state = homing.Homing(self.printer) if self.is_fileinput: homing_state.set_no_verify_retract() homing_state.home_axes(axes) for axis in homing_state.get_axes(): self.base_position[axis] = self.homing_position[axis] self.reset_last_position()
def cmd_PROBE(self, params): toolhead = self.printer.lookup_object('toolhead') homing_state = homing.Homing(toolhead) pos = toolhead.get_position() pos[2] = self.z_position try: homing_state.probing_move(pos, self.mcu_probe, self.speed) except homing.EndstopError as e: reason = str(e) if "Timeout during endstop homing" in reason: reason += HINT_TIMEOUT raise self.gcode.error(reason) pos = toolhead.get_position() self.gcode.respond_info("probe at %.3f,%.3f is z=%.6f" % (pos[0], pos[1], pos[2])) self.gcode.reset_last_position()
def cmd_TRAM_Z(self, gcmd): if not self.enabled: gcmd.respond_info("TRAM_Z setup unsuccessful, aborting") return reactor = self.printer.get_reactor() toolhead = self.printer.lookup_object('toolhead') idle_timeout = self.printer.lookup_object('idle_timeout') z_tmc2130 = self.printer.lookup_object('tmc2130 stepper_z') rc, hc, homing_cur = z_tmc2130.get_current() event_time = reactor.monotonic() status = idle_timeout.get_status(event_time) if status['state'] == "Printing": gcmd.respond_info("Cannot Tram during a print, aborting") return if self.tmc_z_endstop is None: # TODO: Already Using TMC to home. Just homing max, home # to top, move up 10mm? return homing_max = self.z_rail.position_max speed = self.z_rail.homing_speed self.z_rail.position_max = 230. cur_pos = toolhead.get_position() start_pos = list(cur_pos) move_pos = list(cur_pos) start_pos[2] = self.z_rail.position_min move_pos[2] = 220.0 toolhead.set_position(start_pos, homing_axes=[2]) home = homing.Homing(self.printer) try: home.homing_move(move_pos, [self.tmc_z_endstop], speed) except homing.EndstopError as e: reason = str(e) raise gcmd.error(reason) toolhead.wait_moves() if self.tram_current is not None: z_tmc2130.set_current(self.tram_current, hc) # Move up 10mm for tramming next_pos = toolhead.get_position() next_pos[2] += 10 toolhead.move(next_pos, 10.) next_pos[2] -= 50 toolhead.move(next_pos, 10.) toolhead.wait_moves() self.gcode.run_script_from_command("M84") if self.tram_current is not None: z_tmc2130.set_current(rc, hc) self.z_rail.position_max = homing_max
def cmd_G28(self, params): # Move to origin axes = [] for axis in 'XYZ': if axis in params: axes.append(self.axis2pos[axis]) if not axes: axes = [0, 1, 2] homing_state = homing.Homing(self.toolhead, axes) if self.is_fileinput: homing_state.set_no_verify_retract() try: self.toolhead.home(homing_state) except homing.EndstopError, e: self.toolhead.motor_off() self.respond_error(str(e)) return
def cmd_G28(self, params): # Move to origin axes = [] for axis in 'XYZ': if axis in params: axes.append(self.axis2pos[axis]) if not axes: axes = [0, 1, 2] homing_state = homing.Homing(self.toolhead) if self.is_fileinput: homing_state.set_no_verify_retract() try: homing_state.home_axes(axes) except homing.EndstopError as e: raise error(str(e)) for axis in homing_state.get_axes(): self.base_position[axis] = self.homing_position[axis] self.reset_last_position()
def _probe(self, speed): toolhead = self.printer.lookup_object('toolhead') homing_state = homing.Homing(self.printer) pos = toolhead.get_position() pos[2] = self.z_position endstops = [(self.mcu_probe, "probe")] verify = self.printer.get_start_args().get('debugoutput') is None try: homing_state.homing_move(pos, endstops, speed, probe_pos=True, verify_movement=verify) except homing.EndstopError as e: reason = str(e) if "Timeout during endstop homing" in reason: reason += HINT_TIMEOUT raise self.gcode.error(reason) pos = toolhead.get_position() self.gcode.respond_info("probe at %.3f,%.3f is z=%.6f" % ( pos[0], pos[1], pos[2])) self.gcode.reset_last_position()
def cmd_G28(self, params): # Move to origin axes = [] for axis in 'XYZ': if axis in params: axes.append(self.axis2pos[axis]) if not axes: axes = [0, 1, 2] homing_state = homing.Homing(self.toolhead, axes) if self.is_fileinput: homing_state.set_no_verify_retract() try: self.toolhead.home(homing_state) except homing.EndstopError as e: self.toolhead.motor_off() self.respond_error(str(e)) return newpos = self.toolhead.get_position() for axis in homing_state.get_axes(): self.last_position[axis] = newpos[axis] self.base_position[axis] = -self.homing_add[axis]
def _probe(self, speed): pheater = self.printer.lookup_object('heater') try: heater_bed = pheater.lookup_heater("heater_bed") except self.printer.config_error as e: heater_bed = None if heater_bed is not None and self.disable_bed_heater: heated_bed_target_temp = heater_bed.target_temp self.gcode.respond_info("Heated bed target temp before probe" + " run: %.1f degrees" % heated_bed_target_temp) heater_bed.set_temp(0., 0.) toolhead = self.printer.lookup_object('toolhead') homing_state = homing.Homing(self.printer) pos = toolhead.get_position() pos[2] = self.z_position endstops = [(self.mcu_probe, "probe")] verify = self.printer.get_start_args().get('debugoutput') is None try: homing_state.homing_move(pos, endstops, speed, probe_pos=True, verify_movement=verify) except homing.CommandError as e: reason = str(e) if "Timeout during endstop homing" in reason: reason += HINT_TIMEOUT raise homing.CommandError(reason) pos = toolhead.get_position() self.gcode.respond_info("probe at %.3f,%.3f is z=%.6f" % ( pos[0], pos[1], pos[2])) self.gcode.reset_last_position() if heater_bed is not None and self.disable_bed_heater: heater_bed.set_temp(0., heated_bed_target_temp) self.gcode.respond_info("Heater bed reset to %.1f degrees" % heated_bed_target_temp) return pos[:3]