This is a system of physical parts, electronics, and software that can be added to a laser cutter so that the bed (z axis) can level itself, and then act as a motorized z axis, taking the STEP and DIR signals from the controller. I have it installed and it sorta works, but needs some more work on the software. I'm also thinking of re-doing the circuit board or going to something more standard like a RAMPS. Here is everything including the parts, circuits, code, and a readme with a lot more information.
Since the initial update I added a control panel and sorted out the missed steps. Spent about a week trying to get AccelStepper working with this, then gave up and just rewrote something from an earlier version. New code is uploaded, and some models for the control unit, as well as a quicky FreePCB file I made to plan the hand made circuit board (this file was mostly just for planning; the actual layout changed a little, and instead of the 6 pins plus 3 resistors arrangement for setting the address, I just used 9 pins and no resistors.)
Notes for those that may want to make one: The hole for the address jumpers may need to move depending on the board offset of the 90 degree headers you find. Switch model is in the FreePCB file. I used a hard drive magnet because I had several handy, you may want to change the cutout to fit the magnets you have available.
Still to do:
1.) Interface with the main laser controller so it also acts as a motorized Z. In theory everything is there but it really freaks out if I enable those two lines in setup(). Possibly I need pull down or pull up resistors.
2.) Add pull up resistors to EN lines so that they are quiet during in-system reprogramming.