Posts Tagged ‘oferte loc de munca’

ing Glont Ionut: Dispozitiv de orientare a turbinelor eoliene de mari dimensiuni (4/4)

01/08/2009

poza

Recent am avut ocazia sa citesc lucarea de diploma a dlui inginer Glont Aurelian Ionut abolvent 2009 al facultatii de Inginerie “Hermann Oberth” din Sibiu specializarea Calculatoare si Tehnica Informatiei. Am fost placut impresionat de calitatea lucarii. Consider ca si Dv veti aprecia la fel de bine acesta lucare. Am convingerea ca Dl inginer Glont Aurelian Ionut are un potential tehnic foarte bun si va face o cariera stralucita in automatizari industriale

Pentru cei interesati de o colaborare cu Dl inginer Glont Aurelian Ionut atasez  CV-Glont-Aurelian-Ionut si o Scrisoare de intentie Glont Aurelian Ionut 28.07.2009.

Simularea funcţionării dispozitivului

Simularea funcţionarii dispozitivului se face cu Active – HDL Sim din pachetul

Warp5.1. Se parcurg următoarele etape:

  1. Start Programs => Warp5.1 => Active – HDL Sim Se activează programul

Active – HDL Sim

  1. File => New Waveform – Se deschide un nou Waveform (unde este vizualizată

simularea)

  1. File => Open VHDL => …/vhd/turbina.vhd – Se deschide fişierul ce conţine

codul sursă al programului şi care va fi simulate.

  1. Simulation => Initialize – Se iniţializează simularea
  2. Waveform => Add Signals => Name => t => Add

Waveform => Add Signals => Name => g => Add

Waveform => Add Signals => Name => p => Add

Waveform => Add Signals => Name => clk => Add

Waveform => Add Signals => Name => init => Add

Waveform => Add Signals => Name => start => Add

Waveform => Add Signals => Name => k1 => Add

Waveform => Add Signals => Name => k2 => Add

Waveform => Add Signals => Name => m0 => Add

Waveform => Add Signals => Name => m1 => Add

Se definesc semnalele de intrare: t,g, p, clk, init, start, k1, k2 şi semnalele de ieşire: m0 şi m1.

  1. Se configurează semnalele de intrare ca stimuli (generatoare de semnal) în

vederea simulării astfel:

–         selectăm semnalul t. Executăm click–dreapta pe el şi selectăm opţiunea Stimulators. Stimulators type => Value şi în casuţa care va apărea se introduce de la tastatura un numar pe 9 biti ce va fi valoarea lui t. Valoarea în zecimal a numărului introdus nu trebuie să depaşească 360.

–         analog pentru semnalul g

–         selectăm semnalul p. Executăm click–dreapta pe el şi selectăm opţiunea Stimulators. Stimulators type => Clock după care introducem frecvenţa dorită în casuţa Frequency. Important pentru buna funcţionare a programului ca frecvenţa lui p să fie întotdeauna mai mică decât frecvenţa de clock clk a automatului.

–         analog pentru semnalul clk

–         selectăm semnalul init. Executăm click–dreapta pe el şi selectăm opţiunea Stimulators. Stimulators type => Formula => enter formula.  Rubrica enter formula se completează astfel: <value> <time>, <value> <time>,…,<value> <time>. “Value” reprezintă valoarea logică şi poate fi 0 sau 1. “Time” reprezintă momentul de timp în care stimulul îşi schimbă valoarea (unitatea de măsură este picosecunda).

–         analog pentru semnalul start

–         selectăm semnalul k1. Executăm aceleaşi operaţii ca în cazul semnalelor t şi g iar în câmpul unde trebuie introdusă valoarea se tastează un număr pe 9 biţi care în zecimal reprezintă valoarea 180.

–         analog pentru k2 numai că valoarea introdusă în binar va fi 360.

  1. Simulation => Run until => valoarea dorită (în ns).

Se simulează funcţionarea programului stabilind durata de simulare la o valoare       care să permită desfaşurarea tuturor transformărilor din circuit ale semnalelor.

8.  Se analizează semnalele de ieşire m0 şi m1 verificând funcţionarea corectă a programului. La analiza cronogramelor se va ţine cont de timpul de propagare al semnalelor prin circuit.

Pentru a evidenţia funcţionarea corectă a programului o să luăm în considerare cateva situatii ce ar putea rezona cu realitatea. Astfel, vom lua în considerare mai multe valori pentru poziţia iniţială a turbinei şi pentru poziţia giruetei, mai multe valori ale frecvenţei de clock a circuitului şi frecvenţei semnalului de la traductorul de poziţie p, k1 şi k2 vor avea valori fixe de 180 respectiv 360 şi mai multe formule (de tipul <value> <time>, <value> <time>,…,<value> <time>) pentru  semnalele init şi start.

Situaţia 1

Figura 23 - Situatia 1

Figura 23

Valorile semnalelor de intrare:

–         t = 290. În binar t = 100100010

–         g = 310. În binar g = 100110110

–         p – semnal de tip clock cu frecvenţa de 10 Mhz

–         clk – semnal de tip clock cu frecvenţa de 20 Mhz

–         init – 1 0,0 100000

–         start – 0 0,1 125000,0 250000

–         k1 = 180. în binar k1 = 010110100

–         k2 = 360. în binar k2 = 101101000

Turbina va trebui să se mişte în acest caz spre dreapta cu 20 de grade deci m0 va trebui sa aibă valoarea 1 timp de 20 de tacte ale semnalului p iar m1 sa fie 0 pe tot parcursul simulării conform figurii 24.

Figura 24 - Simulare 1

Figura 24. Simulare 1

Situaţia 2

Figura 25 - Situatia 2

Figura 25

Valorile semnalelor de intrare:

–         t = 160. În binar t = 010100000

–         g = 145. În binar g = 010010001

–         p – semnal de tip clock cu frecvenţa de 10 Mhz

–         clk – semnal de tip clock cu frecvenţa de 20 Mhz

–         init – 1 0,0 100000

–         start – 0 0,1 125000,0 250000

–         k1 = 180. în binar k1 = 010110100

–         k2 = 360. în binar k2 = 101101000

Turbina va trebui să se mişte în acest caz spre dreapta cu 15 de grade deci m1 va trebui să aibă valoarea 1 timp de 15 de tacte ale semnalului p iar m1 să fie 0 pe tot parcursul simulării conform figurii 26.

Figura 26 - Simulare 2

Figura 26. Simulare 2

Concluzii

Dispozitivul prezentat în această lucrare este o componentă importantă pentru funcţionarea unei  turbine eoliene de mari dimensiuni. Acesta asigură după cum am vazut exploatarea la maximum a energiei cinetice a vântului asigurând astfel o utilizare cât mai eficienta a turbinei eoliene.

Ca şi rezultate acest dispozitiv prezintă o logică de ieşire ce va constitui intrarea într-un element de execuţie care la rândul său va comanda motorul ce va roti turbina spre direcţia arătată de giruetă. În ce constă această logică de ieşire? Logica de ieşire este după cum am observat anterior o ieşire pe doi biţi (m1,m0) care va furniza elementului de execuţie şi apoi motorului turbinei informaţii cu privire la direcţia de deplasare a turbinei. Astfel dacă la ieşire vom avea “10” turbina se va deplasa la stânga, pentru “10” turbina se va deplasa la dreapta iar pentru “00” turbina nu se va mişca acest fapt însemnând că poziţiile giruetei şi ale turbinei coincid sau nu există o diferenţă foarte mare între ele.

Elementul de execuţie este un convertor electric de putere care acţionează după cum am mai spus asupra motorului ce orientează turbina eoliană şi caracteristile acestuia sunt atât în funcţie de tipul de motor folosit cât şi de puterea acestuia. Ca şi tipuri de motoare pot fi folosite atât motoare de curent continuu cât şi motoare asincrone. Funcţionarea elementului de execuţie şi a motorului nu au făcut obiectul acestei lucrări şi nu s-a insistat asupra lor, însa pot fi luate în considerare ca posibile dezvoltări ulterioare ale acestei lucrări.

Partea cea mai dificilă a acestui proiect a fost nu cum s-ar crede iniţial programarea într-un limbaj de nivel inalt al dispozitivului ci proiectarea lui. Proiectarea constă din conceperea întregului ansamblu care va generea ieşirea dorită în funcţie de valorile de intrare, valori de intrare ce reprezintă valorile în grade ale poziţiei giruetei respectiv a turbinei. Cu alte cuvinte plecând de la cele două valori de intrare a trebuit construit un întreg ansamblu format din blocuri logice care să genereze o ieşire care să acţioneze corect asupra motorului turbinei. Conceptul şi gândirea acestui ansamblu au facut obiectul celei mai dificile părti al acestei lucrări.

Dezvoltări ulterioare ale proiectului ar putea fi proiectarea după cum am menţionat şi mai sus a unui element de execuţie, unitate logică în care intră ieşirea dispozitivului. Proiectarea unui dispozitiv de frânare a turbinei atunci când a ajuns în poziţia dorită poate face obiectul unei alte dezvoltări ale proiectului.

Ca şi performanţe ale cipului folosit pentru implementarea circuitului putem mentţiona următoarele lucruri: din 512 funcţii logice (macrocelule) avute la dispoziţie au fost folosite la compilare numai 106 rezultând un grad de utilizare al cipului de aproximativ 21%; frecvenţa de lucru a cipului este de 17,16 Mhz ceea ce este absolut suficient pentru aplicaţia de faţă.

Ca o ultimă concluzie trebuie precizat faptul că un astfel de ansamblu reprezintă o parte foarte importantă a unei instalaţii de turbine eoliene mai ales pentru cele de dimensiuni mari datorită faptului că realizează automat şi foarte precis deplasarea turbinei pe direcţia vântului cu cea mai mare intenistate. Dacă în cazul turbinelor de dimensiuni mici orientarea se poate face manual în cazul turbinelor foarte mari acest lucru nu este posibil. O astfel de mega turbina poate avea o  înaltime de până la 50 m iar o singură pală poate avea până la 10 m.

ing Glont Ionut: Dispozitiv de orientare a turbinelor eoliene de mari dimensiuni (3/4)

01/08/2009

poza

Recent am avut ocazia sa citesc lucarea de diploma a dlui inginer Glont Aurelian Ionut abolvent 2009 al facultatii de Inginerie “Hermann Oberth” din Sibiu specializarea Calculatoare si Tehnica Informatiei. Am fost placut impresionat de calitatea lucarii. Consider ca si Dv veti aprecia la fel de bine acesta lucare. Am convingerea ca Dl inginer Glont Aurelian Ionut are un potential tehnic foarte bun si va face o cariera stralucita in automatizari industriale

Pentru cei interesati de o colaborare cu Dl inginer Glont Aurelian Ionut  il puteti contacta prin intermediul ferestrei de comentarii asociate acestui articol

Structura unităţii de procesare

Unitatea de procesare este cea mai importantă parte a circuitului de ansamblu. Ea reprezintă porţiunea din circuit în care au loc transformările valorilor de intrare cu scopul de a realiza orientarea turbinei eoliene.

Ca şi intrări în circuit avem:

–         a – valoare preluată de la Registrul A în care a fost stocată în prealabil valoarea emisă de traductorul de poziţie unghiulară al turbinei – a este o valoare pe 9 biţi pentru a putea acoperi întreg intervalul [0,360].

–         b – valoare preluată de la Registrul B în care a fost stocată în prealabil valoarea emisă de traductorul de poziţie unghiulară al giruetei – b este o valoare pe 9 biţi pentru a putea acoperi întreg intervalul [0,360].

La ieşire vom avea:

–         f – valoarea cu care va trebui sa se miste turbina pentru a se orienta pe directia vantului – deasemenea valoare pe 9 biti pentru a putea acoperi intreg intrvalul [0,360].

–         sens –  va fi o valoare pe 2 biti ce va reprezenta logica de sens a circuitului şi anume directia în care se va deplasa turbina: stanga, dreapta sau stop.

Figura 7 – Structura Unitatii de Procesare

Figura 7 – Structura Unitatii de Procesare(se afla in directorul cu figuri)

Exemplificăm în continuare transformările valorilor de intrare pe parcursul întregii unităţi de procesare pentru o înţelegere cât mai bună a funcţionării acesteia.

După cum am precizat anterior valorile a – reprezentând poziţia unghiulară a turbinei şi b – reprezentând poziţia unghiulară a giruetei reprezintă valorile de intrare ale acestui circuit. Ne dorim să aflăm valoarea cu care se va misca turbina  spre direcţia vântului cu intensitate maximă şi sensul în care aceasta se va roti.

Paşii ce trebuie urmaţi pentru realizarea obiectivului:

1. Sunt comparate valorile a şi b cu ajutorul unui comparator ce va avea la ieşire o valoare pe 2 biţi c1. În urma comparării c1 va lua valorile:

– 10 , când a>b

– 11 , când a=b

– 01 , când a<b

2. Se calculează valoarea diferenţei dintre a şi b în modul. Pentru aceasta este nevoie de un dispozitiv de scădere şi de două multiplexoare care vor stabili care dintre valorile a şi b vor fi puse pe intrarea cu plus a scăzătorului şi care valoare dintre valorile a şi b vor fi puse pe intrarea cu minus a scăzătorului. Valoarea diferenţei va fi preluată de variabila m – care este ieşirea scăzătorului deasemenea pe 9 biţi pentru a acoperi întreg intervalul .

Multiplexoarele vor fi comandate de valoarea c1(1) calculată la pasul anterior. Astfel c1(1) va putea lua valorile 1 sau 0.  Rezulta deci două cazuri:

–         când c1(1)=1 observăm că a>b deci Multiplexorul 1 va selecta valoarea a ca fiind pe intrarea cu plus a scăzătorului şi Multiplexorul 2 va selecta valoarea b ca fiind valoarea pe intrarea cu minus a  scăzătorului.

–         când c1(1)=0 observăm că a<b deci Multiplexorul 1 va selecta valoarea b ca fiind pe intrarea cu plus a scăzătorului şi Multiplexorul 2 va selecta valoarea a ca fiind valoarea pe intrarea cu minus a scăzătorului.

3. Este comparată valoarea m calculată la pasul anterior cu 180 cu ajutorul unui comparator. La ieşire vom avea o valoare pe un singur bit c2 astfel că:

– c2=0 , când m ≤ 180

– c2=1 , când m > 180

4. Se calculează diferenţa dintre 360 şi valoarea m calculată la pasul 2 cu ajutorul unui scăzător. Ieşirea acestuia va fi km şi va fi tot o valoare pe 9 biţi pentru a acoperi întreg intervalul [0,360].

5. Conform principiului de elaborare a comenzilor dacă:

m ≤ 180 , atunci valoarea de ieşire f a unităţii de procesare ia valoarea lui m.

m > 180 , atunci valoarea de ieşire f a unităţii de procesare ia valoarea lui km calculat la pasul 4.

Selecţia lui f se face cu ajutorul Multiplexorului 3 comandat de c2 obţinut la pasul 3. Astfel că:

–         dacă c2=0 atunci f = m – unde m reprezintă în acest caz cel mai scurt drum pe care trebuie să-l parcurgă turbina până pe direcţia vântului cu cea mai mare intensitate.

–         dacă c2=1 atunci f = km – unde km reprezintă în acest caz cel mai scurt drum pe care trebuie să-l parcurgă turbina până pe direcţia vântului cu cea mai mare intensitate.

6. Este generată logica de sens cu ajutorul semnalelor c1 calculat la pasul 1 şi c2 calculat la pasul 3. Astfel că:

c1 c2 sens
10 0 10      Stânga
11 0 00      Stop
01 0 01      Dreapta
10 1 01      Dreapta
01 1 10      Stânga

Deci putem concluziona că dacă:

–         sens = 10 turbina se va mişca la stanga

–         sens = 01 turbina se va mişca la dreapta

–         sens = 11 turbina nu se va mişca

Descrierea blocurilor funcţionale

Un bloc funcţional reprezintă o anumită componentă dintr-un circuit care îndeplineşte o anumită funcţie. În cazul circuitului nostru au fost folosite următoarele blocuri funcţionale:

  1. Registru
  2. Comparator
  3. Multiplexor
  4. Scăzător
  5. Numărător
  6. Poarta Logică ŞI
  7. Logica de sens

1. Registru – rolul acestuia este de a memora informaţie. În circuitul nostru avem regiştrii de intrare ce memorează datele iniţiale (Reg_a şi Reg_b), regiştrii intermediari ce memorează date intermediare (Reg_sens, Reg_f) şi regiştrii de ieşire ce memorează datele finale (Reg_m). Fiecare astfel de registru are o intrare de Load şi una de Reset. Când comanda Load este activată are loc încărcarea în registru a informaţiei dorite iar când comanda Reset este activată are loc punerea pe 0 a ieşirii registrului. Cele două comenzi sunt date de ieşirile automatului.

Figura 8 – Reprezentare registru

Figura 8 – Reprezentare registru

Descrierea în VHDL a unui Registru:

entity registru is

port

(t:in std_logic_vector(8 downto 0);        //valoarea ce trebuie memorată în registru

load,reset:in  std_logic;                         //semnale ce vin de la automat load sau reset

a:out std_logic_vector(8 downto 0));   //valoarea de ieşire din registru

end registru;

architecture arch_registru of registru is

begin

proc_registru : process(reset,load)           //procesul este senzitiv la reset şi la load

begin

if  reset=’1′ then  a <=”000000000″;         //dacă reset=1 atunci val de ieşire este pusă pe 0

elsif  load=’1′ then  a <= t;                        //dacă load=1 punem val. de la intrare la ieşire

end if;

end process proc_registru;

end arch_registru;

Figura 9. Simulare registru

Figura 9. Simularea unui registru

După cum observăm în Figura 9 valoarea t de intrare ce trebuie memorată este reprezentată în hexazecimal. Semnalul Reset este activat dupa cum se vede încă de la startul simulării. Am declarat mai multe valori ale lui t pentru a se observa cum funcţioneaza acest registru.  Semnalul Load este semnal de tip clock şi după cum se poate vedea pe fiecare impuls al semnalului clock are loc memorarea datei de intrare la ieşire.

2. Comparator – rolul unui comparator aşa cum îi şi spune numele este de a compara două valori. La ieşire un comparator poate avea o valoare pe un bit sau mai multi biţi în funcţie de cerinţele problemei.

Să presupunem că avem de comparat două numere a şi b care sunt datele de intrare în comparator. Ieşirea o notăm cu c.

Dacă ieşirea c este pe un bit putem avem cazurile:

– dacă a ≠ b atunci c=1

– dacă a = b atunci c=0

Dacă ieşirea c este pe doi biţi putem avem cazurile:

– dacă a > b atunci c=00

– dacă a > b atunci c=01

– dacă a = b atunci c=10

Figura 10. Reprezentare comparator cu două intrări şi o ieşire

Figura 10. Reprezentarea unui comparator cu două intrări şi o ieşire

Descrierea în VHDL a unui Comparator:

entity comparator is

port

(a,b:in std_logic_vector(8 downto 0);

c: out std_logic);

end comparator;

architecture arch_comparator of comparator is

begin

c<=’0′ when (a=b) else

‘1’;

end arch_comparator;

Analog se scrie codul şi pentru comparatorul ce are ieşirea pe doi biţi.

Dacă valorile de intrare sunt diferite observăm în Figura 11 că iesirea c are valoarea 1.

Figura 11. Simulare comparator cu valori de intrare diferite

Figura 11. Simularea unui comparator cu valori de intrare diferite

Dacă valorile de intrare sunt egale observăm în Figura 12 că iesirea c are valoarea 0.

Figura 12. Simulare comparator cu valori de intrare egale

Figura 12. Simularea unui comparator cu valori de intrare egale

3. Multiplexor – rolul unui multiplexor este acela de a selecta o ieşire din n intrări. Selecţia liniei de ieşire se face cu ajutorul unor semnale de control. Semnalul de ieşire este reprezentat pe atâţia biţi câţi sunt necesari pentru a acoperi numărul de intrări ale multiplexorului. De exemplu dacă n = 2 selectorul este pe 1 bit, dacă n = 5 selectorul este pe 3 biţi etc.

Figura 13. Reprezentare multiplexor

Figura 13. Reprezentarea unui multiplexor

În acest caz avem două intrări deci selectorul va fi pe un singur bit. Dacă selectorul este 1 la ieşire va fi adusă valoarea a iar dacă selectorul este 0 la ieşire va fi adusă valoarea b.

Descrierea în VHDL a unui Multiplexor:

entity multiplexor is

port

(a,b : in std_logic_vector(8 downto 0);     //intrările dintre care se va alege ieşirea

rez : out std_logic_vector(8 downto 0);   //ieşirea

sel : în std_logic);                                      //selectorul

end multiplexor;

architecture arch_multiplexor of multiplexor is

begin

rez <= a when  sel = ‘1’  else               //dacă selectorul este 1 atunci ieşirea este a

b;                                             //în caz contrar ieşirea este b

end arch_multiplexor;

Figura 14. Simulare multiplexor

Figura 14. Simularea unui multiplexor

În Figura 14 avem confirmarea celor spuse anterior. Observăm că atunci când  selectorul sel se află pe 0 atunci la ieşire avem valoarea lui b. Când selectorul se află pe 1 atunci la ieşire avem valoarea lui a.

4. Scăzător – după cum îi spune şi numele acest bloc funcţional realizează diferenţa dintre două numere. Un astfel de dispozitiv are două intrări: o intrare “+” pe care se aplică cea mai mare dintre cele două valori care se doresc a fi scăzute şi o intrare “-“ pe care se aplică cea mai mică dintre cele două valori câte se doresc a fi scăzute. În majoritatea cazurilor potrivirea celor două valori la intrarea potrivită se face cu ajutorul multiplexoarelor.

Figura 15. Reprezentare scăzător

Figura 15. Reprezentarea unui Scăzător

Descrierea în VHDL a unui Multiplexor:

entity scazator is

port

(a,b : in  std_logic_vector(8 downto 0);           //valorile care se doresc a fi scăzute

rez : out std_logic_vector(8 downto 0));        //rezultatul scăderii

end scazator;

architecture arch_scazator of scazator is

begin

rez <= a – b ;                                                 //operaţia de scădere

end arch_scazator;

Figura 16. Simulare scăzător

Figura 16. Simularea unui Scăzător

După cum se vede în Figura 16 scăderea dintre a şi b s-a efectuat cu success. Numerele sunt reprezentate în hexazecimal.

5. Numărător – după cum îi spune şi numele acest dispozitiv are rolul de a număra impulsuri. În cazul nostru are rolul de a număra impulsuri clk. Această numărare se poate face atât pe frontul crescător al semnalului cât şi pe frontul descrescător al semnalului. În majoritatea cazurilor numărătoarele trebuie resetate înainte de a putea începe o numărătoare. Intrarea într-un astfel de numărator este de tip clock. Ieşirea trebuie declarată de tip buffer pentru a realiza reacţia internă.

Figura 17. Reprezentare numărător

Figura 17. Reprezentarea unui Numărător

Descrierea în VHDL a unui Numărător:

entity numarator is

port

(a: in std_logic;                                                     //semnalul de intrare

reset: in std_logic;                                               //semnalul de reset

rez: buffer std_logic_vector(8 downto 0));    //semnalul de ieşire–rezultatul numărării

end numarator;

architecture arch_numarator of numarator is

begin

proc_numarator: process(a)                      //procesul este senzitiv la semnalul de intrare

begin

if rising_edge(a) then                              //testăm dacă suntem pe frontul crescător

if reset=’1′ then rez<=”000000000″;    //testăm semnalul de reset

else rez<=rez+1;          //efectuăm incrementarea

end if;

end if;

end process proc_numarator;

end arch_numarator;

Figura 18. Simulare numărător

Figura 18. Simularea unui Numărător

Semnalul a fost ales semnal de tip clock de frecvenţa 20 Mhz. Semnalul de reset se aplică chiar la începutul simulării pentru a aduce valoarea de ieşire pe 0. Observăm că pe fiecare front crescător al semnalului de intrare avem o incrementare a valorii de ieşire în cazul nostru 4 fronturi crescătoare.

6. Poarta Logica ŞI – după cum îi spune şi numele realizează ŞI logic între două semnale de intrare.

Tabel de adevăr ŞI Logic

a b a AND b
0 0 0
0 1 0
1 0 0
1 1 1

Figura 19. Reprezentare Poarta Logica SI

Figura 19. Reprezentarea unei Porţi Logice ŞI

Descrierea în VHDL a unei Porţi ŞI:

entity si is

port

(a,b : in  std_logic;                                //semnalele de intrare

rez: out std_logic);                               //semnalul de ieşire

end si;

architecture arch_si of si is

begin

rez<= a and b;                 //realizarea operatiei ŞI între cele două semnale de intrare

end arch_si;

Figura 20. Simulare Poarta Logica SI

Figura 20. Simularea unei Porţi Logice ŞI

Semnalele de intrare au fost alese de tip clock unul cu frecvenţa de 15 Mhz şi unul de frecvenţa 5 Mhz pentru a putea observa cât mai bine rezultatul. Observăm că semnalul de ieşire este 1 numai când cele două semnale de intrare sunt 1.

7. Logica de Sens – este un bloc funcţional care generează o ieşire pe 2 biţi în funcţie de două intrări: o intrare a pe doi biţi şi o intrare b pe un singur bit. Ieşirea reprezintă codificat direcţia unde se va deplasa turbina – stânga, dreapta sau stop.

a b sens
10 0 10      Stânga
11 0 00      Stop
01 0 01      Dreapta
10 1 01      Dreapta
01 1 10      Stânga

Figura 21. Reprezentare Logica de Sens

Figura 21. Reprezentarea Logicii de Sens

Descrierea în VHDL a blocului funcţional Logica de Sens:

entity logica is

port

( a : in  std_logic_vector (1 downto 0);              //intarea pe 2 biţi

b : in  std_logic;                                                //intrarea pe un bit

sens : out std_logic_vector (1 downto 0));       //iesirea pe 2 biţi

end logica;

architecture arch_logica of logica is

begin

sens<=”10″ when (a=”10″ AND b=’0′) else              //descrierea logicii de sens cu

„00” when (a=”11″ AND b=’0′) else              // structura when – else

„01” when (a=”01″ AND b=’0′) else

„01” when (a=”10″ AND b=’1′) else

„10”;

end arch_logica;

Figura 22. Simulare Logica de Sens

Figura 22. Simularea Logicii de Sens

Observăm în Figura 22 că având intrarea a = “01” şi b = “0” obţinem ieşirea sens = “01” adică turbina se va deplasa spre dreapta conform tabelului.

Descrierea în VHDL a ansamblului

Punând la un loc tot ce am precizat pâna acum, obţinem întregul circuit ce va comanda orientarea turbinei pe direcţia vântului cu intensitatea cea mai mare. Descrierea întregului circuit este facută în limbajul VHDL (Very High Integrated Circuits Hardware Description Language).

Prezentăm în continuare codul sursă al dispozitivului de orientare a turbinelor eoliene în limbajul VHDL.

library ieee;                                                           //apelarea bibliotecilor necesare compilării

use ieee.std_logic_1164.all;                          //circuitului descris

use work.std_arith.all;                                 //apelarea bibliotecii aritmetice

entity turbina is                                         //declararea entităţii turbinei

port                                                                             //definirea portului

(t,g,k1,k2: in std_logic_vector (8 downto 0);       //semnale de intrare

p : in std_logic;                                             //semnale de intrare

clk,start,init: in std_logic;                                //semnale de intrare

m0,m1: out std_logic);

end turbina;

architecture arch_turbina of turbina is                                //definirea arhitecturii turbinei

signal a,b,aa,bb,f,ff,pp,m,km: std_logic_vector (8 downto 0); //semnale interne pe 9 biţi

signal sens,c1,ss: std_logic_vector(1 downto 0);                     //semnale interne pe 2 biţi

signal r0,r1,c2,c3,reset,resetn,load,loads,loadm: std_logic;    //semnale interne pe 1 bit

signal y: std_logic_vector(1 to 5);                                          //semale interne pe 5 biţi

type STARE is (s0,s1,s2,s3,s4,s5,s6,s7);                           //definirea stărilor automatului

signal s: STARE;                                                               //definirea tipului stărilor

begin

–Descriere Registru a

registru_a : process(reset,load)                        //procesul este senzitiv la reset şi load

begin

if  reset=’1′ then  a <=”000000000″;    //se resetează ieşirea (se pune pe 0)

elsif  load=’1′ then  a <= t;             //se încarcă valoarea la ieşire

end if;

end process registru_a;

–Descriere Registru b

registru_b : process(reset,load)                            //process senzitiv la reset şi load

begin

if  reset=’1′ then  b <=”000000000″;   //se resetează ieşirea (se pune pe 0)

elsif  load=’1′ then  b <= g;             //se încarcă valoarea la ieşire

end if;

end process registru_b;

–Descriere Comparator ab

c1<=”10″ when (a>b) else           //condiţia pentru a > b

„11” when (a=b) else           //condiţia pentru a = b

„01”;                                    //condiţia pentru alte cazuri

–Descriere Multiplexor 1

aa <= a when  c1(1) = ‘1’  else      //daca selectorul este 1 incarcam pe a

b;                                         //in caz contrar incarcam pe b

–Descriere Multiplexor 2

bb <= b when  c1(1) = ‘1’  else     //dacă selectorul este 1 încărcăm pe b

a;                                        //în caz contrar încărcăm pe a

–Descriere Scăzător aa_bb

m <= aa – bb;                               //realizarea operaţiei de scădere între cei doi operanzi

–Descriere Comparator 180

c2<=’1′ when (m>k1) else           //ieşirea este 1 când valoarea este > 180

‘0’;                                       //ieşirea este 0 când valoarea este < 180

–Descriere Scăzător k2_m

km <= k2 – m;                             //realizarea operaţiei de scădere între cei doi operanzi

–Descriere Multiplexor 3

f <= km when  c2 = ‘1’  else                 //dacă selectorul este 1 încărcăm pe km

m;                                                 //dacă selectorul este 0 încărcăm pe m

–Descriere Logica de sens

sens<=”10″ when (c1=”10″ AND c2=’0′) else      //elaborarea comenzilor

„00” when (c1=”11″ AND c2=’0′) else

„01” when (c1=”01″ AND c2=’0′) else

„01” when (c1=”10″ AND c2=’1′) else

„10”;

–Descriere Registru sens

registru_sens : process(reset,loads)                   //process senzitiv la reset şi load

begin

if  reset=’1′ then  ss <=”00″;           //se resetează ieşirea (se pune pe 0)

elsif  loads=’1′ then  ss <= sens;   //se încarcă valoarea dorită la ieşire

end if;

end process registru_sens;

–Descriere Registru f

registru_f : process(reset,loads)                            //process senzitiv la reset şi load

begin

if  reset=’1′ then  ff <=”000000000″;   //se resetează ieşirea (se pune pe 0)

elsif  loads=’1′ then  ff <= f;            //se încarcă valoarea dorită la ieşire

end if;

end process registru_f;

–Descriere Numarator

numarare:process(resetn,p)                                     //process senzitiv la resetn şi p

begin

if resetn=’1′ then pp<=”000000000″;               //se resetează ieşirea (se pune pe 0)

elsif rising_edge(p) then pp<=pp+1;           //pe frontul crescător al clock-ului are

end if;                                                            //loc incrementarea ieşirii

end process numarare;

–Descriere Comparator 180

c3<=’0′ when (pp=ff) else             //ieşirea este 0 când valorile sunt egale

‘1’;                                         //ieşirea este 1 când valorile sunt diferite

–Descriere Poarta ŞI 1

r0<= ss(0) and c3;                        //ŞI_Logic

–Descriere Poarta ŞI 2

r1<= ss(1) and c3;                        //ŞI_Logic

–Descriere Registru m

registru_m : process(reset,loadm)              //process senzitiv la reset şi loadm

begin

if  reset=’1′ then m0<=’0′;                 //resetarea ieşirilor (punerea pe 0 a acestora)

m1<=’0′;

elsif  loadm=’1′ then m0<=r0;    //încărcarea valorilor la cele două ieşiri

m1<=r1;

end if;

end process registru_m;

–Descriere AUTOMAT

automat: process(start,init,clk)               //process senzitiv la start,init şi clk

begin

if  init = ‘1’  then  s<= s0 ;                       //iniţializarea automatului

elsif  clk’event and clk = ‘1’ then     //testarea frontului crescător al clk

case  s  is                                   //stabilirea legăturilor între stări

when s0=> if start=’1’then s<=s1;

end if;

when s1=> s<=s2;

when s2=> s<=s3;

when s3=> s<=s4;

when s4=> if ss=”00″ then s<=s1;

else s<=s5;

end if;

when s5=> s<=s6;

when s6=> if c3=’1′ then s<=s6;

else s<=s7;

end if;

when s7=>s<=s0;

end case;

end if;

end process automat;

with s select                                //atribuirea de valori variabilelor de stare

y<=”10100″ when s0,

„00000” when s1|s6,

„01000” when s2,

„00100” when s3,

„00010” when s4,

„00001” when others;

–Conexiuni interne

reset<=y(1);          //atribuirea fiecărui bit al variabilei de stare unei anumite comenzi

load<=y(2);          //dacă bitul este 1 comanda este activă

resetn<=y(3);      //dacă bitul este 0 comanda este inactivă

loads<=y(4);

loadm<=y(5);

end arch_turbina;

ing Glont Ionut: Dispozitiv de orientare a turbinelor eoliene de mari dimensiuni (2/4)

01/08/2009

poza

Recent am avut ocazia sa citesc lucarea de diploma a dlui inginer Glont Aurelian Ionut abolvent 2009 al facultatii de Inginerie “Hermann Oberth” din Sibiu specializarea Calculatoare si Tehnica Informatiei. Am fost placut impresionat de calitatea lucarii. Consider ca si Dv veti aprecia la fel de bine acesta lucare. Am convingerea ca Dl inginer Glont Aurelian Ionut are un potential tehnic foarte bun si va face o cariera stralucita in automatizari industriale

Pentru cei interesati de o colaborare cu Dl inginer Glont Aurelian Ionut puteti sa il contactati prin intermediul ferestrei de comantarii asociate acestui articol

Schema bloc de ansamblu

 

 

Ansamblul reprezintă practic întregul circuit ce coordonează funcţionarea dispozitivului de orientare a turbinei. El cuprinde pe lângă unitatea de procesare automatul ce va comanda întreg circuitul şi în plus câteva blocuri funcţionale necesare funcţionării corecte a dispozitivului.

Ansamblul are următoarele intrări:

–         t – valoarea emisă de traductorul de poziţie unghiulară a turbinei. Valoarea t este reprezentată pe 9 biţi şi este cuprinsă în intervalul [0,360].

–         g – valoarea emisă de traductorul de poziţie unghiulară a giruetei. Valoarea g este reprezentată pe 9 biţi şi este cuprinsă în intervalul [0,360].

–         p – valoarea emisă de senzorul de paşi. Valoarea p este reprezentată pe 1 bit.

–         CLK – semnal de de sincronizare al stărilor automatului

–         START – semnal provenit de la cronometru. Are rol de a porni ciclul automatului.

–         INIT – semnal ce realizează iniţializarea asincrona a automatului.

La ieşire ansamblul are două variabile m1 şi m2 ce constituie intrări într-un element de execuţie care la rândul său comandă motorul ce orientează turbina pe direcţia cu intensitatea vântului cea mai ridicată.

În funcţie de valorile lui m1 şi m2 pot fi realizate următoarele comenzi:

m1 m2 acţiune
0 0 stop
1 0 stânga
0 1 dreapta

Figura 5 - Schema bloc de ansamblu

 

 

 

 

 

 

 

 

 

Figura 5 – Schema bloc de ansamblu(in directorul cu figuri)

 

 

Prezentăm în continuare succesiunea de transformări ale valorilor de intrare până la ieşire pentru o întelegere cât mai bună a funcţionării dispozitivului de orientare al turbinei eoliene.

Paşii ce trebuie urmaţi pentru generarea ieşirii:

1. Iniţial cele două valori preluate de la cele două traductoare de poziţie unghiulară ale turbinei respectiv giruetei sunt memorate în doi regiştrii de intrare Reg_t respectiv Reg_g.

2.  Cele două valori sunt preluate apoi de semnalele interne a (preia valoarea lui t) şi b (preia valoarea lui g)  ce constituie intrările în Unitatea de Procesare.

3.   Urmează prelucrarea valorilor a şi b în Unitatea de Procesare. La ieşire, vom avea două valori şi anume:

sens – va fi o valoare pe 2 biţi ce va reprezenta logica de sens a circuitului şi anume direcţia în care se va deplasa turbina: stânga, dreapta sau stop.

f – valoarea cu care va trebui să se miste turbina pentru a se orienta pe direcţia vântului – deasemenea valoare pe 9 biţi pentru a putea acoperi întreg intrvalul [0,360].

4. Cele două valori sens şi f sunt memorate apoi în doi regiştrii intermediari şi anume Reg_sens şi Reg_f.

5. Cele două valori sunt preluate apoi de semnalele interne ss (preia valoarea lui s) şi ff (preia valoarea lui f).

6. În continuare cu ajutorul unui comparator valoarea ff va fi comparată succesiv cu valoarea pp provenită de la senzorul de paşi. Trebuie menţionat că p este intrare într-un numărator. Semnalul p este de tip clock astfel că pe fiecare front crescător al acestuia are loc incrementarea valorii de iesire pp a număratorului.

Valoarea pp este comparată succesiv cu valoarea ff până când acestea devin egale. Ieşirea comparatorului c3 arată astfel:

–         1 , dacă pp ≠ ff – turbina se află în mişcare.

–         0 , dacă pp = ff – turbina trebuie să se oprească.

 

7. Valoarea ss va fi divizată în ss(0) şi ss(1) acest lucru fiind posibil deoarece ss este pe doi biţi. Cele două valori ss(0) şi ss(1) vor constitui intrări în două porţi logice ŞI şi anume: ss(0) pentru poarta logicş SI_ss(0) şi ss(1) pentru poarta logică SI_ss(1). Valoarea c3 va fi deasemenea intrare pentru fiecare din cele doua porţi logice şi menţionate. Pentru o întelegere cât mai bună urmariti Figura 5 ce reprezinta Schema Bloc de Ansamblu a circuitului.

Cum explicăm prezenţa celor două porţi logice ŞI? Foarte simplu. Atunci când c3 este 1 spunem că porţile ŞI conduc adică generează valori la ieşire pentru m0 şi m1 ce constituie intrări în elementul de execuţie ce va acţiona asupra motorului turbinei. Când c3 este 0 spunem că porţile ŞI sunt blocate deoarece orice valori ar avea ss(0) şi ss(1) ieşirea va fi 0 adică motorul turbinei nu va suferi nici o modificare de poziţie. Valoarea de la ieşirea porţii logice SI_ss(0) este r0 iar ieşirea porţii logice SI_ss(1) este r1.

8. Cele două valori de ieşire din cele două porţi Logice ŞI r0 şi r1 sunt memorate într-un registru de ieşire Reg_m.

9. Cele două valori memorate în registrul de ieşire Reg_m sunt preluate de valorile de ieşire ale întregului ansamblu şi anume: m0 = r0 iar m1 = r1. Cele două valori m0 şi m1 sunt intrări în Elementul de Execuţie ce comandă motorul să se deplaseze pe direcţia dorită.

Să luăm un exemplu:

ss = 01 => ss(0)=1 şi ss(1)=0

ff = 90 – numărul de grade cu care trebuie să se mişte turbina

După cum am explicat valoarea c3 va fi 1 atâta timp cât valoarea ff este diferită de pp. Valoarea pp începe numărătoarea de la 0 iar comparatorul face comparaţii succesive între ff şi pp în cazul nostru 91 de comparaţii:

0 ≠ 90 adevărat => c3 = 1. Ieşirea porţii SI_ss(0) adică r0 va fi 1 iar ieşirea porţii SI_ss(1) adică r1 va fi 0. Cele două valori r0 şi r1 sunt furnizate mai departe ieşirilor întregului ansamblu adică m0 şi m1 şi mai departe Elementului de Execuţie ce va acţiona asupra motorului. Deci motorul turbinei se va misca spre dreapta cu un grad. Valoarea lui pp este incrementată cu 1 deci pp = 1;

1 ≠ 90 adevărat => c3 = 1. Ieşirea porţii SI_ss(0) adică r0 va fi 1 iar ieşirea porţii SI_ss(1) adică r1 va fi 0. Cele două valori r0 şi r1 sunt furnizate mai departe ieşirilor întregului ansamblu adică m0 şi m1 şi mai departe Elementului de Execuţie ce va acţiona asupra motorului. Deci motorul turbinei se miscă spre dreapta cu încă un grad. Valoarea lui pp este incrementată cu 1 deci pp = 2.

2 ≠ 90 adevărat => c3 = 1. Ieşirea porţii SI_ss(0) adică r0 va fi 1 iar ieşirea porţii SI_ss(1) adică r1 va fi 0. Cele două valori r0 şi r1 sunt furnizate mai departe ieşirilor întregului ansamblu adică m0 şi m1 şi mai departe Elementului de Execuţie ce va acţiona asupra motorului. Deci motorul turbinei se miscă spre dreapta cu încă un grad. Valoarea lui pp este incrementată cu 1 deci pp = 3.

.

.

.

89 ≠ 90 adevărat => c3 = 1. Ieşirea porţii SI_ss(0) adică r0 va fi 1 iar ieşirea porţii SI_ss(1) adică r1 va fi 0. Cele două valori r0 şi r1 sunt furnizate mai departe ieşirilor întregului ansamblu adică m0 şi m1 şi mai departe Elementului de Execuţie ce va actiona asupra motorului. Deci motorul turbinei se miscă spre dreapta cu încă un grad. Valoarea lui pp este incrementată cu 1 deci pp = 90.

90 ≠ 90 fals => c3 = 0. Ieşirea porţii SI_ss(0) adică r0 va fi 0 iar ieşirea porţii SI_ss(1) adică r1 va fi deasemenea 0. Cele două valori nule sunt transmise mai departe ieşirilor ansamblului, m0 şi m1 apoi Elementului de Execuţie care va da comanda de Stop motorului.

Descrierea automatului ce comandă întreg ansamblul prezentat

Automatul ansamblului este dacă pot spune aşa “inima” întregului circuit. El comandă şi coordonează întreaga activitate a circuitului. Datele de intrare în automat sunt:

–         CLK – semnal de sincronizare al stărilor automatului

–         START – semnal provenit de la cronometru. Are rol de a porni ciclul automatului.

–         INIT – semnal ce realizează iniţializarea asincronă a automatului.

–         semnalul intern ss – ce condiţionează trecerea din starea S4 în S5 sau S6

–         semnalul intern c3 – care ajută la menţinerea stării de rotaţie în cazul stării S6

Figura 6 – Diagrama starilor automatului

 

 

 

 

 

 

 

 

 

 

 

Figura 6 – Diagrama starilor automatului

Observăm că  pentru a comanda întregul circuit automatul trece prin 7 stări distincte. Pentru o întelegere cât mai bună a diagramei stărilor exemplificăm ce reprezintă fiecare element din figura:

–         S0,S1…S7 – denumirea stării în care se află automatul la un moment dat

–         y – variabilă de stare –ieşiri din automat. Sunt valori pe 5 biţi ce caracterizează

fiecare stare.

–         săgeţile de la o stare la alta sau din cadrul aceleiaşi stări cum este în starea S6 reprezintă condiţiile de tranziţie.

Variabilele de stare pot avea atâtea valori câte sunt nevoie pentru descrierea fiecărei stări. În cazul nostru cu toate că numărul de stări ale automatului este 7 avem 5 valori distincte ale variabilelor de stare. Fiecare variabilă de stare y este compusă după cum putem vedea din Figura 6 din: y(1), y(2), y(3), y(4) şi y(5). Este de precizat că în cazul ieşirilor din automat numaratoarea biţilor nu se mai face de la dreapta la stânga ci de la stânga la dreapta.

Dacă:

–         y(1) = 1 – are loc resetarea tuturor regiştrilor din circuit.

–         y(2) = 1 – are loc încărcărea în regiştrii Reg_t şi Reg_g a variabilelor t respectiv g.

–         y(3) = 1 – are loc resetarea numărătorului

–         y(4) = 1 – are loc încărcarea în regiştrii Reg_sens şi Reg_f a variabilelor sens respectiv f.

–         y(5) = 1 – are loc încărcarea în registrul Reg_m a variabilelor r0 şi r1.

Prin resetare întelegem punerea pe 0 a ieşirii blocului funcţional la care ne referim.

Descrierea stărilor automatului

 

S0 – are ieşirea y = 10100 – observăm că y(1)  = 1 deci are loc resetarea regiştrilor de intrare Reg_t şi Reg_g. Deasemenea y(3) = 1 deci are loc resetarea numărătorului. Vom denumi această stare deci stare de RESET. Trecerea de la starea S0 la starea S1 se face CONDIŢIONAT adică nu putem trece de la starea S0 la S1 decât cu o anumită condiţie. în cazul nostru condiţia de trecere de la S0 la S1 este ca semnalul START = 1.

S1 – are ieşirea y = 00000 – observăm că niciuna din componentele ieşirii nu este activat pe 1 deci suntem în starea numită STOP. Trecerea de la starea S1 la starea S2 se face NECONDIŢIONAT adică putem trece de la starea S1 la starea S2 fără nici o condiţie.

S2 – are ieşirea y = 01000 – observăm că y(2) = 1 deci are loc încărcarea în regiştrii Reg_t şi Reg_g a variabilelor t respectiv g. Vom denumi această stare Citeşte t,g. Trecerea de la starea S2 la starea S3 se face NECONDIŢIONAT adică putem trece de la starea S2 la starea S3 fără nici o condiţie.

S3 – are ieşirea y = 00100 – observăm că y(3) = 1 deci are loc resetarea numărătorului. Vom denumi această stare Procesare şi Resetare Numărător. Trecerea de la starea S3 la starea S4 se face NECONDIŢIONAT adică putem trece de la starea S3 la starea S4 fără nici o condiţie.

S4 – are ieşirea y = 00010 – observăm că y(4) = 1 deci are loc încărcarea în regiştrii Reg_sens şi Reg_f a variabilelor sens respectiv f. Vom denumi această stare Încarcă ss,ff. De la starea S4 putem trece CONDIŢIONAT atât în starea S5 cât şi în starea S1. Astfel, dacă ss = 0 atunci vom trece în starea S1 iar dacă ss ≠ 0 vom trece în starea S5.

S5 – are ieşirea y = 00001 – observăm că y(5) = 1 deci are loc încărcarea în registrul de ieşire Reg_m a variabilelor r0 (care este defapt ieşirea porţii logice SI_ss(0)) şi r1 (care este defapt ieşirea porţii logice SI_ss(1)). Vom denumi această stare Încarcă r0,r1. Cele două valori vor fi încărcate în registrul Reg_m şi furnizate ieşirii atâta timp cât c3 are valoarea 1 adică pp este diferit de ff. Trecerea de la S5 la S6 se face NECONDIŢIONAT adică putem trece de la starea S5 la starea S6 fără nici o condiţie.

S6 – are ieşirea y = 00000. Observăm că nicuna din ieşirile automatului nu este activată. Acest lucru este explicat de faptul că automatul stă în aceeaşi stare atâta timp cât o anumită condiţie este satisfacută. În cazul nostru starea este cea de rotire a motorului turbinei şi ea se face atâta timp cât c3 este egal cu 1 adică pp este diferit de ff. Vom denumi această stare Rotire. Trecerea de la S6 la S7 se face NECONDIŢIONAT adică putem trece de la starea S6 la starea S7 fără nici o condiţie.

S7 – are ieşirea y = 00001. Observăm că y(5) = 1 deci are loc încărcarea în registrul Reg_m a valorilor lui m1 şi m2 dupa ce rotirea motorului a încetat. Adică se atribuie lui m1 şi m2 valoarea 0 întrucât condiţia de rotire nu mai este satisfacută iar c3 este egal cu 0. Deci are loc încărcarea în registrul Reg_m a valorii 0 după care se  revine în starea S0 cea de Reset. Trecerea de la S7 la starea iniţială S0 se face NECONDIŢIONAT adică putem trece de la starea S7 la starea S0 fără nici o condiţie.

ing Glont Ionut: Dispozitiv de orientare a turbinelor eoliene de mari dimensiuni (1/4)

01/08/2009

 

poza

Recent am avut ocazia sa citesc lucarea de diploma a dlui inginer Glont Aurelian Ionut abolvent 2009 al facultatii de Inginerie “Hermann Oberth” din Sibiu specializarea Calculatoare si Tehnica Informatiei. Am fost placut impresionat de calitatea lucarii. Consider ca si Dv veti aprecia la fel de bine acesta lucare. Am convingerea ca Dl inginer Glont Aurelian Ionut are un potential tehnic foarte bun si va face o cariera stralucita in automatizari industriale

Pentru cei interesati de o colaborare cu Dl inginer Glont Aurelian Ionut puteti sa il contactati prin intermediul ferestrei de comentarii asociate acestui articol

Prezentarea temei

Lucrarea de fata isi propune sa realizeze un Dispozitiv de orientare a turbinelor eoliene de mari dimensiuni. Ce intelegem prin orientare a unei turbine eoliene? Inseamna sa pozitionam palele turbinei pe directia vantului cu cea mai mare intenistate pentru a extrage cat mai mult posibil din energia cinetica a vantului, deci pentru a maximiza cantitatea de putere pe care o poate genera turbina electrica.

Cum functioneaza acest dispozitiv? Foarte simplu…Avem o unealta care ne arata in permanenta de unde bate vantul. Aceasta unealta se numeste girueta si este construita dintr-un ax care are intr-un capat o sageata ce ne indica directia vantului iar in celalat capat o contra-greutate. Girueta este asezata de obicei pe nacela turbinei eoliene. Dupa stabilirea pozitiei unde vantul are cea mai mare intensitate, turbina este rotita spre acea directie pe directia cea mai scurta si mentinuta acolo pana cand vantul prezinta schimbari semnificative ale directiei fapt ce conduce la o noua orientare a turbinei.

Descrierea functionala a dispozitivului s-a realizat folosind limbajul de descriere hardware VHDL (Very High Speed Integrated Circuit Hardware Description Language), unul din cele mai folosite limbaje de proiectare a sistemelor electronice digitale.

Pentru implementarea soft s-a folosit un circuit programabil de mare capacitate de tip CPLD (Complex Programmable Logic Devices) si anume CY38030V256-83BBC.

Structura de ansamblu a instalatiei

Turbinele eoliene au ca scop producerea de energie electrica cu ajutorul vantului. Principiul de functionare este unul destul de simplu si anume: vantul pune in miscare palele turbinei eoliene care la randul lor actioneaza un generator electric. Energia electrica astfel obtinuta este fie transmisa catre baterii (pentru turbinele de mici dimensiuni)  pentru inmagazinare fie livrata direct retelei de curent alternativ.

Ce ne propunem in aceasta lucrare este sa realizam un dispozitiv ce directioneaza turbina eoliana pe directia vantului unde intensitatea este cea mai mare. Cu alte cuvine un dispozitiv de orientare a turbinelor eoliene. In Figura 1 avem o imagine de ansamblu a instalatiei care dupa cum observam cuprinde:

–         turbina eoliana propriu-zisa

–         traductor de pozitie unghiulara a turbinei

–         senzor de pasi

–         bloc de comanda

–         girueta

–         traductor de pozitie unghiulara a giruetei.

–         element de executie

–         motor

Turbina eoliana – este cea mai importanta componenta a unei astfel de instalatii. O astfel de turbina este compusa din:

a)      butucul rotorului – pe acest butuc sunt montate palele turbinei.

b)      palete – impreuna cu butucul alcatuiesc rotorul turbinei.

c)      nacela – are rolul de a proteja componentele unei turbine eoliene si anume: generatorul electric, sistemul de racire al generatorului electric, multiplicatorul de rotatie etc.

d)      pilonul – cu rol de sustinere a turbinei eoliene.

e)      arborele principal al unei turbine eoliene are o turatie redusa si are rolul de a transmite miscarea de rotatie de la butucul turbinei la multiplicatorul de turatie cu roti dintate.

f)        multiplicatorul de turatie cu roti dinate are rolul de a mari turatia de la valoarea redusa a arborelui principal, la valoarea ridicata de care are nevoie generatorul de curent electric.

g)      dispozitivul de franare – este un element de siguranta si este folosit in cazul in care mecanismul de reglare a paletelor nu functioneaza sau pentru franarea completa a turbinei in cazul in care se efectueaza operatii de intretinere sau reparatii.

h)      arborele de turatie ridicata care mai este numit si cuplaj, are rolul de a transmite miscarea de la multiplicatorul de turatie la generatorul electric.

i)        generatorul electric – are rolul de a converti energia mecanica a arborelui de turatie ridicata in energie electrica.

j)        sistemul de racire – are rolul d a prelua excesul de caldura produs in timpul functionarii de catre generatorul electric.

k)      sistemul de pivotare – permite orientarea turbinei dupa directia vantului.

l)        girueta – este montata pe nacela si are rolul de a se orienta in permanenta dupa directia vantului.

m)    anemometrul – dispozitiv pentru masurarea vitezei vantului. Acesta comanda pornirea turbinei eoliene cand viteza vantului depaseste un anumit prag respectiv oprirea acesteia la un anumit prag.

n)      controller-ul – reprezinta calculatorul principal al unei turbine eoliene care asigura in permanenta buna functionare a intregii instalatii.

Traductor de pozitie unghiulara a turbinei – acest tip de traductoare sunt utilizate pe scara larga in domeniul automatizarilor industriale. Acesta este de fapt un element de masura pentru pozitia axului unui motor. Trductorul de pozitie unghiulara are rolul de a converti in semnal de curent, pozitia  unghiulara a axului motorului. In cazul nostru traductorul de pozitie unghiulara ne ofera informatii cu privire la pozitia unghiulara a turbinei (valoarea generata poate fi in intervalul [0,360]).

Senzor de pasi – disc cu 360 de perforatii cu un senzor optic. La fiecare deplasare cu un grad furnizeaza un impuls.

Bloc de comanda – reprezinta intreg circuitul care sta la baza dispozitivului de orientare a turbinei. La intrare observam ca blocul de comanda are: pozitia turbinei, pozitia giruetei, valoarea primita de la senzorul de pasi. La iesire blocul de comanda are o valoare pe doi biti ce intra in elementul de executie care mai departe transmite informatia motorului ce va directiona turbina.

Girueta – este de obicei montata pe nacela turbinei eoliene si are rolul de a se indrepta intotdeauna dupa directia vantului. La schimbarea directiei vantului, girueta comanda automat intrarea in functiune a dispozitivului de orientare a turbinei eoliene.

Traductor de pozitie unghiulara a giruetei – este similar traductorului de pozitie unghiulara a turbinei cu deosebirea ca ne furnizeaza informatii cu privire la pozitia unghiulara a giruetei (valoarea generata poate fi in intervalul [0,360]).

Element de executie – este un convertor static de putere adaptat tipului de motor care roteste turbine in jurul axei verticale.

Motor – este dispozitivul care realizeaza miscarea turbinei pe directia vantului. Face parte din sistemul de pivotare a unei turbine eoliene.Un astfel de motor este prevazut cu elemente de angrenare cu roti dintate.

Figura 1 - Structura de ansamblu a instalatiei

 

Figura 1 – Structura de ansamblu a instalatiei (directorul cu figuri)

Principiul elaborarii comenzilor

Comenzile în cazul nostru reprezintă direcţiile pe care se deplasează turbina sub acţiunea motorului şi anume:

–         dreapta – în sensul acelor de ceasornic.

–         stanga – în sens invers acelor de ceasornic.

–         stop – cazul în care poziţia turbinei este aceeaşi cu poziţia giruetei.

Pentru a exemplifica procesul de orientare a turbinei vom apela la cercul trigonometric.

Figura 2 - Cercul trigonometric

 

 

 

 

 

Figura 2 – Cercul trigonometric

În funcţie de poziţiile pe care turbina şi girueta le pot avea pe cercul trigonometric distingem mai multe cazuri pentru exemplificarea comenzilor. Pentru întelegere notăm:

– t  → poziţia unghiulară a turbinei.

– g → poziţia unghiulară a giruetei.

– f  → unghiul dintre turbină şi giruetă.

 

 

Cazul 1

Figura 3 - Cazul 1 - modulul diferentei este mai mic de 180

Figura 3 – Cazul 1 – modulul diferentei este mai mic de 180

 

Modulul diferenţei unghiurilor turbinei şi giruetei este mai mic decât 180°. În acest caz distingem trei cazuri şi anume:

–         dacă t < g atunci turbina se deplasează spre dreapta.

–         dacă t > g atunci turbina se deplasează spre stânga.

–         dacă t = g atunci turbina nu se deplasează.

Notăm f  =  | t-g | – numărul de grade cu care trebuie să se mişte turbina

Dacă  | t-g |  ≤ 180° atunci:

–         dacă t < g → dreapta

–         dacă t > g → stânga

–         dacă t = g → stop

Cazul 2

Figura 4 – Cazul 2 - modulul diferentei este mai mare de 180

Figura 4 – Cazul 2 – modulul diferentei este mai mare de 180

 

Modulul diferenţei unghiurilor turbinei şi giruetei este mai mare decât 180°. În acest caz distingem două cazuri şi anume:

–         dacă t < g atunci turbina se deplasează spre stânga.

–         dacă t > g atunci turbina se deplasează spre dreapta.

Notăm f  = 360 –  | t-g |  – numărul de grade cu care trebuie să se mişte turbina

Dacă  | t-g |  > 180° atunci:

–         dacă t < g → stânga

–         dacă t > g → dreapta