Author Archive

Electric Staircase

Posted in 11. Project Final Reports on December 17, 2009 by lukekambic

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=”; target=”_blank”>kambic_luke_stairs</a>

Here’s how I built it:  kambic_luke_final_stairs


Posted in 6 Form & Motion on October 17, 2009 by lukekambic

It’s a cubic foamcore box about 5 inches tall with a solenoid in the bottom and a long-range Sharp IR sensor on one side. The program sends a shaped pulse to the solenoid coil whenever the sensor detects a rapid decrease in distance. The solenoid has small weights attached to its core and the rapid shift in mass makes the box jump slightly in the opposite direction. The falling side of the pulse is a stepped ramp to make the spring-powered return of the solenoid slower, which keeps the box from moving back in the opposite direction.

This would work with just a spring and weight and a servo to contract it, but a solenoid system is mechanically simpler and allows easier control of the motion of the weight. Three 9 volt batteries in series can’t supply enough current to contract the solenoid, so I attached 14,100 uF worth of capacitors across the supply rails. The time between pulses is enough for them to recharge and deliver the next current pulse. The output is switched with a MOSFET. I didn’t have a logic-level MOSFET on hand, so I stepped up the Arduino output with a bipolar transistor to drive the FET.

It only jumps about 1/8” at the moment. It needs larger weights on the solenoid, and experimentation with roller wheels and unusual surfaces is in order.

Sketch:  <a title=”Arduino Sketch: Luke_Form_Motion” href=”; target=”_blank”>Luke_Form_Motion</a>

Schematic (this file also includes schematics for the 3rd and 4th assignments): Luke_Schematics_3,4,6

Treasure Hunt

Posted in 5. Treasure Hunt on October 17, 2009 by lukekambic

I compromised on some of the prices to get better values. 

Bend / flex sensor      The $4.00 out-of-spec sensor would often suffice.

Fabric/stretch sensor   

This was almost the only source of small quantities of conductive rubber I could find. Making a stretch sensor is as easy as attaching terminals to the ends of a strip of conductive elastomer, so that’s what I looked for. Apparently anti-esd rubber bands have resistance in the megohm range, which is not as useful. One $8.00 sheet could make dozens of sensors.

Electroluminescent “wire” (EL-wire)

Alcohol sensor


Linear actuator

This one allows precise position control:

This doesn’t:

Fiber optic cable

Tiny potentiometer

Bag of small potentiometers:

Single tiny potentiometer:    

Conductive fabric:     Cheap tacky metallized craft fabric would probably work for some applications.

Thermochromic paint/dye    Nice minimum quantity, and you can easily choose the intensity of the tone by adding the appropriate amount of medium.

Nitinol / shape memory alloy wire  

Conductive paint      Is the RF shielding stuff conductive enough to handle useful current? If so, it’s a better value if you need a lot.

Neodymium magnets      I ordered some from here and they’re the real deal.

Copper tape / copper foil

Conductive adhesive:

Minimum price for a roll:

Tilt sensor

$0.25 and detects on two axes. Probably not very reliable.

Peltier Junction

These are sweet.

Weird Applications:

What can’t you use with an Arduino? With a big enough semiconductor switch, you could control a Transcranial Magnetic Stimulation coil.

Analog and Humidity Sensor

Posted in 4. Analog Input-Output on October 17, 2009 by lukekambic

The LEDs are rated for 1 watt and they’re attached to a heat sink with epoxy. One is near-UV, around 403 nm (it came from Dealextreme). They’re switched with small bipolar transistors and powered with a 6 volt 800 ma transformer. I stuck everything in a lantern hanging in my front yard and had it running the alternate-pulse program as a beacon for visitors.

I made a sensor that detects humid air by soaking a paper towel in salt water and letting it dry. I pulled the layers of 2-ply paper apart and stuck one layer between two squares of old brass-plated window screen with terminal wires soldered on. A plastic laundry clip applies constant pressure to the sandwich.

The sensor’s baseline output varies widely depending on the ambient humidity, so I connected the output to the center pin of a 10 kilohm potentiometer. One of the side pins was connected to ground, and the other was connected to a transistor base to amplify the signal before passing it to an Arduino input pin. The digital output goes from high to low at a certain point when turning the potentiometer from the position nearest the input pin toward the ground pin, which represents the point of maximum sensitivity in the current atmospheric conditions. It probably wouldn’t be hard to do this automatically in the code.

It’s surprisingly sensitive- the draft of my weakly humidified forced-air furnace turned it on from across the room. The video shows it in use as a digital input. The air in the room was fairly dry so the reading went from high to low quickly each time I stopped breathing on the sensor.

Sketches: Arduino Sketch: <a title=”Arduino Sketch: Luke_Analog_I:O_1″ href=”; target=”_blank”>Luke_Analog_I:O_1</a>

Arduino Sketch: <a title=”Arduino Sketch: Luke_Analog_I:O_2″ href=”; target=”_blank”>Luke_Analog_I:O_2</a>

Arduino Sketch: <a title=”Arduino Sketch: Luke_Analog_I:O_3″ href=”; target=”_blank”>Luke_Analog_I:O_3</a>

Arduino Sketch: <a title=”Arduino Sketch: Luke_Analog_I:O_4″ href=”; target=”_blank”>Luke_Analog_I:O_4</a>

All of my schematics are in one PDF, which I’ll post shortly.

Skin Conductivity Switch

Posted in 3. Digital Input-Output with tags on September 18, 2009 by lukekambic

I used a couple of small bipolar transistors to amplify the modest current that 5 volts can push through a hand. Its tactile sensitivity depends on how sweaty your hands are.
I’m an airhead designer with no programming experience, so there’s nothing special on that front. I interpreted the project description as literally as I could to keep things simple.

Here are the links:
Arduino Sketch: Luke_digital_I:O1

Arduino Sketch: Luke_Digital_I:O2

Arduino Sketch: Luke_Digital_I:O3

Vocal cord clock

Posted in 2. Buttonless Clock with tags on September 8, 2009 by lukekambic

My clock would be set by the user varying the pitch of their singing or humming. Producing a steady tone for a few seconds (within a preset tolerance) would trigger “set” mode, and the clock would use this frequency as a reference point to move the time forward or backward according to a rising or falling pitch. Holding the pitch that corresponded to the desired time for a few seconds would fix the setting and deactivate “set” mode. Setting the time precisely would require some vocal control and might be used as a tool to improve it. Overall it’s pretty impractical- a lot of people would only be willing to use it in a soundproof room.

I’d want to to experiment with different ranges of pitch-to-time correspondence and pitch steadiness tolerances. Maybe these could both be variable by the user.