What Cam Control actually does
On a continuously variable cam system, each cam gear has an oil chamber inside it. A solenoid meters engine oil into or out of that chamber, and that rotates the cam relative to the crank. The Elite ECU drives the solenoid with a pulsed signal and reads a cam position sensor to see where the cam ended up. It can handle up to two intake cams and two exhaust cams, which covers everything from a single-cam four cylinder to a quad-cam V engine.
The key idea is the hold duty, which ESP calls Base Duty. Somewhere in the solenoid's range is a duty that neither advances nor retards the cam; it just keeps it parked. Push duty above that point and the cam moves one way. Pull it below and the cam moves back.
That hold point isn't fixed. It shifts with oil temperature, oil viscosity, oil pressure and wear. If you just picked one duty and left it, the cam would slowly creep off target. That's why Cam Control on the Elite always runs closed loop: the ECU watches actual cam angle, compares it to the target, and keeps adjusting duty to stay there.
Wiring tab: telling the ECU what's on the engine
Options
- Number of Banks: one for an inline engine, two for a V or boxer engine. This sets how many intake and exhaust cams the ECU expects.
- Mode: choose Intake Only, Exhaust Only, or both. Match it to the cams that actually have phasers. Plenty of engines only have variable intake timing.
- Solenoids Per Camshaft: 1 or 2. Most factory systems use one solenoid per cam, but check your engine before assuming.
Connections
Every variable cam needs two things wired: a position sensor so the ECU can see it, and a solenoid so the ECU can move it.
- Cam inputs: usually the Home input or an SPI (Synchronised Pulsed Input), connected to that cam's position sensor. If your cam sensors aren't reading cleanly, sort that out first with our guide to checking crank and cam angle sensors.
- Cam outputs: usually a DPO (Digital Pulsed Output) to each cam control solenoid.
- Active State: Low (the default) grounds the output when it's on. High inverts that, so the wire is grounded when the output is off. Leave it on Low unless you know your solenoid needs the opposite.
Cam Control tab settings
The intake and exhaust sides have their own copies of most settings, so you can treat each set of cams independently.
| Setting | What it does | Our advice |
|---|---|---|
| Target Angle Max Delta Rate | Caps how quickly the target is allowed to change, so the cams aren't chasing a jumpy or oscillating target | Start at the default of 40 and only lower it if cam movement looks nervous in logs |
| Intake / Exhaust Frequency | How fast the solenoid is pulsed (default 500) | Lower frequency gives more usable duty range but can make the solenoid rattle; higher frequency narrows the range. Keep the default unless you have a reason to change it |
| Duty Cycle Min | The lowest duty the controller can command | Set it just below the point where the solenoid starts doing anything |
| Duty Cycle Max | The highest duty the controller can command | Set it just above the point where extra duty stops moving the cam. Check this is not left at zero, or the controller has no room to work |
| Cam Direction | Whether the controller moves that cam toward advance or retard | Intake is normally Advance (the default); exhaust is normally Retard (the default) |
| Enable Overall Corr | Adds an Overall Correction table that shifts the whole target angle map | Turn it on while you experiment on the dyno, then fold the result back into the target table |
The min and max duty limits exist for the same reason on any solenoid: there's a dead band at the bottom and a point near the top where more duty changes nothing. Keeping the controller inside the band that actually moves the cam makes it respond faster and stops integral wind-up at either end.
The tables you'll tune
Target Angle
This is the cam angle you want at each operating point, and it supports up to 4D mapping. As a general pattern, intake cams often like more advance in the midrange and less at the very bottom and top of the rev range. Exhaust cams often carry more retard down low, less in the midrange and a bit more again near redline. Those are shapes to start experimenting from, not numbers to copy. The best targets come from back-to-back dyno pulls, because the right overlap depends on the cam profile, the head, the exhaust and the intake.
Base Duty Cycle
There's one base duty table per cam (Intake 1, Intake 2, Exhaust 1, Exhaust 2), each with up to 3D mapping. The more accurately this table predicts the hold duty, the less work the PID loop has to do, and the faster and cleaner the cam responds.
How we find it:
- Warm the engine up fully so the oil is at normal temperature.
- Hold it steady somewhere around 2000 to 3000 rpm so there's full oil pressure feeding the phasers.
- Command a non-zero target angle for the cam you're working on.
- Log the matching Cam Control output channel, for example the Intake Bank 1 output. Once the cam has reached the target and settled, note the duty it's sitting at.
- Enter that duty into the matching base duty table, then repeat for the other cams.
If the base duty is too low, the cam is slow to reach its target. If it's too high, it tends to overshoot. Either one is a sign to revisit this table before touching the PID gains.
PID gains
Each side has Proportional, Integral and Derivative tables, all mappable in up to 3D. In plain terms:
- Proportional reacts to how far the cam is from target right now. Bigger error, bigger push.
- Integral adds up the error that's left over time and keeps nudging until it's gone.
- Derivative watches how fast the cam is moving and eases off as it approaches, which keeps an aggressive proportional term from overshooting.
As a rough guide, cam control proportional values commonly land somewhere between 150 and 1000, with integral around half the proportional value and a small derivative of roughly 5 to 20 to stop overshoot. Every engine is different, so treat those ranges as a place to start testing and let the logs decide. For a deeper look at how the three terms interact, see our PID tuning guide.
Target Scalar
This table scales the cam control output, typically against coolant temperature, although you can put any channel on the axis. It's how you keep the cams parked on a cold engine and bring control in as it warms up.
When ESP upgrades a map from an older firmware, it fills this table in automatically to copy the old behavior: 100% at the previous turn-on temperature and 0% just one degree Celsius below it. That's an on/off switch, not a blend. We recommend reshaping it so control fades in over at least 5 °C (9 °F).
Long term trim
The Long Term Trim tab lets the ECU learn corrections to your base duty tables as the car is driven. It's useful because hold duty drifts with oil temperature and anything else that affects oil flow, so the learned trim table is normally mapped against oil or coolant temperature.
- Enable Long Term Trim: switches learning on.
- Long Term Trim Gain: how quickly the ECU learns. Values around 20 to 30 tend to work well.
- Reset: clears everything learned back to zero.
- Apply to base Table: writes the learned trim into your base duty tables, so the next map starts from a better baseline.
Our routine is to get base duty close by hand, let long term trim learn over a few drives at different oil temperatures, apply it to the base table, then reset the trim and let it keep refining.
Troubleshooting cam control
| Symptom | Usually |
|---|---|
| Cam never moves | Output not assigned, wrong Active State, Duty Cycle Max left too low, target scalar at 0%, or the engine isn't warm enough yet |
| Cam angle reading is jumpy or missing | Cam sensor wiring or input assignment; check the sensor before touching the control settings |
| Cam moves the wrong way and pins against a stop | Cam Direction set wrong for that cam |
| Slow to reach target | Base duty too low, or proportional gain too low |
| Overshoots, then settles | Base duty too high, proportional too high, or not enough derivative |
| Oscillates around target | Too much proportional or integral, or a target that changes faster than the cams can follow |
| Accurate warm, sloppy cold | Base duty doesn't account for oil temperature; add that axis or let long term trim learn it |
Cam control FAQ
Why can't I run cam control in open loop?
Because the duty that holds a phaser still keeps changing with oil conditions. A fixed duty that's even slightly off would let the cam drift until it hits a stop. Closed loop is the only way to keep it on target.
Do I need a dyno to tune cam targets?
To get the most from it, yes. You can set up the control loop so the cams follow a target accurately on the street, but choosing the best target at each load and rpm takes back-to-back testing on a dyno.
What's the difference between this and switched cam control?
Continuous cam control holds any angle in the phaser's range. Engines with simple on/off cam changeover use Cam Control Switched instead. Running a Nexus? See the NSP version of Cam Control. If you'd like us to set up or tune your VVT engine, book a free consultation.




