Super Simple Bed Auto Leveling

How to add autoleveling option to Prusa I3 pro B or any other 3D printer with minimum material and work

Similar projects worth following
I was looking for a way to add auto leveling to my prusa I3 printer but all the options involved servo motors with a switch or induction sensors with an aluminum bed.

I didnt had any of those at hand so I looked into what I had and found some copper tape and cable so I decided to build a very simple, paper thin, switch. All I had to do was cut some small pieces of copper tape, solder some cables on it and past them on the bed.

I pasted them in all the 4 corners of the bed, joined all the cables together and connected them to one extreme of the existing Z end stop switch terminal while the other side of the terminal was connected to the aluminum plate in which the hot end is screwed and Voila!

When the hot end touches the cooper tape, the circuit is closed acting as the Z end stop switch.

I tested the idea and works better than expected, the tape stays in the glass even by having the heated bed at 110 °C

My 3D printer uses Marlin as firmware so this are the modifications you need to do for it to work:

The tape acts as a NO Switch so you need to invert the endstop

const bool Z_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.

Enable Auto leveling by uncommenting this line

#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line)

I used 4 pices of tape (one on each corner) so you only need 2 Grid points


Add the points where you pasted the tape





You add the offset of the copper tape thikness (still trying to find the perfect value)




Deactivate Z Safe Homing there ins no probe so there is no need, also it gives some problems when activated.

//#define Z_SAFE_HOMING // This feature is meant to avoid Z homing with probe outside the bed area.


  • 1 × Copper Tape
  • 1 × Solder
  • 1 × Cable Electronic Components / Misc. Electronic Components

  • Even more simple!​

    Jorge Santisteban10/24/2015 at 14:45 0 comments

    Now even more simple!

    Now you dont need to solder anything, I don't think it can't be more simple than this.

    I think the pictures are self explainatory.

    Just take the copper tape all the way to the screws and wrap arround the wire in them. now you have a very simple auto level for your 3D printer.

View project log

Enjoy this project?



Dwi wrote 11/26/2018 at 05:44 point

Hi Jorge,

My Z endstop is in the top (my hotend home is in he top to save movement). 

If I want to add auto leveling like your. So I need to add Z endstop in the bottom?. What code need to change?



  Are you sure? yes | no

Federico wrote 12/24/2017 at 09:56 point

Hello Jorge, thank you for sharing this interesting project...

I and my son did it! and we are in the final stage. 

But now we have 2 dubs. 

1- how arduino can understand something if these wires are not connected to the board? how the circuit can be detected as close if there is elettrical power on it?  maybe we had lost some passage...

2-the nozzle is covered by plastic...can you have contact polishing it every time? 

We have a cinese CTC Prusa i3 PRO B mk8, maybe it's different from yours...

Thank you.

  Are you sure? yes | no

tf221 wrote 04/19/2017 at 06:29 point

unless  I've misunderstood and, (i think its a good practical project) , would there be a possibility of loss of electrical contact should some of the extruded plastic stick to the nozzle tip?

  Are you sure? yes | no

RX HMP wrote 03/17/2017 at 02:42 point

Will this work on any bed?

Just grabbed tronxy x1 and they say it has aitolevel but now say it dont and no heatbed so im looking to do a heatbed asap.. I will come back when it arrives. I dont understand how it cant be done lol. But what ever I got another proximity switch blue tip and yellow tip ones but no idea what to use to get them to work.

Help pm if you get 5.

  Are you sure? yes | no

Jorge Santisteban wrote 03/17/2017 at 03:24 point

Yes, this will work on any bed or any surface.


  Are you sure? yes | no

miha.zakelj wrote 02/26/2017 at 11:26 point

Is any change that you send me firmware for autolevel. Iam bad in ardunio.

  Are you sure? yes | no

Jong wrote 01/02/2017 at 02:46 point

Hi I'm new to the 3d printing world, could You please add a picture of the endstop where you solded the cables that are connected to the copper tape?

  Are you sure? yes | no

Dave wrote 12/05/2016 at 00:07 point

brilliant idea. Will this work with an Optical Endstop and how exactly would i connect it?  Or, do I just bypass the end stop altogether and connect to the cable that plugs into the endstop?

  Are you sure? yes | no

heusdens.fulco wrote 11/02/2016 at 12:01 point

The offset when you point directly on the bed, the bed 220x220 and the glass 200x200x3, will be 3,10 when i'm right?

  Are you sure? yes | no

Jorge Santisteban wrote 11/02/2016 at 14:11 point

the x, y offsets are 0 because you are using the extruder to probe. The x, y homing and probe positions depend on where you put the tape

  Are you sure? yes | no

AurelienGONCE wrote 10/27/2016 at 12:43 point

I Jorge, 

I did the modifications (mechanical and configuration.h) but I don't have the right behaviour.

I have plugged my 4 bed corners and the hot end instead of the Z min Endstop. The detection runs well when the hot end touch each corner if I position X and Y manually. But when I initiate a homing with REPETIER or when I begin a print, first X and Y are going home. After this, only Y is moving a little bit (corresponding to nothing). When Y finish to move, Z begins to go down. I have to stop the procedure because it will never stop. 

Did I forget something? I try G29 command with RERPETIER but nothing happens. 

I have 1.0.2 Marlin version given by Geeetech. 

Should I add something in REPETIER / SLIC3R when I configure the print? I read something about adding "start G-Code" with the commands G28, G29, G92 Z.035 ...

  Are you sure? yes | no

Jorge Santisteban wrote 10/27/2016 at 14:28 point

Hi Aurelien,

you probably need to add the home offset to the configuration.h file to move the home position to the coordinates where you put the tape. 

#define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28).

#define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28).

by default the safe homing is in the middle of the plate ((X_MIN_POS + X_MAX_POS) / 2) so you need to change it.
also, in order for the G29 command to work, the AUTO_BED_LEVELING_FEATURE mus be enabled and the probe bed positions (where the tape is pasted) defined.
in the slic3r you may want to add the command G28 (for auto home) and the command G29 (for auto bed leveling) at the beginning of the program. 
another recommendation is for you to play with the value in 
so that the height of your extrusion is the correct one.

  Are you sure? yes | no

AurelienGONCE wrote 10/28/2016 at 13:17 point

Hey Jorge. 

it works. What amazing comfort !!! Thank a lot.

Indeed, I enabled "Z_SAFE_HOMING" and modified "Z_SAFE_HOMING_X_POINT" and "Z_SAFE_HOMING_Y_POINT" to be respectively equalled to "LEFT_PROBE_BED_POSITION" and "FRONT_PROBE_BED_POSITION". 

In that way, My first tape is the Z home point.

In SLIC3R, I have added "G28 G29" at the beginning of each print. 

If  people wants to know more: When the bed has reached the temperature, the bed levelling sequence begins. At the end of the bed levelling, the hot-end starts to heat. Of course, the printing begins when the hot-end has reached its temperature.

I advise every one to use this method. 

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates