realizacija upravljaŁkog softvera pogona - emp.etf.rsemp.etf.rs/radovi/diplomski/zivkovic.pdf ·...

93
ElektrotehniLki fakultet Univerziteta u Beogradu Diplomski rad Realizacija upravljaLkog softvera pogona zasnovanog na trofaznom asinhronom motoru - Projekat miniDRIVE - Kandidat Aleksandar ivkoviª Mentor Prof. Dr Slobodan Vukosaviª Novembar 2006.

Upload: dangbao

Post on 01-Jul-2018

224 views

Category:

Documents


0 download

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

7

Maksimalna nadmorska

visina 1000m

Standardi IEC 60335-1

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.

89

10. Prilozi

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,

93

tests speed, and power range.