How a BLDC motor works and why a hub motor gets hotter

Triggered by a number of discussions between @hummie, @devin and @brams and because of science I’m digging into this, making a fool out of myself trying to explain why a hub motor gets warmer than a satellite motor cruising at the same speed. Btw, the short answer up front: because of the lack of gearing!

Disclaimer: I’m not a professional writer nor a teacher. And English is not my first language. Just some dude trying to explain things. I will also have to simplify stuff, hopefully not oversimplifying. So please be patient with me but step in when I’m wrong.

How does a BLDC motor work? First we need to understand how a Brushless DC (BLDC) motor works. Regarding the mechanics a BLDC motor is very similar to a step motor and a synchronous motor and a brushed DC motor. I’m not going to discuss mechanics here for now.

The main difference between the mentioned motors is how they are controlled. Synchronous motors are AC motors. They ran at a frequency set by the AC current supply. Synchronous motors don’t have much with regards to control as the frequency of the input and thus their RPM is normally given. Under load they still run with the same frequency but increase to draw current. Note: most synchronous machines are used as generators. Actually, all of the synchronous motors can be used as generators.

Brushed DC motors have the “controller” “build it”. Input into the controller is a DC Voltage. The controller is a mechanical thing with brushes and contact areas. This controller converts the DC input into AC output which is then used as input for the actual motor. This is called commutation and the controller is a commutator. The commutator is a mechanical thing and is actually quiet complex. Because of the brushes and the contact areas it has mechanical wear which is a big disadvantage. So the brushed DC motor is actually an AC motor very similar to the synchronous motor. Because overall input is DC it’s called a DC motor. :innocent: Speed control is done by varying the input voltage into the system, so by varying input voltage into the commutator. Higher voltage results in higher speed. Under load the motor uses more torque and draws more current. Torque and current are proportional. Btw, more current produces more loss due to heat.

Now we come to our beloved Brushless DC Motor which is similar to a brushed DC motor … without the brushes :grinning:. Or better: without the physical commutator. The physical commutator is replaced with an electronic commutator which normally sits outside of the motor! Same as the physical commutator the electronic commutator (EC) is quiet complex. You guessed it, it’s the ESC. The ESC commutates the DC input into AC output which is then AC input for our motors. So our BLDC motors are actually AC motors, only the mostly external ESCs make them DC motors … And they are very similar to AC generators.

How is speed control done in the ESC for our motor? Simple answer is it’s the same as for the brushed DC motor, the ESC varies the motor input voltage. But this is oversimplified. Also as we know the voltage into the ESC is normally fixed. In our case it’s the voltage of the battery. A technique called pulse width modulation (PWM) is used to create an average voltage into the motor. The higher this average voltage the higher the RPM. Higher average voltage is achieved by wider pulses. All this is calculated by electronics and software. In the VESC we have a chip that does all of the calculations plus we have a driver chip that gets input from the calculation chip and that drives the MOSFETS. The MOSFETS open and close the gates for current and voltage. So the voltage going out of the VESC and into the motor is the average voltage produce be PWM and it’s always lower than the voltage going into the VESC. It cannot be higher (unless produced by the motor, we come to that later). (note: our RC-style remote receiver controls the throttle of the VESC also using PWM, but this has absolutely nothing to do with this, just the same technique)

Now we have to discuss Kv of a motor. Kv is one motor constant, the motor velocity constant. It is fixed and based on the physical characteristics of the specific motor. Kv is two things:

  1. most people will say that Kv is the RMP per Volt of an unloaded motor. As an example the OllinboardCo OM5065 is a 170Kv motor, so at 10s=37V it will have an RPM of 37V*170RPM/V = 6290 RPM (without load) – this is not the definition of Kv, but it’s almost true, it’s very close. The reason is explained below.
  2. the exact definition of Kv however is the following: Kv is the reciprocal value of the Ke, the back-EMF constant. Kv = 1 / Ke. The back-EMF is the voltage a motor generates when rotated. So when chakas motor is rotated with 5000 RPM it produces 5000 RPM * 1/ 170RPM/V = 29.4V . Remember? Our motors are also AC generators.

When does a BLDC motor turn / accelerate? Answer: When the average voltage from the ESC is higher than the generated voltage. Then current starts to flow through the motor. But how much current does flow? This depends a) on the mechanical power needs to be produced by the motor and b) the RPM the motor is currently running and thus the back-EMF in V. This mechanical power is produced by electrical power and is calculated voltage times current - P = U*I where U is the back-EMF generated by the motor. If a motor does not need to produce power it will spin up freely and not much current will flow and the RPM reached is very close to the theoretical maximum Kv * U .

If the motor needs to produce a lot of power, more current will flow, especially if the motor is at a low RPM (and thus low back-EMF).

This concludes the first part of my article. I’m working on the second part where I want to show some numbers and calculations and dig into the hub motor story. This needs some time, so please be a little patient.


This post was flagged by the community and is temporarily hidden.

Our remotes actually use PPM, pulse position modulation. This is basically just sending various length bars pulses of on or off. Very different from pwm.

1 Like

Hello @Stevemk14ebr I would like to be exact here and I see some wrong remarks in your post (sorry, I am a smartass):

I never talked about remotes, only about the receiver. My understanding is that the communication between RC _receiver and ESC is via PWM (as written above)

Yes, the communication between transmitter and receiver is via PPM, but I didn’t mention that.

And sending various length bars of pulses is PWM - pulse width (length) modulation

PPM is pulse positioning modulation. A pulses are sent at various timings but have the same length.

Again, sorry for being a smartass, just seems to be such a day …

you are exactly ppm correct it relies on time not length, my mistake. I read your quote as if you were talking about receiver->controller

@devin, if there is no load, there will be (almost) no amps. And you cannot “give” (force) more amps, you can only limit amps.

But you can “give” more voltage.

The amps are then drawn by the load (if not limited).

I really tried to explain this using my words, hope it helps. If you don’t believe, well you don’t need to … But I honestly think it would help you understanding some things.

Pwm has nothing to do with how the motor is turned. You have ppm from controller -> receiver then pwm (may be ppm aswell, idk) from receiver -> esc and then on a 3 phase dc motor like we use the esc simply energizes the correct coil at the right time. Different methods of determining which coil to energize exist, just 2 being sinusiodal, and foc, there are other methods aswell.

Again the pwm signal IS NOT fed into the motor.

Fully agree with you that the PWM signal from the receiver IS NOT fed into the motor. I even mentioned that in my post above. The PWM signal between receiver -> ESC has absolutely nothing to do with the PWM motor control ESC -> motor! So we do not need to discuss that. For ease of thinking we can even assume that input into the ESC is not via PWM but via a signal via the USB port or via UART or via Canbus. It doesn’t matter.

Nevertheless: the ESC in BLDC mode produces a PWM voltage that goes into our motor. This is how voltage and speed is controlled. FOC is different. In this mode the (V)ESC creates a sinusoidal DC wave. I haven’t looked deeply into that yet.

I hope you do look into it, I know more than a few of us are really interested in FOC and would like to know more about how it works.

I’m really enjoying your BLDC explanation, Thanks!

1 Like

There are 3 main algorithms for bldc. In order of increasing efficiency: trapezoidal, sinusiodal, and vector algorithms such as foc.

It is important to note that rotor position is usually measured through “back emf” on the third un-powered phase coil inside the motor (trapezoidal and sinusoidal only power 2 coils at a time). This is a result of the fact that motors act as generators while spinning.

Trapezoidal is a very basic technique that energizes two of the three coils based on the rotor position.

Trapezoidal has high torque ripple, torque ripple can be thought of as a jerking push behind the motor, as if someone constantly went full throttle and zero throttle super fast.

Sinusoidal control improves on trapezoidal by smoothly varying the current as it transitions to energizing a new pair of coils. It has reduced torque ripple but is innacurate for high speed.

Foc solves all of the above by relying on vectors. As you may or may not know a motor is most effecient when the magnetic field is exactly 90 degrees to the electrical field. Foc mode creates a vector between the 3 phases of the winding in the motor and adjusts the power to line this vector up 90 degrees to the rotor. Foc uses all 3 coils, and always keeps the feld as close to 90 degrees as possible, this is why it is better.


To answer the thread hub generate more heat because they are at a mechanical disadvantage. This means to go the same speed or have the same torque they have to work harder. This requires them to draw more amperage from the batteries (voltage is a fixed value). Higher amperage systems generate more heat through inneficiencies in the motor and wires. Low amps = less heat = better.

If we doubled the voltage we gave to hubs the heat output would be the same/similar. But we’d also need higher voltage systems.


This post was flagged by the community and is temporarily hidden.

This post was flagged by the community and is temporarily hidden.

hello @devin, Edit: this answers your “first” question above. this statement from @hummie is absolutely true and I’ve explained it in another thread.

Reason is the following: it’s a misconception that the full battery voltage is applied to the motor at all times. Yes, the full battery voltage is applied, but only in short “spikes”, see above under PWM. So we have to think in average voltage. And the voltage on the motor side is actually the induced voltage that depends on the RPM of the motor.

And this voltage at the motor is lower than the battery voltage. So in order to have the same power (power always stays the same), the current in the motor can be higher than the current out of the battery.

This post was flagged by the community and is temporarily hidden.

This post was flagged by the community and is temporarily hidden.

here I’m not agreeing with @hummie and I’m agreeing with you @devin

The motor with more amps will also produce more loss to heat.

The amps do not disappear at all, they are converted. Think of two linked circuits. On the left side batter and VESC input ---------- on the right side VESC output and motor 37V ------ 25V 10A ------ 14,8A 370W ------- 370W

Think like an AC transformer. On one side you can have 1000V and 1A on the other side you can have 100V and 10A.

Our ESC does the same: it commutates DC power into something like AC power.

Especially in this case. If a motor is stalled and unable to rotate, current in the motor will go very very high. In theory the current is infinite when a motor does not turn. Reason: voltage at motor (Back-EMF) is 0. In real life the motor current is limited by the system. The whole system cannot produce more power than is there.

One more thing: I would LOVE to discuss all of this over a fine craft beer with you guys. Maybe I fly to SF just to discuss with you two … honestly!


haha. come on over though and I’ll buy you a beer and send you off on my board.

You will have the same heat in a motor to produce the same torque with either a 100 volts system or 1 volts system.(assuming the kv is adjusted) the inductance producible and resistance of the windings are inversely related. to get enough inductance to get up a hill with a motor that is 100kv takes ten times less amps than the same motor wound to have 1000kv, true, but the resistance of the windings is 10 times more so it balances. and then if you also adjust your battery voltage to match and you have ten times more amps in the low voltage battery, of the same size, you go just as far. Only thing you’d need to think about with the low voltage/high kv/many amp set-up is the rest of the wiring needs to a bit thicker and the vesc doesnt like it as much, but the motor wont notice the only reason to go to higher voltage is if you want more speed or the vesc overheats or you want to reduce the size of the rest of your wiring. a low voltage set-up is said to be the future by some as it’s safer. As soon as the escs have better components that can take the amps there’s no reason to go to higher voltage…unless you get bored at your current speed. and then it’s more so just a personal thing and will leave you faster but generally a bit less efficient (me)

why a hub motor gets hot though is not that and is simply the lack of gearing…so really a gearing set up enables you to produce a lot less torque from the motor. If my rare 54mm motor was to be wound to have a kv that was 1/3 of what everyone with a pulley set-up is and they use a 3:1 pulley set-up…so maybe 60kv…I wonder how efficient it would be going the same speed as the pulley set-up at lets say 15mph max speed on a flat. I think it would fare better than the pulley set-up as long is the load wasnt too much. So a flat 15mph comparison.
I’ve heard that the best way to determine what size motor you need to get to ultimate efficiency is to balance the copper and iron losses. all of us I imagine are way in the red on the copper losses regardless of hub motors or pulleys. We’re all not doing things for ultimate efficiency and if we were we’d be using bigger motors. and then the copper will have less resistance, stay cooler. but MAXIMUM efficiency is not what almost anyone is after on a skateboard. A bit more loss to copper and we get to have a smaller motor and all is fine and we maybe lose a block or two travel distance and the motor doesnt get too warm to damage anything

1 Like

Sure… at stall torque. There is no applied voltage at stall torque, so of course amps are gonna drive the heat losses.

A BLDC motor is a circuit, and Ohm’s law still applies. Waste heat (in Watts) can be calculated as some coefficient of the square of current times the electrical resistance ( W = I^2 * R ). @devin & @PB1, the concept that both you guys are missing is that assuming the same power output, electrical resistance R increases exponentially when you shift the voltage ratio (because R = V / I). So with a high-spinning motor under load, applied voltage quickly becomes a much bigger factor than amps when it comes to waste heat.

At max rpms under full load, the 1 amp 100 volt motor will actually have 10,000 times the electrical resistance of the 100 amp, 1 volt motor, and it’ll correspondingly get a lot hotter.

i think making scenarios with 1 amp and 100 volts or vise versa isn’t possible. the resistance determines what current and voltage it is. the resistance is the one stable number

This post was flagged by the community and is temporarily hidden.