realizacija upravljaŁkog softvera pogona - emp.etf.rsemp.etf.rs/radovi/diplomski/zivkovic.pdf ·...
TRANSCRIPT
Elektrotehnièki fakultet Univerziteta u Beogradu
Diplomski rad
Realizacija upravljaèkog softvera pogona
zasnovanog na trofaznom asinhronom motoru
- Projekat miniDRIVE -
Kandidat
Aleksandar �ivkoviã
Mentor
Prof. Dr Slobodan Vukosaviã
Novembar 2006.
2
Sadr�aj 1. Uvod...............................................................................................4
1.1 IEEE konkurs.................................................................. 5
2. Specifikacije pogona ......................................................................6
3. Struktura miniDRIVE-a ..................................................................8
7. Upravljaèki softver pogona .............................................................9
7.1 Resursi i okru�enje mikrokontrolera ATmega168 ........ 10
7.1.1 Resursi mikrokontrolera ATmega168..................................11
7.1.2 Merenja fizièkih velièina unutar pogona..............................12
7.1.2.1 Analogno-digitalni konvertor...........................................................................13
7.1.2.2 Merenje napona DC kola .................................................................................14
7.1.2.3 Merenje struje DC kola ...................................................................................17
7.1.2.4 Merenje temperature IRAMS modula..............................................................18
7.1.3 Upravljanje IRAMS modulom.............................................20
7.1.3.1 ,,Space-vector� modulacija ..............................................................................21
7.1.3.2 Tajmeri/brojaèi kod mikrokontrolera ATmega168 ...........................................24
7.1.4 Komunikacija sa spoljnim svetom.......................................26
7.1.4.1 Galvanski izolovan analogni ulaz ....................................................................27
7.1.4.2 UART i IrDA interfejs.....................................................................................28
7.1.4.3 I2C interfejs .....................................................................................................30
7.1.5 Za�tita od neregularnih uslova rada .....................................32
7.1.5.1 Za�tite ugraðene u mikrokontroler ...................................................................32
7.1.5.2 Eksterna za�tita od kratkog spoja .....................................................................34
7.2 Realizacija embedded softvera...................................... 36
7.2.1 Platforma za razvoj softvera ................................................36
7.2.2 Modularno programiranje....................................................38
7.2.3 Infrastruktura programa.......................................................40
3
7.2.3.1 Prekidi.............................................................................................................40
7.2.3.2 Prioriteti i naèin opslu�ivanja prekida..............................................................42
7.2.3.3 Detaljan opis prekidnih rutina..........................................................................44
7.2.3.3.1 Prekidna rutina SIG_OVERFLOW2..........................................................44
7.2.3.3.2 Prekidne rutine SIG_USART_RECV i SIG_USART_DATA....................46
7.2.3.3.3 Prekidna rutina SIG_ADC.........................................................................47
7.2.3.3.4 Prekidna rutina SIG_TWI..........................................................................49
7.2.3.4 Vremenski dijagram infrastrukture programa...................................................52
7.2.4 Upravljaèki algoritam ..........................................................54
7.2.5 Realizacija upravljaèkog algoritma......................................55
7.2.5.1 Implementacija digitalnog filtra na aritmetici sa nepokretnim zarezom............56
7.2.5.2.1 Prevod sa simulacije na implementaciju u C kod .......................................57
7.2.5.2.2 MATLAB simulacija.................................................................................61
7.2.5.2.3 Filter 2 - specificna realizacija...................................................................65
7.2.5.2.4 Upravljacki algoritam u C-u ......................................................................70
7.2.5.2.5 Asembler...................................................................................................73
7.2.6 Komunikacija ......................................................................75
7.2.6.1 Softverski realizovana serijska komunikacija sa galvanski izolovanim AD
konvertorom (ATtiny15).............................................................................................75
7.2.6.2 UART komunikacija .......................................................................................78
7.2.6.3 I2C veza sa LED displejem ..............................................................................79
7.2.7 Softverska za�tita.................................................................83
7.2.8 Vremenski dijagram kompletnog programa.........................86
7.3 Literatura ...................................................................... 88
10. Prilozi..........................................................................................89
10.1. Zahtevi konkursa ....................................................... 90
4
1. Uvod
U�teda energije trenutno je jedna od najzastupljenijih tema istra�ivanja u oblasti
elektrotehnike. Konstantan rast cene energenata, kao i ogranièeni energetski resursi na
planeti Zemlji najveãi su razlozi za ulaganje u navedena istra�ivanja. Elektrièna energija je
jedan od najzastupljenijih oblika energije. Prema nekim podacima, 60-70% proizvedene
elektriène energije tro�i se za napajanje elektriènih ma�ina i elektromotornih pogona.
Rezultati istra�ivanja sprovedenih na teritoriji SAD i Velike Britanije pokazuju da 90% svih
motora proizvedenih u poslednjoj deceniji 20. veka èine motori snage do 750W.
5
1.1 IEEE konkurs
IEEE, najveãe svetsko udru�enje in�enjera elektrotehnike i elektronike, svake druge
godine raspisuje konkurs �Internacional Future Energy Challenge� sa ciljem pospe�ivanja
istra�ivanja na temu u�tede elektriène energije i unapreðenja elektromotornih pogona.
Teme IEEE konkursa �Internacional Future Energy Challenge 2005� su bile:
Tema A: Single-Phase Adjustable Speed Motor Drive
Tema B: Utility Interactive Inverter System for Small Distributed Generation
Glavni zahtevi konkursa u okviru teme A, bili su da se projektuje elektromotorni pogon sa
stepenom iskori�ãenja veãim od 70%, sa moguãno�ãu kontinualnog zadavanja brzine u
opsegu od 150rpm do 5000rpm, kao i da njegova cena na milionskom tira�u bude manja od
40 amerièkih dolara. Ovakav elektromotorni pogon bi trebalo da zameni elektromotore
odgovarajuãe snage, jer bi mu performanse bile superiorne u odnosu na do sad kori�ãena
re�enja. Obzirom na kolièinu elektriène energije utro�ene za napajanje elektormotora, jasno je
da bi pobolj�anje stepena iskori�ãena za samo jedan procenat, znaèajno doprinelo u�tedi
elektriène energije na globalnom nivou.
U okviru laboratorije za Digitalno upravljanje elektromotornim pogonima
Elektrotehnièkog fakulteta Univerziteta u Beogradu realizovan je projekat na temu A.
Celokupna dokumetacija ovog projekta (miniDrive) predstavljena je u pet diplomskih radova
èiji su autori: Ivan Petru�evski, Bora Novakoviã, Milo� �ivanoviã, Aleksandar �ivkoviã i
U�ãumliã Blagoje.
Zahtevi konkursa u okviru teme A dati su Prilogu 10.1.
6
2. Specifikacije pogona
Dimenzije 220 x 120 x 250
Te�ina 10kg
Napajanje Monofazno 220V~, 50/60Hz
Brzina 100-5000 ob/min
Rezolucija komande
brzine 5 ob/min
Tolerancija regulacije
brzine
1) Za brzine do 1000 ob/min tolerancija ±50 ob/min
2) Za brzine preko 1000 ob/min tolerancija ±5% reference
Tip upravljanja brzinom Bezsenzorski algoritam zasnovan na merenju struje
jednosmernog meðukola
Nominalna snaga 500W
Nominalna brzina 1500 ob/min
Nominalni momenat 3,18Nm
Displej 1) Èetiri sedmosegmentna LED displeja sa decimalnom taèkom
2) MiniDrive Windows aplikacija za PocketPC
Domet IR komunikacije 1,5m
Radni opseg temperature Od -20° do +40°C
8
3. Struktura miniDRIVE-a
U ovom poglavlju date su osnovne smernice i ideje potrebne za realizaciju ovog
projekta i ispunjenje �to veãeg broja zahteva konkursa. Kako bi se ispunio zahtev po pitanju
kontrole brzine obrtanja vratila elektromotornog pogona, potrebno je razmotriti nekoliko
moguãih re�enja koja mogu dati informaciju o brzini ili promeni brzine. Jedno re�enje je da se
pomoãu nekog od senzora za merenje brzine dobije informacija o brzini i da se ta informacija
prosledi upravljaèkom kolu. U ovom projektu nije kori�ãen senzor za merenje brzine zbog
njegove cene, veã se brzina procenjuje na osnovu merenja struje potro�nje. Struja potro�nje se
mo�e jednostavno meriti pomoãu rednog �ant otpornika.
Trofazni asinroni motor snage 550W pokazao se kao najpogodnije re�enje obzirom na
zahteve konkursa (pogledati diplomski rad Milo�a �ivanoviãa). Po uslovu konkursa napajanje
bi trebalo da bude monofazno, pa je za generisanje trofaznog sistema napona neophodnog za
napajanje ovakvog motora potrebno obezbediti hardver koji ãe to omoguãiti. Ovakav hardver
bi se sastojao iz ispravljaèkog kola i invertora. Za upravljanje invertorom potrebno je posebno
upravljaèko kolo i odgovarajuãe pomoãno napajnje. Brzina se mo�e zadavati analogno ili
digitalno (pogledati diplomske radove Novakoviã Bore i Ivana Petru�evskog). Blok shema
opisanog elektromotornog pogona data je na slici 3.1.
Slika 3.1 Blok shema elektromotornog pogona
9
7. Upravljaèki softver pogona
Prethodna dva poglavlja ukazuju na teoriju rada pogona i na elektriène komponente
potrebne da bi se pogon pokrenuo. Ono �to je potrebno da bi se ova dva sveta povezala jeste
mikroraèunar. U programsku memoriju mikroraèunara je sme�ten kod koji sprovodi rezultate
teorijskih razmatranja i generi�e signale potrebne za rad elektriènih komponenti. Tek po�to
su sva tri uslova ispunjena: teorija rada, hardver i softver, mo�e se preãi na dalji razvoj
pogona.
Razvoj softvera koji pokreãe ovakav sistem je ote�an brojnim ogranièenjima.
Ogranièenja potièu sa vi�e strana: niska cena pogona, neprijateljska okolina prepuna
elektromagnetnih smetnji, temperaturna optereãenja... Zbog toga je kao platforma za razvoj
upravljaèkog softvera izabran jeftin 8-bitni mikrokontroler namenjen za industrijske uslove
rada.
Upotrebljeni mikrokontroler je komponenta koja mo�e da se koristi u veoma �irokom
spektru aplikacija. Iz tog razloga proizvoðaè ga je opremio brojnim dodacima pomoãu kojih
se lako integri�e u sredinu kao �to je na� pogon. Da bi �to efikasnije iskoristili njegove
moguãnosti potrebno je dobro sagledati �ta sve mikrokontroler mo�e, a �ta ne. Time se bavi
prva polovina poglavlja koja ukazuje na hardver mikrokontrolera i njegovu neposrednu
okolinu. Tek sa uoèenim prednostima i manama ovakve platforme, mo�e se preãi na pisanje
programskog koda koji ãe pokretati pogon. Time se bavi drugi deo poglavlja. U na�em
sluèaju se od mikrokontrolera zahteva da radi i posao koji je karakteristièan za digital signal
procesore � DSP. Zato je velik deo posla ulo�en u prilagoðenje aritmetike u pokretnom zarezu
na aritmetiku kakvu ima jedan 8-bitni RISC procesor.
Pored ovog teksta, velika kolièina informacija o radu programa se nalazi u
prilo�enom programskom C kodu i MATLAB skriptovima.
10
7.1 Resursi i okru�enje mikrokontrolera ATmega168
Da bi jedan elektromotorni pogon upravljan pomoãu mikroraèunara pravilno i efikasno
funkcionisao potreban je velik broj komponenti sa razlièitim funkcijama u sistemu. Ako se
sistem posmatra funkcionalno, srce upravljaèkog dela sistema je mikrokontroler ATmega168.
U daljem tekstu biãe opisane samo komponente koje su direktno vezane za rad programa u
mikrokontroleru, odnosno, hardver koji je funkcionalno vezan za mikrokontroler.
Hardver koji je direktno vezan za mikrokontroler obavlja tri glavne funkcije u sistemu, a
to su:
merenje fizièkih velièina u sistemu
upravljanje elementima energetske elektronike (IRAMS modul)
komunikacija sa korisnikom
Slika 7.1 Okolina mikrokontrolera i smer interakcije sa okolinom
11
Dalji tekst opisuje resurse mikrokontrolera ATmega168 koji su potrebni sa interakciju
sa njegovom okolinom. Karakteristike mikrokontrolera koje se odnose na performanse
izvr�avanja programskog koda su ostavljene za poglavlje vezano za softver.
7.1.1 Resursi mikrokontrolera ATmega168
Mikrokontroler koji se koristi u na�em sistemu potièe iz familije 8-bitnih RISC
mikrokontrolera od proizvoðaèa ATMEL. Glavne karakteristike mikrokontrolera ove serije su
RISC jezgro sposobno da izvr�ava instrukcije u jednom ciklusu, odlièno osmi�ljena
ulazno/izlazna struktura kako bi se u�tedelo na dodatnim komponentama za sprezanje sa
spolja�njim svetom. Od velikog broja unutra�njih komponenata: interni oscilatori, tajmeri,
UART i SPI moduli, pull-up otpornici, PWM, ADC, analogni komparator, watch-dog biãe
detaljnije opisani oni koji slu�e u na�em sluèaju. �to se tièe oznaèavanja komponenti,
mikrokontroleri sa oznakom ATmega48, ATmega88 i ATmega168 se razlikuju jedino u
pogledu velièine memorije, podr�ci za uèitavanje sistema (boot loader) i velièini vektor tabele
za prekide. Sve ostale karakteristike su identiène.
Resursi mikrokontrolera ATmega168 su prikazani u tabeli 7.1.
programska (FLASH) memorija 16kB SRAM memorija 1kB broj ulazno/izlaznih pinova 23 maksimalan takt 20MHz napajanje 1.8 � 5.5V 16 bitni tajmer 1 8 bitni tajmer 2 raspolo�ivi PWM kanali 6 SPI interfejs 1 UART interfejs 1 I2C interfejs 1 10-bitni AD konvertor sa 8 multipleksiranih ulaza 1 detektor pada napona (brown-out detector) 1 watch-dog sat 1 broj izvora hardverskog prekida 26
Tabela 7.1 Resursi mikrokontrolera ATmega168
Slika 7.2 prikazuje na koji naèin su spregnute nabrojane komponente u mikrokontroleru.
12
Slika 7.2 Blok �ema jezgra mikrokontrolera sa ugraðenim periferijama
Sa 20MHz takta i moguãno�ãu 8-bitnog mno�enja za samo 2 ciklusa takta (100ns) ovaj
mikrokontroler ima mno�tvo moguãnosti i kombinacija za kori�ãenje prikazanih resursa u
raznim oblicima od jednostavnih logièkih automata pa do implementacije digitalnih filtara za
obradu signala. Ovde ãemo se usredsrediti na naèin na koji su one iskori�ãene u na�em
sistemu.
7.1.2 Merenja fizièkih velièina unutar pogona
Unutar procesa prisutne su tri analogne velièine koje je potrebno stalno nadgledati. To
su: struja i napon DC kola i temperatura IRAMS modula. Mikrokontroler ima ugraðen
analogno-digitalni konvertor te je sposoban da meri napon na nekim svojim ulazima. Struja se
13
oèitava merenjem napona na �ant otporniku, a tempereatura merenjem napona na NTC
otporniku ugraðenom u IRAMS modul.
7.1.2.1 Analogno-digitalni konvertor
Mikrokontroler poseduje jedan 10-bitni analogno-digitalni konvertor koji radi na
principu sukcesivnih aproksimacija. Takoðe, u mikrokontroleru se nalazi analogni
multiplekser koji je u stanju da sa 6 razlièitih ulaza dovede signal na ulaz AD konvertora.
Brzina konverzije zavisi od taènosti i kreãe se od 13s do 260s. AD konvertor se pokreãe
dovoðenjem takta odreðene uèestanosti. Da bi ostvarili najveãu taènost rada AD konvertora
potrebno mu je dovesti takt uèestanosti izmeðu 50kHz i 200kHz.
Vreme koje je potrebno da proðe od zahteva za konverzijom (startovanje konverzije) do
rezultata upisanog u odgovarajuãe registre se raèuna na osnovu takta dovedenog na AD
konvertor i broja taktova potrebnog za konverziju. Potrebno je izabrati najveãi takt pri kome
taènost ne opada ispod 1LSB za 10-bitnu konverziju. U na�em sluèaju to je takt dobijen tako
�to je osnovni takt mikrokontrolera od 20MHz propu�ten kroz preskaler sa deljenjem 128.
Time je dobijen takt AD konvertora od 156,25kHz. Merenje napona se sastoji od uzimanja
odbirka sa ,,sample-hold� kolom i sukcesivnh aproksimacija za taènost od 10 bita. Za tu
operaciju je potrebno 13 ciklusa takta AD konvertora.
Slika 7.3 Trajanje jedne konverzije mereno u ciklusima radnog takta AD konvertora
Tako se dobija vreme potrebno za merenje jedne od tri velièine koje iznosi 83,2s. Ovo
vreme konverzije je va�no zapamtiti jer predstavlja jedno od ogranièenja za pravilno
14
funkcionisanje algoritma za upravljanje motorom. Za sada samo treba reãi da je du�ina
trajanja ciklusa u algoritmu koji upravlja celim sistemom jednaka 204s. U ovu du�inu nije
moguãe smestiti tri merenja, a re�enje ovog problema je prikazano u delu sa opisom softvera
mikrokontrolera.
AD konvertor ovog mikrokontrolera je u stanju da meri samo pozitivne napone u
odnosu na zajednièku masu mikrokontrolera (engl. single-ended) i to do maksimalne
referentne vrednosti koja se kreãe u opsegu od 1,1V do napona napajanja AD konvertora
(maksimalno je 5,5V). Ta osobina predstavlja ogranièenje tipa da nije moguãe meriti
negativne napone koji se mogu pojaviti na strujnom �antu. Re�enje ovog problema je dato u
poglavlju 7.1.2.3. U na�em sluèaju za naponsku referencu koristimo interno generisan napon
od 1.1V koji smanjuje broj eksternih komponenata, odnosno cenu ureðaja. Po zavr�etku
konverzije 10-bitni rezultat se mo�e oèitati iz dva 8-bitna registra. Stanje registara (ADC) ãe
zavisiti od ulazng napona(VIN) i referentnog napona(VREF) po sledeãem izrazu:
1024IN
REF
VADC
V
7.1
Da bi izmerili fizièke velièine napon, struju i temperaturu potrebno ih je konvertovati u napon
i skalirati na opseg od 0,0V do 1,1V. Naèin kako je to uraðeno je pokazano u daljem tekstu.
7.1.2.2 Merenje napona DC kola
Napon DC kola se u ovoj izvedbi koristi samo za za�titu od otkaza. Softver
mikrokontrolera ãe reagovati i na preniskom (250V) i na previsokom (440V) naponu
iskljuèivanjem IRAMS modula. Pri ovom je opasniji visok napon jer dovodi do trajnog
o�teãenja elektrolitskih kondenzatora DC kola. Do pojave nedozvoljeno visokog napona na
DC kolu dolazi zbog akumuliranja energije u elektrolitskim kondenzatorima.
15
Slika 7.4 U generatorskom re�imu rada energija se vraãa iz motora u elektrolite
Slika 7.5 pokazuje jedan eksperiment izvr�en na motoru u ranim fazama razvoja. Uèestanost
uzimanja odbiraka je nekoliko puta u sekundi.
Slika 7.5 Nagla promena reference brzine na dole rezultuje opasnim naponskim impulsima
16
Oko 220 � og odbirka je naglo spu�tena brzina obrtnog magnetnog polja koju generi�e stator.
Zbog inercije rotora u odreðenom vremenskom intervalu je brzina obrtanja rotora bila veãa o
brzine obrtanja magnetnog polja statora. Tada se javlja generatorski re�im rada i kinetièka
energija rotora se vraãa nazad u elektriènu energiju. To se manifestuje porastom napona na
elektrolitskim kondenzatorima DC kola. Kod previsokog napona mikrokontroler iskljuèuje
IRAMS modul i time nestaje obrtno magnetno polje statora. Situacija je jo� oèiglednija kad je
rotor spregnut sa ostatkom pogona �to je realna situacija. Tada je ukupna inercija jo� veãa i u
kondenzatore se prenosi jo� opasnija kolièina energije. Kao jedno od moguãih re�enja bi bilo
ubacivanje PI kontrolera koji pri porastu napona DC kola dodatno poveãava brzinu obrtanja
magnetnog polja rotora i time smanjuje efekat generatorskog re�ima. Ovo re�enje nije
ubaèeno jer zahtevi konkursa nisu ukljuèivali nikakvu dodatnu inerciju na rotoru. U
standardnim izvedbama ubacuje se obièan sna�an otpornik koji mehanièku energiju rotora
prevodi u toplotnu.
Sledeãa �ema prikazuje kako je DC kolo povezano na jedan od multipleksiranih ulaza
AD konvertora mikrokontrolera.
Slika 7.6 DC kolo povezuje mikrokontroler sa mre�om visokog napona
U ovom delu �eme je najva�nije obratiti pa�nju da je DC kolo, koje nije galvanski izolovano
od mre�nog napona, vezano na no�ice mikrokontrolera. Ovo treba imati u vidu kod spajanja
mikrokontrolera na sve ostale periferije u sistemu. Periferije koje su dostupne korisniku
moraju biti galvanski izolovane od mikrokontrolera.
17
7.1.2.3 Merenje struje DC kola
Vrednost struje DC kola predstravlja jednu od najva�nijih velièina u sistemu. Ova struja
je srazmerna optereãenju na osovini motora, odnosno velièini klizanja � razlika brzine
obrtanja magnetnog polja statora i brzine obrtanja rotora. Jedna od glavnih prednosti ovog
elektromotornog pogona jeste moguãnost procene brzine obrtanja rotora na osnovu jaèine
struje kroz DC kolo. To odbacuje upotrebu dodatnog senzora za merenje brzine obrtanja
rotora i time smanjuje cenu, poveãava rubusnost i jednostavnost rukovanja. Struja DC kola se
meri, jednostavno merenjem napona na otporniku sa malim otporom (�ant otpornik) koji je
redno vezan na DC kolo. Veã je pomenuto da motor lako mo�e da se naðe u generatorskom
re�imu rada kad se energija vraãa nazad u kondenzatore. Tada ãe i struja na �ant otporniku
postati negativna. Te�koãa je u tome �to je AD konvertor u mikrokontroleru u stanju da meri
samo pozitivne napone u odnosu na nulti potencijal mikrokontrolera. Zbog toga je hardverski
potrebno ubaciti ,,offset�. To je uraðeno kao na sledeãoj slici.
Slika 7.7 Kolo za ubacivanje offset-a pri merenju napona na �ant otporniku
Funkcija prenosa ovog kola za vrednosti elemenata koji se nalaze na �tampanoj ploèi je data
na slici 7.8.
18
Slika 7.8 Struja DC kola daje prikazani napon na ulazu u AD konvertor mikrokontrolera
Deo konverzije fizièke velièine u brojnu vrednost se obavlja i u samom programu
mikrokontrolera. Da bi se dobila vrednost struje u programu mikrokontrolera potrebno je
vrednost iz registara AD konvertora propustiti kroz funkciju koja je inverzna funkciji prenosa
sa slike 7.8. To je uraðeno tabelarno tako �to vrednost dobijena sa AD konverotra slu�i za
adresiranje tabele.
7.1.2.4 Merenje temperature IRAMS modula
Merenje temperature pogona u ovom sluèaju je iskljuèivo za potrebe za�tite. IRAMS
modul je termièki spojen sa kuãi�tem celog pogona tako da je nadgledanje njegove
temperature istovremeno i nadgledanje zagrevanja celog pogona. IRAMS modul u sebi ima
integrisan NTC otpornik sa karakteristikom kao na slici 7.9.
19
Slika 7.9 Zavisnost elektriène otpornosti NTC otpornika ugraðenog u IRAMS modul od temperature
NTC otpornik iz modula je na AD ulaze mikrokontrolera povezan kao na �emi 7.10.
Slika 7.10 Veza NTC otpornika sa ulazom na AD konvertoru mikrokontrolera
Registri AD konvertora ãe sadr�ati rezultat koji zavisi od temperature IRAMS modula po
funkciji prikazanoj na slici 7.11.
20
Slika 7.11 Zavisnost izmerene vrednosti AD konvertora od temperature IRAMS modula
Program u mikrokontroleru ãe reagovati iskljuèivanjem IRAMS modula ako
temperatura NTC otpornika preðe 85C. Zbog toga �to je pri merenju temperature potrebna
samo jedna vrednost (maksimalna dozvoljena temperatura) nema potrebe za uvoðenje
inverzne funkcije prenosa i tabeliranja kao �to je to bio sluèaj sa strujom DC kola. Inverzna
temperaturna funkcija ãe nam biti potrebna prilikom pisanja softvera za raèunar koji dobija
odbirke temperature sa AD konverora na�eg elektromotornog pogona. Dobijeni brojevi ãe biti
u opsegu od 0 do 1023 i potrebno ih je propustiti kroz inverznu funkciju kako bi se dobili C
za dalju analizu rada pogona.
7.1.3 Upravljanje IRAMS modulom
Da bi se rezultat dobijen u programu mikrokontrolera preneo u spolja�nji svet potrebno
je izvr�iti konverziju digitalnog u analogni signal. Kod veãine mikrokontrolera pa i ovog, DA
konverzija se obavlja u vidu impulsno �irinske modulacije (engl. Pulse Width Modulation �
PWM). Ovaj tip DA konverzije je praktièan jer zauzima samo jednu no�icu na
mikrokontroleru. Srednja vrednost signala zavisi od odnosa signal-pauza u jednoj periodi koja
ima fiksnu du�inu. Tako dobijen signal je potrebno propustiti kroz analogni filtar propusnik
niskih uèestanosti.
U na�em sluèaju, PWM signal dobijen na jednoj no�ici mikrokontrolera je potrebno
pojaèati po snazi da bi mogao da pokrene jedan elektromotor snage reda 0,5kW. To se radi sa
21
sna�nim IGBT tranzistorima koji su komplementarno vezani u IGBT modulu. Tako se PWM
signal sa mikrokontrolera koji ima samo dva stanja 0V i VCC prenosi na komplementarno
vezane IGBT tranzistore (VCC je napon napajanja mikrokontrolera i iznosi 5V). Kad je stanje
na no�ici mikrokontrolera na niskom naponu (oko 0V) ukljuèen je donji komplementarni
tranzistor u IGBT modulu. Za visoko stanje na no�ici mikrokontrolera (oko VCC) u IGBT
modulu ukljuèen je gornji komplementarni tranzistor. Na taj naèin se dobija pojaèan PWM
signal na ulazu u motor. Ulogu analognog filtra propusnika niskih uèestanosti igra sam motor
sa svojom elektriènom i mehanièkom inercijom. U aplikacijama kao �to je ova bitan je izbor
PWM uèestanosti koja mora da bude �to veãa, idealno je da bude vi�a od gornje granice
èujenja za ljudsko uho. Kod izbora PWM uèestanosti ugranièavajuãe su dve èinjenice:
najveãa PWM uèestanost koju mikrokontroler mo�e da generi�e i najveãa uèestanost pri kojoj
komutacioni gubici IGBT tranzistora ne prelaze dozvoljenu vrednost. U na�em sluèaju
odabran je kvalitetan IRAMS modul tako da je ogranièenje PWM uèestanosti odreðeno
brzinom rada mikrokontrolera. Sa mikrokontrolerom ATmega168 za sluèaj trofaznog pogona
je moguãa najveãa PWM uèestanost od 4,9kHz.
7.1.3.1 ,,Space-vector� modulacija
Da bi se trofazni asinhroni motor pravilno upotrebio na njegove statorske namotaje je
potrebno dovesti tri prostoperiodièna sinusna signala iste uèestanosti i napona meðusobno
fazno pomerena za 120. Najjednostavniji naèin da se to uradi je sinusna modulacija.
Vremena voðenja gornjih tranzistora se izraèunavaju prema izrazima:
sin2 2
sin 1202 2
sin 2402 2
PWM PWMA
PWM PWMB
PWM PWMC
OUT
T Tt m
T Tt m
T Tt m
t
7.2
gde su: TPWM du�ina trajanja PWM periode; tA, tB i tC vremena provoðenja gornjih tranzistora,
m indeks modulacije koji se kreãe u opsegu od 0 do 1 i OUT �eljena uèestanost obrtanja
magnetnog polja statora. Ovako generisan PWM signal ãe dati linijski napon na prikljuècima
motora kao na slici 7.12.
22
Slika 7.12 Fazni i linijski napon kod sinusne modulacije
Maksimalni napon koji mo�e da se dobije primenom sinusne modulacije iznosi 32DCE ili
86,6%, gde je EDC napon na jednosmernom DC kolu na koji su povezani komplementarni
IGBT tranzistori. Nizak procenat iskori�ãenja, kao i velik broj komutacija u toku jedne PWM
periode su najveãi nedostaci sinusne PWM modulacije. Space-vector modulacija re�ava ove
nedostatke.
Princip ovog tipa modulacije polazi od èinjenice da tri para IGBT tranzistora koji
pogone motor mogu da se naðu u osam razlièitih stanja. Osnovni princip rada je najlak�e
objasniti uvoðenjem pojma prostornog vektora (engl. space-vector). Prostorni vektor postoji u
dvodimenzionalnom koordinatnom sistemu sa bazisom koji èine tri ose meðusobno pomerene
za 120. Ovaj raspored potièe od stvarnog fizièkog rasporeda namotaja u statoru motora.
Kada prostorni vektor obiðe jedan krug tada je na izlaznim terminalima invertora generisana
jedna perioda trofaznog sistema napona. Pomenute kombinacije ukljuèenosti IGBT tranzistora
prenesene u ovaj koordinatni sistem ãe dati �est aktivnih vektora pomerenih za 60 i dva nulta
vektora koji se nalaze u koordinatnom poèetku kao na slici 7.13.
23
Slika 7.13 Space-Vector dijagram
Prostorni vektor je potpuno definisan sa tri vektora, dva aktivna i jednim nultim. Mo�e se reãi
da se sa dva aktivna vektora defini�e ugao prostornog vektora, a sa nultim intenzitet.
Intenziteti aktivnih vektora su konstantni i u PWM modulaciji su ekvivalentni periodu kad
traje signal. Nulti vektori imaju nulti intezitet i u PWM modulaciji su ekvivalentni periodu
kad traje pauza. Prostorni vektor je uvek definisan aktivnim vektorima koji ogranièavaju
sektor u kome se on nalazi. Postoji �est takvih sektora. Vremena trajanja svakih od tri vektora
se raèunaju na osnovu normalizovanog inteziteta prostornog vektora � koeficjent modulacije
m, i ugla pod kojim se nalazi prostorni vektor:
0
sin 60
sin
32
a PWM
b PWM
PWM a b
DC
t m T
t m T
t T t t
Am
E
7.3
Logièno je da vreme trajanja treãeg, nultog vektora t0 zavisi od ostala dva jer se nalazimo u
dvodimenzionalnom sistemu a �elimo da defini�emo proizvoljni vektor sa tri vektora.
Prethodni izrazi va�e sa svih �est sektora sa jedinom razlikom �to se koriste razlièiti aktivni
24
vektori za svaki sektor. Space-vector modulacijom se dobijaju fazni i linijski napon kao na
slici 7.14.
Slika 7.14 Fazni i linijski naponi kod Space-Vector modulacije
Vidi se da je maksimalni linijski napon dobijen ovim tipom modulacije jednak naponu DC
kola. Jo� jedna od prednosti ovog tipa modulacije jeste povoljniji spektralni sastav izlaznog
napona.
7.1.3.2 Tajmeri/brojaèi kod mikrokontrolera ATmega168
Mikrokontroler ATmega168 poseduje dva 8-bitna i jedan 16-bitni tajmer, odnosno
brojaè. Na slici 7.15 se vidi okru�enje brojaèa u mikrokontroleru.
25
Slika 7.15 Blok �ema tajmera/brojaèa u ATMega168
Svaki tajmer poseduje sopstveni preskaler. Preskalerom se defini�e brzina brojanja brojaèa
tako �to se osnovni takt mikrokontrolera deli sa definisanom vredno�ãu. Na ulaz u brojaè je
moguãe dovesti takt uèestanosti fCLK, fCLK/8, fCLK/64, fCLK/256 i fCLK/1024, gde je fCLK glavni
takt mikrokontrolera. Dalje, svaki brojaè mo�e da radi u re�imu uporeðivanja (engl. Compare
Mode). Ovo je vrlo va�no za implementaciju bilo koje PWM modulacije jer oslobaða
procesor od radnji uporeðivanja stanja brojaèa sa stanjem u nekom registru. Sve �to je
potrebno jeste da procesor upi�e �eljeno stanje u registar za uporeðivanje brojaèa (engl.
Compare Register) a logika oko brojaèa ãe da generi�e odgovarajuã odnos signala i pauze.
Blok kojim se uporeðuju ova dva registra prosleðuje signal u blok za generisanje signala
(engl. Waweform Generator) koji se dalje vodi na izlaznu no�icu mikrokontrolera. U bloku za
generisanje signala se odluèuje da li postaviti izlaz u visoko ili nisko logièko stanje. Svaki od
tri tajmera poseduje dva ovakva bloka sa izlazom na no�ice tako da je odgovarajuãim
pode�avanjem moguãe direktno pogoniti i gornji i donji IGBT tranzistor bez potrebe za
spoljnim kolom za invertovanje signala. Kontrolna logika svakog od tri brojaèa dozvoljava
niz pode�avanja naèina brojanja brojaèa. Tako je moguãe generisati testerasto brojanje sa
26
promenljivom periodom, testerast signal sa konstantnom periodom i trougaoni signal koji je
pogodan za implementaciju simetriène space-vector modulacije.
Istovremeno sa generisanjem SVPWM signala, tajmeri su u stanju da generi�u
hardverske prekide koji ãe èiniti osnovni ciklus takta programa mikrokontrolera u realnom
vremenu. Sa stanovi�ta prioriteda obrade prekida, prekidi generisani od strane brojaèa su
meðu najvi�ima i u na�em sluèaju neãe postojati prekidi vi�eg prioriteta. Ovo je vrlo bitno jer
mikrokontroler poseduje niz periferija koji generi�u prekid, a koje ne smeju da ugroze rad
jezgra programa mikrokontrolera. Svaki od tri tajmera je u stanju da generi�e po tri
hardverska prekida za dogaðaje:
vrednost brojaèa je ista kao i vrednost u A compare registru
vrednost brojaèa je ista kao i vrednost u B compare registru
brojaè je dostigao maksimalnu vrednost (eng. overflow)
Trenuci pojavljivanja prva dva dogaðaja zavise od stanja u compare registru i nisu pogodni za
odreðivanje osnovnog ciklusa takta programa u realnom vremenu. Za ovo je pogodan prekid
generisan treãim dogaðajem. U na�em sluèaju se za space-vector modulaciju koristi trougaoni
signal brojanja kod 8-bitnog brojaèa. Ovo znaèi da ãe se svakih 510 otkucaja takta na ulazu u
brojaè generisati jedan prekid tipa: brojaè je dostigao maksimalnu vrednost. Broj 510 se
dobija iz izraza:
2 2 2NowerflowN 7.4
gde je N �irina brojaèkog registra (8 bita), prva dvojka je zato �to brojaè broji i na gore i na
dole, a broj dva se oduzima jer brojaè po dostizanju gornje(255) ili donje(0) granice brojanja
odmah menja smer brojanja. Za radnu uèestanost mikrokontrolera od 20MHz i preskalerom 1,
8, 64, 256 i 1024 dobijamo moguãe uèestanosti pojavljivanja ovog hardverskog prekida:
39.2kHz, 4.9kHz, 612.7Hz, 153.2Hz i 38.3Hz. Ove uèestanosti su istovremeno i PWM
uèestanosti tako da se jedini razuman izbor za na� sluèaj svodi na uèestanost od 4.9kHz.
7.1.4 Komunikacija sa spoljnim svetom
Komunikacija sistema sa spoljnim svetom takoðe polazi od mikrokontrolera
ATmega168. Elektromotorni pogon komunicira sa svetom u dva smera. Jedini prametar
procesa koji se kontroli�e je brzina obrtanja rotora, a parametri koji se oèitavaju su: napon DC
27
kola, jaèina struje DC kola, temperatura IRAMS modula i kod gre�ke. Postoje dva naèina za
zadavanje brzine obrtanja rotora:
analogno, naponskim signalom od 0.0V do 10.0V
digitalno, be�iènom infracrvenom serijskom komunikacijom (IrDA)
Oèitavanje parametara je takoðe moguãe na dva naèina:
putem èetvorocifrenog 7-segmentnog LED displeja
putem, be�iène infracrvene serijske komunikacije (IrDA)
Da bi svi nabrojani vidovi komunikacije bili moguãi potrebno je obezbediti:
galvanski izolovan AD konvertor za merenje naponskog signala od 0.0V do
10.0V. To je uèinjeno kombinacijom dodatnog manjeg mikrokontrolera
ATtiny15 i optokaplera.
UART modul, postoji ugraðen u mikroknotroler ATmega168 i IrDA modul
I2C interfejs (u ATMEL terminologiji 2-wire Serial Interface) za vezu sa
intelignetnim kontrolerom LED displeja. Takoðe se veã nalazi ugraðen u
mikrokontroler Atmega168.
7.1.4.1 Galvanski izolovan analogni ulaz
U dosada�njem tekstu je veã skrenuta pa�nja da mikrokontroler ATmega168 nije
galvanski odvojen od mre�e visokog napona. U uslovu konkursa stoji da je brzinu obrtanja
rotora potrebno zadavati naponskim signalom od 0.0V do 10.0V u odnosu na kuãi�te motora.
Stoga nema govora o kori�ãenju internog AD konvertora unutar ATmega168 mikrokontrolera.
Za tu namenu je iskori�ãen dodatni mikrokontroler od istog proizvoðaèa znatno manjih
performansi i dimenzija. Sve �to dodatni mikrokontroler treba da uradi jeste da izmeri napon
sa rezolucijom od 10 bita i to nekoliko puta u sekundi i da ga konvertuje u digitalni serijski
signal koji je moguãe preko optokaplera poslati na glavni mikrokontroler. Veza sa glavnim
mikrokontrolerom je jednosmerna, odnosno pomoãni mikrokontroler je u stanju samo da �alje
podatke ka glavnom. Mikrokontroler koji je dovoljno jednostavan, a zadovoljava ove dve
potrebe je ATtiny15. Iako je takoðe reè o 8-bitnom mikrokontroleru sa RISC arhitekturom,
resursi su znaèajno siroma�niji:
28
programska (FLASH) memorija 1kB SRAM memorija nema broj ulazno/izlaznih pinova 6 maksimalan takt, interno generisan RC oscilatorom 1.6MHz napajanje 2.7 � 5.5V 16 bitni tajmer nema 8 bitni tajmer 2 raspolo�ivi PWM kanali nema SPI interfejs 1 UART interfejs nema I2C interfejs nema 10-bitni AD konvertor sa 8 multipleksiranih ulaza 4 detektor pada napona (brown-out detector) 1 watch-dog sat 1 broj izvora hardverskog prekida 8
Tabela 7.2 Resursi mikrokontrolera ATTiny15
Napon na ulazu se meri internim AD konverorom identiènih karakteristika kao i kod veã
opisanog ATmega168 mikrokontrolera. Pomoãu 8-bitnih tajmera se periodièno generi�e
prekid koji èini vremensku bazu za izvr�avanje programa mikrokontrolera. Podatak o naponu
se �alje povorkom bitova preko jednog izlaznog pina. Detalji implementacije ãe biti opisani u
odeljku koji se bavi softverom, a ovde je potrebno obratiti pa�nju da ATtiny15, za razliku od
ATmega168 ne poseduje SRAM memoriju. Ovo nas ogranièava prilikom pisanja softvera jer
nedostatak steka onemoguãava kori�ãenje C kompajlera. Stoga je sav kod za mikrokontroler
ATtiny15 pisan u asembleru.
7.1.4.2 UART i IrDA interfejs
Mikrokontroler ATmega168 poseduje USART (engl. Universal Synchronous and
Asynchronous serial Receiver and Transmitter) blok. Na ovaj naèin procesor je potpuno
rastereãen od zadataka generisanja serijskog signala, prijema, slanja i provere ispravnosti
primljene poruke. Ovaj blok je u stanju da generi�e hardverski prekid tako da procesor tro�i
vrlo malo svog vremena na obradu slanja i prijema poruka. USART je �ematski prikazan na
sledeãoj slici.
29
Slika 7.16 USART blok dijagram
Upisom u odgovarajuãe konfiguracione registre moguãe je podesiti brzinu komunikacije na
sve danas standardne brzine za ovaj vid komunikacije poèev od 2.4kbps do 2.5Mbps. Moguãe
je izabrati du�inu poruke od 4 do 9 bita, rad sa bitom parnosti, i sa jednim ili dva stop bita.
Posmatrano sa strane kvaliteta prijama signala, blok poseduje i kolo za detekciju la�nog start
bita koji mo�e da se pojavi usled za�umljenog ulaza. USART blok razlikuje prekide za
nekoliko razlièitih dogaðaja:
zavr�en je prijem jednog USART frejma (4 do 9 bita podataka)
prazan je registar podataka
zavr�eno slanje jednog USART frejma
Za na�e potrebe izabran je asinhroni re�im rada sa 8-bitnom du�inom reèi (frejma), bez
provere bita parnosti i jednim stop bitom. Brzina komunikacije je 9.6kbps. Da bi predstavio
koliko UART komunikacija malo optereãuje procesor dajem sledeãi podatak. Pri ovoj brzini
prenosa i pri taktu procesora od 20MHz procesor ãe izvesti oko 21000 instrukcija za vreme
dok se po�alje jedna 8-bitan frejm. Znaèi, tek posle 21000 ciklusa takta ãe se pojaviti prekid
30
za obradu podatka dobijenog ili poslatog preko UART interfejsa. Prekidne rutine ovih
dogaðaja, o tome ãe se govoriti posle, traju nekoliko desetina ciklusa takta tako da je procesor
zaista veoma malo optereãen.
Opisani USART blok je potpuno kompatibilan sa svim ureðajima sa UART
komunikacijom tako da je uz ugradnju odgovarajuãih elektriènih bafera moguãe
mikrokontroler direktno povezati na �eljeni ureðaj. Sa tom logikom je na elektromotorni
pogon dodat interfejs za be�iènu serijsku infracrvenu komunikaciju po IrDA standardu (IrDA
dolazi od udru�enja za razvoj ovog standarda: Infrared Data Assotiation). Kako IrDA
standard za osnovu ima UART serijski protokol to je povezivanje IrDA ureðaja na UART
interfejs potpuno isto kao da se radi o drugom UART ureðaju. Sa stanovi�ta pisanja softvera
mikrokontrolera potpuno je svejedno da li je veza sa raèunarem ostvarena �iènim ili be�iènim
putem. Zbog toga se dalje neãe ulaziti u detalje realizacije bloka za IrDA komunikaciju1.
7.1.4.3 I2C interfejs
Jo� jedna od prednosti mikrokontrolera jeste ugraðen I2C interfejs koji na slièan naèin
kao i USART blok rastereãuje procesor od radnji vezanih za komunikaciju po ovom
protokolu. I2C protokol je pre vi�e od 10 godina uveden od strane kompanije Philips i
pokazao se vrlo uspe�no u sistemima kao �to je na� elektromotorni pogon. ATMEL je ovaj
protokol iskoristio i u svojim mikrokontrolerima. ATMEL zbog zakonskih regulativa nije
mogao da za ovaj protokol zadr�i naziv I2C veã ga je objavio pod nazivom Two-wire Serial
Interface. Glavna prednost ovog protokola je u moguãnosti povezivanja do 128 razlièitih
ureðaja na jednu vrlo jednostavnu dvo�iènu magistralu. Jo� jedna od bitnih prednosti jeste �to
jedna linija slu�i za sinhronizaciju izmeðu ureðaja tako da raèunar mo�e da zaustavi svoj rad
(engl. sleep mode) bude neodreðeno dugo vreme iskljuèen, ukljuèi se i bez gubitka
informacije nastavi slanje povorke bita. Komponente sa najvi�e kori�ãenim I2C protokolom su
razne EEPROM memorije. U na�em sluèaju èetvorocifreni sedmosegmentni displej se pogoni
1 Tekst koji opisuje realizaciju IrDA interfejsa sam sa kolegama objavio na IEEE konferenciji
i dostupan je pod nazivom: ,,Remote Controlled Low-Cost Single-Phase Motor System Using
Infrared Communication�
31
specijalizovanim kolom koje sa mikrokontrolerom ATmega168 komunicira preko dve linije
I2C protokolom.
Na slici 7.17 se vidi �ta sadr�i blok za 2-wire serial interface (TWI). Magistrala TWI
interfejsa sadr�i dve linije:
SCL � za sinhronizaciju, takt
SDA � za adresiranje ureðaja i slanje i prijem podataka
Slika 7.17 Blok �ema TWI modula unutar mikrokontrolera Atmega168
Obe linije su bidirekcione. Blok za generisanje takta (Bit Rate Generator) je u stanju da
generi�e takt brzine do 400kHz.U na�em sluèaju takt TWI modula je na uèestanosti od
100kHz. Blok za vezu sa magistralom (Bus Control Unit) elimini�e uticaj �uma na magistrali,
sadr�i podatak koji ãe se slati ili je primljen, razre�ava STOP i START stanja na magistrali.
Blok za adresiranje (Address Match Unit) slu�i za detekciju adrese i, ako detektuje da mu se
periferija obraãa, u stanju je da mikrokontroler podigne iz sleep moda. Kontrolna jedinica
(Control Unit) kontroli�e navedene blokove i ostvaruje vezu sa procesorom mikrokontrolera.
32
Zbog ogranièene obimnosti rada neãemo ulaziti u detalje I2C komunikacije, pogotovo iz
razloga �to je ATMEL objavio biblioteku sa procesurama niskog nivoa za upravljanje TWI
modulom. Tako se, uz vrlo male izmene ona mo�e koristiti bez upu�tanja u detalje njene
realizacije.
TWI modul generi�e samo jedan prekid koji je isti za osam razlièitih dogaðaja. Koji od
tih dogaðaja se dogodio se razre�ava u prekidnoj rutini koja je zbog toga ne�to
komplikovanija nego kod UART komunikacije. Treba reãi da je po prioritetu TWI prekid
najni�e va�nosti. Na taj naèin ne postoji moguãnost ometanja glavne funkcije
mikrokontrolera, a to je generisanje SVPWM modulacije i pokretanje motora.
Za pisanje programa je bitan protokol po kome se upisuju podaci u kontroler LED
displeja i to ãe detaljno biti prikazano u delu opsa softvera.
7.1.5 Za�tita od neregularnih uslova rada
Èinjenica da glavni mikrokontroler obavlja skoro sve funkcije upravljanja pogonom mu
daje veliku odgovornost u tom sistemu. Eventualan neregularan rad programa
mikrokontrolera ili neispravnost nekih od njegovih modula mo�e da dovede do trajnog
uni�tenja svakog od delova sistema, znaèi i samog mikrokontrolera. Zbog toga su maksimalno
iskori�ãene za�tite od neregularnog rada koje su ugraðene u mikrokontroler, a dodatno je
konstruisan nezavisan hardver koji u sluèaju pojave visoke struje (kratak spoj) nezavisno od
mikrokontrolera iskljuèuje sistem.
7.1.5.1 Za�tite ugraðene u mikrokontroler
Mikrokontroler poseduje ugraðene dve vrste za�tita: za�titu od neregularnog napajanja
(engl. Brown-Out Detection) i za�titu od neregularnog izvr�avanja programa (engl. Watchdog
Timer).
Brown-Out za�tita funkcioni�e kao na slici 7.18.
33
Slika 7.18 Naèin na koji Brown-Out za�tita reaguje na pad napona napajanja
Mikrokontroler se napaja u opsegu od 1.8V do 5.5V pa se i naponi VBOT- i VBOT+ sa slike
mogu podesiti na vrednosti u tom opsegu. Naponi VBOT- i VBOT+ se generi�u u odnosu na
internu referencu nezavisno od spoljnog napajanja. Pomoãu takozvanih osiguraèa (engl. fuse)
se postavljaju vrednosti ovih napona. Fuse registar treba posmatrati kao registar èiji sadr�aj
mo�e da se menja samo kada se mikrokontroler programira. Na taj naèin se izbegava da
neregularno izvr�avanje programa mikrokontrolera, recimo iskljuèi Brown-Out detekciju. Sa
slike 7.18 se vidi da èim napon napajanja (VCC) padne ispod dozvoljene vrednosti (VBOT-)
mikrokontroler odmah prelazi u stanje reseta. Ugraðen je i histerezis tako da tek kad napon
ponovo preðe vrednost drugog nivoa (VBOT+) ostvaruju se uslovi za ponovno pokretanje rada
mikrokontrolera. U tom trenutku poèinje da odbrojava Time-Out logika. Du�ina intervala tOUT
mo�e da se podesi u opsegu od 0 do oko 65ms. Treba napomenuti da se posle reseta
mikrokontrolera gubi sadr�aj u svim radnim registrima programa tako da program posle
detektovanja pada napona zapoèinje rad iz poèetka. Ovo je najgrublji vid za�tite od pada
napona, sofisticiraniji mikrokontroleri i digital signal procesori usled poada napona generi�u
prekid koji mo�e, recimo da snimi stanja svih registara u trajnu memoriju tako da program
posle ukljuèenja mo�e da nastavi rad tamo gde je stao.
Watchdog tajmer je brojaè koji se pogoni sopstvenim generatorom takta koji radi
nezavisno od glavnog takta mikrokontrolera. Na taj naèin Watchdog tajmer mo�e da reaguje i
u situacijama kad je do�lo do kvara na generisanju glavnog radnog takta mikrokontrolera. U
sluèaju Watchdog za�tite moguãe je podesiti kontrolnu logiku tako da u neregularnom radu
generi�e reset sistema i (ili) prekidnu rutinu. Watchdog za�tita se koristi tako �to se u deo koda
programa koji se ponavlja ubaci jedna instrukcija koja stalno resetuje stanje brojaèa Watchdog
tajmera. Za�tita funkcioni�e na predpostavci da kad je do�lo do neregularnog rada programa,
recimo program je prestao da se izvr�ava, neãe se izvr�iti instrukcija koja resetuje tajmer.
34
Kada brojaè izbroji do kraja generisaãe se signal koji mo�e da se prosledi ili na na hardverski
prekid ili na reset celog sistema. Postoje tipovi Watchdog tajmera koji reaguju i ako se
instrukcija reseta brojaèa ponavlja suvi�e èesto, �to mo�e da bude jo� jedan pokazatelj
neregularnog rada programa mikrokontrolera. Takva za�tita ovde nije ugraðena. Interni
oscilator je RC tipa i radi na 128kHz. Sa preskalerom je moguãe podesiti period brojanja
tajmera u opsegu od 16ms do 8s. Kod izbora perioda treba obratiti pa�nju da je oscilator RC
tipa i da mu uèestanost brojanja znaèajno zavisi od napona napajanja i temperature.
Koliko jedan mikrokontroler mo�e da uèini i koliko postoji kreativnih kombinacija
govori primer da je Watchdog timer u nekim situacijama, kada ne posedujemo AD konvertor,
moguãe iskoristiti za merenje temperature ba� zbog ove negativne osobine zavisnosti
uèestanosti brojanja od temperature i sposobnosti da generi�e prekid!
7.1.5.2 Eksterna za�tita od kratkog spoja
Pogon sadr�i dodatnu za�titu od kratkog spoja DC kola koja radi nezavisno od
mikrokontrolera. Kolo je saèinjeno od komparatora tipa LM339 i poseduje osobinu pamãenja
kratkotrajnog strujnog impulsa veãeg od dozvoljenog. Sa na�im izborom elemenata, kratkim
spojem na DC kolu ãe se smatrati svaka struja veãa od 8.55A. Tada je kolo u stanju da iskljuèi
IRAMS modul. Mikrokontroler je sa kolom za�tite povezan linijama kao na slici 7.19.
Slika 7.191 Veza kola za za�titu sa mikrokontrolerom i IRAMS modulom
35
Kod inicijalizacije pogona potrebno je podiãi liniju ENABLE na visok nivo èime se ukljuèuje
IRAMS modul. Mikrokontroler treba da kontroli�e stanje linije SHORT_CIRCUIT. Visoko
logièko stanje ove linije govori da je struja DC kola pre�la dozvoljen nivo. Preko linije
RESETSC mikrokontroler je u stanju da prekine blokadu IRAMS modula. To mo�e da se
uradi tek kad je otklonjen uzrok kratkog spoja.
36
7.2 Realizacija embedded softvera
Elektromotorni pogon poseduje dva mikrokontrolera sa programskim kodom koji
obavlja zadatke merenja, upravljanja i komunikacije sa korisnikom. Srce sistema je
mikrokontroler ATmega168 u kome se nalazi najveãi deo programskog koda. Pomoãni,
ATtiny15 slu�i samo kao periferija glavnom mikrokontroleru i ima ulogu konverzije
analognog signala u povorku digitalnih impulsa. Pomenuti mikrokontroleri imaju ogromnu
podr�ku u razvojnom okru�enju, kako od strane proizvoðaèa (ATMEL) tako i sa strane drugih
udru�enja (engl. third parties). Podr�ku ukljuèuju kompajleri(prevoðenje sa vi�ih programskih
jezika na ma�inski), simulatori rada(aplikacije za PC raèunar koje simuliraju rad
mikrokontrolera), programatori(ureðaji za upisivanje ma�inskog koda u programsku memoriju
mikrokontrolera) i op�irna dokumentacija i primeri za upotrebu(engl. Application Notes). Iz
tog razloga postoji puna sloboda u izboru programskog jezika. Izabrano okru�enje podr�ava
pisanje koda u asembleru, programskom jeziku C i C++. Kako je projekat trajao velièina koda
je rasla i dovodila u pitanje efikasnost kori�ãenja jezika C u odnosu na jezik C++. Dobre
osobine C++ programskog jezika nisu rezultovale njegovim kori�ãenjem u ovom projektu jer
se ipak radi o sistemu sa malom procesorskom moãi gde je potrebno ostvariti �to te�nju vezu
sa hardverom zbog �to boljih performansi. Zato je najveãi deo koda pisan u C programskom
jeziku, a na mestima gde je bilo potrebno silazilo se na asembler.
7.2.1 Platforma za razvoj softvera
Softver za ceo projekat je pisan na PC raèunaru u Windows XP okru�enju. Za razvoj
programskog koda kori�ãena su dva paketa AVR Studio 4.11 i WinAVR 20050214. AVR Studio
dolazi od samog proizvoðaèa mikrokontrolera. To je integrisano razvojno okru�enje (engl.
Integrated Development Environment � IDE) sa pisanje i debagovanje AVR aplikacija u
Windows 98/ME/NT/2000/XP okru�enju. AVR je skraãenica koja upuãuje na ATMEL-ove
mikrokontrolere. Pomoãu ove aplikacije je moguãe simulirati rad napisanog AVR programa
na jeziku C ili na asembleru. Ona funkcioni�e tako da dobijamo kompletan uvid u sve registre
i memorijske lokacije mikrokontolera, kao i u ostale resurse, recimo zahtevi za prekid,
tajmeri. Na taj naèin se najlak�e uoèavaju i otklanjaju gre�ke koje su neminovne prilikom
37
pisanja bilo kog programa. Aplikacija poseduje informativan i intuitivan grafièki interfejs koji
poveãava efikasnost pisanja AVR koda.
Slika 7.20 AVR Studio na delu
Programski paket WinAVR dolazi od udru�enja nezavisnog od kompanije ATMEL. Reè
je o GNU udru�enju (skraãenica je rekurzivni akronim na engleskom jeziku �GNU�s Not
Unix�) koje je nastalo jo� 1984. godine sa namerom da se stvori ceo operativni sistem nalik
Unix-u koji je besplatan za kori�ãenje. Do dana�njeg dana udru�enje je poraslo i podr�ava
mnoge arhitekture, a takoðe i AVR arhitekturu. WinAVR predstavlja paket namenjen za
Windows okru�enje koji sadr�i najveãim delom GCC kompajler (GCC � engl. GNU Compiler
Collecton) a takoðe i dodatne alatke kao �to su program za pisanje koda � Programmers
Notepad. Alatke iz ovog paketa su potpuno modularne i otvorene arhitekture �to znaèi da je
moguãe povezati ih sa ostalim aplikacijama u jedan sistem. Tako je ostvarena veza sa
aplikacijom AVR Studio: kod napisan u Programmers Notepad-u se kompajlira pomoãu GCC
kompajlera, a zatim se simulira u aplikaciji AVR Studio. Takoðe, Programmers Notepad je u
stanju da pokreãe aplikaciju za prenos AVR koda sa PC raèunara na mikrokontroler pomoãu
odgovarajuãeg hardvera (programator). Kratko uputstvo za instalaciju i kori�ãenje ovog
sistema: kompajler, simulator i programator je dato u dodatku pod nazivom: Razvojni sistem
za rad sa ATMEL mikrokontrolerima - Uputstvo za rukovanje.pdf.
38
7.2.2 Modularno programiranje
Iz dela rada koji govori o resursima i okru�enju mikrokontrolera vidi se da postoji
ogroman broj komponenti sa razlièitim ulogama koje se pokreãu jednim programom i jednim
procesorom. Stoga je vi�e nego potrebno problem razdvojiti na manje funkcionalne celine. C
standard podr�ava razdvajanje programskog koda u vi�e datoteka. Ove datoteke mogu 7.2da
se rasporede tako da podr�avaju odgovarajuãe funkcionalne celine resursa mikrokontrolera,
na primer: posebna datoteka za sve prekidne rutine, posebna datoteka za sve funkcije vezane
za rad tajmera, za matematièka izraèunavanja...
Slika 7.21 Programmers Notepad � prozor za rad sa modulima u programu
Kori�ãenje ovakvog tipa modula ne pravi nikakvu razliku u konaènom kompajliranom kodu u
odnosu na sluèaj kad bi ceo program bio napisan u jednoj datoteci. Namera za ovakvo
razbijanje koda u manje celine je pobolj�anje èitljivosti programa.
Jedan modul se sastoji od datoteke sa ekstenzijom c koja sadr�i programski kod sa
instrukcijama, i od datoteke sa ekstenzijom h u kojoj se nalaze deklaracije, odnosno veze
39
modula sa ostalima u sistemu. Po�eljno je da modul bude �to nezavisniji od ostatka programa,
odnosno da je njegova veza sa okolinom �to u�a.
Slika 7.22 Modul sadr�i kod koji obraðuje dati problem, interfejs povezuje modul sa ostatkom programa
Na taj naèin program postaje fleksibilan, odnosno promena jednog dela koda u modulu ne
zahteva izmenu celog programa. Tada kod mo�e veoma lako da se prilagodi moguãem
novom, boljem re�enju ili promeni u dizajnu hardvera.
Moduli u na�em programu su sledeãi:
MD_LED � skup funkcija za prikaz podataka na LED displeju
MD_TWI � funkcije koje obavljaju posao I2C komunikacije
MD_UART � funkcije za serijsku UART komunikaciju
MD_control � izvor kontrole brzine obrtanja rotora motora: analogna referenca ili
digitalni signal
MD_ctrl � matematièka izraèunavanja: digitalni filtri, skaliranja...
MD_filter � filtriranje signala dobijenog sa eksternog AD konvertora (ATtiny15)
MD_init � inicijalizacija resursa mikrokontrolera pri startovanju programa
MD_main � glavni modul koji poziva izvr�avanje ostalih, ovaj modul se prvi pokreãe
kod ukljuèenja rada mikrokontrolera
MD_protect � ogranièenja brzine obrtanja rotora, generisanje koda gre�ke
MD_signals � sve prekidne rutine
MD_states � funkcije za definiciju stanja u kojima mo�e da se naðe program
MD_stdinclude � op�ta datoteka koja ukljuèuje biblioteke iz GCC kompajlera
karakteristiène za arhitekturu ovog mikrokontrolera
MD_timer � inicijalizacija tajmera, odnosno brojaèa
40
MD_tiny � softverska realizacija serijske komunikacije sa eksternim AD
konvertorom (ATtiny15)
Najva�nije funkcije navedenih modula biãe opisane u daljem tekstu.
7.2.3 Infrastruktura programa
Program mikrokontrolera se izvr�ava u dva sloja koji se razlikuju prema prioritetu
izvr�avanja. Ni�i sloj èine funkcije unutar prekidnih rutina. Ove funkcije imaju najveãi
prioritet izvr�avanja. Drugi sloj èine sve ostale funkcije van prekidnih rutina najvi�e vezane za
matematièka izraèunavanja. Op�ti rad programa se sastoji iz sledeãeg: pri pokretanju
programa inicijalizuju se sve periferije i dozvole odgovarajuãi prekidi. Na taj naèin su
periferije aktivirane i sposobne su da izazovu odgovarajuã prekid. Posle inicijalizacije
procesor nastavlja izvr�avanje funkcija iz drugog sloja u takozvanoj beskonaènoj petlji tipa
for(;;){drugi sloj programa};. U vitièastim zagradama se nalaze sve funkcije èije
izvr�avanje nije vremenski kritièno. Drugi sloj programa biva neprestano prekidan od strane
izvora prekida koje generi�u periferije. Posle izvr�ene prekidne rutine procesor ponovo
preuzima izvr�avanje funkcija drugog sloja. Treba obratiti pa�nju da izmeðu ova dva sloja
postoji sinhronizacija koja se vr�i postavljanjem i brisanjem bita u specificiranim registrima
(engl. flag). Funkcije ni�eg sloja su najvi�e funkcije merenja ulaznih velièina i generisanja
izlaza ka aktuatoru, dok drugi sloj predstavlja sam algoritam upravljanja. U okviru ni�eg sloja
takoðe postoje razlike u prioritetima izvr�avanja koje su definisane prioritetima odgovarajuãih
prekidnih rutina.
7.2.3.1 Prekidi
Sledi spisak svih izvora prekida koji su aktivni prilikom rada mikrokontrolera. Prekidi
su zapisani po redosledu od onog sa najveãim pa do onog sa najmanjim prioritetom. U daljem
tekstu ãe se operisati sa brojem ciklusa takta, a ne sa vremenom izvr�avanja u nano ili mikro
sekundama jer tada nismo vezani za uèestanost glavnog takta mikrokontrolera. Takoðe, lak�e
je uporeðivati i vremena izvr�avanja odgovarajuãih rutina.
41
1. SIG_OVERFLOW2 � tajmer/brojaè 2 je dostigao minimalnu vrednost2. Tajmer/brojaè
2 je pomoãu preskalera pode�en da broji sa taktom koji je 8 puta manji od glavnog
takta sistema (20MHz) i to iznosi 2.5MHz. Ovaj brojaè je pode�en tako da kada
dostigne krajnju vrednost (donja je 0, a gornja 255) menja smer brojanja. Na taj naèin
se dobija trougaon oblik brojanja potreban za realizaciju space vector modulacije.
Ovaj prekid ãe se dogoditi posle 510 otkucaja takta na ulazu u brojaè. Kada se taj broj
pretvori u broj ciklusa takta dobija se da ãe se svakih 4080 ciklusa takta generisati
prekid. Ovaj prekid je periodièan dogaðaj i ujedno slu�i kao inicijator ciklusa za
izvr�avanje programa u realnom vremenu. Program mikrokontrolera se ciklièno
izvr�ava sa periodom od 4080 ciklusa takta i sve operacije moraju da se zavr�e u ovom
roku. Period od 4080 ciklusa takta pri uèesanosti takta mikrokontrolera od 20MHz
odgovara uèestanosti od 4901.96Hz. Po�to se isti tajmer koristi i za generisanje
SVPWM modulacije, njena uèestanost ãe takoðe biti 4901.96Hz.
2. SIG_USART_RECV � periferija zadu�ena za serijsku komunikaciju obave�tava
procesor da je primljen jedan bajt poruke. Ovo je asinhroni dogaðaj jer zavisi od
interakcije sa korisnikom.
3. SIG_USART_DATA � periferija zadu�ena za serijsku komunikaciju obave�tava
procesor da je poslat ceo bajt poruke. Ovo takoðe mo�e da se posmatra kao asinhroni
dogaðaj jer se podaci �alju najèe�ãe na zahtev korisnika.
4. SIG_ADC � zavr�ena je konverzija na AD konvertoru. U prvom delu gde se opisuje
hardver videli smo da je trajanje AD konverzije oko 83.2s �to iznosi oko 1664
ciklusa takta. Inicijalizacija AD konverzije je sinhronizovana sa ciklusom izvr�avanja
programa mikrokontrolera u realnom vremenu. Zbog specifiènog re�enja AD
konverzije ovaj dogaðaj ne mo�e da se smatra periodiènim. To ãe najlak�e biti
obja�njeno na vremenskom dijagramu u narednom poglavlju.
5. SIG_TWI � desio se jedan od osam moguãih dogaðaja na modulu zadu�enom za I2C
komunikaciju. Ovaj prekid je aperiodièan dogaðaj.
2 Tajmer/brojaè je pode�en da radi u fazno korektnom PWM re�imu
42
7.2.3.2 Prioriteti i naèin opslu�ivanja prekida
Prethodni spisak prikazuje moguãe izvore prekida u programu. Najveãi prioritet ima
prekid tajmera, a najmanji, prekid I2C komunikacije. Takoðe vidi se da su veãina prekida
aperiodiènog tipa �to znaèi da je moguãe da se istovremeno generi�e nekoliko zahteva za
prekid. Na ovom sistemu nije dozvoljeno ugnje�davanje prekida, odnosno sistem obrade
prekida nije sa preuzimanjem (engl. nonpreemptive). Najgori scenario bi bio da se izvr�ava
prekidna rutina sa manjim prioritetom i da se u toku njenog izvr�avanja desi prekid koji je
va�niji za obradu. U toj situaciji program ãe nastaviti izvr�avanje prekidne rutine manjeg
prioriteta i tek po njenom okonèanju preãi na izvr�avanje one sa vi�im prioritetom. Na taj
naèin, glomazne prekidne rutine manjeg prioriteta mogu da ugroze blagovremeno izvr�avanje
prekidne rutine vi�eg prioriteta. Jednini naèin za izbegavanje ovog problema je pisanje �to
kraãe prekidne rutine, odnosno du�a izraèunavanja je potrebno ostaviti van same rutine.
Sledeãi primer iz koda pokazuje na koji naèin je ugro�ena prekidna rutina najvi�eg
prioriteta, odnosno rutina koja generi�e SVPWM modulaciju. Prekidna rutina zadu�ena za
SVPWM modulaciju na svom ulazu ima podatak o brzini rotacije magnetnog polja statora i o
velièini fluksa statora. Ova dva podatka sti�u sa upravljaèkog algoritma koji ãe biti opisan
kasnije. Prekidna rutina treba na osnovu ovih informacija da osve�i stanja registara u sva tri
tajmera/brojaèa kako bi se generisao PWM period sa odgovarajuãim odnosom signal/pauza za
svaku od tri faze. Registri tajmera u koje se sme�ta informacija o odnosu signal/pauza se
nazivaju OCR registri (engl. output compare register). Svaki OCR registar je dvostruko
baferisan, odnosno bajt upisan na memorijsku lokaciju OCR registra se neãe odmah naãi u
OCR registru. OCR registri u sva tri tajmera/brojaèa se osve�avaju u istom trenutku kao na
slici 7.23.
43
Slika 7.23 Prikazan je najgori sluèaj kad se pre prekida SIG_OVERFLOW2 izvr�ava najdu�a prekidna
rutina manjeg prioriteta � SIG_TWI
Predpostavimo situaciju da su sve ostale prekidne rutine onemoguãene. Tada ãe se
SIG_OVERFLOW2 prekid pojaviti u trenutku t1 i odmah ãe poèeti izvr�avanje prekidne
rutine. OCR registri ãe biti osve�eni u trenutku t2 �to znaèi da u vremenskom intervalu od t1
do t2 mora da se zavr�i prekidna rutina SIG_OVERFLOW2. Razmak izmeðu ova dva trenutka
je 2040 ciklusa takta. Prekidna rutina traje 289 ciklusa takta tako da je ovaj zahtev zadovoljen.
U realnoj situaciji, kada su u sistemu aktivni i drugi izvori prekida mo�e da se desi da je neka
prekidna rutina zapoèela svoje izvr�avanje neposredno pre trenutka t1. Tada ãe se onemoguãiti
pokretanje prekidne rutine za SIG_OVERFLOW2 dogaðaj sve dok se ona ne zavr�i. Bez
obzira �to je prekidna rutina ni�eg prioriteta, ako ima du�inu trajanja reda 2040 ciklusa takta
mo�e se desiti da se OCR registri osve�e vrednostima iz prethodnog ciklusa, odnosno nije na
vreme izraèunata nova vrednost odnosa signal/pauza! Ova situacija se izbegava tako �to je
potrebno ispuniti sledeãi uslov:
SIG_OVERFLOW1 1 2max , ,... OCRT T T T 7.5
gde je TSIG_OVERFLOW2 � vreme izvr�avanja prekidne rutine generisanja SVPWM signala, T1,
T2,... � vremena izvr�avanja svih ostalih prekidnih rutina koje su ni�eg prioriteta, a TOCR
pomenuti period izmeðu trenutka t1 i t2. Na slici je prikazan najgori sluèaj kada je neposredno
pre generisanja prekida SIG_OVERFLOW2 poèela da se izvr�ava najdu�a prekidna rutina
SIG_TWI. Slika 7.23 prikazuje taèna vremena izvr�avanja ove dve prekidne rutine tako da je
moguãe sagledati da je prethodni uslov ispunjen.
44
7.2.3.3 Detaljan opis prekidnih rutina
7 . 2 . 3 . 3 . 1 P r e k i d n a r u t i n a S I G _ O V E R F L O W 2
Operacije koje vr�i ova prekidna rutina su prikazane dijagramom na slici 7.24.
Slika 7.24 Prekidna rutina SIG_OVERFLOW2
Na poèetku se vr�i startovanje AD konverzije. Zatim, se vr�i izraèunavanje parametara za
SVPWM modulaciju i osve�avanje OCR registara. Dalje se, pomoãu globalne promenljive
vr�i sinhronizacija sa drugim slojem programa tako �to se obave�tava da mo�e da zapoène
izvr�avanje sledeãeg ciklusa; opslu�uje se softverski WatchDog za I2C komunikaciju o èemu
ãe jo� biti detalja; proverava se da li je drugi sloj programa u prethodnom ciklusu stigao da
izvr�i sve operacije; inkrementira se promenljiva koja uèestvuje u algoritmu za kratkospojnu
za�titu. Uoèavamo da se u ovoj prekidnoj rutini pored SVPWM modulacije opslu�uju jo� neki
45
algoritmi. Razlog zbog kojeg se to radi ba� ovde je najvi�i prioritet izvr�avanja ove rutine i
njeno vremenski taèno odreðeno pozivanje.
SVPWM modulacija se na ovom 8-bitnom RISC mikrokontroleru implementira na
sledeãi naèin. Iz kontrolnog algoritma dolaze vrednosti o �eljenoj brzini rotacije magnetnog
polja statora i o intenzitetu fluksa statora, odnosno indeksu modulacije. Za potrebe
generisanja SVPWM modulacije snimljena je tabela sa vrednostima napona na prikljuècima
statora kao na slici 7.14. Ova tabela je sme�tena u programsku memoriju i prilikom njenog
formiranja treba obratiti pa�nju na velièinu programske memorije u mikrokontroleru. Na
zauzetost memorije utièu dva faktora: broj elemenata tabele i du�ina reèi elementa iz tabele.
Kako se za SVPWM modulaciju koriste 8-bitni brojaèi nema smisla unositi veãu taènost od 8-
bitne. Za predstavljanje faznog napona SVPWM modulacije u 8-bitnoj taènosti je potrebno
najmanje 2048 elemenata. Stoga, tabela ima 2048 elemenata 8-bitne du�ine i predstavlja celu
jednu periodu napona. SVPWM algoritam uzima odbirke iz te tabele sa tri mesta meðusobno
pomerena za 120, mno�i ih sa indeksom modulacije i upisuje u OCR registre za svaku fazu.
Posle toga se vrednost ugao koja slu�i za adresiranje SVPWM tabele poveãava srazmerno
�eljenoj brzini obrtanja magnetnog polja statora. Ovde treba povezati vrednosti promenljivih
u programu sa fizièkim velièinama datog procesa. Od znaèaja su sledeãe promenljive i
njihove du�ine: ugao (16 bita), omega_avg (16 bita) i m_avg (8 bita). Promenljiva ugao
mo�e da uzima vrednosti u opsegu od 0 do 65535 i direktno odgovara prostornom vektoru.
Vrednost promenljive ugao od 65535 odgovara punom krugu od 2. U svakoj prekidnoj
rutini vrednost ugao se inkrementira za vrednost promenljive omega_avg koja odgovara
ugaonoj brzini obrtanja prostornog vektora. Na primer, koje vrednosti promenljivih treba
upisati da bi ugaona brzina prostornog vektora bila 1obrt/s? Period izmeðu dva pozivanja
prekidne rutine je 204s. Za jednu sekundu se ova prekidna rutina pozove 4901 put. To znaèi
da je u svakoj prekidnoj rutini potrebno promenljivu ugao uveãati za vrednost
65526/490113, odnosno omega_avg mora da bude 13. Ovo razmatranje mo�e da se
generalizuje u vezu izmeðu �eljene ugaone brzine prostornog vektora i promenljive u
omega_avg:
16
_ 12_
2SIG OVERFLOWT
omega avg
7.6
gde 216 potièe od du�ine reèi promenljive ugao, kojom se pretra�uje tabela, TSIG_OVERFLOW2 je
perioda izmeðu dva pozivanja prekidne rutine, a ugaona brzina prostornog vektora u rad/s.
46
Po�to je promenljiva omega_avg celobrojna, postoji odreðena skokovitost u zadavanju
brzine koja za date vrednosti iznosi oko 4.5obrt/s. Po�to je opseg brzine obrtanja rotora
nekoliko redova velièina veãi (maksimalna brzina obrtanja rotora je 5000obrt/s) ova
skokovitost je zanemarljiva.
Sinhronizacija sa drugim slojem programa se odvija na sledeãi naèin. Ovaj sloj sadr�i
skup odreðenih operacija koje treba da uradi u jednom ciklusu programa. Sloj se nalazi u
beskonaènoj for petlji koja stalno proverava vrednost globalnog flega (potièe od reèi zastavica
� engl. flag). Ovo stanje programa se zove idle (na engleskom znaèi prazan hod). Pri
podignutoj zastavici (main_flag = 1) ulazi se u ciklus, izvr�avaju se sve potrebne
operacije, zastavica se ponovo obara i vraãa se u stanje idle. Jedini proces koji mo�e da
podigne zastavicu je ba� prekidna rutina SIG_OVERFLOW2 koja se periodièno poziva. Na
taj naèin je ostvareno da se ciklus programa drugog sloja izvr�ava sa taèno odreðenom
uèestano�ãu ali da ne ometa izvr�avanje prekidne rutine SVPWM modulacije. U toku pisanja
programa za mikrokontroler mo�e da se desi da vreme potrebno za izvr�avanje jednog ciklusa
drugog sloja programa prekoraèi dozvoljeno. Zato je ubaèen jo� jedan fleg koji ãe obavestiti
korisnika da je pozvana nova prekidna rutina SIG_OVERFLOW2, a da nije zavr�en ciklus
programa drugog sloja.
7 . 2 . 3 . 3 . 2 P r e k i d n e r u t i n e S I G _ U S A R T _ R E C V i S I G _ U S A R T _ D A T A
Ove dve kratke rutine opslu�uju algoritam za serijsku komunikaciju sa korisnikom u oba
smera (pun dupleks). Da bi razumeli njihov rad potrebno je opisati ceo algoritam UART
komunikacije.
Serijska komunikacija sa korisnikom je zami�ljena da radi na principu pitanja i
odgovora. Pitanje uvek dolazi spolja, a odmah zatim sledi odgovor od mikrokontrolera. Pogon
je u terminologiji raèunarskih komunikacija server, a korisnik klijent. Po�to je pitanje
asinhron dogaðaj, mikrokontroler mora stalno da proverava da li se on desio. Ovu ulogu
obavlja prekidna rutina SIGNAL_USART_RECV koja pokreãe algoritam komunikacije
ukoliko je primljeno pitanje u ispravnom formatu. Za potrebe prijema i slanja paketa bajtova
koriste se prijemni i predajni bafer (rx_buffer i tx_buffer). Prekidna rutina posle primljenog
bajta poruke proverava napunjenost prijemnog bafera. Ukoliko bafer nije pun, odnosno nije
primljen ceo paket poruke, ova rutina dodaje primljeni bajt u bafer. Ukoliko je prijemni bafer
47
napunjen, odnosno primljen je ceo paket poruke, onemoguãava se izvor prekida za ovu rutinu
do daljnjeg, dok se ne obradi dobijena poruka.
Drugi sloj programa poziva funkciju UART_communicate koja proverava
napunjenost bafera. Ukoliko je prijemni bafer pun, njegov sadr�aj se prosleðuje u
odgovarajuãe promenljive u programu i zapoèinje se proces slanja odgovora. Ovaj proces je
obrnut od procesa prijema podataka.
Funkcija UART_communicate puni predajni bafer odgovarajuãim informacijama i
dozvoljava prekidnu rutinu SIG_USART_DATA. Od tog trenutka poèinje slanje bita
podataka ka korisniku. Trenutak kad je poslat svaki od bajtova iz paketa odgovora se smatra
asinhronim dogaðajem i o tome obave�tava prekidna rutina SIG_USART_DATA. Ova
prekidna rutina ãe po svakom poslatom bajtu proveriti da li je poslat ceo paket. Ukoliko nije
poslat ceo paket èita se sledeãi bajt iz predajnog bafera i stavlja na slanje, a ako je ceo paket
poslat onemoguãava se izvor prekida za ovu rutinu i time se zavr�ava ciklus komunikacije
�pitanje � odgovor�. Istovremeno se ponovo dozvoljava prekid za dogaðaj kad je primljen
podatak od korisnika i time se prelazi u re�im slu�anja. O formatu poruke pitanja i odgovora
ãe biti reèi u delu opisivanja promenljivih programa.
7 . 2 . 3 . 3 . 3 P r e k i d n a r u t i n a S I G _ A D C
Ova rutina se poziva u trenutku kad je zavr�ena AD konverzija sa odgovarajuãeg ulaza.
Za razumevanje njenog rada treba biti svestan sledeãih èinjenica:
- mikrokontroler ATmega168 mora da meri tri velièine: struju DC kola, napon DC kola
i temperaturu
- uèestanost merenja ovih velièina mora da bude sinhronizovano sa PWM uèestano�ãu u
sistemu. Elektromotorni pogon sa PWM upravljanjem generi�e velike elektriène
smetnje usled prisustva prekidaèkih elemenata koji operi�u pri velikim strujama. To
mo�e da izazove velik �um na ulazima AD konvertora i velika va�nost se pridodaje
projektovanju �tampane ploèice tako da bi se ove smetnje �to vi�e oslabile. Jedan od
naèina da se dejstvo ovih smetnji jo� smanji jeste da se odbirci AD konverzije uzimaju
sinhrono sa prekidanjem IGBT tranzistora.
- du�ina trajanja jednog ciklusa programa je 204s
- vreme potrebno za jednu AD konverziju je 83.2s
48
Iz prilo�enog se vidi da u jednom ciklusu nije moguãe izvr�iti sve tri konverzije veã najvi�e
dve. Po va�nosti informacije najbitnija je informacija o struji DC kola jer ona direktno utièe
na kontrolni algoritam odnosno SVPWM modulaciju. Druga dva merenja se u ovom pogonu
koriste iskljuèivo za za�titu od neregularnog rada. Zbog toga je uraðeno tako da se u svakom
ciklusu vr�i merenje struje DC kola, a drugo merenje se obavlja naizmenièno: napon DC kola
ili temperatura IRAMS modula.
Slika 7.25 Redosled multipleksiranja ulaza AD konvertora
Prekidna rutina SIG_ADC je realizovana kao ma�ina stanja koja zadaje odgovarajuãi ulaz
merenja i prebacuje rezultat iz registara AD konvertora u promenljive programa.
49
Slika 7.26 Algoritam prekidne rutine koja se poziva po zavr�etku AD konverzije
AD konverzija je sinhronizovana sa SVPWM algoritmom tako �to se prvo merenje uvek
startuje iz periodiène prekidne rutine SIG_OVERFLOW2.
7 . 2 . 3 . 3 . 4 P r e k i d n a r u t i n a S I G _ T W I
Ova prekidna rutina predstavlja jedan deo od skupa algoritama potrebnih za pravilnu
komunikaciju preko TWI interfejsa. TWI standard podr�ava komunikaciju u oba smera sa
jednim master(glavni ureðaj) i do 128 slave(periferija) ureðaja, a takoðe i komunikaciju gde
postoji nekoliko master-a. U na�em sluèaju postoji jedan master � mikrokontroler
ATmega168 i jedan slave ureðaj � kontroler LED èetvorocifarnog sedmosegmentnog displeja.
Komunikacija je samo u jednom smeru i to od mikrokontrolera ka LED kontroleru.
Na primeru realizacije TWI softvera za na� projekat se vidi jo� jedna bitna stvar kod
prvobitnog izbora mikrokontrolera i njegovog proizvoðaèa. U tom izboru je dosta bitna
èinjenica da proizvoðaè, u ovom sluèaju hardvera ima dobru podr�ku za svoje proizvode.
Najèe�ãe je to u vidu gotovih realizacija za odreðene primene datog hardvera (engl.
Application Notes). Takoðe, oko kvalitetnog i dobro osmi�ljenog proizvoda, u na�em sluèaju
50
mikrokontrolera, formiraju se grupe ljudi sa svojim svojim re�enjima i predlozima (engl.
Third Parties). Na taj naèin se veoma skraãuje vreme re�avanja odreðenog problema jer
postoji biblioteka sa veã gotovim re�enjima.
Za re�enje problema TWI komunikacije na na�em pogonu je iskori�ãen gotov primer
koji dolazi od samog proizvoðaèa ATMEL. Radi se o Application Note pod rednim brojem
AVR315 koji mo�e da se preuzme sa internet strane proizvoðaèa. Ovo gotovo re�enje sadr�i
tekst o principu rada TWI interfejsa i o konkretnoj realizaciji na odreðenom mikrokontroleru,
zatim izvorni kod u C jeziku. Postoje dve datoteke sa kodom i jedna sa definicijama
promenljivih. Datoteka pod nazivom TWI_master.c sadr�i funkcije potrebne za pokretanje
TWI interfejsa na mikrokontroleru. U ovoj datoteci se nalazi i kod za opslu�ivanje prekidne
rutine u na�em softveru. Pored toga, postoji i TWI_master.h datoteka u kojoj su
lokalizovane sve konstante algoritma za komunikaciju. Na sledeãem dijagramu je prikazan
algoritam koji opslu�uje prekidnu rutinu SIG_TWI. Ovaj kod dolazi od proizvoðaèa ATMEL.
51
Slika 7.27 Algoritam prekidne rutine SIG_TWI
Pomenuti Application Note sadr�i jo� i datoteku main.c u kojoj se nalazi primer kako
implementirati dat algoritam u svoj program.
Sve do sad reèeno u vezi sa podr�kom proizvoðaèa va�i, ali ne treba zaboraviti da se u
na�em pogonu radi o embedded sistemu gde je bitno ostvariti �to bolju vezu sa hardverom.
Zbog toga je pre bilo kakvog ubacivanja gotovog koda u na� program potrebno detaljno
prouèiti vremena izvr�avanja datih funkcija, prioritete i naèin interakcije sa ostatkom
programa. Tek kad sa sigurno�ãu utvrdimo da implementacija koda dobijenog iz drugog
izvora ne ugro�ava izvr�avanje na�eg programa moguãe ga je upotrebiti. To podrazumeva
poznavanje principa rada TWI interfejsa i potpuno razumevanje dobijenog koda. Ovo je i
dalje mnogo lak�e od kretanja sa nulte taèke u pisanju softvera za pokretanje TWI interfejsa.
Kod implementacije gotovog koda za pogon TWI interfejsa u na� sistem bilo je potrebno
52
dodati neke elemente. Naime, sve rutine vezane za rad TWI interfejsa, izuzimajuãi prekidnu,
se nalaze u drugom sloju programa. Lo�e re�enje koje je uoèeno u dobijenom kodu jeste
prisustvo naredbe while( uslov ); koja za neispunjen uslov ulazi u beskonaènu petlju. Na taj
naèin izvr�avanje drugog sloja programa mo�e biti u potpunosti blokirano. Nepovoljna
situacija je ta �to dati uslov ne mo�e da se promeni ukoliko doðe do neispravnosti rada I2C
magistrale, recimo prekid signala, gubitak napajanja LED interfejsa i slièno. Po�to LED
displej predstavlja periferiju koja nije od su�tinskog znaèaja za funkcionisanje pogona ne sme
joj se dozvoliti moguãnost da svojom neispravno�ãu omete rad celog sistema. Zato je
softverski napravljen tajmer koji funkcioni�e na istom principu kao i Watchdog tajmer.
Prekidna rutina SIG_OVERFLOW2 koja je sa najvi�im prioritetom u sistemu i èije se
blagovremeno izvr�avanje ne dovodi o pitanje na poèetku svakog ciklusa drugog sloja
programa postavlja jednu zastavicu. Drugi sloj programa po zavr�etku ciklusa treba da spusti
tu zastavicu. Ako je do�lo do neispravnog rada TWI interfejsa drugi sloj programa neãe stiãi
da zavr�i ciklus u predviðenom roku. Tada ãe se ponovo pojaviti prekidna rutina
SIG_OVERFLOW2 koja ãe detektovati podignutu zastavicu, iskljuèiti TWI interfejs i javiti
gre�ku u komunikaciji sa LED displejem. Ovaj tip gre�ke neãe naru�iti rad celog pogona,
odnosno sve ostale funkcije pogona ãe nastaviti da se odvijaju.
Na ovaj naèin je omoguãeno da, iako �to sadr�i odreðene nedostatke, dobijeni kod mo�e
nesmetano da se integri�e u postojeã sistem. Kod realizacije UART serijske komunikacije
poku�ano je da se ide istim putem ali dostupne biblioteke su obuhvatale suvi�e mnogo
kombinacija kori�ãenja UART interfejsa da bi mogle efikasno da se ugrade u na� sistem.
Stoga se pre�lo na pisanje sopstvenog algoritma koji je zadovoljio taèno odreðene potrebe
na�eg sistema i efikasno se implementirao u postojeãi kod.
7.2.3.4 Vremenski dijagram infrastrukture programa
Do sad je jasno da pod infrastrukturom programa hoãu da podvedem prvi sloj programa
koji èine prekidne rutine. Najva�nija i sa najveãim prioritetom je rutina koja, pored zadatka
generisanja SVPWM modulacije, ima ulogu sinhronizovanja svih ostalih zadataka u programu
mikrokontrolera pa i van njega3. Stoga je moguãe napraviti vremenski dijagram jednog
3 Misli se na komunikaciju sa eksternim AD konvertorom (ATtiny15)
53
ciklusa izvr�avanja programa mikrokontrolera koji se dogaða 4901 put u sekundi, ili traje
204s ili 4080 ciklusa takta mikrokontrolera.
Sledeãa tabela sadr�i vremena izvr�avanja pojedinih prekidnih rutina i njihovu
uèestanost pojavljivanja.
broj ime tip procesa
maksimalno vreme izvr�avanja
minimalna perioda izvr�avanja
1. SIG_OVERFLOW2 periodièan 289 4080 2. SIG_USART_RECV aperiodièan 55 21000 3. SIG_USART_DATA aperiodièan 52 21000 4. SIG_ADC aperiodièan 63 1670 5. SIG_TWI aperiodièan 98 1800
Tabela 7.3 Spisak svih procesa prvog sloja programa
Na osnovu ovih podataka moguãe je napraviti vremenski dijagram za najgori sluèaj kada se
istovremeno javljaju prekidi opisani u dosada�njem tekstu.
Slika 7.28 Vremenski dijagram prvog sloja programa � du�ine tamnijih pravougaonika taèno oslikavaju
maksimalna vremena izvr�avanja prekidnih rutina iz prethodne tabele
Iako je prekid SIG_ADC aperiodièan on je sinhronizovan sa poèetkom ciklusa programa tako
da ako se zna vreme konverzije od oko 1700 ciklusa takta mo�e se predpostaviti trenutak
pojavljivanja ovog prekida. TWI modul funkcioni�e da se slanje podataka neãe nastaviti sve
dok se ne zavr�i prekidna rutina SIG_TWI. Minimalno vremensko rastojanje izmeðu
zavr�etka jedne prekidne rutine i poèetka naredne je 1800 ciklusa takta.
Sada se nalazimo u najva�nijem delu teksta gde konaèno imamo uvid u ostvarivost svih
zadataka programa mikrokontrolera. Prethodna slika prikazuje donji sloj koji je neophodan za
pravilan rad pogona i koji je nepromenljiv. Svaki dalji razvoj softvera za mikrokontroler
54
poèiva na vremenu slobodnom za izvr�avanje drugog sloja programa. Dodavanje neke nove
opcije na pogonu, usavr�avanje zakona upravljanja ili bilo koja druga nadogradnja mora da
zadovolji ogranièenje o vremenu izvr�avanja drugog sloja programa. Dalji tekst ãe postepeno
otkriti �ta se sve dogaða u tamnim pravougaonicima gornjeg sloja programa.
7.2.4 Upravljaèki algoritam
Do sada opisan kod je potreban da bi se napravila bezbedna platforma za
implementaciju upravljaèkog algoritma i interakcije pogona sa korisnikom. Jedan
op�tenamenski 8-bitni mikrokontroler je osposobljen za generisanje SVPWM signala
potrebnog za napajanje trofaznog asinhronog motora, za prijem parametara procesa i njihovo
prikazivanje. Takoðe, ukljuèene su za�tite koje u sluèaju neregularnog rada programa
mikrokontrolera bezbedno iskljuèuju pogon i obave�tavaju korisnika o izvoru gre�ke. Tako je
omoguãen dalji razvoj upravljaèkog algoritma opisanog u delu koji sledi.
Slika 7.29 Upravljaèki algoritam
Na slici 7.29 je prikazana blok �ema prema kojoj se projektovan upravljaèki algoritam.
Izvr�avanje algoritma sa ove slike èini vremenski najveãi deo drugog sloja programa. Sa leve
strane se vide ulazi u algoritam: �eljena brzina obrtanja rotora koju zadaje korisnik - ref (ova
brzina nije ista kao i brzina obrtanja prostornog vektora odnosno postoji klizanje) i izmerena
struja DC kola � iDC, na osnovu koje se aproksimira moment na rotoru motora, odnosno
klizanje. Sa desne strane su izlazi koji se vode u SVPWM algoritam i to su: brzina obrtanja
55
prostornog vektora � e, i indeks modulacije kojim se kontroli�e fluks statora � Udq. U ovom
tekstu neãemo ulaziti u detalje rada upravljaèkog algoritma. Potrebno je reãi da se radi o
upravljanju jednim nelinearnim sistemom te je potrebno znati parametre procesa za vi�e
radnih taèaka. To je ovde uèinjeno pomoãu tabeliranja parametara za ceo opseg brzina u
kojem pogon radi. Na �emi je lako uoèiti pet tabela koje sadr�e informaciju o osobinama
sistema u 33 radne taèke � tabele: Iu, If, Ku, Kf i K. Tabelama se pode�avaju odgovarajuãi
offset-i i pojaèanja. Jo� jedan nelinearan deo algoritma je prenosna funkcija zasiãenja koja
ogranièava fluks statora u opsegu brzina rada sa slabljenjem polja. Najzanimljiviji deo
upravljaèkog algoritma èine dva digitalna filtra koja operi�u sa 16-bitnim promenljivama u
fixed-point aritmetici i èinjenica da su implementirani na 8-bitnom RISC mikrokontroleru.
Ovi filtri imaju ulogu da signal struje DC kola oèiste od �uma i uèine ga upotrebljivim za
dalju obradu.
7.2.5 Realizacija upravljaèkog algoritma
Upravljaèki algoritam i ostali procesi na pogonu su, prvo, detaljno simulirani i razvijani
u domenu kontinualnog signala. Takve simulacije su dale karakteristike odgovarajuãih
blokova funkcija prenosa. Jedna takva funkcija prenosa jeste i filtar. Za njegovu digitalnu
implementaciju je potrebno poznavati teoriju rada digitalnih filtara. Ovde ãu pomenuti dve
vrste digitalnih filtara: filtri sa konaènim impulsnim odzivom (FIR � engl. Finite Impulse
Response) i filtri sa beskonaènim impulsnim odzivom (IIR � engl. Infinite Impulse Response).
Za realizaciju digitalnog filtra na oskudnim resursima kao �to su oni koje daje 8-bitni RISC
mikrokontroler, pored ostalog je potrebno znati kolièinu memorije koju zauzimaju i gre�ku
koju prave usled diskretizacije vrednosti signala. FIR filtri zauzimaju kolièinu memorije
srazmernu trajanju impulsnog odziva koji generi�u �to mo�e biti velik broj, ali zato prave
malu gre�ku usled diskretizacije po amplitudi. Sa druge strane IIR filtri upotrebom povratne
sprege smanjuju broj potrebnih memorijskih ãelija, ali su zato vrlo osetljivi na gre�ku
diskretizacije signala po amplitudi. Posledica toga jeste to �to je potrebno koristiti promenljive
sa manjim korakom dikretizacije, odnosno sa veãom du�inom reèi. To nas ponovo vraãa na
veliku kolièinu potrebne memorije, a otvara i problem mno�enja promenljivih sa velikim
du�inama reèi �to zahteva mnogo vi�e ciklusa takta za izvr�avanje. U na�em sluèaju kori�ãeni
su IIR filtri �to je smanjilo kolièinu upotrebljene memorije, ali je stvorilo problem gre�ke
56
kvantizacije. Sledi opisi realizacije dva filtra iz upravljaèkog algoritma i naèina kako je
smanjen negativan uticaj kvantizacije.
7.2.5.1 Implementacija digitalnog filtra na aritmetici sa nepokretnim zarezom
Za sve matematièke simulacije i teorijska razmatranja u izradi ovog projekta je kori�ãen
programski paket MATLAB. Pomoãu ovog paketa moguãe je simulirati rad i kontinualnog i
diskretnog sistema. U digitalnom sistemu upravljanja postoje dve vrste diskretizacije:
diskretizacija po vremenu i diskretizacija po amplitudi. Svaka od ove dve diskretizacije
predstavlja gubitak jednog dela informacije tako da je potrebno taj efekat �to vi�e smanjiti
pogodnim dizajnom. Posledice diskretizacije po vremenu obraðuje osnovna teorija filtara dok
je problem gre�ke kvantizacije po amplitudi ne�to komplikovaniji.
U realizaciji digitalnih filtara u na�em upravljaèkom algoritmu se i�lo sledeãim putem:
1. zadaje se potrebna karakteristika filtra
2. dizajnira sa IIR filtar
3. simulira se rad filtra za sluèaj kad ne postoji diskretizacija po amplitudi
4. vr�i se simulacija u sluèaju kad su sve promenljive u jednaèinama filtra diskretizovane
po amplitudi
5. uporeðuju se ove dve simulacije i ako je gre�ka usled kvantizacije prihvatljiva prelazi
se na sledeãu taèku, ako je gre�ka nedozvoljeno velika vraãamo se na taèku 2 i
poku�avamo sa drugim dizajnom filtra
6. pi�e se kod za mikrokontroler u C programskom jeziku
Na slici 7.29 se vidi da postoje dva filtra u sistemu. Filter 1 je u gornjoj grani koja je zadu�ena
za regulaciju fluksa statora. Filter 2 se nalazi u donjoj grani i koristi se za procenu klizanja
brzine obrtanja rotora u odnosu na brzinu obrtanja prostornog vektora. Specifikacije za oba
filtra su prikazane u tabeli 7.4.
oznaka tip granièna uèestanost uèestanost odabiranja Filter 1 niskopropusni 1kHz 4,9kHz Filter 2 niskopropusni 1Hz 4,9kHz
Tabela 7.4 Specifikacija parametara filtara
57
Za Filter 1 je uraðen dizajn pomoãu alata iz programskog paketa MATLAB i dobijena ja
forma kao na slici 7.30.
Slika 7.30 2Struktura filtra 1
Za ovakvu realizaciju su uraðene simulacije iz gore navedenih taèaka i filter 1 je
implementiran u program mikrokontrolera. Filtar 2 je isprojektovan u poznatoj formi
digitalnog filtra prvog reda:
( ) ( 1) (1 ) ( 1)
[0, 1].
izl k izl k ul k
7.7
Ova realizacija, kao i druge sa kojima je poku�ano, je te�ko zadovoljavala specifikaciju iz
tabele 7.4 istovremeno sa pomenutim ogranièenjima mikrokontrolera � brzina izvr�avanja,
kolièina memorije, gre�ka kvantizacije. Stoga je na ovom filtru uraðen znaèajno drugaèiji
pristup uz oèuvanje funkcije prenosa date prethodnom rekurzivnom formulom. Prvo ãe biti
opisana implementacija upravljaèkog algoritma bez filtra 2, a zatim ãe detaljno biti opisano i
re�enje tog problema.
7 . 2 . 5 . 2 . 1 P r e v o d s a s i m u l a c i j e n a i m p l e m e n t a c i j u u C k o d
Ovaj odeljak ima za zadatak da detaljnije matematièki opi�e proces dat u taèkama 3, 4, 5
i 6 iz odeljka 7.2.5.1. Podrazumeva se da je potpuno poznata struktura upravljaèkog
algoritma, odnosno da je algoritam opisan generalnom Ko�ijevom formom za diskretne
sisteme kao u izrazu:
58
( 1) ( ( ), ( ),..., ( ), ( ), ( ),..., ( )) 1,..., 1 2 1 2
x k f x k x k x k u k u k u k i ni i n m
7.8
gde je n red sistema.
Postupak se sastoji iz sledeãih taèaka:
simulacija rada sistema datog generalnom Ko�ijevom formom sa dovoljno
velikom taèno�ãu da bi se diskretna priroda svih promenljivih u simulaciji mogla
zanemariti:
Ovim korakom se posmatra pona�anje sistema u svim moguãim sluèajevima, a
posebno se prati njegov rad u najgorem sluèaju (engl. Worst Case Analysis). Potrebno
je vrlo dobro upoznati se sa radom algoritma kako bi bili sigurni da smo simulirali
najgori sluèaj i u tome je problematiènost ovog koraka. Poznavanje opsega vrednosti u
kojima se kreãu sve promenljive sistema je kljuèno jer ãe te promenljive biti sme�tene
u sistem koji operi�e sa konaènom du�inom reèi.
normiranje promenljivih:
Normiranje se vr�i pomoãu izraza
max
Nx xi iR
xi
7.9
gde su: xi fizièka velièina dobijena iz simulacije koju normiramo predstavljena u
pokretnom zarezu, |xi|max maksimalna moguãa vrednost fizièke velièine xi dobijena
analizom iz prethodne taèke, xiN normirana vrednost promenljive xi i R konstanta
normiranja. Vrednost R se uzima u funkciji od broja raspolo�ivih bitova memorijske
reèi i mo�e se izraziti u formi R=2n gde je n usvojeni broj bitova. Napomenimo da se
deljenje sa R u sluèaju implementacije u programskim jezicima C ili C++ svodi na
pomeranje u desno za n bitova. Inspiracija za ceo prikazan postupak i dolazi od ideje
da se deljenja stepenom broja 2 mogu vrlo lako izvesti na najjednostavnijim
procesorima.
Iz prethodnog se dobija izraz koji je potrebno ubaciti na mesto svake promenljive u
datoj Ko�ijevoj formi:
max
xi Nx x
i iR 7.10
Ovaj postupak ãu prikazati na jednostavnom primeru linearnog sistema diferencnih
jednaèina treãeg reda. Posmatrajmo dat sistem sa odgovarajuãim koeficjentima.
59
( 1) ( )1 2
( 1) ( ) 2 3
( 1) ( ) ( ) ( ) ( )3 1 1 2 2 3 3 1
x k x k
x k x k
x k a x k a x k a x k b u k
7.11
Ako izraz 7.10 ubacimo u sistem 7.11 dobiãemo oblik dat sa 7.12.
max max
1 21 2
max max
2 32 3
max max max max max
3 1 2 33 1 1 2 2 3 3 1
( 1) ( )
( 1) ( )
( 1) ( ) ( ) ( ) ( )
N N
N N
N N N N N
x xx k x k
R R
x xx k x k
R R
x x x x ux k a x k a x k a x k b u k
R R R R R
7.12
Da podsetimo, ono �to je nama potrebno za implementaciju u C kod jesu normirane
promenljive xiN. Zato ih izdvajamo kao u izrazu 7.13.
2
1
33
2
2
1 1 2 21
3
3
max2
max1( 1)
max
max( 1)
max max
max( 1)
N
N
N
N
N
N
x Rx
xx k
R
x Rx
xx k
R
a x R a xx
xx k
3 3 12 3
3 3 3
max max
max max maxN N NR a x R b u R
x x ux x x
R
7.13
Sve promenljive u zagradama su konstante te ih je moguãe odmah izraèunati.
60
211
1
321
2
1 1 2 2 3 3 131 32 33 34
3 3 3 3
max
max
max
max
max max max max
max max max max
N
N
N N N N
x Rc
x
x Rc
x
a x R a x R a x R b u Rc c c c
x x x x
7.14
Kada se nove konstante zamene u izraz 7.13 dobija se sistem normiran na zadatu
�irinu reèi R=2n 7.15:
11 2( 1)1
21 3( 1)2
31 1 32 2 33 3 34( 1)3
N Nc xNx kR
N Nc xNx kR
N N N N N N N Nc x c x c x c uNx kR
7.15
Kada nov sistem propustimo kroz istu simulaciju kao i u prvoj taèki dobiãemo isti
rezultat. Ono �to ãe se razlikovati jeste promenjen opseg u kojem se kreãu vrednosti
svake promenljive u sistemu. Taj opseg je ogranièen vredno�ãu konstante R. Na ovaj
naèin smo sve promenljive pripremili tako da maksimalno iskoriste du�inu reèi kojom
ãe biti predstavljene.
zaokru�ivanje:
Ovaj korak treba da simulira rad sistema jednaèina na sistemu sa nepokrenim zarezom
gde se operi�e sa promenljivama tipa int. Potrebno je dobijene koeficjente zaokru�iti
na celobrojne vrednosti, a u toku izraèunavanja je potrebno zaokru�ivati i promenljive
u sistemu. Zaokru�ivanje se vr�i na prvu manju celobrojnu vrednost. Ovakva
simulacija ãe dati rezultate identiène onima koje daje program mikrokontrolera.
Zaokru�ivanjem, odnosno odsecanjem je izgubljen jedan deo informacije te je ponovo
potrebno pa�ljivo izvr�iti simulaciju i ustanoviti kolika je gre�ka kvantizacije. Ukoliko
je gre�ka kvantizacije prihvatljiva, dobijeni sistem se direktno prepisuje u C kod
mikrokontrolera. Ukoliko je gre�ka suvi�e velika potrebno je vratiti se na poèetne faze
61
projektovanja filtra i izabrati tip digitalnog filtra manje osetljivog na gre�ku
kvantizacije.
Sledi primena opisanog postupka na na�em upravljaèkom algoritmu.
7 . 2 . 5 . 2 . 2 M A T L A B s i m u l a c i j a
U dodatku ovog rada se nalazi MATLAB skript pod nazivom simulator01.m koji
opisuje ceo upravljaèki algoritam u aritmetici sa pokretnim zarezom gde je du�ina reèi tolika
da se mo�e zanemariti diskretna priroda promenljivih. Ovom simulacijom se obavlja Worst
Case analiza tako �to se ulazne promenljive postavljaju na krajnje vrednosti. Po�to postoje
dve ulazne promenljive imamo èetiri kombinacije. Na osnovu dobijenih podataka nalaze se
maksimalne vrednosti svake promenljive upravljaèkog algoritma |xi|max. Ovde treba naglasiti
na znak apsolutne vrednosti u tra�enju najveãe vrednosti. U na�em sluèaju problem je
veãinski orjentisan ka pozitivnim vrednostima tako da se u simulacijama nije tra�io
maksimum apsolutne vrednosti veã samo maksimum. Slika 7.31 prikazuje ulazne i izlazne
promenljive i opsege u kojima se one kreãu.
Slika 7.31 Opseg u kojem se kreãu ulazne i izlazne promenljive upravljaèkog algoritma
Slika 7.32 prikazuje opseg kretanja promenljivih prvog filtra.
62
Slika 7.32 Opseg u kojem se kreãu promenljive filtra 1
Slika 7.33 prikazuje opseg vrednosti u kojima se kreãe promenljiva drugog filtra. Dobijene
vrednosti su potrebne za sledeãi korak normalizacije.
Slika 7.333 Opseg u kojem se kreãu promenljive filtra 2
Sledeãi MATLAB skript pod nazivom simulator02.m tra�i vrednosti koeficjenata
novog normiranog sistema. Normiranje sistema ne znaèi gubitak informacije. Do gubitka
jednog dela informacije dolazi u procesu odsecanja konstanti i promenljivih na celobrojne
63
vrednosti. MATLAB skript defini�e funkciju round koja broj zaokru�uje na bli�u celobrojnu
vrednost. Odsecanje se vr�i ovom funkcijom. U ovom skriptu se defini�e i du�ina reèi koja ãe
opisivati promenljive. Izabrana je du�ina od 14 bita iz razloga �to �elimo da koristimo 16
bitnu aritmetiku. Jedan bit odlazi na znak, jo� jedan bit odvajamo kao za�titu od prekoraèenja
tako da je pun opseg promenljivih od -16383 do 16383.
Skript pod nazivom simulator03.m ponavlja simulaciju opisanu u skriptu simulator01.m
ali ovog puta uzimajuãi u obzir odsecanje konstanti i promenljivih na celobrojne vrednosti.
Ovim skriptom se vr�i poreðenje kvaliteta rada upravljaèkog algoritma u aritmetici sa
nepokretnim zarezom u odnosu na aritmetiku sa pokretnim zarezom gde su efekti
diskretizacije promenljivih zanemarljivi. MATLAB defini�e funkciju floor koja zaokru�uje
broj na njegovu ni�u celobrojnu vrednost. Posle svakog mno�enja dveju promenljivih ili
njihovog deljenja brojem R je primenjena ova funkcija. Na taj naèin se brzo mo�e videti uticaj
prelaska na aritmetiku sa konaènom du�inom reèi na statièke i dinamièke karakteristike
sistema. Naredne tri slike pokazuju rezultate ove simulacije.
Slika 7.34 Prelazak na aritmetiku sa konaènom du�inom reèi � kretanje ulaznih i izlaznih promenljivih
64
Slika 7.35 Prelazak na aritmetiku sa konaènom du�inom reèi - kretanje promenljivih filtra 1
Slika 7.36 Prelazak na aritmetiku sa konaènom du�inom reèi - kretanje promenljivih filtra 2
Detaljnim uporeðivanjem slika 7.31, 7.32, 7.33 i slika 7.34, 7.35, 7.36 se utvrðuje da je
du�ina reèi od 16 bita (unutar toga, jedan je za znak, a jedan kao za�tita od prekoraèenja)
omoguãava implementaciju upravljaèkog algoritma sa zanemarljivim posledicama gre�ke
kvantizacije, osim za deo koji èini filter 2.
65
7 . 2 . 5 . 2 . 3 F i l t e r 2 - s p e c i f i c n a r e a l i z a c i j a
Vratimo se ponovo na strukturu drugog filtra. Ona je opisana rekurzivnom formulom
7.7. Jedini parametar ovog filtra � á, defini�e vremensku konstantu niskopropusnog filtra.
Naèin na koji ova konstanta utièe na vremensku konstantu filtra je prikazan na slici 7.37.
Slika 7.37 Uticaj parametra á na vremensku konstantu filtra
Sa slike se vidi da, �to je veãe á, to je veãa i vremenska konstanta filtra. Ako parametar á
poveãamo sa vrednosti 0.5 na vrednost 0.9, vremenska konstanta filtra ãe se promeniti sa 2 na
10 odbiraka. Za uèestanost odabiranja od 4.9kHz ovo iznosi poveãanje sa 0.4ms na 2.0ms.
Nama je potrebna vremenska konstanta reda jedne sekunde. Da bi smo dostigli vremensku
konstantu koja daje graniènu uèestanost od 2Hz potrebno je parametru á dodeliti vrednost
0.9996 sa va�eãe sve èetiri decimale. Ovde se veã uoèava da je realizacija filtra 2 veoma
osetljiva na gre�ku kvantizacije. Gre�ka kvantizacije ãe izazvati gre�ku i u statièkoj i u
dinamièkoj karakteristici filtra.
Gre�ka u statièkoj karakteristici filtra se ogleda u tome da je statièko pojaèanje filtra
posle izvr�ene diskretizacije razlièito od �eljenog i to u opsegu do 10%. Ova vrsta gre�ke je
razmatrana za razlièite naèine zaokru�ivanja u simulaciji. Poznato je da se broj mo�e
zaokru�iti na 3 naèina: na vrednost koja je bli�a � round, na vrednost koja je ni�a � floor, i na
66
vrednost koja je vi�a � ceil. U mikroprocesoru sa aritmetikom u nepokretnom zarezu posle
mno�enja i deljenja vr�e floor i ceil zaokru�ivanja. Strogo reèeno, ovakav mikroprocesor ãe
uvek vr�iti zaokru�ivanje na ni�u vrednost (floor) jer se vr�i jednostavno odbijanje bitova iza
zareza. Ceil zaokru�ivanje je posledica rada sa oznaèenim brojevima u drugom komplementu.
Ovo znaèi da ãe pozitivna i negativna promenljiva biti zaokru�ene na razlièite naèine. Slika
7.38 pokazuje odziv filtra za sva tri tipa zaokru�ivanja.
Slika 7.38 Uticaj naèina zaokru�ivanja na odziv filtra 2
Uoèava se dobra osobina zaokru�ivanja na veãu vrednost koja daje nultu statièku gre�ku
filtra. No ovo nije dovoljno jer, kao �to je reèeno za negativnu vrednost promenljive
ekvivalentno je zaokru�ivanje floor koje donosi veliku statièku gre�ku. Ovaj problem nije
te�ko re�iti uvoðenjem uslova koji ãe proveriti znak promenljive i primeniti odgovarajuãe
zaokru�ivanje.
Drugi problem koji je ne�to veãi jeste gre�ka u dinamièkoj karakteristici filtra. Na
prethodnoj slici se vidi da dinamièki odziv filtra sa zokru�ivanjem dobro prati original, ali to
va�i kada je pobuda u punom opsegu od 214. Vratimo se na prirodu problema i pogledajmo �ta
su na�i ulazi u upravljaèki algoritam. Na slici 7.39 se vidi opseg struja koje se mere(iznad
crte) i njihov ekvivalent u mikrokontroleru(ispod crte).
67
Slika 7.39 U toku regularnog rada pogona struja DC kola se kreãe u svetlijem regionu
U nominalnom re�imu rada struja pogona neãe prelaziti vrednost od 1A �to je oko 3300
jedinica kojima se operi�e u mikrokontroleru. Na slici 7.40 se vidi da je pri ovako malim
vrednostima pobude dinamièki odziv filtra sa zaokru�ivanjem veoma lo�.
Slika 7.40 Lo�a dinamièka karakteristika filtra 2 za male vrednosti amplituda
Specifièno re�enje koje je sledi je primenljivo na mali broj situacija i te�ko da mo�e da
konvergira ka nekom generalizovanijem obliku ali se u ovom sluèaju dobro pokazalo. Ideja je
da se koriti pun opseg odziva filtra bez obzira kolika je vrednost na ulazu. Data realizacija se
mo�e porediti sa jednostavnim niskopropusnim RC filtrom prvog reda. Jedna od
mnogobrojnih interpretacija rada ovog filtra je data sa:
0
( ) ( ) [ ( ) ( )] ,0 0
t t
v t v v v t e t tOUT OUT OUT OUT
7.16
68
gde do pobude dolazi u trenutku t0, a ô je vremenska konstanta filtra. Va�no je zapamtiti da je
statièko pojaèanje filtra 0dB. Odziv filtra je dat na slici 7.41.
Slika 7.41 Odziv RC filtra
Iz date formule i slike je moguãe doãi do odreðenih zakljuèaka:
a. odziv na odskoèni odziv ima
t
e oblik
b. po�to je vIN(t0+ )= vOUT(+) izlazni signal je moguãe rekonstruisati samo na osnovu
dve ulazne velièine: vIN(t0-) i vIN(t0
+)
c. odskoèni odziv ne zavisi od toga kakav je signal bio pre trenutka t0-
Ovi zakljuèci su potrebni za naèin implementacije re�enja u kod mikrokontrolera. Zakljuèak
a) nam omoguãava da iskoristimo oblik signala sa slike 7.38 sa ceil zaokru�ivanjem gde je
statièka karakteristika nula. Na taj naèin smo iskoristili i prednost da pun opseg odskoène
pobude daje najbolju dinamièku karakteristiku. Ovo i jeste ideja realizacije na osnovu RC
filtra. Zakljuèak b): da bi rekonstruisali izlaz posle t0 potrebno je samo pomno�iti vrednost
delta sa
t
e oblikom. Zakljuèak c): za svaki novi odbirak struje DC kola mikrokontroler mora
da ga poredi samo sa prethodnim tako da je dovoljna mala kolièina memorije da bi se ovo
izvelo. Zamislimo da se u trenutku t1 ulaz na slici 7.41 menja. Program mora obaviti sledeãe
korake:
vIN(t0-) vOUT(t1), zaboravi �ta se de�avalo pre t1
delta vIN(t0+) - vIN(t0
-), izraèunaj novu razliku delta
69
t 0, idi na poèetak
t
e krive
Kad pi�emo kod trenutak t0+ odgovara iteraciji k, a trenutak t0
- je ekvivalentan iteraciji k-1.
Slika 7.42 prikazuje algoritam koji mikrokontroler izvr�ava na mestu gde je filter 2.
Slika 7.42 Algoritam novog filtra 2
Kroz algoritam se prolazi posle dobijenog svakog novog odbirka. idc_k je poslednji odbirak
struje DC kola, idc_k_1 je odbirak pre njega, var_int pamti izlazni signal dok za vreme dok se
ulaz ne menja, e_shape_k_1 je promenljiva potrebna za geenrisanje
t
e krive. Ova kriva se
generi�e u toku rada na sledeãi naèin:
_ _ [ _ _ _1 (1 ) 16383] 14e shape k e shape k
IF e_shape_k > 0 THEN e_shape_k = e_shape_k+1
70
e_shape_k_1 = e_shape_k
7 . 2 . 5 . 2 . 4 U p r a v l j a c k i a l g o r i t a m u C - u
Sledeãa slika prikazuje realizaciju upravljaèkog algoritma u modulu pod nazivom
MD_ctrl.c.
Slika 7.43 Realizacija upravljaèkog algoritma
Sledi opis svake od operacija algoritma.
Kao �to je pomenuto i delu o hardveru merenje pomoãu unipolarnog AD konvertora je
pogodnom konfiguracijom moguãe meriti polarni strujni signal. Na slici 7.44 se vidi
zavisnost izmeðu struje DC kola i vrednosti u registrima AD konvertora.
71
Slika 7.44 Rezultat AD konverzije u zavisnosti od struje DC kola
Rezultat AD konverzije slu�i za adresiranje strujne tabele gde se nalazi snimljena
karakteristika inverzna onoj sa slike 7.44. Strujna tabela prilagoðava rezultat AD
konverzije na vrednosti koje ãe se koristiti u aritmetici sa nepokretnim zarezom i na
du�inu reèi od 16 bita. Za maksimalnu izmerenu vrednost struje od 4.5A dodeljena je
vrednost od 14998, za struju od 0A dodeljuje se vrednost 0, a za struju od -0.83A se
dodeljuje -1500.
Pona�anje nelinearnog sistema u celom opsegu brzine je karakterisano tabelama sa po
33 elementa. Elementi svih tabela se adresiraju pomoãu podatka o zadatoj brzini
obrtanja rotora. Rezolucija kojom se zadaje brzina je mnogo preciznija od one koju
sadr�e tabele tako da pri postepenoj promeni brzine dolazi sa skokovitog prelaska sa
jednog parametra u tabeli na drugi. Po�to parametri direktno odreðuju karakteristike
procesa moguãa je pojava oscilacija brzine rotora i sliènih ne�eljenih efekata. Zbog
toga se za svaki parametar iz tabele vr�i linearna interpolacija u odnosu na njegov
susedni. Naèin na koji je to uraðeno je na slici 7.45.
72
Slika 7.45 Interpolacija parametara iz tabele
Po�to je postoji 5 parametara u sistemu, a interpolacija je vremenski dosta zahtevna,
kod izraèunavanja je uvedeno multipleksiranje. Kada ne bi bilo multipleksiranja svaki
parametar bi bio osve�en svakih 0.2ms. Multipleksiranje je usporilo osve�avanje
novih parametara na vrednost od 1ms. Izraèunavanje nove vrednosti parametra zavisi
jedino od velièine kojom se zadaje brzina obrtanja rotora. Kako je dinamika ove
velièine daleko sporija od 1ms prikazano multipleksiranje neãe ni na koji naèin lo�e
uticati na rad upravljaèkog algoritma.
Donja grana upravljaèkog algoritma sadr�i filtar 2, uzimanje parametara iz tabela za
Kf i If, i jo� jedno sabiranje. Filtar 2 se implementira na naèin opisan u prethodnom
poglavlju. Na izlazu iz donje grane se dobija brzina obrtanja prostornog vektora ùe.
Vrednost ove brzine se dodatno ogranièava da ne bude negativan broj jer je taj sluèaj
nedozvoljen.
Gornja grana sadr�i filter 1, uzimanje parametara iz tabela za Ku i Iu, sabiranje sa
rezultatom donje grane, i ogranièenje na samo pozitivne vrednosti rezultata UDQ.
Gornja grana pre izlaza sadr�i ogranièenje tipa zasiãenja èija karakteristika sadr�i
koleno na nominalnoj brzini obrtanja rotora motora.
Posle ovoga se jo� uvodi dodatna za�tita za UDQ sa ugraðenom marginom. Ova za�tita
deluje na opsegu brzina od nulte do nominalne. Marginom se odreðuje do koje mere je
dozvoljena kompenzacija fluksa kao na slici 7.46.
73
Slika 7.46 Za�tita od previsokog indeksa modulacije za datu brzinu rotora
Na kraju se vr�i usrednjavanje rezultata ùe i UDQ posle 64 ciklusa programa. Tek posle
ovoga se dobijaju podaci spremni za pokretanje SVPWM algoritma.
Upravljaèki algoritam sadr�i intenzivna matematièka izraèunavanja. Stoga, on zauzima
najveãi broj ciklusa takta drugog sloja programa koji iznosi 1855. Pisanje koda upravljaèkog
algoritma u C programskom jeziku i ostavljanje kompajleru da izvr�i odgovarajuãe
optimizacije po piatanju broja ciklusa izvr�avanja nije bilo dovoljno. Utvrðeno je da je neke
operacije moguãe jo� optimizovati. To je uèinjeno silaskom na osnovne operacije koje
mikrokontroler obavlja, odnosno prelaskom na asembler.
7 . 2 . 5 . 2 . 5 A s e m b l e r
Vremenski zahtevne operacije upravljaèkog algoritma su operacije skaliranja
promenljivih i mno�enja dveju promenljivih u Q14 aritmetici. Implementacija ovih
nestandardnih operacija na jeziku C nije dovoljno efikasna po pitanju broja ciklusa potrebnih
za njihova izvr�avanja. U napisanom C kodu koji je trebalo optimizovati po pitanju brzine
izvr�avanja su uoèene karakteristiène atomiène operacije. Te operacije su napisane u
asembleru, definisane macro funkcijama i sme�tene u datoteku zaglavlja MD_ctrl.h.
Operacije su sledeãe:
mno�enje dve 16-bitne promenljive èiji proizvod nije veãi od 16 bita. Naziv makroa u
programu je var_var, a sintaksa je:
var_var(promenljiva1, promenljiva2, rezultat);
skaliranje jedne promenljive:
74
o konstanta skaliranja î se nalazi u veãem opsegu [0, 255], sa lo�ijom
rezolucijom od 33.9 10 . Naziv makroa u programu je var_var_shift8. Sintaksa
za njegovo kori�ãenje je: var_var_shift8(konstanta, promenljiva, rezultat); Ova operacija vr�i mno�enje konstante i promenljive i zatim �iftovanje
rezultata za 8 bita u desno. Ako �elimo da skaliramo promenljivu
promenljiva sa decimalnim brojem î potrebno je taj broj prvo pomno�iti sa
256, a zatim zaokru�iti:
256 konstanta
o konstanta skaliranja î se nalazi u manjem opsegu [0, 1], sa rezolucijom boljom
za dva reda velièine od 51.52 10 . Naziv makroa u programu je
var_var_shift16. Sintaksa za njegovo kori�ãenje je: var_var_shift16(konstanta, promenljiva, rezultat); Ova operacija vr�i mno�enje konstante i promenljive i zatim �iftovanje
rezultata za 16 bita u desno. Ako �elimo da skaliramo promenljivu
promenljiva sa decimalnim brojem î potrebno je taj broj prvo pomno�iti sa
65536, a zatim zaokru�iti:
65536 konstanta
mno�enje dve 16-bitne promenljive u Q14 aritmetici. Naziv makroa u programu je
var_var_shift14, a sintaksa kori�ãenja je:
var_var_shift14(promenljiva1, promenljiva2, rezultat); mno�enje dve 16-bitne promenljive, mno�enje dve 16-bitne promenljive i sabiranje ta
dva proizvoda u Q14 aritmetici. Naziv makroa u programu je
var_var_plus_var_var_shift14, a sintaksa za kori�ãenje je: var_var_plus_var_var_shift14(promenljiva1, promenljiva2, promenljiva3, promenljiva4, rezultat);
Tek sa prikazanim optimizacijama je bilo moguãe implementirati upravljaèki algoritam u
drugi sloj programa. Da podsetim, drugi sloj programa raspola�e sa ogranièenim vremenom
izvr�avanja �to je prikazano slikom 7.28.
75
7.2.6 Komunikacija
U poglavlju 7.1.4 su nabrojani naèini na koji se vr�i interakcija korisnika sa pogonom.
Glavni vid komunikacije zahtevan konkursom jeste zadavanje brzine putem naponskog
signala u opsegu [0.0V, 10.0V]. Svi ostali vidovi komunikacije sa pogonom su uvedeni kako
bi se poveãao konfor pri radu sa pogonom. To su: UART dvosmerna komunikacija sa
raèunarom i I2C jednosmerna veza za prikaz parametara procesa na LED displeju pogona.
Kod koji omoguãava vezu mikrokontrolera sa okolinom je sme�ten u module: MD_tiny.c,
MD_UART.c, MD_TWI.c i MD_LED.c.
7.2.6.1 Softverski realizovana serijska komunikacija sa galvanski izolovanim AD konvertorom
(ATtiny15)
Realizacija komunikacije sa drugim mikrokontrolerom je zahtevala definisanje
protokola komunikacije, programiranje dodatnog mikrokontrolera (ATtiny15) i pisanje koda
za èitanje primljenog serijskog signala u glavnom mikrokontroleru.
Protokol po kome komuniciraju ova dva mikrokontrolera u smeru ATtiny15 →
ATmega168 je prikazan na slici 7.47.
Slika 7.47 Povorka bita kojom se prenosi rezultat AD konverzije
76
Pre svega je potrebno uoèiti da je du�ina start bita t1 dvostruko manja od du�ina trajanja
ostalih bitova. Ovo je zbog toga da bi, u trenutku kada ATMega168 oèitava signal, bili na
sredini poslatog bita. Time se poveãava otpornost na gre�ku u varijaciji frekvencije glavnog
takta kod ATtiny15. Za ovaj sluèaj, kad se �alje paket od 10 bitova, neãe doãi do gre�ke u
oèitavanju ako se frekvencija RC oscilatora kreãe u opsegu od ±4.5% od nominalne (u celom
temperaturnom opsegu uèestanost takta ATtiny15 mikrokontrolera koji se generi�e internim
RC oscilatorom ne prelazi opseg od ±2%). Posle start bita, �alju se redom bitovi od najmanjeg
do najveãeg. Na kraju se �alje jedan stop bit. Po poslatom stop bitu ATtiny15 pravi
odgovarajuãu pauzu i posle nekog vremena ponovo zapoèinje proces iz poèetka. ATMega168
po primljenom stop bitu prelazi u stanje èekanja na sledeãu sekvencu prenosa.
Ono �to je specifièno za ovu vrstu serijske veze je du�ina trajanja bita. Naime, kako bi
se �to vi�e pojednostavio kod u glavnom mikrokontroleru koji je veã i onako optereãen
brojnim drugim radnjama, mislilo se na glavnu vremensku bazu prema kojoj se pozivaju
odreðene procedure u ATMega168 � ici. Proces oèitavanja poslatih bitova je potrebno staviti
u prekidnu proceduru koja se poziva u uvek istom vremenskom intervalu. U ATMega168
postoji prekidna rutina koja se javlja svakih 204µs koja mo�e da se iskoristi za ovu namenu.
To je prekidna rutina PWM algoritma. Da bi oèitavanje poslatog signala uvek bilo u sredini
poslatog bita uzet je celobrojni umno�ak ove vremenske konstante. Tako se do�lo do
vremenske konstante t2 od 2.04ms, dok ukupno vreme slanja 10-bitne informacije iznosi
20.4ms. Brzina protoka serijskog signala sa ovim vremenima je 490.2b/s (uèestanost PWM
signala za pogon motora iznosi 4902Hz). �Idle� stanje je pode�eno tako da se 10bitni paket
�alje 25 puta u sekundi, �to je daleko iznad dinamike celog pogona.
Kod koji izvr�ava navedene zahteve u �eljenim vremenskim intervalima se nalazi u
datoteci Tiny.asm. Kako jeftin mikrokontroler ATtiny15 ne sadr�i RAM memoriju, nije bilo
moguãe programiranje u programskom jeziku C, veã je to uèinjeno u asembleru. Kako bi se
pobolj�ala èitljivost asemblerskog koda, nacrtan je algoritam koji daje bolju sliku o tome �ta
program radi (slika 7.48).
77
Slika 7.48 Generisanje povorke bita u mikrokontroleru ATtiny15
Uporeðivanje crte�a sa kodom olak�avaju labele sa brojevima od 1 do 10. Mikrokontroler je
pode�en tako da se prekidna procedura jednog od tajmera poziva svaka 64 takta, odnosno
40µs. U toj prekidnoj proceduri se nalazi algoritam sa slike 7.48. Veãi deo algoritma se sastoji
od brojaèa koji mere vreme i generi�u serijski 10-bitni signal. Naredbe:
sbi PORTB, PB2 cbi PORTB, PB2
podi�u pin 7 na visok ili ga spu�taju na nizak nivo. Potrebno je obratiti pa�nju na oèitavanje
sa AD konverora. Ono se vr�i tek posle slanja jednog paketa od 10 bita. To znaèi da ãe se
78
izmerena vrednost test signala poslati tek u sledeãem ciklusu, odnosno postojaãe ka�njenje od
1/25 sekunde �to je zanemarljivo. Na ovaj naèin je najlak�e pokrenuti AD konverziju, a da se
rezultat proèita tek po okonèanju iste, odnosno spreèeno je oèitavanje registra u AD
konvertoru pre zavr�etka konverzije. Pored generisanja povorke bitova ATtiny15 jo� vr�i i
usrednjavanje signala tako �to sabira 64 rezultata konverzije, a zatim ih deli sa brojem 64. Na
taj naèin se sistem dodatno �titi od �uma na ulazu za zadavanje brzine obrtanja rotora.
Kod kojim se vr�i prijem signala u mikrokontroleru Atmega168 je sme�ten u datoteku
MD_tiny.c. Algoritam za oèitavanje signala je sme�ten na poèetku izvr�avanja drugog sloja
programa. Mikrokontroler u svakom ciklusu programa proverava da li je postavljen start bit.
Ukoliko jeste, on prelazi u stanje prijema podataka. U tom stanju, prilikom svakog desetog
poziva prekidne rutine, on oèitava nivo digitalnog signala i sme�ta ga u odgovarajuãi bit u
svojim registrima. Posle oèitanog stop bita ponovo prelazi u stanje èekanja na start bit. U
sluèaju detekcije gre�ke u prijemu, program ãe prijaviti gre�ku i obavestiti korisnika o
neregularnom radu.
7.2.6.2 UART komunikacija
Kao �to je veã reèeno, dvosmerna serijska komunikacija sa korisnikom se odvija po
principu pitanja i odgovora. Pitanje inicira korisnik, a mikrokontroler odmah odgovara i
prelazi u stanje èekanja na sledeãe pitanje. Zbog ovakvog re�ima rada u programu su
alocirana dva niza bajtova koji predstavljaju prijemni i predajni bafer. Ovi baferi su
posrednici izmeðu prvog sloja programa koji se sastoji od prekidnih rutina i drugog sloja koji
èine sve ostale operacije u pogonu.
Prijemni bafer ima zadatak da prosleðuje podatke u strukturu pod nazivom PDA2MD.
Naziv potièe od smera u kojem se kreãu podaci: od PocketPC (PDA) ureðaja prema
MiniDrive (MD) pogonu. Struktura se sastoji od dve velièine: ctrl_source (1B) i speed (2B).
Ukupna du�ina bafera je 3 bajta. speed je 16-bitna velièina i definisana je pomoãu unije. Unija
se sastoji od jedne 16-bitne promenljive w koja se u memorijskom prostoru preklapa sa dve 8-
bitne promenljive b.l i b.h. Na ovaj naèin se istom podatku pristupa na dva naèina, kao jednoj
16-bitnoj promenljivoj i kao strukturi od dve 8-bitne promenljive. Paket podataka se prenosi u
bajtovima i tada se za upis u memorijsku lokaciju koristi struktura od dva bajta b.h i b.l.
Upravljaèki algoritam podatak o brzini tretira kao 16 bitnu promenljivu i tada se ovoj
79
memorijskoj lokaciji pristupa pomoãu promenljive w. Na ovaj naèin su izbegnuta dodatna
�iftovanja bajtova prilikom prijema i slanja podataka.
Kod promenljive ctrl_source se koristi samo jedan bit koji defini�e izvor reference za
brzinu obrtanja rotora. Za ctrl_source=0 brzina obrtanja rotora je definisana naponskim
signalom na analognom ulazu, a za ctrl_source=1 brzina se defini�e digitalnim putem
pomoãu serijske veze sa PC raèunarom.
Protok podataka kroz prijemni bafer je jednostavan. Tek kada se prijemni bafer napuni
do kraja tada funkcija void ReadPacket() prebacuje sve bajtove iz bafera u strukturu
PDA2MD. Tada se bafer potpuno isprazni i omoguãava se prekidna rutina za UART prijem �
SIG_USART_RECV.
Predajni bafer zauzima tri bajta memorijskog prostora. Preko ovog memorijskog
prostora se prosleðuju grube informacije o stanju pogona. To su: zadata brzina obrtanja rotora
u smanjenoj 8-bitnoj rezoluciji, vrednost struje DC kola u smanjenoj 8-bitnoj rezoluciji i
velièina koja opisuje detektovanu gre�ku (1 bajt).
Protok podataka kroz predajni bafer vr�i funkcija void SendPacket() koja puni
bafer sa 3 bajta podataka, a zatim omoguãi prekidnu rutinu za slanje na UART modulu. Dalji
posao preuzima prvi sloj programa koji posle prenetog poslednjeg bajta prazni bafer i
onemoguãava izvor prekida za slanje � SIG_USART_DATA .
Potrebno je reãi da su funkcije za prijem i slanje podataka preko USART modula
napravljene tako da veoma lako mo�e da se izmeni velièina prijemnog i predajnog paketa i
redosled promenljivih u tim paketima. Na ovaj naèin je moguãe u spoljni svet poslati bilo
koju promenljivu ili primiti bilo koju komandu �to je i raðeno u toku razvoja pogona. Kod
eksperimentalnog pode�avanja parametara procesa koji su sme�teni u 5 tabela opisanih u delu
o upravljaèkom algoritmu kori�ãena je serijska veza za PC raèunarom. Na taj naèin su
parametri pode�avani u realnom vremenu, a ne stalnim reprogramiranjem FLASH memorije
mikrokontrolera.
7.2.6.3 I2C veza sa LED displejem
LED dislplej ugraðen u pogon ima ulogu da prika�e zadatu brzinu obrtanja rotora i kod
gre�ke ako je do�lo do neregularnog rada u pogonu. Brzina obrtanja rotora se prikazuje bez
obzira na to da li je zadata preko naponskog signala ili digitalno � putem serijske veze. Deo
80
koda koji obavlja operacije potrebne za prenos podataka na LED displej je uraðen tako da je
uz male izmene moguãe prikazati bilo koju promenljivu programa. Kod pisanja koda za ovu
vrstu komunikacije nije bilo potrebno definisati protokol kojim se �alju podaci jer je on veã
unapred definisan TWI standardom i izborom odgovarajuãeg kontrolera LED displeja. Kod se
sastoji iz tri celine:
algoritam za opslu�ivanje TWI prekidne rutine � sadr�an u biblioteci preuzetoj od
proizvoðaèa mikrokontrolera ATMEL
algoritam za podr�ku I2C protokola � takoðe preuzet iz biblioteke proizvoðaèa
algoritam za konverziju 16-bitne promenljive u niz znakova koji ãe se slati u kontroler
LED displeja � napisan za ovu priliku
Naèin funkcionisanja prve dve celine koda je detaljno opisan u dokumentu preuzetom od
proizvoðaèa ATMEL pod rednim brojem AVR315 te ovde neãemo ulaziti u detalje njegove
implementacije. Za uspe�no kori�ãenje TWI modula i date biblioteke je potrebno poznavati
zaglavlje funkcije kojom se na LED displej �alje niz bajtova. Deklaracija funkcije glasi:
void TWI_Start_Transceiver_With_Data( unsigned char * , unsigned char );
Vidi se da je pre slanja niza na displej potrebno pripremiti string sa pokazivaèem na prvom
elementu i znati broj elemenata koji se �alje.
Protokol prenosa bajtova podataka je definisan u tehnièkoj specifikaciji kontrolera LED
displeja SAA1064. Na slici 7.49 se vidi format slanja podataka koji treba ispo�tovati da bi se
upotrebio LED displej.
Slika 7.49 Format podataka po kojem se vr�i komunikacija sa LED displej kontrolerom
Tabele 7.4 i 7.5 opisuju ulogu svakog bita u prikazanom nizu bajtova.
81
Tabela 7.4 Adresiranje narednog bajta
stanje kontrolnog bita funkcija C0 = 0 statièki re�im, napajanje 1. i 2. cifre C0 = 1 dinamièki re�im, izmenièno napajanje cifara 1+3 i 2+4
C1 = 0/1 cifre 1+3 su iskljuèene/ukljuèene C2 = 0/1 cifre 2+4 su iskljuèene/ukljuèene C3 = 1 svi segmenti su ukljuèeni, koristi se za testiranje C4 = 1 struji segmenta dodaje 3mA C5 = 1 struji segmenta dodaje 6mA C6 = 1 struji segmenta dodaje 12mA
Tabela 7.5 Kontrola napajanja segmenata
Izabran je re�im rada gde se koriste sve èetiri cifre u dinamièkom re�imu rada i gde struja
segmenta iznosi 3mA. Da bi se to postiglo potrebno je poslati niz sledeãih bajtova: 0x76
(adresa kontrolera), 0x00 (zapoèni slanje paketa sa kontrolnim bajtom), 0x17 (kontrolni
bajt), 0x.., 0x.., 0x.., 0x.. (slanje sve èetiri cifre). Navedena vrednost kontrolnog bajta
ãe: zadati naizmenièni re�im prikazivanja cifara, ukljuèiti sve èetiri cifre, struja napajanja
segmenta je 3mA.
Algoritam kojim se vr�i konverzija broja u string i priprema za kontrolnih bajtova
prikazanih na pro�loj tabeli se nalazi u modulu pod nazivom MD_LED.c u funkciji èija je
deklaracija:
void LED_display(unsigned int ); Kao ulazni parametar funkcija ima broj koji ãe biti prikazan na displeju. Konverzija datog
broja u niz od èetiri znaka je vremenski zahtevna procedura. Naèin na koji se vr�i konverzija
je prikazan na slici 7.50.
82
Slika 7.50 Konverzija broja u string
Celobrojno deljenje sa brojem 10 u prikazanom algoritmu se vr�i kao mno�enje sa brojem 0.1,
odnosno kao skaliranje promenljive. Za to je upotrebljena macro funkcija pod nazivom
var_var_shift16. Prema proceduri prikazanoj u glavi 7.2.5.2.5 potrebno je naãi
celobrojnu reprezentaciju konstante î koja u na�em sluèaju iznosi 0.1. Na taj naèin se posle
zaokru�ivanja dobija celobrojna konstanta � 6554 (u heksadecimalnoj formi � 0x199A).
Projektanti kontrolera LED displeja su ostavili slobodu u naèinu kako ãe se iskoristiti
svaki segment na displeju. To znaèi da je pre slanja podatka na SAA1064 potrebno mapirati
83
svaki segment prema broju koji ãe se prikazivati. Naèin na koji su mapirani brojevi je
prikazan na slici 7.51.
Slika 7.51 Mapiranje segmenata LED displeja
Pored segmenata koje grade cifru moguãe je mapirati i èetiri taèke, koje mogu da se iskoriste
za prikazivanje zareza kod decimalnih brojeva . U na�em sluèaju, dve taèke su povezane na
LED diode sa crvenom i zelenom bojom koje obave�tavaju korisnika ispravnosti rada pogona.
U programu ove dve diode su predstavljene globalnim promenljivama pod nazivom red i
green. Ukoliko je odgovarajuãa promenljiva razlièita od nule, na displeju ãe zasvetleti njena
dioda. Promenljive red i green se mogu postaviti u bilo koji deo programa i tako omoguãiti
proveru rada pogona i u razvoju.
Posle svih obavljenih priprema niz od 7 elemenata se �alje na TWI modul. Cela funkcija
pripreme i slanja niza znakova na LED displej je optimizovana mo�e na vreme da se zavr�i u
svakom ciklusu programa. To znaèi da se podatak na LED displeju osve�ava 4900 puta u
sekundi �to je potpuno nepotrebno. Na poèetku izvr�avanja funkcije LED_display se
postavlja ogranièenje koje ãe smanjiti uèestanost osve�avanja podatka na displeju na vrednost
od 16Hz. Ovo je sasvim dovoljno za udobno oèitavanje podataka sa dipleja.
7.2.7 Softverska za�tita
Moduli u kojima su sme�tene funkcije pisane za softversku za�titu od neregularnih
uslova rada su: MD_protect.c i MD_filter.c. Mikrokontroler je u stanju da nadgleda i
reaguje na sledeãe tipove gre�ke
dogaðaj naziv opis napon DC kola previsok
UDC_MAX vrednost napona veãa od 440V ãe biti prijavljena i pogon ãe biti zaustavljen
napon DC kola prenizak
UDC_MIN napon manji od 250V zaustavlja pogon i obave�tava korisnika
84
temperatura IRAMS modula previsoka
T_MAX za temperature IRAMS modula preko 85ºC rad pogona se zaustavlja
kratak spoj na DC kolu
SC kolo koje radi nezavisno od mikrokontrolera je detektovalo visoku struju na DC kolu, zaustavlja se rad pogona
gre�ka na I2C magistrali
I2C_ERR zaustavlja se komunikacija sa kontrolerom LED displeja, pogon nastavlja da radi
gre�ka na eksternom AD konvertoru
TINY_ERR primljen je neispravan stop bit u serijskoj komunikaciji sa mikrokontrolerom ATtiny15, pogon nastavlja da radi
Tabela 7.6 Tipovi gre�ke na pogonu i reakcija mikrokontrolera
Informacija o svim gre�kama koje su se javile u toku rada se sme�ta u statusnu promenljivu
pod nazivom error_code. Svaka gre�ka odgovara po jednom podignutom bitu u ovoj
promenljivoj, vidi tabelu 7.7.
bit 7 6 5 4 3 2 1 0
oznaka DRIVE_ON UDC_MAX UDC_MIN T_MAX SC I2C_ERR TINY_ERR -
Tabela 7.7 Statusni bajt gre�ke na pogonu � error_code
Kada doðe do bilo koje gre�ke od nabrojanih na LED displeju se vi�e ne prikazuje brzina veã
vrednost 8-bitne promenljive error_code. Na taj naèin je pomoãu jednog broja prikazano
kompletno stanje.
Detekcija gre�ke i reagovanje na gre�ke se obavlja u funkciji pod nazivom
Protect(void). U ovoj funkciji se nalazi kod koji komunicira za eksternom za�titom od
kratkog spoja prikazanom na slici 7.19. �to se tièe jaèine struje, DC kolo je veoma
za�umljeno i sadr�i mnogo visokih strujnih impulsa. Eksterno kolo za detekciju visoke struje
DC kola ãe reagovati na strujni impuls bilo koje du�ine trajanja. Kod u mikrokontroleru treba
da ispita da li se radi o bezopasnom, kratkotrajnom strujnom impulsu ili je stvarno do�lo do
kratkog spoja DC kola. U svakom drugom ciklusu programa se testira da li je do�lo
eventualnog kratkog spoja. Ovaj deo koda se nalazi u prekidnoj rutini SIG_ADC. Tada se
uveãava globalna promenljiva short_circuit. Program zatim resetuje eksterno kolo za
za�titu od kratkog spoja. Resetovanje se vr�i na liniji RESETSC u dva impulsa izmeðu kojih
je pauza od 10s. Ovaj proces se ponavlja svaki put kada eksterno kolo prijavi visoku struju.
Sa druge strane, promenljiva short_circuit se dekrementira svake 4ms. Na ovaj naèin
85
promenljiva kao da pliva u zavisnosti od brzine detektovanja visokih strujnih impulsa.
Ukoliko vrednost promenljive preðe 64 prijavljuje se SC gre�ka i pogon se zaustavlja. Na slici
7.52 se vidi sluèaj kad je do kratkog spoja zaista do�lo.
Slika 7.52 Kretanje brojaèa short_circuit u sluèaju kad na DC kolu postoji nedozvoljeno velika
struja � kratak spoj
Tada ãe se svakih 408s promenljiva short_circuit uveãati za jedan, a svakih 4.08ms
umanjiti za jedan. Tim tempom ãe se vrednost potrebna da se pogon iskljuèi (64) dostiãi za
28.56ms. Znaèi, od pojave kratkog spoja do reakcije pogona ãe proãi 28.56ms. U situaciji kad
nije do�lo do kratkog spoja veã se detektuju sporadièni strujni pikovi promenljiva
short_circuit ãe se br�e dekrementirati nego inkrementirati. Na taj naèin nikad neãe
dostiãi kritiènu vrednost 64. Granièna uèestanost pojave strujnih impulsa koja ãe dovesti do
iskljuèenja pogona iznosi 245Hz.
Pored toga �to u sluèaju gre�ke program deluje prekidanjem rada pogona ili
obave�tavanjem korisnika, program je napisan tako da spreèi brze promene broja obrtaja
rotora usled nepa�ljivog zadavanja reference. Postoje dve situacije:
skokovito je zadata mnogo veãa brzina obrtanja rotora � ovo dovodi do velikog
klizanja s, i kroz DC kolo kreãe struja veãa od dozvoljene
skokovito je zadata mnogo manja brzina obrtanja rotora � ovo dovodi motor u
generatorski re�im rada �to vodi poveãanju napona DC kola koji mo�e preãi
dozvoljenu granicu i trajno o�tetiti komponente pogona. Najèe�ãe prvi stradaju
elektrolitski kondenzatori u DC kolu.
Oba ova sluèaja su realno izmerena i prikazana na slici 7.5. Problem je re�en ubacivanjem
rampe na promenljivu koja defini�e brzinu obrtanja rotora. Odgovarajuãi algoritam se nalazi u
86
funkciji SpeedupLimit(void). Nagib rampe u programu je takav da se rotor od 0obrt/s
do 1500obrt/s ubrza za 5s.
Ispravno funkcionisanje sistema softverske za�tite od neregularnog rada pogona zahteva
informaciju o naponu DC kola i temperaturi IRAMS modula. Ova informacija sti�e sa AD
konvertora i sigurno je za�umljena. Stoga je pre ulaska u algoritam softverske za�tite potrebno
filtrirati ova dva signala. Funkcije èije su deklaracije
unsigned int filter_udc( unsigned int ); i
unsigned int filter_tmp( unsigned int ); sme�tene u datoteku MD_filter.c obavljaju ovu ulogu. Oba signala se filtriraju sa filtrom
opisanim izrazom 7.7, gde je konstanta á=0.66. Sa ovakvom konstantom koja je daleko od
graniènih vrednosti 0 i 1 efekti gre�ke kvantizacije nisu dominantni tako da je realizacija
jednostavna. Vremenska konstanta ovog niskopropusnog filtra prvog reda je 3ms. Vreme
potrebno za izvr�avanje svaka od ova dva filtra je 203 ciklusa takta ili oko 10s. Kako bi se
algoritam softverske za�tite efikasno realizovao ovi filtri su sme�teni u period u kom se pravi
pauza od10s izmeðu dva resetovanja eksternog kola za detekciju kratkog spoja.
7.2.8 Vremenski dijagram kompletnog programa
Modul pod nazivom MD_main.c sadr�i funkciju koja se poziva po ukljuèenju pogona
� int main(void). Prvi deo funkcije èine inicijalizacije svih periferija unutar
mikrokontrolera, odnosno pokretanje prvog sloja programa. Drugi deo funkcije se sastoji od
beskonaène petlje u kojoj se pozivaju funkcije drugog sloja programa. Pored zastavice za
sinhronizaciju sa prvim slojem programa, postoji zastavica za indikaciju inicijalnog stanja
pogona po ukljuèenju � rst. Ova zastavica je podignuta prvu sekundu od ukljuèenja pogona.
Za vreme prve sekunde pogon se postavlja u radno stanje (punjenje elektrolitskih
kondenzatora, smirivanje struje i napona DC kola...). Za to vreme su onemoguãene funkcije
èitanja reference brzine preko analognog ulaza i komunikacija sa raèunarom preko serijske
veze. Posle jedne sekunde ova zastavica se obara i tako ostaje do kraja rada pogona.
Sledeãa tabela prikazuje kako izgleda drugi sloj programa i koliko traju izvr�avanja
njegovih delova:
87
broj ime funkcije maksimalno trajanje 1. Tiny(); 84 2. Protect(); 483 3. SpeedupLimit(); 55 4. DataSource(); 77 5. ControlAlg(); 1855 6. UART_communicate(); 76 7. LED_display(); 600 8. AfterReset(); 55
Tabela 7.8 Procesi drugog sloja programa i njihova trajanja
Sa podacima iz prethodne tabele mo�e, konaèno da se dopuni slika 7.28 na kojoj je bio
prikazan samo prvi sloj programa:
Slika 7.53 Drugi sloj programa zavr�ava svoj ciklus neposredno pre poèetka sledeãeg ciklusa programa �
do kraja ciklusa ostaje slobodno samo 64 ciklusa takta ili 1,5% vremena
Na slici se vidi da ãe svaki ciklus programa koji broji 4080 ciklusa takta biti uspe�no izvr�en.
Ne zaboravimo da su vremena izvr�avanja svih funkcija uzeta u najgorem sluèaju �to znaèi da
ãe u regularnom radu iskori�ãenost procesora mikrokontrolera biti i manja.
88
7.3 Literatura
[7.1] Slobodan N Vukosaviã, ,,Elektriène Ma�ine i Postrojenja � skripta za predavanja�,
Beograd 2003.
[7.2] Slobodan N Vukosaviã, ,,Mikroprocesorsko Upravljanje Elektromotornim Pogonima
� skripta za predavanja�, Beograd 2004
[7.3] Dragan Miliãev, ,,Programiranje u realnom vremenu � skripta za predavanja�,
Beograd 2002.
[7.4] Mile Stojèev, ,,RISC, CISC i DSP procesori�, Univerzitet u Ni�u, Elektronski fakultet,
Ni� 1997
[7.5] �ivkoviã Dejan B.; Popoviã Miodrag V. ,,Impulsna i digitalna elektronika�, Beograd
2003.
[7.6] Vujo Drndareviã, ,,Akvizicija mernih podataka pomoãu personalnog raèunara�,
Institut za nuklearne nauke � Vinèa 1999.
[7.7] Miliã Stojiã, ,,Digitalni sistemi upravljanja�, Beograd 1990
[7.8] Milan Prokin, ,,Mikroprocesorska elektronika�, Beograd 2003
[7.9] Laslo Kraus, ,,Programski jezik C sa re�enim zadacima�, Beograd 2001
[7.10] Dobrosavljeviã Zoran, Miliã Ljiljana, ,,Uvod u digitalnu obradu signala�, Beograd
2004
[7.11] Goran Mandiã, ,, Digitalni pogonski kontroler zasnovan na IPM inteligentnom modulu
i ATmega8 procesoru � diplomski rad�, Beograd 2004
[7.12] Michael Barr, ,,Programming Embedded Systems in C and C++�, O'Reilly, First
Edition January 1999
[7.13] Analog Devices Inc. ,,ADSP-2100 Family User�s Manual� , New Jersey 1994
[7.14] Atmel Corporation, ,,ATmega48/88/168 Datasheet�, San Jose 2004.
[7.15] Atmel Corporation, ,,ATtiny15L Datasheet�, San Jose 2002.
[7.16] Philips Semiconductors, ,,SAA1064 Product Specification�, 1991.
[7.17] International Rectifier, �IRAMS10UP60A Datasheet�, 2000.
90
10.1. Zahtevi konkursa
Design
Concept/Function
Minimum Target Requirement
1. Manufacturing cost No more than US$40 when scaled to high-volume production
(approximately 1 million units/year).
2. Complete package
size
A convenient shape with volume less than 4 L. (Motor maximum
dimensions are given below.)
3. Complete package
weight
Mass less than 8 kg for the complete system.
4. Output power
capability and speed
range
500 W continuous shaft output power at a nominal speed of 1500
RPM, and also at higher speeds up to 5000 RPM. Continuous output
torque of at least 3.18 N-m at speeds from 150 RPM to 1500 RPM.
5. Input source Single-phase source at 50 Hz or 60 Hz. Teams may select either to
design for nominal 120 V at these frequencies or for nominal 240 V at
these frequencies.
6. Overall energy
efficiency
Higher than 70% for shaft loads ranging from 50 W to 500 W.
Efficiency will be tested at a nominal speed of 1500 RPM and also for
the entire speed range from 150 RPM to 5000 RPM.
7. Power factor Power factor measured at the electrical input should be at least 80%
when tested under a 500 W shaft load at 1500 RPM. Current
waveform should conform to requirements in IEC1000-3-2 standards.
8. Safety The system is intended for safe use in a home appliance or household
HVAC system.
9. Speed control Speed is to be controlled from start to the full 5000 RPM with a linear
0-10 V analog signal, referenced to the unit case. Except for starting,
no testing will be performed below 150 RPM.
9. Speed regulation
and accuracy
The actual operating speed should remain within 5% of the voltage
command setting (2 V/1000 RPM) from no-load to full-load.
10. Acoustic noise Low noise. Less than 50 dBA sound level measured 0.5 m from the
unit.
11. Electrical noise Able to meet FCC Class A�industrial requirements for conducted
91
and radiated EMI.
12. Protection Self-protection against continuous stall conditions, over temperature,
or loss of input source with no damage caused by any of these (up to
the maximum storage temperature).
13. Environment Open drip proof motor construction is acceptable. Ambient
temperature -20C to +40C. Suitable for indoor or outdoor domestic
applications.
14. Lifetime The system should function for at least ten years with no maintenance
needs when subjected to normal use in a 20C to 30C ambient
environment.
15. Technical report Design, simulation, experiment results, lifetime analysis, and cost
study.
Additional Hardware
Specifications
1. Inrush and starting
current
Operating current shall not exceed 150% of the nominal full-load
current under any conditions, including power-on inrush and motor
starts.
2. Phases and motor
phasing
The input power source is single phase. There are no restrictions on
the motor technology or motor phase count as long as the system
operates from single-phase power.
3. Motor dimensions The motor itself must be no larger than NEMA Frame Size #48.
Radius from shaft center to mounting points not to exceed three
inches or 76.2 mm. Overall length (not including shaft extension) not
to exceed 7.75 inches or 197 mm.
4. Coupling and
mount
Motor is to be provided with a footed or cradle mount with base holes
corresponding to NEMA Frame #48 (width spacing 108 mm or 4.25
in, length spacing 70 mm or 2.75 in), located 76.2 mm (3 in) below
the shaft center. Motor shaft diameter is to be 0.50 in (12.7 mm), or
the team can provide a suitable adapter to achieve this diameter. The
shaft should extend at least 38 mm beyond the motor case.
5. Safety The final rules will contain detailed safety information. No live
electrical elements are to be exposed when the system is fully
92
configured.
6. Connection The complete unit is to be provided with an IEC 320 input
connection, with a clear label stating the voltage requirement.
7. Storage temperature
range
-20 to 60°C
8. Bearings Any choice of bearings is acceptable, provided no lubrication or
maintenance will be needed during a ten-year normal duty operating
life.
9. Handling The unit must be robust enough for normal handling by a technician
with no special training.
10. Shipping
environment
Can be shipped by conventional air freight or truck freight.
11. Displays and data No displays or data capability are required, although a digital display
of running speed is encouraged. A control dial with markings is
required, as stated above.
12. Command signal Access to the speed control voltage signal is to be provided either
through a conventional BNC jack or a pair of screw terminals. The
input should be protected against accidental polarity reversal. The
speed must return to zero if no signal is connected.
13. Switch The unit must include an on/off switch. When the switch is off, the
input power must not exceed 1 W.
Prototype Test
Considerations
1. Inspections All prototypes of approved Finalist teams must pass safety inspection
prior to operation. All prototypes must function correctly during a 15-
minute initial operation check before proceeding.
2. Test energy source:
voltage
Prototypes will be tested with available power consistent with the
selected voltage rating. Either 50 Hz or 60 Hz may be used.
3. Test duration An automated load sequencing operation will be tested for up to 24 hr
continuous.
4. Typical operation
tests
Tests for steady-state performance, protection, robustness to stalls,
acoustic noise, electromagnetic noise may be conducted.
5. Source interface Tests for transient loads may be conducted, within the allowed torque,