Case study · Mechanism design, fabrication & controls

A Four-Bar Linkage on a $91 Budget

Team of four in Machine Design. Designed, machined, and wired a four-bar linkage that reaches out and presses buttons on a game board on command — under a $100 parts budget and a fixed swept-volume limit.

Mechanical Design & CADFabrication & ManufacturingControls & ElectronicsExperimental Testing & Validation draft, pending review
The four-bar linkage mechanism mounted on a wall board next to the game board's colored buttons, wired to an Arduino and breadboard.
The finished mechanism, mounted next to the game board it has to reach across on command.

The problem

Machine Design (MECE3409) assigns every team the same core challenge: build a mechanism, driven by a single motor, that has to physically press specific buttons on a wall-mounted game board in response to a signal, then get scored on a live timed run. Two constraints made it a real design problem instead of a build-anything exercise: a parts budget under $100, and a maximum swept volume the entire mechanism had to stay inside throughout its full range of motion, regardless of which button it was reaching for.

Design

Our four-person team modeled the mechanism as a four-bar linkage in SolidWorks and analyzed the transmission angle — how efficiently the linkage transmits force — at both extremes of its travel, since a linkage that binds up or loses mechanical advantage at the edge of its range isn’t reliable under time pressure. The final geometry held a transmission-angle deviation of about 30° on one side and 60° on the other from the ideal 90°.

SolidWorks measurement showing a transmission angle of 150.3 degrees at one extreme of the linkage's travel.
Transmission angle at one extreme of travel: 150.3° — a 60.3° deviation from ideal.
SolidWorks measurement showing a transmission angle of 59.6 degrees at the other extreme of the linkage's travel.
Transmission angle at the other extreme: 59.6° — a 30.4° deviation from ideal.

The swept-volume constraint turned out to be the harder problem, because the linkage’s physical footprint changes shape as it moves, not just size. We mapped the actual bounding box at each of the three button positions directly onto the game board using tape, then measured it: 485.75 in³, against a 516.375 in³ limit — inside budget, but with the middle button position ruled out early as clearly the worst case for the base plate’s geometry.

What I built

My part of the build was fabrication and the electronics. I machined the structural components with a water jet and CNC mill, built the custom jigs that made the parts repeatable across iterations, and handled the control system: an Arduino driving the motor through a PID controller, homed against a limit switch, with a toggle switch for manual control during testing and calibration.

Overhead view of the full electronics stack: Arduino, breadboard, motor driver board, and wiring to the limit switch and motor.
The control stack: Arduino, breadboard, motor driver, wired to the limit switch and drive motor.
Electronics and controls motor driver, limit switch, PID tuning under real friction

The control stack was straightforward on paper and finicky in practice: an Arduino running a PID loop against a motor driver board, a limit switch for homing so the linkage always started from a known position, and a manual toggle switch for direct control during bring-up and testing. Total parts cost — bevel gears, a push-pull solenoid, 3D-print filament, and hardware — came to $91.45, under the $100 requirement with some margin.

The PID tuning itself was the hardest part, and not for a software reason. Every time the linkage ran, the joint bolts — hand-tightened with a 1/8 in Allen key, since we didn’t have a torque wrench to set a consistent spec — loosened slightly, which changed the friction in the joint and threw off an already finicky tune. Loctite was on the table, but we ruled it out: it would have fixed the tightness in place, which meant we’d lose the ability to keep adjusting it as we iterated. With a real time crunch bearing down and too many variables to isolate cleanly, the honest fix on test day wasn’t a clean root-cause solution — it was tighten, run, watch the score, and adjust.

Testing

On the final graded run, the linkage reliably reached all three button positions in sequence and scored 72 on the class’s test protocol.

The full test setup: linkage mounted on the wall board, wired to the electronics stack on the bench below.
The full test setup ahead of a run — linkage on the wall board, controls on the bench below.
The linkage mid-run during final testing, reaching toward a button on the game board.
Mid-run during final testing.

What I’d do differently

The real fix isn’t a smarter PID gain set — it’s a torque wrench and a real spec. Without one, tightness was a guess, which meant friction was a guess, which meant every tuning session was partly re-solving a problem I’d already solved the run before. A defined torque spec (and probably a thread-locking approach that still allows planned re-tightening, rather than a permanent one) would turn “guess and see if the score improves” into an actual repeatable process.


All selected work