5. Stator Winding Resistance Analyzer
This analyzer calculates stator winding resistance and coil length, considering effects of end windings.
5.1. Model Background
This analyzer implements the coil length and resistance calculation approach provided in the following reference:
Bianchi, S. Bolognani, and P. Frare, “Design Criteria for High-Efficiency SPM Synchronous Motors,” in IEEE Transactions on Energy Conversion, June 2006.
The calculation approach is summarized below. The following equation is used to calculate stator winding resistance:
where \(z_Q\) is the number of turns per coil, \(z_C\) is the number of series coils per phase, \(l_\text{coil}\) is the average length of a single coil loop, \(\sigma_\text{cond}\) is the conductor conductivity, and \(A_\text{cond}\) is the cross-section area.
Conductor area is found as:
where \(A_\text{slot}\) is the stator slot area, \(K_\text{Cu}\) is the slot fill factor, and \(n_\text{layers}\) is the number of layers (\(n_\text{layers}=1\) for a single-layer winding and \(n_\text{layers} = 2\) for a double-layer winding).
To calculate \(l_\text{coil}\), the following coil shape is assumed:
This is the view when one side of the stator is cut along the axial direction and unrolled. Using this diagram, \(l_\text{coil}\) is calculated as
where \(l_\text{st}\) is the length of a coil along the axial length of a motor and \(l_\text{end wdg} = l_1 + 2l_2\) is the end winding length.
The segments with length \(l_1\) represent the parts of the end winding that appear only in distributed windings, which are calculated as
where \(y\) is a coil pitch represented in a number of slots and \(K_\text{ov}\) is a coil overlength factor. For a concentrated winding, \(y = 1\), resulting in \(l_1 = 0\).
The segments with length \(l_2\) represent the bent parts of a coil and are calculated as 1/4th of the circle circumference. The diameter of this circle is estimated as the average of the stator tooth width \(w_\text{st}\) and the length between adjacent slots \(\tau_u\).
Here, \(\tau_u\) is calculated as the length of an arc (when a stator is in its normal cylindrical shape) at the median depth of a slot:
where \(Q\) is the number of stator slots, \(r_\text{si}\) is the stator inner radius, \(d_\text{sp}\) is the stator pole thickness, and \(d_\text{st}\) is the stator tooth depth (see here or the figure below).
5.2. Input from User
The user is required to provide the following parameters:
Arguments |
Description |
Units |
|---|---|---|
r_si |
Stator inner radius |
m |
d_sp |
Stator pole thickness |
m |
d_st |
Stator tooth depth |
m |
w_st |
Stator tooth width |
m |
l_st |
Stack length |
m |
Q |
Number of slots |
|
y |
Slot pitch (in number of slots) |
|
z_Q |
Number of turns per coil |
|
z_C |
Number of series coils per phase |
|
Kcu |
Slot fill factor |
|
Kov |
Winding overlength factor |
|
sigma_cond |
Conductor conductivity |
S/m |
slot_area |
Stator slot area |
m^2 |
n_layers |
Number of layers (single or double) |
For the definition of dimensions, please refer to the figure below:
5.3. Output to User
The stator winding resistance analyzer returns a dictionary that has the following parameters:
Arguments |
Description |
Units |
|---|---|---|
l_coil |
Length of a single loop of a coil |
meters |
l_ew |
Length of an end winding |
meters |
R_coil |
Resistance of a coil |
Ohms |
R_ew |
Resistance of an end winding |
Ohms |
R_wdg |
Resistance of a phase winding |
Ohms |
Here, the total phase winding resistance R_wdg is the product of R_coil and the number of coils per phase z_C.
Example code using the stator winding resistance analyzer is provided below:
import numpy as np
from eMach.mach_eval.analyzers.electromagnetic.stator_wdg_res import (
StatorWindingResistanceProblem,
StatorWindingResistanceAnalyzer
)
# define problem and analyzer
res_prob = StatorWindingResistanceProblem(
r_si=34.45/1000,
d_sp=3.95/1000,
d_st=20.75/1000,
w_st=5.38/1000,
l_st=50/1000,
Q=24,
y=9,
z_Q=16,
z_C=4,
Kcu=0.5,
Kov=1.8,
sigma_cond=5.7773*1e7,
slot_area=251*1e-6,
n_layers=2,
)
res_analyzer = StatorWindingResistanceAnalyzer()
# analyze the problem
results = res_analyzer.analyze(res_prob)
The output of the code is the dictionary with the following key-value pairs:
Arguments |
Value |
Units |
|---|---|---|
l_coil |
0.496 |
meters |
l_ew |
0.198 |
meters |
R_coil |
0.035 |
Ohms |
R_ew |
0.014 |
Ohms |
R_wdg |
0.14 |
Ohms |