Skip to content
Snippets Groups Projects
Commit 27e68ad4 authored by JuanPi Carbajal's avatar JuanPi Carbajal
Browse files

measured height value. improvmeent of moment of intertia estimation

parent 76738aa1
No related branches found
No related tags found
No related merge requests found
# Experiment steady state rotational speed
## Measured Veriables
Rotational speed of the turbine: $f$ [Hz]
Voltage in the power supply: $U$ [Volts]
Current in the power supply: $I$ [Amps]
Wind generator power index: $P$ [%]
Wind speed (manual anemometer): $v$ [m/s]
## Description
## Measured Veriables
In this experiment we use steady state measurements of: 1) voltage and current feed to the motor,
and 2) rotational frequency of the rotor, to compute the performance coefficient
via the estimation of torques exerted on the rotor of the turbine:
* Torque exerted by the motor, $ \tau_M $.
* Torque due to electromechanical friction (motor is not fed power), $ \tau_F $.
These two torques and the steady state condition can be used to infer the torque exerted by the wind on the rotor.
The calculation assumes that a rigid body rotation model is valid for the rotor
and the following dependencies:
* $\tau_M := \tau_M(U, I)$
Rotational speed of the turbine: f [Hz]
Voltage in the power supply: U [Volts]
Current in the power supply: I [Amps]
Wind generator power index: P [%]
Wind speed (manual anemometer): v [m/s]
* $\tau_F := \tau_M(f)$
## Experiments
......
......@@ -37,8 +37,8 @@ vp = [12.5, 15];
for i=1:2
load (fname_raw(vp(i)),'Temp', 'Hum', 'Pres','v','v_std');
load (fname_vp(vp(i)));
A = 2 * radiusR * 0.7;
A_std_rel = 0.01 + 0.01;
A = 2 * radiusR * HR;
A_std_rel = dr/radiusR + dH / HR;
v_w{i} = v;
v_w_std_rel = v_std ./ v_w{i};
......
......@@ -20,7 +20,7 @@ fname_data = "freq_friction.dat";
load (fname_data);
fname = 'tauF.dat';
vars = {'tauF', 'J', 'J_du', 'pwdot', 'pt'};
vars = {'tauF', 'J', 'dJ', 'pwdot', 'pTau_J'};
##
# synchronize
......@@ -39,8 +39,10 @@ w = w(o);
w = w;
pw = splinefit (t, w, 6, 'robust', true);
pwdot = ppder (pw);
pt = splinefit (w, t, 6, 'robust', true);
tauF_J = @(w) ppval (pwdot, ppval(pt, w));
%pt = splinefit (w, t, 6, 'robust', true);
%tauF_J = @(w) ppval (pwdot, ppval(pt, w));
pTau_J = splinefit (w, ppval (pwdot, t), 6, 'robust', true);
tauF_J = @(w) ppval (pTau_J, w);
##
# properties of gearbox installed in motor
......@@ -73,26 +75,50 @@ omegaR = WR; omegaR_std = WRlu;
# moment of inertia
J_du(1) = -tauF_J(omegaR(:,1)) \ tauR(:,1);
J_du(2) = -tauF_J(omegaR(:,2)) \ tauR(:,2);
J = mean (J_du);
%J_loc = - tauR ./ tauF_J(omegaR);
% J = mean (J_loc(:));
tauF = @(w) J * ppval (pwdot, ppval(pt, w));
[pJ sJ] = polyfit (- tauF_J(omegaR(:)), tauR(:), 1);
J = pJ(1);
dJ = sqrt (diag (sJ.C) / sJ.df)(1) * sJ.normr;
%tauF = @(w) J * ppval (pwdot, ppval(pt, w));
tauF = @(w) J * ppval (pTau_J, w);
## Plots
wf = linspace (0, max(w)*1.1, 100);
figure (1);
plot (t, w, '.r', t, ppval(pw, t), 'k-', ppval(pt, wf), wf, 'g-');
plot (t, w, 'or', t, ppval(pw, t), 'k-'); %, ppval(pt, wf), wf, 'g-');
axis tight
xlabel ('Time [s]')
ylabel ('\omega [rad/s]')
figure(2)
tF_J = -tauF_J (omegaR(:));
tf_J = [min(tF_J); max(tF_J)];
Jf = polyval (pJ, tf_J);
plot (-tauF_J(omegaR), tauR, 'o', tf_J, Jf, 'r-');
axis tight
ylabel ('\tau_F/J [rad/s²]')
xlabel ('\tau_R [Nm]')
figure(3)
plot (wf, tauF(wf), 'k-', omegaR, -tauR, 'o');
axis tight
ylabel ('\tau_F [Nm]')
xlabel ('\omega [rad/s]')
#figure(4)
#plot (omegaR, J_loc, 'o');
#line([min(omegaR(:)) max(omegaR(:))], J,'color','b')
#line([min(omegaR(:)) max(omegaR(:))], mean(J_loc(:,1)),'color','r')
#line([min(omegaR(:)) max(omegaR(:))], mean(J_loc(:,2)),'color','r')
axis tight
ylabel ('J [kg m²]')
xlabel ('\omega [rad/s]')
save (fname, vars{:});
fprintf ("Saved to %s\n", fname);
......@@ -22,7 +22,7 @@
fname_raw = @(w) sprintf ("rawdata_vp%s.dat", strrep (num2str (w), '.', '_'));
fname = @(w) sprintf ("vp%s.dat", strrep (num2str (w), '.', '_'));
vars = {'gearGP52', 'radiusR', ...
vars = {'gearGP52', 'radiusR', 'HR', 'dr', 'dH', ...
'tauM', 'tauR', 'tauM_std', 'tauR_std', ...
'omegaM', 'omegaR', 'omegaM_std', 'omegaR_std', ...
'omegaR_data', 'omegaR_data_std', ...
......@@ -36,8 +36,11 @@ load (fname_raw(vp))
if ~exist ('vtR', 'var')
# properties of gearbox installed in motor
gearGP52 = struct ('ratio', 4.3, 'efficiency', 0.91);
# Properties of the rotor
radiusR = 0.35; # in meters
dr = 0.01;
HR = 0.50;
dH = 0.01;
# Error of the mean from interval
# Measurements are consider 0.99 confidence intervals
coeff = 1 ./ erfinv (0.99);
......@@ -54,7 +57,7 @@ if ~exist ('vtR', 'var')
omegaR = WR; omegaR_std = lu2std (WRlu);
##
# Segmentation of measured data, see |s_segment_omega.m|
# Segmentation of measured data, see |s_segment_freq.m|
fn = sprintf ("freq_vp%s.dat", strrep (num2str (vp), '.', '_'));
load (fn,'freqR_data', 'freqR_data_std');
omegaR_data = 2 * pi * freqR_data;
......@@ -124,6 +127,7 @@ ylabel ('Freq. encoder (measured) [Hz]')
legend (h, txt_label(v), ...
'Location', 'NorthOutside','Orientation', 'horizontal');
print ('-dpng', sprintf('freqR_vs_freqRmodel_%d.png',v))
##
# Torque of the motor applied to the turbine rotor vs. tangential speed of
# turbine rotor
......@@ -159,6 +163,10 @@ ylabel ('\tau_M [Nm]')
legend (h, txt_label(v), ...
'Location', 'NorthOutside','Orientation', 'horizontal');
print ('-dpng', sprintf('tauR_vs_tsr_%d.png',v))
## Save data
#
fn = fname (vp);
save (fn, vars{:});
printf ("Saved to %s\n", fn); fflush (stdout);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment