You are on page 1of 38

VIA ELEKTROTEHNIKA KOLA

Ubovi Dalibor

PRIMENA MIKROKONTROLERA SERIJE PIC18F U


REGULACIJI BROJA OBRTAJA JEDNOSMERNOG MOTORA
- diplomski rad -

Beograd , 2007
Kandidat : Ubovi Dalibor

Broj Indeksa : AT42/05

Smer : Automatika

Tema : PRIMENA MIKROKONTROLERA SERIJE PIC18F U REGULACIJI


BROJA OBRTAJA JEDNOSMERNOG MOTORA

Osnovni zadaci :
1. Analiza problema
2. Projekat i realizacija
3. Ispitivanje

Hardver : 50 % Softver : 40 % Teorija : 10 %

Mentor
Beograd ,
26.03.2007.
Mr. Borislav Hadibabi
IZVOD

U ovom diplomskom radu opisana je regulacija brzine jednosmernog motora na principu


impulsno irinske modulacije koja se vri pomou mikrokontrolera . Mikrokontroler obavlja
jos i merenje trenutne brzine i njen ispis na izlazne uredjaje, LCD displej i UART .
Mikrokontroler vri takoe i ulogu digitalnog P tj. proporcionalnog regulatora ime je
ostvarena povratna sprega po brzini tj. brzina se odrava konstantnom bez obzira na
promenljivo optereenje.

ABSTRACT

In this diploma work is described speed regulation of direct current motor based on the pulse
width modulation principle which has been realized by using microcontroller . Here
microcontroller also measures instant speed and send data to the output devices , LCD dispay
and UART . Microcontroller has also the role of digital P , that is , proportional regulator
which achieves speed feedback , that is , speed is kept constant no matter what variable
mehanical load is .
SADRAJ

1. UVOD .................................................................................................................. 1
1.1. DEFINISANJE PROBLEMA ................................................................... 1
1.2. MOGUA I IZABRANA REENJA ...................................................... 1
2. PROJEKAT I REALIZACIJA ..................................................................... 2
2.1. BLOK EMA HARDVERA I DIJAGRAM TOKA ............................... 2
2.1.1. Opis inicijalizacionog dela softvera ......................................................... 2
2.1.2. Opis glavne programske petlje ................................................................. 5
2.2. KORIENI SOFTVER I HARDVER PRI PROJEKTOVANJU .......... 7
2.3. DETALJAN OPIS POJEDINANIH BLOKOVA ................................. 8
2.3.1. Mikrokontroler PIC18F4520 .................................................................... 8
2.3.2. LCD Displej .............................................................................................. 12
2.3.3. UART ....................................................................................................... 17
2.3.4. Tastatura ................................................................................................... 20
2.3.5. CCP moduli .............................................................................................. 21
2.3.6. ECCP modul ............................................................................................. 24
2.3.7. Modul za napajanje ................................................................................... 26
2.4. DIGITALNI P REGULATOR .................................................................. 27
3. ISPITIVANJE ...................................................................................................... 28
4. ZAKLJUAK ...................................................................................................... 31
5. INDEKS POJMOVA ........................................................................................... 32
6. LITERATURA ..................................................................................................... 33
DODATAK ........................................................................................................... 34
Dodatak 1 : Elektrina ema ureaja
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

1.UVOD

1.1 DEFINISANJE PROBLEMA


Ova tema se bavi regulacijom i merenjem brzine obrtaja jednosmernog motora .
Zahteva poznavanje rada diskretnih elektronskih komponenti , arhitekture mikrokontrolera
PIC18F4520 , pisanja softvera na asembleru za kontroler i poznavanja optih teorijskih
principa u elektrotehnici , tako da predstavlja irok spektar znanja sticanog tokom studija .

1.2 MOGUA I IZABRANA REENJA


to se tie samog hardvera tu nije bilo previe dilema , jer je na neki nain uslovljen
tehnikom podrkom samog mikrokontrolera . PIC18F4520 poseduje ECCP modul koji sa 4
pina moe da omogui podrku za realizaciju full bridge izlaznog stepena . Postoji vie
varijanti konfiguracija PWM izlaznog stepena , a to su : single output , half bridge , full
bridge . Izabrana je full bridge konfiguracija izlaza zato to omoguava , ako je kasnije to
potrebno , promenu smera obrtanja motora u softveru . Full Bridge PWM izlaz se realizuje sa
4 prekidaka tranzistora od kojih su za jedan smer aktivna dva , dok su druga dva neaktivna .
Za samo merenje brzine obrtanja izabrana je optika metoda . Na sam motor fiksiran je
optiki senzor KTIR0621DS koji se sastoji iz fotodiode kao optikog predajnika i
fototranzistora kao optikog prijemnika . Fiziki oblik ovog senzora je u obliku irilinog
slova p , tako da pero koje je privreno na osovinu motora pri obrtanju prekida optiki
signal . Na ovaj nain , na fototranzistoru senzora se dobija povorka impulsa koja nosi
informaciju o brzini obrtaja motora . Za izraunavanje broja obrtaja motora na bazi ove
povorke impulsa postoje dve varijante . Prva je da se Tajmer 0 konfigurie kao asinhroni
broja i da mu se dovede povorka impulsa sa fototranzistora na T0CKI pin i da se na svakih
nekoliko sekundi proverava dokle je dobrojao Tajmer0 i da se od te vrednosti prostim
mnoenjem dobije informacija u obrtajima u minutu . Tajmer1 bi se podesio da radi kao
interni tajmer i da u odreenim vremenskim intervalima generie prekid . Ova metoda je
nepovoljna zbog suvie dugog vremena uzorkovanja , jer se nova vrednost pojavi tek za
nekoliko sekundi . Druga metoda je da se upotrebi jedan od CCP modula u capture reimu
rada . Tajmer koji je dodeljen CCP modulu , u ovom sluaju npr. TMR3 radi kao interni
tajmer i broji koliko mikrosekundi traje jedan obrtaj motora . Kada naie sledea ivica signala
postavlja se fleg CCPxIF i vrednost TMR3 kopira u CCPRx registar . Uzorkovanjem 4 ili 8
ovakvih vrednosti i traenjem srednje vrednosti dobija se solidna tanost uz dosta krae
ukupno vreme uzorkovanja koje se kree od 100 do 500 milisekundi maksimalno . Ova
metoda je izabrana i primenjena u ovom projektu . Teoretski , pored optike metode merenja
brzine postoji jo i tzv. tahogeneratorska metoda .Ovde bi se ostvario mehaniki prenos
izmeu osovina motora i generatora . Indukovani napon na krajevima generatora bi bio
informacija o brzini motora . Kao generator moe da se koristi DC motor u generatorskom
reimu rada . Raspoloivi motori su imali ugraenu elektroniku za stabilizaciju izmeu
namotaja i izlaznih prikljuaka . Na izlazu motora koji je bio u funkciji generatora se nije
dobijala linearna promena napona u funkciji broja obrtaja , pa se od ove metode odustalo .
Drugi motor je iskorien za simulaciju optereenja . Izvren je mehaniki prenos gumenim
kaiem sa osovine jednog na osovinu drugog motora . Drugi motor koji simulira optereenje
vezan je preko potenciometra na 12V napona napajanja . Preko potenciometra menja se
jednosmerni napon na motoru i time optereenje glavnog motora .

-1-
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

2.PROJEKAT I REALIZACIJA

2.1 BLOK EMA HARDVERA I DIJAGRAM TOKA

DSUB9
LCD DISPLAY UART RS232 voltage serial
& shift register adapter ___ MAX232 port
74HC164

PIC18F4520
MICROCONTROLLER keyboard

PWM OUTPUT

motor OPTICAL
dc SENSOR

ktir0621ds

Slika 1. Blok ema ureaja

Kao to se na dijagramu toka na slici 2 moe videti , po startovanju mikrokontrolera se


redom inicijalizuju sledee neophodne periferije : CCP1 modul kao PWM Full Bridge ,
UART , LCD displej , tastatura , CCP2 modul kao Capture .
Zatim se mikrokontroler vrti u jednoj petlji ciklino ponavljajui sledee operacije:
uzimanje 4 capture uzorka , nalaenje prosene capture vrednosti , raunanje broja obrtaja u
minutu potprogramom Div32 i naknadnim mnoenjem sa 60 , regulisanje brzine
potprogramom speed_reg_sub , prebacivanje u bcd kod 16 bitne vrednosti koja predstavlja
obrtaje u minutu , ispis na LCD displej , slanje UART-om na PC , obrada prekida koji izaziva
tastatura . Sada e samo ukratko biti opisan rad svake koriene periferije mikrokontrolera i
kako se ona koristi u ovoj aplikaciji od strane softvera . U narednom poglavlju bie dat
detaljniji opis svake koriene periferije mikrokontrolera i spoljnih elektronskih kola .
2.1.1. Opis inicijalizacionog dela softvera
Prvo se inicijalizuje CCP1 modul u Full Bridge PWM modu . Zbog mogunosti half
bridge i full bridge PWM modova CCP1 se jo zove i ECCP (eng. Enhanced tj. poboljani)
modul . Ovde upotrebljeni Full Bridge PWM mod nudi dodatne opcije i tako omoguava iri
spektar kontrolnih aplikacija . Dodatne opcije su mogunost korienja do 4 izlazna pina
mikrokontrolera za PWM funkciju , kao i mogunost biranja da li je signal aktivan visok ili
nizak na nekom PWM pinu . Ovo omoguava softversku promenu smera obrtanja motora .

-2-
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

Inicijalizacija CCP1
modula u Full Bridge
PWM modu

potprogram za regulaciju
brzine
speed_reg_sub

Inicijalizacija
UART-a

potprogram za
prebacivanje u bcd kod
bcd_code ; ulaz 16bitni
inicijalizacija LCD broj , izlaz buffer0 tj. 4
displeja bcd cifre

inicijalizacija
tastature

potprogram za ispis na LCD


displej ; lcd_sub

Inicijalizacija CCP2
modula u CAPTURE
reimu

potprogram za komunikaciju
sa UART-om ; uart_sub

CCP2_petlja za uzimanje 4
capture uzorka
kratkotrajna dozvola za
interapt rutinu niskog
prioriteta - tastatura

dve petlje za nalaenje


prosene capture vrednosti (
sabiranje 4 capture uzorka i
deljenje sa 4)

potprogram za deljenje Div32 ;


1000 000 / average capture =
broj ob/sec

Slika 2. Dijagram toka

-3-
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

Zatim se inicijalizuje UART preko koga se serijski komunicira sa spoljnim ureajima .


Za ovu softversku implementaciju se koristi samo mogunost UART-a da radi kao asinhroni
predajnik . Poto radi u asinhronom modu sa bitovima podatka alju se i kontrolni start i stop
bitovi i eventualno bit parnosti za detekciju greaka. Postavljanjem odgovarajuih vrednosti u
SPBRG registar i bit BRGH zadaje se odgovarajua bodska brzina tj. brzina prenosa podataka
izraena u broju bita u sekundi . Inae UART ovde ima funkciju da alje ASCII karaktere koji
predstavljaju brzinu na serijski port personalnog raunara . Na ovaj nain se podatak o brzini
moe oitati preko aplikacije HyperTerminal koja je sastavni deo svakog Windows
operativnog sistema . Naravno , neophodno je prethodno podesiti HyperTerminal na isti
format podatka i brzinu prenosa koju koristi UART mikrokontrolera . Moe se , takoe ,
pratiti promena brzine u vremenu i to sauvati kao log fajl. Komunikacija sa personalnim
raunarom izvedena je pre svega da bi informacija o trenutnoj brzini bila uvek lako dostupna ,
jer drugi izlazni ureaj za prikaz informacija LCD displej je deo ureaja za regulaciju brzine
koji se nee uvek nalaziti na pogodnom i pristupanom mestu .
Sledei na redu za inicijalizaciju je LCD modul . Na poetku koda za inicijalizaciju
LCD displeja stavljen je potprogram za vremensko kanjenje od 35 milisekundi koji daje
vremena LCD modulu da preko internog kola pokua da odradi hardversku inicijalizaciju . Ali
uspeh ove operacije zavisi od brzine uspostavljanja napona napajanja koja esto nije
zadovoljavajua . Zato se primenjuje softverska inicijalzacija koja uvek uspeno inicijalizuje
LCD modul. to se tie hardverske realizacije upotrebljen je pomeraki registar 74HC164 sa
ciljem da se smanji broj pinova mikrokontrolera koji se koristi za potrebe LCD displeja sa 6
na samo 3 pina .
Zatim se inicijalizuje tastatura . U ovom projektu tastaturu predstavljaju dva tastera ija
je funkcija poveanje i smanjenje vrednosti registra koji odreuje referentnu brzinu . Tasteri
su vezani za eksterne interapt linije INT1 i INT2 . Poto su predhodno ukljueni inerni pul-ap
otrpornici na portu B linije INT1 i INT2 su na visokom nivou kada tasteri nisu pritisnuti . Na
pritisak tastera ta INTx linija se obara na nizak logiki nivo i tako dolazi do pojave silazne
ivice na toj INTx liniji . Prethodno se brisanjem INTEDGx bitova podesi da se na pojavu
silazne ivice generie interapt . U interapt servisnoj rutini se kasnije preko flegova utvruje na
kome je pinu dolo do prekida tj. koji je taster pritisnut i u skladu sa tim preduzima se
odgovarajua akcija tj. poveanje ili smanjivanje referentne brzine .
Preostali CCP modul je CCP2 i on se podeava da radi u Capture modu . Ovaj mod rada
CCP modula se najee koristi za precizno merenje vremenskih intervala . Optiki element
KTIR0621DS je fiksiran na telo motora tako da pero koje je fiziki spregnuto sa osovinom
motora , pri obrtanju , prekida optiki snop izmeu foto diode i foto tranzistora . Na ovaj
nain se na izlazu fototranzistora na svaki prolazak pera dobije po jedan negativan impuls .
Vreme od jedne do druge opadajue ivice predstavlja vremenski interval za koji se izvri
jedan obrtaj motora . Ovo vreme se kree u rasponu od 15 do 55 milisekundi . Treba izvriti
capture tj. hvatanje ovog vremenskog intervala pomou CCP2 modula . Da bi se merenje
izvelo to jednostavnije treba odabrati pogodnu frekvenciju eksternog oscilatora Fosc poto je
ona povezana sa duinom instrukcijskog ciklusa Tcy. Jednaina Tcy=4/Fosc opisuje tu
relaciju . Za frekvenciju eksternog oscilatora od 4MHZ dobija se instrukcijski ciklus Tcy od 1
mikrosekunde koji nam je odgovarajui . CCP2 modul se podeava da 16 bitnu vrednost
TMR3 pri nailazku opadajue ivice na RC1/CCP2 pinu kopira u CCPR2 registar. Naravno
TMR3 je podeen da se inkrementira na interni instrukcijski takt tj. na svaku 1
mikrosekundu. Na taj nain 16 bitni TMR3 moe da uhvati 65 536 mikrosekundi tj. priblino
65 milisekundi . Sada je jasno da je iz praktinih razloga izabran Fosc od 4 MHZ , da bi

4
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

TMR3 uhvatio jedan obrtaj motora (rekli smo da se kree od 15 do 50 mSec) pre nego to
doe do overflow-a TMR3 .
+5V

R7 R7
220 220

Q3
BC161
1

ISO1 capture
KTIR0621DS

R7
2

1K

Slika 3.Optiki element i dodatni hardver potreban za capture na CCP2

2.1.2 Opis glavne programske petlje


Preko CCP2 modula se mere 4 uzastopne periode obrtaja i upisuju na sukcesivne
lokacije u buffer4 i buffer3 .
Da je naila opadajua ivica i da se kopiranje vrednosti TMR3 u CCPR2 desilo
naznaava se postavljanjem CCP2IF flega . Tada se vii bajt uhvaene vrednosti iz
CCPR2H kopira indirektnim adresiranjem u buffer4 , a nii bajt uhvaene vrednosti iz
CCPR2L pomou indirektnog adresiranja prebacuje se u buffer3 . Zatim se brie CCPR2H
kao i CCPR2L , a i fleg CCP2IF . Tek posle ovoga se resetuje TMR3. Ovaj Capture ciklus se
ponavlja 4 puta .
Zatim se u jednoj petlji ove 4 capture vrednosti sabiraju u jedan 24 bitni broj koji
zauzima 3 fajl registra . U sledeoj petlji se korienjem instrukcije pomeranja kroz carry fleg
deli zbir capture vrednosti sa 4 . Tako se dobija prosena capture vrednost koja se kree kao
to je ranije napomenuto od 15 mSec do 55 mSec .
U jednoj sekundi ima 1 000 000 mikrosekundi , i ako jedan obrtaj traje npr. 55 000
mikrosekundi (ovo je ustvari prosena capture vrednost ) deljenjem broja 1 000 000 sa 55 000
dobie se broj obrtaja u sekundi . A to je ono to nam je potrebno . Deljenje cifre 1 000 000 sa
prosenom capture vrednou obavlja se pomou potprograma Div32 .
Trenutna brzina izraena u obrtajima u sekundi (ob/sec) smetena u jedan fajl registar
predstavlja ulaz u potprogram za regulaciju brzine . U ovom potprogramu trenutna brzina se
poredi sa referentnom (zadatom) brzinom i dobija se greka koja u zavisnosti od toga da li je
pozitivna ili negativna i koliki je iznos greke deluje na poveanje ili smanjenje PWM
pobude. Izmena PWM pobude se vri sve dok se trenutna vrednost brzine ne izjednai sa
referentnom to ponekad zahteva i desetak prolaza kroz ovaj potprogram . PWM pobuda se
menja promenom duty cycle vrednosti preko CCPR1L kontrolnog registra . Naravno do
odstupanja trenutne brzine od referentne dolazi usled promene optereenja motora .

5
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

Za prikaz , krajnjem korisniku , brzinu treba izraziti u obrtajima u minutu (ob/min) , to


znai da trenutnu brzinu izraenu u ob/sec treba samo izmnoiti sa 60 . Umesto korienja
potprograma za mnoenje iskorien je hardverski mnoa PIC18F4520 mikrokontrolera .
Upotrebom instrukcije mulwf (multiple WREG with file register) izvrava se hardversko
mnoenje dva osmobitna broja i dobija 16 bitni rezultat u PRODH i PRODL registrima .
Hardverski mnoa implementiran je kao deo aritmetiko logike jedinice i izvrava
mnoenje dva osmobitna broja u jednom instrukcijskom ciklusu (1 Tcy) . Bez upotrebe
hardverskog mnoaa ve korienjem standardnih instrukcija za ovu operaciju bi bilo
potrebno ak 70 Tcy .
Trenutna brzina u ob/min prikazana je 16 bitnim brojem koji je dalje ulaz u potprogram
za pretvaranje u bcd kod tj. binarno kodirane dekadne brojeve . Na izlazu potprograma se
dobijaju 4 bcd cifre zapisane u buffer0 .
Naredni potprogram lcd_sub slui za komunikaciju sa LCD displejom . On je neto
sloenije strukture . Prva petlja poziva potprogram koji prebacuje sadraj buffer0 u ASCII
kod i rezultate tj. ASCII karaktere upisuje u buffer2 . Naravno poziv sledeeg potprograma iz
potprograma ovde nije nikakav problem s obzirom da PIC18F4520 ima 31 nivo stek
memorije.Iako postoji stek od 31 nivo veina aplikacija se izvodi sa 4 nivoa potprograma
.Vie nivoa potprograma od 10 do 12 potrebno je jedino u sluaju multitasking-a . Inae
ASCII podaci su nam potrebni jer interni LCD kontroler jedino njih razume . Zatim se
postavlja RS linija i startna adresa za ispis na LCD , pa sledi poziv potprograma koji izvrava
LCD instrukciju u 4 bitnom data modu . Sam pojam LCD instrukcija je nezvanian izraz za
standardom odreenu kombinaciju od 10 bita na RS , R/W i DB0:DB7 linijama . Ovaj
potprogram sinhronizovano postavlja podatke na serijski ulaz pomerkog registra , upravlja
pomerakim takt signalom i postavlja Enable signal na LCD modulu . Ceo ovaj princip se
ponavlja u naredne dve petlje . U prvoj se alju ASCII karakteri iz buffer2 koji predstavljaju
trenutnu brzinu izraenu u ob/min . U drugoj petlji se iitava look-up tabela iz programske
memorije koja sadri string ob/min i to se alje na LCD displej .
Potprogram za komunikaciju sa UART-om isto zahteva ASCII podatke tako da e i on
koristiti buffer2 i istu look-up tabelu , jer iste podatke koji su na LCD displeju treba poslati na
serijski port personalnog raunara . Uglavnom ovde je ceo princip da se tek poto se TXIF
setuje sme upisati sadraj koji se alje u predajni registar podataka TXREG . Par
instrukcijskih ciklusa kasnije podatak se prebacuje u TSR predajni ift registar i otpoinje
predaja . Zatim se testira da li je TRMT bit setovan , ako jeste to znai da je predajni ift
registar - TSR prazan i da je predaja podatka zavrena . Ove operacije se ponavljaju vie
puta dok se ne poalju svi podaci .
Nakon ovoga dozvoljava se prekid niskog prioriteta tj. ako treba obraditi neki prekid sa
tastature koji je ostao neobraen za vreme zabrane prekida . Indikacija ovoga je ako je neki od
flegova INT1IF ili INT2IF ostao setovan . Prekidnom rutinom za tastaturu menja se
referentna brzina tj. brzina koju treba odravati konstantnom nezavisno od optereenja .
Dalje se glavna programska petlja neprekidno ponavlja ukljuujui sve prethodno
opisane operacije.

6
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

2.2 KORIENI SOFTVER I HARDVER PRI PROJEKTOVANJU

Za razvoj programskog koda u asemblerskom jeziku korieno je MPLAB IDE (eng.


Integrated Developement Environment) integrisano razvojno okruenje firme Microchip .
Editor teksta omoguava jednostavno pisanje programa i za razliku od eksternih tekst editora
(Wordpad,Notepad,MS Word 2000 ... ) ukazuje nam na greke u sintaksi . Pri pisanju
programa poeljno je dodavati komentare sa strane pored asemblerskih instrukcija .
Komentari olakavaju naknadno itanje i razumevanje koda . Pored komentara i mnemonika u
programu se mogu nai i asemblerske direktive koje su uputstvo kompajleru kako da vri
prevoenje i one podseaju na sintaksu viih programskih jezika . Pri izradi ovog projekta
korieno je prevoenje sa apsolutnim lociranjem . Kod ove metode se definiu varijable i
poetak programa i na kraju prevoenja se dobije program kao jedna celina . Postoji jo i
uslovno prevoenje koje koristi relokativne module . Koristi se kada se radi u viim
programskim jezicima i kada na projektu radi vie ljudi . Prevodilac (eng. Compiler) se isto
naziva asembler i on prevodi source fajl tj. izvorni tekst fajl u izvrni kod koji se dobija u
obliku fajla sa HEX ekstenzijom . Pored tekst editora , kompajlera i linkera MPLAB poseduje
i simulator . Simulator sadri matematiko-logiki model mikrokontrolera u sebi i omoguava
simulaciju i testiranje programa bez realnog hardverskog sistema . U simulatoru se program
moe izvravati korak po korak , mogu se bilo gde postaviti prekidne take (eng. breakpoint),
moe se pratiti sadraj fajl registara , meriti vreme izvrenja celog koda ili nekih delova .
Testiranje je znatno lake nego na realnom sistemu , ali je zato loa simulacija periferija kao
to su UART ili A/D konvertor .
Za upis HEX fajla u programsku memoriju PIC mikrokontrolera korien je amaterski
izraeni programator poznat kao AllPIC programator . Pomou aplikacije WinPIC
Programmer uitava se HEX fajl i preko serijskog porta personalnog raunara alje se AllPIC
programatoru koji vri upis HEX fajla u programsku memoriju .
Za crtanje elektrine eme korien je Orcad Capture koji pored bogate biblioteke
delova (eng. database part) omoguava i jednostavno kreiranje komponente koja nedostaje .

7
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

2.3. DETALJAN OPIS POJEDINACNIH BLOKOVA

2.3.1. Mikrokontroler PIC18F4520


Ova serija PIC18F mikrokontrolera firme Microchip je bazirana na RISC-Harvard
arhitekturi . RISC znai da se jedna asemblerska instrukcija pretvara u jednu kodnu
kombinaciju na mainskom jeziku koja se izvrava u jednom ili u fiksnom broju mainskih
ciklusa . Kod RISC kontrolera je krae vreme izvrenja instrukcije u odnosu na CISC i ako je
kontroler baziran na RISC arhitekturi to se obavezno navodi u tehnikim karakteristikama .
Kontroler je izraen u high speed CMOS tehnologiji koja troi znaajniju struju samo
pri tranzicijama sa log 0 na log 1 i sa log 1 na log 0 , to omoguava manju potronju u RUN
modu tj. normalnom modu rada, a ekstremno malu u IDLE i SLEEP modovima kad kontroler
radi snienim taktom od 32 KHZ .
Kod Harvard arhitekture kontrolera razdvojen je programski od data busa . irina data
busa je multipl od 8 . Kod ove serije PIC-a data bus je irine 8 bita , a programski bus je irine
16 bita. Naravno , programska i data memorija su odvojene . Programska memorija je
realizovana kao FLASH memorija , ona je non- volatile tj. nebriua , ne gubi sadraj sa
gubitkom napajanja . I FLASH memorija i DATA EEPROM imaju veliki broj ciklusa
brisanja i upisa . FLASH oko 100 000 , a DATA EEPROM oko 1 000 000 . Zbog paralelizma
programskog i data busa preklapa se execute faza tekue i fetch faza naredne instrukcije u
jednom mainskom ciklusu . Efekat preklapanja je da se svaka instrukcija izvrava u jednom
mainskom ciklusu , osim instrukcija grananja , preskoka koje se izvravaju u 2 ili 3 mainska
ciklusa.
DATA EEPROM se moe smatrati kao eksterna memorija , poto mu se pristupa kroz
par kontrolnih registara .
DATA RAM je kod PIC18F serije implementiran kao statiki RAM . Svakom registru u
DATA memoriji pridruena ja 12 bitna adresa za pristup . Ovi registri se zovu jo i fajl
registri . Adresa od 12 bita omoguava do 4096 bajta data memorije . Memorijski prostor je
podeljen na 16 benkova (eng. Banks) po 256 bajta . Data memorija se sastoji od registara
specijalne funkcije SFR ( Special Function Registers) i registara opte namene GPR (
General Purpose Registers) . SFR registri se koriste za kontrolu i status kontrolera i
periferijskih funkcija . GPR registri se koriste za smetaj podataka u korisnikim aplikacijama
. Jedan deo Data memorije se naziva Access RAM to je donja polovina Bank 0 tzv. Access
Bank i gornja polovina Bank 15 , koju ine SFR registri . Ovaj deo Data RAM-a je namenjen
za pristup najee korienim registrima u jednom instrukcijskom ciklusu . Pri pristupu
DATA RAM-u u samom operacionom kodu instrukcije je zabeleeno da li se pristupa preko
BSR-a ili se ignorie BSR , pa se pristupa Access Bank-u .
U PIC18 instrukcijskom setu movff je jedina instrukcija koja kompletno navodi 12
bitne adrese source i target fajl registara . Ova instrukcija kompletno ignorie BSR registar
kada se izvrava . Sve ostale instrukcije sadre samo 8 niih bitova adrese kao operand i
moraju da koriste bilo BSR ili Access bank da lociraju svoje odredine registre .
U BSR (eng. Bank Select Register) registru su implementirana samo donja 4 bita .
Sadraj ovog registra se moe izmeniti direktno movlb instrukcijom . Vrednost BSR registra
ukazuje na Bank u Data memoriji , a 8 bita u instrukciji pokazuje lokaciju u Bank-u .

8
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

Slika 4. Memorijska mapa fajl registara


A sad malo o optim karakteristikama . PIC18F4520 mikrokontroler ima dobre
performanse i veliku mogunost primene u raznim tehnikim aplikacijama . Imaju veliku
brzinu rada jer se operativna frekvencija Fosc moe podii do 40 MHZ . Programska
memorija je veliine 32 KB tj. moe da primi 16384 programske instrukcije . Data RAM je
implementiran u kapacitetu od 1,5 KB ili 6 benkova po 256 bajta . DATA EEPROM je
kapaciteta 256 bajta . Mikrokontroler poseduje i ulazno izlazne portove ( eng. I/O ports) koji
su multipleksirani sa periferijskim ureajima . Od periferija mikrokontrolera PIC18F4520
bie opisane samo one koje se koriste u ovoj aplikaciji . Kontrolni registri odreuju da li je
pin nekog porta digitalna I/O linija ili je pridruena periferiji tj. ima posebnu funkciju . PIC
18F4520 poseduje 5 portova A,B,C,D i E .

9
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

Za operaciju svakog porta postoje 3 kontrolna registra : TRISx , PORTx , LATx . TRIS
registar je registar smera podataka ( eng. data direction register ) , PORT registar ( ita
logike nivoe na pinovima PORT-a ) , LAT registar ( izlazni le ) . PORTA je bidirekcioni
port , irine 8 bita . Odgovarajui registar smera podataka je TRISA . Postavljanje na log 1
nekog TRISA bita , ini odgovarajui PORTA pin ulaznim tj. stavlja izlazni drajver u stanje
visoke impedanse . Brisanje nekog TRISA bita , ini odgovarajui PORTA pin izlaznim tj.
stavlja sadraj izlaznog lea na pin kontrolera . itanje PORTA registra ita stanje sa pinova ,
dok upis u PORTA upisuje u le . itanje LATA registra oitava poslednje upisano stanje na
PORTA . Sve ovo vai primenjeno i na ostale portove . Pinovi RA6 i RA7 su multipleksirani
sa glavnim oscilatorom i njihova funkcija odreuje se u konfiguracionim bitovima . RA4 je
multipleksiran sa Tajmerom 0 kao eksterni sinhronizacioni ulaz tj.T0CKI ili sa izlazima
komparatora C1OUT . Pinovi RA3:RA0 i RA5 su ulazi A/D konvertora i njihova funkcija se
odreuje u kontrolnom registru ADCON1 . Pinovi RA5:RA0 mogu biti koriteni kao ulazi i
izlazi komparatora podeavanjem CMCON registra . RA4 poseduje mit Triger ulazni bafer ,
dok svi ostali pinovi porta A imaju TTL ulazne bafere i CMOS izlazne drajvere . Pri Power
On Resetu pinovi RA3:RA0 i RA5 su konfigurisani kao analogni ulazi , a RA4 kao digitalni
ulaz . RA6 i RA7 su dodeljeni glavnom ocilatoru .
PORTB je bidirekcioni port , irine 8 bita . Odgovarajui registar smera podataka je
TRISB . Ono to je posebno za ovaj port je da svaki od pinova ima slab interni pul-ap ( eng.
weak internal pull-up ) .Brisanjem kontrolnog bita RBPU u INTCON2 registru mogu se
ukljuiti svi pul-ap otpornici . Meutim , ako se pin konfigurie kao izlazni pull-up se
automatski iskljuuje . Pinovi RB7:RB4 imaju mogunost izazivanja prekida ( eng. interrupt )
na promenu stanja na pinovima . Stanje pinova se poredi sa zadnjom oitanom vrednou koja
je u leu . U poreenju uestvuju samo pinovi koji su konfigurisani kao ulazni . Ovo je
pogodno za realizaciju matrinih tastatura . Pri nepoklapanju stanja pinova sa zadnjom
leovanom vrednou dolazi do prekida i setovanja RBIF flega . Da bi se otklonio uzrok za
dalje prekide u prekidnoj rutini treba oitati PORTB i time poklopiti stanje pinova i sadraj
lea , a zatim obrisati RBIF fleg . Pinovi RB2:RB0 mogu biti konfigurisani kao spoljne linije
za prekid koje reaguju na rastuu ili opadajuu ivicu . Pinovi RB4: RB0 su multipleksirani
takoe i sa A/D konvertorom . Podrazumevano stanje (eng. default) pri Power On Resetu je
da su RB4:RB0 konfigurisani kao analogni ulazi , a RB7:RB5 kao digitalni ulazi .

Slika 5. Prikaz pinova na kontroleru PIC18F4520

10
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

PORTC je isto bidirekcioni i irine 8 bita . Odgovarajui registar smera podataka je


TRISC . Ovaj port je multipleksiran sa nekoliko periferijskih funkcija . Pinovi RC7 i RC6 su
multipleksirani sa USART modulom za serijsku komunikaciju . RC0 je eksterni
sinhronizacioni ulaz za TMR1 ili TMR3 . Pin RC1 je dodeljen CCP2 modulu , a RC2 je
multipleksiran sa CCP1 modulom ili ECCP modulom i tad radi kao P1A pin . Pinovi
RC5:RC3 su multipleksirani sa MSSP modulom za serijsku komunikaciju . Svi pinovi porta C
imaju mit Triger ulazne bafere .
PORTD je isto bidirekcioni port , irine 8 bita .Odgovarajui registar smera podataka je
TRISD . Svi pinovi ovog porta su implementirani sa mit Triger baferima . 3 pina ovog porta
RD7:RD5 su multipleksirani sa izlazima ECCP1 modula redom P1D , P1C , P1B . Ceo port
D moe biti konfigurisan kao - Parallel Slave Port - (PSP).
PORTE je 4 bitni port . Pinovi RE2:RE0 su multipleksirani sa A/D konvertorom i imaju
funkciju analognih ulaza . Ovi pinovi isto mogu biti konfigurisani kao upravljake linije za
Parallel Slave Port. Pinovi RE2:RE0 su bidirekcioni . Pin RE3 je samo ulazni pin .
Konfigurie se pomou MCLRE bita u konfiguracionim bitovima . Moe da ima funkciju
Master Clear ulaza kao i ulaza za napon programiranja . TRISE je odgovarajui registar smera
podataka , ali pored bitova koji odreuju smer pinova tu su i kontrolni i status bitovi za
Parallel Slave Port .
Ovaj mikrokontroler poseduje 4 tajmera : TMR0,TMR1,TMR2 i TMR3 .Tajmer 0
(TMR0) moe da radi kao 8 bitni ili 16 bitni tajmer ili broja . TMR0 poseduje 8 bitni
preskaler . TMR0 moe da broji po internom ili eksternom sinhronizacionom izvoru . Ima
mogunost izazivanja prekida na tzv. overflow .Tajmer1 (TMR1) moe da radi kao 16 bitni
tajmer ili broja . Moe da broji po internom i po eksternom CLK signalu . Mogunost
izazivanja prekida na tzv. overflow . TMR1 ima mogunost reseta upotrebom CCP1 Event
Trigger-a . Tajmer2 (TMR2) moe da radi kao 8 bitni tajmer . Poseduje odgovarajui 8 bitni
period registar PR2 . Na ovaj nain TMR2 dolazi do overflow-a pri poklapanju sa vrednou
koja je upisana u PR2 , pri emu naravno setuje i fleg prekida TMR2IF . TMR2 poseduje
softverski programabilni preskaler i postskaler . TMR2 se esto koristi pri CCP modulu kada
radi u PWM modu .Tajmer3 (TMR3) moe da radi kao 16 bitni tajmer ili broja . Moe da
broji po internom ili eksternom CLK signalu . Moe da radi kao CLK izvor za CCP module
kada rade u capture ili compare modu . TMR3 ima prekid na overflow kao i nekoliko
preskaler modova .
Jo neke od preostalih dosad nepomenutih karakteristika PIC18F4520 mikrokontrolera
su : 20 izvora prekida , 2 CCP modula od toga jedan je ECCP , 10 bitni A/D konvertor sa 13
ulaznih kanala , 2 ureaja za serijsku komunikaciju : MSSP i UART , Parallel Slave Port za
paralelnu komunikaciju . Postoji nekoliko vrsta reseta kod ovog kontrolera : Power On Reset
(POR) , MCLR reset master clear , programabilni Brown out reset (BOR) , WDT reset (
watchdog timer) , RESET instruction , stack underflow reset i stack full reset . RCON registar
pomou flegova daje informaciju koja je vrsta reseta bila poslednja . Instrukcijski set PIC18F
serije ini 75 instrukcija ili 83 , ako je ukljuen proireni instrukcijski set . Proireni
instrukcijski set ( Extended instruction set ) znaajan je za korisnike koji rade u viim
programskim jezicima , posebno u C-u . Ukljuuje se setovanjem XINST bita u
konfiguracionim bitovima . Instrukcije iz proirenog instrukcijskog seta ne bi trebalo nikad
koristiti direktno u asembleru .

11
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

Slika 6. Tabela sa uporednim karakteristikama mikrokontrolera serije PIC18FXX20

2.3.2 LCD displej


U ovom projektu koristi se Samsungov LCD modul oznake DEM16217SYH-LY koji sadri
interni LCD kontroler kompatibilan sa Hitachi-jevim HD44780 kontrolerom . Ovaj LCD
modul sadri 2 reda po 16 karaktera , a ima i pozadinsko osvetljenje (eng. backlight) .

Slika 7. Interna ema LCD modula

12
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

Opis vrsta memorije LCD modula: DDRAM (eng. Display Data RAM ) se sastoji od 80
bajta tj. moe da memorie 80 karaktera . Ovde se alju karakteri koji se ele videti na LCD
ekranu . CGRAM (eng. Character Generator RAM ) je veliine 64 bajta i dozvoljava da
korisnik definie 8 karaktera u obliku 5 x 8 piksel matrice . CGROM ( eng. Character
Generator ROM ) je veliine 8320 bita i sadri predefinisane karaktere .
Opis spoljnih pinova LCD modula: Pin 1 VSS tj. Masa (eng. ground) , Pin 2 VDD
tj. napajanje (eng. supply) , Pin 3 V0 tj. napajanje za LCD , kada se vee otpornik prema
masi slui za podeavanje kontrasta LCD displeja . Pin 4 RS (eng. Register Select) slui da
zavisno od vrste instrukcije odredi da li se pristupa registru instrukcija ili registru podataka
unutar LCD modula . Pin 5 R/W slui za da odredi da li se upisuje ili ita iz LCD modula .
Poto se u LCD modul najee upisuje ovaj pin se u veini aplikacija moe spojiti na masu .
Pin 6 E (eng. Enable) visok logiki nivo na ovom pinu govori internom LCD kontroleru da
je stanje na ostalim kontrolnim pinovima i na data magistrali LCD-a vaee . Period Enable
signala mora biti minimum 1000 nanosekundi , a pozitivni impuls najmanje 450 nanosekundi
. Pinovi 7 do 14 dvosmerna magistrala podataka sa oznakama od DB0 do DB7 . Pinovi 15 i
16 su prikljuci za anodu i katodu pozadinskog osvetljenja .
LCD modul se moe podesiti da komunicira preko 8 bitne ili preko 4 bitne magistrale
podataka . To se postie slanjem odgovarajuih function set instrukcija pri inicijalizaciji . Ako
je data interfejs 8 bita , transfer podataka se vri odjednom koristei sve pinove data
magistrale od DB0 do DB7 . Ako je data interfejs 4 bitni , transfer podataka se vri iz dva dela
koristei samo pinove od DB4 do DB7 , pri emu se alje prvo gornji nibl , a zatim i donji
nibl .
Instrukcijski set internog LCD kontrolera sastoji se od 11 instrukcija . Svaka instrukcija
predstavlja odgovarajuu kombinaciju bitova na RS , R/W i LCD data bus pinovima . Ta
kombinacija postaje vaea za vreme visokog nivoa Enable signala . Internom LCD
kontroleru potrebno je vreme od 40 mikrosekundi da izvri internu operaciju specificiranu
datom instrukcjom . Za to vreme je Busy flag na visokom nivou i on nee biti oboren na nizak
nivo sve dok se ne zavri interna operacija LCD kontrolera . Za to vreme LCD kontroler ne
prihvata dalje instrukcije , osim instrukcije za proveru stanja busy flag-a . Danas se u veini
aplikacija sa LCD displejom ne primenjuje provera busy flag-a , ve se stavljaju fiksna
vremenska kanjenja vea od vremena potrebnog za zavretak interne operacije LCD
kontrolera . Jedan od razloga za izbegavanje provere busy flag-a je i to to logika LCD
kontrolera moe da zaboravi da ga po zavretku interne operacije obrie , to moe time da
izazove zaglavljivanje programa . Dovoljno kanjenje za veinu instrukcija je 100
mikrosekundi , osim za instrukcije clear display i return home za koje se preporuuje
kanjenje od 2 milisekunde .
LCD instrukcije su sledee : Clear display , Return home , Entry mode set , Display
ON/OFF control , Cursor or display shift , Function set , Set the CG RAM address , Set the
DD RAM address , Read busy flag & address , Write data to CG or DD RAM , Read data
from CG or DD RAM .
Svaki LCD modul automatski izvodi inicijalizaciju po ukljuenju koristei interno reset
kolo . Vreme uspostavljanja napona napajanja mora biti manje od 10 milisekundi da bi ova
inicijalizacija uspela . Ako ovo ne funkcionie , tri puta se alje function set instrukcija za 8
bitni mod da bi se kontroler primorao da ue u 8-bitni mod . Preporuuje se inicijalizacija
pomou instrukcija .

13
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

Slika 8. Tabela instrukcija za Hitachi kompatibilan LCD kontroler


Dakle , generalni princip funkcionisanja LCD modula bi bio da se prvo signali RS i
R/W postave na odgovarajue nivoe , zatim se postavlja LCD data bus i ta kombinacija bita se
proglaava vaeom podizanjem Enable signala na visok logiki nivo .
Kada je duina data interfejsa kao to je u ovom sluaju podeena na 4 bita , prvo se
postavi RS signal (R/W je vezan za masu jer se uvek upisuje) , a zatim se na DB7:DB4 linije
alje gornji nibl za LCD data bus . Na Enable pinu se kratkim pozitivnim impulsom stanje
proglaava vaeim . Instrukcija jo uvek nije kompletirana . Sada se na linije DB7:DB4
dovodi donji nibl za LCD data bus , pa se kratkim pozitivnim impulsom na Enable pinu stanje
proglasi vaeim . Ovim je kompletiran jedan instrukcijski ciklus i interni LCD kontroler
postavlja busy flag i narednih 40 mikrosekundi (ako je standardna instrukcija u pitanju)
izvrava internu operaciju i ne reaguje na instrukcije i kontrolne komande spolja ukljuujui i
Enable pin .U realizaciji ovog projekta radi utede pinova na mikrokontroleru iako to nije
kritian resurs u ovoj aplikaciji , upotrebljen je pomeraki registar (eng. shift) 74HC164 .
Ovim se dobija da se umesto 6 pinova mikrokontrolera koriste samo 3. Za komunikaciju sa
LCD modulom i pomerakim registrom odabrani su pinovi RE0,RE1 i RE2 . Pin RE0 je
serijski ulaz u pomeraki registar . U registar se pomera 5 bita : RS signal i 4 bita za LCD data
bus . Posle postavljanja svakog bita na RE0 dolazi do kratkog pozitivnog impulsa na RE1
pinu , to je pomeraki takt (eng. Shift Clock).

14
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

Na taj nain se stanje RE0 pina prenosi u najnii bit pomerakog registra , a svi ostali
bitovi pomerakog registra se pomeraju za po jedan napred . Posle 5 impulsa na RE1 pinu
dobijamo svih potrebnih 5 bita u registru na potrebnim pozicijama . Tada se pojavljuje
kratkotrajan pozitivan impuls na pinu RE2 , koji predstavlja Enable signal . U sledeoj fazi se
pomera donji nibl i ponovo aktivira Enable signal na RE2 i time kompletira izvrenje jedne
LCD instrukcije .Treba napomenuti da je LCD modul ostao konfigurisan za 4-bitni data
interfejs bez obzira na upotrebu 8-bitnog pomerakog registra , jer je 5-ti bit neophodan za
RS signal .
Dat je primer asemblerskog koda napisanog kao potprogram koji slui za izvrenje
nekompletnih instrukcija gde nije neophodno poslati donji nibl . Ovaj potprogram je
predstavljen umesto potprograma za izvrenje cele LCD instrukcije (koja alje oba
polubajta) radi utede prostora . Algoritam je isti , samo je cela sekvenca instrukcija jo
jednom ponovljena radi slanja donjeg polubajta . Na kraju je dodat potprogram za vremensko
kanjenje podeen na 100 mikrosekundi koji obezbeuje izlazak iz potprograma tek poto je
LCD kontroler zavrio svoju internu operaciju zadatu prethodnom instrukcijom .

LCD subroutines
;
;RE0 : LCD_data_serial_in :(LCD data bus DB7 to DB4,RS)
;RE1 : Shift_CLK
;RE2 : Enable
half_inst_4; sending upper nibble only
movwf shift_data
;
movlw 5
movwf count
;
btfss RS_Lcd_Flag
bra clear_rs_0
;
bsf STATUS,C
bra end_rs_0
clear_rs_0
bcf STATUS,C
end_rs_0
;stanje RS flega se kopira na C fleg
shift_loop_0
btfss STATUS,C
bra clear_serial_0
;
bsf Lcd_Serial_In
bra end_serial_0
clear_serial_0
bcf Lcd_Serial_In
end_serial_0
;postavljen je podatak na serijski ulaz
;
; aktiviranje Shift CLKa
nop
bsf Shift_CLK;data is shifted on this raising edge
nop
bcf Shift_CLK
nop

15
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

;
bcf STATUS,C;obrisi prethodni sadrzaj C flega
;
rlcf shift_data ;MSB => C flag
;
decfsz count
bra shift_loop_0
;
bsf Enable_LCD
nop ;1000 nSec (500nSec - min E Pulse width)
bcf Enable_LCD
nop ;1000nSec
;2000 nSec (min E Cycle Time 1500 nSec)
;
;~100 uSec
movlw 24
call uS_Wait
;wait for LCD internal operation to complete
;
return
0
7

U3 U4
13
GND

14 12 QH
DB7 11 QG 9
13 10 QF CLR
DB6 6 QE 8 Shif t Clock
12 5 QD CLK
DB5 4 QC 2
VCC

11 3 QB B 1 Serial in
LCD DISPLAY

DB4 QA A
10 74HC164
DB3
14

9
DB2
8 HI
DB1
7
DB0
6 Enable
E
5
R/W
4
RS R7
3
V0
2
VDD 1K
1
VSS
0
L-

L+

dem16217sy h-ly HI

Slika 9. Elektrina ema LCD podsklopa

16
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora
2.3.3. UART
UART (eng. Universal Asynchronous Receiver Transmitter ) je univerzalni asinhroni
primopredajnik , to je jedan od dva serijska ulazno izlazna modula implementirana u
PIC18F4520 mikrokontroleru . UART se moe konfigurisati kao puni dupleks (eng. full
duplex) asinhroni sistem koji moe da komunicira sa periferijama kao to su : CRT terminali i
personalni raunari (eng. Personal Computers) . Umesto toga moe se podesiti kao polu-
dupleks (eng. half duplex) sinhroni sistem koji komunicira sa periferijama kao to su A/D i
D/A integrisana kola i serijski EEPROM-i .
A sad neto uopteno o standardu RS232 koji UART koristi za serijsku komunikaciju.
Kod serijskog prenosa bitovi podatka i eventualno bit parnosti se prenose jedan za drugim u
nizu preko jedne linije podataka . Kod asinhronog prenosa , meu bitovima podataka sadrana
je informacija o sinhronizaciji . Te informacije o sinhronizaciji su start bit i najmanje jedan
stop bit .Format podatka je sledei : start bit je uvek logika 0 , bitova podataka ima od 5 do
8 , bit parnosti za detekciju greke ( parni ili neparni broj jedinica tj. parna ili neparna parnost
) , zatim 1, 1i po ili 2 stop bita koji su uvek logika 1. Kada se serijskom linijom ne alje
podatak na njoj je visok nivo tj. logika 1 . Prelazak sa logike 1 na logiku o tj. negativna
tranzicija silazna ivica to je znak za nailazak start bita . Iza njega ide 8 bitova podataka
poevi sa LSB-om tj. bitom najmanje teine , a zavravajui sa MSB-om tj. bitom najvee
teine . Iza bitova podataka je bit parnosti . Iza bar 1 Stop bit koji je uvek logika 1 . Mogue
su varijacije ovog tipinog formata podatka npr. jedan STOP bit ili bez bita parnosti itd .
Bodska brzina (eng. Baud Rate) je jednaka poslatom broju bitova u sekundi . Za pravilan
prenos podataka potrebno je da i prijemnik i predajnik rade na istoj bodskoj brzini tj. imaju
isti Baud Rate .
U ovom projektu se koristi UART modul kao asinhroni predajnik za komunikaciju sa
serijskim portom personalnog raunara .

Slika 10.Blok ema predajnog dela UART modula


Pinovi UART periferije su multipleksirani sa portom C . Pinove RC6/TX i RC7/RX
treba definisati za rad sa UART modulom . To se izvodi preko TRISC registra . Za
podeavanje operacije UART-a imamo 3 kontrolna registra . To su TXSTA predajni registar
, RCSTA prijemni registar , BAUDCON kontrolni registar bodske brzine . U ovom
projektu poto je neophodna komunikacija sa personalnim raunarom odabran je asinhroni
reim rada UART-a . Mod rada UART-a bira se kontrolnim bitom SYNC u TXSTA
kontrolnom registru . Obrisan SYNC bit podeava UART u asinhroni mod , a setovan u
sinhroni mod . Format podatka koji se ovde koristi za serijsku komunikaciju je standardni
NRZ (non return to zero) format podataka : 1 start bit , 8 ili 9 bitova podataka , 1 stop bit .
17
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

Prijemnik i predajnik su nezavisni , ali koriste isti format podatka i baud rate . Postoji
namenski 8 bitni / 16 bitni generator bodske brzine (eng. Baud Rate Generator) koj
generie standardne bodske brzine od sistemskog takta .
Na gornjoj slici dat je blok dijagram predajnog dela UART-a . Poto se u ovom projektu
koristi samo predajni deo UART-a samo on e i biti opisan . Brisanjem SYNC kontrolnog bita
odabrana je asinhrona predaja . Osnova predajnika je predajni pomeraki registar (eng.
Transmitt Shift Register ) skraeno TSR . On dobavlja podatke iz predajnog bafera TXREG .
TXREG se puni podacima u softveru . im se stop bit prethodnog podatka poalje pomeraki
predajni registar se puni novim podatkom iz TXREG predajnog registra . Kada TXREG
ostane prazan , setuje se TXIF fleg . TXIF fleg se ne moe obrisati u programu . TXIF se brie
u narednom instrukcijskom ciklusu posle instrukcije kojom se puni TXREG . TXIF fleg
odmah nakon instrukcije kojom se puni TXREG nije validan i ne treba ga ispitivati jer e dati
netane rezultate . TRMT fleg pokazuje stanje predajnog pomerakog registra (TSR) . TRMT
se setuje kada je TSR prazan . Ovaj fleg se takoe moe samo oitati . Korisnik treba da
proverava stanje ovog bita da bi odredio da li je TSR prazan . TSR registar nije mapiran u
data memoriji tako da nije dostupan korisniku .
Koraci za podeavanje asinhrone predaje:
1. Inicijalizuj SPBRGH:SPBRG registre za odgovarajuu bodsku brzinu . Setuj ili
obrii BRGH i BRG16 kontrolne bitove da bi postigao eljenu bodsku brzinu .
2. Ukljui asinhroni serijski port brisanjem SYNC bita i setovanjem SPEN bita .
3. Ako je prekid poeljan , setuj bit dozvole TXIE
4. Ako se hoe 9-to bitna predaja , setuj bit predaje TX9
5. Dozvoli predaju setovanjem bita TXEN koji e takoe setovati bit TXIF .
6. Ako je 9-to bitna predaja odabrana , 9-ti bit treba da bude uitan u bit TX9D
7. Uitaj podatak u TXREG registar tj. zaponi predaju .
8. Ako se koriste prekidi , osiguraj da su GIE i PEIE bitovi u INTCON registru
setovani .
Treba neto rei i o generatoru bodske brzine (eng. Baud Rate Generator ) . To je namenski 8
bitni ili 16 bitni generator koji podrava oba i asinhroni i sinhroni mod UART-a . BRG
podrazumevano radi u 8 bitnom modu . Setovanje bita BRG16 u BAUDCON registru
postavlja BRG generator u 16 bitni mod . Registarski par SPBRGH i SPBRG kontroliu
period tajmera .U asinhronom modu bitovi BRGH i BRG16 takoe kontroliu bodsku brzinu .
Ako se zna eljena bodska brzina i takt na kome radi mikrokontroler moe se izraunati
najblia celobrojna vrednost za registre SPBRGH i SPBRGH . A dalje iz ovoga greka u
bodskoj brzini moe biti izraunata . Za kombinaciju konfiguracionih bita : BRGH=1 i
BRG16=0 i ako se eli 8 bitni BRG koristi se sledea formula:
Desired Baud Rate = Fosc/(16 ([SPBRGH:SPBRG] + 1))
Kada se ova jednaina rei po SPBRG dobije se:
X = ((Fosc/Desired Baud Rate)/16)-1 , gde je X vrednost SPBRGH:SPBRG
X=((4.000.000/9.600)/16)-1 => X=25.041666
Znai za ovaj projekat eljena bodska brzina je 9600 bita u sekundi i da bi se ona dobila
treba upisati vrednost 25 u SPBRG registar . Pri tome dolazi do odreene greke.
18
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

Calculated Baud Rate = 4.000.000/(16*(25+1)) => Calculated Baud Rate = 9615 bps
Izraunata stvarna bodska brzina je 9615 bita po sekundi .
Error = (Calculated BR Desired BR)/Desired BR => Error = (9615-9600)/9600 = 0.16%
Greka je u ovom sluaju zanemarljiva , jer je ispod 1 % .

Treba jo napomenuti da poto UART komunicira sa personalnim raunarom dodato je


interfejsno kolo za prilagoenje po naponskim nivoima MAX232 . Na serijskom portu
personalnog raunara logiko 1 je predstavljeno sa -12 V , a logika 0 sa +12 V . Kolo
MAX232 adaptira te logike nivoe na TTL logiku pri prijemu , kao to i prevodi TTL napone
na + ili 12 V pri predaji .

VCC5

U1
16

13 12 VB1 0
VCC

RC6/TX 8 R1IN R1OUT 9 RC7/RX 5


R2IN R2OUT 9
11 14 4
10 T1IN T1OUT 7 8
VCC5 T2IN T2OUT 3
C1 1 7
3 C1+ 2
+

1uF 4 C1- 6
C2 5 C2+ 1
2 C2-
+

GND

C3 1uF 6 V+
V- SUB-D 9
+

MAX232
15

1uF
+ C4
C5
1uF
+

1uF

Slika 11. Elektrina ema kompletnog UART podsklopa

19
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

2.3.4. Tastatura
Tastaturu ovde ine svega 2 tastera koji slue za poveavanje i smanjivanje referentne
brzine obrtanja motora . Za tastaturu su odvojeni pinovi RB1/INT1 i RB2/INT2 koji mogu da
rade kao eksterne prekidne linije . Kada se pojavi odgovarajua ivica (rastua ili opadajua)
na INTx pinu dolazi do prekida i postavljanja flega INTxIF .
Port B ima jo jednu zanimljivu mogunost koja je ovde iskoriena . Resetovanjem bita
RBPU u INTCON2 registru na port-u B ukljuuju se interni slabi pul-ap otpornici (eng.
weak internal pull-up) . Ovi interni otpornici su ukljueni samo na pinovima port-a B koji su
definisani kao ulazni . Zato su bitovi na pozicijama 1 i 2 u TRISB setovani tj. RB1 i RB2
proglaeni za ulazne pinove . Preko internih pul-ap otpornika ovi pinovi su postavljeni na
logiku 1 . Na pinove su vezani tasteri sa otpornikom ka masi . Kada se pritisne taster pin se
obara na logiku 0 , ujedno to je i pojava silazne ivice (eng. falling edge) na koju je i
podeeno da kontroler reaguje i izazove prekid . Dalje se testira fleg INTxIF da se utvrdi da
nije prekid laan i ako nije da se vidi koja je prekidna linija izazvala prekid tj. da li je
neophodno smanjiti ili poveati referentnu brzinu , a samim tim i brzinu motora . U prekidnu
rutinu je ubaen i potprogram za kanjenje od 100 milisekundi koliko je dovoljno da se
izbegnu sukcesivni prekidi usled efekta odskakivanja tastera (eng. bouncing ) . Ovim
eksternim linijama za prekid INT1 i INT2 dodeljen je nizak nivo prioriteta .
RB2/INT2

RB1/INT1
2

SW1 SW2
SW KEY -YM061 SW KEY -Y M061
1

R9 R10
1K 1K

Slika 12. Elektrina ema tastature

20
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

2.3.5. CCP (CAPTURE/COMPARE/PWM) moduli


Mikrokontroler PIC18F4520 poseduje 2 CCP modula (eng. Capture Compare PWM
Module) . Svaki CCP modul sadri 16 bitni registar koji moe da radi kao 16-bitni Capture
registar , 16-bitni Compare registar ili PWM (eng. Pulse Width Modulation) Master/Slave
Duty Cycle registar . Modul CCP1 implementiran je kao ECCP enhanced tj. poboljani
modul sa dodatnim PWM mogunostima . Svakom CCP modulu je asociran kontrolni registar
CCPxCON i registar podataka CCPRx koji se sastoji od 2 osmobitna registra CCPRxH i
CCPRxL. Sva 3 registra se mogu i upisati i proitati . CCP moduli koriste Tajmer1 , Tajmer2
i Tajmer3 zavisno od odabranog moda . Tajmer1 i Tajmer3 su za module u Capture i
Compare modu , dok je Tajmer2 dostupan modulima u PWM modu . Dodeljivanje odreenog
tajmera modulu se vri preko timer to CCP enable bitova u T3CON registru . Oba modula
mogu biti aktivna u dato vreme i da dele isti tajmerski resurs , ako su konfigurisani da operiu
u istom modu istovremeno . Dodela pina za CCP2 se moe promeniti , a to odreuje
CCP2MX konfiguracioni bit . Podrazumevano dodeljen je pinu RC1 .
CAPTURE mode
Glavna funkcija ovog moda je za precizno merenje vremenskih intervala . Zapravo u
registre CCPRxH i CCPRxL upisuje se 16-to bitna vrednost Tajmer1 ili Tajmer3 registara
kada se odgovarajui dogaaj desi na CCPx pinu . Dogaaj moe biti definisan kao jedan od
sledeih :
- svaka usponska ivica (eng. raising edge)
- svaka silazna ivica ( eng. falling edge)
- svaka etvrta silazna ivica
- svaka esnaesta silazna ivica
Dogaaj je definisan sa mod selekt bitovima CCPxM3:CCPxM0 koji se nalaze u
CCPxCON registru . Kada se kopiranje tajmera u CCPRx desi , postavlja se CCPxIF fleg .

Slika 13. Blok ema CCPx modula u Capture modu

21
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

Taj fleg CCPxIF je fleg zahteva za prekid i on se posle mora obrisati u softveru . Ako se
sledee hvatanje (eng. capture) desi pre nego to je vrednost u CCPRx registru proitana ,
stara uhvaena vrednost biva prebrisana sa novom uhvaenom vrednou . U capture modu ,
odgovarajui CCPx pin treba da se konfigurie kao ulaz postavljanjem odgovarajueg bita u
registru smera TRISC . Tajmeri koji treba da se koriste sa Capture funkcijom treba da rade u
tajmer modu ili modu sinhronizovanog brojaa . U modu asinhronog brojaa , Capture
funkcija nee raditi . Tajmer koji e biti korien sa svakim CCP modulom je odabran u
T3CON registru . Kada je Capture mod promenjen , lani capture dogaaj e biti generisan .
Korisnik treba da dri CCPxIE bit dozvole prekida obrisan da izbegne lane prekide . Takoe
CCPxIF fleg bit treba biti obrisan posle svake takve promene u operativnom modu . CCP
preskaler ima etiri podeavanja u capture modu . Ona su navedena kao delovi operativnog
moda odabrani sa mod selekt bitovima (CCPxM3:CCPxM0). Prebacivanje sa jednog capture
preskalera na drugi moglo bi generisati prekid . Kadagod se CCP modul iskljui broja
preskalera je obrisan . To znai i da e svaki reset obrisati broja preskalera . Neophodno je
prvo iskljuiti CCP modul , pa zatim uitati CCPxCON i tako izbei lani prekid.
PWM mod (eng. Pulse Width Modulation)
Impulsno irinska modulacija je metoda upravljanja pri kojoj se formira signal
konstantnog perioda i promenljivog trajanja impulsa . Ima primenu u upravljanju
jednosmernim motorima , regulaciji temperature grejaa i regulaciji osvetljenja . Kod
regulacije brzine jednosmernog motora , mehanika inertnost motora igra ulogu integratora.
Signal na PWM izlazu , ima vremensku bazu tj. period i vreme za koje izlaz ostaje visok
tj. ciklus zauzetosti (eng. duty cycle). Frekvencija PWM-a je inverzija perioda .U PWM modu
, CCPx pin proizvodi do 10 bita rezolucije na PWM izlazu .
S obzirom da je CCP2 pin multipleksiran sa PORTB ili PORTC leom podataka ,
odgovarajui TRIS bit mora biti obrisan da bi se CCP2 pin uinio izlazom . Brisanje
CCP2CON registra e da isforsira RB3 ili RC1 izlazni le na predefinisani nizak nivo . Ovo
se razlikuje od PORTB ili PORTC I/O lea podataka .

Slika 15. Blok ema CCPx modula u PWM modu

22
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

Slika 16. PWM izlazni oblik signala


PWM period se zadaje upisom u PR2 registar . Moe se izraunati koristei sledeu
formulu :
PWM Period = [(PR2)+1] x 4 x Tosc x (TMR2 Prescale Value)
PWM frequency = 1/PWM period
Kada se Tajmer2 (TMR2) izjednai sa PR2 , sledea tri dogaaja deavaju se na
sledeem ciklusu inkrementiranja tajmera2 : Tajmer2 se brie , CCPx pin se setuje ( izuzetak
ako je duty cycle 0% tada se nee setovati ) , PWM duty cycle je leovana iz CCPRxL u
CCPRxH .
PWM duty cycle je specificiran upisom u CCPRxL registar i CCPxCON 5 i 4 bite . Do
10 bita rezolucije je dostupno . CCPRxL sadri osam bita najvee teine (eng. MSBs) i
CCPxCON bitovi 5 i 4 sadre dva bita najmanje teine (eng. LSBs). Sledea jednaina se
koristi da se izrauna PWM duty cycle u vremenu :
PWM Duty Cycle = (CCPRxL:CCPxCON<5:4>) x Tosc x (TMR2 Prescale Value)
CCPRxL i CCPxCON<5:4> mogu biti upisani u bilo koje vreme , ali duty cycle
vrednost nije leovana u CCPRxH dok se poklapanje izmeu PR2 i TMR2 ne desi tj. dok se
period ne kompletira . CCPRxH je registar koji se samo ita . CCPRxH registar i 2 bitni
interni le se koriste da duplo-baferiu PWM duty cycle . Ovo duplo baferisanje (eng. double
buffering ) je esencijalno za rad PWM-a bez glieva . Kada se CCPRxH i 2 bitni le poklope
sa Tajmerom2 (TMR2) vezanim sa 2 bita TMR2 preskalera , CCPx pin se brie .
Maksimalna PWM rezolucija (bitovima) za datu PWM frekvenciju je data jednainom :
PWM resolution(max) = log(Fosc/Fpwm)/log(2) bits
Ako je PWM duty cycle vrednost dua nego PWM period , CCP2 pin nee biti obrisan .

Postavka za PWM operaciju:


1. zadaj PWM period upisom u PR2 register
2. zadaj PWM duty cycle upisom CCPRxL registar i CCPxCON<5:4>
3. Uini CCPx pin izlazom brisanjem odgovarajueg TRIS bita .
4. zadaj TMR2 preskaler vrednost , pa ukljui TMR2 upisom u T2CON
5. konfigurii CCPx modul za PWM operaciju

23
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

2.3.6. ECCP modul


U ovoj aplikaciji iskoriene su poboljane mogunosti CCP1 modula . Misli se pre
svega na upotrebu do 4 PWM izlazna signala u cilju omoguavanja promene smera obrtanja
motora u softveru . Spoljno kolo koje treba neto ovakvo da omogui prikazano je na donjoj
slici .
+12V

Q6

BD138
Q7
BD138

D1 D3
PWM P1A R6
R5 1N4148 1N4148 220
220 PWM P1C

R1
R3 47K
47K
MG1
Q2
1 2
A
+

Q1 BC547
BC547

DC MOTOR

R4
22K R2
22K
D4 D2
1N4148 1N4148
Q4
R7 R8
0 BD137 0
PWM P1B Q5 PWM P1D
BD137

220 220

Slika 17. PWM izlazni stepen u tzv. Full Bridge konfiguraciji

U Full Bridge modu se 4 pina koriste kao PWM izlazi , ali samo dva su aktivna
istovremeno . U Forward modu pin P1A je neprekidno aktivan , a pin P1D je modulisan . U
Backward modu pin P1C je neprekidno aktivan , a pin P1B je modulisan . Bitovi na poziciji
2 u TRISC i na pozicijama 5,6 i 7 u TRISD moraju biti obrisani da bi P1A,P1B,P1C,P1D
pinovi bili izlazni . Za promenu smera u Full Bridge modu treba promeniti vrednost P1M1
bita u CCP1CON registru (pri emu P1M0 bit mora ostati setovan) . Kada softver aplikacije
promeni ovaj kontrolni bit smera P1M1 , ECCP modul e primeniti novi smer pri sledeem
PWM ciklusu . Neposredno pre zavretka tekueg PWM perioda , modulisani izlazi P1B i
P1D su stavljeni u svoja neaktivna stanja , dok nemodulisani izlazi P1A i P1C sada menjaju
polaritet . Ovo se deava u intervalu od 4*Tosc*TMR2 Prescale pre poetka sledeeg PWM
perioda .

24
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

Slika 18. Vremenski dijagram PWM signala kod Full Bridge konfiguracije pri promeni smera

U Full Bridge modu , CCP1 modul ne prua nikakav dead band delay , jer to nije
potrebno poto je samo jedan izlaz modulisan u jednom vremenskom intervalu . Ipak i u
ovom modu postoji situacija kad dead band delay moe biti zahtevan . To je kada se
promena smera vri pri vrednosti duty cycle koja je bliska 100% . , a vreme iskljuenja
izlaznih PWM tranzistora je vee nego vreme ukljuenja . Na primer vreme iskljuenja D
tranzistora je vee , nego vreme ukljuenja C tranzistora , pa se moe desiti da su za kratko
vreme oba tranzistora otvorena i mogunost da doe do pojave struje kratkog spoja izmeu
krajeva napajanja .
Kada ECCP modul radi u Full Bridge PWM modu , u hardveru moraju da se
implementiraju odgovarajui eksterni pul-ap (eng. pull-up) i pul-daun (eng.pull down)
otpornici na PWM izlaznim pinovima P1A,P1B,P1C i P1D . Po izlasku mikrokontrolera iz
RESET-a , svi I/O pinovi su u stanju visoke impedanse . Dodatne otpornike mree treba da
zadre tranzistore u neprovodnom stanju dok mikrokontroler ne pokrene PWM pinove sa
odgovarajuim nivoima signala i tako aktivira PWM izlaze .
Bitovi CCP1M1 i CCP1M0 u CCP1CON registru biraju da li su PWM izlazni signali
aktivni visoki ili aktivni niski . PWM polaritet izlaza mora biti odabran , pre nego to se PWM
pinovi konfiguriu kao izlazni . Promena konfiguracije polariteta tj. stanja CCP1M1 i
CCP1M0 bitova dok su PWM pinovi konfigurisani kao izlazi nije preporuljiva , poto moe
da oteti spoljna PWM izlazne tranzistore . ECCP modul se inicijalizuje u odgovarajuem
modu i treba da kompletira ceo PWM ciklus , to se naznaava setovanjem TMR2IF flega .
Tek posle ovoga dozvoljeno je PWM pinove konfigurisati kao izlazne .

Konfigurisanje za Full Bridge PWM


1. PWM pinovi P1A,P1B,P1C,P1D treba da se konfiguriu kao ulazi , setovanjem
odgovarajuih bitova u TRISC i TRISD registrima .
2. upisom u PR2 zadaje se PWM period
3. Auto-shutdown konfigurisanje ; ECCP1AS = 0x00 ime se iskljuuje auto-
shutdown

25
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

4. Zadavanje PWM moda upisom u CCP1CON ; bitovi P1M1 i P1M0


odreuju izlaznu konfiguraciju (single output , half-bridge , forward full bridge
, backward full bridge ) ; grupa od 4 bita CCP1M3:CCP1M0 odreuje
polaritete PWM izlaza
5. zadaje se PWM duty cycle upisom u CCPR1L registar i CCP1CON bitove na
poziciji 5 i 4 .
6. konfiguracija i startovanje TMR2 ; ; brie se TMR2IF u PIR1 registru ;
konfigurie se TMR2 preskaler preko T2CKPS1 i T2CKPS0 bitova u T2CON
; ukljuivanje TMR2 setovanjem TMR2ON bita u T2CON
7. ukljuivanje PWM izlaza posle jednog PWM perioda ; ; eka se overflow
TMR2 , to setuje TMR2IF fleg ; briu se odgovarajui bitovi u TRISC i
TRISD da bi pinovi P1A,P1B,P1C,P1D bili prekonfigurisani u izlazne . ;
brie se ECCPASE bit

2.3.7. Modul za napajanje ureaja


Za napajanje je izabran transformator za PCB tj. print montau koji ima dva nezavisna
sekundarna namotaja na kojima daje po 12V napona , maksimalno 417 mA struje i
maksimalno 5W snage . Ispravljanjem i stabilizacijom ovih naizmeninih 12V dobijaju se
dve nezavisne grane za napajanje od +12V i +5V . Ovo je izvedeno da PWM izlazni stepen
koji se napaja sa +12V ne bi imao nikakav uticaj na ostatak mikrokontrolerskog sklopa koji
radi sa +5V . Upotrebljeni su grec spojevi za ispravljanje naizmeninog napona sa sekundara .
Elektrolitski kondenzatori su dovoljno velikog kapaciteta za dobru filtraciju pozitivnih
poluperioda u jednosmerni napon . Na njima se dobije oko 18V jednosmernog napona . Pre
ulaza u stabilizatorsko kolo 7805 ubaen je otpornik od 47 oma , a snage discipacije 5 W . Na
taj nain na tom otporniku ostvaren je znaajan pad napona i kolo 7805 rasteretilo prevelike
toplotne discipacije kojoj bi bilo izloeno sa 18V napona na ulazu . Usled velike discipacije
kola 78xx mogu da aktiviraju internu termiku zatitu od pregrevanja i prekinu napajanje
ureaja dok se ne ohlade . Zato je pored smanjenja pada napona izmeu izlaznog i ulaznog
prikljuka bitno montirati kolo na hladnjak da bi se obezbedio neprekidan rad kola. Na izlazu
kola 7805 dobijamo stabilisanih +5V, a na izlazu kola 7812 stabilisanih +12 V .
V1

~ B250C1500 U5
R14 47
- + 1 8 +5V
IN OUT
~ + C8 C11 6
4700uF 100nF COM C10
T1 UA78L05C 100nF
2 6

7 V2
9 0

4 10
~ B250C1500 U7
2x12V AC, 2 x 410 mA ,10 W - + 1 3 +12V
IN OUT
GND

~ + C9
2200uF C13
C12 UA7812/TO 100nF
100nF
2

Slika 19. Elektrina ema podsklopa za napajanje

26
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

2.4. DIGITALNI P REGULATOR


Treba se malo podsetiti nekih teorijskih stvari . Signal greke je razlika izmeu trenutne
i zadate tj. referentne brzine . Regulator na osnovu signala greke generie upravljaki signal .
Ovde se upravljakim signalom moe smatrati vrednost CCPR1L registra koja odreuje PWM
duty cycle , iz tog razloga ona je i prikazana u prvom redu LCD displeja . Zakonom
upravljanja se naziva relacija izmeu signala greke i upravljakog signala . Postoje 3 linearna
zakona upravljanja koja se primenjuju u konvencionalnim industrijskim regulatorima to su :
proporcionalni zakon , diferencijalni zakon i integralni zakon .

digitalni objekat
A/D regulator D/A upravljanja
(motor)

merni
pretvara
(senzor)

Slika 20. Tipina blok ema digitalnog sistema upravljanja

Pored zasebnog P , I i D dejstva postoje kombinaciona dejstva PD (P+D) , PI (P+I) ,


PID (P+I+D) . P dejstvo smanjuje signal greke u prelaznom reimu . I dejstvo smanjuje
signal greke u ustaljenom stanju koje nastupa nakon iezavanja prelaznog reima , dok D
dejstvo kontrolie greku u prelaznom reimu . Ovde se nee preterano ulaziti u teoriju
automatskog upravljanja jer to nije tema ovog rada . Treba jo samo neto rei o samom
proporcionalnom regulatoru .
Gp(Z) = Mp(Z)/E(Z) = Kp
Prenosna funkcija digitalnog P regulatora jednaka je proporcionalnom pojaanju Kp.
U praksi se vrednost CCPR1L uveava ili umanjuje za 4 u jednom prolazu kroz
regulacionu softversku petlju , iako na optereenom motoru tek promena CCPR1L od 8
izaziva primetnu promenu brzine za nekih 60 ob/min .

27
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

3. ISPITIVANJE

Ispitivanjem treba utvrditi kako mikrokontrolerski sistem reaguje na promenu


optereenja motora . Radi lakeg praenja celog procesa odravanja referentne brzine u prvom
redu na LCD displeju se prikazuje vrednost CCPR1L registra koja odreuje duty cycle PWM
signala . Pri promeni optereenja primetie se kako softverski algoritam menja duty cycle tj.
PWM pobudu ne bi li odrao referentnu brzinu .
Potenciometrom od 250 oma menja se optereenje . Okretanje potenciometra u desno
poveava optereenje , to tera mikrokontrolerski sitem na poveavanje duty cycle vrednosti u
cilju odravanja referentne brzine . Okretanje potenciometra u levo smanjuje optereenje , to
dovodi do smanjivanja duty cycle vrednosti , da bi se brzina smanjila na referentnu .
Da bi se ispitala brzina reagovanja mikrokontrolerskog sistema ispitali smo dva
najnepovoljnija sluaja: naglo poveanje i naglo smanjenje optereenja .
Prvi sluaj .
Potenciometar je u krajnje levom poloaju tj. optereenje je najmanje mogue , pa je
dovoljna mala duty cycle vrednost da bi se odrala referentna brzina od 1500 ob/min , to je
prikazano LCD displeju sa CCPR1L ~ 80 . Naglim okretanjem potenciometra u krajnje desni
poloaj optereenje postaje maksimalno , pa zbog male PWM pobude (duty cycle) brzina
naglo pada ak na 1140 ob/min . Vidimo da je potrebno oko 4 sekunde da se ponovo dostigne
referentna brzina od 1500 ob/min , za ta je bilo potrebno poveati PWM pobudu tj. vrednost
CCPR1L na 148 .

1600
1500
1400
1300
1200
1100
BRZINA(OB/SEC)

1000
900
800
700
600
500
400
300
200
100
0
1

3
2

8
0,

0,

1,

1,

2,

2,

3,

3,

VREME(SEC)

Slika 21. Grafik stabilizacije brzine od 1500 ob/min pri poveanju optereenja na maksimum

28
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

160
150
140
130
120
110
100
CCPR1L

90
80
70
60
50
40
30
20
10
0
1

3
2

8
0,

0,

1,

1,

2,

2,

3,

3,
VREME(SEC)

Slika 22. Promena PWM pobude usled poveanja optereenja pri 1500 ob/min
Drugi sluaj .
Potenciometar je u krajnje desnom poloaju tj. optereenje je najvee mogue , pa je
neophodna visoka duty cycle vrednost da bi se odrala referentna brzina od 1500 ob/min ,
zato na LCD dipleju stoji za CCPR1L ~ 140 . Naglim okretanjem potenciometra u krajnje levi
poloaj optereenje se smanjuje na minimalno , ali zbog prethodno visoke PWM pobude tj.
duty cycle vrednosti brzina se naglo poveava na 2100 ob/min . Mikrokontroler sa kontrolnim
softverom deluje na principu digitalnog P regulatora i kao to se vidi na donjem dijagramu
potrebno mu je oko 4,5 sekundi da brzinu vrati na referentnu tj. na 1500 ob/min . To je
naravno postignuto postepenim smanjivanjem PWM pobude tj. vrednosti CCPR1L registra
sve do ~ 65 , to pri minimalnom optereenju daje referentnu brzinu od 1500 ob/min .

2250
2100
1950
1800
1650
1500
BRZINA(OB/SEC)

1350
1200
1050
900
750
600
450
300
150
0
1

3
2

2
0,

0,

1,

1,

2,

2,

3,

3,

4,

VREME(SEC)

Slika 23. Grafik stabilizacije brzine od 1500 ob/min pri smanjenju optereenja na minimum

29
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

160

140

120

100
CCPR1L

80

60

40

20

0
2

2
1

3
0,

0,

1,

1,

2,

2,

3,

3,

4,
VREME(SEC)

Slika 24. Promena PWM pobude usled smanjenja optereenja na minimum


Treba jo navesti da su za dobijanje ovih dijagrama iskoriene neke mogunosti
programa HyperTerminal . UART alje svakih 200 milisekundi informaciju o trenutnoj brzini
na serijski port personalnog raunara . Podaci neophodni za crtanje ovih dijagrama su dobijeni
opcijom Capture Text iz programa HyperTerminal koja niz sukcesivnih vrednosti trenutne
brzine smeta u jedan tekstualni fajl koji je pogodan za kasniju analizu .
Inae treba napomenuti da je programom reeno da se referentna brzina moe postaviti
na sledee vrednosti 1500 , 1560 , 1620 , 1680 , 1740 , 1800 , 1860 , 1920 i 1980 ob/min . Za
ove vrednosti brzine mogue je izvriti regulaciju brzine za svaki poloaj potenciometra
kojim se menja optereenje , to za vrednosti van ovog opsega nije sluaj . Indikatorska
crvena LED dioda tokom faze regulacije brzine ravnomerno i ubrzano treperi i za to vreme je
tastatura neaktivna tj . zadavanje nove referentne vrednosti brzine dok se vri stabilizacija
postojee nije dozvoljeno .
Jo jednom treba napomenuti da su ovi dijagrami prikazani za najnepovoljnije sluajeve
naglog poveanja optereenja sa minimalnog na maksimalno i obratno . Za umerene promene
optereenja vreme reagovanja i stabilizacije brzine je daleko krae .

30
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

4.ZAKLJUAK

Glavni deo osnovnih zadataka koji su postavljeni pre poetka ovog projekta je
realizovan .
Izvreno je prilino tano merenje brzine optikom metodom i CCP modulom u Capture
modu . Obezbeeno je ispisivanje podatka o brzini na izlazne ureaje LCD displej i UART .
Realizovan je Full Bridge PWM izlaz kao i tastatura koja omoguava promenu referentne
brzine .
Nije realizovana zamisao da se tzv. tahogeneratorskom metodom meri brzina . Problem
za primenu ovakvog reenja predstavlja sama konstrukcija jednosmernih motora koji su bili
raspoloivi , jer motori poseduju interne elektronske sklopove koji znatno umanjuju
indukovani napon .
Takoe se odustalo od izrade tampane ploe , ve je projekat realizovan na
eksperimentalnoj pertinaks raster ploi . Osim estetskih nedostataka , nije se pokazalo da ovo
unosi neku nestabilnost u rad ureaja .
Za prelazak , iz faze projektovanja i testiranja na bazi funkcionalnog modela na nivo
prototipa neophodno je izraditi tampanu plou .
U okviru projekta ostalo je dosta mogunosti za unapreenja i izmene . PWM izlazni
stepen je ve tako realizovan da hardverski podrava promenu smera motora , tako da ostaje
mogunost da se izmeni softver tj. da se neznatno modifikuje da bi pod odreenim
okolnostima vrio promenu smera motora . Isto tako , se veinom Full Bridge konfiguracije
PWM izlaznog stepena izvode sa FET ili MOSFET tranzistorima i tako se umanjuje
discipacija , pa bi se tipini BD tranzistori male snage mogli zameniti nekim FET ili
MOSFET tranzistorima . Ove izmene bi omoguile upravljanje motorima vee snage od ovih
koji su korieni u radu .
Takoe s obzirom da je ve implementiran UART mogle bi da se izvre izmene u softveru
tako da ureaj preko UART prijemnika sa personalnog raunara dobija komandu za promenu
referentne brzine .

31
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

5. INDEKS POJMOVA

A F
A/D konvertor 7,11,23 full bridge 1,2,25,26,27,33
algoritam 15,29,31,32
asembler 1,7,8,11,15 H
ASCII 4,6,31 hardver 1,2,4,5,6,7,23,26,33
aplikacija 2,6,8,13 HEX fajl 7

B I
bafer 10,11,18,24 instrukcija 4,6,7,8,11,13,14,15
bodska brzina 4,17,18,19 impuls 1,4,13,14,15,23
busy flag 13,14 interfejs 13,14,15,19
BSR 8
backlight 12 K
brown out reset 11 komentar 7

C L
capture 1,2,4,5,7,11,21,22,31,33 LCD displej 2,4,6,12,13,28,29,33
compare 11,21,22,23 LCD modul 4,6,12,13,14,15
le 10,22,23,24
D
DATA RAM 8,9,13 M
dijagram toka 2,3 memorija 8,9
DDRAM 13 MSSP modul 11
debounce 20
P
E prekid 1,2,4,6,7,10,11,18,20,22,23,25,27
enable 6,13,14,15,16,21 port 4,6,7,9,10,11,17,18,19,20,23,31
elektrina ema 16,19,20,27 potprogram 2,4,5,6,15,20
UART 4,11,17,18,19 preskaler 11,22,24,27
EEPROM 8,9,17 pomeraki registar 14,18

32
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

6. LITERATURA

1. PIC18F4520 DataSheet (pdf)


2. DEM16217SYH-LY LCD module datasheet (pdf)
3. 74HC164 datasheet (pdf)
4. KTIR0621DS datasheet (pdf)
5. MAX232 datasheet (pdf)
6. http://digilander.libero.it/ddanijel/allpic.htm
7. http://freenet-homepage.de/dl4yhf/winpicpr.htm
8. http://www.microchip.com
9. http://datasheetcatalog.com
10. http://datasheetarchive.com

33
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora

Dodatak 1. Elektrina ema kompletnog ureaja

34

You might also like