I want to control the motor position. but i have a problem to determine the controller i use, what is the best controller to control the motor position. is it with PI controller or PD, or PID
P, PI, PD, PID
Feb 09, 2004
4 Replies
Maybe someone has more experience, I'd say PID, anyways you can always use such parameters to eliminate I or D component to get PD or PI out of PID.
There are so many variables behind that question that you need to supply more information before it can be answered. There's some information on PID choices and tuning in
formatting link
that's more for the embedded software engineer who's writing code for the controller.
If your motor is driving a geartrain or anything with appreciable friction or backlash your life will be complicated. These are nonlinear effects, which take you right out of the "easy" realm of linear controllers. If you have them should also consider if you need to add compensation for them; this usually takes the form of deadband in the controller or a pulsed drive to the motor, both of which take some tinkering with to apply.
Your basic tradeoffs are:
Only P: Very easy controller to tune, and to implement if you're rolling your own. Very limited range of what you can do with one tuning parameter, and it depends on the motor not stalling before you're satisfied with where it landed.
PI: The integral action guarantees that the system will keep pushing until the target is reached. It also contributes greatly to instability. Particularly, if your system has appriciable backlash or friction a PI controller will get close to the target then "hunt" around the target point.
PID: The differential term will help to improve the bandwidth (and therefore response speed) of your system, but it will also make your system more susceptable to noise, it will enhance the destabilizing effects of any mechanical resonances in your system, and it gets dicey to apply in the presence of non-linear compensators for friction and backlash.
Deadband and pulsed drive: Beyond the scope of this posting. I'm working on an article about these, but they've been around for decades so there's plenty of material if you dig for it.
Good luck -- it'll be fun when it starts working.
1) More application outline required.
2) These will control HOW you get to and hold the motor position. Must also include feedback as to where your motor is and a SetPoint input as to where you want to be, AT ANY POINT in time. This maybe dynamic or not.
Assuming your motor/actuator transfer function can be modeled simply like G*a/(s*(s+a)) then a PID with all the PID terms acting on the error is optimal. Given a simple system like G*a/(s*(s+a)), a PID allows one to place all the poles where you want.
Peter Nachtwey
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required