Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Tuning PI speed controller for DC motor

  1. Apr 10, 2009 #1
    Good day everyone

    I'm implementing a speed controller for a DC motor 220 v 2.7 A 1500 rpm.

    I've already made and tested the firing circuit and the motor works fine in an open loop.

    Now big problem the parameters of the motor are unknown and impossible to find. No time for mechanical procedures to find those parameters too.

    I want to implement a speed controller with an inner current loop. the set point is from 0 to 10 volts .. the 2 P's and the 2 I's can be varied through potentiometers but online tuning for a motor that big is dangerous i guess. Can someone tell me how to do it ?

    As a start what should be the gain of the current sensing signal (The Red Box in the pic) if the resistance used is 0.1 ohm 7 watts ...

    The tacho Generator transfer function is 90v / 1500rpm .. i actuated it to be 10v at 1500 rpm to match the setpoint

    http://img19.imageshack.us/img19/9941/controllerl.jpg [Broken]
    Last edited by a moderator: May 4, 2017
  2. jcsd
  3. Apr 15, 2009 #2
    C'mon guys any help is mostly appreciated
  4. Apr 29, 2009 #3
    What functions do you want your controller to have? Do you want to ramp up and ramp down the speed with a fixed or adjustable ramp speed Do you want over current protection (to protect against over heating when stalled)?

    If the motor is turning a load with high inertia especially if the load is variable you may have to worry about overshoot and oscillation. One advantage to using a PID controller over a PI controller is that the waveforms of the integrator and differentiator tend to be out of phase and thus tend to prevent oscillation.

    I think you're looking to find an automatically tuning controller. The easiest way to do that may be with a microcontroller.
  5. Apr 30, 2009 #4
    Thanks for your reply skeptic2
    Just a fixed ramp speed varying from 0 to 10v corresponding to 0 to rated rpm (which is 1500 rpm). Actually i've implemented the speed control loop and it worked fine.
    Still the problem is with the red box in the pic and also i think i will have to re-adjust the PI values of the speed controller when i add the current loop to it .. right ?

    And yes i will also need an over current protection.
    I'm running a fixed load so i'm not worried about any kind of unstability.
    And unfortunately i must do this project using analog circuits, I cant use a microcontroller..
  6. Apr 30, 2009 #5
    Assuming this is a DC motor, I'm sure you know the speed is proportional to the voltage and the torque is proportional to the current. Some of the voltage is lost in the I*R drop of the motor and wires. This results in the motor slowing down as the load increases. Normally that voltage loss is compensated for by measuring the motor current and adding a percentage of that value back into the drive voltage. The current limiting can act as a limit that will lower the drive voltage to prevent the current from exceeding a fixed value or it can act as a circuit breaker that will shut off the drive voltage until a button is reset.
  7. Apr 30, 2009 #6
    From the block diagram, it appears you're missing some information.

    Your units won't match up at the current error and current controller (you're subtracting a current measurement from a velocity signal). Maybe I'm being picky or don't see the concept, but I think you need to add details and information to the block diagram. You can then get a proper idea of what information you have and need to attain.

    Like someone else said, you will use or derive constants that show the relationship between torque and current, and voltage and rpm, all of which are specific to your motor. You should be able to get these from the manufacturer or datasheet without knowing the internal resistance and inductance of the motor.

    The internal inertia, friction, inductance, and resistance of the motor may be negligible depending on the response you're expecting out of your controller and how much more significant the load's intertia and force is than the internal inertia and friction.
  8. Apr 30, 2009 #7
    @ TheAnalogKid83
    The current signal is actually a voltage drop across a very small resistance (voltage signal corresponding to the passing current). Also as i mentioned before i know nothing about this motor except its rated V, I and rpm. No manuals or datasheet. Actually this motor has been in my college for more than 60 years.

    Thanks to TheAnalogKid83 & skeptic2
    Still no answer to my question :(
  9. Apr 30, 2009 #8

    You say you've already gotten the speed control to work. That means you've been able to divide the maximum voltage across the motor down to 10 V and use that voltage in a comparator and integrator to develop the drive for the motor.

    You need to insert a small value resistor in series with the motor. For instance if it is 0.1 ohm at 1500 RPM and 2.7 amps you will have 0.27 volts across the resistor. Your current limit needs to be above that because you will use more current during acceleration. Let's set the current limit at 3 amps but it may have to higher. It should be adjustable with a pot. You would connect your reference to the non-inverting input of the opamp and the current feedback to the inverting input. Your current feedback opamp should have a gain of at least 43.

    There are various ways of combining the speed signal and the current signal. I think in your case I'd use a 10K resistor between the output of your speed signal opamp and the input of the summing opamp. I'd connect a diode between the output of the current feedback opamp and the same input of the summing opamp. The diode's anode is connected to the input of the summer opamp and the 10K resistor. The cathode is connected to the output of the current feedback opamp.

    It's really difficult to convey a circuit with only words but I hope you get the idea.
    Last edited by a moderator: May 4, 2017
  10. Jun 18, 2009 #9
    skeptic2 thanks again for your help .. its very useful so far

    sorry for the late reply; i stopped working on the project for a while and paid attention to the exams.


    Whats the purpose of the diode ? .. Is it for limiting the current ?
  11. Jun 18, 2009 #10
    The idea is that to limit current, the amplified voltage from the current sensor must be subtracted from speed voltage only if the current exceeds the current limit. One way to do that is to use a diode so that when the current is less than the current limit, its value does not get added to the speed.
  12. Jun 19, 2009 #11
    Thanks i'll try that ...
    Its frustrating never thought a PI controller would be that complex
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Similar Discussions: Tuning PI speed controller for DC motor
  1. Dc motor speed control (Replies: 4)