| Vehicle | Cams Controlled | Voltage | Frequency Range (Performance Setups) | Base Duty Cycle |
|---|---|---|---|---|
| Audi S4 (2010-2016) | Intake & Exhaust | 12V | 200-300Hz PWM | 0-100% variable (50% hold typical) |
| BMW 335i (2007-2013) | Intake & Exhaust | 12V | 200-300Hz PWM | 50% hold typical |
| Chevy LS (Gen IV, 2007-2015 VVT) | Single cam (pushrod) | 12V | 200-300Hz PWM | 50% hold typical |
| Ford Mustang (2011+ Coyote) | Intake & Exhaust (4 cams) | 12V | 200-300Hz PWM | Higher for retard (50% hold typical) |
| Honda Accord (2003-2007 2.4L VTEC) | Intake | 12V | 200-300Hz PWM | 50% hold typical |
| Honda Accord (2008-2012 3.5L VCM) | Intake (all cams) | 12V | 200-300Hz PWM | 50% hold typical |
| Honda Civic (2006+ iVTEC) | Intake (VVT) + both (lift) | 12V | 200-500Hz PWM | 50% hold typical |
| Honda Fit (2009-2013) | Intake | 12V | 200-500Hz PWM | 50% hold typical |
| Honda S2000 (2000-2009) | Both (lift only) | 12V | N/A (switched on/off) | 0/100% (on/off) |
| Lexus IS300/SC300 (1998-2005) | Intake | 12V | 250-300Hz PWM | 50% hold |
| Mazda Miata (NB2, 2001-2005) | Intake | 12V | 250-285Hz PWM | 30-45% (hold/move) |
| Mitsubishi Evo X (2008+) | Intake & Exhaust | 12V | 300-306Hz PWM | 50% hold typical |
| Nissan 240SX (S14 KA24DE, 1995-1998) | Intake | 12V | 250-300Hz PWM | 50% hold |
| Nissan 350Z/370Z (2003-2018) | Intake | 12V | 250-300Hz PWM | 50% hold |
| Nissan G35 (2003-2008 VQ35DE) | Intake | 12V | 250-300Hz PWM | 50% hold |
| Nissan GT-R (R35, 2009+ VR38DETT) | Intake & Exhaust | 12V | 250-300Hz PWM | 50% hold |
| Nissan Silvia/240SX (S13/S14/S15 SR20DET, 1989-2002) | Intake | 12V | 250-300Hz PWM | 50% hold (or 0/100%) |
| Nissan Skyline (R33/R34 RB25DET NEO, 1993-2002) | Intake | 12V | 250-300Hz PWM | 50% hold |
| Subaru WRX (2004+) | Intake (single) or both (dual AVCS) | 12V | 150-300Hz PWM | 50% hold typical |
| Toyota Celica (2000-2005 VVTi) | Intake | 12V | 250Hz PWM | ~50% hold |
| Toyota FR-S (2013-2016) | Intake & Exhaust | 12V | 150-300Hz PWM | 50% hold typical |
| Toyota MR2 (2000-2005) | Intake | 12V | 250Hz PWM | 37% at idle |
| Toyota Supra (1998-2002 JDM VVTi) | Intake | 12V | 250Hz PWM | ~50% hold |
| VW Golf (2018-2019) | Intake & Exhaust | 12V | 200-300Hz PWM | 50% hold typical |
The adjacent picture shows my cam angle chart, and this was built via a street/road tune. I need to rent dyno time and put my car on the dyno, but until then I'm running this.
There's no real way to know what your ideal cam angle is unless you put the car on a dyno. I started with the basemap that Haltech provides, and I increased the fuel amount before I increased cam angle in small increments.
The angles I chose are all just theoretical based on how much airflow I think the engine should have at that RPM. The increased fuel amount is so I don't make the engine run lean as the angle increases. Then as I drive the car, the "Long Term Fuel Trim" fine-tunes the air-to-fuel ratio for me. I just need to apply the changes routinely.
Why does the engine go lean when cam angle is higher? The greater the cam angle, the more airflow into the engine at that RPM, so this changes the air going into the engine, but the fuel amount is predetermined in the fuel table.
It allows you to monitor the power output from the car while you're holding RPM steady. To determine the best ideal cam angle you will:
Repeat this same process for the areas where the car is commonly driven.
The adjacent screenshot (from Haltech NSP tuning software) shows a custom fuel correction table I've implemented to automatically adjust fueling based on cam angle error. It adds fuel when cam angle increases beyond target, and reduces fuel when cam angle falls below target.
The cam angle naturally deviates slightly from target under different driving conditions. This correction table is enabled by checking the "generic correction" box, then naming it as desired. Configure the axes as follows:
Why use this? Perfectly tuning PID values for cam control is challenging due to varying oil temperature and oil pressure across the RPM range. This table provides a practical workaround. For even better results, install an oil temperature sensor and retune all cam PID tables to reference oil temp instead of coolant temp (see oil temperature sensor benefits section for variable valve timing engines).
Protection benefits: Maintains proper AFR even if the VVT solenoid fails or the connector comes loose. During everyday driving, small cam angle errors (often ~1°) would otherwise cause minor AFR swings — this table keeps fueling on target.
Only real downside: During/after shift events, the rapid cam angle change can cause the ECU to command extra fuel momentarily. Since the engine is typically off-throttle and not demanding fuel during the down-rev, this results in a brief rich spike for about half a second.
Many engine management systems (such as Haltech basemaps) default to adjusting P.I.D. tables based on coolant temperature because most setups lack a dedicated oil temperature sensor. However, coolant heats up significantly faster than oil, which creates challenges when fine-tuning camshaft control (VVT/VCT) or other temperature-based parameters.
Even if your P.I.D. values are dialed in perfectly on a given day, cooler ambient/weather conditions the next day will delay oil warm-up. This shift means you'll often need to re-adjust cam P.I.D.s repeatedly. Installing an oil temperature sensor solves this by providing accurate oil temp data for logging and control — allowing you to determine if your setup needs additions like a thermostatic plate or oil cooler.
If you install an oil temp sensor, refer to the temperature sensors section of this website (or your ECU manufacturer's guide) for proper wiring and ECU configuration. Most common aftermarket oil temp sensors are NTC thermistors (2-wire) and work with a 1k pullup (recommended for Haltech AVIs) or sometimes 2.2k — match your ECU's setting and verify against the sensor datasheet.
1k ohm pullup resistors are standard for faster ECU response (though the real-world difference is usually negligible). Always input the correct volts vs. temperature values into your ECU calibration table for accurate readings.