Bao Cao VI Xu Ly

You might also like

You are on page 1of 24

Vi x l : iu khin ng c 1 chiu biendt.biendt@gmail.

com

LI NI U

ng c 1 chiu c nhiu ng dng trong iu khin v sn xut nht


l trong cng nghip. Trong n i hi l ng c phi c nhiu cp
tc c th tng gim d dng.
Vi s ra i v pht trin ca vi x l th vn iu khin ng c 1
chiu khng cn l vn kh khn na. ng c c th iu khin vi
nhiu cp tc khc nhau v iu khin dng, o chiu , nhanh chm
d dng c.
Vi x l 8501 l loi dng vi x l kh l thng dng c mt t rt
lu v c ng dng vo nhiu cc thit b iu khin hay t ng ha.
Nn vic iu khin ng c 1 chiu vi dng vi x l ny l 1 phng
php ti u v kinh t i vi bi ton iu khin ng c DC ngy nay.

Trn c s nhng kin thc hc t mn vi x l. Chng em thc


hin bi tp : iu khin ng c mt chiu (DC). Vi yu cu l iu
khin : Dng, Quay thun, Quay nghch, Tng tc, Gim tc.

Chng em cm n thy Nguyn Thanh Bnh hng dn chng em


lm bi tp ny

1
Vi x l : iu khin ng c 1 chiu biendt.biendt@gmail.com

CHNG I: VI IU KHIN 8501

Bt u xut hin vo nm 1980, tri qua gn 30 nm, hin c ti


hang trm bin th (derrivatives) c sn xut bi hn 20 hng khc nhau,
trong phi k n cc i gia trong lng bn dn (Semiconductor) nh
ATMEL, Texas Instrument, Philips, Analog Devices Ti Vit Nam, cc
bin th ca hng ATMEL l AT89C51, AT89C52, AT89S51, AT89S52
c thi gian xut hin trn th trng kh lu v c th ni l c s dng
rng ri nht trong cc loi vi iu khin 8 bit.

Cu trc bus

Bus a ch ca h vi iu khin 8051 gm 16 ng tn hiu (thng gi


l bus a ch 16 bit). Vi s lng bit a ch nh trn, khng gian nh ca
chip c m rng ti a l 216 = 65536 a ch, tng ng 64K. Bus d
liu ca h vi iu khin 8051 gm 8 ng tn hiu (thng gi l bus d

2
Vi x l : iu khin ng c 1 chiu biendt.biendt@gmail.com

liu 8 bit), l l do ti sao ni 8051 l h vi iu khin 8 bit. Vi rng


ca bus d liu nh vy, cc chip h 8051 c th x l cc ton hng 8 bit
trong mt chu k lnh.

CPU (Central Processing Unit)

CPU l n v x l trung tm, l b no ca ton b h thng vi in


t c tch hp trn chip vi iu khin. CPU c cu to chnh gm mt n
v x l s hc v lgic ALU (Arithmethic Logic Unit) - ni thc hin tt c
cc php ton s hc v php lgic cho qu trnh x l.

B nh chng trnh (Program Memory)

Khng gian b nh chng trnh ca AT89 l 64K byte, tuy nhin hu


ht cc vi iu khin AT89 trn th trng ch tch hp sn trn chip mt
lng b nh chng trnh nht nh v chim di a ch t 0000h tr i
trong khng gian b nh chng trnh. AT89C51/AT89S51 c 4K byte b
nh chng trnh loi Flash tch hp sn bn trong chip. y l b nh cho
php ghi/xa nhiu ln bng in, chnh v th cho php ngi s dng thay
i chng trnh nhiu ln. S ln ghi/xa c thng ln ti hng vn ln.
B nh chng trnh dng cha m ca chng trnh np vo chip. Mi
lnh c m ha bi 1 hay vi byte, dung lng ca b nh chng trnh
phn nh s lng lnh m b nh c th cha c. a ch u tin ca b
nh chng trnh (0x0000) chnh l a ch Reset ca 8051. Ngay sau khi
reset (do tt bt ngun, do mc in p ti chn RESET b ko ln 5V...),
CPU s nhy n thchin lnh t ti a ch ny trc tin, lun lun l
nh vy. Phn cn trng trong khng gian chng trnh khng dng lm
g c. Nu mun m rng b nh chng trnh, ta phi dng b nh chng
trnh bn ngoi c dung lng nh mun. Tuy nhin khi dng b nh
chng trnh ngoi, b nh chng trnh onchip khng dng c na, b
nh chng trnh ngoi s chim di a ch ngay t a ch 0x0000.

B nh d liu (Data Memory)

Vi iu khin h 8051 c khng gian b nh d liu l 64K a ch,


cng l dung lng b nh d liu ln nht m mi chip thuc h ny c th
c c (nu phi ghp mt cch chnh tc, s dng cc ng tn hiu ca
bus a ch v d liu). B nh d liu ca cc chip h 8051 c th thuc
mt hay hai loi: SRAM hoc EEPROM. B nh d liu SRAM c tch

3
Vi x l : iu khin ng c 1 chiu biendt.biendt@gmail.com

hp bn trong mi chip thuc h vi iu khin ny, c dung lng khc nhau


ty loi chip, nhng thng ch khong vi trm byte. y chnh l ni cha
cc bin trung gian trong qu trnh hot ng ca chip. khi mt in, do bn
cht ca SRAM m gi tr ca cc bin ny cng b mt theo. Khi c in tr
li, ni dung ca cc nh cha cc bin ny cng l bt k, khng th xc
nh trc. Bn cnh b nh loi SRAM, mt s chip thuc h 8051 cn c
thm b nh d liu loi EEPROM vi dung lng ti a vi Kbyte, tytng
loi chip c th. Di y l mt vi v d v b nh chng trnh ca mt
s loi chip thng dng thuc h 8051

STT Tn chip B nh SRAM B nh EEPROM


1 AT89C51 128 byte 0
2 AT89C52 256 byte 0
3 AT89C2051 128 byte 0
4 AT89S51 128 byte 0
5 AT89S52 256 byte 0
6 AT89S8252 256 byte 2048 byte

i vi cc chip c b nh SRAM 128 byte th a ch ca cc byte


SRAM ny c nh s t 00h n 7Fh. i vi cc chip c b nh
SRAM 256 byte th a ch ca cc byte SRAM c nh s t 00h n
FFh. c hai loi chip, SRAM c a ch t 00h n 7Fh c gi l vng
RAM thp, phn c a ch t 80h n FFh (nu c) c gi l vng RAM
cao.
Bn cnh cc b nh, bn trong mi chip 8051 cn c mt tp hp cc thanh
ghi chc nng c bit (SFR Special Function Register). Cc thanh ghi ny
lien quan n hot ng ca cc ngoi vi onchip (cc cng vo ra, timer,
ngt ...). a ch ca chng trng vi di a ch ca vng SRAM cao, tc l
cng c a ch t 80h n FFh.

Cc thanh nghi c bit SFR

4
Vi x l : iu khin ng c 1 chiu biendt.biendt@gmail.com

Cng vo ra song song (I/O Port)

8051 c 4 cng vo ra song song, c tn ln lt l P0, P1, P2 v P3. Tt


ccc cng ny u l cng vo ra hai chiu 8bit. Cc bit ca mi cng l
mt chn trn chip, nh vy mi cng s c 8 chn trn chip. Hng d liu

5
Vi x l : iu khin ng c 1 chiu biendt.biendt@gmail.com

dng cng lm cng ra hay cng vo) l c lp gia cc cng v gia


cc chn (cc bit) trong cng mt cng. V d, ta c th nh ngha cng P0
l cng ra, P1 l cng vo hoc ngc li mt cch ty , vi c 2 cng P2
v P3 cn li cng vy. Trong cng mt cng P0, ta cng c th nh ngha
chn P0.0 l cng vo, P0.1 li l cng ra ty .
Cng P0 khng c in tr treo cao (pullup resistor) bn trong, mch li
tomc cao ch c khi s dng cng ny vi tnh nng l bus dn knh a
ch/d liu. Nh vy vi chc nng ra thng thng, P0 l cng ra open
drain, vi chc nng vo, P0 l cng vo cao tr (high impedance). Nu
mun s dng cng P0 lm cng vo/ra thng thng, ta phi thm in tr
pullup bn ngoi. Gi tr in tr pullup bn ngoi thng t 4K7 n 10K.
Cc cng P1, P2 v P3 u c in tr pullup bn trong, do c th
dng vi chc nng cng vo/ra thng thng m khng cn c thm in
tr pullup bn ngoi. Thc cht, in tr pullup bn trong l cc FET, khng
phi in tr tuyn tnh thng thng, tuy vy nhng kh nng phun dng ra
ca mch li khi u ra mc cao (hoc khi l u vo) rt nh, ch khong
100 micro Ampe.

Cng vo ra ni tip (Serial Port)

Cng ni tip trong 8051 ch yu c dng trong cc ng dng c yu


cu truyn thng vi my tnh, hoc vi mt vi iu khin khc. Lin quan
n cng ni tip ch yu c 2 thanh ghi: SCON v SBUF. Ngoi ra, mt
thanh ghi khc l thanh ghi PCON (khng nh a ch bit) c bit 7 tn l
SMOD quy nh tc truyn ca cng ni tip c gp i ln (SMOD = 1)
hay khng (SMOD = 0).

Ngt (Interrupt)

8051 ch c mt s lng kh t cc ngun ngt (interrupt source) hoc


c th gi l cc nguyn nhn ngt. Mi ngt c mt vector ngt ring, l
mt a ch c nh nm trong b nh chng trnh, khi ngt xy ra, CPU s
t ng nhy n thc hin lnh nm ti a ch ny.
Vi 8052, ngoi cc ngt trn cn c thm ngt ca timer2 (do vi iu
khinny c thm timer2 trong s cc ngoi vi onchip).
Mi ngt c dnh cho mt vector ngt ko di 8byte. V mt l thuyt,
nu chng trnh ngn, m to ra cha trong 8 byte, ngi lp trnh
hon ton c th t phn chng trnh x l ngt ngay ti vector ngt. Tuy
nhin trong hu ht cc trng hp, chng trnh x l ngt c dung lng

6
Vi x l : iu khin ng c 1 chiu biendt.biendt@gmail.com

m to ra ln hn 8byte nn ti vector ngt, ta ch t lnh nhy ti chng


trnh x l ngt nm vng nh khc. Nu khng lm vy, m chng trnh
x l ngt ny s ln sang, vo vector ngt k cn.

Bng tm tt cc ngt trong 8051 nh sau:

cho php mt ngt, bit tng ng vi ngt v bit EA phi c t


bng 1. Thanh ghi IE l thanh ghi nh a ch bit, do c th dng cc
lnh tc ng bit tc ng ring r ln tng bit m khng lm nh hng
n gi tr cc bit khc. C ngt hot ng c lp vi vic cho php ngt,
iu c ngha l c ngt s t ng t ln bng 1 khi c s kin gy ngt

7
Vi x l : iu khin ng c 1 chiu biendt.biendt@gmail.com

xy ra, bt k s kin c c cho php ngt hay khng. Do vy, trc


khi cho php mt ngt, ta nn xa c ca ngt m bo sau khi cho
php, cc s kin gy ngt trong qu kh khng th gy ngt na.

8051 c 2 ngt ngoi l INT0 v INT1. Ngt ngoi c hiu l ngt


c gy ra bi s kin mc lgic 0 (mc in p thp, gn 0V) hoc sn
xung (s chuyn mc in p t mc cao v mc thp) xy ra chn ngt
tng ng (P3.2 vi ngt ngoi 0 v P3.3 vi ngt ngoi 1). Vic la chn
kiu ngt c thc hin bng cc bit IT (Interrupt Type) nm trong thanh
ghi TCON. y l thanh ghi iu khin timer nhng 4 bit LSB (bit0..3) c
dng cho cc ngt ngoi

Khi bit ITx = 1 th ngt ngoi tng ng c chn kiu l ngt theo
sn xung, ngc li nu bit ITx = 0 th ngt ngoi tng ng c s c
kiu ngt l ngt theo mc thp. Cc bit IE l cc bit c ngt ngoi, ch c
tc dng trong trng hp kiu ngt c chn l ngt theo sn xung. Khi
kiu ngt theo sn xung c chn th ngt s xy ra duy nht mt ln
khi c sn xung ca tn hiu, sau khi tn hiu mc thp, hoc c sn
ln, hoc mc cao th cng khng c ngt xy ra na cho n khi c sn
xung tip theo. C ngt IE s dng ln khi c sn xung v t ng b xa
khi CPU bt u x l ngt. Khi kiu ngt theo mc thp c chn th ngt
s xy ra bt c khi no tn hiu ti chn ngt mc thp. Nu sau khi x l
xong ngt m tn hiu vn mc thp th li ngt tip, c nh vy cho n
khi x l xong ngt ln th n , tn hiu ln mc cao ri th thi khng
ngt na. C ngt IE trong trng hp ny khng c ngha g c.Thng
thng kiu ngt hay c chn l ngt theo sn xung.

B nh thi/B m (Timer/Counter)

8051 c 2 timer tn l timer0 v timer1. Cc timer ny u l timer 16bit,


gitr m max do bng 216 = 65536 (m t 0 n 65535).
Hai timer c nguyn l hot ng hon ton ging nhau v c lp. Sau khi
cho php chy, mi khi c thm mt xung ti u vo m, gi tr ca timer
s t ng c tng ln 1 n v, c nh vy cho n khi gi tr tng ln
vt qu gi tr max m thanh ghi m c th biu din th gi tr m li
c a tr v gi tr min (thng thng min = 0). S kin ny c hiu
l s kin trn timer (overflow) v c th gy ra ngt nu ngt trn timer

8
Vi x l : iu khin ng c 1 chiu biendt.biendt@gmail.com

c cho php (bit ETx trong thanh ghi IE = 1). Vic cho timer chy/dng
c thc hin bi cc bit TR trong thanh ghi TCON (nh a ch n tng
bit).

Khi bit TRx = 1, timerx s m, ngc li khi TRx = 0, timerx s khng


m mc d vn c xung a vo. Khi dng khng m, gi tr ca timer
c gi nguyn. Cc bit TFx l cc c bo trn timer, khi s kin trn timer
xy ra, c s c t ng t ln bng 1 v nu ngt trn timer c cho
php, ngt s xy ra. Khi CPU x l ngt trn timerx, c ngt TFx tng ng
s t ng c xa v 0. Gi tr m 16bit ca timerx c lu trong hai
thanh ghi THx (byte cao) v TLx (byte thp). Hai thanh ghi ny c th
ghi/c c bt k lc no. Tuy nhin nh sn xut khuyn co rng nn
dng timer (cho bit TRx = 0) trc khi ghi/c cc thanh ghi cha gi tr
m. Cc timer c th hot ng theo nhiu ch , c quy nh bi cc
bittrong thanh ghi TMOD (khng nh a ch n tng bit).
xc nh thi gian, ngi ta chn ngun xung nhp (clock) a vo
m trong timer l xung nhp bn trong (dnh cho CPU). Ngun xung nhp
ny thng rt u n (c tn s n nh), do t s m ca timer ngi
ta c th nhn vi chu k xung nhp tnh ra thi gian tri qua. Timer lc
ny c gi chnh xc vi ci tn timer, tc b nh thi.
m cc s kin bn ngoi, ngi ta chn ngun xung nhp a vo m
trong timer l tn hiu t bn ngoi ( c chun ha v dng xung vung
0V/5V). Cc tn hiu ny s c ni vi cc bit cng c dn knh thm cc
tnh nng T0/T1/T2. Khi c s kin bn ngoi gy ra thay i mc xung
u vo m, timer s t ng tng ln 1 n v ging nh trng hp m
xung nhp bn trong. Lc ny, timer c gi chnh xc vi ci tn khc:
counter, tc b m (s kin). Nhn vo bng m t thanh ghi TMOD bn
trn, ta c th nhn thy c 2 b 4 bit ging nhau (gm GATEx, C/Tx, Mx0
v Mx1) dnh cho 2 timer0 v 1. ngha cc bit l nh nhau i vi mi
timer.
Bit GATEx quy nh vic cho php timer m (run timer). Nu GATEx
= 0,timerx s m khi bit TRx bng 1, dng khi bit TRx bng 0. Nu GATEx
= 1, timerx s ch m khi bit TRx = 1 v tn hiu ti chn INTx = 1, dng
khi mt trong hai iu kin trn khng cn tha mn. Thng thng ngi ta
dng timer vi GATE = 0, ch dng timer vi GATE = 1 trong trng hp
mun o rng xung v lc timer s ch m thi gian khi xung a vo
chn INTx mc cao. Bit C/Tx quy nh ngun clock a vo m trong

9
Vi x l : iu khin ng c 1 chiu biendt.biendt@gmail.com

timer. Nu C/Tx = 0, timer s c cu hnh l b nh thi, nu C/Tx = 1,


timer s c cu hnh l b m s kin. Hai bit cn li (Mx0 v Mx1) to
ra 4 t hp cc gi tr (00,01,10 v 11) ng vi 4 ch hot ng khc
nhau ca timerx. Trong 4 ch thng ch dng ch timer/counter
16bit (Mx1 = 0, Mx0 = 1) v ch Auto Reload 8bit timer/counter (Mx1 =
1, Mx0 = 0).Trong ch timer/counter 16bit, gi tr m (cha trong hai
thanh ghi THx v TLx) t ng c tng ln 1 n v mi ln nhn c
thm mt xung nhp. Khi gi tr m tng vt qu gi tr max = 65535 th
s trn v 0, c ngt TFx c t ng t = 1. Ch ny c dng trong
cc ng dng m thi gian v m s kin. Trong ch Auto Reload 8bit,
gi tr m s ch c cha trong thanh ghi TLx, cn gi tr ca thanh ghi
THx bng mt s n (t 0 n 255) do ngi lp trnh a vo. Khi c thm 1
xung nhp, gi tr m trong TLx ng nhin cng tng ln 1 n v nh
bnh thng. Tuy nhin trong trng hp ny, gi tr m ln nht l 255
ch khng phi 65535 nh trng hp trn v timer/counter ch cn 8bit. Do
vy s kin trn lc ny xy ra nhanh hn, ch cn vt qu 255 l gi tr
m s trn. C ngt TFx vn c t ng t = 1 nh trong trng hp
trn 16bit. im khc bit l thay v trn v 0, gi tr THx s c t ng
np li (Auto Reload) vo thanh ghi TLx, do timer/counter sau khi trn s
c gi tr bng n (gi tr cha trong THx) v s m t gi tr n tr i. Ch
ny c dng trong vic to Baud rate cho truyn thng qua cng ni tip.

s dng timer ca 8051, hy thc hin cc bc sau:

- Quy nh ch hot ng cho timer bng cch tnh ton v ghi gi tr cho
cc bit trong thanh ghi TMOD.
- Ghi gi tr m khi u mong mun vo 2 thanh ghi m THx v TLx.
i
khi ta khng mun timer/counter bt u m t 0 m t mt gi tr no
thi im trn gn hn, hoc chn hn trong tnh ton sau ny. V d nu
cho timer m t 15535 th sau 50000 xung nhp (tc 50000 micro giy vi
thch anh 12MHz) timer s trn, v thi gian mt giy c th d dng tnh ra
kh chnh xc = 20 ln trn ca timer (ng nhin mi ln trn li phi np
li gi tr 15535).
- t mc u tin ngt v cho php ngt trn timer (nu mun).
- Dng bit TRx trong thanh ghi TCON cho timer chy hay dng theo
mun.

Chng II :

10
Vi x l : iu khin ng c 1 chiu biendt.biendt@gmail.com

IU CH PWM IU KHIN NG C 1 CHIU

iu khin c tc ng c th ta ch cn thay i rng xung


trong vi iu khin. rng xung cng ln th ng c quay cng nhanh.
Nh chng ta bit th vic iu khin nhp nhy 1 con LED cng l
chng ta iu ch c PWM ri nhng xung c rng thay i v
tn s ln v c th iu khin n bng hm tr (delay). Tuy nhin khi dng
hm delay th trong thi gian xung ln 5V v xung 0V th vi iu khin
khng lm g c hn na vic to xung hm delay th nu ta mun pht
xung 2 knh c rng thay i l rt kh khn cho nn chng ta s dng
b nh thi timer y l phng php ti u nht

I :Ngt ca b nh thi Timer

Ngt l s p ng nhng s kin bn trong v bn ngoi nhm thng


bo cho b vi iu khin bit thit b ang cn phc v.

Mt chng trnh khng c ngt th chy lin tc, cn chng trnh m


c ngt th c khi no c ngt c m bo th con tr s nhy sang hm
ngt thc hin xong th hm ngt quay tr v ng ch c v thc hin tip
chng trnh chnh
V d : bn ang hc bi m c ting chung in thoi ku , bn dng vic
hc li nghe in thoi v nghe xong l bn li tr v hc bi tip. Nh

11
Vi x l : iu khin ng c 1 chiu biendt.biendt@gmail.com

vy bn ang hc bi l chng trnh chnh cn bn nghe in thoi l iu


kin ngt. Bn nghe in thoi l thc hin chng trnh ngt sau quay v
hc bi l chng trnh chnh
Nhn vo tin trnh ca hm main v c ngt : Chng trnh chnh ang
chy, ngt xy ra, thc hin hm ngt ri quay li chng trnh chnh . Thi
gian thc hin hm ngt rt nh cho nn thi gian thc hin hm ngt khng
nh hng g n chc nng ca hm chnh nh vy l trong hm ngt thc
hin 1 cng vic v trong hm chnh chng ta thc hin 1 cng vic.

V d : vi ngt ca b nh thi Timer hay b m couter l khi trn b


m th phn cng ca vi iu khin s bo l c ngt xy ra v nhy n
chng trnh phc v ngt

Vi ngt ngoi nu ta khai bo chn s dng ngt ngoi (P3_2) m chn


s dng cho ngt m khng s dng cho IO th c 1 xung xut hin chn
ny th vi iu khin nhn ra rng l c iu kin tc ng vo phn cng v
vi iu khin thc hin chng trnh ngt
Vi ngt cng ni tip th c khi thu song 1 k t hay truyn song 1 k t
cng ni tip , nu ta c s dng ngt truyn d liu ni tip th chng
trnh s nhy n chng trnh phc v ngt.

* Hm ngt:
Void tenhamngat(void) interrupt ngun ngt
{
// Chng trnh ngt y
}
+ Ch v hm ngt.
- Hm ngt khng c tr li hay truyn bin vo hm
- Tn hm bt k
- Interrupt l hm ngt phi phn bit vi hm khc
- Ngun ngt t 0-5 theo bng vecto ngt
- Bng thanh ghi Ram chn t 0-3
-
Cc bng ca ngun ngt.

12
Vi x l : iu khin ng c 1 chiu biendt.biendt@gmail.com

Ring ngt Reset khng tnh bt u m t 0 v ngt ngoi t 0.


void timer1_isr(void) interrupt 3 using 0
{
// Lenh can thuc hien.
}

II: To PWM t ngt Timer 0

1) Cch to hm ngt.
to c hm ngt ta phi lm nhng cng vic sau y:
a) Khi to hm ngt
Dng ngt no th cho php ngt hot ng bng cch gn gi tr cho
thanh ghi cho php ngt IE

b) Cu hnh ngt
Trong 1 ngt c nhiu ch . Vi ngt Timer0 cu hnh cho n chy ch
no, ch timer hay counter, ch 8bit ,16bitbng cch gn cho gi
tr tng ng TMOD.

13
Vi x l : iu khin ng c 1 chiu biendt.biendt@gmail.com

c) Bt u chng trnh c ngt.


+ Trc khi chy chng trnh ngt ta phi cho php ngt ton cc c
xy ra bng cch gn EA =1 th ngt mi xy ra
+ Cc gi tr thanh ghi TCON

14
Vi x l : iu khin ng c 1 chiu biendt.biendt@gmail.com

2: To PWM c chu k max : 100us

a) To timer 0
Do yu cu ca bi ton l iu khin tc ng c quay nhanh v quay
chm trong khi chy thun nghch nn d nguyn chu k v thay i thi
gian m. Yu cu nh:
+ ng c quay thun nghch bnh thng : 1000us
+ ng c tng tc ln nht : 100us
+ ng c gim tc ln nht : 2000us

Khi bt u cho timer 0 chy th b m ca timer s m dao ng thch


anh, c 12 dao ng ca thch anh th b m timer 0 TL0 s m tng 1 ,
c th ni timer 0 m chu k my i vi ch 8bit

15
Vi x l : iu khin ng c 1 chiu biendt.biendt@gmail.com

TL0 l thanh ghi 8 bit n m t 0 n 255 . Nu n m n 256 th n trn


b m . TL0 li quay v 0 v c ngt TF0 t ng np li gi tr 1 v ngt
c xy ra
Nh i vi bi ton ny th ta ch cn to timer 0 l 100us nn ta tnh theo
cng thc ta c :

Timer0 = (255 TL0) * 1us

Nh vy to c timer0 l 100us th cn phi gn gi tr TL0=155 th


n m t 155 255 tc l 100 ln th ngt mi xy ra
iu khin nhanh chm ca ng c ta phi to ra cc xung c rng l
5%, 10%.......95%,100%.

Nh trn ta c khong thi gian ko ln 5V l T1. Xung c rng 10% tc


l T1/T=10%......

b) Nguyn l hot ng PWM

* PWM : a ra m cc transitor , xung c rng ln hn th transitor


s m lu hn ng c s quay nhanh hn nhng m khng tuyn tnh .
Khng c xung th ng c s khng quay, xung c rng 100% th ng
c quay l ln nht. Tuy nhin xung phi ln hn 1 mc no mi khi
ng ng c.

c th thay i c rng xung theo 10 cp khc nhau ( ly gi tr


quay thun nghch lc bnh thng l 1000us) vi chu k l 2000us.ta phi
khi to timer c 1000us li ngt 1 ln.

* Hm khi to timer0

16
Vi x l : iu khin ng c 1 chiu biendt.biendt@gmail.com

Nh ni trn mun c gi tr timer0 no ch cn gn cho TL0 cho


thanh ghi m sau trn nhng y do to timer l 100us nn ta dng
ch 2 8 bit t np

void khoitaotimer0(void)// Ham khoi tao


{
EA=0;// Cam ngat toan cuc
TMOD=0x02;// Timer 0 che do 2 8 bit auto reload
TH0=0x9B;// Gia tri nap lai 155 doi ra so hex
TL0=0x9B;// Gia tri khoi tao 155 doi ra so hex
ET0=1;// Cho phep ngat timer 0
EA=1;// Cho phep ngat toan cuc
TR0=1;// Chay timer 0 bat dau dem so chu ki may
}

* Hm ngt.

bit PWM;
unsigned char dem=0;// Khai bao bien dem de dem tu 1 den 10
unsigned char phantram_PWM =10 ;// Bien chua phan tram xung(0...10)
void timer0(void) interrupt 1 //Ngat timer 0
{
TR0=0;// Dung chay timer 0
TF0=0;// Xoa co, o che do co tu duoc xoa
dem++;
if(dem<phantram_PWM) PWM=1;// Neu bien dem < phan tram xung thi
dua gia tri 1 ra chan, xung 5V
else PWM=0;// Neu dem = phan tram xung
if(dem==20) dem=0;// Neu dem du 20 thi gan lai bang 0 de bat dau chu ki
moi
TR0=1;// Cho chay timer
}

Do yu cu bi ton l iu khin thun nghch nn ta cn phi lu bin


PWM ny. Do PWM c chu k khng i nn do ta ch cn thay i
phantram_PWM l c th thay i c rng xung.

17
Vi x l : iu khin ng c 1 chiu biendt.biendt@gmail.com

CHNG III :
LU - CHNG TRNH MCH NGUYN L

Do yu cu ca bi ton ng dng trn thc t l khi nhn nt th ng c


chuyn tc ng tng ng vi cc ch : Stop, thun , nghch , tng ,
gim.

I : Lu chng trnh

Chng trnh phc v ngt

Phc v ngt
Timer 0

Dem++

dem >
phantram_PW
M

Dem=2
0
PWM=1 PWM=0

Dem=0 exit
Chng trnh
chnh

18
Vi x l : iu khin ng c 1 chiu biendt.biendt@gmail.com

Begin

Khai bo cc bin Phc v ngt


Khi ng Timer0 Timer0
Khi to Stack

Stop Thun Nghch Tng tc Gim tc

P1_ P1_1 P1_2 P1_ P1_


0 3 4

exit exit exit exit exit

P2_0=0 P2_0= pwm P2_0=0 Phantram_pwm - - Phantram_pwm ++-


P2_1=0 P2_1=0 P2_1=pwm Hin th Hin th
Bo hiu Bo hiu Bo hiu

II ) Chng trnh :

/* Dieu khien toc do dong co DC : Quay thuan, quay nghich, tang toc, giam
toc
Nhom 6: Nguyen Van Bien --- TBD47
Nguyen Son Tung --- TBD47
Nguyen Duc Hanh --- TBD47
Quan Duc Huong --- TBD47
Do Van Khang --- TBD47
Dang Thi Tuyet Lan --- TBD47
Nghiem Minh Tuan --- TBD47

19
Vi x l : iu khin ng c 1 chiu biendt.biendt@gmail.com

*/
// 2 Chan dieu khien dong co la : P2_0 va P2_1
// 5 chan de dieu khien : Quay thuan, quay nghich, Dung, Tang toc, giam toc
// 3 chan bao hieu dong co dang o che do nao.

#include <REGX51.H>

/* Dinh nghia cac nut nhan*/


#define stop P1_0
#define thuan P1_1
#define nghich P1_2
#define tang P1_3
#define giam P1_4

bit PWM;
unsigned char dem=0;
unsigned int phantram_PWM=10;

/* Ham tao thoi gian tre*/

void delay(unsigned int t)


{
unsigned int i,j;
for(i=0;i<100;i++)
for(j=0;j<t;j++);
}

/* Hien thi gia tri tang giam toc*/


unsigned char
LED[10]={0x40,0xf9,0x24,0x30,0x19,0x12,0x02,0xf8,0x80,0x10};
void hienthi(unsigned char digit1, unsigned char digit2)
{
/*Hien thi so thu nhat*/
P3=LED[digit1];
P0_0=1;
delay(2);
P0_0=0;
/*Hien thi so 2*/
P3=LED[digit2];
P0_1=1;

20
Vi x l : iu khin ng c 1 chiu biendt.biendt@gmail.com

delay(2);
P0_1=0;
}
/* Khoi tao Timer 100us*/

void khoitaohethong()
{
//ES=1;
EA=0;
TMOD=0x02; // che do 8 bit tu nap
TH0=0x9b; // nap gia tri 155 ma hex
TL0=0x9b;
EA=1;
TR0=1;
ET0=1;
}
/* Ngat tao ra PWM*/

void ngat_timer0(void) interrupt 1


{
TR0=0;
TF0=0;
dem++;
if(dem>=phantram_PWM)
{
PWM=1;
}
else
{
PWM=0;
}
if(dem==20) dem=0;
TR0=1;

}
/* Ham dung dong co*/
void stopdc(void)
{
P2_0=0;
P2_1=0;

21
Vi x l : iu khin ng c 1 chiu biendt.biendt@gmail.com

P2_2=0;
P2_3=1;
P2_4=1;
}

/* Ham quay thuan dong co*/


void quaythuan(void)
{
P2_1=0;
P2_0=PWM;
P2_3=0;
P2_2=1;
P2_4=1;

/* Ham quay nghich dong co*/

void quaynghich(void)
{
P2_0=0;
P2_1=PWM;
P2_4=0;
P2_3=1;
P2_2=1;

}
/* Ham dieu khien tang toc*/
unsigned char tangtoc(void)
{
if(tang==0)
{
while(tang==0)
{;}
phantram_PWM--;
delay(100);
if(phantram_PWM<1)
{
phantram_PWM=1;

22
Vi x l : iu khin ng c 1 chiu biendt.biendt@gmail.com

} }
return (phantram_PWM);
}
/* Ham dieu khien giam toc*/
unsigned char giamtoc(void)
{
if(giam==0)
{
while(giam==0)
{;}
phantram_PWM++;
delay(100);
if(phantram_PWM>20)
phantram_PWM=20;
}
return (phantram_PWM);
}
/* Lua chon che do cua dong co*/

unsigned char n;
unsigned char chonchedo(void)
{
if(stop==0) n=1;
if(thuan==0) n=2;
if(nghich==0) n=3;
switch(n)
{
case 0: {break;}
case 1: {stopdc();break;}
case 2: {quaythuan();break;}
case 3: {quaynghich();break;}
}
return (n);
}
/* Chuong trinh chinh*/
void main()
{
khoitaohethong();
while(1)
{

23
Vi x l : iu khin ng c 1 chiu biendt.biendt@gmail.com

tangtoc();
giamtoc();
chonchedo();
hienthi((20-phantram_PWM)/10,(20-phantram_PWM)%10);
}
}
Chng trnh ny c kim tra trn m phng phn mn Protues.

III) Mch nguyn l

KT LUN

Sau 1 thi gian tm hiu v lm bi tp th bi tp iu khin ng c 1 chiu


c hon thnh ng thi gian quy nh. Bi tp thc hin c ng
yu cu ca bi ra : Quay thun, quay nghch, tng tc, gim tc, dng.
y ch l m hnh v nguyn l iu khin ng c 1 chiu. Mch trn ch
iu khin c ng c cng sut nh khng iu khin c ng c
cng sut ln. iu khin c ng c cng sut ln th cn phi c
mch cng sut khc.
Mt ln na xin cm n thy : Nguyn Thanh Bnh gip chng em thc
hin bi tp ny.

24

You might also like