Connect with us

PID - unstable after applying load

Discussion in 'Microcontrollers, Programming and IoT' started by mgh, Mar 22, 2012.

Scroll to continue with content
  1. mgh


    Nov 17, 2011
    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.
  2. Harald Kapp

    Harald Kapp Moderator Moderator

    Nov 17, 2011
    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?

  3. gorgon


    Jun 6, 2011
    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 ;)
  4. mgh


    Nov 17, 2011
    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.
Ask a Question
Want to reply to this thread or ask your own question?
You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.
Electronics Point Logo
Continue to site
Quote of the day