mgeerts
Computer
- Nov 10, 2009
- 34
Background:
I am currently writing control firmware for a machine that is powered by a honda engine through a hydrostatic transmission. The transmissions is infinitely variable and has a throttle control on it (the motor has no throttle control, it just runs at 3krpm).
Attached to the throttle on the transmission is a DC motor with encoder. I have developed the required PID controls to accurately move the throttle motor.
Attached to the machine is a speed sensor. I have developed the required firmware to accurately measure the speed. The load on the system is randomly variable so a constant input and throttle does not result in constant RPM.
Requirements:
I need to develope a PID controller that will take the RPM of the machine as a process variable and the position of the throttle motor (setpoint feeding the throttle PID) as a manipulated variable.
The problems:
The task at hand is quite simple except that there are two problems...
1. The coupler between the motor and the throttle is horrible and has about as much lash as the total range of motion of the actual throttle. ie, the throttle has a 13 degree range of motion, but in order to change directions the motor has to rotate about 10 degrees before the throttle starts to move the other way.
2. The throttle response is non-linear. I would guess that it is nearly exponential, running about half output speed at 90% throttle.
I am not very worried about the non-linearity. What I'm wondering is how to produce a PID control that can handle the lash in the coupler without huge overshoots. The motor can settling on any position in less than 1 second but the RPM only needs to settle on the desired setpoint in 10-15 seconds.
Any suggestions?
Thanks,
Matt
(I have been writing firmware for nearly 3 years in a custom electronics company. I have done PID motor controls on multiple projects, but they usually very straight forward motor speed/position control)
I am currently writing control firmware for a machine that is powered by a honda engine through a hydrostatic transmission. The transmissions is infinitely variable and has a throttle control on it (the motor has no throttle control, it just runs at 3krpm).
Attached to the throttle on the transmission is a DC motor with encoder. I have developed the required PID controls to accurately move the throttle motor.
Attached to the machine is a speed sensor. I have developed the required firmware to accurately measure the speed. The load on the system is randomly variable so a constant input and throttle does not result in constant RPM.
Requirements:
I need to develope a PID controller that will take the RPM of the machine as a process variable and the position of the throttle motor (setpoint feeding the throttle PID) as a manipulated variable.
The problems:
The task at hand is quite simple except that there are two problems...
1. The coupler between the motor and the throttle is horrible and has about as much lash as the total range of motion of the actual throttle. ie, the throttle has a 13 degree range of motion, but in order to change directions the motor has to rotate about 10 degrees before the throttle starts to move the other way.
2. The throttle response is non-linear. I would guess that it is nearly exponential, running about half output speed at 90% throttle.
I am not very worried about the non-linearity. What I'm wondering is how to produce a PID control that can handle the lash in the coupler without huge overshoots. The motor can settling on any position in less than 1 second but the RPM only needs to settle on the desired setpoint in 10-15 seconds.
Any suggestions?
Thanks,
Matt
(I have been writing firmware for nearly 3 years in a custom electronics company. I have done PID motor controls on multiple projects, but they usually very straight forward motor speed/position control)