designing Piggott style wind turbines – an octave (matlab) design code

תכנון טורבינות רוח קטנות תלוי קודם כל בתמונה הגדולה – מה אתם רוצים להפעיל, וכמה רוח יש באתר שלכם. השלב השני הוא תכנון טורבינת הרוח עצמה. הדף הזה יעסוק בתכנון הטורבינה והגנרטור, על פי שיטות אלמנט-להב (BE) ומשוואות פשוטות עבור המעגל החשמלי, עם הרבה אינפוטים של המתכנן עצמו – Hugh Piggott מתוך ספריו ותוכניותיו השונות.

לגבי התמונה הגדולה – הנה מצגת חלקית שהעברתי לפקידים ממדינות אפריקאיות בנוגע לתכנון מערכת לייצור חשמל מהרוח לכפר מנותק:

טורבינת הרוח מורכבת ממספר חלקים:

  1. טורבינה – כלומר הלהבים. יוצרים סיבוב ומומנט סביב ציר מרכזי כתוצאה מתנועת הרוח.
  2. גנרטור – הופך את סיבוב הציר לחשמל.
  3. מגדל – תפקידו לשים את הטורבינה הרחק מהקרקע, היכן שהרוחות חזקות ויציבות יותר.
  4. זנב – תפקידו לכוון את הטורבינה אל תוך הרוח ולשמש כאמצעי הגנה אווירודינמי ברוחות גבוהות, על ידי “הוצאת” הלהבים מהרוח, פעולה המכונה באנגלית furling (תרגום לעברית?)

סוג זה של טורבינות רוח מכונה HAWT – Horizontal Axis Wind Turbines והוא הסוג הפופולארי ביותר והמנוסה ביותר הקיים כיום. אין זה אומר שטורבינות אנכיות המבוססות על עילוי לא יוכלו לעבוד גם כן – אני פשוט לא מכיר תכנונים כל כך מוצלחים שלהם. ורבים ניסו.

הבחירה הראשונה בתכנון טורבינת רוח היא קוטר הלהבים. ניתן להעריך ע”י קוטר הלהבים ומהירות הרוח הממוצעת השנתית את התפוקה האופיינית לטורבינות רוח קטנות. הערכת אצבע של Hugh Piggott היא (ראו מצגת למעלה):

תפוקת האנרגיה בקוט”ש לחודש = קוטר הלהבים [מטר] בריבוע כפול מהירות רוח ממוצעת [מטר לשניה] בשלישית, חלקי 10. כלומר עבור הדוגמא המובאת למטה – 4.2 מטר בריבוע כפול 4 מטר בשלישית חלקי 10, נותן כ-120 קוט”ש בחודש, שהם כ-4 קוט”ש ביום. החשבון המדויק יותר למטה נותן תוצאה כמעט כפולה – שמתאימה למדידות אמיתיות בשטח. אבל – תמיד כדאי להיות שמרניים! זה משתלם 🙂

לאחר שבחרנו בקוטר הלהבים עלינו לבחור את הגאומטריה של כל להב, ואת מספר הלהבים. בחירה אופיינית של מספר להבים היא 3. הסיבה לכך: פחות להבים משמעותם פחות עבודה וכסף. הסיבה לא ללכת עם להב אחד היא שצריך לאזן אותו וזה מסובך כמו לבנות להב נוסף. הסיבה לא ללכת עם 2 להבים היא שנוצרים מאמצים ורעידות כשכיוון הרוח משתנה בזמן שהטורבינה מסתובבת – נסו להסתובב על כסא מנהלים עם ידיים פשוטות ואז לשלב אותם ותבינו למה אני מתכוון. השינוי במומנט האינרציה (ההתנגדות של הגוף לסיבוב) יוצרת מאמצים. 3 להבים זה המספר הכי נמוך של להבים שיש לו סימטריה סיבובית ולכן תופעה זו לא קוראת. וכבונוס – זה גם קונפיגורציה יפה יותר מ-2 להבים.

בחירת הגיאומטריה – פה אנחנו נכנסים לתכנון אווירודינמי. אני כתבתי קוד על בסיס שפת octave, שיושב פתוח לכל ב-git-hub תחת הדף הזה. את octave אפשר להתקין על כל מערכת הפעלה (חלונות, לינוקס או מק) והוא דומה כמעט לגמרי ל-matlab.

מטרת הקוד היא תכן של להבים, אופטימיזציה של התכן, והתאמה שלו אל הגנראטור. למעשה – ההתאמה היא החלק שהכי מעניין אותי, שכן פה אפשר בשינויים קטנים לקבל תמורות גדולות. בנוסף – תכננתי עם הקוד את התכנות של ממיר לחיבור ישיר לרשת (grid tie inverter) שבינתיים נדמה נותן ביצועים טובים יותר מהתכנון הפשטני בעזרת טבלת אקסל פשטנית יותר. הנה מצגת שהכנתי ב-2011 אם אני לא טועה, עבור המפגש הראשון של קבוצת wind power empowerment :

 

הדף הזה בבנייה – הערות יתקבלו בשמחה בכל שלב. הגרפים למשל מכילים overlapping של הכותרות והטקסטים השונים – בעייה של octave שעם קצת התעסקות תפתר.

קלט לתכנון הלהבים:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
inp.normalRun = 1;
inp.file_input_directory = ‘/home/hanan/Documents/src/piggott-turbine-design/octave/Input/’;
inp.file_Output_directory = ‘/home/hanan/src/piggott-turbine-design/octave/Output/’;
inp.file_blade_directory = [inp.file_input_directory ‘Geometry/’];
inp.file_blade = ‘CometME4.2_Nb3_NACA44XX.txt’;
inp.R = 2.1; % [m]% blade analyze physical parameters
inp.beta0 = 0;  % blade positioning angle (added to beta distribution)
inp.Cd0 = 0;    % constant drag of blade section – added to Cd(alpha). keep 0 normally.% Blade analyze model
inp.useOhad = 1; % 1 for Ohad Gur 2009 BEM model, 0 for Hansen 2000 BEM model% Blade analyze numerical parameters
inp.Nr = 10;        % number of blade elements
inp.param = 0;      % for the optimization rutine
inp.iter = 1;       % initial iteration number
inp.maxiter = 20;   % maximum iterations
inp.relax = 0.5;    % relaxation parameter
inp.epsilon = 0.01; % convergence criterion

% Blade analyze range
inp.TSRstart = 1;
inp.TSRend = 14;
inp.TSRstep = 1;
inp.Vfstart = 2;
inp.Vfstep = 1;
inp.Vfend = 12;

% Blade analyze output parameters and file names
inp.filename = ‘temp’;
inp.doplots = 0;
inp.doplotsCp = 1;
inp.CpCt_fileDirectory = ‘Output/’;
inp.CpCt_filename = [‘CpCt_’ strrep(inp.file_blade,’.txt’,”)]; % graphic file
inp.Ct_filename =  [‘Ct_’ strrep(inp.file_blade,’txt’,’csv’)];
inp.Cp_filename = [‘Cp_’ strrep(inp.file_blade,’txt’,’csv’)];

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

פלט מתכנון הלהבים:

Cp-Ct curve - output from https://github.com/hananel/piggottDesignCode

קלט נוסף עבור תכנון הגנראטור:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Power Curve analyze Input% diode option – for a diode load (no battery)
inp.diode = 0;
inp.diode_p = 4;
inp.diode_s = 2;
inp.I0 = 0.2147 * inp.diode_p;
inp.t0 = 0.8451 / inp.diode_s;
inp.v0 = 2.4470 * inp.diode_s;% Test data
inp.compare2TestData = 1;
inp.TestData_fileDirectory = [inp.file_input_directory ‘TestData/’];
inp.TestData_file = ‘CometME4.2_P.txt’; %’CometME3_data.txt’;% ‘WA2_Sep2010.csv’; %inp.plotoff = 0;
inp.chord75 = 0.08;             %[m]

% generator data
inp.coil.series = 5;            % number of coils at series
inp.coil.N = 15;                 % number of coils
inp.coil.FF = 0.86;             % actual filling of coil rectangle with wire. Hugh Piggot’s number
inp.coil.turns = 70;
inp.coil.thickness = 12;
inp.magnet.N = 20; %12          % number of magnets
inp.magnet.width = 30;          % [mm]
inp.magnet.length = 46;         % [mm]
inp.magnet.B = 0.72;            % [Tesla] – Hugh uses 0.62 for two disk configuration.
inp.Rstator = 0.202;            % [m] Radius to middle of magnets/coils Noam 3meter – 0.152
inp.coil.factor = 1.3; %impedence factor – empirical correction according to Hugh Piggott’s book

% mesured data for the PMG
inp.measuredPMG = 0;    % if 1 – use measured data, if 0 – calculate from above parameters
inp.Kg = 0.4;   % [Volt / RPM]
inp.Rg = 0.68;  % [Ohm]
inp.RPMcor = 1; % a empirical correction for reduced Kg with RPM – multiplying RPM by linspace(1,RPMcor,N) where N=length(RPM)
% motor conventions
% Ke = inp.Kg back EMF constant (normally in mV/RPM)
% Km = torque constant in mNm/A
% Km = Ke*30/pi
%
% wiring and battery data
inp.Vb = 48; %24         % [Volt]
inp.loadVlaw = 0; % law of voltage change with current – using proxy for velocity instead,
% based on simple piece wise linear interpolation from CometME4.2 data
% load controlVoltage
inp.WindyBoy = 0;
inp.useVoltageControl = 0; % 0 = don’t use, 1 = usee optimal power control, 2 use optimal TSR control
inp.Rw = 0.01;%0.01;             %  [Ohm]
inp.r = 0.1;%0.05;             % [Ohm] battery internal resistence

%looping through relevant wind speeds
inp.VvecStep = 1;                                        %[m/s]

%Color for plots
inp.color = ‘b’;

% plot options
inp.plotGen = 1;
if inp.measuredPMG
inp.plotGen = 0;
end
save InpFile inp
disp(‘input taken from inp_CometME42’)

פלט מתכנון הגנראטור:

Piggott design code - generator plan
Piggott design code - generator curve

פלט מהתאמת הטורבינה לגנראטור:

Piggott design code - complete power curve, with match to data

והתוצאה המעניינת – מאתר עם התפלגות ריילי ומהירות רוח ממוצעת של כ-4 מטר לשניה בגובה ציר הסיבוב של הטורבינה ניתן לצפות לתפוקה הבאה (שליש מצריכת חשמל אופיינית בישראל אגב).
Piggott design code - estimated energy production

Leave a Reply

Your email address will not be published.