CarbonWerkes
New member
- Mar 15, 2006
- 62
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
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