EASY PROXIMITY SENSOR BED LEVELLING - CREALITY ENDER 3

Proximity sensors are used for auto bed levelling on several 'prestige' printers. Notably the Prusa MK3. Here's a straightforward way to add one to the venerable Creality Ender 3.

TH3D also offer the 'Easy ABL' sensor, which is highly regarded by serious 3D printing enthusiasts. They have the benefit of being purely electronic, containing zero moving parts. No pins to break or get stuck (CR/BL Touch etc). They also do not use the nozzle (a method that is present on some printers) which can be thrown out by gobbed filament sticking to the nozzle.

Proximity sensors are also more accurate and repeatable than conventional pin-based sensors. Some will argue against this but I will call BS on them - the same sensors are present within industrial systems where high levels of accuracy, repeatability and safety are required. I've never seen a 'flicky out pin' on industrial hardware!

Drawbacks

As with anything, there are also drawbacks! Proximity sensors will only detect metal so are only really applicable if you're using spring steel PEI (or similar) plates as a build surface. So, if you are using the stock (crap) floppy buildtak surfaces that come with Ender 3 Pro, you are out of luck unless you swap it out. In addition, different brands (or even switching between the textured an smooth side) of spring steel plate may affect the detection distance so, there may not be a consistent z-offset between brands or surface.

I've not tested using a glass bed. In theory the range of the sensor I am using 'may' detect the underlying metal bed but I cannot confirm.

They Are Cheap!

A genuine BL touch, from a reputable source, will cost in excess of £40 in the UK. You can obviously get them cheaper if you use the Chinese sites but I quite like to have a warranty and know that I am getting a genuine product. The inductive proximity sensor I am using here cost £7.99 from Amazon UK. Once again, you can get them for much less elsewhere (under £2).

Why Easy?

Most proximity sensors are either 12 or 24 volts. This means you have to introduce buck convertors (voltage droppers) on their outputs to bring the voltage down to a level where the printer mainboard will be happy. You may also have to run power from the main PSU, which just adds to the wiring and further complicates things. TH3D sell an adaptor board with their EZ-ABL which adds to the cost.

The sensor I am using is 5volts. On Creality printers (I am not going to say all but certainly most of them), the endstop sensing voltage is 5 volts. This means we can connect the sensor output directly to an endstop pin. Rather conveniently, on the old 8 bit 'Meltzi' boards in the Creality Ender 3 and 3 Pro, there are 5v and Ground pins on the header you would normally use to flash a bootloader. On later boards, there are also 5v/GND pins on the BL/CR Touch connector.
Being able to use these pins together with an existing endstop pin really simplifies the install.

The only slight drawback is the size of the sensor. It's 18mm which is quite bulky but, with a suitable mount, it will not limit the build volume.

LJ18A3-8-Z/BX-5V
Inductive Proximity Sensor

Get On With It!!!

As with most of my blog posts, this isn't a step-by-step hand-holding how to. It's more of a documentation of key points so I don't have to commit them to memory!

You will need to know how to flash firmware (and a bootloader if you have not already done so), solder, and crimp connectors (so it's only 'easy' if you have those skills in your toolbox).

You will also need a method of mounting the probe. I designed the one I am using and it's available on Cults3D for free. It's quite chunky and was designed to fit alongside the Minimus Cooling System which, in my opinion, is the best cooling solution for old school Enders. It's light, cools well, and is very simple. There are too many overly-complicated coolers out there that do nothing useful apart from 'look' cool. There will not be enough clearance for the fancy pants coolers so users of those are on their own.

Link to Mount

18mm Probe Mount

Prepare The Probe

To make life easier (i.e. having enough cable to play with), put a connector on the probe before installing it.

If you have one in your bits box, you can just solder-splice the relevant wires to the existing connector. If not, you will need to break out a JST crimper put a new connector on the wires. At this point, we are only interested in the +5 volts and ground wires that will connect to the ISP programmer pins on the main board. These instructions are for the Creality 1.1.4 board that was supplied as standard with the original Ender 3 and Ender 3 Pro. If you have a different board, the connector may be different so check before going any further!

On the sensor I have used, blue is ground, brown is +5 volts (black is the sensor output). So, we need a 3x1 JST ZHR 1.5mm receptical with the ground at one end, +5v at the other. Crimping these is fiddly but less so than the JST XH connectors for the end-stop! Talking of which, leave the signal (black) wire of the probe unterminated at this point.

With this done, mount the probe. My mount attaches to the carriage using some M3 10mm machine screws that utilise the two threaded holes to the left of the carriage.
You will need to route the cable for the sensor along with the other hot-end wires. I just cable-tied mine to the outside of the woven sheath.

INside The Printer

With the printer opened up, route the probe cable to the board.

You are interested in 2 connectors. The Z endstop connector and the ISCP programming connector. The +5v and GND wires go to the programming connector and the signal wire to the z-endstop connector (left hand pin with the board edge upwards). I removed the existing Z Endstop switch so spliced the existing connector with the probe signal cable to save some fiddly crimping.

Check Basic Operation

Once wiring is complete, power on the printer and do a quick check to see if the probe is working. This is best done with the X gantry fairly high above the bed.

Bring something like a metal screwdriver toward the probe from below. If all is working, the LED indicator will light up when the screwdriver comes close. If not, check your wiring!

These probes come in two versions - NC (normally closed) and NO (normally open). From what I've seen, most of them are Normally Open, which is the opposite of the physical endstop switch on Creality printers.

When editing firmware, the Z Endstop will need to be inverted because of this and we have to do a bit of a fudge-test to make sure the mainboard is seeing the probe signal (ignore this if your probe is an NC version).

Put something metal under the probe so the indicator is illuminated. Have a third hand over the power switch while you auto-home the printer. Once the z has moved down a bit, pull away the metal tool you were using - the z should rise a bit, then go down a bit and you will get an auto-homing error because the metal tool was removed.

If it doesn't do this and keeps moving toward the bed, KILL THE POWER! Then check your wiring again - you may have connected the signal wire to the wrong endstop pin.

If all is well, time to edit firmware.

Firmware CHanges

I strongly suggest using TH3D Unified firmware as it already has preconfigured settings for this style of probe. I'm not going to run through the whole gamut of possible settings, just the ones you need to get the probe operational.

Key points (in configuration.h):

    • Printer section: uncomment: #define CUSTOM_PROBE

    • #define EZABL_POINTS 3 - change if you want more (3 provides a 9 point grid).

    • #define EZABL_PROBE_EDGE 20 - change this if needed it's the safety zone around the edge of the bed. 20 works fine for me.

    • #if ENABLED(CUSTOM_PROBE) - in this section, you need to define the probe offsets. For my mount it would be:
      #define NOZZLE_TO_PROBE_OFFSET { -50, -35, 0 }

    • Invert Z Endstop if your probe is the Normally Open version:
      Search for #define Z_MIN_PROBE_ENDSTOP_INVERTING and change the end of the line to 'true'

That's enough to get you up and running - compile and flash the firmware. Clear the EEPROM if needed.

Final Check And Set Z-Offset

Once again, with a finger over the power button, autohome the printer and bring something metallic close to the probe when the X gantry starts to lower to verify that it stops OK. If it doesn't start to come down, the z endstop has not been inverted (check the firmware edits). Once you've verified the probe is working and allows the printer to home, you can go about setting your Z offset. Everyone has their own methodology here. I start of by 'getting close' using the printer control and a bit of paper under the nozzle and then save the settings when I'm happy. I'll then run the first layer test from Teaching Tech to fine-tune the offset and save again.

That's all there is to it - don't forget to add a G29 to your start G-Code to enable the ABL!

Comments

You should also read:

Mini ESPHome Motion & Light Sensor - D1 Mini

I use a lot of ESPHome based motion and light sensors in my Home Assistant setup. If there is a readily available 5 volt supply, I will use them in place of Zigbee sensors. I just find them more dependable.