Budget Friendly Ender 3 Auto Bed Leveling

Are you on a budget but still want to install Auto Bed Leveling on your Ender 3? Well we have the same thought going on here, and anytime we can DIY a project, we do. If you have ever seen the tutorials with the sensor and an octocoupler, that is exactly what we are doing here. The difference is that we use a Creality Glass Bed and most of the sensors we have tested don’t have a large enough sensing range. I opted to use the 18mm Capacitive sensor below that is very similar to the TH3D EZABL sensor, in fact we are using the TH3D mount in order to install this sensor. This is basically a DIY Budget Alternative to the TH3D EZABL kit.

NOTE: This is a project for someone who is DIY savvy, although it is basically just as easy as any of the Auto Bed Leveling kits, it may require some knowledge in firmware, and electronics. You will also have to modify the Octocoupler resistor if you have the 24V Ender 3.

What’s needed to install Auto Bed Leveling on an Ender 3 for cheap?

The two items above are the only purchases I had to make to install Auto Bed Leveling on my Ender 3. I think most people have wires laying around, or can get them fairly easy. I also used some 14ga silicone wire to supply power to the sensor, male jumper cables cut in half and soldered to two 22ga silicone wires for the Z Endstop wires. You will also need to print the TH3D 18mm sensor mount, which I have listed in the downloads and added to the bottom of the post. Some people choose to custom setup the Marlin-1.1.9 firmware, but the easiest Firmware to use is the TH3D Unified package, which can be found here: https://www.th3dstudio.com/knowledgebase/th3d-unified-firmware-package/.


The octocoupler listed above is rated for 12v systems, so in order for it to work with 24v systems we will need to modify the resistor at R1 with a 4.7k Ohm resistor. If you have the 12v Ender 3, you may use it as it is delivered.

(Courtesy of LetsPrint3D.net)

You can setup the TH3D firmware with only two changes to the configuration and even by following the EZABL installation articles, because this sensor is basically the same as theirs just much cheaper. Once you have all of your parts, you will need to start by printing the mount from below and the Octocoupler case also. While these are being printed you can start getting the wiring together. (Diagram courtesy of LetsPrint3D.net)

You will need to get the V+ and V- power from the PSU on the right side of the printer. It has a few screws to remove, and open the bottom cover to get to them. The screws to the left of the RED + BLACK wires that go out through the bottom of the cover will give you 24V DC to power your sensor with. I recommend crimping some spade terminals on the end of the wire that will attach to the PSU so they are secured in the screw clamps.

Once you have your Octocoupler wired up, I suggest using a Digital Multimeter (DMM) on the Sensor Output pins. I always take the Capacitive sensor and manually trigger it; Once it triggers you should see the light on the octocoupler light up, and the voltage on the sensor output pins go to 0v. When you pull the sensor away from trigger, it should increase voltage (but never exceed 5v) and switch back and forth as you re-trigger it. Do this a few times to verify you won’t fry the board.

After everything is verified working on the electronics side, and your mounts are done printing you can assemble the mount to the carriage and start to align your sensor. We use TH3D’s alignment method for the best accuracy and repetitive results; with this sensor we received a Standard Deviation of .008 (anything below .01 is good).

The next step you want to do is to check if the endstop is properly being recognized by your
Make sure you have your Z endstop wire connected with the jumper wires.
Start by moving the Z up until the light on the sensor and the octocoupler turn off.
Next, connect to your printer over your preferred slicer (or Octoprint) and issue an M119 and
see if the Z_min is showing TRIGGERED or open.
If it shows open place your finger or an object under the sensor so the light comes ON and then
issue M119 again. If it shows TRIGGERED then proceed to setting your sensor sensitivity.
If it does not then reverse the 2 endstop wires.

Next you will need to adjust the sensitivity of the sensor, so you should set your nozzle and temps to the highest you will use while printing. You will run your Z axis all the way down until the nozzle is just touching the bed; Then use your MOVE AXIS option in the PREPARE menu of your printed LCD to move the axis up 2mm. This is the position you want the sensor to trigger, and if the LED is not lit up on the octocoupler and sensor, use a small flat head screwdriver to adjust the sensitivity screw on the sensor clockwise until it lights up.

Do NOT change the sensitivity if you are getting different heights between prints due to
temperature changes. This should be handled by the ZOffset and/or BabyStepping the Z
height. Under normal conditions at most you should only have to occasionally Babystep
about 0.1-0.2mm. If you are getting more than that please contact our support to go through
more advanced troubleshooting steps. Large babystep changes are usually related to a
physical machine issue if M48 is returning a consistent reading under 0.01mm.

Lastly, you will need to setup your Z Offset; Some people just do this on the LCD screen and choose to “Store Settings” after they have. You will usually have to babystep for the first layer on almost every print. See the section below from TH3D.

I HIGHLY recommend you watch the video as it is much easier to see what to do. Here is a video
on how to set the Z Offset: http://EZABLVideo.TH3DStudio.com
Now that we have the sensor installed and calibrated you need to set your Z Offset. This is the
distance the printer needs to move the head down to place it on the bed after the sensor
To set your Z Offset heat the bed to your normal print temp and do a G28 to home the sensor.
Your EZABL™ sensor should be in the middle of the bed. Let it sit there for 5 minutes after the
bed has reached its target printer temperature. After homing the Z will show 5mm. This is NOT
included in the ZOffset. Move Z down 5mm before proceeding.
What you will do now is grab a sheet of standard paper and then move the nozzle down by
0.1mm until it just grabs the paper. Once you do that you can look at your printer LCD and note
the number that the Z shows. This will be a negative number. That is what your Z Offset is.


Thanks to TH3D and LetsPrint3D.net for doing most of the hard work, we just wanted to apply our own remix to the ABL scene! As always, have questions or problems leave us a comment and we will help you to the best of our ability!

0 0 vote
Article Rating
Notify of

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Newest Most Voted
Inline Feedbacks
View all comments

I have a 24v ender , I’m not that comfortable with resistors I’m not even sure what to buy, cant I just power it with 12v source or use a step-down converter from the PSU . do you think it will affect the sensing range?

Norman Jeckel

Also the case the you linked to is twice the size of the board that you linked to. The Stl is for the longer Octocoupler ,

mandis naguit

hi! i’m trying to do the budget friendly ABL. i have bought the same octocoupler . followed the wiring posted, tested it using 12v PSU before i do it directly to my ender3.
result is when triggered both led on the sensor and octocoupler turns on and turns off when not triggered.
from your instruction “Once it triggers you should see the light on the octocoupler light up, and the voltage on the sensor output pins go to 0v. When you pull the sensor away from trigger, it should increase voltage (but never exceed 5v) ” .
where should i probe to check the voltage output? is it from the Z-end stop (-) and (+)?
tried doing it ut i don’t get any voltage when not triggered.
i hope you can help me out with this.
thank you so much

Would love your thoughts, please comment.x