← SHEET 02 · ASSEMBLIES HW-005
Scissor-Lift Goods Platform
| PART NO | HW-005 |
|---|---|
| MATL / SYSTEM | STEEL BOX SECTION · LINEAR ACTUATOR |
| TOOLS | Hand calc · Node glTF export |
The folding stair (HW-002) solved getting a person down to the −1 office, but carrying a monitor or a box of tools down a folding staircase by hand is its own small hazard, and after the fold stair went in I kept doing exactly that. This is the fix I’d build next to it: a scissor lift sized for goods, not people, over the identical 900 mm rise.
OVERVIEW & MOTIVATION
Same room, same problem, different load case. The fold stair carries a person; this carries books, a spare monitor, tool boxes — anything you’d rather not hand down a ladder-steep folding stair. It sits beside the stair opening, raises a small platform from the −1 office floor to level 1 over the same 900 mm rise, and folds flat(ish) out of the way when idle. This is a design study: the engineering problem worth solving is not the lift table itself (scissor lifts are a solved mechanism) but sizing the actuator correctly, because a naive horizontal ram sized for the deployed position is wrong by a large margin near the bottom of the stroke.
SCISSOR KINEMATICS
Design inputs, stated up front:
| PARAMETER | VALUE | UNIT |
|---|---|---|
| RISE (target, matches HW-002) | 900 | mm |
| PLATFORM_X × PLATFORM_Z (depth × width) | 450 × 600 | mm |
| RATED_LOAD | 40 | kg |
| RATED_LOAD (W = m·g) | ≈392 | N |
| L (half-link: pivot to end pin) | 160 | mm |
| N_STAGES (stacked scissor units) | 3 | count |
| RAIL_SPACING (two parallel rails) | 500 | mm |
The lift is built from three stacked scissor stages. Each stage is one crossed pair of half-links of length L pinned at a shared centre — the standard “X” unit. For one stage, the vertical span between its bottom pivot line and its top pivot line is:
h_stage = 2·L·sin(θ)
Stacking N_STAGES of them, synchronised to the same fold angle θ (in a real build, tied together with equalizer links or a synchronizing cable so they all open at the same rate):
h_total(θ) = N_STAGES · 2·L·sin(θ) = 960·sin(θ) mm
| θ (deg) | h_total (mm) |
|---|---|
| 15 | 249 |
| 30 | 480 |
| 45 | 679 |
| 60 | 831 |
| 75 | 927 |
Note the 75° row already overshoots the 900 mm target — the mechanism never
actually runs that far. Solving 960·sin(θ) = 900 gives the real top of
travel: θ_max ≈ 69.6°, where h_total lands exactly on the 900 mm rise.
ACTUATOR SIZING
Two parallel rails share the rated load, each carrying W/2. For a single
scissor stage with a horizontal ram spanning its base pivots, the standard
virtual-work result is F = W/(2·tanθ). Generalising to N_STAGES synchronised
stages driven by one ram at the base of stage 1 — the ram’s own stroke only
spans stage 1’s base spread, but it must supply the work to lift the whole
stack — virtual work (F·dx = (W/2)·dh_total, x = 2·L·cos θ) gives:
F(θ) = N_STAGES · W / (2·tanθ) = 3 · 392 / (2·tanθ) ≈ 588 / tanθ N
| θ (deg) | h_total (mm) | F required (N) |
|---|---|---|
| 15 | 249 | 2197 |
| 20 | 328 | 1617 |
| 30 | 480 | 1020 |
| 45 | 679 | 589 |
| 60 | 831 | 340 |
| 69.6 | 900 | 218 |
| 75 | 927 (unreached) | 158 |
The blow-up is the whole design problem: as θ → 0 the required force runs to infinity, because a horizontal ram gets zero mechanical advantage on a flat scissor. A ram sized for the 45° mid-travel force (≈589 N) would stall the lift completely near the bottom of its stroke.
Resolution chosen: a minimum start angle, held by a mechanical stop. The lift is not allowed to fold past θ_min = 20° — a stop block under the bottom stage holds it there at rest. That costs stowed height: the platform sits at h(20°) ≈ 328 mm above the base rather than lying flat, so the −1 office floor needs a 328 mm-deep pit (or the base frame recessed that far) for the platform to still meet floor level at the bottom station. In exchange, the peak actuator force is bounded: F(20°) ≈ 1617 N. With a working safety margin the ram should be rated for ≥ 2.0 kN static push, well short of the several-kN-and-climbing demand a flatter start angle would create. Actuator stroke over the operating range: base spread runs from 2·L·cos(20°) ≈ 301 mm down to 2·L·cos(69.6°) ≈ 112 mm, so the ram needs roughly 189 mm of travel.
PARAMETRIC MODEL
build-glb.mjs keeps the parameter block (RISE, L, N_STAGES, RATED_KG,
RAIL_SPACING, and the export pose angle THETA_POSE) at the top of the script
and derives every pivot from it — nothing is eyeballed. A linkBetween()
helper takes two computed (x, y) points, works out the bar’s length and its
rotation about Z from atan2(dy, dx), and emits one oriented box per link. For
each of the two rails and each of the three stages, the bottom and top pivot
pairs are computed from xSpread(θ) = L·cos θ and the running stage height,
the two crossed links are placed between them, and a small cube marks the
shared centre pivot. The base plate, four feet, actuator body/rod/mounts,
platform deck, and a riding load box round out the part count. The script
runs standalone (node build-glb.mjs from this folder), exports the pose at
θ = 45° (679 mm rise, matching the table above) via the shared writeGLB()
helper, and calls validateGLB() before finishing — 29 parts, 348 triangles.
STATUS & NEXT STEPS
Design study only: calculated and modelled, not built. The kinematics and the actuator force table above are hand calc, checked against the parametric model; no physical prototype exists yet. Next steps before cutting steel: size the pin/bearing at each centre pivot against the 20° peak reaction load (≈1.6 kN divides across the two rails’ pivots, not a trivial pin), and select a real linear actuator against the computed ≥2.0 kN peak force and ~190 mm stroke rather than the placeholder ram modeled here.
Two honest cautions this design carries forward if built: scissor links pinch badly between crossed pairs as they close, so any real build needs guards over the stage gaps — this is why it stays a goods lift, never rated for a person to ride, and stability under side load needs guide rails or rollers at the platform edges, since a scissor stack alone has little resistance to lateral push.
USE CASES & APPLICATIONS
The same geometry problem — a horizontal actuator losing mechanical advantage as the scissor flattens — shows up anywhere a scissor mechanism is used: workshop lift tables, vehicle service ramps, warehouse dock levelers, height-adjustable desks, and stage or theatre lifts. The general lesson carries across all of them: scissor actuator force is geometry-driven, not load-driven — a light platform near its collapsed angle can demand more force than a heavy one nearer mid-travel, so the start angle (or an inclined/ diagonal actuator mounting) has to be chosen before the load ever enters the sizing calc.
FILES
sources/mechanisms/scissor-lift/build-glb.mjs— parametric GLB export (parameter block, trig pivot placement,writeGLB/validateGLB).public/models/scissor-lift.glb— exported mid-travel pose (θ = 45°, 679 mm rise), 29 parts / 348 triangles.src/scripts/mechs/scissorlift.js— live animated front elevation: scissor stack opening/closing kinematically (h = 2·L·sinθper stage), actuator extending, load box riding the deck, and a force-indicator bar tracking1/tanθso the actuator blow-up reads visually as the lift folds.