More often than not, we see BLtouch(s) not working on people's machine and with it, comes a series of hair pulling frustrations and some even toss their BLtouch(s) into the bin/ out the window.
While the firmware process is made easier with the help of Cheetah 5.0, our Marlin variant, there still seems to issues because the BLtouch is something that is not easyto install/ configure.
We get it; you buy it from Amazon/ a clone from Aliexpress because you saw people with videos who make it so easy. The video usually covers the following: They bolt it on with the included bolts and mounts received in the package, change a couple of codes in Arduino/ VScode and boom, their BLtouch now works. That's probably what 99% of the videos show.
That's far greater than the truth as we cannot tell you how much more complicated this process is.
Now, this is not to scare you. This is to tell you that you have to get everything right before your BLtouch works.
This guide is split into 3 easy to digest parts to help you understand what you really need and it will be based on Cheetah 5.0, a Marlin variant.
Part 1 - Wiring
The BLtouch usually has 5 wires and these 5 wires are very, very, very confusing. Because they are, we're going to not complicate things. Instead of calling them red, blue, yellow, or brown, we're going to identify them by their real names and their primary purpose.
We hope you will recognize them as
- G for Ground1
- 5V for Power
- S for Signal
- G for Ground2
- Z- / ZMIN for Z minimum
In every BLTOUCH, you will find these things/ ports labelled at two places.
You will find them on the BLTOUCH/clone themselves or on the documentation that comes with it. If you cannot find it, please reach out to the manufacturer. You need to know where these 5 ports are.
Image above shows the ports on the BLtouch/ clones themselves
Now that you know there are 5 ports, we're going to further split them into 2 parts and give you a basic overview on what each and everyone of them do
- G for Ground1: This grounds the BLtouch. If you are going to power it, you need to ground it.
- 5V for Power: This powers the BLtouch. Like a table lamp; you need to power it for it to work. Same for the BLtouch
- S for Signal: This is the port that the BLtouch sends the signal. It it responsible for communicating with your 3D printer's mainboard/ motherboard.
- G for Ground2: And because there is a need for a logic voltage change, you need a ground to complete the circuit.
- Z- / ZMIN for Z minimum: Together with Ground2, you need this wire to complete the circuit for a logic voltage change
A change in logic to the mainboard will indicate "something has triggered". Without a change in logic, the BLtouch cannot work as required. More on that later.
Have a good sense of where the wires are by now? Great, let's move on to the actual wiring of the BLtouch to the main board.
In this article, we're going to use BigTreeTech's SKR1.3 as an example. Now, it is important to know that your board is going to be different. You need to find out what your board's pins diagram look like. Do not follow colors guides on the internet.
You can find our your board's pins diagram by searching for it on Google. A good starting search term is "Pins diagram BTT SKR Mini e3 v1.2" or whatever board you are using.
Highlighted in the image above is a yellow box that has 3 ports. They are namely; +5V, GND, 2.0
These 3 wires are also known as SERVO Ports. And these 3 ports are connect to Part A of the 3 wires we discussed earlier on.
+5V in this case gets connected to 5V of BLtouch (Part A)
GND in this case gets connected to Ground1 of BLtouch (Part A)
2.0 in this case gets connected to Signal of BLtouch (Part A)
Regardless of what the internet tells you on what color goes to which port; they will not work unless they are connected correctly.
Alright now that we have Part A wired. Where does Part B go?
Highlighted in the image above are two yellow boxes. On the left, you will see two ports being highlighted in yellow. On the right, you will see the pin diagram indicating that these two ports are represents 5V, GND & 1.25
Remember, your board is going to be different.
Previously, we know learnt that Part B should be connected to GND and a Z-MIN.
GND in this case gets connected to Ground2 (Part B)
1.25 in this case gets connected to Z- / ZMIN (Part B)
And if you're not sure where these ports are; they're your original Z limit switch ports.
P.S. We know there are boards out there that talk about connecting auto bed leveling sensors such as the KAVA abl sensor & the bltouch to dedicated Z min probes. We do not recommend using this ports. In fact, we've never used them because the Z min ports outlined in this tutorial is what works for us and we've never ever encountered any issues.
Done with part B wiring? Choose your favorite mount and mount your BLTouch onto your X carriage plate.
Now that all 5 wires in Part A and B are connected, we are done with Part 1.
Part 2 - Firmware
In Cheetah 5.0, a Marlin variant, BLtouch configuration cannot be easier. There are only 3 basic steps.
1) In Section 9A, #define Auto_bed_level
2) In section 10,
if you have BLtouch v3.0 and v3.1,
if you have a non v3.1/3.0 BLtouch,
3) Set a Nozzle to Probe Offset in Section 12.
What is the Nozzle to probe offset for you ask? It's to tell Marlin how far is the centre/ tip of the probe away from the Nozzle so it can accurate measure and calculate how to compensate the unevenness of your bed.
If you are using one of the selected mounts in Cheetah 5.0, all you have to do is enable them. Otherwise we recommend you measure you own X and Y nozzle to probe offsets using a Vernier Caliper. Rememeber; the more accurate this measurement is, the better your first layer.
You can use the following diagram to help you calculate your X and Y offsets.
Using position 3 as an example, you will #define Custom_ABL_mount and moving two lines down,
After compiling your firmware using Cheetah 5.0's remaining guide which you can find here, you're ready to take your BLtouch for a spin.
Before a potential crash that can fatally injure your BLtouch, there are 3 things you need to do before pressing the "Auto Home" button to test your BLtouch out.
a. Keep your hands very near the wall socket/ power supply. If your BLtouch crashes for whatever reasons, you can be quick to react.
b. Ensure your X Gantry is high enough. At least 100mm away from the Bed so you have enough time to react.
c. It may not work the first time. As I said, this can get confusing but be patient. We will help you get there.
Now that you're ready, let's get started.
1) Turn on your machine
2) If you BLtouch probe stows, deploy in two continuous cycles, that's a third of the battle won. If not, continue with the steps.
3) Move your Z axis up. Remember? At least 100mm away from the Bed. If you have our CoreXY machine based on the Ender 3, you move the Bed down. Same thing; 100mm distance away between the bed and nozzle/ probe.
4) Pre-Test from LCD. From your LCD -> Head to Configuration, BLTOUCH and press the following buttons in order through steps 4a, 4b, 4c:
4a) Reset -> Self Test; This will make your BLtouch's probe behave like it's own drugs. It will deploy and stow the probe automatically until you stop it.
4b) Reset -> Deploy; This sill deploy your BLtouch's probe. The probe should drop down
4c) Stow; This will stow/ keep your BLtouch's probe.
Does 4a, 4b and 4c work as described? If yes, that's 2/3 the battle won! If not, your wires in Part A may be connected wrongly. We suggest revisiting that section before proceeding.
5) Press "Auto Home" from your LCD or if you're using a host like pronterface; you will send a Marlin command: G28
6) If all goes well, your printer should home in the X direction, followed by the Y direction and then your probe should head to the middle of the bed and your nozzle will start going towards your bed.
7) If your nozzles goes in the correct direction, I want you to quickly use your finger to trigger the BLtouch's probe. NOT THE NOZZLE.If your nozzle stops going downwards when you touch the BLtouch's probe, congratulations. Your battle with the BLtouch is as good as being won.
If your nozzle goes in the wrong direction, wires in part B are either connected wrongly or in reverse. We suggest revisiting that section. There is also a possibility that the wires are connected loosely. Ensure all connections are secure before trying again.
8) Time for the real test. Remember; hands near the power supply still. Run an Auto Home and this time round, let the probe touch the bed. If it stops with your finger, it should stop with the bed.
In this step, you want to eyeball this movement. Watch this moment unravel before your eyes as you watch the nozzle come down towards the bed.
If the nozzle does not stop and continues digging into the bed. Your BLtouch is mounted too high. We suggest inserting spacers to lower your bltouch and trying this process again.
If the nozzle stops when the probe touches the bed, then congratulations.
BLtouch is finally configured but not calibrated. (bummer, i know)
Part 3 - Calibration of Z Probe Offset
Having the BLtouch work is one thing, having it calibrated is another. The only thing that requires a calibration is the Z-probe offset.
In layman terms, Z-probe offset is defined as the Z height of the probe with reference to the bed and nozzle.
In every Cheetah 5.0 flash, the z-probe offset is set to zero. There is nothing better to calibrate the z-probe offset than to tune it with a live print. It's best to print something big with a brim. In Prusa Slicer, we've configured the following print. It's 0.2mm in height so the hotend would print the first box and then move to the 2nd, 3rd and so on and so forth.
You can download the .STL here if you would like to print the same. You can import this .STL into any slicer that you prefer. Cura, Prusa Slicer or even Simplify3D.
Before slicing, be sure you use a skirt first. Below image shows skirt settings in Prusa Slicer.
Slice the STL file with your desired settings and print it on your printer. While the printer is printing the skirt, you will adjust the Z Probe Offset.
You can do that by navigating to Configuration -> Probe Z offset -> Turn clockwise to move the nozzle higher and anti-clockwise to move the nozzle lower. At the correct nozzle height, your filament coming out of the nozzle will achieve a very nice squish.
Once the Nozzle is at the correct height for the skirt, click Back and scroll down -> Store Settings
Now your Z Probe Offset is stored in the board's EEPROM, you don't have to change your Z probe offset anymore unless you change filaments etc.
Remember, a PETG and PLA filament are different so do not use the same Z height for all your filaments!
Part 4 - D.O.N.E.
If you've gotten this far, horray! Everything that needs to be done, is done. If this article has helped you out, consider sharing it with others! If you've got any questions, feedback etc feel free to let us know too!