Closed lukasradek closed 10 months ago
You reported that the problem exists in 2.1.2 and also that you tested the latest bugfix-2.1.x, but there are some big changes in bugfix-2.1.x and you didn't mention if there were any changes in behavior. It would be helpful to know what if any differences you observed.
Meanwhile, I'll have a look at the log you posted and see about recruiting the contributor who assisted with the latest probing changes.
I have discovered it on my 2.1.2 build and further tested in on bugfix to satisfy the bug report policy and it all seemed the same.
I also ran into this bug yesterday with bugfix-2.1.x on Ender 3 and SKR-MINI-V3. It disappeared when downgrading to 2.0.x
I have done some measurements and I can confirm, that those probes use different voltages on the signal wire.
Both probes were wired into the same "Level", which supplied them with 24V.
TronXY Blue probe (capacitive or inductive). Idle state - 12V on signal wire Triggered state - 0V on signal wire
TronXY Black probe (optical). Idle state - 4.2V on signal wire Triggered state - 0V on signal wire
Edit:
I tried my old 2.0.9.5 build and on that, the new probe behaves badly for all the homing triggers - every trigger (except TramWiz, that I haven't tried) behaves as Group B.
I tried the 2.0.x branch (Auto Build Marlin showing 2.0.9.6) and bugfix-2.0.x branch and it behaves the same as bugfix 2.1.x.
We have something!!
These are 2 serial logs from the same machine with the SAME HARDWARE (including the Z probe).
```prolog >>> g28 SENDING:G28 echo:G28 >>> G28 X-9.00 Y-6.00 Z0.00 Machine Type: CoreCartesian Probe: FIX_MOUNTED_PROBE Probe Offset X-40.00 Y0.00 Z0.00 (Left-Center & Same Z as Nozzle) Auto Bed Leveling: BILINEAR (disabled) >>> set_bed_leveling_enabled X-9.00 Y-6.00 Z0.00 <<< set_bed_leveling_enabled X-9.00 Y-6.00 Z0.00 remember_feedrate_scaling_off: fr=66.67 100% Raise Z before homing: do_z_clearance(5.00 [0.00 to 5.00], 0) do_blocking_move_to_z(5.00, 8.00) >>> do_blocking_move_to X-9.00 Y-6.00 Z0.00 > X-9.00 Y-6.00 Z5.00 <<< do_blocking_move_to X-9.00 Y-6.00 Z5.00 >>> homeaxis(X) Homing bump is planned0Length mm-5.00 Home Fast: -778.50mm >>> do_homing_move X-9.00 Y-6.00 Z5.00 ...(X, -778.50, [50.00]) is_home_dir 1 echo:busy: processing echo:busy: processing echo:busy: processing ENDSTOP TRIGGERED planner fn <<< do_homing_move X-9.00 Y-6.00 Z5.00 Move Away: 5.00mm >>> do_homing_move X-9.00 Y-6.00 Z5.00 ...(X, 5.00, [50.00]) is_home_dir 0 <<< do_homing_move X-9.00 Y-6.00 Z5.00 Re-bump: -10.00mm >>> do_homing_move X-9.00 Y-6.00 Z5.00 ...(X, -10.00, 25.00) is_home_dir 1 ENDSTOP TRIGGERED planner fn <<< do_homing_move X-9.00 Y-6.00 Z5.00 >>> set_axis_is_at_home(X) Axis X home_offset = 0.00 position_shift = 0.00 > home_offset[X] = 0.00 current_position= X-9.00 Y-6.00 Z5.00 : <<< set_axis_is_at_home(X) current_position= X-9.00 Y-6.00 Z5.00 : sync_plan_position current_position= X-9.00 Y-6.00 Z5.00 : > AFTER set_axis_is_at_home <<< homeaxis(X) >>> homeaxis(Y) Homing bump is planned0Length mm-5.00 Home Fast: -759.00mm >>> do_homing_move X-9.00 Y-6.00 Z5.00 ...(Y, -759.00, [50.00]) is_home_dir 1 echo:busy: processing echo:busy: processing echo:busy: processing ENDSTOP TRIGGERED planner fn <<< do_homing_move X-9.00 Y-6.00 Z5.00 Move Away: 5.00mm >>> do_homing_move X-9.00 Y-6.00 Z5.00 ...(Y, 5.00, [50.00]) is_home_dir 0 <<< do_homing_move X-9.00 Y-6.00 Z5.00 Re-bump: -10.00mm >>> do_homing_move X-9.00 Y-6.00 Z5.00 ...(Y, -10.00, 25.00) is_home_dir 1 ENDSTOP TRIGGERED planner fn <<< do_homing_move X-9.00 Y-6.00 Z5.00 >>> set_axis_is_at_home(Y) Axis Y home_offset = 0.00 position_shift = 0.00 > home_offset[Y] = 0.00 current_position= X-9.00 Y-6.00 Z5.00 : <<< set_axis_is_at_home(Y) current_position= X-9.00 Y-6.00 Z5.00 : sync_plan_position current_position= X-9.00 Y-6.00 Z5.00 : > AFTER set_axis_is_at_home <<< homeaxis(Y) >>> home_z_safely X-9.00 Y-6.00 Z5.00 Home Z Safely fn start current_position= X-9.00 Y-6.00 Z5.00 : sync_plan_position Point reachable1 destination= X290.00 Y250.00 Z5.00 : home_z_safely CALL: Blocking move to XY dest. do_blocking_move_to_xy(290.00, 250.00, 0.00) >>> do_blocking_move_to X-9.00 Y-6.00 Z5.00 > X290.00 Y250.00 Z5.00 echo:busy: processing echo:busy: processing <<< do_blocking_move_to X290.00 Y250.00 Z5.00 CALL: HomeAxis Z >>> homeaxis(Z) current_position= X290.00 Y250.00 Z5.00 : Probe::set_deployed deploy=1 no_return=0 Raise Z to 10.00 do_z_clearance(10.00 [5.00 to 10.00], 0) do_blocking_move_to_z(10.00, 8.00) >>> do_blocking_move_to X290.00 Y250.00 Z5.00 > X290.00 Y250.00 Z10.00 <<< do_blocking_move_to X290.00 Y250.00 Z10.00 >>> Probe::probe_specific_action X290.00 Y250.00 Z10.00 <<< Probe::probe_specific_action X290.00 Y250.00 Z10.00 >>> do_blocking_move_to X290.00 Y250.00 Z10.00 > X290.00 Y250.00 Z10.00 <<< do_blocking_move_to X290.00 Y250.00 Z10.00 Homing bump is planned1Length mm-5.00 Home Fast: -900.00mm >>> do_homing_move X290.00 Y250.00 Z10.00 ...(Z, -900.00, [4.00]) is_home_dir 1 echo:busy: processing echo:busy: processing ENDSTOP TRIGGERED planner fn <<< do_homing_move X290.00 Y250.00 Z10.00 Move Away: 5.00mm >>> do_homing_move X290.00 Y250.00 Z10.00 ...(Z, 5.00, 8.00) is_home_dir 0 echo:busy: processing <<< do_homing_move X290.00 Y250.00 Z10.00 Re-bump: -10.00mm >>> do_homing_move X290.00 Y250.00 Z10.00 ...(Z, -10.00, 2.00) is_home_dir 1 echo:busy: processing ENDSTOP TRIGGERED planner fn <<< do_homing_move X290.00 Y250.00 Z10.00 >>> set_axis_is_at_home(Z) *** Z homed with PROBE (Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) *** > (M851 Z0.00) Axis Z home_offset = 0.00 position_shift = 0.00 > home_offset[Z] = 0.00 current_position= X290.00 Y250.00 Z0.00 : <<< set_axis_is_at_home(Z) current_position= X290.00 Y250.00 Z0.00 : sync_plan_position current_position= X290.00 Y250.00 Z0.00 : > AFTER set_axis_is_at_home current_position= X290.00 Y250.00 Z0.00 : Probe::set_deployed deploy=0 no_return=0 >>> Probe::probe_specific_action X290.00 Y250.00 Z0.00 <<< Probe::probe_specific_action X290.00 Y250.00 Z0.00 >>> do_blocking_move_to X290.00 Y250.00 Z0.00 > X290.00 Y250.00 Z0.00 <<< do_blocking_move_to X290.00 Y250.00 Z0.00 <<< homeaxis(Z) <<< home_z_safely X290.00 Y250.00 Z0.00 current_position= X290.00 Y250.00 Z0.00 : sync_plan_position >>> do_move_after_z_homing X290.00 Y250.00 Z0.00 <<< do_move_after_z_homing X290.00 Y250.00 Z0.00 restore_feedrate_and_scaling: fr=66.67 100% <<< G28 X290.00 Y250.00 Z0.00 ```
```prolog >>> G28 X290.00 Y250.00 Z0.00 Machine Type: CoreCartesian Probe: FIX_MOUNTED_PROBE Probe Offset X-40.00 Y0.00 Z0.00 (Left-Center & Same Z as Nozzle) Auto Bed Leveling: BILINEAR (disabled) >>> set_bed_leveling_enabled X290.00 Y250.00 Z0.00 <<< set_bed_leveling_enabled X290.00 Y250.00 Z0.00 remember_feedrate_scaling_off: fr=66.67 100% Raise Z before homing: do_z_clearance(5.00 [0.00 to 5.00], 0) do_blocking_move_to_z(5.00, 8.00) >>> do_blocking_move_to X290.00 Y250.00 Z0.00 > X290.00 Y250.00 Z5.00 <<< do_blocking_move_to X290.00 Y250.00 Z5.00 >>> homeaxis(X) Homing bump is planned0Length mm-5.00 Home Fast: -778.50mm >>> do_homing_move X290.00 Y250.00 Z5.00 ...(X, -778.50, [50.00]) is_home_dir 1 echo:busy: processing echo:busy: processing echo:busy: processing ENDSTOP TRIGGERED planner fn <<< do_homing_move X290.00 Y250.00 Z5.00 Move Away: 5.00mm >>> do_homing_move X290.00 Y250.00 Z5.00 ...(X, 5.00, [50.00]) is_home_dir 0 <<< do_homing_move X290.00 Y250.00 Z5.00 Re-bump: -10.00mm >>> do_homing_move X290.00 Y250.00 Z5.00 ...(X, -10.00, 25.00) is_home_dir 1 ENDSTOP TRIGGERED planner fn <<< do_homing_move X290.00 Y250.00 Z5.00 >>> set_axis_is_at_home(X) Axis X home_offset = 0.00 position_shift = 0.00 > home_offset[X] = 0.00 current_position= X-9.00 Y250.00 Z5.00 : <<< set_axis_is_at_home(X) current_position= X-9.00 Y250.00 Z5.00 : sync_plan_position current_position= X-9.00 Y250.00 Z5.00 : > AFTER set_axis_is_at_home <<< homeaxis(X) >>> homeaxis(Y) Homing bump is planned0Length mm-5.00 Home Fast: -759.00mm >>> do_homing_move X-9.00 Y250.00 Z5.00 ...(Y, -759.00, [50.00]) is_home_dir 1 echo:busy: processing echo:busy: processing echo:busy: processing ENDSTOP TRIGGERED planner fn <<< do_homing_move X-9.00 Y250.00 Z5.00 Move Away: 5.00mm >>> do_homing_move X-9.00 Y250.00 Z5.00 ...(Y, 5.00, [50.00]) is_home_dir 0 <<< do_homing_move X-9.00 Y250.00 Z5.00 Re-bump: -10.00mm >>> do_homing_move X-9.00 Y250.00 Z5.00 ...(Y, -10.00, 25.00) is_home_dir 1 ENDSTOP TRIGGERED planner fn <<< do_homing_move X-9.00 Y250.00 Z5.00 >>> set_axis_is_at_home(Y) Axis Y home_offset = 0.00 position_shift = 0.00 > home_offset[Y] = 0.00 current_position= X-9.00 Y-6.00 Z5.00 : <<< set_axis_is_at_home(Y) current_position= X-9.00 Y-6.00 Z5.00 : sync_plan_position current_position= X-9.00 Y-6.00 Z5.00 : > AFTER set_axis_is_at_home <<< homeaxis(Y) >>> home_z_safely X-9.00 Y-6.00 Z5.00 Home Z Safely fn start current_position= X-9.00 Y-6.00 Z5.00 : sync_plan_position Point reachable1 destination= X290.00 Y250.00 Z5.00 : home_z_safely CALL: Blocking move to XY dest. do_blocking_move_to_xy(290.00, 250.00, 0.00) >>> do_blocking_move_to X-9.00 Y-6.00 Z5.00 > X290.00 Y250.00 Z5.00 echo:busy: processing echo:busy: processing <<< do_blocking_move_to X290.00 Y250.00 Z5.00 CALL: HomeAxis Z >>> homeaxis(Z) current_position= X290.00 Y250.00 Z5.00 : Probe::set_deployed deploy=1 no_return=0 Raise Z to 10.00 do_z_clearance(10.00 [5.00 to 10.00], 0) do_blocking_move_to_z(10.00, 8.00) >>> do_blocking_move_to X290.00 Y250.00 Z5.00 > X290.00 Y250.00 Z10.00 <<< do_blocking_move_to X290.00 Y250.00 Z10.00 >>> Probe::probe_specific_action X290.00 Y250.00 Z10.00 <<< Probe::probe_specific_action X290.00 Y250.00 Z10.00 >>> do_blocking_move_to X290.00 Y250.00 Z10.00 > X290.00 Y250.00 Z10.00 <<< do_blocking_move_to X290.00 Y250.00 Z10.00 Homing bump is planned1Length mm-5.00 Home Fast: -900.00mm >>> do_homing_move X290.00 Y250.00 Z10.00 ...(Z, -900.00, [4.00]) is_home_dir 1 ENDSTOP TRIGGERED planner fn ENDSTOP TRIGGERED planner fn ENDSTOP TRIGGERED planner fn ENDSTOP TRIGGERED planner fn ENDSTOP TRIGGERED planner fn <<< do_homing_move X290.00 Y250.00 Z10.00 Move Away: 5.00mm >>> do_homing_move X290.00 Y250.00 Z10.00 ...(Z, 5.00, 8.00) is_home_dir 0 echo:busy: processing <<< do_homing_move X290.00 Y250.00 Z10.00 Re-bump: -10.00mm >>> do_homing_move X290.00 Y250.00 Z10.00 ...(Z, -10.00, 2.00) is_home_dir 1 ENDSTOP TRIGGERED planner fn ENDSTOP TRIGGERED planner fn ENDSTOP TRIGGERED planner fn ENDSTOP TRIGGERED planner fn ENDSTOP TRIGGERED planner fn <<< do_homing_move X290.00 Y250.00 Z10.00 >>> set_axis_is_at_home(Z) *** Z homed with PROBE (Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) *** > (M851 Z0.00) Axis Z home_offset = 0.00 position_shift = 0.00 > home_offset[Z] = 0.00 current_position= X290.00 Y250.00 Z0.00 : <<< set_axis_is_at_home(Z) current_position= X290.00 Y250.00 Z0.00 : sync_plan_position current_position= X290.00 Y250.00 Z0.00 : > AFTER set_axis_is_at_home current_position= X290.00 Y250.00 Z0.00 : Probe::set_deployed deploy=0 no_return=0 >>> Probe::probe_specific_action X290.00 Y250.00 Z0.00 <<< Probe::probe_specific_action X290.00 Y250.00 Z0.00 >>> do_blocking_move_to X290.00 Y250.00 Z0.00 > X290.00 Y250.00 Z0.00 <<< do_blocking_move_to X290.00 Y250.00 Z0.00 <<< homeaxis(Z) <<< home_z_safely X290.00 Y250.00 Z0.00 current_position= X290.00 Y250.00 Z0.00 : sync_plan_position >>> do_move_after_z_homing X290.00 Y250.00 Z0.00 <<< do_move_after_z_homing X290.00 Y250.00 Z0.00 restore_feedrate_and_scaling: fr=66.67 100% <<< G28 X290.00 Y250.00 Z0.00 ```
The difference are the extra "ENDSTOP TRIGGERED planner fn" logs that I have added into the void Planner::endstop_triggered(const AxisEnum axis)
function.
Meaning the issue is caused by the fact that the "re-bump" logic recieves endstop triggered immediately (as if they were buffered??). The probe itself is not triggered though, judging by its LED and checking the signal wire with multimeter.
@thinkyhead , @thisiskeithb , @ellensp I am afraid I cannot do much more here. I have tried to look into the endstop code but I don't have enough time to try to understand it in enough detail. Somebody who implemented it would be very appretiated.
This issue has had no activity in the last 60 days. Please add a reply if you want to keep this issue active, otherwise it will be automatically closed within 10 days.
Still a problem.
This issue has had no activity in the last 60 days. Please add a reply if you want to keep this issue active, otherwise it will be automatically closed within 10 days.
This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
Did you test the latest
bugfix-2.1.x
code?Yes, and the problem still exists.
Bug Description
I have a stock (electronics-wise) TronXY X5SA-500 Pro on which I decided to change the bed leveling probe. It uses the probe for homing Z. Original TronXY blue probe. New TronXY black TR probe.
The original probe worked flawlessly as expected.
After switching to the new one (no firmware change), I have noticed quite inconsistent and failing behaviour.
Basically there are 4 ways to trigger the homing procedure (on
COLOR_UI
). Group A: Send G28 via Pronterface Info screen -> Menu -> Motion -> Auto HomeGroup B: Info screen -> Motion GUI -> Home (house icon) Info screen -> Menu -> Motion -> Tramming Wizard (homing is done on wizard startup)
With the new probe, I can perform any number (I have tried 5) of consecutive homings that are initiated via Group A and it works just fine.
The first use of Group B trigger ends up in the following: X, Y homes fine Z homing first lowers the bed away from probe as expected. But then instead of starting to move the bed towards the probe to find home, the next move (there is a visible split second stop) is another bed lowering away from the probe. And that is it. The printer then behaves as if the homing was successful even though there wasn't any move towards the probe and the probe was never triggered (there is a trigger LED on the probe).
Any subsequent use of Group A or Group B triggers end up in the following: X, Y homes fine Z homing first lowers the bed away from probe as expected. Starts to move the bed towards the probe to find home, as expected. Probe triggers, bed starts moving away from probe to prepare for re-bump, as expected. But it never starts moving towards the probe again (for the re-bump). It just stops after the pre-re-bump back off move. The printer again behaves as if the homing was successful.
Simply put... after printer boot up I can successfully home using the Group A triggers "unlimited" number of times (I have tried 5). Once I use Group B trigger, it stops working for any trigger (with the first fail behaviour being different from the subsequent ones). Printer reboot puts me back on the beginning again.
I also include debug data from Pronterface terminal, but except 2 "busy processing" entries, they are the same for all cases. I have included logs from successful Group A homing, logs from the first Group B fail and logs from the subsequent fail.
I have heard some "rumors" that I haven't confirmed yet, that the new probe has a different trigger voltage (not inverted state) but since Marlin can use it successfully, I presume it is not the issue here.
Bug Timeline
I discovered it on 2.1.2.
Expected behavior
Successful and consistent homing.
Actual behavior
Inconsistent a failing homing described above.
Steps to Reproduce
No response
Version of Marlin Firmware
2.1.2
Printer model
Tronxy X5SA-500 Pro
Electronics
Chitu V6 board (stock)
Add-ons
Tronxy TR Black sensor (see description)
Bed Leveling
ABL Bilinear mesh
Your Slicer
Prusa Slicer
Host Software
Pronterface
Don't forget to include
Configuration.h
andConfiguration_adv.h
.Additional information & file uploads
evidence.zip