Skip to content
klack edited this page Aug 3, 2023 · 1 revision

What is a BLTouch?

If you are here, you probably already know what a BLTouch bed level sensor is, but if not there are lots of videos on YouTube that can explain it. Here's one. Luxuri firmware offers precompiled firmware builds that support the BLTouch bed sensor. This page explains how to install a BLTouch on a Tenlog D3-style printer, and covers some basic usage.

Quick Reference for Experts

If you have a lot of experience with 3D printing, and a lot of experience installing accessories on various printers, you may want to wire your BLTouch directly to the main board. If so, the following two images might be all you're looking for. It is the wiring reference for the 8-bit main board. If this does not make immediate sense to you, please keep reading.
BLTouch Wiring Direct to Main Board BLTouch wiring

Installing a BLTouch - Complete Guide

These instructions are intended for beginners. There are other more elegant ways to install a BLTouch, but these instructions intend to keep the procedure as simple as possible.

Install Firmware

The first thing to do is confirm that there is a version of the Luxuri firmware that supports your hardware configuration. Your new sensor will not work without compatible firmware. Instructions can be found here.

It would be prudent to first install Luxuri firmware that does NOT use the BLTouch and test to make sure the printer still prints. This way if you experience problems after installing the BLTouch, you will have some confidence that the problem is related to the BLTouch and not the firmware itself.

Parts

Before attempting to install a BLTouch, you should collect the following parts:

Instructions

  1. Using the mounting hardware you printed earlier, attach the BLTouch to your E1 (left hand) extruder. Ensure that the tip of the sensor pin, when retracted, is in the range 2.3 to 4.3mm above the tip of the nozzle as shown in the diagram below. The sensor should be located to the front or left side of the extruder. If on the right, it will collide with the E2 extruder.
    BLTouch Dimensions
    BLTouch Dimensions

  2. Connect the extension cable to the sensor, and loop the extension cable over the top of the printer frame alongside the extruder cable. Make sure the extension cable won't bind during operation so it does not pull on the sensor or it may unplug itself, or possibly affect sensor measurements. Attach the BLTouch cable to the extruder cable with zip ties at regular intervals all the way back to the connector at the far end of the extruder cable.

  3. Look at the wiring attached to your BLTouch sensor. The next instructions refer to the color scheme used by ANTCLABS pictured below. If your wires are colored differently or attach to the sensor in a different order, make note of it, and adjust accordingly for subsequent instructions. Incorrect wiring could damage your sensor or your printer mainboard!
    BLTouch wiring
    BLTouch Wiring

  4. Look at the end of your extension cable away from the sensor. It is likely that the brown, red, and orange wires all terminate in a single DuPont connector arranged in that order. If that is the case, you must rearrange the wires into the order brown->orange->red. You can remove a wire from the connector by using a small pick (tweezer, thumb tack, anything with a sharp tip) to pry up the plastic tab that locks the wire in place and gently pulling the wire to free the pin. Make sure the plastic tab is bent back down before reinserting the pin. This video shows the procedure.

  5. Locate the two optical Z-stop sensors that came on your printer, one on either side of the bed. Each should have three wires leading to a connector on the side of the machine. Disconnect both connectors. In the next steps, you will connect the BLTouch extension wires to the connectors that lead into the base of the machine. (These connectors are 3-pin JST SM type connectors if you want to buy some and make your install cleaner.)

  6. Previous versions of these instructions used wire colors coming from the printer to assign connections. Unfortunately, the manufacturers do not use consistent wire colors so this is invalid. Instead, use the image below to identify the pins on the connectors coming from the body of the printer.
    ZStop Connector Pins
    ZStop Connector Pins

    Note: To confirm your install is correct, you can use a voltmeter to test pin 3 on the connector coming from the printer. When powered, it should read +5 volts. If not, you will need to find the 5V pin and adjust accordingly.

  7. To the RIGHT side of the machine, near the E2 print head, make the connections listed below:

    • BLTouch -> Printer Right Side
    • Brown -> Pin-1
    • Orange -> Pin-2
    • Red -> Pin-3
      BLTouch Wiring to Z2 Endstop
      BLTouch Wiring to Z2 Endstop
  8. To the LEFT side of the machine, near the E1 print head, make the connections listed below:

    • BLTouch -> Printer Left Side
    • Black -> Pin-1
    • White -> Pin-2
      BLTouch Wiring to Z1 Endstop
      BLTouch Wiring to Z1 Endstop
  9. Double-check all your wiring. This is especially important if your wires are different than those described here. Incorrect wiring could damage your sensor or your mainboard when you turn the machine on!

  10. Use electrical tape to secure any connections that seem insecure. A loose connection can cause erratic behavior that can be very difficult to diagnose.

  11. If you have not yet installed a BLTouch-compatible version of the Luxuri firmware, do that now.

  12. After the correct firmware is installed, every time you power the printer on, the pin of the BLTouch sensor will deploy and retract several times. This tells you it is working correctly. If the red light on the BLTouch is blinking continuously, that indicates a problem with the sensor.

  13. Proceed to the next section: Configure Firmware

Configuring Firmware

Before you can use your new sensor, you must tell the firmware where it is mounted. There are multiple ways to do this. These instructions discuss only one option.

This process requires a terminal to send G-code commands to the printer. It is convenient if you can connect a computer via USB and run something like Pronterface that has a G-code terminal. You could also use the terminal in Octoprint. If that isn't an option, there is a less convenient terminal on the touchscreen display if you navigate to Tools -> Console.

Calculate X & Y Offset

  1. Get a piece of blue painter's tape and stick it to the the printer bed. Place it near the left front corner, but not too close, and try to orient it so a corner of the tape is pointing to the front edge of the bed. This corner of the tape will be important, and the location near the edge of the bed is to make it easier to see when the print head is over it. If you do not have any blue painter's tape, you could use a dry erase marker or anything that can mark a spot on the printer bed and not move around. Depending how your BLTouch sensor is mounted, you might even be able to use the front left corner of the bed itself.
    Painters Tape

  2. On the touchscreen display, navigate to the Move menu. You will use this menu for the rest of the procedure.
    Move Menu
    Move Menu

  3. Press the Home Z button. This will home all 3 axes.

  4. Use the movement buttons to place the tip of the nozzle onto the front corner of the blue painter's tape. If you are off by a millimeter or two, it's probably fine.

  5. Write down the X and Y coordinates displayed on the screen. These are the nozzle coordinates <Nx> and <Ny>.

    • Example: <Nx> = 28, <Ny> = 40
  6. Deploy the BLTouch probe by entering M401 in the terminal.

  7. Use the movement buttons to place the tip of the BLTouch probe onto the front corner of the blue painter's tape.

  8. Write down the X and Y coordinates displayed on the screen. These are the probe coordinates <Px> and <Py>.

    • Example: <Px> = 67, <Py> = 38
  9. Do some simple math to calculate the offsets <Ox> and <Oy>. Be aware that the results may be negative.

    • <Nx> - <Px> = <Ox>
    • <Ny> - <Py> = <Oy>
    • Example: <Nx>28 - <Px>67 = <Ox>-39
    • Example: <Ny>40 - <Py>38 = <Oy>2
  10. Enter the X and Y offsets in the printer - in a terminal, enter M851 X<Ox> Y<Oy> Z0

    • Example: M851 X-39 Y2 Z0 - Note that the value of <Ox> is entered with a minus sign because it is negative
  11. Save your changes to EEPROM - in a terminal, enter M500

Set Z Offset

  1. On the touchscreen display, navigate to the Move menu.

  2. Press the Home Z button. This will home all 3 axes.

  3. Use the movement buttons to move the print head to the center of the bed.

  4. Place a sheet of printer paper on the print bed under the nozzle.

  5. On the touchscreen display, navigate to Tools -> Octoprint
    Octoprint Menu
    Octoprint Menu

  6. While continuously sliding the paper around to feel for resistance, repeatedly press the down-arrow of the 'Adjust Z' button until you feel resistance on the paper. Note: The arrows move the print head in increments of 0.02mm which is so small you may doubt anything is happening. You can put a finger on the shaft of one of the Z-axis stepper motors to confirm that they are moving.

  7. There should be a fair amount of resistance when sliding the paper. Ideally the nozzle should be as close to the print bed as possible without touching. A sheet of paper is roughly 0.07mm thick so once you feel the first whisper of resistance, you can probably press the down button 2 or 3 more times.

  8. The 'Adjust Z' button automatically sends the M851 command to the printer so all you have to do now is save the changes by sending M500 at the terminal.

  9. You may need to repeat this Z Offset procedure later with the printer warmed up to operating temperature. Dried plastic on the tip of the nozzle can skew the result, and the parts may expand and change shape as they heat up.

Generate Bed Mesh

This procedure creates a map of the irregular shape of your printer bed and stores it for later use. Before doing this, it's a good idea to tram your bed to the printer frame to make sure the bed is as level as possible.

  1. From a terminal, enter G34. This synchronizes the two Z-axis motors to level the gantry to the bed.

  2. Enter G29 P0 to clear out any stored bed mesh.

  3. Enter G29 P1 to begin mesh generation. This will probe many points on your print bed and will take a while. Maybe 10 or 15 minutes.

  4. The probe cannot physically reach every point on the bed so we have to estimate the remaining points. To estimate some points, enter G29 P3 T - this command will also return the values of the mesh grid.

  5. Look at the output from the previous command. If you see a lot of '0.000' values in the output, that means there are more points that need to be estimated. Run the G29 P3 T command until the output stops changing. A total of 5 times is probably more than enough. You can't hurt anything by running it too many times.

  6. Save the calculated mesh in memory slot #1 by entering G29 S1

  7. You will need to redo this Generate Bed Mesh procedure any time your bed changes such as if you change the bed surface or turn one of the bed adjustment knobs.

Enable Auto-leveling

  1. Add the following line to the 'Start G-code' of your slicer so it runs at the start of every print: G29 A F10 S1 - this tells the printer to activate auto-leveling with a fade height of 10mm and use the bed mesh stored in memory slot #1.