Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations waross on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Electronic throttle control

Status
Not open for further replies.

CarbonWerkes

New member
Mar 15, 2006
62
0
0
US
Hi

Im looking at a project drive for electronic throttle control (drive by wire). The throttle body, which contains a geared servo and feedback pots, is spring loaded- such that a power failure to the servo will allow the spring to back drive the motor, to close the throttle plate.

It seems the spring in the system is causing me a bit of trouble with my control loop. At present, Im just using a basic PID process, sampling the throttle plate at 1khz and running the PID loop at 100hz.

When the PID reduces power once the plate is at the target (there is a small dead zone of about .05%), the spring causes the PID loop to fight back. That part was expected, and seems well managed.

However, if I slowly increase the target angle, where the plate must open further (against the spring), the plate movement seems a bit more like a stepper motor than a servo- seems to jump a degree and settle, and repeat as the target slowly increases. My thought is that the problem is in the error term winding up.

I was wondering if anyone had encountered a system like this, where there is a non-linear bias backdriving the servo? My initial thought was simply to build a map of the steady-state current required per degree (for example), and then to just include that bias term in the PID output so as to cancel the spring's impact. Or, maybe I need to dynamically modify gains within the PID depending on position error?

Any thoughts are appreciated-
Regards
R
 
Replies continue below

Recommended for you

The spring is as weak as it can be and still close the throttle, right?

I could imagine some windup but it would be from something else like stiction.
Is this a PID you've written or some OTS device?
Can you breakpoint the system or have it transmit the PID values it's running, so you can see if windup is present?

There are probably several ways to combat this.

If you can alter the control, try adding a pulse function. Something to get the throttle mechanism to move. If the throttle position needs to increase then increase a percentage like 10% over the target for whatever time is required to see the throttle actually start to move, then remove that percentage. Then don't do this for throttle reductions.

Keith Cress
kcress -
 
Hi Keith-
Presumably, the spring is designed to manage a worst case recoverable scenario, or to at least kill engine power within .1sec of servo loss.

It is PID code I wrote- based on the typical variant. There are some limits included for integral error sum, etc, but nothing atypical. It runs very well on a system without a spring (gains changed to suit the different system). I increased the Ki gain a bit and that seems to have helped with the spring- in that it winds up a correction for smaller error faster.

I suspect this is primarily stiction. I had considered a stiction-break pulse, but was concerned this would lead to instability near the target value- where stiction is more likely.

Stiction will vary significantly with ambient temps, and with ambient vibration. Maybe a generic approach as you mentioned (i.e. pulse loop initially (with some reasonable pulse time limit) until plate movement, then revert to PID) would be more effective.

Perhaps engine vibration or airflow turbulence might excite the throttle plate enough to reduce stiction (or the excite system itself into instability!).

Ill give the pulse approach a try.

Regards
R

 
In my tinkerings with carburetors, modifying and rebuilding them, I saw quite a lot of stiction. I think it's from the butterfly interfering with the walls around it due to the end play that seems to be prevalent in all of them.

Turn off the I and the D and see if you can get smooth operation.

Keith Cress
kcress -
 
It is common in control systems that have zero speed Stiction to have a term called "Kick" which is only applied when starting a move from zero speed. The amplitude and duration are emperically determined.
 
I would assume that you will also control idle rpm with this motorized throttle body. The throttle plate should never be completely closed and from my experience the worst time for sticking is if you let the throttle place completely close. At partial openings I've found any decent throttle body to move nicely.

I don't do PID control loops here but I've talked to and watched others work on them. We have a couple of good engineers who have worked on them here. Still, it was interesting to see the involvement of a consultant PHD in the latest project produce the most stable control loop the company has had. He stuck to his guns that extra compensation isn't necessary if you get the loop right.

In another case, we recently talked to a group that does power supplies for the magnets in a particle accelerator. They still used analog control loops because they found the analog loop was easier to get more stable and more accurate than a digital loop.

I guess what I'm saying is that a digital control loop is difficult. When you put the "ideal" PID control loop equation into code you don't end up with a system that accurately represents that equation.

I really don't fully understand the reason for sampling the position at 1khz and then running the loop at 100khz. This means there will be 99 PID calculations where the feedback term is not updated for every PID calculation the feedback term is updated. Or, to look at it another way, every second the processor will do 99,000 calculations without a new up to date feedback term.
 
Does in make more sense that the PID loop is NOT 100kHz? The OP said 100 Hz.
316wvna.gif


Keith Cress
kcress -
 
I ran a data log for the pedal vs throttle plate position (hopefully the link for the image works). What is fairly clear is that the PID is tracking very well as long as the plate remains in motion. It seems stiction applies in both directions, despite the presence of the spring return- which seems strange to me.

In the graph, the red line is the position of the throttle plate, and the blue the pedal. There is some overshoot with the plate at the higher-frequency reversals, but general tracking seems quite good. I havent tried the pulse-break approach yet- but I was thinking- if the system was allowed to lag a bit more, presumably it doesnt come to rest until there is a true motion stop of the pedal, or a reversal. Perhaps that might reduce the 'kick' sreid mentions above?
 
 http://files.engineering.com/getfile.aspx?folder=4acd781f-980d-4441-9048-555ea1059d21&file=ETC.png
Sure does look like stiction. Thanks for the pic.

You should be able to feel it yourself. (?)

You may need to just mechanically fix that.

Or, You may need more torque authority. At some point you can tune all you want and not overcome a mechanical issue.

Keith Cress
kcress -
 
Have you considered one of the modified PID algorithms such as an (error)[sup]2[/sup] algorithm? The response become progressively more aggressive as the error between setpoint and process increases. They can be tricky to tune!


----------------------------------
image.php

If we learn from our mistakes I'm getting a great education!
 
Have you looked at how they construct balanced relays.

A relay contactor sprin loaded in one direction opens faster than they close, so they balance it with a second spring somehow.

Maybe that approach would eliminate some of the bias in the mechanisim itself.
 
Hi Keith-
Logs do sometimes help me (not always!)- but what I didnt post was a log captured later which included the PID resultant, as well as the individual p/i/d components. Really fascinating to see what the controller is doing vs. actual motion. Maybe there are examples of that online, but I think people could learn a lot about PID just by looking at a single log chart such as that.

Yea, I can feel the stepping easily- in fact I can see it easily. I would not have expected that in the spring-assisted direction of rotation- or at least not for it to be symmetrical as it appears in the log. It may be the tuning; given the accuracy of the high-speed tracking, it does not seem to be a lack of control authority (plant/servo power, or control limits). As I try to increase the I-term gain, the system becomes unstable, even with the P gain lowered. Maybe I should just write a morphing routine that will run through all combinations of gains and capture the variant with the lowest deviation duration accumulation (i.e. time outside some defined error term)- maybe that would help me understand if it is a gain term that is way out.

Scotty- no, I have not looked at an I^x method. I suspect that this could help 'if' it were engaged only under conditions of slow delta. I suspect it would lead to instability otherwise, as simply increasing the I term by 20% in the current PID causes the system to become metastable under certain conditions (typically rapid changes in the target position).

Kontiki- I dont think I can use a mechanical offset here. For one, the spring return is a critical safety element. Maybe I can remove the spring for testing- see if that bias is causing this stiction somehow via a couple with the PID. I dont think so, because in the subsequent log, when the input was static, the output was VERY stable- as was the PID. As the spring caused the plate to slowly increase the error term, you see a tiny correction from the PID, and the plate corrects its position. Partly this is due to the PID dead zone; the PID is updating a PWM control register, so if that PWM value is set at say '30' and the error term remains 0, the PID has found a counter-torque bias and does not need to modify the PWM.
 
Status
Not open for further replies.
Back
Top