Maker Pro
Maker Pro

PID - unstable after applying load

mgh

Nov 17, 2011
8
Joined
Nov 17, 2011
Messages
8
Hello All,

A class I am in is working on setting up a PID control for a 90V motor to control RPM. We are using an Arduino Uno, but not using the PID library (professor wanted us to get experience writing the code ourselves). We manually tuned the constants with no load on the motor, and had it running pretty well.

We then added load, and at the same time used the Ziegler-Nichols method to tune, and we got nowhere fast. Our motor comes up to set-point, and holds there for a few seconds, and then starts oscillating. The oscillation is very constant once it starts.

We are stuck wondering why we go so unstable after applying load. Did we try too many things at once? We have not tried manually tuning the PID with load, though some do not believe that is the answer to our problems. Maybe the load is drawing more current, and that is messing with us?

We are using a 1/3 HP 90VDC motor, with our set-point at 1500 RPM, and load of 10 inch/lbs., which is well below the max ratings of this motor. (Max full load RPM = 1750, max load is 12 inch/lbs.)

Any ideas where we should go next?

BTW, I am not cheating:) Prof expects us to look for help and come back with suggestions.

Thanks for any ideas.
 

Harald Kapp

Moderator
Moderator
Nov 17, 2011
13,750
Joined
Nov 17, 2011
Messages
13,750
Just an idea:
I think the load makes the motor react asymmetrivally to changes in the control signal: A loaded motor will accelerate slower than an unloaded motor, but will decelerate faster than an unloaded motor. So the same change in control signal will be answered differently by the motor: It wil react faster to a slow-down command but slower to a speed-up command.
Maybe you can incorporate this behaviour into your PID model and derive different control signals for these two cases?

Harald
 

gorgon

Jun 6, 2011
603
Joined
Jun 6, 2011
Messages
603
There are several things that may interfere with a stable situation. If you have implemented a complete PID regulator the D part may fight the I part and create unwanted feedback. In many cases you may need to implement a deadband to stop the regualator to 'hunt' around the stable position.

Depending on your implementation of the regulator I suppose the P value is close to zero when the I part has reached it's value. It could be that the P factor is too large and creates step responses around setpoint.

The D factor may also create havoc if not properly filtered/ calculated.

It could also be that the update frequency of the algorithm is too slow.

TOK ;)
 

mgh

Nov 17, 2011
8
Joined
Nov 17, 2011
Messages
8
Thanks for the responses, they are much appreciated.

While we did not make any changes today, we had a good discussion on both your points. On Monday we will first try reducing our sample time (that is, sampling more often), and see how the control responds, then probably try to start over and manually tune the system.

Thanks again, I am looking forward to seeing what happens.
 
Top