Power Buoy Generator Efficiency

P. McGill, v1.5.0

We want to plot generator output efficiency as a function of input speed n (in rpm) and torque m (in N-m), given

	 Ke - speed constant in V/rpm
	 Kt - torque constant in N-m/A
	 Rg - winding resistance in Ω
	 Lg - winding inductance in H
	 Mf - friction torque in N-m

The generator windings must be modeled as a complex impedance because although only the resistance will dissipate power, the inductance will act as a choke in series with the output and will also limit current.

Note that for an eight-pole motor, the electrical frequency is four times the rotational rate. We must also convert the speed n in rpm into radians per second.

Clear[n,m,Rg,Lg,Zg,Ig,Rl]

Zg=Rg+I 4 n((2 π)/60) Lg;

The generator current Vg and voltage Ig can be found from the generator constants.

Vg=Ke n;

Ig=((m-Mf)/Kt);

The load impedance (modeled here as purely resistive) is the total circuit impedance minus that of the generator.

Rl=(Vg/Ig)-Zg;

We can calculate the generator efficiency as the electrical power delivered to the load divided by the mechanical power input. The numerator is the current squared times the load resistance, and the denominator is torque times speed.

Clear[n,m,Rg,Lg,Zg,Ig,Rl]

η[n_,m_,Ke_,Kt_,Rg_,Lg_,Mf_]:=((100 (((((m-Mf)/Kt)))^2)(((Ke n Kt)/(m-Mf))-Abs[Rg+I 4 n ((2 π)/60) Lg]))/(n ((2 π)/60) m))

Let’s define the constants for a Magmotor model BFA42-600 motor with a “5K” winding.

First convert the torque constant, friction torque, and stall torque from oz-in to N-m.

Kt5k=118.5*7.0615 (10^(-3))

Mf5k=60*7.0615 (10^(-3))

Ms5k=1600*7.0615 (10^(-3))

Next convert the voltage constant from V/krpm to V/rpm.

Ke5k=87.6/1000

And lastly define the winding resistance and inductance.

Rg5k=0.88

Lg5k=3.6 (10^(-3))

Now we can produce a 3D plot of efficiency for a Magmotor model BFA42-600 motor with a “5K” winding over its range of allowed speed and torque.

effpl5k=Plot3D[η[n,m,Ke5k,Kt5k,Rg5k,Lg5k,Mf5k],{n,100,6000},{m,Mf5k,15},{
PlotLabel->"Efficiency vs. Speed and Torque",
AxesLabel->{"Speed (rpm)","Torque (N-m)","η (%)"}}]

We’d like to know what torque produces maximum efficiency at each speed. We can define a function that finds the peak efficiencies, and then formats the results into triplets of speed, torque, and efficiency.

findPeaks3D[Ke_,Kt_,Rg_,Lg_,Mf_]:=Module[{m,p1,p2,p3,p4,p5},
p1=Map[Maximize[{η[#,m,Ke,Kt,Rg,Lg,Mf],Mf5k+1<m<15},m]&,Range[100,6100,100]];
p2=Transpose[p1];
p3=Riffle[Range[100,6100,100],m/.Transpose[p1][[2]]];
p4=Riffle[p3,p2[[1]],3];
Return[Partition[p4,3]];
]

peaks5k=findPeaks3D[Ke5k,Kt5k,Rg5k,Lg5k,Mf5k]

peakpl5k=ListPointPlot3D[peaks5k,{PlotStyle->Red}]

peakpl5k2=Graphics3D[{Red,Thick,Line[peaks5k]}];

Show[effpl5k,peakpl5k2]

This is good for getting the big picture, but not for reading precise values. We can generate a 2D plot of the peak efficiency curve overlaid on a contour plot.

findPeaks2D[Ke_,Kt_,Rg_,Lg_,Mf_]:=Module[{m,p1,p2,p3},
p1=Map[Maximize[{η[#,m,Ke,Kt,Rg,Lg,Mf],Mf5k+1<m<15},m]&,Range[100,6100,100]];
p2=Transpose[p1];
p3=Riffle[Range[100,6100,100],m/.Transpose[p1][[2]]];
Return[Partition[p3,2]];
]

peaks2d5k=findPeaks2D[Ke5k,Kt5k,Rg5k,Lg5k,Mf5k];

peakpl5k3=ListPlot[peaks2d5k,
{Frame->True,
Joined->True,
GridLines->Automatic,
PlotRange->All,
PlotStyle->Red,
PlotLabel->"Speed vs. Torque at Peak Efficiency",
FrameLabel->{"Speed (rpm)","Torque (N-m)"}}]

We can produce a contour plot showing the efficiencies at these peaks.

conpl5k=ContourPlot[η[n,m,Ke5k,Kt5k,Rg5k,Lg5k,Mf5k],{n,0,6000},{m,0,15},
{Frame->True,
Contours->{50,60,70,75,80,82},
ContourLabels->All,
PlotLabel->"Speed vs. Torque at Peak Efficiency",
FrameLabel->{"Speed (rpm)","Torque (N-m)"}}]

Show[conpl5k,peakpl5k3]

The winding inductance appears to be limiting current (and thus torque) at higher speeds, forcing us to increase the load resistance at the expense of efficiency. Let’s run the same analysis for a different generator winding. The “5E” is a delta winding with much lower resistance and inductance.

Kt5e=29.6*7.0615 (10^(-3))

Mf5e=60*7.0615 (10^(-3))

Next convert the voltage constant from V/krpm to V/rpm.

Ke5e=21.9/1000

And lastly define the winding resistance and inductance.

Rg5e=0.15

Lg5e=0.23 (10^(-3))

Now we can produce a 3D plot of efficiency for a Magmotor model BFA42-600 motor with a “5E” winding over its range of allowed speed and torque.

effpl5e=Plot3D[η[n,m,Ke5e,Kt5e,Rg5e,Lg5e,Mf5e],{n,0,6000},{m,0,15},{
PlotLabel->"Efficiency vs. Speed and Torque",
AxesLabel->{"Speed (rpm)","Torque (N-m)","η (%)"}}];

peaks5e=findPeaks3D[Ke5e,Kt5e,Rg5e,Lg5e,Mf5e];

peakpl5e=ListPointPlot3D[peaks5e,{PlotStyle->Orange}];

peakpl5e2=Graphics3D[{Orange,Thick,Line[peaks5e]}];

Show[effpl5e,peakpl5e2]

peaks2d5e=findPeaks2D[Ke5e,Kt5e,Rg5e,Lg5e,Mf5e];

peakpl5e3=ListPlot[peaks2d5e,
{Frame->True,
Joined->True,
GridLines->Automatic,
PlotRange->All,
PlotStyle->Orange,
PlotLabel->"Speed vs. Torque at Peak Efficiency",
FrameLabel->{"Speed (rpm)","Torque (N-m)"}}]

We can produce a contour plot showing the efficiencies at these peaks.

conpl5e=ContourPlot[η[n,m,Ke5k,Kt5k,Rg5k,Lg5k,Mf5k],{n,0,6000},{m,0,15},
{Frame->True,
Contours->{50,60,70,75,80,82},
ContourLabels->All,
PlotLabel->"Speed vs. Torque at Peak Efficiency",
FrameLabel->{"Speed (rpm)","Torque (N-m)"}}];

Show[conpl5e,peakpl5e3]

We can plot both efficiency curves to compare them.

Show[peakpl5k3,peakpl5e3]

This shows how to achieve peak efficiency for the two different windings, but it doesn’t show what the values of those peaks are.

peaks2d5k2=Map[Drop[#,{2}]&,peaks5k];

peaks2d5e2=Map[Drop[#,{2}]&,peaks5e];

peakpl2dboth=ListPlot[{peaks2d5k2,peaks2d5e2},
{Frame->True,
Joined->True,
GridLines->Automatic,
PlotRange->All,
PlotStyle->{Red,Orange},
PlotLabel->"Speed vs. Efficiency at Peak Efficiency",
FrameLabel->{"Speed (rpm)","Efficiency (%)"}}]

It would be good to know what load resistance is required to achieve the desired speeds and torques at maximum efficiency.

Clear[Rl]

Rl[n_,m_,Ke_,Kt_,Rg_,Lg_,Mf_]:=((Ke n Kt)/(m-Mf))-Abs[Rg+I 4 n ((2 π)/60) Lg]

loadres5k=Map[Rl[#[[1]],#[[2]],Ke5k,Kt5k,Rg5k,Lg5k,Mf5k] &,peaks2d5k];

loadres5k2=Partition[Riffle[Range[100,6000,100],loadres5k],2];

loadrespl5k=ListPlot[loadres5k2,
{Joined->True,
Frame->True,
GridLines->Automatic,
PlotStyle->Red,
PlotLabel->"Load Resistance at Maximum Efficiency vs. Speed"},
FrameLabel->{"Speed (rpm)","Load Resistance (Ω)"}];

loadres5e=Map[Rl[#[[1]],#[[2]],Ke5e,Kt5e,Rg5e,Lg5e,Mf5e] &,peaks2d5e];

loadres5e2=Partition[Riffle[Range[100,6000,100],loadres5e],2];

loadrespl5e=ListPlot[loadres5e2,
{Joined->True,
Frame->True,
GridLines->Automatic,
PlotStyle->Orange,
PlotLabel->"Load Resistance at Maximum Efficiency vs. Speed"},
FrameLabel->{"Speed (rpm)","Load Resistance (Ω)"}];

Show[loadrespl5k,loadrespl5e]

We must check to ensure that the voltages generated don’t exceed the ratings for the generator.

Vl[n_,m_,Ke_,Kt_,Rg_,Lg_,Mf_]:=(n Ke)-(((m-Mf) )/Kt)Abs[Rg+I 4 n ((2 π)/60) Lg]

loadvolts5k=Map[Vl[#[[1]],#[[2]],Ke5k,Kt5k,Rg5k,Lg5k,Mf5k] &,peaks2d5k];

loadvolts5k2=Partition[Riffle[Range[100,6000,100],loadvolts5k],2];

loadvolts5e=Map[Vl[#[[1]],#[[2]],Ke5e,Kt5e,Rg5e,Lg5e,Mf5e] &,peaks2d5e];

loadvolts5e2=Partition[Riffle[Range[100,6000,100],loadvolts5e],2];

Show[ListPlot[{loadvolts5k2,loadvolts5e2},
{Joined->True,
Frame->True,
GridLines->Automatic,
PlotStyle->{Red,Orange},
PlotLabel->"Load Voltage vs. Speed at Maximum Efficiency"},
FrameLabel->{"Speed (rpm)","Load Voltage (V)"}],Graphics[{Red,Dashed,Line[{{0,300},{6000,300}}]}]]

Questions:
• Is the complex math correct?
• Why does the 5E motor, with lower winding impedance, want to operate at lower torques than the 5K? How do we choose the optimal winding for the generator?

Notes:

η[n_,m_,Ke_,Kt_,Rg_,Lg_,Mf_]:=((100 (((((m-Mf)/Kt)))^2)Abs[((Ke n Kt)/(m-Mf))-(Rg+I 4 n ((2 π)/60) Lg)])/(n ((2 π)/60) m))

η[n_,m_,Ke_,Kt_,Rg_,Lg_,Mf_]:=((100 (((((m-Mf)/Kt)))^2)Sqrt[(((((Ke n Kt)/(m-Mf))-Rg))^2)+((( 4 n ((2 π)/60) Lg))^2)])/(n ((2 π)/60) m))