## FOC vs BLDC Torque Question

General topics and discussions about the VESC and its development.
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable
devin
Posts: 255
Joined: 08 May 2017, 01:55
Location: San Francisco, California, US
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable

### FOC vs BLDC Torque Question

i have a question about FOC (sinusoidal commutation) vs BLDC (block/trapezoidal commutation).

suppose I have a 100kv 0.1ohm lead-to-lead BLDC motor and an 8v battery.

according to my calculations the KM size constant for this motor is 0.3019nm/sqrt(w)

KT = 60/(2 * pi * 100kv) = 0.09549296585513720146133 newton meters torque per motor amp

((8v * 50% duty) - 0v bemf) / 0.1ohm = 40a motor current at 0rpm

4v effective voltage * 40a = 160w electrical

40a * 0.09549296585513720146133nm/a = 3.819718634205488058453nm

3.819718634205488058453nm / sqrt(160w electrical) = 0.3019752726269222102173km

now suppose this motor is presently turning 200rpm from the load at 50% duty cycle in BLDC block commutation.

200rpm / 100rpm per volt (kv) = 2v bemf

((8v battery * 50% duty) - 2v bemf) / 0.1ohm = 20a motor current at 200rpm

4v effective voltage * 20a motor current = 80w electrical

20a motor current * 0.09549296585513720146133nm/a = 1.908nm

80w electrical / 8v battery = 10a battery current

^so 80w electrical gives 1.908nm at 200rpm (20a motor current and 10a battery current)

In summary 10a battery current from the 8v battery (80w) through the 100kv 0.1ohm motor in BLDC block commutation mode gives 20a motor current & 1.908nm at 200rpm.

My question is this: If I switch to FOC mode and I am also drawing exactly 10a battery current (80w) while the same motor turns at 200rpm, will the torque be exactly the same as in BLDC mode (1.908nm)?

pf26
Posts: 310
Joined: 28 Mar 2016, 14:37
Location: FR Valence
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable

### Re: FOC vs BLDC Torque Question

If you assume the VESC efficiency is 100%, and the motor efficiency does not vary much between BLDC and FOC, then you get the same torque when running at a certain speed with a given power input from the battery.
But in your case, with high coil resistance and large input current, the motor Joule losses account for 50% of the input power. With FOC, since the same motor current is shared between the 3 windings at all time, I think you should have a bit less Joule losses (but possibly more commutation losses for the ESC).
This papers shows how FOC performs better than BLDC with some numbers (a bit surprinsigly high to me)

devin
Posts: 255
Joined: 08 May 2017, 01:55
Location: San Francisco, California, US
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable

### Re: FOC vs BLDC Torque Question

^in this paper there are 2 graphs showing power consumption and efficiency of a motor with FOC vs BLDC... in the graphs, foc is shown to have reduced power input and improved efficiency at all rpms... but what isn’t shown is a graph of the mechanical power output of the motor with FOC vs BLDC...

If the graph showing power input at each rpm is lower with FOC, and instantaneous efficiency shown as greater, does this mean the FOC motor’s mechanical power output at all rpms (if such a graph were shown) would be commensurately lower?

In other words, is the “improved efficiency” shown with FOC merely a result of the reduced power input from the battery at the same rotational speed, since copper losses increase proportionally to the square of current, while torque increases linearly with motor current?

If the “power consumption” from the battery in the graph at each rpm were kept the same between FOC and BLDC, would the “efficiency” graph in the paper then show FOC and BLDC as being equal?

pf26
Posts: 310
Joined: 28 Mar 2016, 14:37
Location: FR Valence
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable

### Re: FOC vs BLDC Torque Question

For a given RPM, the motor (mechanical power) output is determined by the load, namely the propeller, and they keep the same one during all the experiment.
You can check the powers seem to vary approx as a cube law of RPM, which makes sense.
Last edited by pf26 on 26 May 2018, 08:21, edited 1 time in total.

devin
Posts: 255
Joined: 08 May 2017, 01:55
Location: San Francisco, California, US
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable

### Re: FOC vs BLDC Torque Question

if i have a graph that shows 2 accelerating props (both bldc, one at constant 50% duty control & one at 60% duty control), and the 50% duty prop is accelerating more slowly than the 60% duty prop, wouldn’t the comparison graph show the 50% prop having improved efficiency and lower power consumption at each individual rpm point?

by extension if the foc has lower power consumption while accelerating than the bldc, wouldn’t the foc show lower power consumption and improved efficiency (but lower acceleration) at each rpm data point for the same reasons?

devin
Posts: 255
Joined: 08 May 2017, 01:55
Location: San Francisco, California, US
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable

### Re: FOC vs BLDC Torque Question

for example this chart shows bldc, 8v battery, 100kv, 0.1ohm, 100mm tire, 0.104:1 gearing & accelerating at 50% duty control vs 60% duty control.

according to these calculations, I notice while accelerating through 222.33rpm (labeled 25mph ground speed) when i decrease duty control to 50% duty control instead of 60% duty control w/ bldc/block commutation, electrical consumption decreases from 123.67w to 71.06w at the same rpm, efficiency increases from 46.32% to 55.58%, mechanical power decreases from 57.29w to 39.50w, torque decreases from 2.46nm to 1.69nm, thrust decreases from 5.12 newtons to 3.53 newtons, joule heating drops from 66.38w to 31.56w, motor current drops from 25.76a to 17.76a, battery current drops from 15.45a to 8.88a.

so is the method by which foc improves efficiency for similar reasons?— ie less electrical consumption at the same rpm generally improves efficiency while accelerating (but at the expense of torque, mechanical power, acceleration, thrust and top speed)?

devin
Posts: 255
Joined: 08 May 2017, 01:55
Location: San Francisco, California, US
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable

### Re: FOC vs BLDC Torque Question

I seek to calculate for a given BLDC/Block Commutation motor current limit value at full throttle, what peak motor current limit value in FOC mode (3 phase sinusoidal) at full throttle gives identical electrical power consumption, efficiency, torque, losses and mechanical power during acceleration.

———————

It can be shown that for BLDC motors in block commutation mode (BLDC) that instantaneous motor torque can be calculated directly from instantaneous copper loss in watts and the KM size constant via the following formula:

KM size constant * sqrt(instantaneous copper loss wattage) = torque in newton meters

for example:

0.30197 km * sqrt(40w copper loss) = 1.909nm

^40w copper loss with a 0.30197km size constant motor gives 1.909 newton meters motor torque in BLDC/block commutation mode

Therefore, what value of peak 3 phase sinusoidal motor current gives identical copper loss and therefore, theoretically, identical torque via the formula:

0.30197 km * sqrt(40w copper loss) = 1.909nm

—————-

From a given BLDC motor current and the lead to lead resistance I seek the Peak 3 Phase Sinusoidal Current Limit which gives equal losses and, in theory, equal torque, input power, output power & efficiency:

A = 20 = Bldc Motor Current Limit
C = 40 = Watts Copper Loss
D = XX.XXX = Peak Current 3 Phase Sinusoidal = FOC Equivalent Performance & Efficiency Motor Current Limit

C = A^2*B = ((D/sqrt(2))^2*((1/2)*(B)))*3 = (3*B*D^2)/4

C = A^2*B = (3*B*D^2)/4

A = (sqrt(3)*D)/2

D = (2*A)/sqrt(3)

D = A/(sqrt(3)/2)

D = A / 0.866025403784438646...

D = 20 / 0.866025403784438646...

D = 23.09

Therefore:

A = 20 = Bldc Motor Current

D = 23.09 = Peak Current 3 Phase Sinusoidal = FOC Equivalent Power & Efficiency Motor Current Limit

^So in theory, 23.09a peak current per phase in 3 phase sinusoidal FOC mode (ie full throttle with 23.09a motor current limit in FOC mode) gives identical power consumption, efficiency, torque, losses and mechanical power as 20a peak current in BLDC/Block Commutation mode (full throttle with 20.00a motor current limit in BLDC mode).

Simply in order for BLDC mode to have equivalent power and efficiency while accelerating as in FOC mode, the current limit in BLDC mode must be lower than the current limit in FOC mode by a factor of 0.86602...

Can anyone verify this?

Hummie
Posts: 110
Joined: 10 May 2016, 04:05
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable

### Re: FOC vs BLDC Torque Question

what about foc using all three phases, and not being as likely to saturate, and the shape of the waveform's effects on efficiency? I think it would depend.

devin
Posts: 255
Joined: 08 May 2017, 01:55
Location: San Francisco, California, US
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable

### Re: FOC vs BLDC Torque Question

I think I found the formula for calculating FOC torque from RMS motor current at the following site:

https://www.motioncontroltips.com/what- ... dc-motors/

T = 1.5 * Kt * M

where M is the RMS motor current per phase command and T is the torque in newton meters.

So I then wanted to calculate the RMS Current per phase and electrical wattage necessary to achieve a given electrical to mechanical conversion efficiency.

Settings:

M= 100 = Throttle % Setting
K= 90 = Desired Efficiency % Setting
L= 500 = Desired Minimum Electrical Watts Available Setting
P= 2000 = Desired Maximum Electrical Watts Available Setting
Y= 120 = Max Motor Current & Peak Current Per Phase

Observables:

F= 0.025 = Winding Resistance Ohms (Lead to Lead) = Resistance per Phase Ohms * 2
G= 48.2 = Battery Voltage
U= 1694 = Present RPM
V= 100 = KV

Control Loop Targets:

A= XX.XXXa = Battery Amps
S= XX.XXXa = RMS Current Per Phase
W= XX.XXXa = Peak Phase Current FOC
H= XX.XXXw = Throttled Electrical Wattage
N= XX.XXXw = Full Throttle Electrical Wattage

Control Loop:

N=L
^set full throttle electrical wattage to the minimum available electrical wattage setting
&

S=((-1.5*U)+V*sqrt((6*F*N)+((2.25*U^2)/(V^2))))/(3*V*F)
^set RMS Current Per Phase to the value which achieves the minimum available electrical wattage setting
&

if (100*U)/((V*F*S)+U)>K then S=((100*U)-(K*U))/(K*F*V)
^if a wattage equal to the minimum available electrical wattage setting results in greater efficiency than the desired efficiency setting, set the RMS Current Per Phase to a value which achieves the desired electrical to mechanical % conversion efficiency
&

N=((((U*2*pi)/60)*(S*(60/(2*pi*V))*1.5))+(S^2*((1/2)*F)*3))
^set desired full throttle electrical wattage to a value equivalent to the present RMS Current Per Phase value at the present RPM
&

if N>P then N=P
^if the desired full throttle electrical wattage exceeds the Desired Max Watts Available Setting, set the full throttle wattage to a value which does not exceed the Desired Max Watts Available Setting
&

S=((-1.5*U)+V*sqrt((6*F*N)+((2.25*U^2)/(V^2))))/(3*V*F)
^set RMS Current Per Phase to the value which achieves the present desired full throttle electrical wattage value
&

if S*sqrt(2)>Y then S=Y/sqrt(2)
^if the peak current per phase exceeds the Max Motor Current Setting, set the RMS current per phase to a value which does not exceed the peak motor current setting
&

N=((((U*2*pi)/60)*(S*(60/(2*pi*V))*1.5))+(S^2*((1/2)*F)*3))
^set desired full throttle electrical wattage to a value equivalent to the present Peak Current Per Phase value at the present RPM
&

S=(M/100)*S
^set throttled rms current value to a value equal to a percentage of the full throttle current value, based on the throttle position
&

H=((((U*2*pi)/60)*(S*(60/(2*pi*V))*1.5))+(S^2*((1/2)*F)*3))
^set throttled electrical wattage to a value equivalent to the RMS Current Per Phase value based on the throttle position
&

W=S*sqrt(2)
^set Peak Current Per Phase FOC to a value equal to RMS Current Per Phase times the square root of 2
&

A=((((U*2*pi)/60)*(S*(60/(2*pi*V))*1.5))+(S^2*((1/2)*F)*3))/G
^set battery amp target to a value equal to the throttled electrical wattage divided by the pack voltage
&

repeat

Therefore:

Control Loop Targets:

A= XX.XXXa = Battery Amps
S= XX.XXXa = RMS Current Per Phase
W= XX.XXXa = S*sqrt(2) = Peak Current Per Phase FOC
H= XX.XXXw = Throttled Electrical Wattage
N= XX.XXXw = Desired Full Throttle Electrical Wattage

I think it's correct.

devin
Posts: 255
Joined: 08 May 2017, 01:55
Location: San Francisco, California, US
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable

### Re: FOC vs BLDC Torque Question

[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable

### Who is online

Users browsing this forum: No registered users and 3 guests