![background image](http://html1.mh-extra.com/html/national-instruments/d000017/d000017_user-manual_708699023.webp)
Drivven, Inc.
Throttle Driver Module Kit
© Drivven, Inc. 2009
• Throttle Driver Module Kit User’s Manual • D000017 • Rev B
23
Throttle Control
Drivven provides a flexible throttle position control algorithm with the Throttle Driver Module Kit.
Please follow the throttle control example provided for implementing throttle control in your engine
control application. Drivven recommends performing throttle control at a rate of 100-200 Hz.
Even if your engine control algorithms require execution at another rate, a separate timed loop
can be created to implement throttle control. The throttle control VI uses position values in terms
of degrees. However, percentages can be used instead. This document does not go into detail
about the procedures for tuning a typical PID loop. There are many texts available which cover
that topic. It is expected that the user of this module kit be familiar with PID control concepts.
The throttle control algorithm calculates a final voltage to be applied to the throttle body DC
motor. The final voltage is applied by means of a PWM duty cycle, with battery voltage being the
maximum possible voltage. The control voltage may be compensated for actual battery voltage,
ass deviating from the nominal battery voltage, according to BattCompEnable. The compensated
voltage is converted to a signed PWM duty cycle at a fixed frequency of 500 Hz. The throttle
control VI output results are in terms of 40 MHz clock ticks to be wired to the FPGA period and
pulse width parameters.
The throttle control algorithm involves 4 major functions:
1.) The angle setpoint (reference), ThetaR is compensated by a user defined lead and lag
time. These parameters will sharpen or dull the changes in setpoint.
2.) A proportional, integral and derivative action is calculated based on two sets of PID
gains, above or below the default limp-home region. The reason for two sets of gains is
because electronic throttle bodies typically have stiffer spring return rates applied to
angles below the limp-home region.
3.) A limp-home compensation value is added to the PID value to assist with travel through
the limp-home region. This compensation can minimize the flat control spot often found
as the throttle plate moves through the limp-home region.
4.) A stiction compensation value is added to the PID value to assist with small error control.
When the throttle plate approaches the setpoint, stiction in the throttle motor gearing can
be significant enough such that PID control alone will cause integral overshoot. Stiction
compensation will apply small alternating forces to assist the PID integral action.
5.) Battery voltage compensation is optionally added to the final output to compensate for
battery voltage fluctuations away from the nominal voltage.
In general, the final voltage u (V) is a sum of 3 components and optionally multiplied by a battery
compensation factor:
u (V) = [ PID(V) + Stiction Comp(V) + Limp-Home Comp(V) ] * Battery Comp Factor
The first calibration which the user should tune is throttle angle versus sensor voltage. A linear
equation can be used, as well as a two-point 1D lookup table. Manually close the throttle plate
completely to determine the minimum sensor voltage. If the radii of the throttle body opening and
the throttle plate are measured, then the minimum throttle angle can be calculated by using an
inverse cosine calculation, or by approximating the small angle with sine. Manually open the
throttle plate to wide-open-throttle, noting the maximum sensor voltage. Assume the wide-open-
throttle angle to be 90 degrees. After calibrating for position versus voltage, enter the value for
ThetaLH (default limp-home position). It is recommended that the sensor voltages entered into
the position calibration for the upper and lower limits be slightly narrowed so that position control
at these points does not overwork the driver, trying to achieve positions that are not possible as
sensing conditions change. Another way to prevent this condition is to limit the setpoint range to