I wanted to build a wall that would eject stairs as a person walked up it and retract them as they pass. I made a prototype with 5 steps and nothing but the essentials- a simple ejection mechanism and a couple of narrow-angle proximity sensors for each step. More and better sensors could make it more reliable. A weight sensor or a row of IR sensors pointing up out of each step would give better information about the user’s position.
While doing initial tests with individual steps, I tried using the original code from the test bed. The motor stopped responding. I assumed a MOSFET had blown and moved to another step, and the same thing happened except the motor was stuck on instead of off. After many hours of messing with the circuitry and the code, I figured out the problem: I toasted my Arduino. The gate capacitances of the 50 amp logic level MOSFETs I used are huge and I didn’t use gate resistors (I thought the internal impedance of the Arduino outputs would be enough). Apparently the resulting current spikes killed the outputs (the nature of the test bed code made the spikes especially bad).
Here’s the best I can do with the surviving pins while I wait for a new Arduino and some other replacement parts:
The middle step retracts slower because it uses a different motor. I’m going to replace it with a faster one. Also, the vibration when the stops hit the wall is sometimes enough to disengage a sprocket. You can see it happen in the side view in the video. The impact shoves the whole thing forward. It needs better shock absorbers.
After I get all the steps working I’m going to try to find other interesting things to do with this contraption.
The provisional code: Arduino Sketch: <a title=”Arduino Sketch: kambic_luke_stairs” href=”http://code.arc.cmu.edu/~cheng/uploads/kambic_luke_stairs.pde” target=”_blank”>kambic_luke_stairs</a>
Here’s how I built it: kambic_luke_final_stairs