Sale ends todayGet 30% off any course (excluding packages)

Ends in --- --- ---

Variable Cam Control Haltech Elite

General Tuning Discussion

Forum Posts



Tech Articles

Discuss all things tuning in this section. News, products, problems and results. 

= Resolved threads


Hi Andre/fellow tuners,

I would like some info on setting up variable cam timing on the haltech elite. My questions surround the configuration of the elite to the vct system of the engine in question Vs the actual theory or tuning of the system.

I looked at the webinar on the platinum series ECU for cam timing and I noticed Andre say when you select your trigger pattern for ref and sync the haltech already caters for the variable cam timing on the engine....what about if your engine isn't listed as a preset selection from haltech?

The next question I have surrounds calibration of the numbers in the cam timing table Vs the actual position of the cam.....how does the elite know when the cam is at rest and how do you tell it that position is 0 degrees cam timing? Similarly for any other position of the cam how do you ensure that what you have in the map is actually where the cam is ? Lastly, and by extension I guess, how do you know what number in your map corresponds to the maximum or most advanced position of the cam?


Can you give more background on the project? What's the engine, and what kind of variable cams does it have (Intake only, intake and exhaust, some kind of lift control as well, etc). If you go into the Elite tuning software, you can pull up an example map to see how it works. Open up the Ford 5.0 Coyote map.

The basic controls aren't so different from boost control. You have target, some kind of base duty cycle, and controller gains. You can see for both intake and exhaust there are separate sets. Open the help by pressing F1 and under tuning guide-->cam control there are brief explanations of how to tune the PID gains to make sure the cams are following the command. Keep in mind that the cams are sensitive to oil temperature and weight.

The more ambitious you are about how much you want to use it, the much greater your work load will be. If it's WOT tuning on a naturally aspirated engine with intake cam VCT only it's not that much work, and not that different from setting a variable intake manifold runner control enable or 2 step cam (classic VTEC). If you want to do intake and exhaust VCT on a boosted engine for both boost areas and fuel economy areas, it's significantly more work because there are so many combinations of things working together like boost control, spark, and AFR.

Hey, I'm really not interested in the specifics of tuning the system or the PID control either....my question surrounds calibrating the elite to the engine....how do you tell the elite where is 0 degrees cam timing Vs 30 degrees for instance.

It's a ZC32S Suzuki swift sport... a car and engine you'd have no idea about most probably as it was never sold in the us market.

Vvt on the intake can only, no lift just timing.

In the Elite software under Main setup --> Trigger, you will have to select one of the "Generic" options based on your understanding of how the stock cam position sensor works. The cam position sensor is the "home." Realistically, if you have zero information about it, you have to reverse engineer the stock ECU by using an oscilloscope, or play around with the edge settings and essentially guess. It's not exactly an activity for beginners. The other option is to find some kind of sensor replacement kit, which is probably not available for your engine.

HOWEVER there are three Suzuki options on there you can try, and the sensor is probably not that different from what's on other Japanese engines of that era. So it looks like Haltech has experience with Suzuki too. I would contact them and see what they recommend.

Scott or Matt, are you there??

Thanks for bumping the post Joe, another thing I want clarified on the haltech elite wrt variable cam timing is the base duty table which has been introduced on the elite platform, this table was not available on the older platinum sports from what I understand.

Andre if you can chime in here it'd be appreciated. I'm struggling to understand how to go about using this table for my tuning strategy....default haltech have this set up as a 2D table of coolant temperature and duty cycle but I really don't see the sense in this.

In my experience a base duty table is used in conjunction with a closed loop system in order to get the system very close to the targets in open loop so that when closed loop is employed we give the system a much better chance of accurately tracking our targets. With respect to variable cam timing, our target will vary depending on engine load and rpm hence why the target map is set up as 3D with load,rpm and duty cycle. Why then is the base duty table not set up similarly? Am I missing something? Can someone please shed some light?

The way I'm thinking is to set up and tune the base duty table as I would for boost control for instance and then employ my closed loop control....this would however mean setting up the base duty table as a 3D table because of the reason I mentioned above with variable cam timing targets changing relative to rpm and load.

Hey Chris, sorry I'm late to this party. The way the Elite deals with the VVT system is that it is included in the firmware as part of the trigger mode you select for a VVT engine. In this regard as soon as you select the trigger system the ECU knows what to expect in terms of trigger inputs. If you're dealing with an engine that isn't catered for then you'd need to talk to Haltech about having your trigger system added (often not as daunting as it sounds btw and MoTeC are exactly the same with their M1).

The base duty table is there to allow you to set a base duty that will hold the cam 'relatively' constant. In this way it is irrespective of your actual target. It's what the ECU will initially fall back to once the target is reached for example. Just like any closed loop control system, if the base table is accurate then the control will be better. You can tune this by disabling the closed loop control and slowly changing the base duty until the cam just starts to move. As soon as it starts to move though it will continue to move in that direction until it hots the stop. This can just be done in steady state. Most tuners will use a single value regardless of rpm.

Strictly speaking, you can't have 'open loop cam control' as the duty needs to increase or decrease to move the cam, but then revert to a holding duty once target has been reached.

Hi Andre, is the Link or MoTec ecu's any better in dealing with VVT?

The coolant temperature axis is important because the oil viscosity changes with temperature and it is assumed that your engine probably doesn't have an oil temperature sensor.

Andre, ok I have a little better understanding now, but can you shed some more light on the tuning strategy? The table is set up as 2D with coolant temp.

Should I then start the engine from cold and go through the map at various coolant temps as the engine warms up, with the PID gains set to zero and the target map set to zero and the engine in steady state around 3000rpm, then slowly increase the duty at each point until I see a response from the cam? I would stop at the value I first see a response?

Does that seem correct?

There's more than one way to do it. Let's say the engine has 0 to 30 degrees intake VVT. I would do it by first mapping the required duty cycle for each VVT position in open loop. With the engine warm and cruising about 2000rpm low load (dyno, cruise control on highway), I would:

1) set the whole base table to 0 and the target table to 0 and gain to 0. See what the position is. Does it run at 0 degrees VVT with 0% duty? Figure out the highest duty it takes to get it to run at 0 degrees.

2) increment the target by 5 degrees and then adjust entire open loop table to see what duty is required. so: 5 degrees --> 30% duty, 10 degrees --> 35% duty, 15 degrees -->42% duty, etc.

3) Set the entire base table to one of those values. So if it's ~40% duty to run 15 degres, set the table there. Then increase proportional and integral slowly and do step tests between 15 and 0, and 15 and 30. See how quickly it responds and how stable the control is. Try to get it slow and stable first.

Worry about high load and cold engine (or high coolant temp) later.

How does setting the base table at one value make any sense when your actual target across rpm and load vary? Doesn't make much sense to me having this table at all....just my opinion based on my understanding.

You've gone through and tested what duty gives what target then you go to a single cell in the duty table at what ever your operating temp was for these tests and randomly choose one of these values to input into the table? Makes little sense to me

You're just working within the limitations of the software and asking the PID controller to do the rest. It's hardly ideal.

G'day Team, love the discussion :-).

While they both use PID control loops, Boost control and VCT control are actually a bit different.

When tuning the base duty table of a boost control system, as you increase the duty cycle of your valve, more air is bled away, and the boost level your system settles to increases... You see an increase in boost for an increase in base duty. The PID control system is then used on top of this to hit your boost target quicker, and make sure it stays there rock steady.

The VCT system is a little different. Your base duty is the required valve duty cycle to hold the cam at a position... What that position is can vary, it could be 5°, or it could be 25°, the duty cycle required to hold the cam at that position should be pretty much the same (for a given RPM and Temp, ie: oil pressure and viscosity) The PID system is then used to actually move the cam to your desired target, if your target is currently 5°, and the cam is sitting there nicely, then the target changes to 25°, the PID system will spring into action, ramp up the duty to move the cam to the new target, and then settle back to the base duty.

Andre's post above talks about how to tune the base duty, if you've got access to a load bearing dyno and can set the car up in steady state you should be able to dial it in pretty quickly. Many ECU's dont even have a base duty table, and just assume around 50% will do the job. A nicely set up PID control system will deal with this really well though :-).


Thanks so much for your response. Finally it's starting to make a little more sense to me now.

Now that I understand, let's go back to the tuning strategy, as Andre mentioned, to begin with I can disable the closed loop control by zeroing out my PID gains, from this point I set say 20 degrees target across my entire target map.

I can then start the car from cold and hold it in in steady state at say 3000rpm. I see which cell in the base duty table I am operating in and make adjustments, increasing my base duty incrementally. I'm ok up to this point.

Where it starts getting blurry is from here, Andre says in his response to adjust until I first start seeing a response to the cam....do I leave the duty in this cell at this value and call it done there and move to my next cell and do the same as the engine warms up? What's confusing me now is do I do the above or do I keep adjusting the base duty cell until my actual cam position matches my target ? This is further confusing as well because Andre says the cam will just continuing going in the advance direction until it hits the stop....

G'day Chris.

Along with zeroing out your PID gains initially to eliminate the closed loop control, I'd also set all your targets to zero as well. It doesn't actually matter what numbers you have in there for tuning the base duty, but it might be less confusing to have them all set to zero at this stage. When you've got the closed loop control disabled, the system cant make any on the fly adjustments to the valve duty to try and hit your targets, the only duty cycle your valve sees is what you enter in your base duty table. This makes the target numbers kind of meaningless at this point.

Here's how I'd approach tuning it in practice: Hold the engine in steady state in the cell you're wanting to tune, incrementally increase the base duty value till you see the cam respond. Once it starts moving it will continue to move till it hits the hard stop, and is fully advanced. Take note of this number. Then, with the engine still in steady state, and the cam now fully advanced, decrease the base duty till the cam responds in the other direction. Once again, when it starts to move, it'll keep moving till it hits the other hard stop, and is fully retarded. Take note of this base duty number. Now you've got an upper and lower number, I'd split the difference, and put this in as your base duty number for that cell. You might need to be a little careful when doing this, as your VE, and thus required fueling, will change when the cam advances, so watch out for it going lean and possibly knocking. Might be best to do this tuning with pretty conservative timing numbers in place.

You're likely to see a trend in this number develop after tuning the lower RPM cells, just extrapolate this out for the higher RPM zones, as like any steady state tuning, you cant really perform this at higher engine speeds. The shape of the curve will be related to the shape of an Oil Pressure vs Engine RPM plot, and by the time you get to ~4000 odd rpm, your oil pressure relief valve should be open and controlling the oil pressure of the engine to hold it pretty constant.

Once you've got the base numbers in place, you can enter some targets for cam advance angles you'd like to hit, and start tuning the PID gains to get the closed loop control part of the system to hit them... And after that, when you know your closed loop system will hit your targets reliably, you can perform some torque optimisation tests to find the optimimum advance angle for MAX POWER! :-).


Thank you so much for taking the time to explain this to me, I still really don't understand the purpose of this table fully, because in my honest opinion what we're doing makes little sense to me...but oh well.

The next thing is, you're mentioning rpm when tuning the base table....but the table is set up 2D default from haltech....coolant temperature on the X axis and then base duty in the cells, that's it.

@chris1388 you can adjust the axis to whatever you want. Coolant temp is the default since it correlates closely to the oil temp which in turn affects the cam response. A better option if available would be to directly use oil temp as the axis. The reality in my experience is that you're probably over thinking what is in effect a pretty straight forward parameter. Many ECUs with cam control for example don't even provide access to this base duty table and blindly assume that 50% duty is the holding value (it may transpire that it's actually 44% or maybe 59%). Likewise I'd be willing to bet that 95% of tuners never touch this table where it is available. Having the base duty correct will improve the system's control, however if it's a little off then the PID control algorithm will just be working a little harder to maintain your cam position.

Got ya Andre, thank you to everyone that's contributed, I know I dragged this out quite a bit but I'm a person that really likes to understand things Vs just inputting stuff blindly and not knowing why I'm doing what I'm doing.

In any event I have a pretty solid understanding of it all now, thanks again everyone!

We usually reply within 12hrs (often sooner)

Need Help?

Need help choosing a course?

Experiencing website difficulties?

Or need to contact us for any other reason?