Primena mikroprocesora u energetici - Pogoni jednosmerne struje -
Transcript of Primena mikroprocesora u energetici - Pogoni jednosmerne struje -
Primena mikroprocesora u energetici – Digitalno upravljani pogoni jednosmerne struje
1
Primena mikroprocesora u energetici - Pogoni jednosmerne struje -
1 Regulisani izvori jednosmernog napona ...........................................................................2
1.1. DC/DC konvertor (čoper) u elektromotornom pogonu ..............................................2 1.1.1. Osnovne šeme DC čopera ..................................................................................2 1.1.2. Princip rada DC čopera ......................................................................................4
2 Primena mikrokontrolera u pogonima jednosmerne struje sa DC čoperom.......................6 2.1. Upravljačka struktura u pogonima jednosmerne struje ..............................................6 2.2. Primer blok dijagrama digitalno upravljanog jednosmernog pogona .......................8 2.3. Različiti načini programskog generisanja PWM signala............................................9
2.3.1. Šta je glavni zadatak mikroprocesora pri upravljanju čoperom ? ......................9 2.3.2. PWM signal dobijen na GPIO pinu primenom jednog brojačkog modula ......10 2.3.3. PWM signal dobijen na GPIO pinu primenom dva brojačka modula..............10 2.3.4. Generisanje PWM signala korišćenjem Motor Control modula ......................11
2.4. Merenje ili procena brzine rotora .............................................................................14 2.4.1. Merenje brzine pomoću jednosmernog tahometra ..........................................14 2.4.2. Merenje brzine pomoću naizmeničnog tahometra ...........................................15 2.4.3. Merenje položaja i procena brzine pomoću optičkog enkodera .......................16
2.5. Merenje i procesiranje ostalih relevantnih signala u pogonu ...................................19 2.5.1. Merenje struje armature....................................................................................19 2.5.2. Merenje napona jednosmernog međukola........................................................20
2.6. Digitalno upravljanje DC motorom u zatvorenoj povratnoj sprezi po brzini...........22 2.6.1. Šta je cilj ? ........................................................................................................22 2.6.2. Digitalni PI regulator brzine u pozicionoj i inkrementalnoj formi..................22 2.6.3. Blok dijagram algoritma upravljanja DC motorom..........................................24 2.6.4. C-code za regulaciju brzine DC motora ...........................................................25
2.7. Digitalno upravljanje DC motorom sa povratnom spregom po brzini i struji..........28
Rev Date Originator Description X1 02/26/07 dr Darko Marcetic DC čoper završen , nedostaje trofazni ispravljač X2 02/28/08 dr Darko Marcetic poboljšano merenje brzine, struje , napona..
Primena mikroprocesora u energetici – Digitalno upravljani pogoni jednosmerne struje
2
1 Regulisani izvori jednosmernog napona
Čoperi spadaju u grupu DC/DC energetskih pretvarača. Oni jednosmeran napon određene srednje vrednosti, koji se obično dobija iz neregulisanog izvora jednosmernog napona (akumulatorske baterije, neupravljivi ispravljači, ...) pretvaraju u jednosmeran napon druge srednje vrednosti. Napon na izlazu čopera se može regulisati tako da pomoću čopera možemo dobiti regulisani izvor jednosmernog napona. Osim čopera, za dobijanje regulisanog jednosmernog napona postoje razni linearni elektronski regulatori jednosmernog napona i poluupravljivi ili potpuno upravljivi ispravljači. Međutim svi ovi izvori regulisanog jednosmernog napona imaju u odnosu na čopere nekoliko bitnih nedostataka. Linearni elektronski regulatori jednosmernog napona imaju zbog svog načina rada značajne gubitke energije, tako da se njihova primena isplati samo pri napajanju elektronskih uređaja vrlo malih snaga. Njihova prednost u odnosu na primenu čopera se ogleda u jednostavnosti i niskoj ceni. Poluupravljivi i potpuno upravljivi ispravljači su, s druge strane isplativi i za napajanje potrošača velikih snaga, a dugo vremena su bili i jedina varijanta za dobijanje regulisanog jednosmernog napona iz mrežnog naizmeničnog napona. Otkako je postala aktuelna tema kvaliteta električne energije, došlo se do zaključka da svi ovi ispravljači unose dosta visok nivo harmonijskog izobličenja u elektroenergetsku mrežu. Njihov faktor snage vrlo varira u zavisnosti od režima rada, jer zavisi od ugla paljenja. Čoperi u odnosu na linearne regulatore jednosmernog napona imaju mnogo manje gubitke energije u toku rada. U odnosu na poluupravljive i potpuno upravljive ispravljače postižu mnogo veće prekidačke učestanosti, jer u svojoj topologiji sadrže prekidače tipa MOSFET-a ili IGBT-a, pa na taj način zahtevaju mnogo manje filtre. U kombinaciji sa neupravljivim ispravljačem za dobijanje jednosmernog napona iz mrežnog naizmeničnog napona, faktor snage je mnogo bolji nego kod poluupravljivih i potpuno upravljivih ispravljača koji su bazirani na tiristorima i GTO tiristorima. Konačno, čoperi obezbeđuju mnogo manju talasnost struje armature, čime se ujedno umanjuje i talasnost ostvarenog momenta jednosmernog pogona. Primenom čopera je moguća i brza regulacija struje armature, čime se umnogome poboljšavaju dinamičke karakteristike pogona.
1.1. DC/DC konvertor (čoper) u elektromotornom pogonu
1.1.1. Osnovne šeme DC čopera Po načinu rada čopere možemo podeliti na:
• jednokvadrantne • dvokvadrantne • četverokvadrantne
Jednokvadrantni čoperi omogućavaju rad samo u prvom kvadrantu na U-I karakteristici. Na slici 1 je prikazana pojednostavljena šema jednokvadrantnog čopera i odgovarajući kvadrant na U-I karakteristici. Dvokvadrantni čoperi omogućavaju rad u dva kvadranta na U-I karakteristici i to: u I i II kvadrantu ili u I i IV kvadrantu (reverzibilni čoper). Odgovarajuća topologija i kvadranti prikazani su na slici 2. Četverokvadrantni čoperi omogućavaju rad u bilo kom od četiri kvadranta na U-I karakteristici. Moguće je menjati i smerove struja kroz potrošač i polaritet napona na potrošaču. Na slici 3 prikazani su topologija i kvadranti na U-I karakteristici.
Primena mikroprocesora u energetici – Digitalno upravljani pogoni jednosmerne struje
3
Slika 1 – Jednokvadrantni čoper
Slika 2 – Dve verzije dvokvadrantnog čopera
Slika 3 – Četverokvadrantni čoper (H-most)
Na prethodnim slikama potrošač je simbolično prikazan kao redna veza otpornika R, induktivnosti L i baterije sa elektromotorom silom E koja simbolizuje, u slučaju mašine za jednosmernu struju, indukovanu ems u namotaju. Energetski prekidači su simbolično prikazani kao idealni prekidači. U daljem tekstu detaljnije će se obraditi četverokvadrantni čoperi.
S1
S2 S4
S1
S2
S2
S1
S3
Primena mikroprocesora u energetici – Digitalno upravljani pogoni jednosmerne struje
4
1.1.2. Princip rada DC čopera Čoper omogućuje variranje srednje vrednosti napona na potrošaču. Ukoliko je jednokvadrantni, napon i struja mogu biti samo pozitivni. Sa druge strane, četverokvadrantni čoperi omogućavaju rad u sva četiri kvadranta na U-I karakteristici. Moguća su oba smera struje kroz potrošač i moguće je promeniti polaritet napona na potrošaču. Naročito dobra osobina je mogućnost promene polariteta napona na potrošaču bez upotrebe ikakvih preklopnih uređaja. Osnovna šema primene čopera data je na slici 4.
VDC
1f∼ 3f∼ Va
Neregulisani ispravljač DC čoper
Slika 4 – Osnovna energetska šema jednosmernog pogona sa čoperom Neregulisani ispravljač se priključuje na mrežu i služi za generisanje napona jednosmernog međukola. Za monofazni ispravljač, napon jednosmernog DC kola, VDC, koji napaja H-most iznosi:
][32423022 VVV nfDC =⋅=⋅= , ][230 VVnf = , nominalni fazni napon mreže Za trofazni ispravljač, napon jednosmernog DC kola, VDC, koji napaja H-most iznosi:
][56438,5632302323 VVV nfDC ≈=⋅⋅=⋅⋅= Talasni oblik napona na izlazima jednokvadrantnog čopera, i na potrošaču prikazan je na slici 5a.
( ) ∫∫∫ ⋅⋅+⋅⋅=⋅⋅=T
t
t
DC
t
sr
on
on
dtT
dtVT
dttuT
V 0111
00
DCDCON
sr aVVT
tV =⋅= Talasni oblik napona na izlazima četverokvadratnog čopera, i na potrošaču prikazan je na slici 5b. Ovakav napon se dobija kada se naizmenično uključuju parovi prekidača S1, S4 i S2, S3 u H-mostu. Srednja vrednost napona na izlazima četverokvadrantnog čopera je:
( ) ∫∫∫ ⋅−⋅+⋅⋅=⋅⋅=T
tDC
t
DC
t
sr
on
on
dtVT
dtVT
dttuT
V 111
00
( ) ( )1211−⋅⋅=−⋅⋅−⋅⋅= aVtTV
TtV
TV DCONDCONDCsr (2.3)
Faktor ispune se definiše T
ta ON= (2.4)
t
Va
TON TOFF
TPWM
VDC
0
t
Va
TON TOFF
TPWM
VDC
0
-VDC
Slika 5 – Talasni oblik napona na izlazu čopera (jedno- i četverokvadrantni)
Primena mikroprocesora u energetici – Digitalno upravljani pogoni jednosmerne struje
5
Izlaz napona jednokvadratnog čopera je uvek pozitivan, u opsegu 0 - VDC. Sa druge strane, faktor ispune a = 0,5 kod četverokvadratnog čopera dovodi do srednje vrednosti napona jednaku nuli, odn. pretvarač radi kao monofazni invertor. Za faktore ispune preko 0.5, napon na armaturi motora je pozitivna, za faktore ispune manje of 0.5 , napon je negativan. Maksimalan pozitivan napon je +VDC, maksimum negativnog napona je -VDC. Šta je sa strujom i brzinom DC motora, upravljanim DC čoperom? Ideja je da imamo dovoljno veliku PWM učestanost:
a
aaPWM
PWM RL
TTf
=<<=1
U ovom slučaju se varijacija napona ±VDC ne prenosi značajno na struju armature. Nadalje, ni rotor mašine zbog inercije ne prati ove promene. Dakle, mašina vidi samo usrednjenu vrednost napona koju možemo menjati promenom faktora ispune. Time regulišemo struju i brzinu. Faktor ispune manji od 0,5 (četverokvadrantni čoper), daje negativnu vrednost napona i menja smer obrtanja rotora bez dodavanja ikakvih preklopnih naprava.Na sl je prikazan oblik struje na izlazu čopera pri radu u prvom (motorski režim)i drugom (generatorski režim) kvadrantu.
Slika. 6. Rad u prvom kvadrantu
Slika 7. Rad u drugom kvadrantu
Primena mikroprocesora u energetici – Digitalno upravljani pogoni jednosmerne struje
6
2 Primena mikrokontrolera u pogonima jednosmerne struje sa DC čoperom
2.1. Upravljačka struktura u pogonima jednosmerne struje
Brzinski servomehanizam je regulacioni sistem sa zatvorenom povratnom spregom po brzini koji za izvršni organ koristi električnu mašinu. Njegov zadatak je da obezbedi visoko kvalitetno upravljanje brzinom električne mašine u svim radnim režimima. Pod time se podrazumeva upravljanje koje obezbeđuje željeni karakter brzine u prelaznom režimu, veliku tačnost u ustaljenom stanju i malu osetljivost regulisane brzine na dejstvo poremećaja. Na sledećoj slici je prikazana opšta struktura EMP upravljanog po brzini.
Slika . Strukturni blok dijagram digitalno regulisanog brzinskog servomehanizma
Da bi se obezbedili uslovi za kvalitetnu regulaciju brzine neophodno je ostvariti linearno upravljanje momentom. Pretpostavimo da DC motor poseduje permanentne magnete i relativno konstantan fluks rotora. Jednačina DC motora glase
• Jednačina naponske ravnoteže rotora fa
aaaa dtdi
LiRv ψω ⋅++⋅= , a
aa R
LT =
• Ostvareni el. momenat afe im ψ=
• Mehanička jednačina na vratilu ωωfme kmm
dtdJ −−=
• Model motora jednosmerne struje sa konstantnim fluksom
em
au mm−
ai
- e
a
apTR
+11
fkpJ +1 fnomψ
fnomψ
ω
U slučaju otvorene povratne sprege po brzini, zadaje se referentna vrednost napona na motoru bez povratne sprege po brzini rotora. U stacionarnom stanju je ostvarena sledeća brzina rotora
f
aaa IRVΨ
⋅−=ω ,
ω
ω
θ
Primena mikroprocesora u energetici – Digitalno upravljani pogoni jednosmerne struje
7
Ovo je potpuno neregulisan pogon, pored uticaja napona rotora, brzina rotora se menja i sa promenom opterećenja (Ia), sa promenom fluksa i promenom otpornosti rotora. Struja je takođe neregulisana. Ona je najveća pri startu i iznosi
a
aSTARTa R
VI =
U slučaju ovakve vrste regulacije, bilo bi lepo barem napon rotora postepeno podići od nula do željene vrednosti, primenom neke vrste vremenske rampe. U slučaju zatvorene povratne sprege po brzini, regulator brzine eliminiše grešku između zadate i ostvarene brzine rotora. Ovaj regulator obezbeđuje takvu struju armature kojom se ostvaruje el. momenat čija stacionarna vrednost poništava uticaj momenta opterećenja, promene otpornosti rotora kao i promene amplitude fluksa. U stacionarnom stanju je ostvarena zadata brzina rotora refωω = . Dinamičke karakteristike ovog pogona nisu najbolje, zato što se struja ne reguliše i momenat se uspostavlja (kao i struja) eksponencijalno sa vremenskom konstantom Ta.
em au
mm− ai
- e
a
apTR
+11
fkpJ +1
fnomψ
fnomψ
ω ωreg
refω
-
Jednosmerni motor
PWMrefau
Zatvorene povratna sprega po brzini i po struji, regulator brzine eliminiše grešku između zadate i ostvarene brzine rotora zadajući odgovarajući momenat, tj struju armature. Zatvaranje strujne povratne sprege umanjuje vreme uspostavljanja zadatog momenta, uvećava dinamički propusni opseg sistema i ostvaruje pogon sa izuzetno povoljnim statičkim i dinamičkim karakteristikama.
em au
mm− ai
- e
a
apTR
+11
fkpJ +1
fnomψ
fnomψ
ωωreg
refω
-
Jednosmerni motor
PWM
refau
iregrefai
-
Primena mikroprocesora u energetici – Digitalno upravljani pogoni jednosmerne struje
8
2.2. Primer blok dijagrama digitalno upravljanog jednosmernog pogona
Student koji ne zna ovu ili sličnu sliku da nacrta i komentariše na ispitu, dobiće mogućnost da ovu ili sličnu sliku ponovo nacrta u toku sledećeg ispitnog roka.
3f∼
Neregulisani ispravljač Četverokvadrantni DC čoper
PWM Optičko odvajanje
SKHI21H4
Optičko odvajanje i pojačanje
pojačanje
Signal struje motora
Signal DC napona
AN1
SKHI21H4
Encoder receiver Odvajanje i prilagođenje naponski nivoa
LEM
enkoder
R1
R2
Driver za jednu granu mosta
QEA QEB
ATX ARX
dsPIC 4011
Serial driver
Veza ka PC računaru
C
Invertovanje PWM signala
PWM signal
Enkoder A Enkoder B
komparator FLTA
AN0
IMAX
trafo ~380V/~9V
Reg. napona
VSS VDD
OSC1 OSC2
OSC
Otpornički razdelnik
DCM
Slika 8. Blok dijagram regulisanog jednosmernog pogona sa DC čoperom
Zadaci mikroprocesora:
1. Akvizicija podataka. Merenje napona jednosmernog međukola. Ukoliko želimo da ostvarimo tačan napon na motoru, moramo znati DC napon. Signal je analogan i neophodno je izvršiti njegovo galvansko odvajanje, prilagođenje nivoa, i A/D konverziju. Merenje struje radi zaštite i moguće regulacije. Merenje brzine motora, radi regulacije i zaštite.
2. Zaštita pogona Rad pogona je neophodno zaustaviti u slučaju prekomerne struje, brzine, u slučaju greške u naponu jednosmernog kola, prevelike temperature mosta ili motora.
3. Izvršenje digitalnog zakona upravljanja Zavisi od odabrane strukture regulacije. Može da bude a) prosta generacija PWM signala, b) regulacija brzine i c) regulacije struje i brzine.
4. Svetlosna signalizacija. Grupa LED, signalizacija rada, greške .. 5. Komunikacija sa spoljnim svetom. Na slici je prikazana serijska veza koja omogućuje
prihvatanje komandnih signala, slanje izveštaja i prikupljenih podataka. Komandni signali se mogu zadavati i lokalno, primenom tastera i/ili potenciometra!
Neophodna merenja u digitalnom pogonu jednosmernog motora:
Primena mikroprocesora u energetici – Digitalno upravljani pogoni jednosmerne struje
9
1. Merenje napona jednosmernog međukola. Ukoliko želimo da ostvarimo tačan napon na motoru, moramo znati DC napon. Signal je analogan i neophodno je izvršiti njegovo galvansko odvajanje, prilagođenje nivoa, i A/D konverziju.
2. Merenje struje motora. Osnovni razlog merenja struje je zaštita. Da bi zaštita bila brza I efikasna, uobičajeno je da se realizuje hardverski, primenom komparatora. Ukoliko je struja veća od maksimalne signal na izlazu komparatora menja vrednost i fault ulaz trenutno zaustavlja generisanje PWM signala. Struja se može i konvertovati na AD ulazu, i digitalno regulisati u dsPICc-u. Ovim je obezbeđena bolja kontrola momenta.
3. Merenje brzine je neophodno da bi se zatvorila povratna sprega. Ukoliko se koristi dc taho, analogni signal je neophodno odvojiti i naponski nivo prilagoditi ulaznu AD konvertora. Na slici je prikazan primer u kome se brzina meri inkrementalnim enkoderom, koji generiše dva digitalna signala A i B. Za obradu ovih signala postoji QE modul unutar uC, koji direktno izračunava brzinu. Ove signale je takođe neophodno odvojiti i prilagoditi im naponski nivo pre ulaska u dsPIC.
Odabir prekidačke frekvencije rada DC čopera (PWM signala):
1. ispunjen uslov fs >> 1/Ta, ⇒ mala talasnost struje, gubici u motoru i prekidni režim vođenja. 2. znatno veća od propusnog opsega brzinske petlje, bar 10 puta. 3. dovoljno visoka da je van slušnog opsega (fs > 16kHz) a dovoljno niska da prekidački gubici
ne budu previsoki. (Izbor fs je kompromis i zavisi od primene pogona kao i snage pogona). 4. znatno veća od rezonantnih frekvencija 5. dovoljno niska da ne uđe u opseg transportnog kašnjenja i mrtvog vremena. Ovo je nepovoljno
jer se pojavljuje nelinearnost u prenosnoj karakteristici i izobličenje struje Izbor mikrokontrolera:
1. Dovoljno brz (sistemski clock) da je moguće potrebne diskretne jednačine digitalnog zakona upravljanja izvršiti u realnom vremenu. Jednačine brzinska petlje je neophodno izvršavati svakih 20ms , jednačine strujne petlje (momenat) svakih 1ms, dok je PWM perioda 65µs.
2. Da ima ADC sa dovoljno analognih ulaza. Potrebno je meriti napon DC kola, struju armature. Ukoliko je davač brzine DC tahogenerator, tada je neophodno rezervisati jedan AD ulaz i za ovaj signal. Ukoliko se referentna brzina ne zadaje serijskom vezom, već lokalno preko potenciometra, još jedan dodatni AD ulaz je neophodan.
3. Ima PWM jedinicu sposobnu za generisanje potrebnog broja PWM signala. 4. Brojački ulaz. Ukoliko je na izlazu merača brzine digitalni signal, neophodno je da
mikrokontroler poseduje brojački ulaz, koji može da radi u counting ili capture modu. Prvi se koristi za merenje brzine na osnovu broja impulsa u toku konstantnog vremenskog intervala, drugi se može koristiti za merenje vremenskog intervala između dva pridošla impulsa. Ukoliko je merenje brzine vršeno enkoderom (kao na slici), tada je najbolje da µC poseduje enkoderski kvadraturni ulaz (QE), koji direktno obrađuje standardne A i B signale sa enkodera.
5. Dovoljno preostalih GPIO za ostale aktivnosti, LED, tasteri, upravljanje relejem, itd..
2.3. Različiti načini programskog generisanja PWM signala
2.3.1. Šta je glavni zadatak mikroprocesora pri upravljanju čoperom ?
Osnovni cilj je generisati upravljačke PWM signale (ili signal) za upravljive prekidačke elemente čopera. Ovaj signal treba da budem takav, da se ostvari željena srednja vrednost jednosmernog napona na motoru u toku jedne periode rada čopera. Za sada, pretpostavićemo da je zadat samo faktor ispune PWM signala, koji je na odgovarajući način izračunat tako da odgovara potrebnoj srednjoj vrednosti napona na izlazu čopera. Ovo poglavlje se bavi realizacijom programa koji na osnovu zadatog faktora ispune generiše potrebne upravljačke signale ka čoperu. PWM signal ćemo generisati kako na obično GPIO pinu (General Purpuse Input Output – ulaz ili izlaz opšte namene), tako i na specijalnim izlazima pridruženim dsPIC PWM modulu.
Primena mikroprocesora u energetici – Digitalno upravljani pogoni jednosmerne struje
10
2.3.2. PWM signal dobijen na GPIO pinu primenom jednog brojačkog modula
Ako koristimo mikrokontroler malih mogućnosti i cene, moguće je da on nema specijalnu periferiju za generisanje PWM signala, i da poseduje samo jedan brojački modul. Ovo često važi za razne PLC. U tom slučaju, blok dijagram algoritma prikazan na sledećoj slici predstavlja jedno od mogućih rešenja. Blok dijagram opisuje program za generisanje jednog PWM signala primenom samo jednog brojačkog modula, u timer režimu rada. Signal se generiše na odabranom digitalno izlazu opšte namene (GPIO).
Start
glavnog prg.
Inicijalizacija programski promenjivih
Inicijalizacija GPIO pina 1) upis neaktivnog stanja (0 ili 1) 2) selekcija GPIO (ako je mux) 3) izbor smera (out)
Inicijalizacija Timer 1 (clock div, upis početnog
perioda, dozvola rada start)
Dozvola prekida Timer 1
Ostale aktivnosti u toku osnovne petlje (main loop). Rad sa raznim IO (display, ser. comm, tasteri..)
Prekid Timer 1
Dozvoli i sledeći prekid Timer 1
Novi_Period=YES
Novi_Period=1
GPIO_PIN=1
TIMER_PERIOD = FAKTOR_ISPUNE
GPIO_PIN=0
TIMER_PERIOD = PWM_PERIOD-FAKTOR_ISPUNE
Čitanje novog FAKTOR_ISPUNE
Return
NO YES
Novi_Period=0 Novi_Period=1
Slika 9. Blok dijagram algoritma generisanja PWM signala sa jednim brojačkim modulom.
Najveća mana ovog pristupa je nepreciznost u definiciji ostvarenog PWM signala. Pri svakom ulasku i prekid, dolazi do određenog kašnjenja, interrupt latency, kako internog u samo hardware-u mikrokontrolera, tako i u software-u, pozivom rutina za upis registara i promenjivih na stack. Ovim dolazi do greške kako u PWM frekvenciji, tako i u ostvarenom faktoru ispune. Maksimalni (100%) i minimalni (0%) faktor ispune nisu mogući (osim ako se ne koriste dodatne intervencije u programu), jer je neophodno provesti neko vreme u prekidnoj rutini brojačkog modula. U slučaju dsPIC sa clock učestanosti od 1MHz, ako želimo generisati PWM signal 1kHz frekvencije neophodno je puniti PTMR registar timer modula prvo sa brojem X u opsegu od 0 -1000 , zatim sa 1000-X. X predstavlja brojni ekvivalent željenog faktora ispune (1 ≡ 1000).
2.3.3. PWM signal dobijen na GPIO pinu primenom dva brojačka modula
Mikroprocesor koji poseduje dva brojačka modula može generisati PWM signal sa manje greške. Sledeći blok dijagram algoritma upravo predviđa korišćenje dva brojačka modula, oba u režimu rada timer.
Primena mikroprocesora u energetici – Digitalno upravljani pogoni jednosmerne struje
11
Start glavnog prg.
Inicijalizacija programski promenjivih
Inicijalizacija GPIO pina 1) upis neaktivnog stanja (0 ili 1) 2) selekcija GPIO (ako je mux) 3) izbor smera (out)
Inicijalizacija Timer 1 (clock div, upis PWM perioda,
dozvola rada start)
Dozvola prekida Timer 2
Ostale aktivnosti u toku osnovne petlje (main loop). Rad sa raznim IO (display, ser. comm, tasteri..)
Prekid Timer 1
Dozvoli i sledeći prekid Timer 1
GPIO_PIN=1
TIMER1_PERIOD = PWM_PERIOD
GPIO_PIN=0
Čitanje novog FAKTOR_ISPUNE
Return
Inicijalizacija Timer 2 (clock div, upis početnog perioda)
Dozvola prekida Timer 1
TIMER2_PERIOD = FAKTOR_ISPUNE
Dozvola rada Timer 2 start
Prekid Timer 2
Dozvoli i sledeći prekid Timer 2
Return
Dozvola rada Timer 1 start
Slika 10. Blok dijagram algoritma generisanja PWM signala sa dva brojačka modula.
Ukoliko je brojački modul Timer 1 u free-run modu, on ne prestaje sa brojanjem i PWM perioda neće zavisiti od kašnjenja pri ulasku u prekid. Problem i dalje ostaje pri definisanju faktora ispune, greška i dalje ostaje. Greška napona je posebno značajna pri malim faktorima ispune, koji su uvećani usled kašnjenja negativne ivice signala. Moguće je delimično otkloniti ovaj problem tako što se pri upisu novog period za Timer 2 oduzme unapred poznato vreme kašnjenja. Naravno, ovo vreme je ponekad nemoguće tačno odrediti ukoliko postoji više izvora prekida pri radu mikrokontrolera. Takođe, i dalje je nemoguće ostvariti faktore ispune koji rezultuju uključenim stanjem manjim od ukupnog kašnjenja servisiranja prekida.
2.3.4. Generisanje PWM signala korišćenjem Motor Control modula
Sa stanovišta korisnika, najprostiji način generisanja PWM signala je primenom posebnog perifernog PWM modula. U slučaju dsPIC-a, Motor control module (MCM) je periferija upravo dizajnirana za generisanje do šest (ili do osam, zavisno od tipa) zavisnih ili nezavisnih PWM signala. Ova periferija se uglavnom koristi pri kontroli motora naizmenične struje, šest PWM izlaza se definišu kao tri komplementarna para, i svaki par se koristi za kontrolu jedne grane invertora. Za potrebe regulacije rada jednokvadratnog dc čopera, dovoljan je samo jedan PWM izlaz, direktno povezan na upravljačko kolo jedinog prekidača. Jedan PWM izlaz se može koristiti i u slučaju četverokvadratnog čopera, ali tada su neophodna dodatna logička kola za invertovanje signala.
Primena mikroprocesora u energetici – Digitalno upravljani pogoni jednosmerne struje
12
Da bi se Motor control module iskoristio za generisanje PWM signala, neophodno je 1. Podesiti ga (inicijalizovati) za generisanje jednog PWM signala odgovarajuće frekvencije i
polariteta izlaznog napona, 2. Za pravilno izvršenje digitalnog zakona upravljanja neophodno je menjati faktor ispune
sinhronizovano sa PWM signalom. Ovo s može omogućiti dozvolom prekida ovog modula i korišćenjem ove rutine za račun i sinhronu promenu faktora ispune.
Start
glavnog prg.
Inicijalizacija programski promenjivih
Inicijalizacija Motor Control module 1) PTCON enable, set PWM clock. set mode 2) PTPER = PWM_PERIOD 3) PWMCON2 updates enable 4) PDC1 = 0 ( počni sa 0 duty cycle) 5) PWMCON1 set PWMxH as PWM pin
Dozvola prekida MCM
Ostale aktivnosti u toku osnovne petlje (main loop). Rad sa raznim IO (display, ser. comm, tasteri..)
Prekid Motor Control module
Dozvoli i sledeći prekid MCM
Program za definisanje novog FAKTOR_ISPUNE
Return
Slika 11. Blok dijagram generisanja PWM signala primenom MCM
Signali unutar Motor Control modula i ostvareni PWM signal na izlaznom pinu dati su na sledećoj slici. Signali su dati pod pretpostavkom da je PWM perioda nepromenjena (PTPER nije menjan), dok je zadati faktor ispune promenjen u toku prve PWM periode (upis u PDC1 se desio bilo kada u toku PWM period 1). Sadržaj PDC1 se automatski prepisuje u sadržaj internog PWM1 duty cycle register sinhronizovano sa početkom nove PWM periode (signal prekida 2). Time je obezbeđena nedeljivost PWM perioda.
PWM faktor ispune
PWM period 1
PTMR
PTPER
Signali prekida sa PWM modula
PDC1
PWM signal
Automatski upisana nova vrednost iz PDC1
faktor ispune promenjen
PWM period 2
1 2 3
PWM1 duty cycle registar
Slika 12. Prikaz generisanja PWM signala unutar specijalnog PWM modula
Primena mikroprocesora u energetici – Digitalno upravljani pogoni jednosmerne struje
13
PWM jedinica radi u free run modu, u kome njen interni brojač broji samo ka gore. PWM period je upisan samo jednom, u toku inicijalizacije modula.
11 −=−=PWM
CLK
CLK
PWMff
TTPTPER
Primer za fclk = 8MHz
PTPER 0 32767 1000 8000 Tpwm 0 0.004095875 0.000125 0.001 fpwm ∞ 244Hz 8kHz 1kHz
PWM jedinica generiše prekid na početku svakog novog PWM perioda. Novi faktor se upravu računa u toku ove prekidne rutine, i priprema za sledeću periodu. Jednom upisana vrednost u PDC1 registar postaje aktivan tek na početku narednog PWM perioda. Ovim je realizovan digitalni odabirač na izlazu koji ne dozvoljava promenu upravljačke promenjive u toku periode rada sistema. PWM prekid se uglavnom koristi za sinhronizaciju rada digitalnog sistema upravljanja i za rad u realnom vremenu. Na početku PWM perioda se odabiraju svi signali na ulazu, potrebni za račun digitalnog zakona upravljanja, i upisuje nova vrednost upravljačke promenjive koja postaje aktivna na početku narednog perioda. Ovim je uvedeno jasno definisano transportno kašnjenje od jednog PWM perioda. U slučaju dsPIC realizacije PWM modula, moguće vrednosti faktora ispune su duplo veče u odnosu na upisanu vrednost perioda.
[ ]PTPERPDC ⋅= 201 Vrednost bitova PDC1 registra se porede sa bitovima PTPER, pomerenim za jedno mesto u levo. Vrednost LSB bita u okviru PDC1 registra definiše promenu stanja PWM signala na pozitivnu ili na negativnu ivicu clock signala. Ovim se preciznost duplira. Zašto povećavati preciznost PWM signala? Uzmimo primer 10-bitne PWM jedinice, 1024 tačke, koja treba da generiše 10 V signala, pri 340 V dc napona. Ako je vrednost PDC1 registra jednaka nuli, tada je izlaz na odgovarajućem PWM pinu neaktivna za celi PWM period. Takođe, izlaz na PWM pinu biće aktivan za ceo PWM period ako je vrednost registra PDC1 jednaka vrednosti koja se čuva u PTPER registru. Šta je dobijeno korišćenjem PWM perifernog modula ?
1. PWM signal je generisan u potpunosti hardverski i blizak je idealnom. Kašnjenje ulaska u prekidnu rutinu MCM modula postoji, ali ne remeti generisanje PWM signala!
2. Moguće je generisati PWM signal u punom opsegu. PDC1=0 daje konstantnu nulu na izlazu, PDC1>2PTPER daje konstantnu jedinicu na PWM izlazu.
3. Procesorska jedinica je u potpunosti oslobođena generisanja PWM signala i može se baviti i trošiti vreme na druge stvari.
4. Programiranje je lako. Uobičajeno da proizvođač mikroprocesora objavi softverske drajvere za svoje periferije (internet, korisničko uputstvo + CD sa primerima).
5. Motor control module poseduje dodatne funkcije koje je nemoguće realizovati softverski. Na primer:
a. Trenutni prekid PWM signala u slučaju greške. Fault shot down. Prekid je trenutan, i realizovan potpuno hardverski. Na prikazanoj slici pogona, logička nula na FLTA ulazu trenutno zaustavlja PWM signal i postavlja izlaz na neaktivno stanje.
b. Moguća je utiskivanje mrtvog vremena (deadtime) u radu dva komplementarna prekidača, funkcija od izuzetnog značaja za kontrolu naizmeničnih motora.
c. Moguće je PWM sinhronizacione impulse iskoristiti za start AD konverzije. Šta je ovde loše?
6. Mikroprocesor sa PWM jedinicom uobičajeno košta više od onog koji ne poseduje ovu periferiju ($0.5 skuplji).
Primena mikroprocesora u energetici – Digitalno upravljani pogoni jednosmerne struje
14
2.4. Merenje ili procena brzine rotora U većini pogona se zatvara povratna sprega po brzini i primenjuje regulator brzine. Cilj regulacije je da se obezbedi željeni karakter brzine u prelaznom režimu, velika tačnost u ustaljenom stanju kao i mala osetljivost ostvarene brzine na dejstvo poremećaja. Da bi uopšte bilo moguće regulisali brzinu motora neophodno je istu meriti ili proceniti. Signal sa davača brzine je potrebno obraditi i prilagoditi brojačkim (ili analognim) ulazima mikroprocesora. Zatim je programski potrebno postaviti signal brzine u odgovarajuću digitalnu formu, pogodnu za dalju obradu u regulacionoj strukturi tipičnog DSP koji radi sa matematikom sa nepokretnim zarezom .
2.4.1. Merenje brzine pomoću jednosmernog tahometra
Jednosmerni tahogenerator na svojim izlaznim priključcima generiše analogni signal čija je amplituda proporcionalan brzini rotora. Ovaj signal je moguće konvertovati u digitalnu reč koja predstavlja digitalni ekvivalent brzine rotora. Klasičan jednosmerni tahogenerator se danas retko koristi.
TG
ADCGain
ω VTG~ω
VREF=5V
ADC result
15 ………… 0
dsPIC
VAD
Slika 2.4.2.1 Digitalno merenje brzine primenom dc tahogeneratora
Postoji linearna srazmera između ostvarene i maksimalne brzine tahogeneratora, kao i ostvarene i maksimalne amplitude napona. Ukoliko korišćeni dc tahogenerator i AD konvertor ne poseduju značajnu nelinearnost, postoji i srazmera između maksimalnog broja i maksimalne brzine. Ukoliko je pojačavački blok podešen tako da maksimalni napon tahogeneratora dovodi do maksimalnog mogućeg napona na ulaza AD konvertora,
REFMAX
AD
MAXTG
REF
MAXTG
MAXTG
TGTG
VV
VVGain
kV
kV
⋅=→
⎪⎪⎪
⎭
⎪⎪⎪
⎬
⎫
=
⋅=
⋅=
ωωω
ω
za N bitni AD konvertor važi 12_ −= N
MAXrecdig
ωω
Ukoliko se iskoristi mogućnost automatsko pomeranje rezultata AD konverzije, dobija se ω VTG VADC ADC mod 1* ADC mod 2** ADC mod 3** 0 rpm 0V 0V 0 0 0
ωMAX VTGMAX 5V 1023 65472 (0xFFC0) 32737 (0x7FE0) ∼ 32767
Registar ADCON1, FORM 9-8 bits : 00 →mod0* 0000 00xx xxxx xxxx 10 →mod2** xxxx xxxx xx00 0000 11 →mod3*** sxxx xxxx xxx0 0000
s- znak, ovde nula
Primena mikroprocesora u energetici – Digitalno upravljani pogoni jednosmerne struje
15
2.4.2. Merenje brzine pomoću naizmeničnog tahometra
Naizmenični tahogenerator je jednofazni ac generator sa magnetima na rotoru koji na svojim izlaznim priključcima generiše analogni signal čija je frekvencija proporcionalna brzini rotora. Ovu frekvenciju je moguće meriti i na taj način dobiti digitalni ekvivalent brzine rotora
TG NF Filter
fTG~ω T2CLK
TMR2 +
-
dsPIC
Slika 2.4.2.2 Digitalno merenje brzine primenom ac tahogeneratora
Pored frekvencije, i amplituda generisanog ac signala raste sa promenom brzine. Ovakav signal se ne može dovoditi direktno na priključke mikrokontrolera i neophodno ga je prvo filtrirati i uravnotežiti njegovu amplitudu. Ovo se postiže prostim RC kolom čije je slabljenje signala sa porastom frekvencije proporcionalno porastu amplitude signala na izlazu ac tahometra sa povećanjem brzine. Rezultat je ac signal konstante amplitude u celom opsegu brzina koji se dalje dovodi na ulaz komparatora na dalju obradu. Komparator vrši poređenje prostoperiodičnog signala sa nulom i na izlazu proizvodi pravougaonu povorku čija je frekvencija proporcionalna brzini rotora:
)(60
)( rpmnnp
Hzf TGTG =
gde je npTG broj pari polova tahogeneratora (uobičajeno 8, 16 ) A) Prvi način merenja brzine je brojanje broja pristiglih impulsa u toku jedne periode merenja brzine. Na slici je prikazana povorka od N impulsa pridošla u vremenskom intervalu T.
1 2 N
nT(n-1)T t Ukoliko se ova povorka dovede na ulaz brojačke periferije, koja se podesi na counter mod rada, rezultujuća vrednost u brojačkom registru nakon T vremena iznosiće
)(60
2 rpmnfnp
ff
TMRmerenja
TG
merenja
TG ==
Primer: Za ac tahogenerator sa 8 pari polova (npTG=8) i 100 ms periodu merenja brzine, broj pristiglih impulsa kao i greška brzine usled jednog izgubljenog taho impulsa (neobuhvaćen u toj periodi) impulsa su dati u sledećoj tabeli
Brzina vratila TMPR2 Greška brzine usled usled ±1 tacho impuls 100 rpm 1.33 75 rpm 3000 rpm 40 75 rpm
Greška je prevelika i ovako ne možemo da radimo. Moguće je dalje povećati broj polova tahogeneratora, ili značajno produžiti perioda odabiranja. Oba rešenja nisu praktična.
Primena mikroprocesora u energetici – Digitalno upravljani pogoni jednosmerne struje
16
B) Drugi način merenja brzine je merenje vremena između dva pridošla impulsa Na slici su prikazana dva impulsa sa tahogeneratora i intervali clock signala brojačkog modula koji će biti iskorišćen za merenje vremena
1 2
t TTG~ 1/fTG
TCLK
Ovu povorku impulsa treba dovesti na ulaz brojačke periferije koja radi u capture modu, modu za ‘hvatanje’ vremena između dve ivice impulsa. Brojački registar se automatski resetuje po dolasku prvog impulsa i ukoliko periferija radi sa fCLK po dolasku drugog impulsa u brojačkom registru imamo
)(160
2rpmnnp
ff
fTT
TMRTG
CLK
TG
CLK
CLK
TG⋅
⋅===
Ukoliko brojačka periferija ne poseduje capture mod, neophodno je generisati spoljni prekid pri svakoj ivici impulsa i iskoristiti jedan od brojački modula za merenje vremena između dva prekida. Primer: Za ac tahogenerator sa 8 pari polova (npTG=8), brojački modul sa fCLK = 8MHz timer, 100 ms periodu merenja brzine, broj pristiglih impulsa kao i greška brzine usled jednog izgubljenog clock impulsa (neobuhvaćen u toj periodi) su dati u sledećoj tabeli.
Brzina vratila TMPR2 greška 100 rpm 4800000 2.08 e-7
3000 rpm 20000 0.00005 30000 rpm 2000 0.0005
Ovde je preciznost odlična, ali treba i dalje paziti
• Brojač mora biti 32 –bitni • Treba vršiti operaciju deljenja ! • Dolazak informacije o brzini nije u sinhronizmu sa periodom regulacione petlje brzine • Pri uvećanju brzine apsolutna preciznost se umanjuje ali značajna nam je relativna koja ostaje
ista. Ovo je jedino pravo rešenje za ac tahometar.
2.4.3. Merenje položaja i procena brzine pomoću optičkog enkodera
Optički inkrementalni enkoder se često primenjuje za merenje rotora položaja. Princip rada je dat na sledećoj slici.
Primena mikroprocesora u energetici – Digitalno upravljani pogoni jednosmerne struje
17
Optičkom enkoderu je neophodno spoljno napajanje. Izlaz inkrementalnog enkodera su tri signala A, B i Index. A signal je pravougaoni signal čiji su inkrementi proporcionalni promeni položaja, B signal je isto što i A samo pomeren za T/4 i služi za detekciju smera kao i za uvećanje rezolucije brojanja. Index signal služi za dobijanja apsolutne pozicije i aktivan je jednom u celom krugu. Pojedini enkoderi imaju duplo više izlaza, tako što svaki signal ima i svoj komplementarni par. Time se mogu koristiti diferencijalni enkoder drajveri i uvećava se otpornost na uticaj šuma.
A
B
Index
Slika. Izlazi optičkog enkodera
Osnovni parametar inkrementalnog enkodera je broj impulsa po jednom mehaničkom obrtaju. Položaj osovine motora pomoću enkodera dobijamo u formi broja
Nn
m πθ 2=
N – rezolucija pri merenju položaja osovine (broj impulsa u punom krugu, 512,1024, 2048, 5000). n – broj prebrojanih impulsa u određenom vremenskom intervalu. Ovaj broj ujedno predstavlja brojnu vrednost ugla. Ukoliko se izbroji N impulsa, napravljen je pun krug. Veza između ugla u radijanima, i brojčane vrednosti ugla glasi
Nn
Nbrojrad
==)(
2)( θ
πθ
Enkoder ima dve faze (A i B) i detekcijom pozitivnih i negativnih ivica je moguće četiri puta uvećati rezoluciju merenja položaja. Četiri puta veće preciznost i detekcija smera se dobijaju na sledeći način UP = A↑·B+ A·B↑ + A↓·B+A·B↓ DOWN = A↑·B+ A·B↑ + A↓·B+A·B↓ UP signal postoji samo pri jednom smeru, DOWN samo pri drugom smeru (kada B prednjači A). U tom slučaju važi
θ∆πθ nNn
m ==4
2
Mogući brojni opsezi signala pozicije dati su na sledećoj slici.
t
θ(rad) θenc(broj)
N
0
2π
0
N/2 π
θDSP(broj)
0xFFFF
0
0x7FFF
4N
0
2N
Pri praktičnoj realizaciji merenja položaja primenom inkrementalnog enkodera treba koristiti brojački modul sa bazom (period registrom) jednakom broju impulsa po obrtaju. Na taj način, sadržaj brojača u svakom trenutku predstavlja brojni ekvivalent ugaonog položaja rotora od 0 do 2π. Mikrokontroler sada može u trenucima odabiranja da očita sadržaj brojača i dobije podatak o trenutnoj poziciji rotora. Inkrementalni enkoder daje relativno veliki broj impulsa po obrtaju što u velikom opsegu brzina omogućuje dovoljno preciznu procenu brzine rotora na osnovu broja impulsa nadošlih u toku fiksnog vremenskog perioda.
Primena mikroprocesora u energetici – Digitalno upravljani pogoni jednosmerne struje
18
Svaki novodošli impuls predstavlja pomeraj od ∆θ. Ukupan ugaoni pomeraj u periodi T, između trenutaka k i k-1, se računa korišćenjem ukupnog broja pridošlih impulsa.
radN
iliradN
nkk422)1()( ππθ∆θ∆θθ ===−−
Pošto u digitalnom sistemu ne poznajemo vrednost položaja između dva trenutka odabiranja, srednja vrednost brzine rotora između dva trenutka odabiranja se mora računati aproksimacijom
[ ][ ]sTradn
Tkk
dtdsrad θ∆θθθω =
−−≈=
)1()()/(
S druge strane, brojna promena ugla u jednoj periodi T, koju poseduje DSP, jeste proporcionalna promeni ugla u radijanima i samim tim i srednjoj vrednosti brzine motora. Ako brojnu vrednost promenu ugla iskoristimo za račun srednje brzine,
)()()( 1 brojbrojbroj kk −−= θθω kakav je odnos toga broja sa stvarnom brzinom?
)(42)(
42)()(
42)()(
)/( 11 brojNT
brojNTT
brojbrojNT
radradsrad k
kkkk ωπθπθθπθθω ==∆=
−=
−= −−
Sada je neophodno uskladiti brojne opsege referentne i merene brzine rotora. Pošto se referentna brzina zadaje off-line, u cilju uštedu procesorskog vremena nju treba prebaciti u brojni opseg merene brzine.
min)/(60
)(260
2)/(2
)( onNTrpmnNTsradNTbroj refrefrefref ===π
πωπ
ω
( ) ( ) ( ) min)/(
604)(
24
602)/(
24)( onTNrpmnTNsradTNbroj refrefrefref ===
ππω
πω
Primer: Ukoliko je N =512*4 uz T = 10ms, da bi ostvarila brzina od 1000 rpm, treba zadati ≈ 683.
Ukoliko je N =512*4, uz T = 1ms, da bi ostvarila brzina od 1000 rpm, treba zadati ≈68. ⇒ Prikazana metoda loše radi ukoliko pristiže nedovoljan broj impulsa!
• Metoda je vrlo neprecizna za male brzine. • Rezolucija opada sa smanjenjem periode merenja brzine!
Problem se može rešiti alternativnim metodama • Enkoder sa više impulsa, ali ovim se problem samo umanjuje, • Merenje vremena između dva impulsa, • Observer brzine, • Kombinovana metoda (najbolje rešenje),
• Jedna metoda za velike brzine, druga metoda za male brzine
• određivanje brzine merenjem broja impulsa n u vremenskom intervalu T; broj impulsa enkodera po jednom obrtaju je N:
nTN
on 60min]/[ =
• određivanje brzine merenjem vremena ∆Ti proteklog između dva uzastopna impulsa
iTNon
∆60min]/[ =
Primena mikroprocesora u energetici – Digitalno upravljani pogoni jednosmerne struje
19
• kombinaciona metoda. Potrebno je izmeriti broj impulsa enkodera u intervalu odabiranja, vreme proteklo od početka intervala do pojave prvog impulsa i vreme proteklo od poslednjeg impulsa do kraja intervala. Na taj način je moguće odrediti srednju širinu impulsa sa znatno većom tačnošću nego u slučaju kad se meri širina jednog impulsa. Neophodno je imati barem dva impulsa u jednom periodu.
2.5. Merenje i procesiranje ostalih relevantnih signala u pogonu
2.5.1. Merenje struje armature
Struja u većini pogona teče u oba smera, iz tog razloga je treba meriti bipolarnim davačima (senzorima) i procesirati kao bipolaran signal. Takođe, u okviru DSP treba predvideti i odgovarajući numerički opseg signala struje sa promenom znaka. Struja se može meriti LEM sondom, koja na izlazu daje ±VLEM
MAX za ±IMAX (GLEM= VLEMMAX/ IMAX), ili strujnim šantom, koji daje ±Rsh ·IMAX za ±IMAX . Sa
druge strane, ulaz internog DSP AD konvertora je uvek unipolaran, od 0 do VDD. Da bi se maksimalno iskoristio merni opseg potrebno je signal sa senzora primenom operacionog
pojačavača prevesti u opseg od 0-VADREF. U većini DSP, VAD
REF=VDD, gde je VDD napon napajanja. • Operacioni pojačavač za pojačanje strujnog signala mora biti podešen tako da ima izlazni
ofset, koji iznosi polovinu mernog opsega AD konvertora pri nultoj struji.
VVOFFSETAMPREFAD 5.22
_ ==
U slučaju novih DSP koji rade sa napajanjem od 3.3, ofset mora biti podešen na 3.3V/2 = 1.65V. Najbolje je naponski ofset pojačavača praviti na osnovu referentnog napona AD konvertora, ako je isti na raspolaganju van DSP.
• Pojačanje operacionog pojačavača treba podesiti tako da signal struje ±IMAX ulazi u 0 - 5V
opseg na ulazu AD konvertora . Primer 1kW invertora sa šantom u jednosmernom međukolu. Postavljen je ΩmRshunt 60= za
struju od AI MAXDC 4.7±=± . Pojačanje neizolovanog operacionog pojačavača treba da glasi
63.52
=⋅⋅
= MAXDCshunt
REFAD
AMPIR
VG
Za LEM koji radi ima izlaz ±VLEMMAX
63.52
=⋅
= MAXLEM
REFAD
AMPV
VG
Pojačanje i nula ofset diferencijalnog operacionog pojačavača definišu otpornici u povratnoj sprezi. Njih treba birati sa 1% tolerancije. Ipak, kalibracija na fabričkoj liniji, kao i dodatno podešavanje nula ofseta kada pogon ne radi, je toplo preporučljiva.
Broj u AD konvertoru, koji predstavlja struju međukola, se može izraziti kao:
[ ] REFAD
REFAD
ALEMAMPREFAD
IN
VxFFCVAIGGxFFF
VVNUMBERADC 00
200_ ⋅⎟
⎟⎠
⎞⎜⎜⎝
⎛+⋅⋅=⋅=
Broj 0xFFC0 (65472) je maksimum opsega i dobijen je pod pretpostavkom da je AD 10-bitni i da radi u modu 2, u kome rezu1tat automatski pomera 6 bita ulevo uz donjih šest LSB jednaka 0. Usled pravilno podešenog ukupnog pojačanja operacionog pojačavača
[ ] [ ] [ ]MAX
AREFAD
AMAXLEM
REFAD
MAX
MAXLEM
AAMPLEM IAIVAI
VV
IVAIGG
22=⎟
⎟⎠
⎞⎜⎜⎝
⎛
⋅⎟⎟⎠
⎞⎜⎜⎝
⎛=
Primena mikroprocesora u energetici – Digitalno upravljani pogoni jednosmerne struje
20
sada dobijamo [ ]
REFAD
REFAD
REFAD
MAX
A
VVV
IAINUMBERADC 65472
22_ ⋅⎟
⎟⎠
⎞⎜⎜⎝
⎛+=
i konačno ADC rezultat je u opsegu 0 – 0xFFF0, za ceo opseg struje od ±IMAX.
[ ] 3273632736_ +⋅=MAX
AI
AINUMBERADC
Usled greške u otpornicima, ofset ne mora biti tačno polovina. Ovo se može rešiti tako što se broj 32736 zameni primenjivom koja se povremeno kalibriše kada pogon ne radi. Kada je rezultat AD konverzije spreman i pomeren za 4 bita ulevo, ostaje nam da eliminišemo ofset i time unipolaran pozitivan rezultat prebacimo u bipolaran opseg. Nakon:
( ) )32736(__ ≈−= OFFSETADCNUMBERADCkTI Dobijamo bipolarni strujni signal čija veza sa stvarnom merenom strujom glasi
( ) [ ] [ ] MAXMAXAMAX
A IIAII
AIkTI +−∈⋅= ,32736
Za signal struje unutar DSP važi
Struja ADC rezultat Broj u DSP Značenje u 1.15 formatu
+IMAX 0xFFC0 0x7FE0 približno +1
-IMAX 0x0000 0x8020 približno -1 čime je postavljen osnov za rad u relativnim jedinicama. Celokupna struktura procesiranja signala struja data je na sledećoj slici
± IMAX
± VLEM
OP AD
dsPIC
VOFSET
0xFFC0 0x0000
+ -
0x7FE0 (OFSET)
0x7FE0 0x8020
0, VADREF
I(kT)
L E M
VADREF
Gore izvršena analiza ne zavisi od načina na koji je izvršeno galvansko odvajanje signala struje. Ovo odvajanje je obično potrebno, pogotovo ako se koristi merni strujni šant. U slučaju dodatnog kola za galvansku izolaciju, njegovo pojačanje je neophodno uključiti u analizu i korigovati pojačanje operacionog pojačavača.
2.5.2. Merenje napona jednosmernog međukola Napon jednosmernog kola merimo pod pretpostavkom da je uvek pozitivan, i da ima svoju maksimalnu vrednost. Maksimalna merljiva vrednost ovog napona mora biti veća od očekivane pri tolerisanom porastu napona mreže, uobičajeno +10%. Maksimalna merljiva vrednost napona jednosmernog kola sa jedne strane zavisi od željene preciznosti, a sa druge strane od tolerancije rasta ovog napona u toku rekuperacije koja zavisi od naponske margine kako korišćenih kapaciteta, tako i prekidačkih elemenata.
Primena mikroprocesora u energetici – Digitalno upravljani pogoni jednosmerne struje
21
Može se zaključiti da napon jednosmernog međukola mora biti moguće meriti barem do 400V, u slučaju jednofaznog ulaza (230V*1.1*1.41 < 400V). Mi možemo usvojiti 400V za maksimalnu merljivu vrednost napona jednosmernog međukola, s time da naponi preko te vrednosti neće biti merljivi i moraju voditi ka grešci i isključenju pogona. U praktičnoj primeni pogona, usvaja se maksimalni merljivi napon jednosmernog kola i do 40% veći od onog predviđenog porastom napona mreže. Time se ostavlja mogućnost kratkotrajnog porasta u toku režima rad kočenja, kao i pri uvećanom mernom šumu. Uzmimo na primer razdelnik napona sa dva 221k otpornika i potenciometrom podešenim na 3.7k. Ovim se dobija pojačanje 120 (1/0.0083). Maksimalni merljivi napon je time postavljen na vrednost 600V. Napon na ulazu AD je u opsegu 0- 5V.
)()(7.3442
7.3_ VV
VVVV
kkkV DCMAX
DC
REFAD
DCINADC =⋅+
=
Napon na ulazu AD konvertora se dalje pretvara u broj i dobija se
0000100)( _ xFFCVVxFFCV
VV
VxFFC
V
VbrojV MAX
DC
DCDCMAX
DC
REFAD
REFAD
REFAD
INADCADC ⋅=⋅⎟
⎟⎠
⎞⎜⎜⎝
⎛⋅⋅=⋅⋅=
Nama je cilj da je maksimalni napon jednak broju jedan, u 1.15 formatu, a to je 32767 (ili blizak njemu). Za to je neophodan pomeraj rezultata za jedan bit udesno.
327362
001)()( ⋅=⋅=>>= MAXDC
DCMAXDC
DCADCDC
VVxFFC
VVbrojVbrojV
Ovim je i naponski signal predstavljen u relativnim jedinicama, Vbase =VDC
MAX.
base
DCDC V
VVupV )(.).( =
Sada važi:
napon ADC rezultat Broj u DSP Značenje u 1.15 formatu
+VMAX 0xFFC0 0x7FE0 približno +1
0 0 0 0 Ukupna šema procesiranja signala napona jednosmernog međukola data je na sledećoj slici.
AD
dsPIC
0xFFC0 0x0000
0, VDCMAX
VDC(kT)
0, VADREF
Shift >> 1
0x7FE0 0x0000
VDC(t)
R1
R2
U ovoj analizi je zanemareno kolo za galvansko odvajanje signala. Ukoliko postoji, ulazni naponski opseg ovog kola, kao i njegovo pojačanje (odnos Vout/Vin), se mora uzeti u obzir prilikom odabira otporničkog razdelnika kao i eventualnog dodatnog pojačavača nakon kola za odvajanje. Cilj i dalje ostaje isti, VDC
MAX mora rezultovati u VADREF na ulazu AD konvertora radi maksimalne preciznosti
merenja.
Primena mikroprocesora u energetici – Digitalno upravljani pogoni jednosmerne struje
22
2.6. Digitalno upravljanje DC motorom u zatvorenoj povratnoj sprezi po brzini
2.6.1. Šta je cilj ? U većini pogona se zatvara povratna sprega po brzini i primenjuje regulator brzine. Cilj regulatora je da obezbedi potreban kvalitet upravljanja brzinom električne mašine u svim radnim režimima. Pod time se podrazumeva upravljanje koje obezbeđuje željeni karakter brzine u prelaznom režimu, veliku tačnost u ustaljenom stanju kao i malu osetljivost ostvarene brzine na dejstvo poremećaja. Za kvalitetnu regulaciju brzine mašine neophodno je
• obezbediti linearnu promenu momenta na motoru. U slučaju jednosmernog pogona to je zadatak PWM modula. U tom slučaju se može dalje optimalno primeniti linearni regulator.
• Meriti ili proceniti brzinu mašine • Realizovati digitalni zakon upravljanja • Podesiti parametre zakona upravljanja u skladu sa željenim odzivom i parametrima objekta
DSP poseduje signal brzine u odgovarajućoj digitalnoj formi. Ovaj signal se dalje vodi na ulaz digitalnog regulatora, gde se poredi sa referentnim brojem zadatim u istom brojnom opsegu. Konačno, digitalni regulator upravlja izlaznim naponom tako da se anulira signal greške na njegovom ulazu. Digitalni regulator upravlja izlaznim naponom preko PWM drajvera, kome zadaje referentni faktor ispune PWM signala. U složenijoj varijanti upravljanja (koja ovde nije obrađena) , digitalni regulator brzine zadaje brojčanu vrednost referentnog momenta, koji se realizuje na motoru primenom dodatnog strujnog regulatora. U ovom slučaju dodatni digitalni strujni regulator kontrolom faktora ispune postavlja signal greške struje na nulu. Naravno, u ovom slučaju je pored signala brzine posedovati i digitalnu vrednost signala struje armature unutar DSP.
2.6.2. Digitalni PI regulator brzine u pozicionoj i inkrementalnoj formi
Digitalni regulator brzine na svom ulazu ima zadatu i ostvarenu vrednost brzine. Na osnovu ova dva signala se dobija signal greške koji se dalje uvodi u regulator.
BRZINAREFBRZINAerr −= _ Signal greške je diskretizovan kako po amplitudi, tako i po vremenu i za njegovu dalju obradu treba koristiti diskretnu verziju proporcionalno integralnog regulatora. Tipična forma linearnog regulatora sa proporcionalnim i integralnim članom glasi,
errs
KKoutA
iAp ⎟
⎟⎠
⎞⎜⎜⎝
⎛+=
Nju možemo diskretizovati primenom Euler aproksimacije, zamenom s = (1-z-1)/T.
errz
KerrKout ip 11 −−
+=
uz TKKKK A
iiA
pp == Ovo je poziciona forma regulatora. Poziciona forma digitalnog PI regulatora se računa unutar DSP korišćenjem sledećih diskretnih jednačina:
)()()()()()(
kTerrKkTIkToutkTerrKTkTIkTI
p
i
+=+−=
Kao što se vidi, prvo je izračunat integralni deo regulatora. Integral se svodi na sumiranje signala greške skalirano za Ki. Zatim, nova vrednost izlaza se računa kao zbir integralne sume i trenutnog proporcionalnog dejstva. Osnovni problem ovog pristupa nastaje prilikom nelinearnog rada regulatora, kada je izlaz regulatora u svom limitu. Pri velikom signalu greške izlaz regulatora trenutno dostiže limit
Primena mikroprocesora u energetici – Digitalno upravljani pogoni jednosmerne struje
23
(na primer, nagli skok zadate brzine izaziva pun napon na izlazu) ali integralna suma i dalje sumira signal greške i može ga akumulisati i preko limita. Sada regulator više nije u mogućnosti da reaguje na negativnu vrednost greške, mora prvo da vrati integralnu sumu ispod limita. To se zove navijanje regulatora (wind-up) Inkrementalna forma PI regulatora se dobija iz osnovne diskretne forme:
errKerrzKzout ip +−=− −− )1()1( 11 ili
[ ]errKzKoutzout ip +−+= −− )1( 11 Inkrementalna forma digitalnog PI regulatora se računa korišćenjem sledećih diskretnih jednačina:
[ ])()()(
)()()()(
kTInckToutkTout
kTerrKTkTerrkTerrKkTInc ip
+=
+−−=
Prvo se računa inkrementalni deo celokupne PI akcije (Inc), zatim se taj deo dodaje ukupnoj akumulisanoj sumi na izlazu (Out+Inc). Implementacija limita regulatora je sada jednostavna, samo se limitira izlazna suma.
LOWLOW
HIGHHIGH
LIMITkToutLIMITkToutif
LIMITkToutLIMITkToutif
kTInckToutkTout
=<
=>
+=
)()(
)()(
)()()(
Sledi grupa diskretnih jednačina regulatora brzine DC motora. Primer je za jednokvadrantnim čoper, brzina motora se direktno reguliše naponom (faktorom ispune), bez unutrašnje strujne petlje i bez kompenzacije napona jednosmernog međukola.
[ ]
0)(_0)(__)(__)(_
)()(_)(_
)()()()(_
=<=>
+=
+−−=−=
kTISPUNEFAKTORkTISPUNEFAKTORifPERIODPWMkTISPUNEFAKTORPERIODPWMkTISPUNEFAKTORif
kTInckTISPUNEFAKTORkTISPUNEFAKTOR
kTerrKTkTerrkTerrKkTIncBRZINAREFBRZINAerr
ip ωω
Struktura regulatora je prikazana na sledećoj slici.
Kpω
z-1
+ -
Kiω
+ -
ωRREF
ωR +
+ +
+
V_MAX
V MIN
z-1
VaREF
Slika 13. Digitalni PI regulator u inkrementalnoj formi
Prikazani regulator je u inkrementalnoj formi sa proporcionalnim dejstvom u direktnoj grani. Moguće poboljšanje je premeštanje proporcionalnog dejstva u lokalnu povratnu spregu.
Primena mikroprocesora u energetici – Digitalno upravljani pogoni jednosmerne struje
24
2.6.3. Blok dijagram algoritma upravljanja DC motorom
Na slici je dat pojednostavljeni blok dijagram algoritma za upravljanje brzinom jednosmernog motora regulacijom napona armature.
PWM signal frekvencije 16kHz se generiše unutar Motor Control Modula. Sam PWM prekid nije dozvoljen jer nema potrebe za merenjem struje, niti za računom brzinske petlje toliko brzo. Generiše se samo jedan PWM izlaz.
Brojački modul Timer1 je iskorišćen za definisanje periode odabiranja brzinske petlje. On je podešen da daje prekid po isteku 1ms perioda. Prekid je dozvoljen i u ovoj prekidnoj rutine se vrši sinhronizovano čitanje brzine i njene zadate vrednosti, račun digitalnog zakona upravljanja i definisanje novog faktora ispune. Novi PWM faktora ispune postaje aktivan sa prvom sledećom PWM periodom i ostaje važeći tokom sledećih 1 ms.
Blok dijagram algoritma se sastoji iz tri osnovna dela, a. Inicijalizacije nakon DSP reseta. Ovde je bitno dobro inicijalizovati Motor Control
Moduli koji će omogućiti PWM izlaz kao i inicijalizovati Timer 1 koji nam obezbeđuje periodu odabiranja brzinske petlje.
b. Glavni program (mainloop) koji se bavi ostalim stvarima u pogonu. c. Prekid Timer1 koji se dešava svakih 1ms i u kojem se čitaju sve veličine, rešava PI
regulator brzine i definiše novi odgovarajući faktor ispune.
Start
glavnog prg.
Inicijalizacija programski promenjivih
Inicijalizacija Motor Control module 1) PTCON enable, set PWM clock. set mode 2) PTPER = PWM_PERIOD 3) PWMCON2 updates enable 4) PDC1 = 0 ( počni sa 0 duty cycle) 5) PWMCON1 set PWMxH as PWM pin
Dozvola prekida Timer 1
Ostale aktivnosti u toku osnovne petlje (main loop). Rad sa raznim IO (display, ser. comm, tasteri..)
Prekid Timer 1
Dozvoli i sledeći prekid Timer1
Upis novog faktora ispune PDC1=FAKTOR_ISPUNE
Return
Čitanje ADC DC napon, struja armature
Kontrola rampe referentne brzine
PI regulator brzine
Čitanje brzine sa DC tachometra
Inicijalizacija Timer 1 (clock div, upis PWM perioda,
dozvola rada start)
Slika 14. Pojednostavljeni blok-dijagram programa za regulaciju brzine jednosmernog motora
Primena mikroprocesora u energetici – Digitalno upravljani pogoni jednosmerne struje
25
2.6.4. Opis C koda - za regulaciju brzine DC motora
Kod za regulaciju brzine jednosmernog motora je napisan u skladu sa blok dijagramom algoritma opisanim u prethodnom poglavlju. One se može podeliti na četiri osnovna dela (deo inicijalizacije podeljen na dva dela). (1) kod za inicijalizaciju µC (startup code). Po resetu se izvršava ovaj deo koda. U njemu je neophodno podesiti rad µC i svih potrebnih periferija. U ovom delu koda pozivaju se programi za
1. inicijalizaciju (podešavanje) sistemskih modula (clock divider, FLASH memory , watchdog ... ) 2. inicijalizaciju perifernih modula (ADC, PWM module, UART, Encoder interface, Timer...), 3. inicijalizaciju globalnih programskih promenjivih,
Kada je sve podešeno, dozvoljavaju se potrebni prekidi i ulazi u mainloop.
(2) Podešavanje rutina za inicijalizaciju pojedinih periferija Uobičajeno u posebnim datotekama. Svaka periferija ima svoju rutinu za podešavanje (init. routine). U zavisnosti od toga koja nam periferija treba, UARTinit(), PWMinit(), TimerInit(), QEIinit() ili druge će biti pozivane od strane koda za inicijalizaciju. Ovde treba znati šta nam koja periferija radi. Na primer, u slučaju Motor Control Module, potreban nam je jedan PWM izlaz, Free Run mod rada, PWM perioda koja daje 16kHz i tako dalje. Sve to možemo podesiti u PWMinit(). (3) osnovna petlja (mainloop). Počinje da se izvršava nakon izvršenja koda za inicijalizaciju. U osnovnoj petlji se izvršavaju programski zadaci za koje nije kritičan početak, kao ni vreme izvršenja
1. rad sa displejima (ljudsko oko je tromo), 2. rad sa tastaturom(ljudi kucaju sporo), 3. rad sa potenciometrom za unos nove brzine ili nekog limita (promena spora), 4. proračun temperature motora (neće se ona brzo menjati) 5. rad sa sporom serijskom vezom ....
(4) Prekidna rutina Timer 1 (period od 1 ms).
Ova prekidna rutina je glavna programska celina ovako osmišljenog programa. U ovoj prekidnoj rutini se izvršavaju svi zadaci koje je neophodno sinhronizovati sa periodom upravljanja digitalnog sistema upravljanja. Svake 1ms je neophodno
1. pročitati sve za račun potrebne analogne ulaze, na primer odbirke struje i napona međukola, 2. izračunati novu vrednost brzine rotora. Način zavisi od tipa senzora. 3. izračunati potreban digitalni zakon upravljanja brzinom u cilju definisanja novog faktora
ispune. Limitirati izlaz ako treba. 4. upisivanje novog faktora ispune koji se aktivira u novoj PWM periodi i ostaje aktivan tokom
sledećih 1ms
2.6.5. C kod za regulaciju brzine DC motora
U ovom poglavlju je dat C kod za regulaciju brzine jednosmernog motora. Dati program nije potpun, detaljan program je na raspolaganju tokom vežbi u laboratoriji. U kodu nedostaju detalji inicijalizacije enkoderskog modula (QE), i inicijalizacija timer 1, ali niko nije savršen, a ova skripta to svakako nije.
(1) kod za inicijalizaciju µC (startup code) i (3) osnovna petlja (main).
Mehanizam za izvršenje C koda uvek prvo poziva main funkciju. U njen početak treba postaviti kod koji treba da se izvršava odmah nakon reseta DSP.
Primena mikroprocesora u energetici – Digitalno upravljani pogoni jednosmerne struje
26
Ipak, važno je razumeti da C kod pre izvršenja zahteva određena podešavanja i nikad nije prvi pozvan nakon reseta. Po resetu, DSP prvo poziva asemblerski startup kod, koji se linkuje na mesto reset vektora i koji podešava sve potrebne uslove za rad C koda. Na primer, memoriju, stek, upisuje brojeve u inicijalizovane C promenjive, upisuje nule u one koje nisu inicijalizovane, i tako dalje. Na kraju ovaj asemblerski kod ima skok lcall _main i main sada postaje glavna faca i vodi stvar.
int main(void) // lokalne promenjive korišćene u osnovnoj petlji unsigned int buffer[5]; // buffer ili niz za cuvanje naredbe sa serijske veze int ser_veza; // privremeno cuvanje nove reference brzine pristigle sa serijske veze // Inicijalizacija korišćenih perifernih modula
ADPCFG = 0xFFFC; // PORTB je mulipleksiran sa AD. Svi pinovi GPIO, AD su RB0,RB1 UARTinit(); // podešavanje parametara serijske veze u UART perif. modulu PWMinit(); // podešavanje PWM signala u MCM perif. modulu TimerInit(); // podešavanje korišćenog Timer1-a QEIinit(); // podešavanje enkoder periferije, za merenje brzine TRISE=0xFFC0; // iskreno, blage veze nemam, pitati Porobica, posle reci i meni. Objasniti // mi polako, imati strpljenja // Inicijalizacija regulatora brzine ref_brzina =0; // referentna brzina je zasad nula (vazno!, da motor ne potrci po resetu) Ref_napon=0; // resetuje se suma PI regulatora i resetuje se prethodna greška.
SpeedErr_old=0; // Ove dve promenjive je neophodno resetovati ne samo ovde // već pre svakog starta, inače one zadržavaju ne-nula vrednost nagomilanu // tokom prethodnog rada pogona. Vazno! // main petlja, izvršava se u pozadini, dok ona radi, cekamo Timer 1 prekid. while (1) putsUART1 ((unsigned int *)Txdata); // konstantno šalje odabrane podatke ka PC-u
if(getsUART1(4, buffer, 65535)) // ako je primljena kompletna poruka sa PC-a
ser_veza=convert(buffer); // obradi je. U ovom slučaju, uzmi novu referencu ref_brzina=ser_veza; // beskonačna petlja // oznacava kraj main funkcije
(2) Podešavanje rutina za inicijalizaciju pojedinih periferija
Svaka rutina se podešava u okviru svoje init datoteke. Ovde je kao primer priložena uprošćena PWMinit() funkcija koja podešava Motor Control Module.
#define PWM_PERIOD 1000 // vrednost za frekv. od 16kHZ, clock frequency 16MHz (16MIPS-a) void PWMinit() IEC2bits.PWMIE = 0; // PWM prekid se neće koristiti , zabrani ga IEC2bits.FLTAIE = 0; // ovo nije dobro (zabranjen je trenutni PWM FAULT ulaz), mada jeste // logično ako ga HW ne podržava (nema komparatora) PTPER = PWM_PERIOD; // vrednost za frekv. od 16kHZ, clock frequency 16MHz (16MIPS-a) SEVTCMP = 0; DTCON1=0; // specijalni compare event, deadtime - nebitno za chopper FLTACON=0; // strujna greška se ne vodi na ulaz uC pa ni ovaj nema smisla konfig. PWMCON1 = PWM_MOD1_COMP & // komplementarni mod rada PWM para 1 PWM_MOD2_COMP & // komplementarni mod rada PWM para 2 PWM_PEN1H & // 4 GPIO definisani da rade kao PWM PWM_PEN1L & // napomena ovde je ostvaren prostor za 4 PWM PWM_PEN2H & // komplementarna izlaza, prototip koristi samo PWM_PEN2L; // jedan PWM i komplementiranje rešava sa HW
Primena mikroprocesora u energetici – Digitalno upravljani pogoni jednosmerne struje
27
PWMCON2 =PWM_SEVOPS1 & // nebitno PWM_OSYNC_PWM & // PWM reg update (upis) sync. sa PWM prekidom PWM_UEN; // PWM reg update dozvoljen
PTCON = PWM_EN & // dozvola rada PWM modula PWM_IDLE_STOP & // konfig. za IDLE mod, nebitno PWM_OP_SCALE1 & // 0000- svaki PWM period izaziva prekid PWM_IPCLK_SCALE1 & // PWM timer clock jednak je systemskom clock-u PWM_MOD_FREE; // mode rada je Free Run OVDCONbits.POVD1L=1; // selekcija pina da bude kontrolisan od strane PWM jedinice (4) Prekidna rutina Timer 1
Izvršenje ovog dela koda se izvršava automatski, svakih 1ms po prekidu generisanom od strane periferije Timer1, Ovim se prekida osnovna petlja, trenutna PC adresa i relevantne memorijske lokacije se postavljaju na stek, i počinje izvršavanje C koda ove prekidne rutine. Napomena: PI regulator u primeru poseduje aritmetiku sa pokretnim zarezom (float), rešenje dobro za jasan prikaz studentima, ali veoma nepraktično jer se sporo izvršava. Slede globalne promenjive koriščene u ovoj prekidnoj rutini. Njih treba staviti na početak datoteke, pre tela funkcije, i time postaju globalne i vidljive od strane ostalih modula.
Globalne promenjive korišćene u prekidnoj rutine float Kiv = 0.1; // parametri regulatora i njegov izlaz su floating point brojevi. float Kpv= 2.1; // to je lepo ali nepraktično rešenje, program se jako sporo izvršava! float Ref_Napon; // Sada se i izlaz reg. mora pamtiti kao broj sa pokretnim zarezom. int PWMDutyCycle; // faktor ispune mora biti int tipa, bez decimala int SpeedErr_old; // speed_err iz prethodnog PWM perioda
Prekidna rutina Timer1, (interrupt service routine)
void __attribute__((__interrupt__)) _T1Interrupt(void) int brzina ; // lokalne promenjive korišćene u prekidnoj rutini
float Inc; // inkrementalni deo PI regulatora // Citanje brzine brzina=(int)POSCNT; // čitanje brzine sa enkoderske periferije . Periferija je podešena u QE
// modu i POSCNT counter broji ka gore za jedan smer, dole za drugi POSCNT=0; // Resetujemo POSCNT i on će u sledećem ulasku u prekid sadržati broj // u prethodnom periodu nadošlih impulsa, koji je proporcionalan brzini. //Digitalni regulator brzine u inkrementalnoj formi – racun referentnog napona za 4kvadratni coper (+, -) SpeedErr=ref_brzina - brzina; // 1) prvo se definiše inkrementalni deo zakona upravljanja
Inc = Kiv * SpeedErr + Kpv * (SpeedErr – SpeedErr_old); // 2) račun Inc dela zakona upravljanja SpeedErr_old= SpeedErr; // 3) memorisanje prethodne greške za sledeći PWM period
Ref_Napon = Ref_Napon + Inc; // 4) zatim se računa ukupni izlaz if (Ref_Napon >PWM_PERIOD) Ref_Napon = PWM_PERIOD; // 5) Provera saturacije izlaza regulatora if (Ref_Napon <- PWM_PERIOD) Ref_Napon =- PWM_PERIOD;
// Racun faktora ispune - ovde se referentni napon pretvara u faktor ispune, // (int) vrši odsecanje decimalnih tačaka i upisuje samo ceo deo broja
// Ref. napon 4kvad čopera (±VDC) se preslikava u 0- 2*PWM_PERIOD PWMDutyCycle =(int) Ref_Napon + PWM_PERIOD;
// Ponavljanje: Za dsPIC važi: Ako je period jednak PWM_PERIOD tada je // mogući opseg faktora ispune 0 – 2*PWM_PERIOD. Ovim se kod dsPIC // udvostručuje rezolucija PWM.
PDC1=PWMDutyCycle; // 6) konačno, ovde upisujemo novi faktora ispune u PDC1 IFS0bits.T1IF = 0; // Cistimo Timer interrupt flag , bez ovoga bi stalno ulazio u ovaj prekid