Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
ANALIZA RAZLIČITIH NAČINA UPRAVLJANJAASINKRONOG MOTORA
Galić, Mirko
Undergraduate thesis / Završni rad
2020
Degree Grantor / Ustanova koja je dodijelila akademski / stručni stupanj: University of Split, University Department of Professional Studies / Sveučilište u Splitu, Sveučilišni odjel za stručne studije
Permanent link / Trajna poveznica: https://urn.nsk.hr/urn:nbn:hr:228:059993
Rights / Prava: In copyright
Download date / Datum preuzimanja: 2021-11-21
Repository / Repozitorij:
Repository of University Department of Professional Studies
SVEUČILIŠTE U SPLITU
SVEUČILIŠNI ODJEL ZA STRUČNE STUDIJE
Preddiplomski stručni studij elektroenergetika
Mirko Galić
ZAVRŠNI RAD
ANALIZA RAZLIČITIH NAČINA UPRAVLJANJAASINKRONOGMOTORA
Split, rujan 2020.
SVEUČILIŠTE U SPLITU
SVEUČILIŠNI ODJEL ZA STRUČNE STUDIJE
Preddiplomski stručni studij elektroenergetika
Predmet: Elektroaukustika
ZAVRŠNI RAD
Kandidat: Mirko Galić
Naslov rada: ANALIZA RAZLIČITIH NAČINA UPRAVLJANJA
ASINKRONOG MOTORA
Mentor: Predrag Đukić
Split, rujan 2020.
Sažetak
Svrha ovog rada je usporedba između različitih načina upravljanja asinkronog
motora. Posebna pažnju je posvećena na upotrebi digitalnih filtera koji poboljšavaju i
pojednostavljuju izvedbu upravljanja elektromotorima. Digitalni filter sinc je implementiran
u Verilogu za FPGA integrirane krugove. Opisane su različite metode upravljanja asinkronih
motora, dok je naglasak dan na algoritme koji koriste bezsenzorsko vektorsko upravljanje.
Upotreba bezsenzorske vrste upravljanja znatno snižava cijenu sustava upravljanja, te
omogućuje lakšu primjenu u praksi. Predložena arhitektura koristi FPGA kontroler, čime
poboljšava sigurnost i zaštitu, te primjenjuje digitalne filtere.
Implementacija bezsenzorskog algoritma je izvedena preko platforme otvorenog koda
VESC. Uz to je dan prijedlog poboljšanja, sa shemom za upravljanje elektromotorima baziran
naVESCplatformi, za kontrolu asinkronogmotora, maksimalnog napona 600V imaksimalne
struje 50A. Upotrebom izolacijskih ADCova smo omogućili sigurno mjerenje visokog
napona, dok se za upravljanje glavnih tranzistora (MOSFETa ili IGBTova) koriste izolirani
upravljači vrata.
Ključne riječi: asinkroni motor, FPGA, digitalni fitler, izolacija, upravljanje
1
Analysis of different principles of controlling induction motor
Summary
The purpose of this work was comparison of different options for controlling induction
motor. Digital filter was one of main focuses, because use of digital filters in electro motor
control is highly beneficial in terms of cost and performance. Sinc filter was implemented
in Verilog for FPGA chip. Different algorithms and methods of induction motor control
are described, especially sensorless algorithms. Use of sensorless algorithms in control of
induction motor lowers the cost of control system of induction motor and provide more
flexible use in practice. Proposed architecture in this paper use FPGA, which adds to safety
and protection. Digital filters are implemented on FPGA.
Implementation of sensorless algorithm was done on opensource VESC platform. In
addition to that electric schemewas designed for control of inductionmotor, withmax voltage
of 600V and max current of 50A, as proposition for improvement of VESC hardware. With
usage of isolated ADC’s safe measurement of high voltage is provided. Isolated gate drive
for MOSFET’s and IGBT’s is used so we can ensure maximum safety.
Key words: induction motor, FPGA, digital filter, isolation, contorl
1
SADRŽAJ
Sažetak 1
1 UVOD 5
2 ASINKRONI MOTORI 7
2.1 Nadomjesna shema asinkronog elektromotora . . . . . . . . . . . . . . . . 9
2.2 Clarkova transformacija . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3 Parkova transformacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3 UPRAVLJANJE ASINKRONIMMOTORIMA 12
3.1 Skalarna V/Hz metoda . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2 Vektorska kontrola . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2.1 FOC kontrola zasnovana na ulančanom magnetnom toku . . . . . 13
3.2.2 Senzorska kontrola . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2.3 Bezsenzorska kontrola . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.3.1 ”Promatrač” . . . . . . . . . . . . . . . . . . . . . . . . 17
3.3 Vektorska modulacija napona . . . . . . . . . . . . . . . . . . . . . . . . . 18
2
4 FPGA 21
5 DELTASIGMA ANALOGNO DIGITALNI PRETVORNIK 23
5.0.1 Manchester kodiranje . . . . . . . . . . . . . . . . . . . . . . . . . 24
6 DIGITALNI FILTERI 27
7 IMPLEMENTACIJA VEKTORSKE FOC KONTROLE ASINKRONOG
MOTORA 30
8 ZAKLJUČAK 34
LITERATURA 35
POPIS SLIKA 37
POPIS TABLICA 39
PRILOZI 40
1. Prilog 1 Električna shema predloženog upravljača elektromotora 1
2. Prilog 2 Shema LTSpice simulacije vektorske modulacije napona 11
3. Prilog 3 Manchester dekoder 12
3..1 Manchester dekoder Verilog kod . . . . . . . . . . . . . . . . . . . . . . . 12
3..2 Manchester dekoder Verilog test kod . . . . . . . . . . . . . . . . . . . . . 14
4. Prilog 4 sinc3 filter 16
3
4..1 sinc3 Verilog kod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4..2 sinc3 Verilog test kod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4
1. UVOD
Električni motor ili elektromotor je stroj koji pretvara električnu energiju u mehanički
rad. Elektromotori koriste djelovanje magnetskih polja na električni vodič kojim teče
električna struja. U uporabi je mnogo vrsta i izvedbi elektromotora, i danas su najviše
korišteni pogonski strojevi u gotovo svim područjima ljudske djelatnosti; u kućanstvu,
industriji, prometu (hladnjaci, perilice, lokomotive, tramvaji, električni automobili i sl.).
Upravljanje je jedna on najbitnijih stvari kada su u pitanju elektromotori. Ono se danas
vrši sa algoritmima koji su omogućili odlične karakteristike elektromotora u vidu odziva,
početnog momenta itd.. Sa modernim sustavima upravljanja elektromotorima, možemo
unaprijediti postojeća industrijska postrojenja uz relativno mali trošak, tj. bez mijenjanja
elektromotora, nego samo dodavanjem boljeg upravljanja elektromotorom. Danas imamo
mnogo načina upravljanja, a sve ih možemo podijeliti na skalarne i vektorske.
Skalarno upravljanje je jedno od najstarijih metoda koja se koristi i dalje, radi svoje
jednostavnosti, cijene i prihvatljivih nedostataka u odnosu na moderne metode.
Današnja moderna metoda, koja se vrlo često koristi, je vektorsko upravljanje koje
možemo podijeliti na upravljanje direktno momentom (engl. Direct Torque Control DTC),
te vektorsko upravljanje zasnovano na ulančanom magnetnom toku (engl. Fieldoriented
Control FOC).
U ovome radu će se opisati navedene metode, te njihova primjena i algoritmi, kao i
različite iteracije istih algoritama od kojih svaka ima svoje mane i prednosti. Također će
biti opisane prednosti primjene FPGA integriranog kruga i digitalnih filtera kod upravljanja
elektromotorima. Takva arhitektura primjenom FPGA integriranog kruga i digitalnih filtra
kod upravljanja elektromotorima je dizajnirana i simulirana u ovom radu. Implementacija
5
bezsenzorskog algoritma je izvedena preko platforme otvorenog koda VESC. Uz to je dan
prijedlog poboljšanja, sa shemom za upravljač elektromotorima, baziran na VESC platformi,
i to za kontrolu asinkronog motora, maksimalnog napona 600V i maksimalne struje 50A.
6
2. ASINKRONI MOTORI
Indukcijski elektromotor ili asinkroni elektromotor ima rotirajući dio (rotor) na koji
se električna nergija prenosi indukcijom, pod djelovanjem okretnog magnetskog polja koje
stvara sustav višefaznih struja u statoru.
Prema izvedbi rotorskog namota dijele se na kavezne i kliznokolutne elektromotore.
Ovakvi električni strojevi su jednostavne konstrukcije i pouzdani u pogonu, pa se i najčešće
koriste u svim vrstama elektromotornih pogona. Princip rada asinkronih elektromotora
je takav da stator proizvodi okretno magnetno polje koje se vrti brzinom frekvencije
napona/struje koju dovedemo na stezaljke statorskih izvoda. Rotor asinkronog elektromotora
u motornom režimu rada se uvijek vrti sporije od statorskog magnetnog polja, dok je kod
generatorskog režima rada klizanje veće od jedan. Radi ovoga se magnetno polje statora
rotira relativno u odnosu na rotor. Zbog ove relativne brzine postoji indukcijska sprega
između statora i rotora, koja proizvodi struju u rotoru. Struje u rotoru proizvode magnetno
polje, koje se radi Lorentzovog zakona opire statorskom polju. Iz tog razloga da bi se struja
rotora oduprla izvoru, rotor se krene okretati u smjeru statorskog okretnog magnetnog polja.
Rotor krene ubrzavati do blizu sinkrone brzine, ali nikada ne dostigne sinkronu brzinu, jer
tada ne bi postojalo indukcije magnetnog polja rotora, a samim time i momenta. Ovu razliku
u brzini između rotora i sinkrone brzine nazivamo klizanje.
Asinkroni elektromotori su po tome i dobili naziv, jer brzine magnetnog polja statora
i mehanička brzina rotora nisu jednake. Formula za klizanje je jednaka razlici sinkrone i
trenutne brzine podijeljena sa sinkronom brzinom.[9]
s =ns − n
ns
(2.1)
Gore navedene brzine su svedene na mehaničke brzine, gdje je s klizanje, ns sinkrona
brzina, n brzina rotora elektromotora. Brzinu okretnog magnetnog polja statora možemo
7
izračunati preko frekvencije statorske struje.
ωel = 2 ∗ π ∗ f (2.2)
Veza između brzine okretnog polja statora ωel i sinkrone brzine rotora je broj pari polova p.
ωs = ωel ∗ p (2.3)
Na kraju sve možemo preračunati u mehaničku brzinu okretaja po minuti.
ns =120 ∗ f
p(2.4)
Gdje je f frekvencija struje, p broj pari polova, a ns mehanička brzina rotora izražena u
okretajima po minuti (okr./min.).
Indukcijski/asinkroni elektromotor je danas vrlo često upotrebljavan elektromotor,
osobito u industriji. Razlog tome je relativno niska cijena i robusnost samog stroja. Najčešće
primjenjivani asinkroni elektromotor je asinkroni elektromotor kaveznog tipa. Naziv je
dobio prema rotorskom namotu koji se sastoji od neizoliranih i kratko spojenih aluminijskih
vodiča raspoređenih po obodu željezne jezgre rotora, što izgleda slično kavezu.[7] Kako
Slika 2.1: Kavezni rotor asinkronog elektromotora.
rotor izgleda kao kavez, takav elektromotor nazivamo kaveznim elektromotorom. Drugi tip
asinkronih elektromotora, koji je gore spomenut, je kliznokolutni asinkroni elektromotor.
Ovakva izvedba asinkronog elektromotora ima rotorske namote spojene preko kliznih koluta
na vanjske otpornike. Vanjski otpornici služe za smanjenje startne struje, te struje tokom
8
rada. Prilikom starta, kliznokolutni elektromotor ima namote rotora spojene na vanjski
napon, preko otpornika. Nakon što elektromotor dosegne punu brzinu, namoti rotora
se odspoje od vanjskog napona, te se ukratko spoje. Upravo iz ovoga razloga početni
moment kliznokolutnog asinkronog elektromotora je dosta velik. Vanjski otpornici se
mogu koristiti za jednostavnu izvedbu kontrole brzine ove vrste elektromotora. Danas
ovaj tip elektromotora nalazi primjenu gdje je bitna cijena i iznimna robusnost, iako sve
rijeđe, jer je današnje upravljanje asinkronih elektromotora, konkretno kaveznog asinkronog
elektromotora, premostilo sve dobre strane klizno kolutnog elektromotora.
Slika 2.2: Shema klizno kolutnog elektromotora statički model.[7]
2.1. Nadomjesna shema asinkronog elektromotora
Na Slici 2.2 nadomjesna shema asinkronog elektromotora. Ovdje je R1 otpor
statorskog namota, X1 rasipni induktivitet statora, Xm induktivitet gubitaka jezgre, R0
otpor gubitaka u jezgri. X2 je induktivitet rotora reduciran na stranu statorske strane, te R2
otpor rotora, Rst otpor rotora ovisan o klizanju. R2 i Rst možemo zajedno napisati kao
R2 =R2
s. Iz nadomjesne sheme možemo napisati da je ukupna struja elektromotora jednaka:
Is =U
Zeq
(2.5)
Gdje je Is statorska struja, U narinuti napon na statoru, a Zeq ekvivalentni otpor kruga.
Iz nadomjesne sheme možemo vidjeti da kako se povećava klizanje, tako raste struja rotora,
a struja statora se smanjuje.
9
Slika 2.3: Shema klizno kolutnog elektromotora.[7]
Snaga elektromotora za sve tri faze je:
Pf3 = 3 ∗ I2s (1− s
s)R
′
2 (2.6)
, a moment je:
M =Pf3
ω(2.7)
U realizaciji upravljanja asinkronog elektromotora, javlja se povećana potreba za
transformacijom struja, napona i ulančanih tokova statora i rotora, iz trofaznog sustava u
dvofazni i obratno. Također postoji potreba za prebacivanjem iz različitih koordinatnih
sustava, rotorskog, statorskog i rotirajućeg.
2.2. Clarkova transformacija
Da bi mogli raditi gore navedene transformacije potrebna nam je Clarkova
transformacija. Ona se temelji na tome da tri struje vektora a,b,c, možemo prikazati kao
dva vektora α i β, s tim da je suma vektora is jednak za oba sustava.[17]
α = a (2.8)
β =(b− c)√
3(2.9)
Također možemo napisati:
is = iα + jiβ =2
3(ias + aibs + a2ics) (2.10)
10
2.3. Parkova transformacija
Pomoću Parkove transformacije dobijemo vrijednosti vektora rotirajućeg sustava.[17]
Transformacija se vrši na α,β vektorima te dobijamo d,q vektore.
id = iα ∗ cos(θ)λ + iβ ∗ sin(θ)λ (2.11)
iq = −iα ∗ sin(θ)λ + iβ ∗ cos(θ)λ (2.12)
Povratna transformacija je također vrlo jednostavna, s tim da su ove jednadžbe napisane u
naponskom obliku:
vα = vd ∗ cos(θ)λ − vq ∗ sin(θ)λ (2.13)
vβ = vd ∗ sin(θ)λ + vq ∗ cos(θ)λ (2.14)
11
3. UPRAVLJANJE ASINKRONIMMOTORIMA
Postoji više metoda za upravljanje asinkronog motora. Možemo ih podijeliti u dvije
osnovne skupine:
• Skalarnu
• Vektorsku
3.1. Skalarna V/Hz metoda
U skalarnoj V/Hz metodi, brzina asinkronog motora se kontrolira pomoću amplitude i
frekvencije napona statora, tako da se magnetni tok u zračnom rasporu održava na željenoj
vrijednosti. Ova metoda se može jednostavno objasniti preko pojednostavljene nadomjesne
sheme statičkog stanja. Može se uzeti da je radni otpor statora jednak nuli, i da je rasipni
induktivitet statora ugrađen u rasipni induktivitet rotora.[9] Tako da se može pisati:
Im≈Vs
jωLm
(3.1)
Ako je elektromotor u linearnom području, Lm je konstanta, tako da se može pisati[7]:
Im =Vs
(2πf)Lm
=Ψ
Lm
(3.2)
Gdje je Ψ magnituda statorskog toka. Iz ovoga se vidi da ako se odnos V/Hz drži
konstantnim, tada će i tok ostati konstantan.
Ova metoda upravljanja asinkronim elektromotorom se može primijeniti sa otvorenom
petljom, kao što je prikazano na Slici 3.2, ili se može primijeniti u zatvorenoj petlji, gdje
je povratna informacija brzina i struja asinkronog elektromotora.[2] Slika 3.3 prikazuje
12
Slika 3.1: Asinkroni motor statičko stanje[9]
karakteristiku ovisnosti brzine tereta umirovanju, i pogonu kad je spojen nekakav teret. Kako
se V/Hz postepeno povećava, tako proporcionalno raste i brzina, a krivulja momentna ostaje
konstantna, što se može vidjeti iz točaka od 1 do 7. Ova vrsta tereta mijenja moment ovisno o
brzini što se također vidi na točkama od 1 od 7. Nakon što elektromotor dosegne maksimalni
nazivni napon, dalje možemo povećavati samo frekvenciju, što dovodi do slabljenja polja. To
vidimo na točkama od 5 do 7. Također možemo primijetiti da prilikom ovog efekta slabljenja
polja, krivulja momenta se smanjuje, tj. maksimalni moment za brzinu poviše nazivne je
manji.[9]
3.2. Vektorska kontrola
Vektorska metoda upravljanja elektromotorom dalje može podijeliti na FOC (engl.
Field Oriented Control) upravljanje zasnovano na ulančanom magnetnom toku, te DTC
(engl. Direct Torque Control) izravna kontrola momenta.
3.2.1. FOC kontrola zasnovana na ulančanom magnetnom toku
Vektorska kontrola motora FOC (engl. Field Oriented Control) je metoda upravljanja
statorskih struja trofaznog asinkronog/sinkronog elektromotora sa dvije ortogonalne
vektorske komponente. Jedna komponenta definira magnetski tok motora, a druga moment.
Uređaj koji upravlja elektromotorom na osnovu zadane brzine i/ili momenta upravlja sa ovim
komponentama, kako bi se postigao željeni rezultat. Iako je prijedlog za vektorsku regulaciju
postoji još od 1968. godine, njegova primjena je tek započela pojavom mikrokontrolera,
13
Slika 3.2: Blok shema V/Hz metode s otvorenom petljom[4]
početkom 1980. godine.
Vektorsko upravljanje motora temelji se na regulaciji momenta nezavisno uzbuđenog
istosmjernog motora. Upravljanje nezavisno uzbuđenog istosmjernog motora sastoji se od
upravljanja dva zasebna kruga, uzbudnog i armaturnog, tj. upravljanjem dvije zasebne
struje; struje armature i struje uzbude. To znači da je moment upravljan strujom armature,
a magnetni tok rotora strujom uzbude. Ovi tokovi kod asinkronog motora su okomiti,
pa možemo reći da su raspregnuti. Ovakav način upravljanja može se implementirati
kod asinkronih motora, ako se upravljanje promatra sa referentnog okvira rotirajućeg
koordinatnog sustava, gdje se sinusne varijable pojavljuju kao istosmjerne varijable Id i Iq.
Kao što je prikazano na Slici 3.5. Da bi izračunali varijable rotirajućeg sustava d,q, prvo se
treba izračunati dvofazne varijable statorskog sustava α i β[9]. Varijable α i β se računaju iz
statorskih struja/napona preko Clarkove transformacije. Zatim se iz statorskih varijabli α i β
preko Parkove transformacije računa struja/napon d,q. Obzirom da je asinkroni elektromotor
zatvorena strujna petlja, mogu se mjeriti samo dvije struje, a treću možemo proračunati iz
zbroja dvije izmjerene struje. Kao što je već navedeno, upravljanje se vrši preko rotirajućih
14
Slika 3.3: Karakteristika momenta u odnosu na brzinu pri promjeni frekvencije, teretnog
momenta i napona[4]
veličina d,q gdje je Iq struja momenta, a Id struja magnetnog polja, što se može vidjeti sa
Slike 3.6.
Vektorska kontrola upravlja sa ove dvije veličine, pri tome struja Id treba biti konstanta,
a Iq treba odgovarati iznosu momenta tj. snage. Kada ”korisnik” povećava iznos tj. traži od
elektromotora veću snagu, ono što kontroler treba napraviti je da poveća struju Iq tj. moment,
a samim time i snagu jer je:
P = ω ∗M (3.3)
3.2.2. Senzorska kontrola
Kao što je prikazano na Slici 3.6, kako bi se moglo proračunati potrebnu struju Iq s
obzirom na zahtjev ”korisnika”, mora se poznavati trenutačna brzinu rotora. Ta informacija
se može dobiti preko ”promatrača”, što je prikazano na Slici 3.6. Kako bi se vrijednosti
d,q proračunale iz vrijednosti α, β, mora se poznavati kut rotora. Umjesto ”promatrača”,
senzorska kontrola koristi enkoder koji nam omogućuje preciznu brzinu i kut rotora.
15
Slika 3.4: Blok dijagram FOC algoritma Blaschke 1971 US patent[3]
Slika 3.5: Vektorski dijagram[11]
3.2.3. Bezsenzorska kontrola
Glavna stvar kod bezsenzorske kontrole je pokušati dobiti iz vrijednosti struje i napona
asinkronog motora, vrijednost pozicije rotora i brzine rotora, kako bi ih mogli primijeniti u
FOC algoritmu, kao što je prikazano na Slici 3.6.
16
Slika 3.6: Bezsenzorski FOC algoritam[8]
3.2.3.1. ”Promatrač”
”Promatrač” je dio FOC algoritma koji izračunava kut zakreta rotora. Algoritmi koji
se koriste su:
• Rotorski model
• Statorski model
• MRAS observer
• Kalman filter
Rotorski model se dobije iz diferencijalne jednadžbe rotorskog namota. Algoritam se
može implementirati sa statorskih koordinata ili koordinata rotirajućeg polja.[8]
τrdΨr
dτ+Ψr = jωτrΨr + lmis (3.4)
Ulančano magnetno polje rotoraΨ(S)r se može izračunati preko statorskih koordinata kako je
prikazano na slici 3.7. Argument od Ψr jednak je kutu rotorskog polja δ.
Ψ(S)r = Ψrcos(δ) + jΨrsin(δ) = Ψrα + jΨrβ (3.5)
Oba signala Ψrα i Ψrβ se dobiju preko slijedećih funkcija.
δ = arctanΨrβ
Psirα(3.6)
Ψr =√Ψrβ
2 + Psirα2 (3.7)
17
Slika 3.7: Rotorski model u statorskim koordinatama
3.3. Vektorska modulacija napona
Vektorskamodulacija napona SVM (engl. Space VectorModulation) je predstavljanje
trofaznih veličina a,b,c s pomakom od 120. S obzirom na topologiju koja je prikazana na
Slici 3.8 ima 8 mogućih kombinacija vektora. S obzirom na način na koji se koriste ovi
vektori možemo smanjiti/povećati harmonike i/ili gubitke. Referenti napon Vref se uzorkuje
Slika 3.8: Topologija trofaznog invertera
sa vremenomuzorkovanjaTs. Za vrijeme perioda uzorkovanjaVref se rekonstruira na temelju
najbližih vektora heksagona i nulvektora.[17]
Vref = Vx ∗ T1 + Vy ∗ T2 + Vnull ∗ T0 (3.8)
Gdje je Vx vektor sa najmanjim kutom, a Vy vektor sa najvećim kutom kao što je prikazano
na Slici 3.9.
Pošto se kao izbor pojavljuju dva nulvektora, može se odlučiti koji ćemo odabrati. Za
motor nije bitno koji se nulvektor odabere, jer će motor uvijek vidjeti sinusnu struju. Jedina
razlika je ta da prilikom odabira V0 vektora u odnosu na V7 mogu se smanjiti sklopni gubitci
kao što je prikazano na Slici 3.10. Vektorskamodulacija napona je simulirana preko LTSpice
18
Slika 3.9: Svih osam mogućih vektora[17]
Slika 3.10: Vektorska modulacija razlika izmedu korištenja nulvektora[17]
programa za simulaciju, a sama shema se nalazi u Prilogu 2. Na Slici 3.11 je prikazan rezultat
simulacije koji nam prikazuje signale prije modulatora VmodA, VmodB, VmodC .
19
Slika 3.11: Vektorska modulacija LTSpice simulacija
20
4. FPGA
FPGA (engl. Field Programmable Gate Array) je integrirani krug dizajniran tako
da korisnik može raditi promjenu u njemu nakon izrade. FPGA je sastavljen od niza malih
logičkih jedinica poznatih kao LUTovi (engl. Lookup Table), kao što je prikazano na Slici
4.1. Logičke jedince se sastoje od neke kombinacije I (engl. AND) i XILI (eng. XOR), ili
nekih drugih kompleksnih digitalnih elemenata. Ove logičke jedince se mogu povezivati
po želji korisnika, te se tako se mogu dobiti vrlo kompleksni algoritmi. FPGA integrirani
krugovi se programiraju sa takozvanim hardverskim opisnim jezicima HDL (engl. Hardware
Description Language). Primjeri takvih vrsta jezika su Verilog, VHDL te SystemVerilog.
Najznačajnija osobina FPGA integriranog kruga je mogućnost definiranja hardvera
po želji korisnika. U konkretnom slučaju upravljanja elektromotorom, to nam omogućuje
da neželjene radnje (paljenje dva tranzistora koji se ne bi smjeli istovremeno otvoriti jer
stvaraju kratki spoj) i greške (prevelika struja, napon itd.) otklone tj. registriraju se vrlo brzo,
osobito u odnosu na mikrokontroler. Također, implementacija zaštite tranzistora i motora u
FPGA integriranom krugu se tehnički smatra kao hardverska implementacija. Iz tog razloga
sigurnost i zaštite su na visokom nivou. Ovakva implementacija omogućuje da zaštita radi,
bez obzira na to koji program je stavljen u mikrokontroler.
Moderni FPGA integrirani krugovi danas u sebi imaju ugrađene i DSP (engl. Digital
Signal Processing) blokove, tako da je i filtriranje ulaznih digitalnih signala struje i napona
vrlo brzo i efikasno. Sa ovime su se oslobodili resursi mikrokontrolera, te mu omogućeno da
obavlja druge zadatke.
21
Slika 4.1: Arhitektura FPGA integriranog kruga (Lattice ice40UP)[15]
22
5. DELTASIGMA ANALOGNO DIGITALNI PRETVORNIK
Deltasigma modulacija je metoda kodiranja analognih signala u digitalne signale kao
ADC analogno digitalni pretvornik (engl. AnalogDigital Converter). Također se koristi i
kaometoda za dekodiranje digitalnih signala u analogne signale kaoDAC digitalno analogni
pretvornik (engl. DigitalAnalog Converter).
Prvi korak deltasigma ADCa je delta modulacija. Delta modulacija ne prikazuje
apsolutnu vrijednost signala nego njegovu razliku u odnosu na prethodni signal. Modulator
Slika 5.1: Delta modulator shema[14]
je napravljen tako da kvantizator konvertira razliku između ulaznog signala i usrednjenog
signala iz prijašnjeg koraka. Kvantizator se može izvesti kao komparator koji je referenciran
prema nuli. Takav komparator na izlazu daje 1 i 0 ovisno o tome je li ulazni signal pozitivan ili
negativan. Rezultat ovoga je niz pulseva. Ako se ovaj niz pulseva integrira, te provede kroz
nisko propusni filter, dobijemo ulazni signal. U delta ADCu preciznost može se povećati
tako da se doda 1bitni DAC, te se doda rezulatat integracije izlaznog signala delta modulacije
u ulazni signal, te se time smanji greška proizvedena delta modulacijom. Ovaj korak se
naziva sigma i sa time se dobije deltasigmaADC.[1] Da bi mikrokontroleri i ostali integrirani
krugovi mogli razumijeti i manipulirati digitalnim podacima proizvedenim deltasigmaADC
om, kao izlaz trebamo imati takt pri kojem ADC vrši operacije, te izlaz samog ADCa.
23
Slika 5.2: Principijelna shema deltasigma analognodigitalnog pretvornika[14]
5.0.1. Manchester kodiranje
Ponekad se radi smanjenja kompleksnosti ili radi olakšanja izvedbe moguće koristiti
kodiranje signala u kojem se takt i podaci prenose zajedno. Primjer takvog kodiranja
je Manchester kodiranje. Manchester kod se temelji na tome da su bitovi predstavljeni
Slika 5.3: Dijagram Manchester kodiranja[10]
prijelazima iz 0 u 1 i obratno. Kod originalnog G.E Thomas koda prijelaz iz 0 u 1 predstavlja
0, a prijelaz iz 1 u 0 predstavlja 1. Dok po IEEE802.4 standardu je obratno, prijelaz iz 1 u 0
predstavlja 0, a prijelaz iz 0 u 1 predstavlja 1. Radi toga Manchester kod uvijek ima prijelaz
na sredini svakoga bita. Ova vrstma kodiranja se primjenjuje kod prijenosa signala preko
galvanske izolacije jer istosmjerna komponenta ne ovisi o ulaznom signalu.[10] Manchester
kodiranje se može primjeniti uz pomoć XILI ekskluzivno ILI vrata (engl. (XOR)). Jedan od
načina dekodiranja se bazira na principu da se iz signala zasebno dobiju takt i podaci. Radi
primjene FPGA integriranog kruga treba implementirati dekodiranje koje je prilagođeno za
hardversku implementaciju koja najviše odgovara FPGA integriranom krugu. Jedan takav
algoritam je baziran na tome da je vrijednost predstavljena u prvoj polovici vremena bita,
24
Podaci Takt Manchester kod
0
XOR
0 0
1 1
10 1
1 0
Table 5.1: Manchester kodiranje IEE802.4
Slika 5.4: Dekodiranje Manchester koda[16]
prije nego li se dogodi tranzicija. Ako se pokrene brojač koji je jednak 3/4 vremena takta, na
početku tranzicije, vrijednost koja će se dobiti kada brojač završi je vrijednost sljedećeg bita.
Potrebno vrijeme se može dobiti iz razlike vremena između dva najbliža brida.[16] Dobijeno
vrijeme je jednako polovici vremena takta. Ovaj algoritam je implementiran u Verilogu:
Kod 5.1 : Dekodiranje Manchester podataka
/ / Dekod i r a n j e poda t aka
a lways @( posedge c l k _ i n )
beg in
/ / P o c e t i b r o j a n j e na poz i t i vnom i nega t ivnom rubu
i f ( ( ( ! mdi1 && mdi2 ) | | ( ! mdi2 && mdi1 ) ) && c l k == 1 ’ b0 )
beg in
c l k <= ~ c l k ;
end
/ / 3 / 4 t a k t a
25
i f ( c l k > 0)
beg in
i f ( coun t < de l a y )
beg in
coun t ++;
end
e l s e
beg in
n r z <= ~mdi ;
coun t <= 0 ;
c l k <= ~ c l k ;
end
end
end
endmodule
Ovaj algoritam smo također i simulirali što je prikazano na Slici 5.5
Slika 5.5: Rezultat Verilog simulacije
26
6. DIGITALNI FILTERI
Digitalni filter je sistem koji vrši matematičke operacije nad uzorkovanim diskretnim
signalom kako bi smanjio ili poboljšao dijelove tog signala. Digitalni filter se većinom
sastoji od ADCa koji uzorkuje signal, te FPGA, ASIC, DSP ili MCU koji vrše potrebne
matematičke operacije nad digitalnim signalom kako bi ga mogli filtrirati. Karakteristika
digitalnog filtera se može prikazati preko prijenosne funkcije u zdomeni.
H(z) =B(z)
A(z)(6.1)
B(z) i A(z) su polovi tj. nule te iste prijenosne funkcije. U praksi postoje i koriste se dvije
vrste digitalnih filtera. IIR beskonačni impulsni odziv (eng Infinite Impulse Response) i
FIR konačni impulsni odziv (engl. Finite Impulse Response) digitalni filteri. FIR filtri su
takvi da im je odziv na konačni impuls takav da ima konačno trajanje. IIR filteri mogu na
isti impuls imati beskonačan odziv zbog unutarnjeg pojačanja.[12] Kao što vidimo sa slike,
Slika 6.1: FIR filter u diskretnom vremenu[13]
FIR filter ne treba nikakvu povratnu vezu, te je posljedično radi toga stabilan. To je glavna
prednost FIR filtra u odnosu na IIR filter. Problem FIRa je zahtijevanje velike procesorske
moći u odnosu na IIR filter iste selektivnosti i oštrine. Sa zahtjevom velike procesorske moći
27
također dolazi do velike latencije FIR filtera, dok IIR za iste uvjete ima manju latenciju.[13]
Prilikom dizajniranja FIR filtera imamo mogućnost koristiti sljedeće metode:
• Metoda dizajna ”prozorima”
• ParksMcClellan metoda
• Metoda frekvencijskog uzorkovanja
• Metoda najmanje srednje kvadratne pogreške
Ovdje se može naići na još jednu prednost IIRa, a to je taj da za dizajniranje IIRa ne trebaju
se koristiti nove metode, nego se mogu uzeti postojeće metode za dizajniranje analognih
filtera.[13] Nakon dizajniranja u analognoj domeni, prijenosna funkcija analognog filtera se
može prebaciti u digitalnu domenu preko:
• Bilinearne transformacije
• Prebacivanje polova i nula iz Laplaceove s u zdomenu
Slika 6.2: IIR filter u diskretnom vremenu[5]
Filter koji je vrlo jednostavan i praktičan za primjenu za izlaz deltasigma ADCa je sinc filter.
Sinc filter se se ponaša kao idealni nisko propusni filter, te ima linearni fazni odziv. Odziv
ovog filter na impulsu funkciju u vremenskoj domeni je matematička sinc funkcija.[6]
sinc(x) =sin(x)
x(6.2)
28
Još jedna bitna značajka ovoga filtera je njegova brzina, čime se rješava potreba da
filter ima što manji vremenski zaostatak za realnim vrijednostima, što je vrlo bitno kod
upravljanja elektromotorom. Ovaj filter smanjuje broj uzoraka deltasigma ADCa, što
nam je potrebno, jer se time na izlazu iz filtera dobije višebitna riječ tj. vrijednost signal
u tom trenutku.[1] (ulaz je samo 1 bit). Kod je implementiran u Verilogu, i simuliran
simulatorom IcarusVerilogu. Na slici je prikazan digitalni signal koji je interpoliran u
Slika 6.3: Rezultat filtriranja sinc3 filterom
programu GTKWave.
29
7. IMPLEMENTACIJA VEKTORSKE FOC KONTROLE ASINKRONOG
MOTORA
Implementacija upravljanja je izvedena sa VESC (engl. Vedder Electric Speed
Control) platformom otvorenog koda za upravljanje BLDC/PMSM (engl. Brushless
Direct Current Motor/Permanent Magnet Syncronus Motor). Na ovoj platformi algoritam
”promatrača” za BLDCmotor je zamijenjen sa algoritmom koji radi sa asinkronim motorima.
Algoritam koji je primjenjen je jednostavni ”promatrač”, baziran na rotorskom modelu.
Najučestaliji način bezsenzorske kontrole je preko statorskog ulančanog magnetskog
polja, koje se računa preko mjerenja struja i napona statora. Algoritam radi na principu
integriranja statorskog napona Vqds i iz njega se dobije ulančano magnetno polje statora.
Ψ(αβs) =∫(Vαβs − RsIαβs) (7.1)
Sljedeća potrebna stavka je izračun ulančanog magnetnog polja rotora, koje se vrši na
slijedeći način:
Ψ(αβs) =Lr
Lm
(Ψ(αβs)− L′
si′
αβs)) (7.2)
Gdje je Lr induktivitet rotora, Lm međuinduktivitet rotora i statora,Rs otpor statora. Kut
zakreta rotora na kraju dobijemo iz sljedeće jednadžbe:
θ = arctan(Ψβ
Ψα
) (7.3)
Kod 7.1 : ”Promatrač” baziran na rotorskom modelu
vo id o b s e r v e r _ u p d a t e ( f l o a t v_a lpha , f l o a t v_be ta , f l o a t i _ a l p h a , f l o a t
i _ b e t a ,
f l o a t dt , v o l a t i l e f l o a t *x1 , v o l a t i l e f l o a t *x2 ,v o l a t i l e f l o a t *phase , v o l a t i l e m o t o r _ a l l _ s t a t e _ t *motor )
30
v o l a t i l e mc_ c on f i g u r a t i o n *conf_now = motor −>m_conf ;
c o n s t f l o a t L = ( 3 . 0 / 2 . 0 ) * conf_now −> foc_mo to r _ l ;
f l o a t R = ( 3 . 0 / 2 . 0 ) * conf_now −> foc_mo to r_ r ;
/ / S a t u r a t i o n compensa t i on
c o n s t f l o a t s i g n = ( motor −>m_moto r_ s t a t e . i q * motor −>m_moto r_ s t a t e . vq
) >= 0 . 0 ? 1 . 0 : −1 . 0 ;
R −= R * s i g n * conf_now −> foc_sa t_comp * ( motor −>m_moto r_ s t a t e .
i _ a b s _ f i l t e r / conf_now −> l _ cu r r e n t _max ) ;
/ / Tempera tu r e compensa t i on
c o n s t f l o a t t = m c _ i n t e r f a c e _ t emp _mo t o r _ f i l t e r e d ( ) ;
i f ( conf_now −>foc_temp_comp && t > −25 .0 )
R += R * 0 .00386 * ( t − conf_now −>foc_temp_comp_base_temp ) ;
f l o a t r o t o r _ f l u x _ a l p h a = 0 . 0 ;
f l o a t r o t o r _ f l u x _ b e t a = 0 . 0 ;
f l o a t c o s _ r o t o r = 0 . 0 ;
f l o a t s i n _ r o t o r = 0 . 0 ;
c o n s t f l o a t L_ia = L * i _ a l p h a ;
c o n s t f l o a t L_ib = L * i _ b e t a ;
c o n s t f l o a t R_ia = R * i _ a l p h a ;
c o n s t f l o a t R_ib = R * i _ b e t a ;
c o n s t f l o a t lambda_2 = SQ( conf_now −> f o c _mo t o r _ f l u x _ l i n k a g e ) ;
c o n s t f l o a t gamma_half = motor −>m_gamma_now * 0 . 5 ;
c a s e FOC_OBSERVER_ORTEGA_ITERATIVE :
f l o a t LrLm = . 5 ;
f l o a t s t a t o r _ f l u x _ a l p h a = v_a lpha − R_ia ;
f l o a t s t a t o r _ f l u x _ b e t a = v_be t a − R_ib ;
/ / I n t e g r a t e
s t a t o r _ f l u x _ a l p h a = s t a t o r _ f l u x _ a l p h a * d t ;
s t a t o r _ f l u x _ b e t a = s t a t o r _ f l u x _ b e t a * d t ;
r o t o r _ f l u x _ a l p h a = LrLm * ( s t a t o r _ f l u x _ a l p h a − L_ia ) ;
r o t o r _ f l u x _ b e t a = LrLm * ( s t a t o r _ f l u x _ b e t a − L_ib ) ;
*x1 += s t a t o r _ f l u x _ a l p h a ;
31
*x2 += s t a t o r _ f l u x _ b e t a ;
b r e ak ;
d e f a u l t :
b r e ak ;
UTILS_NAN_ZERO(* x1 ) ;UTILS_NAN_ZERO(* x2 ) ;
i f ( phase )
e l s e
*phase = u t i l s _ f a s t _ a t a n 2 ( r o t o r _ f l u x _ b e t a , r o t o r _ f l u x _ a l p h a ) ;
Kod je testiran na VESC platformi. Rezultat je prikazan na Slici 7.1
Slika 7.1: Kut θ ”promatrača” pri 100 okr/min
Drugi dio implementacije je prijedlog kako ovu platformu otvorenog koda pretvoriti
u platformu za kontroliranje visokonaponskih asinkronih elektromotora. Platforma koristi
32
DRV8320 integrirani krug za kontrolu glavnih tranzistora. Ovaj krug ima sigurnosne osobine
poput sprječavanja kratkog spoja na tranzistorima, itd.. Za proračun i upravljanje se koristi
STM32 mikrokontroler koji je ostao i u predloženom dizajnu. DRV8320 se više ne koristi iz
razloga što je njegov maksimalni podnosivi napon 60V.
Ciljana vrijednost za ovaj prijedlog upravljača za asinkrone motore je napon od 600V i
struja od 50A. Zbog tog razloga se koristi Si8273 upravljač vrata za IGBTove i MOSFETe
koji je konstruiran za napone do 2kV, te je logička strana izolirana od upravljačke strane. Ovaj
integrirani krug nema zaštitu od otvaranja dvaju serijskih tranzistora što će izazvati kratki
spoj i uništenje tranzistora. Iz tog razloga je korišten Latticeice40UP FPGA integrirani krug,
koji hardverski omogućuje sprječavanje navedenog slučaja. Zbog velikog napona, mjerenje
napona i struje su izvedena preko AMC1303 izolacijskih ADCova. Postoje dvije različite
verzije izolacijskih ADCova, verzija sa Manchester kodiranjem i druga bez Manchester
kodiranja. Sveukupno ima šest izolacijskih ADCova (za svaku fazu jedan naponski i jedan
strujni). Zbog manjka pinova na korištenom Latticeice40UP FPGA integriranom krugu
koristi se Manchester verzija izolacijskog ADCa.
Unutar samog FPGAa je implementiran sinc filter. Zbog načina rada sinc filtera,
prenaponske i nadstrujne pojave se mogu registrirati i prije nego što filter završi konverziju.
Nakon uočenog neželjenog stanja, FPGA prestaje davati signale prema upravljačima vrata.
Jedna od velikih prednosti primjene FPGAa, a samim time i digitalnih filtera, je ta što
analogni filteri za ovu primjenu moraju biti precizni i stabilni, što diže cijenu proizvoda.
Odabirom digitalnih filtera, ne samo da smo smanjili cijenu, nego smo i izbjegli probleme
uzrokovane korištenjem analognih filtera uslijed starenja komponenti.
Mikrokontroler i FPGA imaju međusobnu komunikacije preko FSMC (engl. Flexible
Static Memory Controller) protokola. Ovo omogućuje bržu i bezbolniju komunikaciju među
njima.
33
8. ZAKLJUČAK
Ovaj rad se fokusirao na predstavljanje metoda za kontroliranje asinkronih
elektromotora, te implementaciji nekih od njih na postojećoj platformi otvorenog koda
VESC.
Kao što je opisano u radu, skalarna metoda bazirana na V/Hz=konst. ima svoje
nedostatake, ali i prednosti, tako da se još primjenjuje u pumpama, ventilatorima gdje
precizna kontrola brzine nije potrebna.
Upotreba digitalnih filtera je iznimo povoljna u slučaju upravljanja elektromotora jer
omogućuje vrlo jednostavnu implementaciju nadstrujne i prenaponske zaštite koja je u ovom
slučaju implementira u FPGA integriranom krugu.
FOC (engl. Field Oriented Control) se bazira na upravljanju zasnovanom na
ulančanom magnetnom toku. Ova metoda upravljanja kompleksan problem svodi na
jednostavniji način upravljanja, vrlo sličan upravljanju nezavisno uzbuđenog istosmjernog
motora, gdje upravljamo sa dvije skalarne struje id i iq.
Većina asinkronih motora u praksi nema ugrađen enkoder koji je prijeko potreban
za upravljač elektromotora baziran na FOC algoritmu, jer mu je za kontrolu potrebna
informacija o trenutnom kutu rotora θ i trenutnoj brzini rotora. Iz ovog razloga bezsenzorski
FOC algoritam je vrlo poželjan u praksi jer omogućuje primjenu upravljača elektromotora
na većem broju elektromotora.
34
LITERATURA
[1] Bonnie Baker. DeltSigma ADCs. URL: https://www.ti.com/analogcircuit/bonnie
bakerebook.html. 10.06.2020.
[2] Nishant Garg Bilal Akin. URL: https : / /www. ti . com/ lit / an / sprabq8 / sprabq8 .pdf.
(26.06.2020).
[3] F Blaschke. Apparatus for fieldoriented control or regulation of asynchronous
machines. URL: https : / / patents . google . com / patent /US3805135A / en. (accessed:
01.09.2020).
[4] Bimal Kumar Bose.Modern Power Electronics and AC Drives. 2002.
[5] CCASL. Infinite impulse response. URL: https : / / en .wikipedia . org /wiki / Infinite
impulseresponse. 05.06.2020.
[6] Gray R.M ChouW. Meng T.H. “Time domain analysis of sigma delta modulation”. In:
Acoustics, Speech, and Signal Processing 3 (1990), pp. 1751–1754. DOI: 10.1109/
ICASSP.1990.115820.
[7] Martin J. Bozidar F. Dinamika Električnih Strojeva.
[8] J. Holtz. “Sensorless control of induction motor drives”. In: 90.8 (2002), pp. 1359–
1394. DOI: 10.1109/jproc.2002.800726.
[9] Texas Instruments. Field Orientated Control of 3Phase ACMotors. URL: https : / /
www.ti.com/lit/an/bpra073/bpra073.pdf. (accessed: 26.06.2020).
[10] Brian Bailey Jatinder Gharoo. Manchester Decoder Using the CLC and NCO. URL:
http://ww1.microchip.com/downloads/en/AppNotes/01470A.pdf. 07.08.2020.
[11] Kompleksni vektor struje statora kod vektorskog upravljanja. URL: https://www.fer.
unizg.hr/_download/repository/DANFOSS_upute.pdf. (accessed: 26.06.2020).
35
[12] Alan S.; OppenheimAlan V.;Willsky and Ian T. Young. Signals and Systems. Prentice
Hall Inc., 1980. ISBN: 0138097313.
[13] Alan V. Oppenheim and Ronald W. Schafer. Digital Signal Processing. URL: https:
//ocw.mit.edu/resources/res6008digitalsignalprocessingspring2011/index.htm.
05.05.2020.
[14] Arifur Rahman. “Assignment on SigmaDelta Modulation”. In: Research gate (2017).
DOI: 10.13140/RG.2.2.30090.36807.
[15] Lattice Semiconductors. FPGA ice40UP. URL: https : / /www. latticesemi . com/en /
Products/FPGAandCPLD/iCE40UltraPlus. (accessed: 16.06.2020).
[16] Signalpro. Manchester Decoder. URL: http : / / www . signalpro . biz / mandec . pdf.
10.09.2020.
[17] David Wilson. Teaching old motors new tricks. URL: https : / / e2e . ti . com/support /
archive/motor/m/pdf_presentations/. (accessed: 01.09.2020).
36
POPIS SLIKA
2.1 Kavezni rotor asinkronog elektromotora. . . . . . . . . . . . . . . . . . . . 8
2.2 Shema klizno kolutnog elektromotora statički model.[7] . . . . . . . . . . 9
2.3 Shema klizno kolutnog elektromotora.[7] . . . . . . . . . . . . . . . . . . 10
3.1 Asinkroni motor statičko stanje[9] . . . . . . . . . . . . . . . . . . . . . 13
3.2 Blok shema V/Hz metode s otvorenom petljom[4] . . . . . . . . . . . . . . 14
3.3 Karakteristika momenta u odnosu na brzinu pri promjeni frekvencije,
teretnog momenta i napona[4] . . . . . . . . . . . . . . . . . . . . . . . . 15
3.4 Blok dijagram FOC algoritma Blaschke 1971 US patent[3] . . . . . . . . . 16
3.5 Vektorski dijagram[11] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.6 Bezsenzorski FOC algoritam[8] . . . . . . . . . . . . . . . . . . . . . . . 17
3.7 Rotorski model u statorskim koordinatama . . . . . . . . . . . . . . . . . . 18
3.8 Topologija trofaznog invertera . . . . . . . . . . . . . . . . . . . . . . . . 18
3.9 Svih osam mogućih vektora[17] . . . . . . . . . . . . . . . . . . . . . . . 19
3.10 Vektorska modulacija razlika izmedu korištenja nulvektora[17] . . . . . . 19
3.11 Vektorska modulacija LTSpice simulacija . . . . . . . . . . . . . . . . . 20
37
4.1 Arhitektura FPGA integriranog kruga (Lattice ice40UP)[15] . . . . . . . . 22
5.1 Delta modulator shema[14] . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5.2 Principijelna shema deltasigma analognodigitalnog pretvornika[14] . . . . 24
5.3 Dijagram Manchester kodiranja[10] . . . . . . . . . . . . . . . . . . . . . 24
5.4 Dekodiranje Manchester koda[16] . . . . . . . . . . . . . . . . . . . . . . 25
5.5 Rezultat Verilog simulacije . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6.1 FIR filter u diskretnom vremenu[13] . . . . . . . . . . . . . . . . . . . . . 27
6.2 IIR filter u diskretnom vremenu[5] . . . . . . . . . . . . . . . . . . . . . . 28
6.3 Rezultat filtriranja sinc3 filterom . . . . . . . . . . . . . . . . . . . . . . . 29
7.1 Kut θ ”promatrača” pri 100 okr/min . . . . . . . . . . . . . . . . . . . . . 32
38
POPIS TABLICA
5.1 Manchester kodiranje IEE802.4 . . . . . . . . . . . . . . . . . . . . . . . 25
39
PRILOZI
40
1.. Prilog 1 Električna shema predloženog upravljača elektromotora
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
A
B
C
D
E
F
A
B
C
D
E
F
Date: KiCad E.D.A. kicad 5.1.6
Rev: Size: A3Id: 1/48
Title: Motor Controler (BLDC, IPM, Induction, SRM)File: motorcontroler.schSheet: /
Sheet: Acceleration input
File: 5v-to-3v.sch
IN+IN-
OUT
Sheet: PowerDRC
File: pwr.sch
Sheet: PSU-15V-isolated
File: 15iso.sch
GND_inVcc_in VCC_out
GND_out
Sheet: sheet61A5EFA4
File: 5v-to-3v.sch
IN+IN-
OUT
Sheet: MCU
File: MCU.sch
USB_D+USB_D-
HALL_1HALL_2
TEMP_MOTOR
PWM_C_B
PWM_B_B
PWM_A_B
FAULT
PWM_C_T
PWM_B_T
PWM_A_T
ADC_9
ADC_8
CAN_RXCAN_TX
LED_RED
LED_GREENADC_TEMP
HALL_3
ADC_15
TEMP_ATEMP_BTEMP_C
MCO2FPGA_RESET
CAN_2_RXCAN_2_TX
V_GATE_DRIVER
ADC_13
SPI3_SCKSPI3_MISOSPI3_MOSI
FSMC_AD4FSMC_AD5FSMC_AD6FSMC_AD7
FSMC_AD2FSMC_AD3
FSMC_CLKFSMC_NOE
FSMC_AD0FSMC_AD1
OT_FAULT
USART3_TXUSART3_RX
USART3_CLK
SPI1_SCK
SPI1_MISOSPI1_MOSI
LED_RED2
PE14PE15
FSMC_NADV
GATE_BGATE_C
GATE_A
BISS_SS
PC14
PC15
PB3
PB10
FPGA_SS
FSMC_NWAIT
OT_FAULT
ADC_TEMP2
Sheet: sheet61A944A7
File: 5v-to-3v.sch
IN+IN-
OUT
Sheet: Gate driver C
File: gate_driver.sch
VOAVOB
PWM_BPWM_T
ENGND_A
Vcc
Sheet: Gate driver B
File: gate_driver.sch
VOAVOB
PWM_BPWM_T
ENGND_A
Vcc
Sheet: BISS interface
File: biss.sch
5V_BISSGND_BISS
BISS_MA+BISS_MA-
BISS_SLO+BISS_SLO-
BISS_CSBISS_CLK
BISS_MISO
Sheet: sheet60C8D6EB
File: current_measurment.sch
I_in I_outDATA
Sheet: Current measurment
File: current_measurment.sch
I_in I_outDATA
Sheet: sheet60CBD4ED
File: current_measurment.sch
I_in I_outDATA
Sheet: CAN
File: CAN.sch
CAN_TXCAN_HCAN_L
CAN_RX
Sheet: Board temeprature
File: temp_board.sch
TEMP
Sheet: Gate driver A
File: gate_driver.sch
VOAVOB
PWM_BPWM_T
ENGND_A
Vcc
Sheet: Power
File: power.sch
5V3V31V2
GND
GND_INV_IN
PWRGD_3V3
Sheet: Hall, Temperature sensor
File: hall_temp.sch
HALL1_INHALL2_INHALL3_IN
MOTOR_NTC+MOTOR_NTC-
HALL3_OUTHALL2_OUTHALL1_OUT
TEMP_OUT
Sheet: CAN2
File: CAN.sch
CAN_TXCAN_HCAN_L
CAN_RX
Sheet: sheet5F4097D6
File: temp_board.sch
TEMP
Sheet: Protect outputs
File: protected_output.sch
IN1IN2IN3
OUT1OUT2OUT3
Sheet: Sheet607E0276
File: ntc_cond.sch
NTC_A+NTC_A-NTC_B+NTC_B-NTC_C+NTC_C-
OT_FAULT
TEMP_ATEMP_BTEMP_C
Sheet: tran_C
File: transistor.sch
DRAIN
SOURCEGATE
Sheet: tran_C
File: transistor.sch
DRAIN
SOURCEGATE
Sheet: tran_B
File: transistor.sch
DRAIN
SOURCEGATE
Sheet: tran_A
File: transistor.sch
DRAIN
SOURCEGATE
Sheet: tran_A
File: transistor.sch
DRAIN
SOURCEGATE
Sheet: tran_B
File: transistor.sch
DRAIN
SOURCEGATE
Sheet: Voltage measurment
File: voltage_measurment.sch
DATAVin+
Vin-
Sheet: sheet6044F055
File: voltage_measurment.sch
DATAVin+
Vin-
Sheet: Board to board connectors
File: connectors.sch
Sheet: FPGA
File: FPGA.sch
RESET
SPI_SISPI_SCK
U_phase_CU_phase_B
I_phase_A
U_phase_A
I_phase_CI_phase_B
PWM_C_B_uCPWM_C_T_uC
PWM_B_T_uCPWM_B_B_uC
PWM_A_B_uCPWM_A_T_uC
PWM_C_BPWM_C_T
PWM_B_TPWM_B_B
PWM_A_BPWM_A_T
TEMP_ATEMP_BTEMP_C
TEMP_A_uCTEMP_B_uCTEMP_C_uC
OT_FAULT
OV_FAULTOC_FAULT
SPI_SO
FAULT
CLKIN
SPI_SS
V_BUS
NOECLK
NADV
OT_FAULT_uC
NWAIT
GATE_A_uCGATE_B_uCGATE_C_uC
GATE_A
GATE_B
GATE_C
AD0AD1AD2AD3AD4AD5AD6AD7
OTFAULTOT_FAULT_uC
Sheet: sheet61A29AE1
File: 5v-to-3v.sch
IN+IN-
OUT
Sheet: sheet60394C70
File: voltage_measurment.sch
DATAVin+
Vin-
Sheet: sheet6010A733
File: voltage_measurment.sch
DATAVin+
Vin-5V_Sense
FB1
BEAD-220Ohm@100MHz
CP3
1000u
12
J3Gate driver
10-30V
12
J2PSU gate driver
22-26V
GND
+3.3V
NT1NT
C12u2
C22u2
CP2
1000u
S2Breaker1
J5BATT-
1 J4BATT+
1
J20B1
J19A 1
J21C
GND
R18 8k2
CP1
1000u
External module
12345
J22Header
GND
12
J18NTC_C
GND+1V2
12
J17NTC_B
12
J16NTC_A
1
23
Q1
IPN70R600P7
C310n
R30 8k2
R14 8k2
+15V
R20 8k2
R12 8k2
GND
GND
GND
+1V2
GND
GND
+3.3V
+15V
+5V
GND
GND
GND
+3.3VA
GND
+3.3V
GND
GND
GND
1234
J15Output
GND
+5V
GND
GNDA
+3.3V
GND
+3.3V
GND
GND
GND
GNDPWR
GND
GNDPWR
GND
D10RB161MM
R16220k
R22220k
R27220k
R1710
DZ13V6
1
23
Q2IPN70R600P7
A
B
C
1
2
3
M1
AC_MOTOR
C4100n
VBUS 1
D- 2D+ 3
ID 4
GN
D5
Shi
eld
6
J13USB_B_Micro F1
500mA
R31 8k2
1234
J12CAN
1234
J11CAN2
1
1011
23456789
J6Motor conector
C5100n
R3510k
R341k
JP1V_IN
GND
1234
J8Brake
R28 8k2
+3.3V
R3222
R3322
S3Breaker
S1Breaker
R1110k
R1010k
GND
R23 8k2
GND
R13 8k2
R19 8k2
R24 8k2
R29 8k2
R25 8k2
R15 8k2
R21 8k2
R26 8k2
+15V
D7
Green
D5
Red
12345
J24SPI
R61k
D6
Red
+5V
D9
Green
D8
Green
R9100
1234
J7Acceleration
R81k
R51k
R71k
1234
J9Sensor1
R11k
D1
RedR21k
D2
RedR31k
12345
J14USART
D3
Red
12
J1Aux PSU input
5-30V
D4
Red
+3.3V
+3.3V
+5V
+3.3V
1234
J10Sensor2
+5V
R41k
+5V
BATT-
PHASE_C
PHASE_B
PHASE_C
PHASE_A
PHASE_B
PHASE_C
PHASE_B
PHASE_C
PHASE_B
PHASE_A
BATT-
PHASE_A
BATT+5V_HVDCsense
5V_HVDCsense
PHASE_A
BATT+
PB10
SPI3_SCK
LED_RED2
LED_RED2LED_RED
LED_GREEN
PB3PB10
PB3
SPI3_MISO
CB
V_IN
SPI3_SCKSPI3_MISO
GND_IN
SPI3_MOSI
V_IN
15V_ISO
LED_RED
PWRGD_3V3
HALL3
CT
HALL2
BB
HALL1
I_phase_A
15V_ISO
OT_FAULT
15V_ISO
15V_ISO
I_phase_BI_phase_C
PWRGD_3V3
LED_GREEN
SPI3_MOSI
CB
I_phase_C
OT_FAULT
15V_ISO
I_phase_B
AT
AB
BT
BT
OC_FAULT
I_phase_A
OV_FAULT
AT
OC_FAULT
CT
OV_FAULT
AB
BB
3.3V
5V, 3.3V
5V, 3.3V
5V, 3.3V
10.25 kOhm20 secdischarge->600uF
3.3V
Current SHUNT's
3.3V
5V
A
LED's
3.3V
5V, 3.3V
Imax50A
DC Link Discharge
Isolation
Vmax130V
3.3V5V
3.3V5V
3.3V5V
3.3V
3.3V
3.3V
3.3V, 3.3VA
3.3V, 1.2V
Fault LED's
Power PCB
3.3V5V
Interface to other board
3.3V
3.3VA
DC Link
Encoder
Interface to other board
Power LED's
Extra pins
MCU LED's
Vin5-30V
SPI
3.3V
Not on PCB
3.3V
3.3V
Isolated power supply for gate drivers.
B C
Power inputs
5V
Board to board 44 Pins needed min.
As NOR/PSRAMmemory
FPGA2MCU
1
1 2 3 4 5 6
1 2 3 4 5 6
A
B
C
D
A
B
C
D
Date: KiCad E.D.A. kicad 5.1.6
Rev: Size: A4Id: 2/48
Title: Motor Controler (BLDC, IPM, ACIN)File: transistor.schSheet: /tran_B/
R37R
C6C
1
23
Q3IXTP60N20T
R3610
DR
AIN
SO
UR
CE
GATE
32mOhmVgs=20VQg=73nCQgs=22nCQgd=22nC
Pgate = Pdrive + (Qgate * fsw * Vgate) + (Cge * fsw * Vgate^2)
fsw(max) = 40 kHzVgate = 15VPdriver = 0.6W
Pgate = 0.6W + .... = 0.85W
1W
Subber if needed.
1 2 3 4 5 6
1 2 3 4 5 6
A
B
C
D
A
B
C
D
Date: KiCad E.D.A. kicad 5.1.6
Rev: Size: A4Id: 8/48
Title: Motor Controler (BLDC, IPM, ACIN)File: CAN.schSheet: /CAN2/
R5260R4
TVS2VESD05A1
TVS1VESD05A1
GND
C1510n
+3.3V
+3.3V
GND
C12220p
R50100
GND
C14100n
R49100
+3.3V
R4810k
C13100n
TXD1
GN
D2
VC
C3
RXD4
VREF 5
CANL 6
CANH 7
S8
U1
SN65HVD1050D
R5360R4
R510
CAN_TX
CAN_H
CAN_RX
CAN_L
2
1 2 3 4 5 6
1 2 3 4 5 6
A
B
C
D
A
B
C
D
Date: KiCad E.D.A. kicad 5.1.6
Rev: Size: A4Id: 9/48
Title: Motor Controler (BLDC, IPM, ACIN)File: hall_temp.schSheet: /Hall, Temperature sensor/
GND
GND
+3.3V
TVS6VESD05A1
TVS4VESD05A1
TVS3VESD05A1
TVS7VESD05A1
TVS5VESD05A1
F2500mA
F3500mA
C17100n
C1610n
C1810n
12
3 D11BAT54A
GND
GND
R5810k
+1
V-
2
-34
V+
5
U2LM321
GND
C20100n
GND
R591k
GND
R601k
C19100n
12
3 D13BAT54A
R5410k
R5710k
12
3 D12BAT54A
+3.3V
R5510k
R5610k
GND GND
+3.3V
+3.3V
+3.3V
+3.3V
HALL1_IN
TEMP_OUT
HALL3_OUTHALL2_OUTHALL1_OUT
MOTOR_NTC+
MOTOR_NTC-
HALL3_INHALL2_IN
NTC input
Hall input
BypassPlace close to ADC PIN
1 2 3 4 5 6
1 2 3 4 5 6
A
B
C
D
A
B
C
D
Date: KiCad E.D.A. kicad 5.1.6
Rev: Size: A4Id: 10/48
Title: Motor Controler (BLDC, IPM, ACIN)File: 5v-to-3v.schSheet: /Acceleration input/
C21220p
+3.3V
+3.3V
+5V
TVS9VESD05A1
R620
R6110k
TVS8VESD05A1
R63100
R64100
GND
R6610k
R6510k
R6910k
C23100n
R7010k+1
V-
2
-34
V+
5
U3LM321
C22220p
R6810k
R670
IN+
IN-
OUT
Place close to ADC pins
DNP
Reference for differential input
DNP
3
1 2 3 4 5 6
1 2 3 4 5 6
A
B
C
D
A
B
C
D
Date: KiCad E.D.A. kicad 5.1.6
Rev: Size: A4Id: 11/48
Title: Motor Controler (BLDC, IPM, ACIN)File: temp_board.schSheet: /Board temeprature/
TH110k
R7110k
GND
C24100n
+3.3V
TEMP
Place near gate drivers
1 2 3 4 5 6
1 2 3 4 5 6
A
B
C
D
A
B
C
D
Date: KiCad E.D.A. kicad 5.1.6
Rev: Size: A4Id: 13/48
Title: Motor Controler (BLDC, IPM, ACIN)File: gate_driver.schSheet: /Gate driver A/
GND
C34100n
C35100n
GNDPWR
D14Bootstrap
C30100n
C292u2
C312u2
GNDPWRC324u7
C334u7
+3.3V
VIA1
VOB 10VDDB 11GNDA 14
VOA 15VDDA 16
VIB2
VDDI3
GNDI4EN5
VDDI8
GNDB 9
U5SI827(3,5)
VOAGND_AVcc
Vcc
VOBPWM_BPWM_T
EN
Bypass
Isolation
4
1 2 3 4 5 6
1 2 3 4 5 6
A
B
C
D
A
B
C
D
Date: KiCad E.D.A. kicad 5.1.6
Rev: Size: A4Id: 14/48
Title: Motor Controler (BLDC, IPM, ACIN)File: biss.schSheet: /BISS interface/
R850
GND1
F4500mA
C43100n
C42100n
TVS15VESD05A1
TVS13VESD05A1
TVS14VESD05A1
TVS12VESD05A1
FB2BEAD-220Ohm@100MHz
C40100n
R8110
C41100n
R1RE2
DE3
D4
GN
D5
A 6B 7
VC
C8
U6
SN75LBC176D
R7910
C36220p
C38220p
R8010
R781k
R1RE2
DE3
D4
GN
D5
A 6B 7
VC
C8
U7
SN75LBC176DC37220p
GND1
GND1
GND1
GND1
GND1
R8460R4
GND
+5V
R8360R4
R8210
GND1
C39220p
BISS_CLK
BISS_CSBISS_MISO
BISS_SLO-
BISS_SLO+
GND_BISS
BISS_MA-
5V_BISS
BISS_MA+
5V_BISS
5V_BISS
5V_BISS1
Bypass
or SN65176
Clock
Data
http://biss-interface.com/download/biss-c-protocol-description-english/
1 2 3 4 5 6
1 2 3 4 5 6
A
B
C
D
A
B
C
D
Date: KiCad E.D.A. kicad 5.1.6
Rev: Size: A4Id: 16/48
Title: Motor Controler (BLDC, IPM, ACIN)File: voltage_measurment.schSheet: /Voltage measurment/
Sheet: sheet60519899
File: 5iso.sch
VCC_outGND_out
Vcc_inGND_in
R901k
C53100n
+3.3V
GND
+3.3V
C522u2
GND
R88180k
R87180k
AVDD1
AINP2
AINN3
AGND4 DGND 5DOUT 6DGND 7VDDD 8
U9
AMC1303E25020
R911k
C51330p
R86180k
R891k
GND
+5V
Vin-
5V_Sense
DATA
Vin+
Target 599 OhmVmax = 150VGot 540 OhmVmax = 130V
50^2 [A] * 0.001 [Ohm] = 2.5 [W]60^2 [A] * 0.001 [Ohm] = 3.6 [W]70^2 [A] * 0.001 [Ohm] = 4.9 [W]80^2 [A] * 0.001 [Ohm] = 6.4 [W]90^2 [A] * 0.001 [Ohm] = 8.1 [W]100^2 [A] * 0.001 [Ohm] = 10 [W]
250mV
Manchester encoding
Isolation
1000uOhm500uOhm
Imax = 50*10^-3 / 1000*10^-6 = 50 AImax = 50*10^-3 / 500*10^-6 = 100A
50^2 [A] * 0.0005 [Ohm] = 1.25 [W]60^2 [A] * 0.0005 [Ohm] = 1.8 [W]70^2 [A] * 0.0005 [Ohm] = 2.56 [W]80^2 [A] * 0.0005 [Ohm] = 3.2 [W]90^2 [A] * 0.0005 [Ohm] = 4 [W]100^2 [A] * 0.0005 [Ohm] = 5 [W]
5
1 2 3 4 5 6
1 2 3 4 5 6
A
B
C
D
A
B
C
D
Date: KiCad E.D.A. kicad 5.1.6
Rev: Size: A4Id: 17/48
Title: Motor Controler (BLDC, IPM, ACIN)File: 5iso.schSheet: /Voltage measurment/sheet60519899/
C544u7
C554u7
-Vin1
+Vin2
-Vout 3
+Vout 4
U10RFM-0505S
L110u
Vcc_in
GND_in GND_out
VCC_out
1 2 3 4 5 6
1 2 3 4 5 6
A
B
C
D
A
B
C
D
Date: KiCad E.D.A. kicad 5.1.6
Rev: Size: A4Id: 20/48
Title: Motor Controler (BLDC, IPM, ACIN)File: power.schSheet: /Power/
R10010k
C652u2
C622u2
C77220p
R101180k
C78100n
R10368k1
L34u75A
C682u2
C7410n
L410u5A
CP422u
C634u7
R10210
C642u2
R9810k
S1 1
G12
S2 3
G24
D25D26D17D18
Q9DMP4047SSD
C76100n
C612u2
C71100n
1 2
3 4
FL1EMI_Filter_CommonMode
R991k
PHASE1
SW 10
BST 11
VCC12
AG
ND
13
SS14
FB 15
FREQ16VIN2 SW 3
PG
ND
4
EN5
SYNC6
PG7
BIAS 8PG
ND
9
U15MPQ4430
C694u7
DZ2ZMMxx7-15V
C70100n
C66100n
F52A SLOW
Vin1
GN
D2
SHDN3 PWRGD 4Vout 5
U14MCP1824T
C722u2
R10413k
SHDN1Vin2
GD
N3
Vout 4
PWRGD 5
U13MCP1827
CP530u
C67100n
C75100n
C732u2
3V3
GND
5V
5V
5VPWRGD_3V3
5V
1V2
GND_IN
V_IN
EN
GND
GNDGND
GND
GND
GND
GNDGND
EN
EN
Imax = 0.8A
SMPS 5-30V to 5V 3A
Vin(max) = 5.5VVout(min) = 3.2VIout(max) = 1.5AR(thermal resistance) = 31.2 C/WTa(max) = 70 CTj(max) = 125 CPd(LDO) = [Vin(max) - Vout(min)] * Iout(max) 3.5WPd(Iq) = Vin(max) * Ivin(120uA) = 0.66mWTj(max) = Ptotal * R(thermal resistance) + Ta(max) = 172 C < 125 C ----> Max Current = 0.8A
Power sequencing for FPGA
Vin(max) = 5.5VVout(min) = 1.1VIout(max) = 0.2R(thermal resistance) = 62C/WTa(max) = 70 CTj(max) = 125 CPd(LDO) = [Vin(max) - Vout(min)] * Iout(max) = 0.44WPd(Iq) = Vin(max) * Ivin(120uA) = 0.66mWTj(max) = Ptotal * R(thermal resistance) + Ta(max) = 97 C
Imax = 0.2A
1.2V
EMI filter
1.2V LDO
3.3V
Reverse polarity protection
3.3V LDO
DNP if using MCP1824T
6
1 2 3 4 5 6
1 2 3 4 5 6
A
B
C
D
A
B
C
D
Date: KiCad E.D.A. kicad 5.1.6
Rev: Size: A4Id: 23/48
Title: Motor Controler (BLDC, IPM, ACIN)File: FPGA.schSheet: /FPGA/
D16Green
C85100n
IOB_18a10
IOB_20a11
IOB_22b12
IOB_24a13
IOB_32a_SPI_SO14
IOB_34a_SPI_SCK15
IOB_35b_SPI_SS16
IOB_33b_SPI_SI17
IOB_31b18IOB_29b19IOB_25b_G320
IOB_23b21
SP
I_V
CC
IO1
22
IOB_13b6
CDONE 7CRESET8
IOB_16a9
U18BICE40UP5K-SG48ITR
C92100n
+3.3V +1V2
R115100
IOT_37a23IOT_36b25
IOT_39a26IOT_38b27
IOT_41a28
IOT_42b31
IOT_43a32
VC
CIO
_033
IOT_44b34
IOT_46b_G035
IOT_48b36
IOT_45a_G137
IOT_50b38
RGB039
RGB140
RGB241
IOT_51a42
IOT_49a43
U18AICE40UP5K-SG48ITR
GND
GND
+3.3V
R1141k
GND
R1131k
C94100n
R11210k
C934u7
+3.3V
R11110k
GND
C844u7
VC
CIO
_21
IOB_6a2
IOB_9b3IOB_8a4
IOB_3b_G644
IOB_5b45
IOB_0a46
IOB_2a47
IOB_4a48
U18CICE40UP5K-SG48ITR
VPP_2V5 24
VCCPLL 29GND49 VCC 5
U18DICE40UP5K-SG48ITR
C904u7
C91100n
+1V2
D17Bootstrap
GND
C864u7
+3.3V
C884u7
+3.3V
C89100n
+3.3V
C87100n
AD4
PWM_B_B
U_phase_C
U_phase_B
I_phase_APWM_A_B
U_phase_A
AD5PWM_C_T_uC
AD3
AD2AD0
V_BUS
CLKIN
I_phase_B
I_phase_C
PWM_A_TPWM_B_T
PWM_C_TPWM_C_B
PWM_C_B_uC
AD1
PWM_B_T_uC
PWM_B_B_uCPWM_A_B_uC
PWM_A_T_uC
OC_FAULT
FAULT
TEMP_C_uC
TEMP_ATEMP_B_uCTEMP_A_uC
TEMP_CTEMP_B
AD7
RESET
OT_FAULT_uCOTFAULT
OV_FAULT
GATE_C
SPI_SO
GATE_BGATE_A
SPI_SI
GATE_C_uCGATE_B_uCGATE_A_uC
NWAIT
OT_FAULTOT_FAULT_uC
NADVSPI_SCK
SPI_SS
CLK
AD6
NOE
Bypass caps
FSMC NAND interface 16 pin for data + E + R + W + AL + CL + R/B= 24 pin+ 1 for SRAM interface.Adress use in multiplexing mode
Power sequencingVcc,VccpllSPI_Vccio1Vpp_2V5
Pin planingMake input filters for Delta-sigma
Passtrought
1 2 3 4 5 6
1 2 3 4 5 6
A
B
C
D
A
B
C
D
Date: KiCad E.D.A. kicad 5.1.6
Rev: Size: A4Id: 30/48
Title: Motor Controler (BLDC, IPM, ACIN)File: ntc_cond.schSheet: /Sheet607E0276/
Sheet: sheet6022EF67
File: ntc_input.sch
NTC+NTC-
OT_FAULTTEMP
Sheet: sheet6022FD32
File: ntc_input.sch
NTC+NTC-
OT_FAULTTEMP
Sheet: Sheet6020F2BB
File: ntc_input.sch
NTC+NTC-
OT_FAULTTEMP
OT_FAULT
OT_FAULT
NTC_A+
TEMP_C
TEMP_B
TEMP_A
NTC_C-NTC_C+
NTC_B-NTC_B+
OT_FAULTNTC_A-
7
1 2 3 4 5 6
1 2 3 4 5 6
A
B
C
D
A
B
C
D
Date: KiCad E.D.A. kicad 5.1.6
Rev: Size: A4Id: 31/48
Title: File: ntc_input.schSheet: /Sheet607E0276/Sheet6020F2BB/
R15610k
R1524k99
R154NTC100
GNDA
R15710k
C121220p
+3.3VA
C11610n
+3.3VA
+3.3VA
C120220p
1
-2
+3
U26ALM393
V-
4V
+8
U26CLM393
C123100n
GNDA
+3.3VA
R159220k
R158220k
V-
2V
+5
1+3
-4
U25
MCP601-xOT
GNDA
C117100n
C11810n
C119100n
R1554k99
R1534k99
C122100n
NTC-
NTC+
TEMP
OT_FAULT
MCP601
Place close to ADC pin
Same as NTC value
Same resistance asNTC@protection temeprature--->
1 2 3 4 5 6
1 2 3 4 5 6
A
B
C
D
A
B
C
D
Date: KiCad E.D.A. kicad 5.1.6
Rev: Size: A4Id: 34/48
Title: Motor Controler (BLDC, IPM, ACIN)File: protected_output.schSheet: /Protect outputs/
Sheet: Sheet5F9DC163
File: gpio_protected.sch
IN OUT
Sheet: sheet5F9DE4E4
File: gpio_protected.sch
IN OUT
Sheet: sheet5F9DE5B2
File: gpio_protected.sch
IN OUT
IN1
IN2
IN3
OUT1
OUT2
OUT3
8
1 2 3 4 5 6
1 2 3 4 5 6
A
B
C
D
A
B
C
D
Date: KiCad E.D.A. kicad 5.1.6
Rev: Size: A4Id: 35/48
Title: File: gpio_protected.schSheet: /Protect outputs/Sheet5F9DC163/
R176100
F6100mA
R1781k
+5V
TVS22VESD05A11
23
Q10BSS123
GND
R1771k
OUT
IN
DNP
1 2 3 4 5 6
1 2 3 4 5 6
A
B
C
D
A
B
C
D
Date: KiCad E.D.A. kicad 5.1.6
Rev: Size: A4Id: 40/48
Title: Motor Controler (BLDC, IPM, ACIN)File: MCU.schSheet: /MCU/
C14115p
GNDA
C1452u2
C1442u2
ESR < 2 Ohm
+3.3VA
GND
C1462u2
C147100n
GND
+3.3VA
C143100n
+3.3V
+3.3V
SW1Bootloader
C14215p
12345
J26TPUI
R18510k
+3.3V
GND
12345
J25JTAG/SWD
BOOT094
NRST14 PA0 23
PA1 24
PA10 69
PA11 70
PA12 71
PA13 72
PA14 76
PA15 77
PA2 25
PA3 26
PA4 29
PA5 30
PA6 31
PA7 32
PA8 67
PA9 68
PB0 35
PB1 36
PB10 47
PB11 48
PB12 51
PB13 52
PB14 53
PB15 54
PB2 37
PB3 89
PB4 90
PB5 91
PB6 92
PB7 93
PB8 95
PB9 96
PC0 15
PC1 16
PC10 78
PC11 79
PC12 80
PC13 7
PC14 8
PC15 9
PC2 17
PC3 18
PC4 33
PC5 34
PC6 63
PC7 64
PC8 65
PC9 66
PD081
PD182
PD1057
PD1158
PD1259
PD1360
PD1461
PD1562
PD283
PD384
PD485
PD586
PD687
PD788
PD855
PD956
PE097
PE198
PE1041
PE1142
PE1243
PE1344
PE1445
PE1546
PE21
PE32
PE43
PE54
PE65
PE738
PE839
PE940
PH012
PH113
VB
AT
6
VCAP_149
VCAP_273
VD
D10
0
VD
D11
VD
D19
VD
D28
VD
D50
VD
D75
VD
DA
22
VREF+21
VS
S10
VS
S27
VS
S74
VS
S99
VS
SA
20U32 STM32F405VGTx
C1492u2
C1502u2
VDD
GND
VDD
C1482u2
GND
C1542u2
1
2
3
Y18MHz 10ppm
C1532u2
C1512u2
GND
C1522u2
LED_GREEN
ADC_TEMP
SPI1_SCK
TEMP_A
SPI1_MISOSPI1_MOSI
TEMP_BTEMP_C
OT_FAULTADC_TEMP2
PWM_C_T
FSMC_NADV
PE15PE14
GATE_CGATE_BGATE_A
PB10
HALL_3
USART3_CLKUSART3_RXUSART3_TX
ADC_9
ADC_8
V_GATE_DRIVER
USB_D-USB_D+
ADC_15ADC_13
TEMP_MOTORLED_RED
FSMC_AD4
OT_FAULT
FSMC_NWAIT
FSMC_AD1FSMC_AD0
FSMC_NOEFSMC_CLK
FSMC_AD3FSMC_AD2
FSMC_AD7FSMC_AD6FSMC_AD5
PC14
LED_RED2
CAN_TXCAN_RX
FPGA_RESETSPI3_SCK
PWM_A_T
SPI3_MISOSPI3_MOSIBISS_SS
PWM_B_T
FAULT
CAN_2_TX
PWM_A_B
PC15
PWM_B_B
MCO2
PWM_C_B
FPGA_SS
HALL_2HALL_1
PB3
CAN_2_RX
SWCLK
SWDIONRST
NRST
SWDIOSWCLK
VREF
TRACED3TRACED2TRACED1TRACED0TRACECLK
TRACED3TRACED2TRACED1TRACED0TRACECLK
VREF
Reset pin internallypulled up
FSMC interface 8bit bus width
Required for USBto work
Programming / Debugconnector
Bypass, place next to VDD pinsVbat
TPUI interface
Vdda
Imax = 500mA
PWM output
9
1 2 3 4 5 6
1 2 3 4 5 6
A
B
C
D
A
B
C
D
Date: KiCad E.D.A. kicad 5.1.6
Rev: Size: A4Id: 41/48
Title: Motor Controler (BLDC, IPM, ACIN)File: current_measurment.schSheet: /sheet60C8D6EB/
Sheet: sheet6055468B
File: 5iso.sch
VCC_outGND_out
Vcc_inGND_in
AVDD1
AINP2
AINN3
AGND4 DGND 5DOUT 6DGND 7VDDD 8
U33
AMC1303E05020
+3.3V
C157100n
GND
C1562u2
GND
+3.3V
GND
R1861k
+5V
RS1500u/1000u R187
1k
C155330p DATA
I_in
I_out
Imax = 50*10^-3 / 1000*10^-6 = 50 A
500uOhm 1000uOhm
Imax = 50*10^-3 / 500*10^-6 = 100A
50^2 [A] * 0.001 [Ohm] = 2.5 [W]60^2 [A] * 0.001 [Ohm] = 3.6 [W]70^2 [A] * 0.001 [Ohm] = 4.9 [W]80^2 [A] * 0.001 [Ohm] = 6.4 [W]90^2 [A] * 0.001 [Ohm] = 8.1 [W]100^2 [A] * 0.001 [Ohm] = 10 [W]
50^2 [A] * 0.0005 [Ohm] = 1.25 [W]60^2 [A] * 0.0005 [Ohm] = 1.8 [W]70^2 [A] * 0.0005 [Ohm] = 2.56 [W]80^2 [A] * 0.0005 [Ohm] = 3.2 [W]90^2 [A] * 0.0005 [Ohm] = 4 [W]100^2 [A] * 0.0005 [Ohm] = 5 [W]
SHUNT
Isolation
Filter
Manchester encoding
1 2 3 4 5 6
1 2 3 4 5 6
A
B
C
D
A
B
C
D
Date: KiCad E.D.A. kicad 5.1.6
Rev: Size: A4Id: 47/48
Title: Motor Controler (BLDC, IPM, ACIN)File: temp_board.schSheet: /sheet5F4097D6/
TH210k
R19210k
GND
C170100n
+3.3V
TEMP
Place near gate drivers
10
2.. Prilog 2 Shema LTSpice simulacije vektorske modulacije napona
PULSE(-0.5 0.5 0 p/2 p/2 0 p 1E6)
V1
SINE(0.5 0.5773 250 0 0 phase 1E6)
V2
5
V3A1
R1
3k
C1
200pF
D1
BAT54
A2
R2
3k
C2
200pF
D2
BAT54
V6
50M1
IRF530
E1
3
R3
150
R4
150E2
3
D3
1N5818
D4
1N5818
R8
20
R9
20 M2
IRF530
R7
0.5
L1
1mH
M3
IRF530
E3
3
R5
150
R6
150E4
3
D5
1N5818
D6
1N5818
R10
20
R11
20 M4
IRF530
V7
SINE(0 20 250 0 0 0 1E6)
B1
V=-v(Vbus)*i(V6)
R12
1k
C3
0.1µF
A3
R13
3k
C4
200pF
D7
BAT54
A4
R14
3k
C5
200pF
D8
BAT54
SINE(0.5 0.5773 250 0 0 120+phase 1E6)
V4
A5
R15
3k
C6
200pF
D9
BAT54
A6
R16
3k
C7
200pF
D10
BAT54SINE(0.5 0.5773 250 0 0 240+phase 1E6)
V8
M5
IRF530
E5
3
R17
150
R18
150E6
3
D11
1N5818
D12
1N5818
R19
20
R20
20 M6
IRF530
R21
0.5
L2
1mH
V9
SINE(0 20 250 0 0 120 1E6)
R22
0.5
L3
1mH
V10
SINE(0 20 250 0 0 240 1E6)
VCS
S1
A7
A8
A9
VCS
S4
V=if(V(Va)>V(Vb),V(Va),V(Vb))
B9
V=if(V(Vmax_ab)>V(Vc),V(Vmax_ab),V(Vc))
B10
V=if(V(Va)<V(Vb),V(Va),V(Vb))
B11
V=if(V(Vmim_ab)<V(Vc),V(Vmim_ab),V(Vc))
B12
0.5
E7
VCS
S2
VCS
S3
VCS
S5
VCS
S6
B2
V=V(Va)-0.5
V5
0.5
V11
0.5
R24
0.001
R25
0.001
-1000
E8
-1000
E9
z.o.h.
clk
z.o.h.
clk
PULSE(-1 1 1/(4*Fs)+2*T_aperture 0 0 T_aperture 1/Fs 1E6)
V12
B3
V=V(I_a)
B4
V=V(I_b)
B5
V= - V(I_b) - V(I_a)
Vd
d
Vb
us
Vb
us
Vb
us
Bus_Power
Vb
us
Vd
d
shunt_B
Va
Vb
Vc
Vm
ax_ab
Vm
im_ab
Vm
ax
Vmin
Vm
od
_a
Vm
od
_b
Vm
od
_c
Vd
dV
dd
Va_effectiveLimit_pos
Limit_neg
shunt_A
shunt_A
shunt_B
Clk1
I_a
I_b
A_Current
B_Current
C_Current
.tran 0 10E-3 10us uic
.param p=50us
.param phase=27
.model VCS SW(Ron=0.00001 Roff=1T Vt=0)
.options method = gear
.param T_aperture = 100E-9
.param Fs = 10E3
Three Phase Centered PWMsMotoring with Unity Power Factor
S V M W A V E F O R M G E N E R A T O RM O D U L A T O R D E A D T I M E G E N E R A T O R I N V E R T E R
P M S M O T O R
--- C:\users\mirko\My Documents\LTspiceXVII\schematics\TI-motors\08 Space Vector Modulation.asc ---
11
3.. Prilog 3 Manchester dekoder
3..1. Manchester dekoder Verilog kod
prilozi/md.v
/******************************************************************************
* F i l e Name : md . v
* Model : Manches t e r Decoder
****************************************************************************** /
module md (
i n p u t c l k_ i n ,
i n p u t mdi ,
o u t p u t c l k_ou t ,
o u t p u t ou t
) ;
/ / B u f f e r s f o r edge d e t e c t i o n
r eg mdi1 ;
r eg mdi2 ;
/ / Coun te r and de l a y ( i n i n p u t c l o ck t i c k s )
r eg [ 5 : 0 ] coun t ;
l o c a l p a r am de l a y = 13 ;
/ / Decoded d a t a
r eg n r z ;
r eg c l k ;
12
/ / I n i t a l i z a t i o n
i n i t i a l b eg in
n r z <= 1 ’ b0 ;
c l k <=1’b0 ;
coun t <= 0 ;
end
/ / Ass ign o u t p u t s
a s s i g n ou t = n r z ;
a s s i g n c l k _ o u t = c l k ;
/ / Gene r a t e 2 FF r e g i s t e r t o a c c e p t s e r i a l Manches t e r d a t a i n
a lways @( posedge c l k _ i n )
beg in
beg in
mdi2 <= mdi1 ;
mdi1 <= mdi ;
end
end
/ / Data decod ing
a lways @( posedge c l k _ i n )
beg in
/ / S t a r t c l k on r i s i n g o r f a l l i n g edge
i f ( ( ( ! mdi1 && mdi2 ) | | ( ! mdi2 && mdi1 ) ) && c l k == 1 ’ b0 )
beg in
c l k <= ~ c l k ;
end
/ / Delay c l o ck 3 /4 o f T
i f ( c l k > 0)
beg in
i f ( coun t < de l a y )
beg in
coun t ++;
end
e l s e
beg in
n r z <= ~mdi ;
13
coun t <= 0 ;
c l k <= ~ c l k ;
end
end
end
endmodule
3..2. Manchester dekoder Verilog test kod
prilozi/md_tf.v
‘ t i m e s c a l e 1 ns / 1 ns
‘ i n c l u d e ”md . v”
module md_tf ;
r eg r s t ;
r eg c lk16x ;
r eg mdi ;
w i r e c l k ;
w i r e ou t ;
md u1 ( c lk16x , mdi , c lk , ou t ) ;
i n i t i a l b eg in
r s t = 1 ’ b0 ;
c lk16x = 1 ’ b0 ;
mdi = 1 ’ b0 ;
end
p a r ame t e r c l o c k _ p e r i o d = 10 ;
a lways # ( c l o c k _ p e r i o d / 2 ) c lk16x = ~ c lk16x ;
i n i t i a l b eg in
$ d i s p l a y ( ” Ve r i l o gs imu l a t i o nofManches t e rdecode r \ n” ) ;
$dumpf i l e ( ” md_tf . vcd ” ) ;
$dumpvars ( 0 , u1 ) ;
#1 r s t = 1 ’ b1 ;
#100 r s t = 1 ’ b0 ;
14
/ / I n p u t 8 l o g i c 0 s
#80 mdi = 1 ’ b0 ;
#80 mdi = 1 ’ b1 ;
#80 mdi = 1 ’ b1 ;
#80 mdi = 1 ’ b0 ;
#80 mdi = 1 ’ b0 ;
#80 mdi = 1 ’ b1 ;
#80 mdi = 1 ’ b0 ;
#80 mdi = 1 ’ b1 ;
#80 mdi = 1 ’ b1 ;
#80 mdi = 1 ’ b0 ;
#80 mdi = 1 ’ b0 ;
#80 mdi = 1 ’ b1 ;
#80 mdi = 1 ’ b0 ;
#80 mdi = 1 ’ b1 ;
#80 mdi = 1 ’ b0 ;
#80 mdi = 1 ’ b1 ;
#80 mdi = 1 ’ b0 ;
#80 mdi = 1 ’ b1 ;
#80 mdi = 1 ’ b0 ;
#80 mdi = 1 ’ b1 ;
#80 mdi = 1 ’ b0 ;
#80 mdi = 1 ’ b1 ;
#80 mdi = 1 ’ b0 ;
#80 mdi = 1 ’ b1 ;
#80 mdi = 1 ’ b0 ;
#80 mdi = 1 ’ b1 ;
#80 mdi = 1 ’ b0 ;
$ d i s p l a y ( ” \ nS imu l a t i o nofManches t e rdecode ri scomple t e . ” ) ;
$ f i n i s h ;
end
endmodule
15
4.. Prilog 4 sinc3 filter
4..1. sinc3 Verilog kod
prilozi/sinc3.v
‘ t i m e s c a l e 1 ns / 100 ps
module dec256s i nc24b
(
i n p u t r e s e t _ i ,
i n p u t mc lkou t_ i ,
i n p u t mdata_i ,
o u t p u t da t a_ rdy_o , / / s i g n a l s when new da t a
i s a v a i l a b l e
o u t p u t r eg [ 1 5 : 0 ] da t a_o / / o u t p u t s f i l t e r e d d a t a
) ;
r eg i p _ d a t a 1 ;
r eg [ 2 3 : 0 ] acc1 ;
r eg [ 2 3 : 0 ] acc2 ;
r eg [ 2 3 : 0 ] acc3 ;
r eg [ 2 3 : 0 ] acc3_d1 ;
r eg [ 2 3 : 0 ] acc3_d2 ;
r eg [ 2 3 : 0 ] d i f f 1 ;
r eg [ 2 3 : 0 ] d i f f 2 ;
r eg [ 2 3 : 0 ] d i f f 3 ;
r eg [ 2 3 : 0 ] d i f f 1 _ d ;
r eg [ 2 3 : 0 ] d i f f 2 _ d ;
r eg [ 7 : 0 ] word_count ;
r eg word_c lk ;
16
a s s i g n da t a_ r dy_o = word_c lk ;
/*ACCUMULATOR (INTEGRATOR)
* Per fo rm t h e a c cumu l a t i o n ( I IR ) a t t h e speed of t h e modu l a t o r .
* mc lkou t _ i = modu l a t o r s c o nv e r s i o n b i t r a t e * /a lways @( negedge mc lkou t _ i o r posedge r e s e t _ i )
beg in
i f ( r e s e t _ i == 1 ’ b1 )
beg in
/* i n i t i a l i z e acc r e g i s t e r s on r e s e t * /acc1 <= 0 ;
acc2 <= 0 ;
acc3 <= 0 ;
end
e l s e
beg in
/* pe r fo rm ac cumu l a t i o n p r o c e s s * /acc1 <= acc1 + mda ta_ i ;
acc2 <= acc2 + acc1 ;
acc3 <= acc3 + acc2 ;
end
end
/*DECIMATION STAGE (MCLKOUT_I / WORD_CLK) * /always@ ( posedge mc lkou t _ i o r posedge r e s e t _ i )
beg in
i f ( r e s e t _ i == 1 ’ b1 )
beg in
word_count <= 0 ;
end
e l s e
beg in
word_count <= word_count + 1 ;
end
end
17
a lways @( word_count )
beg in
word_c lk <= word_count [ 7 ] ;
end
/*DIFFERENTIATOR ( i n c l u d i n g d e c ima t i o n s t a g e )
* Per fo rm t h e d i f f e r e n t i a t i o n s t a g e ( FIR ) a t a lower speed .
WORD_CLK = ou t p u t word r a t e * /a lways @( posedge word_c lk o r posedge r e s e t _ i )
beg in
i f ( r e s e t _ i == 1 ’ b1 )
beg in
acc3_d2 <= 0 ;
d i f f 1 _ d <= 0 ;
d i f f 2 _ d <= 0 ;
d i f f 1 <= 0 ;
d i f f 2 <= 0 ;
d i f f 3 <= 0 ;
end
e l s e
beg in
d i f f 1 <= acc3 − acc3_d2 ;
d i f f 2 <= d i f f 1 − d i f f 1 _ d ;
d i f f 3 <= d i f f 2 − d i f f 2 _ d ;
acc3_d2 <= acc3 ;
d i f f 1 _ d <= d i f f 1 ;
d i f f 2 _ d <= d i f f 2 ;
end
end
/* Clock t h e S inc o u t p u t i n t o an o u t p u t r e g i s t e r
C lock ing S inc Outpu t i n t o an Outpu t R e g i s t e r
WORD_CLK = ou t p u t word r a t e * /a lways @( posedge word_c lk )
beg in
da t a_o [ 1 5 ] <= d i f f 3 [ 2 3 ] ;
d a t a_o [ 1 4 ] <= d i f f 3 [ 2 2 ] ;
d a t a_o [ 1 3 ] <= d i f f 3 [ 2 1 ] ;
18
da t a_o [ 1 2 ] <= d i f f 3 [ 2 0 ] ;
d a t a_o [ 1 1 ] <= d i f f 3 [ 1 9 ] ;
d a t a_o [ 1 0 ] <= d i f f 3 [ 1 8 ] ;
d a t a_o [ 9 ] <= d i f f 3 [ 1 7 ] ;
d a t a_o [ 8 ] <= d i f f 3 [ 1 6 ] ;
d a t a_o [ 7 ] <= d i f f 3 [ 1 5 ] ;
d a t a_o [ 6 ] <= d i f f 3 [ 1 4 ] ;
d a t a_o [ 5 ] <= d i f f 3 [ 1 3 ] ;
d a t a_o [ 4 ] <= d i f f 3 [ 1 2 ] ;
d a t a_o [ 3 ] <= d i f f 3 [ 1 1 ] ;
d a t a_o [ 2 ] <= d i f f 3 [ 1 0 ] ;
d a t a_o [ 1 ] <= d i f f 3 [ 9 ] ;
d a t a_o [ 0 ] <= d i f f 3 [ 8 ] ;
end
endmodule
4..2. sinc3 Verilog test kod
prilozi/sinc3_file_tb.v
‘ d e f a u l t _ n e t t y p e none
‘ t i m e s c a l e 10 ns / 1 ns
‘ i n c l u d e ” s i n c 3 . v”
module main_ tb ;
/ / S imu l a t i o n t ime : 100 ns (10 * 10 ns )
p a r ame t e r DURATION = 10 ;
l o c a l p a r am SIZE = 500000;
/ / i n t e g e r f i n ;
i n t e g e r i ;
r eg d [ SIZE : 0 ] ;
/ / I n p u t / Outpu t
r eg c l k ;
r eg d a t a ;
r eg r e s e t ;
19
wi re [ 1 5 : 0 ] d a t a _ o u t ;
w i r e d a t a _ r d y ;
/ / Module i n s t a n c e
dec256s i nc24b SINC (
r e s e t ,
c lk ,
da t a ,
d a t a_ rdy ,
d a t a _ o u t
) ;
/ / Clock s i g n a l
a lways #1 c l k = ~ c l k ;
i n i t i a l b eg in
/ / F i l e were t o s t o r e t h e s im u l a t i o n r e s u l t s
$dumpf i l e ( ” s i n c 3 _ f i l e . vcd ” ) ;
$dumpvars ( 0 , SINC ) ;
c l k = 0 ;
#1 d a t a = 0 ;
#1 r e s e t = 1 ;
#1 r e s e t = 0 ;
#5 r e s e t = 1 ;
#1 r e s e t = 0 ;
$readmemh ( ” ds ” , d ) ;
f o r ( i = 0 ; i < SIZE ; i ++)
beg in
#1 d a t a = d [ i ] ;
end
# (100 ) $ d i s p l a y ( ”Endofs imu l a t i o n ” ) ;
$ f i n i s h ;
end
endmodule
20