The Cerbera's throttle cable run is famously horrible — over the brake servo, around the steering column, through the bulkhead at an awkward angle. So I'm replacing the cable with a Raspberry Pi Pico, a stripped-down Bosch electronic throttle body, and closed-loop PID control. The ITBs stay; only the cable goes. Bench rig moving under PID control as of June 2026 — pedal in, throttle follows, closed-loop, safety latches working.
A modern DBW pedal in the cabin sends position to a Raspberry Pi Pico mounted under the dash. The Pico applies a throttle map curve to get a target, reads the throttle body's own position pot for feedback, runs a PID loop at 200 Hz, and tells an IBT-4 H-bridge how hard to drive the throttle body's motor at 1 kHz PWM. The throttle body's shaft is fitted with a small lever that pulls a short Bowden cable to the existing ITB linkage. The intake butterfly inside the housing carries on spinning uselessly. It doesn't care.
Audi pedal Bosch ETB (no butterfly)
│ ▲
│ 6 wires │ shaft → lever
▼ │ → Bowden cable
┌─────────────┐ │ → ITB linkage
│ Pi Pico │ IN1 / IN2 │
│ dual-core │ 1 kHz PWM │
│ PID + safety│ ──────▶ IBT-4 │
└─────────────┘ opto-iso │
▲ ▼ │
│ USB-C ┌─────┐ │
▼ │ DC │──────┘
Laptop tuner │motor│
(WebSerial) └─────┘
SPRING ← always present
(the real master failsafe)
The Cerbera throttle cable is the source of half the "sticky throttle" complaints on PistonHeads. Replacing it with wires turns out to unlock some genuinely useful side effects.
Six small signal wires through the bulkhead grommet replace a 6 mm Bowden cable that hated tight bends. Cleaner engine bay, no friction, no stretch over time.
Once the Pico knows where the throttle is and where the pedal is, holding a steady speed is just software. No extra hardware.
Drag points on a graph from a laptop to make the first 20% of pedal travel softer for traffic, then sharper at the top. Saves to flash.
Blip the throttle if RPM falls off a cliff. Refuse to open it past X% if RPM is above Y. Both are 5 lines of firmware once the sensors are in.
The throttle is the one thing where "controller crashed" must equal "engine returns to idle." Every safety layer is hardware. The firmware just adds a fifth.
Strong return spring on the ITB linkage. Default state = closed. If nothing pulls against it, the throttle is shut. Master failsafe.
The IBT-4 H-bridge needs both inputs PWM-driven to push the motor. Both inputs low = coast. Lose power, lose signal, lose firmware — outputs float low, motor coasts, spring wins.
If the firmware is commanding >30% duty but the throttle position isn't moving within 500 ms, latch a fault and let the spring close everything. Catches seized cables, dead motors, stuck sensors. (Uncle Mark's suggestion.)
RP2040's built-in 100 ms watchdog: firmware hangs → chip resets → outputs float → spring closes throttle. Plus a software cross-check on the pedal's two redundant Hall sensors every PID tick — disagree by >5% and the throttle latches closed.
Firmware + tuner running. Pedal wired and calibrated. Throttle body wired and calibrated. IBT-4 driving the motor closed-loop. The car doesn't get touched until every failure mode demonstrably closes the throttle on the bench.
Arduino-pico + PlatformIO. Dual core: PID on core 0, safety + telemetry on core 1. Boot reason capture, latched faults, hardware watchdog, 200 Hz PID, 1 kHz PWM, USB CDC tuning protocol. Runtime-tunable safety thresholds. Saves calibration + map to flash via LittleFS with schema versioning.
Single-file HTML, no install. Four needle gauges for raw sensors, draggable 5-point throttle map editor, live capture buttons, simulate mode so you can poke at the UI with no Pico connected.
Pedal wired (VAG workshop diagram pinout — not the obvious guess). ETB wired and proven on signal 1. IBT-4 wired and isolated. Motor moves under PID control from pedal input. Stuck-linkage detector caught a wiring mistake before the motor did anything bad.
Formal 10-point bench test: yank sensor wires mid-drive, force watchdog reset, brown-out the supply, simulate stuck throttle. Then shaft lever fabrication, 3D-printed enclosure, production loom with VWP cable, fit to car.
Most of the budget is donor parts from UK eBay breakers. The Pico and the IBT-4 are the only "new" parts in the bag.
| Component | Role | Source |
|---|---|---|
| Audi A4 B7 DBW pedal (Bosch dual Hall, 8E2721523J) | Pedal position with built-in cross-check signal | Donor |
| Vauxhall Z18XER throttle body (Bosch DV-E5) | Motor + gearbox + 2-track position pot | Donor |
| Raspberry Pi Pico (RP2040) | Controller + USB tuning | New |
| IBT-4 H-bridge (BTS7960 + EG3013S drivers) | Opto-isolated H-bridge between Pico's 3.3 V logic and the throttle body's motor. Mark's pick over the Pololu G2 for current rating + input isolation. | New |
| 12 V → 5 V automotive DC-DC + TVS diode | Power + load-dump protection | Existing stash |
| Strong return spring, brackets, cable glands, Deutsch DT connectors, project box | Mechanical + wiring | Mix |
It is bench-rig stage. The car has not been driven on this. Even when it does drive, it's a one-off, in-development build. Read the safety design, understand the failure modes, do your own analysis.