Professional Documents
Culture Documents
Ubovi Dalibor
Beograd , 2007
Kandidat : Ubovi Dalibor
Smer : Automatika
Osnovni zadaci :
1. Analiza problema
2. Projekat i realizacija
3. Ispitivanje
Mentor
Beograd ,
26.03.2007.
Mr. Borislav Hadibabi
IZVOD
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-
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora
2.PROJEKAT I REALIZACIJA
DSUB9
LCD DISPLAY UART RS232 voltage serial
& shift register adapter ___ MAX232 port
74HC164
PIC18F4520
MICROCONTROLLER keyboard
PWM OUTPUT
motor OPTICAL
dc SENSOR
ktir0621ds
-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
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
-3-
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora
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
5
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora
6
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora
7
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora
8
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora
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 .
10
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora
11
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora
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
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
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 .
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 % .
VCC5
U1
16
13 12 VB1 0
VCC
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
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
20
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora
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 .
22
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora
23
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora
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
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 .
25
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora
~ 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
26
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora
digitalni objekat
A/D regulator D/A upravljanja
(motor)
merni
pretvara
(senzor)
27
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora
3. ISPITIVANJE
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)
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
33
Dalibor Ubovi : Primena mikrokontrolera serije PIC18F u regulaciji broja obrtaja jednosmernog motora
34