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

Homework Help: Modelling a DC Motor

  1. Aug 1, 2011 #1
    This is not homework but I would consider it to fall in this category. I am working on a robotics project and wanted to simulate a PID controller before implementation. I need to find a transfer function for my motor for this to work.

    1. The problem statement, all variables and given/known data
    As mentioned above, I need to find a Transfer Function for my brushless DC motor (Optima 300 Brushless Motor 2208-1100KV). I have done quite a bit of testing and so the data I have available is:
    - RPM of motor at various Duty Cycles (controlled via microcontroller PWM)
    - Steady State Voltage at various Duty Cycles
    - Voltage across motor (not sure what it is though- I probed the left most wire and grounded it on the right most wire- red and black respectively. Not sure what I am ACTUALLY measuring on the motor, though I believe it is my applied voltage after conversion from my ESC)

    2. Relevant equations

    [itex]G(s) = \frac{K_{m}}{\tau_{m}\tau_{e}s^{2}+(\tau_{m}+\tau_{e})s+1}[/itex]

    3. The attempt at a solution
    I used a plot of Shaft Velocity in rad/s over Applied Voltage whose slope I said was Km

    I said my [itex]\tau_{m}[/itex] (mechanical time constant) was 0.02s by saying it was equal to [itex]\frac{R_{a}}{K_{m}\bullet K_{e}}[/itex] where [itex]K_{e}[/itex] is the slope of my applied voltage vs. Shaft Velocity (I think this is wrong) and [itex]R_{a}[/itex] is given in the datasheet as 22[itex]m\Omega[/itex]. This gives me a [itex]\tau_{m}[/itex] value of 0.02s.

    This seems reasonable to me.

    The next step was to find the electrical time constant, [itex]\tau_{e}[/itex]. I guarantee this is not right but I was hoping I would be approximating it close enough. I said [itex]\tau_{e} = \frac{L_{a}}{R_{a}}[/itex] where [itex]L_{a}[/itex] is the armature inductance which I assumed to be 3mH. This gives me [itex]\tau_{e} = 0.1s[/itex] (approximately).

    When all is said and done I end up with a transfer function of:

    The denominator seems ok, but the numerator appears to be WAY to high. If I multiply [itex]K_{m}[/itex] by my [itex]K_{e}[/itex] I'd have a numerator of 462 which is far closer to what I would expect. My only problem is that I have no idea if I did any of this correctly. Nothing, besides the numerator at least, jumps out at me as being wrong... but that doesn't mean I'm right.

    Worst case I'll just have to build the robot and tune everything (the PID parameters) manually, but I'd MUCH rather have some simulations to refer to.

    Hopefully someone out there can help me out!
  2. jcsd
  3. Aug 3, 2011 #2


    User Avatar

    Staff: Mentor

    I can't see that any of your tests have involved the time domain. All you have done is vary the average DC applied, and noted the new steady state speed. Nothing to do with time or frequency response there.

    In case you're wondering why I don't suggest what tests you could do, it's because I'm not sure. Can you impose a small sinewave on the driving signal? The ac in the voltage from the tachometer on the shaft would then indicate the motor's response.
    Last edited: Aug 3, 2011
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook