markniu / Bed_Distance_sensor

Auto bed level with High resolution distance sensor
281 stars 28 forks source link

Can't home with new firmware #102

Closed Mharasim1 closed 7 months ago

Mharasim1 commented 8 months ago

After flashing new firmware im getting this error when trying to home z: Unable to read tmc uart 'stepper_z' register DRV_STATUS Z axis moves fine if i use SET_KINEMATIC_POSITION There are a few BD Sensor errors in klippy.log klippy (9).log

markniu commented 8 months ago

did it happen every time while homing? how about send M102 S-1 before homing gcode G28?

Mharasim1 commented 8 months ago

I get this after sending M102 S-1 : BDsensorVer:V1.1bpandapi3d.com ,switch_mode=1,collision_homing=1,collision_cal=1 but it still doesent home. It was homing before i flashed new firmware to the sensor @markniu

markniu commented 8 months ago

the bd sensor and tmc are two independent from the hardware and code, so not sure what's the reason. one way you can try to debug: remove the BDsensor section and replace the endstop_pin: probe:z_virtual_endstop with endstop_pin:PB8 in the stepper_z section, move the nozzle far enough from the bed and home again to see if the z axis is moves towards to the bed direction, and then power off the printer.

markniu commented 8 months ago

for the klippery source code, seems the error is that it can not read data from the tmc and timeout. image

Mharasim1 commented 8 months ago

I removed bd sensor section and and removed endstop_pin: probe:z_virtual_endstop and it tried to home fine. but when i add bd sensor to config i get tmc error So its something from BD sensor that is causing that @markniu

markniu commented 8 months ago

could you try to replace a code in the BDsensor.py as following? that will let the homing process as old firmware.

before

  def home_start(self, print_time, sample_time, sample_count, rest_time,
                   triggered=True):
        self.BD_Sensor_Read(2)
        if "V1." not in self.bdversion:
            self.BD_version(self.gcode)
        clock = self.mcu_endstop.print_time_to_clock(print_time)

after


  def home_start(self, print_time, sample_time, sample_count, rest_time,
                   triggered=True):
        self.BD_Sensor_Read(2)
        self.switch_mode = 0
        clock = self.mcu_endstop.print_time_to_clock(print_time)