Edit: i recommend using some conductive felt
The top of the aluminum bed is not conductive, but the sides of it are. You can re-create the Lulzbot Mini endstop set-up by connecting the Z-stop ground to the side of the aluminum bed, then using binder clips and nickels as the "washers". In my case I had to use quarters because my bed was really big and the extruder came down far from its edges.
To do this, you'll need:
- A multimeter and a >100 Ohm resistor for safety
- Some nickels (or any conductive coin)
- Some binder clips (with steel insides)
- Some aluminum foil (increases reliability of setup)
- A Z end-stop
Building conductive washer perimeter
Create a conductive washer system along the sides of your aluminum bed by:
Wrapping a nickel-sized amount of aluminum foil on the bottom, side, and top of the bed
Placing a nickel on top of that aluminum foil on the bedttop
Placing a steel-inside binder clip to hold down the nickel
Do this multiple times along the perimeter of the bed. It seems you are limited to an evenly-spaced grid structure by the software. In my case I placed the washers at:
X = 0, Y = 0
X = 0.5 * Max_X, Y=0
X = Max_X, Y = 0
X = 0, Y = Max_Y
X = 0.5*Max_X, Y = 0.5 * Max_Y
X = Max_X, Y = Max_X
The aluminum foil provides a contact between the side of the bed and the top and bottom of it. The binder clip can be pressed inwards against the aluminum foil to ensure high reliability. However, the binder clip can get loose. So, using aluminum foil helps make the bottom of the bed conductive too, increasing the surface area of the contact for the binder clip.
Attaching red wire to hot end
Attach the red part of the Z-endstop to your heatblock. It must be in the heatblock somewhere. The thermister hole might work. For me, I was able to slide it in a small space that's used to tighten the screw that holds the heat rod.
Now we want to attach the Z-stop ground (black wire) to the conductive perimeter.
Before attaching Z-stop ground underneath one of the binder clips, a word of caution...
The first time I did this, I stupidly placed a binder clip on top of the 12V heat rod attached to the bottom of the aluminum bed. This put all sides of the aluminum bed (and my conductive washers) at 12V, which created a short into the Z-stop ground pin when I connected it. This resulted in my Z-stop ground pin SMOKING up from the heat going through it. As a word of precaution, you should attach a resistor between the Z-stop ground pin and the side of the aluminum bed should something go wrong in the future. I used a 2.1 kOhm resistor I had laying around. This will limit the current going into the Z-stop ground pin. Since everyone's aluminum bed will be different (for e.g. the bottom of my bed is non-conductive, but yours might be conductive), it is really important to be careful here.
Before powering on, test to see that all of the nickels have low resistance between them. Test to see that the hot end nozzle is connected to the Z-stop red wire. Use a multimeter for this.
If you don't have a resistor, wait to attach the Z-stop ground before powering on. This will let you check the voltage to tell if your aluinum bed sides are connected to the 12V heat rod. After that, you can power off and attach the Z-stop ground and power on again.
Setting up the software
If you've flashed your firmware before, setting up the software is easy. Go to the "AUTO_BED" section of Configuration.h. First thing to do is to set your Z-offset to about 2.0mm and remove any existing offsets you might've had for a Z-probe (for e.g. X_PROBE_OFFSET... = -40 was set for me). The Z-offset should be set to a positive value this time. Don't forget to change this setting in EEPROM if you set itas well!
Since I'm only probing the perimeter, I use BILINEAR bed leveling for this one. Bilinear calculates points automatically for me, so I had to set up my perimeter according to an evenly spaced grid like I listed in "Building conductive washer perimeter".
First I activated AUTO_BED_LEVELING_BILINEAR
And my IF tree looks like:
#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR)
// Set the number of grid points per dimension.
#define GRID_MAX_POINTS_X 3
#define GRID_MAX_POINTS_Y 2
// Set the boundaries for probing (where the probe can reach).
#define LEFT_PROBE_BED_POSITION 1
#define RIGHT_PROBE_BED_POSITION 264
#define FRONT_PROBE_BED_POSITION 1
#define BACK_PROBE_BED_POSITION 264
// The Z probe minimum outer margin (to validate G29 parameters).
#define MIN_PROBE_EDGE 0
// Probe along the Y axis, advancing X after each column
// Beyond the probed grid, continue the implied tilt?
// Default is to maintain the height of the nearest edge.
// Experimental Subdivision of the grid by Catmull-Rom method.
// Synthesizes intermediate points to produce a more detailed mesh.
// Number of subdivisions between probe points
#define BILINEAR_SUBDIVISIONS 3
#elif // other bed leveling trees
Feel free to disable EXTRAPOLATE_BEYOND_GRID and BILINEAR_SUBDIVISIONS because they might not be necessary for you.
Time to autobed level
Of course, even with all that work, you're still going to want to be able to power off your 3D printer if it doesn't recognize even one of the nickels. So stay close to your power source and be sure to power it off safely if it doesn't recognize one of your contacts or if something comes loose. For example one of my coins was very dirty and yea, it made a huge difference in that corner, so I had to swap it out.
Last but not least, if you have some extra binder clips, you can enable the "Nozzle cleaning" feature in Configuration.h, just by binder-clipping the dark-green layer of a sponge to the board. Then just set the X-Y coordinates of that layer in the nozzle_clean feature in Configuration.h and make your life a lot easier. These two features working well together basically mean you don't have to do anything between multiple prints except remove the prints from the bed.