Sunteți pe pagina 1din 45

UNIVERSITATEA POLITEHNICA BUCURESTI

FACULTATEA DE INGINERIE ELECTRICA









MODELAREA SI COMANDA CONVERTOARELOR STATICE


-PROIECT-


PROIECTAREA SI IMPLEMENTAREA FPGA A
COMENZILOR PWM MULTINIVEL





















MASTER EPA 1

Profesor indrumator
Prof. dr. ing. Dan Floricau

Masterand
Adrian Mateianu

- 2014 -
1. Scopul proiectului

In cadrul proiectului se studiaza si se implementeaza comanda numerica PWM
a unui invertor multinivel. Pentru implementare se utilizeaza programul Quartus si
limbajul de programare VHDL (Very High Speed Integreated Circuit Hardware
Description Language). Testarea se va face cu ajutorulul unei cartele FPGA (Field
Programmable Gate Array). Convertorul utilizat pru teste experimentale este un
invertor pe trei nivele de tensiune 3L-ANPC (Active Neutral Point Clamped).

Notiuni introductive

Proiectarea sistemelor numerice complexe nu este posibila fara utilizarea
sistemelor CAD n timpul tuturor fazelor procesului de proiectare. Majoritatea
sistemelor numerice actuale sunt implementate sub forma circuitelor integrate LSI sau
VLSI. Pe masura evolutiei tehnologice de la integrarea pe scara redusa (SSI sau MSI)
la integrarea pe scara larga, cerintele impuse sistemelor CAD au crescut substantial.
Tipul utilitarelor de proiectare s-a diversificat n mod semnificativ. De exemplu, este
important simularea functionarii circuitului naintea fabricatiei.

Exista diferite tipuri de circuite VLSI utilizate actualmente. Se pot distinge
urmatoarele categorii importante de circuite VLSI:
- Retele de porti
- Celule standard
- Macro-celule (blocuri constructive)
- Retele logice programabile (PLA - Programmable Logic Array)
- Dispozitive logice programabile (PLD - Programmable Logic Device)
- Retele de porti programabile (FPGA - Field-Programmable Gate Array)

Circuitele FPGA (Field-Programmable Gate Array) sunt circuite integrate
programabile de catre utilizator care permit un acces rapid la circuite VLSI
configurabile. Un circuit FPGA consta dintr-o retea de celule logice care pot fi
interconectate prin comutatoare de rutare programabile. Circuitele FPGA combina
facilitatile retelelor de porti programabile prin masti MPGA (Mask Programmable
Gate Array) si a dispozitivelor logice programabile PLD (Programmable Logic
Device). De la circuitele MPGA s-a adoptat structura retelei bidimensionale de celule
logice, iar de la circuitele PLD s-a preluat programabilitatea de catre utilizator.
Dupa introducerea lor de catre firma Xilinx, circuitele FPGA au evoluat n
mod considerabil pe masura ce au fost dezvoltate diferite noi tipuri de dispozitive.
Utilizarea circuitelor FPGA s-a raspndit pe scara larga, ceea ce se datoreaza duratei
reduse de productie si costului relativ redus al acestor dispozitive programabile.
Reprezentnd un mediu de implementare pentru circuite VLSI configurabile,
circuitele FPGA ofera urmatoarele avantaje fata de tehnologiile alternative (MPGA,
celule standard, macrocelule):


Circuitele FPGA permit o reducere semnificativa a ciclului de proiectare
si productie;
Circuitele FPGA asigura o reducere a costului de productie al circuitelor
VLSI.

Aceste avantaje, care se datoreaza programabilitatii de catre utilizator a
circuitelor, asigura o reducere a duratei de proiectare, deoarece se pot realiza ntr-un
timp scurt iteratii multiple de proiectare. Totusi, programabilitatea de catre utilizator
are si dezavantaje: densitatea logicii si performantele de viteza ale circuitelor FPGA
sunt considerabil mai reduse dect ale celorlalte alternative. Desi mbunatatirile din
ultimii ani au permis cresterea performantelor circuitelor, sunt necesare nca eforturi
de cercetare pentru a dezvolta arhitecturi optime pentru circuitele FPGA.

Cercetarile din ultimii ani legate de circuitele FPGA au ncercat sa evalueze
modul n care arhitectura acestor circuite afecteaza cele doua metrici importante:
suprafata totala a circuitului si performantele de viteza. Pentru experimentele
efectuate asupra diferitelor arhitecturi propuse, cercetatorii au dezvoltat si utilitare de
proiectare asistata de calculator n scopul implementarii sistemelor numerice cu
ajutorul circuitelor propuse. Pentru diferiti parametri ai arhitecturilor (complexitatea
blocurilor logice, flexibilitatea interconexiunilor etc.), au fost evaluate performantele
acestor arhitecturi, ajustndu-se n mod iterativ arhitectura circuitelor, ct si utilitarele
CAD. Sunt descrise n continuare unele aspecte de cercetare legate de circuitele
FPGA.


2. Etapele proiectului

a) Modelare PSIM a structurii 3L-ANPC
on lmn pom HD ln ml
Elmn n mplmn n omn nm
1 Implmn o n ln poml
2 Gn mnl nl n mplitudine prestabilite
Implmn omn nm pn o ll om 2
1 Implmn ompo omn
2 T omn nm 2 p m pmnl
Inplmn omn nm pn onol multinivel 3L-
ANPC
e1) Programare Quartus
2 T omn nm 3 p m pmnl
f) Evaluare















3. Mod de realizare

Celula de comutatie 3L-ANPC este alctuita dintr-o celula de comutatie 3L
bidirectionala si o celula de comutatie 2L. Mai intai se va efectua simularea structurii
elementare 2L utilizand o strategie PWM sinusoidala. Scopul acestei simulari consta
in fixarea elementelor specifice comenzii pentru a fi urmarite/implementate cu
usurinta in cadrul programului Quartus.
Pentru elaborarea acestei comenzi se vor compara 2 semnale : unul de
referinta (Sr) si unul purtator (Sd). Semnalul purtator triunghiular are frecventa fsw.
Cele doua intreruptoare T1 si T2 se comanda complementar
Obs. : Nu se implementeaza intervalele de garda . Acestea sunt deja
implementate in macheta experimentala (~3.5 us) prin intermediul driverelor SKHI
22A.

















Figura 1: Invertorul monofazat de tensiune in montaj semipunte

Se analizeaza ondulatiile curentului de sarcina pentru a putea fi comparate cu
structura multinivel.

()

A onl n mm pn n po l =0.5;




De asemenea, se analizeaza tensiunea comutata de intreruptoare si se
efectueaza transformarea Fourier (FFT) pentru tensiunea la bornele sarcinii (u
AO
).


Figura 2: Comanda unei celule elementare de tip invertor 2L

Figura 3: Analiza FFT a tensiunii la bornele sarcinii

In partea a doua a acestei etape se simuleaza convertorul 3L-ANPC , publicat
pentru prima data in 2001. Aceasta structura poate fi comandata cu diferite strategii
PWM. In cadrul acestui proiect se implementeaza si se testeaza experimental
strategia PWM-3. Principalul avantaj al acesteia consta in dublarea frecventei
aparente de comutatie la iesirea convertorului.























Figura 4: Schema de principiu a structurii 3L-ANPC

Strategia PWM-3 este prezentata in detaliu in figura urmatoare . Semnalul de referinta
Sr este comparat cu 2 semnale purtatoare triunghiulare Sd1 si Sd2. Semnalele
purtatoare sunt defazate cu TSW/2 (PS- Pase-shifted PWM).



























Figure 5: Schema implementata in Psim a strategiei PWM-3







Figura 6: Tensiunea si curentul de sarcina (10*Is)

Rezultatele simularii pentru invertorul 3L
Pentru calculul ondulatiilor maxime ale curentului se utilizeaza relatia:


Figura 7: Analiza FFT a tensiunii la bornele sarcinii (f
sw
=500Hz)






b)Notiuni elementare de programare VHDL utilizand mediul Quartus
Limbajul VHDL permite programarea, simularea si conceptia circuitelor sau
sistemelor numerice. Este un limbaj care prezinta un nivel ridicat de abstractizare ( nu
face referinta la componenta sau la structura pentru care este utilizat) si este , in
particular, bine adaptat la programarea circuitelor numerice tip FPGA.
Aceasta etapa are ca obiectiv cunoastera limbajului VHDL si a mediului de
dezvoltare Quartus pentru a putea sintetiza si simula comenzi numerice PWM
complexe.

Entitatea si arhitectura
In cadrul VHDL, o structura logica este descrisa cu ajutorul unei entitati si o
arhitectura, dupa cum urmeaza in descrierea generala:

ENTITY Nume_entitate IS

Descrierea intrarilor si iesirilor structurii explicand pentru fiecare dintre ele
numele, directia (IN, OUT si INOUT) si tipul.

END Nume_entitate;

ARCHITECTURE Nume_arhitectura OF Nume_entitate IS

Zona de declaratii variabile

BEGIN

Descrierea structurii logice
Exemple de tipuri de variabile si operatori VHDL:
clk: in STD_LOGIC; intrare logica (1 sau 0)
S1: out STD_LOGIC_VECTOR (7 downto 0); iesire pe 8 biti
S2: out STD_LOGIC; iesire logica (1 sau 0)

Libraria IEEE furnizeaza numerosi operatori:
and, or, nor, xor, xnor, not ,=, /=, < , <=, > , >=, +, =, & ,- ,*, /, **,abs
rising_edge(): detectarea unui front crescator. Ex.: rising_edge(clk)

Alocari:
a este un vector (a:STD_LOGIC_VECTOR (7 downto0);) atunci afectarea se face de
tipul :
:=11111001; =(505

o l lo (: STD_OGIC; n pl: :=0
c si d sunt 2 variabile logice : pentru a afecta valoarea c lui d, scriem : d<=c
Sintaxa unei bucle:

a. Boucle if.Exemplu:
(e=variabila logica, S1=variabila b logic, s2=vector)
if (e=0) then
S1:=0;
S2:=11111111;
elsif (e=10) then
S1:=1;
S2:=01111111;
end if;
b. Boucle for.Exemplu:
c. (compt=vector)
for i in 1 to 5 loop
compt:=compt+1;
end loop;



Reguli importante:
- Nu este posibil sa se reciteasca o iesire aflata la sectiunea PORT
- S po l mnl nnn nl : STD_OGIC
- Atunci cand se utilizeaza o instructiune de sincronizare (if rising_edge sau
falling_edge), semnalele nu sunt actualizate decat o data ce au fost executate
toate instructiunile secventiale.
- D o o , po l l pl l :
STD_LOGIC
- O variabila se reactualizeaza dupa utilizarea operatorului :=
- Intr-un process instructiunile sunt executate secvential, deci numai ultima
afectare/actualizare a unei variabile sau semnal interior din process conteaza




















c)Elemente necesare implementarii unei comenzi numerice PWM
c1) Implementarea divizorului de frecventa utilizand programul Quartus

In figura urmatoare sunt prezentate principalele elemente de realizare ale unei
comenzi numerice PWM.


Partea experimentala disponibila in cadrul proiectului a fost realizataq in jurul
unui concept nou de conversie statica multinivel 3L-ASNPC (Active Staked NPC).
Aceasta este configurata de catre utilizator in cadrul programului Quartus pentru a se
lucra doar cu celula 2L formata din intreruptoarele S2 si S3c.

Din punct de vedere al implementarii Quartus/FPGA sunt puse in evidenta 5
blocuri principale:
1) Divizorul de frecventa
2) Semnalul purtator
3) Semnalul de referinta
4) Blocul comparator
5) Blocul de comanda


Divizorul de frecventa (blocul 1) care are o intrare (clk_FPGA de 16MHz,
pn l FGA o (lk_4H lk_15.625KH. Smnll
purtator (blocul 2) este construit cu ajutorul unui numarator (crescator/descrescator),
nm n ml n n 0 -l .




Caiet de sarcini:
- precizia raportului ciclic (Tclk/Tsw) sa fie mai mica de 0.5%
- frecventa de comutatie de 8kHz
o l ll oml mo :
Tsw = (2*N-2)*Tclk
unde N, reprezinta numarul valorilor posibile pentru raportul de conductie.
Pentru a avea o precizie mai mica de 0.5% se impune utilizarea unui ceas de
4MHz (Tclk=0.25us). Pentru o perioada de comutatie Tsw=125us (fsw=8kHz) se
obtine o precizie a raportului de conductie egala cu 0.2%. inlocuind valorile
perioalo on =251. n mlpl 2 l =256.
S ll n l on 4.08H. n on
frecventa de 4MHz se foloseste ceasul cartelei FPGA de 16MHz si un divizor cu 4.



Diagrama bloc de implementare Quartus/FPGA a comenzii numerice PWM 2L


























Realizarea divizoarelor

Se realizeaza un bloc care sa contina 1 intrare si 2 iesiri. Intrarea se
conecteaza la ceasul cartelei FPGA de 16 MHz, iar iesirile sunt 2 ceasuri: unul de
4MHz pentru generarea semnalului purtator si unul de 15.625 KHz pentru generarea
semnalului sinusoidal de referinta. Semnalul de referinta este definit pe 8 biti (256 de
valori) si se esantioneaza cu frecventa clk_15.625Khz (64us). Astfel se obtine pentru
semnalul de referinta o frecventa egala cu aproximativ 61 Hz [10e6/(64*256)].
Pentru a obtine ceasul de 4Mhz se utilizeaza doua bistabile D, iar pentru cel de
15.625KHZ se utilizeaza 10 bistabile D.
i. Se deschide un nou fisier grafic:

FileNewDesign Files (Block Diagram/schematic File,)

ii. Se realizeaza divizoarele utilizand libraria de primitive a
programului Quartus:

Primitivesstoragesdff Not : Primitiveslogicnot

S pn n/ nm


iii. Se inregistreaza fisierul grafic sub denumirea div2freq :

Filesave as- div2freq

iv. Se genereaza blocul symbol:

Filecreate/UpdateCreate Symbol Files For Current File


Blocul divizor (div2freq) este disponibil in libraria proiectului CeluIa_2L. Se
introduce blocul symbol div2freq n fisierul schematic al proiectului care a fost
denumit Celula_2L si se executa urmatorii pasi:

S no pn n / pn lol n.
S ompl pl
S n om n solicitarile aplicate asupra intrarilor
(File->New->Verification/Debugging Files->Vector Waveform ). Fisierul se salveaza
sub acelasi nume cu proiectul.
Dn mnl Anmn- Settings se selecteaza pentru Simulation Mode modul
Functional
Dn mnl rocessing se selecteaza Generate Functional Simulation Netlist
Dn mnl on l S Smlon

S mnll n n lk_FGA 16H
cu atentie buna functionare a divizoarelor (perioadele semnllo lk_4H lk_l
5625Hz).
Exemplu de calcul al raportului efectiv de conductie pentru N=8 .
n =8, pl mnm po on 1/, 0.125. D
o n po on = 0.35, po l pol on nmeric
Rnm =3, pol on l : l= 3*0.125=0.375.
Valoarea efectiva a raportului de conductie se calculeaza cu expresia
generalizata:
=(2*Rnm-1)/(2*N-2)
D Rnm=3 l = 0.375, =(2*Rnm-1)/(2*N-2) = 0.357

Numarul N defineste precizia temporara a rampei (semnalul purtator
triunghiular). Perioada de comutatie este decupata in (2N-2) intervale. Acest numar
defineste, de asemenea, precizia semnalului de referinta. Inaltimea referintei este
decupata in N intervale. Raportul 1/N reprezinta precizia cu care se poate modifica
semnalul de referinta numeric si trebuie sa fie mai mica de 0.5%.





c2) Generare semnal triunghiular de frecventa si amplitudine prestabilite

Definirea semnalului purtator triunghiular
Se l n lo nm o o n 0 -l.
Acest bloc are ca marime de intrare un ceas (Tclk). Se sincronizeaza incrementarea si
decrementarea contorului pe frontul crescator al ceasului. Se prevede un semnal care
indica sensul de numarare (crescator sau descrescator).

i. Se deschide un nou fisier VHDL in cadrul aceluiasi proiect Celula_2L :
FileNewDesign Files (VHDL File)
ii.Se copiaza programul VHDL urmator, care defineste semnalul purtator
triunghiular.

library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
entity purtatoare is
port (
clk_4MHz:in STD_LOGIC;
Rampa: out STD_LOGIC_VECTOR (7 downto 0);
Sens: out STD_LOGIC
);
end purtatoare;
architecture F3 of purtatoare is
begin
process(clk_4MHZ)
variable compt:STD_LOGIC_VECTOR(7 downto 0);
variable test:STD_LOGIC;
begin
if rising_edge(clk_4MHZ) then
if(compt=0) then
sens<='1';
test:='0';
end if;
if (compt=255) then
sens <= '0';
test:= '1';
end if;
if(test='0') then
compt:=compt+1;
Rampa<=compt;
elsif (test='1') then
compt:=compt-1;
Rampa<=compt;
end if;
end if;
end process;
end F3;

iii.Se inregistreaza fisierul sub numele:

File-Save as- purtatoare

iv.Se creaza blocul symbol care opn l :

Filecreate/UpdateCreate Symbol Files For Current File


In acest moment aveti 2 blocuri disponibile n libraria proiectului: div2freq si
purtatoare. Se introduce blocul symbol purtatoare in fisierul schematic al proiectului
si se fac conexiunile cu blocul divizor.


Implmn omn nm pn o ll om 2
1 Implmn ompo omn

Semnalul de referinta
Smnll n n p 8 (256 lo non
fren lk_15.625KH (64. Al, on pn mnll n o
n l pom 61H [106/(64*256]. A lo ponl n
l l pol (pl n l p po po nm
de sinusok.





Se introduce blocul sinusok n cadrul fisierului schematic al proiectului si se
face legatura cu blocul divizor.

Realizarea comparatorului (Blocul 4)
Compol l n momnlo om pn
celula 2L (TO BOT. Smnll n omp lo pol
ciclic, care va fi codificata numeric:
0 =0 l -1 =1. In n ll omp, termina starea
ntreruptoarelor.
om n l intr-un bloc cu ajutorul limbajului
VHDL, iar blocul symbol rezultat se denumeste comparator.
S n no HD n l l po Cll_2 :

FileNewDesign Files (VHDL File)

Se copiaza programul VHDL urmator, care defineste blocul comparator:

library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
entity comparator is
port (
Rampa:in STD_LOGIC_VECTOR (7 downto 0);
RC:in STD_LOGIC_VECTOR (7 downto 0);
cd: out STD_LOGIC
);
end comparator;
architecture F3 of comparator is
begin
process(Rampa)
begin
if Rampa>RC then
cd<='0';
end if;
if Rampa<RC then
cd<='1';
end if;
end process;
end F3;

Se inregistreaza fisierul sub numele:

File- save as comparator

Se creeaza blocul simbol care corespunde fisieruluii:

File create/Update-Create Symbol Files For Current File




Se introduce blocul comparator in fisierul schematic al proiectului Celula_2L
si se fac legaturile.


Realizarea blocului de comanda

Partea experimentala disponibila in cadrul proiectului a fost realizata in jurul
unui concept nou de conversie statica multinivel 3L-ASNPC (Active Stacked NPC) .
A ono onn 8 npo onl .Dn l
doar intreruptoarele S2 (TO S3(BOT pn om ll om 2.
Pentru a asigura alimentarea celulei 2L de la sursa de tensiune continua,
npol S1 S4C o omn l n (on. Clll npo
S1C, S4, S2C S3 o omn l locare (off).




Se deschide un nou fisier grafic:

FileNewDesign Files (Block Diagram/schematic File,)

S l omn ln l pm poml :

Gnd, Vcc : Primitivesother Not: Primitiveslogicnot

Se adauga pinii de intrare/iesire si se denumesc:

PrimitivesPin

Se inregistreaza fisierul grafic sub denumirea comanda :

Filesave ascomanda




Se genereaza blocul simbol:

File-create/update-Create Symbol Files for current File



Se introduce blocul comanda in fisierul schematic al proiectului Celula_2L si
se fac legaturile. Dupa aceea se introduc pinii de iesire si se simuleaza intreaga
comanda urmarind pasii descrisi in cadrul etapelor anterioare. Se verifica buna
non omn 2 p n nl l ml mnm 20m, pn
putea urmari comenzile intreruptoarelor pe un ciclu complet de functionare. Se
reaminteste ca perioada semnalului sinusoidal de referinta este de 61Hz (16.3ms). Se
verifica cu atentie toate cele 8 comenzi care trebuie trimise montajului experimental si
se compara cu simularea PSIM.

d2) Testare comanda numerica PWM 2L pe macheta experimentala
In acest stadiu comanda PWM a celulei 2L a fost simulata si verificata. Pentru
a putea testa comanda pe macheta experimentala trebuie sa se realizeze legatura intre
pinii de iesire si cartela FPGA. Aceasta cartela asigura, mai departe, interfata cu
driverele SKHI 22A, care comanda IGBT-urile din cadrul convertorului. Driverele
SKHI 22A sunt destinate sa comande module duale de IGBT-uri si asigura intervalul
de garda necesar pentru intreruptoarele complementare. Intreruptoarele
complementare care fac parte din acelasi modul dual au indicele c. Timpul mort
implementat in cadrul driverelor este de 3.25us.



Tabel 1. Numerotarea pinilor
Semnal clk 16MHz TI Tic T2 T2c T3 T3c T4 T4c
Nr. PIN 183 169 164 170 166 172 167 173 168

Dupa compilarea aplicatiei se realizeaza legatura dintre pinii de intrare/iesire
si cartela FPGA:
i1) Fin meniul Assignments se selecteaza Pin Planner
i2) Se selecteaza Assigments- Assignments Editor
i3) Se selecteaza Node Finder List si se introduc intrarile/iesirile
i4) Dublu click pe << Assignement Name>> si alegeti << Location (Accepts
wildcards/grups)>>
i5) Dublu click pe <<Value>> si se scrie numarul pinului conform tabelului anterior.




Implementarea comenzii pe cartela FPGA:

Proiectul este pregatit sa fie implementat pe cartela FPGA. Dupa compilarea
proiectului, Quartus creaza 2 fisiere nume_proiect.pof si nume_proiect.sof .Aceste
fisiere sunt implementate pe cartela FPGA:
i1) Se selecteaza meniul Tools-Programmer si apare urmatoarea fereastra:
2 S n mnl l nm_po.po nm__po.o.
Quartus incarca comanda elaborata pe cartela FPGA si se pot studia formele
de unda obtinute in vederea validarii experimentale a comenzii PWM.
l pmnl omn nm 2
Inn n omn p l FGA on lmn
circuitului p l nol. Dp n omn nm
lo , jol n oloop, oml n l omn
. Foml n on n omp ml SI.
S l n non omn numerice implementate n general si
complementaritatea semnalelor de comanda in particular.



Odata validata comanda PWM se alimenteaza partea de putere a invertorului
si se releva formele de unda pe partea de iesire: curentul si tensiune.

COMPARATIE intre comanda T2 si T3c obtinuta in PSIM si cea obtinuta in Quartus


















e) Implementare comanda numerica PWM pentru convertorul multinivel 3L-
ANPC
e1) Programare Quartus
Schema electrica a structurii 3L-AC onn 3 ll om (ll
1: S1-S1c, celula 2: S2-S2C ll 3: S3-S3C). Pentru dublarea frecventei aparente
om l 2 n po Tw/2 . pmnl
disponibila in cadrul proiectului a fost realizata in ajutorul unui concept nou de
conversie statica multinivel 3L-ASNPC (Active Stacked NPC) .Aceasta este
configurata de catre utilizator n cadrul programului Quartus pentru a se lucra doar cu
celulele care formeaza configuratia 3L-ANPC. In urma reconfigurarii se obtin
urmatoarele celule de comutatie: celula 1: S1-S1c, celula 2: S2-S3c si celula 3: S4-
S4C. Pentru reconfigurarea semnalelor de comanda, prezentate se prezinta urmatoara
m jo

Atentie: In cadrul programului Quartus, toate semnalele care participa la obtinerea
momentelor de comutatie sunt marimi intregi si pozitive.



Din punct de vedere al implementarii Quartus/FPGA sunt puse in evidenta 5
blocuri principale, la fel ca in cazul 2L stu: 1 ol n 2 mnll
purtatoare si semnalul inhibator 3) semnalul de referinta; 4) blocul comparator si 5)
lol omn.











Diagrama de implementare PSIM a strategiei PWM-3 pentru structura 3L-ANPC

Se incepe l omn m p l 2,
cu mentiunea ca se modifica urmatoarele blocuri: 2 (definirea purtatoarelor), 4
(compararea) si 5 (comanda).

Realizarea divizoarelor :

Blocul divizor este acelasi cu cel elaborat la comanda PWM-2L si se poate recupera
symbolul elaborat. Acesta contine 1 intrare si 2 iesiri( pentru a scadea frecventa de
comutatie la 4Khz se mai adauga un bistabil de tip D generandu se astfel un semnal
pentru purtatoare de 2MHz ).

Intrarea blocului dio on l l l FGA 16 H, l
n 2 : nl 2H pn n mnll po nl
15.625KHz pentru generarea semnalului sinusoidal de referinta.
Definirea semnalelor purtatoare (Blocul 2)
Se realizeaza un bloc care defineste 2 purtatoare defazate cu 180. Acest bloc
dispune de:

- intrari: clk de 4MHz
- iesiri: 2 purtatoare defazate cu 180




Programului VHDL, care defineste semnalele purtatore triunghiulare:
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
entity purtatoare is
port (
clk_2MHz:in STD_LOGIC;
port1: out STD_LOGIC_VECTOR (7 downto 0);
port2: out STD_LOGIC_VECTOR (7 downto 0)
);
end purtatoare;
architecture F3 of purtatoare is
begin
process(clk_2MHZ)
variable compt1:STD_LOGIC_VECTOR(7 downto 0);
variable compt2:STD_LOGIC_VECTOR(7 downto 0);
variable test1:STD_LOGIC;
variable test2:STD_LOGIC;
begin
if rising_edge(clk_2MHZ) then
if(compt1=0) then
test1:='0';
compt2:="11111111";
elsif (compt1=255) then
test1:='1';
compt2:="00000000";
end if;
if (compt2=0) then
test2 :='0';
end if;
if(compt2=255) then
test2:='1';
end if;
if (test1='0') then
compt1:=compt1+1;
port1<=compt1;
elsif(test1='1') then
compt1:=compt1-1;
port1<=compt1;
end if;
if (test2='0') then
compt2:=compt2+1;
port2<=compt2;
elsif (test2='1') then
compt2:=compt2-1;
port2<=compt2;
end if;
end process;
end F3;

Semnalul de referinta (Blocul 3)


Smnll n n p 8 (256 lo non
frecventa clk 15.625KHz (64us). Astfel, se obtine pentru semnalul de referinta o
frecventa egala cu aproximativ 61 Hz [10e6/(64*256)]. Acest bloc este disponibil n
directorul l po nm nok.







Realizarea comparatorului (Blocul 4)



Comparatorul trebuie sa realizeze generarea momentelor de comutatie pentru
celula 3L-ANPC. S-a constatat in cadrul simularii PSIM existenta a 3 comparatoare.
Semnalul de referinta este comparat cu undele purtatoare si cu 127 (in cadrul
implementarii numerice) pentru definirea semnalului de inhibare a comenzii (Inh).
Semnalul Inh va fi utilizat, in continuare, in blocul de comanda pentru a defini
semnalele de comanda. Se propune gruparea celor 3 comparatoare si realizarea unui
program VHDL care sa dispuna de urmatoarele marimii:
- n: po 1
po 1
semnalul de referinta
- iesiri: ll omp n po 1 nta
ll omp n po 2 n
ll omp n n 2 o onn l 127

Programarea acestei functii se realizeaza intr-un bloc cu ajutorul limbajului
VHDL:

library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
entity comparator is
port (
port1:in STD_LOGIC_VECTOR (7 downto 0);
port2:in STD_LOGIC_VECTOR (7 downto 0);
modul:in STD_LOGIC_VECTOR (7 downto 0);
compar1: out STD_LOGIC;
compar2: out STD_LOGIC;
inh:out STD_LOGIC;
inhN:out STD_LOGIC
);
end comparator;
architecture F3 of comparator is
begin
process(port1)
begin
if port1>modul then
compar1<='0';
end if;
if port1<modul then
compar1<='1';
end if;
end process;
process(port2)
begin
if port2>modul then
compar2<='0';
end if;
if port2<modul then
compar2<='1';
end if;
end process;
process(modul)
variable E:STD_LOGIC_VECTOR(7 downto 0);
begin
E:="01111111";
if modul>E then
inh<='1';
inhN<='0';
end if;
if modul<E then
inh<='0';
inhN<='1';
end if;
end process;
end F3;

Realizarea blocului de comanda (Blocul 5)
Pentru realizarea blocului 5 se urmareste diagrama de implementare PSIM si
se obtine urmatorul fisier schematic.




Fiecare tip de comanda are avantajele si dezavantajele sale. In proiectul de fata s-a
preferat sa se foloseca comanda PWM3 (MLI3) care ofera ondulatiile maxime ale
curentului mai mici:



Fata de cazul folosirii comenzii PWM1 sau PWM2, unde ondulatiile curentului sunt:



Pentru a realiza blocul de comanda pentru 3L-ANPC se apeleaza la diagrama de
comutatie a celor trei celule dupa comanda PWM3.


Diagrama de comutare pe cele trei celule

Se introduc toate blocurile realizate si testate in fisierul schematic al
proiectului si se fac legaturile . Dupa aceasta se introduc pinii de intrare/iesire si se
simuleaza intreaga comanda urmarind pasii descrisi in cadrul etapelor anterioare. Se
verifica buna functionare a comenzii 3L pe un interval al simularii de minim 20ms,
pentru a se putea urmarii comenzile intreruptoarelor pe un ciclu complet de
functionare. Se reaminteste ca perioada semnalului sinusoidal de referinta este de 61
Hz (16.3ms). Se verifica cu atentie toate cele 8 comenzi care trebuie trimise
montajului experimental si se compara cu simularea PSIM.


Comada 3L-ANPC dupa strategia PWM3


4. Rezultate experimentale

In cadrul proiectului am efectuat simulari fie in PSIM fie in Quartus precum si
incarcarea acestor programe pe machete experimentala.

Simulari Quartus

- Comanda numerica PWM pentru o celula de comutatie 2L



Pentru o corecta functionare a programului Quartus pe modelul experimental trebuie
verificate frecventele impuse in blocul 1. Astfel frecventa FPGA este:





Impulsuri oferite pe ceasul intern FPGA

Prin folosirea a doua bistabile de tip D se obtine frecventa de:




Determinarea frecventei undei de referinta

Conform functionarii comenzii numerice PWM a celulei 2L avem formele de unda:


Comanda pe cele 8 intreruptoare

- Comanda numerica PWM pentru o celula de comutatie 3L-ANPC


Comanda pe cele 8 intreruptoare intr-o celula 3L

Pentru a putea fi siguri de functionarea corecta a montajului experimental este
necesara determinarea frecventei obtinute la iesirea blocului de divizare a frecventelor
(calcul efectuat si in cazul celulei 2L).
Din compararea formelor de unda obtinute in urma simularilor cu diagama de
comutaite a convetorului 3L-ANPC, observam ca astea se potrivesc si putem spune ca
simularea functioneaza corect.





Simulari PSIM

Pentru a putea intelege strategia de comanda PWM3 este de preferat sa se
efecueze si o simulare PSIM (comanda celulelor fiind mai facila).
Pentru a putea analiza atat functionarea pe placa FPGA cat si in programul PSIM s-a
preferat utilizarea in simulare a invertorului 3L ASNPC dar cu comanda OFF pe
intreruptoarele T2c si T3 abtinandu-se astfel invertorul de tip 3L ANPC.


Schema 3L-ASNPC

Schema 3L - ANPC
E
E
E
E

Semnalele purtatoare

Comanda 3L-ANPC


Semnale purtatoare si semnalul de referinta sinusoidal
Comanda celulelor de comutatie se realizeaza prin comporarea a doua semale
triunghiulare (1 si 2) cu un semnal de referinta (Sr), iar in figura 24 sunt prezentate
modul de comanda a intreruptoarelor. In figuri sunt prezentate momentele de
comutatie a celor 8 intreruptoare.
In prima figura comanda intreruptoarelor T
1
si T
1c
precum si in ultima figura
comanda intreruptoarelor T
4
si T
4c
se observa particularitatile comenzii PWM3, adica
pe alternanta pozitiva celula 1 comuta complementar pe cand in celula 3 comuta doar
intreruptorul T
4
(intreruptorul T
4c
comandat OFF), iar pe alternanta negativa celula 3
este comadata complementar pe cand in celula 1 doar T
1c
este comandat (T
1
comandat
OFF), ceea ce este in conformite cu diagrama de comanda.


Comanda complementara pe celula T
1
T
1c



Comanda celula T
2
T
2c


Comanda celula T
3
T
3c


Comanda complementara pe celula T
4
T
4c
In figura sunt vizibile cele 3 nivele de tensiune obtinute la iesirea invertorului E, 0 si -
E.

Tnn p o n R = 5 = 10mH
In figura este prezentata forma de unda a curentului prin sarcina. Acesta poate sa
difere in functie de tipul sarcinii. In cazul de fata sa ales o sarcina de tip R L.

Forma de unda a curentului pen o n R = 5 = 10mH
Pentru a putea observa dublarea frecventei aparente de comutatie se realizeaza o
analiza FFT asupra tensiunii de sarcina, unde se observa ca apare frecventa
fundamentalei la valoarea de 50 Hz, iar urmatoarea frecventa importanta apare abea la
2 kHz (frecventa undelor purtaoare este de 1kHz) ceea ce inseamna dublarea acestei
frecvente.
E
-E

Analiza in frecventa a tensiunii de sarcina

Evidentierea dublarii frecventei aparente de comutatie
















Simulari FPGA
Invertor 2L
In m n poml Ino 2 l jol
unui osciloscop a formelor de unda in diverse puncte ale schemei am obtinut
urmatoarele:
- Comanda intreruptoarelor T
3c
si T
2
, comandate complementar conform
programului din anexa

Comanda complementara pe celula T
3c
T2

- Valoarea tensiunii de la iesirea invertorului: 0 si E, precum si curentul
absorbit de sarcina.


Forma de unda tensiunii de sarcina (CH1) si forma de unda a curenturlui de sarcina
(CH2)
- Circulatia curentului prin transistor si prin diode la comanda
intreruptorului T
2
la comandarea intreruptorului curentul circula prin
tranzistor (valoare curentului creste) iar la blocarea acestuia curentul
circula prin diode de regim liber (curentul scade fata de valoarea din
conductive):

Comanda pe T
2
si conductia curentului prin tranzistor si diode de regim liber
- Circulatia curentului este asemanatoare si in cazul comandarii
intrruptorului T
3c
:
-

Comanda pe T
3c
si conductia pe tranzistor si pe diode


Invertorul 3L ANPC

In m n poml Ino 3-AC l
cu ajutorul unui osciloscop a formelor de unda in diverse puncte ale schemei am
obtinut urmatoarele:
- Ca si in cazul simularii PSIM abtinem aceleasi semnale de comanda pe
cele trei celule de comutatie:
o Celula 1 om nnpol T
1
si T
1c
;
o Cll 2 om n npol T
2
si T
3c
;
o Cll 3 om n npol T
4
si T
4c
.


Comutatiile pe celula formata din T
1
si T
1c



Comutatia celulei formate din tranzistoarele T
4
si T
4c


Comanda complementara pe celula de comutatie formata din T
2
T
3c
- Din figura se observa cele 3 nivele de tensiune ale tensiunii de iesire a
invertorului precum si faptul ca tensiuna si curentul sunt in faza (exista un
mic defazaj datorat inductivitatii sarcinii).

-

Formele de unda ale tensiunii si curentului de sarcina

Tensiunea de iesire a invertorului in 3L

Figura 1 Curentul prin sarcina
- In cazul analizei pe placuta FPGA cu ajutorului osciloscopului observam
si aici dublarea frecventei aparente de comutatie.


Analiza spectrala a tensiunii de la iesirea invertorului














5.Anexa
Program VHDL pentru realizarea semnalului purtator 2L

library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
entity porteuse is
port(
clk_4MHz: in STD_LOGIC;
Rampe:out STD_LOGIC_VECTOR (7 downto 0);
sens: out STD_LOGIC
);
end porteuse;
architecture F3 of porteuse is
begin
process (clk_4MHz)
variable compt:STD_LOGIC_VECTOR ( 7 downto 0);
variable test: STD_LOGIC;
begin
if rising_edge (clk_4MHz) then
if (compt=0) then
sens<='1';
test:='0';
end if;
if (compt=255) then
sens<='0';
test:='1';
end if;
if (test='0') then
compt:=compt+1;
Rampe<=compt;
elsif (test='1') then
compt:=compt-1;
Rampe<=compt;
end if;
end if;
end process;
end F3;

Anexa 5.2 Program VHDL petru creare blocului de comparare 2L

library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
entity comparateur is
port(
Rampe : in STD_LOGIC_VECTOR (7 downto 0);
RC : in STD_LOGIC_VECTOR (7 downto 0);
cd : out STD_LOGIC
);
end comparateur;
architecture F3 of comparateur is
begin
process(Rampe)
begin
if Rampe>RC then
cd<='0';
end if;
if Rampe<RC then
cd<='1';
end if;
end process;
end F3;
Anexa 5.3 Program VHDL pentru realizarea semnalelor purtatoare 3L
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;

entity Porteuse is
port(
clk: in STD_LOGIC;
port1: out STD_LOGIC_VECTOR(7 downto 0);
port2: out STD_LOGIC_VECTOR(7 downto 0)
);
end Porteuse;

architecture F3 of Porteuse is

begin
process(clk)
variable compt1: STD_LOGIC_VECTOR(7 downto 0);
variable compt2: STD_LOGIC_VECTOR(7 downto 0);
variable test1: STD_LOGIC;
variable test2: STD_LOGIC;
begin
if rising_edge(clk) then
if(compt1=0) then
test1:='0';
compt2:="11111111";
elsif(compt1=255) then
test1:='1';
compt2:="00000000";
end if;

if(compt2=0) then
test2:='0';
end if;
if(compt2=255) then
test2:='1';
end if;

if(test1='0') then
compt1:=compt1+1;
port1<=compt1;
elsif(test1='1') then
compt1:=compt1-1;
port1<=compt1;
end if;

if(test2='0') then
compt2:=compt2+1;
port2<=compt2;
elsif(test2='1') then
compt2:=compt2-1;
port2<=compt2;
end if;
end if;
end process;
end F3;
Anexa 5.4 Program VHDL petru creare blocului de comparare 3L
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;

entity compar is
port(
port1: in STD_LOGIC_VECTOR(7 downto 0);
port2: in STD_LOGIC_VECTOR(7 downto 0);
modul: in STD_LOGIC_VECTOR(7 downto 0);
compar1: out STD_LOGIC;
compar2: out STD_LOGIC;
inh: out STD_LOGIC;
inhN: out STD_LOGIC
);
end compar;

architecture F3 of compar is
begin

process(port1)
begin
if port1>modul then
compar1<='0';
end if;
if port1<modul then
compar1<='1';
end if;
end process;

process(port2)
begin
if port2>modul then
compar2<='0';
end if;
if port2<modul then
compar2<='1';
end if;
end process;

process(modul)
variable E: STD_LOGIC_VECTOR(7 downto 0);
begin
E:="01111111";
if modul>E then
inh<='1';
inhN<='0';
end if;

if modul<E then
inh<='0';
inhN<='1';
end if;
end process;
end F3;


















6.Bibliografie:

1. T. Briickner, S. Bernet, Loss balancing in three-level voltage source inverters
applying active NPC switches, Proc. IEEE PESC, Vancouver 2001, pp.1135-1140.
2. D.Flo, E.Flo, .Dm, l Doln o Appn
Switching Frequency using TJiree-Level ANPC Converter, ISNCC'08 - International
School on Nonsinusoidal Currents and Compensation, Lagow, Poland, 2008, pp. 1-6.
3. D.Flo, E.Flo, .Dm, l Doln o Appn
Switching Frequency using Three-Level ANPC Converter, Przeglad
Elektrotechniczny (Electrical Review), 2009, R. 85, NR 1/2009, pp.151-155
4. D.Flo, G.G, w lll Con o m-Voltage
Applications, Przeglad Elektrotechniczny (Electrical Review), 2009, R. 85, NR
7/2009, pp.26-30
5. D.Flo, G.G, E.Flo, A.Leredde, Reducing of the Average Switching
Frequency using Three-level Active-SNPC Converter, EPE 2009 - 13th European
Conference on Power Electronics and Applications, 8-10 Sept. 2009, Barcelona,
Spain, P.1-P.7

S-ar putea să vă placă și