HARVEST STEPSFOOTSTEP POWERCONCEPT ENGINEERING
← Engineering projectsHARVEST MAT / KINETIC FLOOR TILE FOR THE UNION SQUARE GREENMARKET
● CONCEPT STUDY REV 01

Drag to turn · scroll to zoom
Plate travel drawn 3× for visibility

Energy per step, per day, per season

A step can give up at most the walker's weight times how far the plate sinks. Springs take a share to lift the plate back; gears, generators and electronics lose more. What reaches the 24 V line is below.

Where one step's energy goes

Results

Electricity per step vs plate travel

Checks

    Visitor figure: up to 60,000 on peak days (amNY, GrowNYC). Electricity price: Con Edison 2026 all-in residential average, about $0.29/kWh. Solar comparison is approximate. Steps per visitor are estimates to be checked with hand counts.

    Bench tile: full build guide

    A plywood plate on four springs pushes a rack. The rack turns a pinion, a belt makes a stepper motor spin almost four times faster, and the motor works as a generator. Two diode bridges turn its AC into DC, which heats a known resistor; an Arduino measures the voltage across that resistor and adds up each step's energy. Allow two afternoons: one for the frame, one for the board.

    1 · How the circuit works

    GENERATORStepper motorTwo separate coils around a magnet rotor. Spin the shaft and each coil makes its own AC; faster spin, more voltage.
    RECTIFIERSTwo diode bridgesOne per coil, four diodes each. They flip the negative half-waves positive, so both coils feed one DC pair without fighting.
    WHY SCHOTTKY1N5819 diodesAbout 0.3 V lost per diode instead of 0.7 V. Two conduct at a time, and a gentle step makes only a few volts.
    LOADR1, 10 ΩAll the step's electricity turns into heat here. Power is V² ÷ R, so voltage alone tells you the energy.
    MEASUREMENTDivider, Zener, filterR2 and R3 divide the voltage by 5.7 so up to 28 V reads as 0–5 V. The 5.1 V Zener clamps a hard stomp; C1 removes noise.

    2 · Schematic

    M1 · NEMA 17 coil Acoil B A+A−B+B− D1D2D3D4 D5D6D7D8 + rail (DC)GND R110 Ω 10 Wload R247 kΩ R310 kΩ A0 node, max 5 V D95.1 V C110 nF ArduinoNano A0GND

    Arrows show the direction each diode conducts; the bar end is the stripe on the real part. Crossing lines without a dot are not connected.

    3 · Parts (approximate prices)

    PartQtyWhyApprox.
    12 mm plywood, 60 × 60 cm2Top plate and base$20
    Compression springs, about 4 N/mm, ~25 mm long4Hold the plate up and return it$12
    Rack and pinion, module 1, 8 mm bore pinion1Turns plate travel into rotation$12
    KFL08 bearings and 8 mm × 100 mm shaft2 + 1Carry the pinion and big pulley$10
    GT2 pulleys 60T (8 mm bore) and 16T (5 mm bore), 200 mm belt1 setSpins the motor 3.75× faster$12
    NEMA 17 stepper motor1The generator$14
    1N5819 Schottky diodes8Two bridge rectifiers$2
    10 Ω, 10 W ceramic resistor (R1)1Known load$3
    47 kΩ (R2) and 10 kΩ (R3) resistors, ¼ W1 eachVoltage divider$1
    1N4733A 5.1 V Zener (D9), 10 nF ceramic capacitor (C1)1 eachProtect and filter the A0 input$2
    Arduino Nano or compatible, USB cable1Samples voltage, sums energy$12
    Perfboard 5 × 7 cm, 4-way screw terminal, standoffs1 eachThe circuit board$4
    22 AWG solid and stranded wire, heat-shrink, jumper leads—Rails, links, leads$8
    8 mm dowel, wood blocks, screws, washers for shims—Guides, mounts, end stops$15
    Total≈ $127

    4 · Tools and safety

    • Temperature-controlled soldering iron, chisel or conical tip
    • Lead-free rosin-core solder, 0.8 mm, and a flux pen
    • Brass-wool tip cleaner, helping hands or a small vise
    • Flush cutters, wire strippers, needle-nose pliers
    • Multimeter with resistance, continuity and diode test
    • Desoldering braid, heat-shrink and a heat gun or lighter
    • Calipers (or a ruler and feeler shims) for setting travel
    • Safety glasses on: trimmed leads and solder spatter fly.
    • A fan pulling flux smoke away from your face; window open.
    • The iron's metal is at 340 °C: always return it to its stand.
    • Wash your hands after soldering, before eating.
    • Never connect the + rail straight to the Arduino: only A0 through the divider.
    • If you're new to soldering, practise ten joints on a spare piece of perfboard first.

    5 · Build the frame

    1. Cut two 60 × 60 cm plywood squares. Drill a 10 mm hole 3 cm in from each corner of the base; glue 8 mm dowels into matching spots on the top plate so they slide in the holes as plungers.
    2. Slip a spring over each dowel between the plates. Unloaded, the top plate should sit about 10 mm above the end stops.
    3. Screw the rack upright to the underside of the top plate, near one edge, teeth facing inward.
    4. Screw two KFL08 bearings to a wood block on the base. Push the 8 mm shaft through them with the pinion meshing on the rack and the 60-tooth pulley on the other end. Tighten both set screws on the shaft's flat.
    5. Mount the stepper on a second block with the 16-tooth pulley on its 5 mm shaft. Fit the belt, slide the motor back until the belt is snug, and screw it down. Without this 3.75× step-up the motor turns too slowly to get past the diodes.
    6. Glue four end-stop blocks to the base under the corners. Stack washers on them until the plate stops after 6 mm of travel; you'll change this to 4 and 8 mm in testing.
    7. There is no one-way clutch on the bench tile. On the way back up the springs turn the motor backwards; the bridges rectify that too, so you also measure the energy the springs give back.

    6 · Solder the board, step by step

    Click through the steps. The board view highlights what each step adds; faded parts come later. The view is from the component side.

    What a good joint looks like

    GOOD · shiny cone COLD · dull ball, reheat BRIDGE · remove with braid

    7 · Multimeter checks before any power

    Probe betweenSettingExpectIf not
    + pad (column 22, top) and GND padΩ≈ 10 Ω0 Ω: solder bridge between the rails. Open: an R1 lead is loose.
    Each diode: red on the plain end, black on the stripeDiode0.15–0.35 VSwap probes and it should read OL. OL both ways: open joint. Low both ways: shorted diode or bridge.
    A0 pad and GNDΩ≈ 8.2 kΩAbout 10 kΩ: R2 side open. About 47 kΩ: R3 side open. Much lower: D9 is in backwards.
    Each J1 screw and its row-7 nodeContinuitybeepThe jumper wire's joint is open.
    Column 5 node and column 10 nodeContinuityno beepSolder bridge between the two bridges.
    Stepper wires, before connectingΩ1–5 Ω in a pairWires from different coils read open: that's how you find the two pairs.

    8 · First power-up

    1. Find the coil pairs with the ohmmeter. Put one pair in J1's A+ and A−, the other in B+ and B−. Which wire of a pair goes where doesn't matter; the bridge rectifies either way.
    2. Meter on DC volts across R1. Spin the big pulley by hand: the reading should flick up to a few volts.
    3. Move the meter to A0 and GND. Stomp on the plate as hard as you can: it must stay under 5 V.
    4. Plug the Nano into a laptop by USB, connect the A0 and GND leads, upload the sketch below, and open Serial Monitor at 115200 baud.
    5. Step on the tile. Each step prints one line: step number, joules, peak volts and the running average.

    9 · Logger sketch and calibration

    Before trusting the numbers, measure three things and type them into the top of the sketch: R1 with its leads (R_LOAD), R2 and R3 to work out (R2 + R3) ÷ R3 (DIVIDER), and the Nano's 5V pin while on USB (VREF; often 4.7–5.1 V). The output is comma-separated, so you can paste it straight into a spreadsheet.

    // Harvest Steps bench logger v2: energy of each step into the load resistor
    // Put your own measurements in the four values below.
    const float R_LOAD  = 10.0;   // ohms: R1 plus its leads, measured
    const float DIVIDER = 5.70;   // (R2 + R3) / R3, from measured values
    const float VREF    = 5.00;   // volts on the Nano's 5V pin, measured on USB
    const float THRESH  = 0.20;   // volts across R1 that count as "producing"
    const unsigned long DT_US    = 500;  // sample every 0.5 ms (2 kHz)
    const unsigned long QUIET_MS = 400;  // this long below THRESH ends a step
    
    float joules = 0, peakV = 0, total = 0;
    unsigned long quietSince = 0;
    int steps = 0;
    
    void setup() {
      Serial.begin(115200);
      Serial.println("step,joules,peak_volts,average_joules");
    }
    
    void loop() {
      static unsigned long next = micros();
      while ((long)(micros() - next) < 0) {}    // wait for the next sample
      next += DT_US;
    
      float v = analogRead(A0) * VREF / 1023.0 * DIVIDER;   // volts across R1
      if (v > THRESH) {
        joules += v * v / R_LOAD * DT_US * 1e-6;              // P = V^2/R, times dt
        if (v > peakV) peakV = v;
        quietSince = millis();
      } else if (joules > 0 && millis() - quietSince > QUIET_MS) {
        steps++;
        total += joules;
        Serial.print(steps);      Serial.print(',');
        Serial.print(joules, 4);  Serial.print(',');
        Serial.print(peakV, 2);   Serial.print(',');
        Serial.println(total / steps, 4);
        joules = 0;  peakV = 0;
      }
    }

    10 · Test plan

    1. Weigh three walkers of different builds on a bathroom scale.
    2. With the end stops at 4 mm, each walker takes 20 normal steps across the tile. Save the serial output.
    3. Repeat at 6 mm and 8 mm. Average each walker's joules at each travel.
    4. In the Energy physics tab, set the mass and travel, then adjust the efficiencies until the prediction matches your average. That tells you which stage loses the most.
    5. If 6 mm gives under 1 J, raise the step-up ratio (a 20T pinion or a bigger pulley) before changing anything else.

    11 · Troubleshooting

    What you seeLikely causeFix
    Nothing prints when you stepVoltage never passes THRESH; motor spinning too slowlyCheck the belt isn't slipping; spin the pulley fast by hand to test; lower THRESH to 0.1
    Lines print with nobody on the tileNoise on A0Twist the A0 and GND leads together; check C1; raise THRESH
    Only half the expected voltageBoth wires of one coil in the same bridge as the other coil's wireRecheck the pairs with the ohmmeter; one pair per bridge
    A0 reads near 0 alwaysD9 backwards, or A0 lead on the wrong pinStripe of D9 toward the A0 line; check the Nano pin label
    Joules far below the physics tabDiode drops dominate at low voltage; loose end stopsMore step-up; check travel with calipers; heavier walker
    R1 warm after drill testsContinuous spinning, not stepsNormal; keep drill spins under 10 s
    0.0 / 7.6 s
    65 %
    8:00 / 18:00