For a university project, we need to use electric motors. (This is not our area of expertise, we are aerospace engineers, not electric engineers.)

We have already selected a suitable motor based on specs (it's a brushless big-ass DC motor), however I would like to convert those specs into a performance plot similar to the one below, that can show how the motor would behave given some inputs.

Performance plot for DC motor
(source: micromo.com)

Nevertheless, I am getting stuck on many fronts, and was hoping I could be helped out a bit further:


First, with regard to the theory I have collected from references; these are the equations that I am using to create the lines:

The electrical input power is specified as: \begin{equation} P_i = V_i I_i \end{equation}

(where \$P_i\$ is the electrical input power, \$V_i\$ the input voltage, \$I_i\$ the input current.)

The mechanical output power is defined as: \begin{equation} P_o = T \omega \end{equation}

(where \$P_o\$ is the output power, \$T\$ the torque produce and \$\omega\$ the rotation speed of the motor's shaft.)

In addition, reference claim that the torque and rpm can be related like:

\begin{equation} T = T_s - \omega \frac{T_s}{\omega_f} \end{equation}

(where \$T_s\$ is the stall torque, \$\omega_f\$ the no load rpm)

I can then also rewrite the output power equation as:

\begin{equation} P_o = T_s \omega - \omega^2 \frac{T_s}{\omega_f} \end{equation}

This already allows me to plot the pink line and the red dotted line from the figure shown above. For this, I only make use of the max torque specs and the max rpm specs given to me by the manufacturer. (See calculations below).


Problem 1:

The torque relation does not take into account voltage. I mean, sure, from the manufacturer (see data below) I am already given an operating voltage. However I was hoping to make use of a voltage regulator to control the motor, and without this relation I don't know what the output would be for other voltages.

Problem 2:

The peak power (at 50% max torque) is 3 times lower than the peak power given by the specs! Why is that? (You can check my calculations below).

Problem 3:

I do not know the stall current and free load current, and thus am not sure how to draw the current line (the dark blue line in the figure).

Problem 4:

Reference keep saying that the efficiency of the motor is:

\begin{equation} \mu = \frac{P_o}{P_i} = \frac{T \omega}{I_i V_i} \end{equation}

(where \$\mu\$ is the efficiency). This seems to me quite obvious, but would that not mean that the efficiency plot is same in shape as the power output plot? In all references though, they show the efficiency relation to be like the brown line shown in the figure... Where did they get this from? (Maybe one needs to apply the resistance of the motor for this?)

I would appreciate immensely any help with this, as the references I have found so far are not helping me out any further on any of these aspects.


In case you need to know the specs that I have available, here:

  • Maximum RPMs: 12000
  • Cooling: water
  • Peak power: 100 kW
  • Nominal power: 50 kW
  • Peak torque: 100 Nm
  • Nominal torque: 50 Nm
  • Nominal efficiency: 95.0 %
  • Maximum efficiency: 98.0%
  • Voltage: 400 V

My calculations:

Here is the python code I have assembled so far to create my plot.

import numpy as np 
# Motor data:

RPM_max                 = np.array([[12000.0,10000.0,8000.0,4000.0]], dtype = float)
PowerPeak               = np.array([[100.0,170.0,300.0,480.0]], dtype = float) * 10**3
PowerNominal            = np.array([[50.0,85.0, 150.0,240.0]], dtype = float) * 10**3
TorquePeak              = np.array([[100.0,250.0,500.0,1000.0]], dtype = float) #Depends on speed (of course).
TorqueNominal           = np.array([[50.0,133.0,267.0,500.0]], dtype = float)
EffNominal              = np.array([[95.0,95.0,94.8,94.5]], dtype = float) * 10**-2
EffMax                  = np.array([[98.0,98.0,98.0,98.0]], dtype = float) * 10**-2
VoltageBattery          = np.array([[750.0,750.0,750.0,750.0]], dtype = float) #first one can also be 400

# Motor calculations:

MotorType       = 0
Omega_max       = ((2.0*np.pi)/60.0) * RPM_max[0,MotorType]
Torque_max      = TorquePeak[0,MotorType]
ResolutionSteps = 100.0

Range_Omega     = np.linspace(0,Omega_max,ResolutionSteps)
List_Torque     = Torque_max                               \
                -(Torque_max / Omega_max) * Range_Omega**1 
List_PowerOut   = Torque_max              * Range_Omega**1 \
                -(Torque_max / Omega_max) * Range_Omega**2

RPM_nominal = 0.8 * RPM_max #First rpm nominal estimate based on reference.

#You can print out the maximum power; strangly its three times lower than the peak power given from the specs... something is off.
print np.max(List_PowerOut)
  • \$\begingroup\$ Just out of curiosity, how did you plot output power? Ts and wf are constants, so Po=f(w), and I don't see how that can be presented on your plot. Unless your "output power" plot is actually torque plot for T=f(Po,w) \$\endgroup\$
    – Maple
    Jun 16, 2018 at 20:29
  • \$\begingroup\$ I am given RPM_max and TorquePeak. With that I plot the Torque vs. rpm relation, where my range for rpm's goes from 0 to RPM_max. This range I also apply to the power equation shown above. \$\endgroup\$
    – Nenunathel
    Jun 16, 2018 at 22:03
  • \$\begingroup\$ With that approach you can get a trio T, Po and w and draw a plot, yes. But it would be a plot for torque, where each point of a curve corresponds to infinite number of [Po,w] pairs. I don't think you can draw any conclusions regarding output power from it. I might be wrong, of course. \$\endgroup\$
    – Maple
    Jun 16, 2018 at 22:19
  • \$\begingroup\$ Oh, wait a sec. The scale on the right is not a secondary axis for multi parameter function, you just put it there to separate it from rpm scale which has different range, correct? Then the power plot should be function of (T) i.e. Po = T x wf - T^2 x wf / Ts \$\endgroup\$
    – Maple
    Jun 17, 2018 at 0:46
  • \$\begingroup\$ Let me add some more detail to this question; then I can show you my calculations. \$\endgroup\$
    – Nenunathel
    Jun 17, 2018 at 8:20

2 Answers 2


Problem 1:

The most common way to control motors is using PWM. Which means they always work at the same max voltage, although it is not applied all the time. Regardless of that, when PWM is used you can calculate RMS voltage and use it as input voltage.

The actual relation between voltage and no load speed is very simple: W0(v) = Kv * V, where Kv is "velocity constant", Kv = W0(Vmax) / Vmax. I guess you can use Max RPM and Voltage from datasheet as W0(Vmax) and Vmax. Of course under load speed will be reduced proportionally to torque.

All that said, you don't really need voltage to predict power output from the motor. You know "nominal power" and you should not exceed that in your design if you want motor to last. Most likely it is already given for max efficiency spot on the curve, so it makes sense to design around that.

Problem 2:

I tried different formulas for power calculation and I got result similar to yours. Now, are you sure that the numbers you provided are real? The reason I am asking is that when I calculate Kv for your motor I get 3.1415926. Reminds you of something? Too good to be a coincidence. And if max RPM and voltage are fictional, who says max power isn't.

Problem 3:

I am actually surprised by those missing. I've never seen motor datasheet without no-load and stall currents, which are fundamental motor characteristics. They are really important. For example, if you remove I0 from torque equation T = Kt(I-I0) most of the other equations will fold into something like Pi = 2 * Po.

Problem 4:

Due to friction and armature losses you need to pump some power into motor before it even starts turning. All this time it does not generate any output power, so the efficiency stays at 0. This is where that jump in efficiency plot coming from.

  • \$\begingroup\$ Problem1) That is a good point, the PWM controller, I have not thought about that. And with regard to using power nominal as the value to design for, of course, I already do that. Problem is, I wanted to know my safe rpm range, as our design may require sudden changes in loads. //Problem 2) While it is a dc motor, it does have quite an unconventional assembly. Maybe that is why we get different results... I will ask the manufacturer for more details. //Problem 3) Same, will ask manufacturer. // Problem 4) It would be nice to have an equation I could use to estimate this. \$\endgroup\$
    – Nenunathel
    Jun 18, 2018 at 8:46
  • \$\begingroup\$ "It would be nice to have an equation". The equation for efficiency remains the same, the output power stays 0. And, of course other equations should be adjusted with I0, like torque equation I've shown in 3). The problem is, you can't estimate I0, it is a combination of mechanical and electrical characteristics of the motor. That's why it is usually provided in datasheet. Some useful stuff: Ke = Kt = 1 / Kv. R = Ke * V / Ts. \$\endgroup\$
    – Maple
    Jun 18, 2018 at 10:04

The peak power (at 50% max torque) is 3 times higher than the peak power given by the specs! Why is that? I was thinking that maybe the peak power given in the specs is an indication to how loaded the motor has to be for safe operation...?

Yes, this is almost always limited in the manufacturer's specifications to ensure the motor does not overheat. From a physical point of view, the motor is able to provide stall torque (and possibly more) across the full speed range, provide a suitable controller is used to run it and you supply enough cooling. This is not a typical operating point, however, so the manufacturer will probably not give you any support if you want to do this.

The second problem I have is that reference keep saying that the efficiency of the motor is:

You are correct - this is just the obvious definition. But notice that the torque and speed figures are not qualified (i.e. related to the input power). The actual value of mu can only be determined by measurement as it includes things such as iron losses, electrical losses, bearing friction, windage etc. If you measure it you get the graphs you refered too.

In practice, electrical losses will dominate (and are relatively easy to calculate - I^2*R) at lower RPMs, while electromagnetic losses will dominate at higher RPMs and are also fairly predictable.

  • \$\begingroup\$ 1) What is the point then of showing a figure for nominal and peak power? I would have assumed that the nominal power is the power you should run the motor to achieve maximum efficiency, and peak power is the maximum power you can get out of the motor, but you risk burning it... 2) Is there some reference/equation that you can offer that would allow one to plot the efficiency curve? \$\endgroup\$
    – Nenunathel
    Jun 16, 2018 at 15:16
  • \$\begingroup\$ 1) To add, the torque nominal is actually half of the peak torque... Which is the point where the peak power is... except that here the peak power is 3 times bigger... \$\endgroup\$
    – Nenunathel
    Jun 16, 2018 at 15:23
  • \$\begingroup\$ 1) Ah wait... I found a mistake... I was using rpms as a unit to calculate power... I will correct this and come back. I do still though have the other problems with efficiency... \$\endgroup\$
    – Nenunathel
    Jun 16, 2018 at 15:25
  • \$\begingroup\$ Great... now the peak power from the plot I am making is 1/3 of what it should be. \$\endgroup\$
    – Nenunathel
    Jun 16, 2018 at 17:12
  • \$\begingroup\$ You might extrapolate nominal torque upto stall torque as this relates Istall=V/DCR of coils at Mac torque. Torque declines with RPM due to internal voltage generated or BEMF similar to RPM/V with no load (except 2% losses minimum at optimum efficiency) You can measure stall torque briefly at lower voltage and extrapolate. \$\endgroup\$ Jun 18, 2018 at 2:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.