Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FR] Support for BLTouch #17

Open
hawkeyexp opened this issue Sep 8, 2021 · 15 comments
Open

[FR] Support for BLTouch #17

hawkeyexp opened this issue Sep 8, 2021 · 15 comments

Comments

@hawkeyexp
Copy link

Hi, i tried your extra in knowledge of not tested with bltouch - all seems to work well but bltouch won't release pin to touch surface of endstop. Would it be possible to support the bltouch?

@bmkahl
Copy link

bmkahl commented Oct 26, 2021

Is there any more information if a BLTouch will be supported by this plugin?

@hawkeyexp
Copy link
Author

It would be great if a support is possible - i know the voron guys does net really like the BLTouch by thermal reasons, but my voron 2.4 is running since july 2021 without any thermal caused problems :-)

@electroleon
Copy link

I am not really sure how the BL Touch will work for this.

  1. The pin is not really rigid when retracted so nozzle probing will not be accurate
  2. The pin retracts higher than the nozzle, so you will effectively have a nozzle crash happen when you try to probe the BLTouch itself. So you would need a massive clearance around the nozzle probe to be able to have it work properly

@hawkeyexp
Copy link
Author

In general it should work with a bltouch but the offset for the z-endstop needs to be replaced with the bltouch one an the calculations

@TitusLabs
Copy link
Member

No, I'm sorry! A BLTouch would not work. It is impossible to measure the trigger point of the BLTouch to get everything in relations. For some use cases it might be sufficient to use a fixed offset for the BLTouch - but this would not be generally valid or even rock solid.

The BLTouch is a really nice idea to probe the bed - but only for open printers. In closed printers you get in trouble with higher temperatures. And this is not only because of the plastic pin on a hot print bed. There is also a metal clone out there with an IR trigger. But this would be much worse. You have the thermal expansion of the metal pin and changing trigger speeds of the electronics while getting hotter. This is why the simple dump switch is so unbeatable - believe it or not!!

@TitusLabs
Copy link
Member

Ok, I thought about it again. So, it might be possible...

The difference in such a system is, that the nozzle is lower as the BLTouch.

  • So it needs an abs function in the equation.
  • And it must be possible to drive the BLTouch on the endstop not crashing the nozzle into the bed.
  • Then it just needs the switch_offset of the BLTouch.

But don't know how this would perform... And I cannot give any support on this. Is there someone who wants to try it?

@hawkeyexp
Copy link
Author

hawkeyexp commented Mar 4, 2022

I have solved the problem myselve and created and simple but perfect working solution which is now running since weeks on more than my single printer.

https://github.com/hawkeyexp/auto_offset_z

For calculation it is "easy" - probing endstop surface and bed surface and the diff is the general offset - additional the way the endstop switch needs for moving until triggering the switch (datasheet ~ 0.5mm) - for the last adjust until the switch really triggers i added a manual offset in the config section. On first print the nozzle is a bit higher than needed which can be adjusted by babystepping and this value which was needed must be written to the config as manual adjust - that's it!

ps: if interested we can talk about :-) i'm available in the voron/youprint/mainsail discord.

@TitusLabs
Copy link
Member

Uh, I like it! So, you basically do it the other way around and define a switch_offset for the z endstop 😮
I will have a look how I could integrate such a use case..

@LeandroScovino
Copy link

This would be amazing. I have a previously closed source firmware 3D printer from Sethi 3D here in Brazil. This has a piezo button switch outside the bed, comparable to Voron's Z Endstop and a IR/Mechanical touch (like BLTouch) on the extruder.

The original firmware first home on the piezo button, than hit the nozzle on the piezo, calculating the difference offset disregarding the bed.

A year ago, I've retrofitted this printer with a new MCU to use klipper, as it has 4 Z motors... and this week I started working on writing a plugin to calculate the offset. I believe @hawkeyexp got this working.

Congrats you both!

image

@cpfarhood
Copy link

I have a CR Touch which isn't the huge disaster in heated enclosures that the BL Touch is. Also already have a separate z-endstop (sexbolt) wired up and working.

@TitusLabs
Copy link
Member

I know how the CR Touch works. The problem of all these solutions is that the electronics will also drift with increasing temperatures. So, the dump switch is still the best solution I can think of. But, I have to admit that not every printer is closed and reaches such high temperatures at the tool head.

Currently, I have no time for this topic..

@AfroPsycho
Copy link

What about this
if you connect the alligator to the nozzle
When nozzle touches to the metal surface it is going to act as a probe and clipper will know what is the zero point for nozzle
And then bl touch might probe on the metal surface and somehow if we can calculate the difference
That difference should be the z offset

@TitusLabs
Copy link
Member

The question is, what do you want to do with it? This is certainly a good method to measure the offset of the BLTouch. Go for it!

The BLTouch has its limits. If the printer is enclosed and the print bed is over 100 degrees and the X-axis is a good 90 degrees, then a lot changes. The resistances and capacitances in the electronics change... and the offset shifts.

For most printers the BLTouch is great! The offset should not change much once it is calibrated. Only if you change the nozzle, you have to repeat the offset procedure...

I don't see something I can do here with this plugin regarding the BLTouch 🤔

@grigi
Copy link

grigi commented May 16, 2023

I have a custom cartesian IDEX with a single bltouch on the primary head.
I just added a voron-style switch that the bltouch and both nozzles can reach.

The bltouch is very easy to actuate, so the microswitch will essentially be a static surface.

What I was hoping to do, is to only have to calibrate the voron-style nozzle switch actuation offset, and then use that to calculate the difference between the bed and each nozzle.

Because with multiple toolheads and FDM, you are significantly more sensitive to Z-offset errors than X/Y ones.

This should also take care of the drift on a BLTouch as the offset will be constant at the conditions of the time of measurement.
(I have observed a drift of about 0.05mm, which isn't catastrophic, but enough to notice)

Is there any work I can do to help add this as a supported use case?

@ameswarb
Copy link

ameswarb commented Oct 3, 2024

I was able to get this to work with my CR Touch with these modifications.

I am experiencing an issue however, and I'm not sure if it's caused by my changes.

With the script enabled, at around ~2 - 2.35mm (10 - 12 layers) of print height it stops properly lifting the Z-axis, causing excessive blobbing / zits for the next ~4.5 - 8mm. My 30mm calibration cubes where this issue is present are ~26.44mm tall.

Here's my potentially relevant blocks of printer config.

[stepper_z]
step_pin: PB0
dir_pin: PC5
enable_pin: !PB1
microsteps: 16
rotation_distance: 8
position_min: -3
position_max: 240
endstop_pin: PC2
position_endstop: 4.996

[tmc2209 stepper_z]
uart_pin: PC11
tx_pin: PC10
uart_address: 1
run_current: 0.580
hold_current: 0.500
stealthchop_threshold: 999999

[z_calibration]
nozzle_xy_position: 253, 117.5
switch_xy_position: 253,117.5
bed_xy_position: 117.5,117.5
switch_offset: 6.186
speed: 50.0
offset_margins: -6.0,6.0

[bltouch]
sensor_pin: ^PC14
control_pin: PA1
x_offset: -31.8
y_offset: -40.5
pin_up_reports_not_triggered: false

[bed_mesh]
speed: 120
horizontal_move_z: 15
mesh_min: 30, 20
mesh_max: 200, 195
probe_count: 9, 9
mesh_pps: 2, 3
algorithm: bicubic
bicubic_tension: 0.2
fade_start: 1
fade_end: 10
fade_target: 0

IMG_5355

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

9 participants