Professional Documents
Culture Documents
Bao Cao Tot Nghiep Moi
Bao Cao Tot Nghiep Moi
Bao Cao Tot Nghiep Moi
N TT NGHIP
09090321
09167261
: DHDT5A
B CNG THNG
N TT NGHIP
09090321
09167261
: DHDT5A
LI CAM OAN
Knh tha cc thy c trong khoa cng ngh in t, em l sinh vin kha 5
lp DHDT5A. Sau bn nm hc tp ti trng, c cc thy c tn tnh hng
dn, em c c vn kin thc chuyn ngnh c th nhn ti n
tt nghip. Em xin cam oan s c gng hon thnh ti, tun th ng cc
hng dn, yu cu ca gio vin hng dn c th hon thnh tt ti
cng nh kha hc ca mnh.Em xin m bo ti ny do em lm v hon
thnh. Trong qu trnh lm em c tham kho ca mt s ti lm trc y.
Km theo ph lc bn di.
Ngy 20 thng 12 nm 2013
SINH VIN THC HIN
Nguyn ng Tn
Ng Kin t
LI CM N
Trong sut qu trnh hc tp ti trng I HC CNG NGHIP TP H
CH MINH, em gp rt nhiu kh khn trong vic tip thu kin thc chuyn
ngnh. Nhng nh c s ch dy tn tnh ca cc thy c trong khoa CNG
NGH IN T, em c th hon thnh c chng trnh hc hm nay
c th lm ti ra trng.
Trong qu trnh lm ti, em xin c cm n thy Trn Vn Hng
hng dn, a ra cc hng, phng php gip em kim tra, tm ra nguyn
nhn t khc phc nhng vn kh khn m em gp phi.
Em xin chn thnh cm n!
Sinh vin thc hin
Nguyn ng Tn
Ng Kin t
MC LC
LI CAM OAN
LI CM N
NHN XT CA GIO VIN HNG DN
NHN XT CA GIO VIN PHN BIN
MC LC
DANH SCH CC BNG V HNH
NI DUNG
Trang
CHNG 1 M U ....................................................................................... 1
CHNG 2 C S L THUYT .................................................................... 2
2.1 PHNG PHP SINE PULSE WIDTH MODULATION .................. 2
2.1.1 Phng Php iu Rng Xung SINPWM ....................................... 2
2.1.2 Cc cng thc tnh ton, Cch thc iu khin............................... 4
2.1.3 Hiu Qu ca phng php iu khin............................................ 8
2.2 L THUYT IU KHIN PID ............................................................. 9
2.3 VI IU KHIN DSPIC30F4011 ......................................................... 11
2.3.1 Tng quan v vi iu khin dsPIC30F4011.................................... 11
2.3.2 Ngt .................................................................................................... 13
2.3.3 B nh thi Timer ........................................................................... 13
2.3.4 B chuyn i tng t sang s ADC ............................................. 14
2.3.5 Khi c encoder .............................................................................. 15
2.3.6 Khi PWM cho iu khin ng c ................................................ 17
2.3.7 Khi giao tip ni tip UART .......................................................... 18
2.4 VAN CNG SUT MOSFET ............................................................... 20
2.5 IC CCH LY ........................................................................................... 21
2.6 IC LI ...................................................................................................... 22
2.7 IC MAX232.............................................................................................. 24
2.8 ENCODER............................................................................................... 25
2.9 NG C BA PHA ............................................................................... 25
CHNG 3 NI DUNG V PHNG PHP NGHIN CU ................ 31
3.1 THIT K PHN CNG...................................................................... 31
3.1.1 S khi ca h thng ................................................................... 31
3.1.2 Mch vi iu khin ........................................................................... 31
3.1.3 Mch li v cch ly ........................................................................... 33
3.1.4 Mch o dng in, mch chnh lu v nghch lu ...................... 34
3.1.5 Mch giao tip my tnh................................................................... 35
3.2 TNH TON CC THNG S.. 39
3.2.1Phng php iu khin Sine Pulse Width Modulation. .............. 40
3.2.2 Thut ton chng trnh.................................................................. 40
CHNG 4 KT QU V THO LUN ................................................... 45
4.1 KT QU ................................................................................................ 45
4.2 THO LUN .......................................................................................... 52
CHNG 5 KT LUN V KIN NGH ................................................... 49
TI LIU THAM KHO ............................................................................... 50
PH LC .......................................................................................................... 51
CHNG 1: M U
CHNG 1
M U
Hin nay, cng nghip pht trin rt mnh m, my mc thay th cho sc
ngi. ng c l ngun truyn ng ph bin nht. Trong cc loi ng c th
ng c khng ng b ba pha c s dng nhiu nht do cu to n gin,
gi thnh r, cng sut ln. Nhng nhc im ln nht ca loi ng c ny l
kh iu khin. ng trc vn ny, cc k s lun mun tm ra mt phng
php c th iu khin ti u, chi ph ch to b iu khin thp c th a
ng c khng ng b ba pha ng dng rng hn na, nht l trong cc ng
dng m ng c ny cn b hn ch.
Trong cc phng php iu khin hin nay th phng php SINE PULSE
WIDTH MODULATION cho kt qu tt. Nhng phng php kh thc hin
hn cc phng php khc nn cha c ng dng nhiu ngoi thc t. Chnh
v l do ny m em chn ti IU KHIN NG C KHNG NG B
BA PHA S DNG VI IU KHIN DSPIC30F4011 THEO PHNG
PHP SPWM vi mc ch tm hiu, nghin cu, thit k b iu khin theo
phng php ny. Vi s tm hiu ban u ny v vic s nghin cu su hn
sau ny c th a phng php ny ng dng nhiu trong thc tin.
SVTH: Nguyn ng Tn
Ng Kin t
CHNG 2: C S L THUYT
CHNG 2
C S L THUYT
2.1 PHNG PHP SINE PULSE WIDTH MODULATION
2.1.1 IU RNG XUNG SINE
to ra in p xoay chiu bng phng php SinPWM, ta s dng mt tn hiu
xung tam gic tn s cao em so snh vi mt in p sin chun c tn s f. nu em
xung diu khin ny cp cho mt b bin tn mt pha th ng ra s thu c mt dng
in p dng iu rng xung c tn s bng tn s ngun song sin mu v bin d hi
bc nht ph thuc vo ngun in mt chiu cung cp v t s gia bin song sin
mu v song mang. tn s song mang phi ln hn tn s song sin mu. sau y l hnh
v miu t nguyn l ca phng php iu rng xung sin.
SVTH: Nguyn ng Tn
Ng Kin t
CHNG 2: C S L THUYT
Khi :
SVTH: Nguyn ng Tn
Ng Kin t
CHNG 2: C S L THUYT
(1)
(2)
SVTH: Nguyn ng Tn
Ng Kin t
CHNG 2: C S L THUYT
Khi mun dng ng c th phi h tn s t gi tr hin ti v gi tr 0. thi
gian hm ny ph thuc vo qun tnh quay ca ng c. Khi mun hm phanh c th
dung cc phng php hm nh phng php hm ng nng c dung in tr thng.
Nh vy ta c th hnh dung qu trnh hot ng ca b iu khin nh sau:
(1)
SVTH: Nguyn ng Tn
Ng Kin t
CHNG 2: C S L THUYT
Trong PTPER l gi tr cn np vo thanh ghi c c tn s song mang
mong mun.
Fcy =
(2)
(3)
(4)
SVTH: Nguyn ng Tn
Ng Kin t
CHNG 2: C S L THUYT
Ut =
(3)
(5)
(7)
SVTH: Nguyn ng Tn
Ng Kin t
CHNG 2: C S L THUYT
*(m*sin())
*(m*sin(+
2
3
))
(7a)
*(m*sin(+ ))
3
3
2
3
2
3
2
*VDC*m*sin(+ )
*VDC*m*sin(+
5
6
(7b)
*VDC*m*sin(+ ))
SVTH: Nguyn ng Tn
Ng Kin t
CHNG 2: C S L THUYT
t cng thc 7a vi 7b trn ta thy gi tr in p ln nht gia hai pha t
c gia hai vng tuyn tnh khi m=1.
SVTH: Nguyn ng Tn
Ng Kin t
CHNG 2: C S L THUYT
Biu thc ton hc ca b iu khin PID c dng (tham kho [2]):
U(t) = K e(t) + K e(t)d(t) + K
()
(2.13)
()
+K s
(2.14)
Cht lng ca h thng ph thuc vo cc tham s KP, KI, KD. Mun h thng c
cht lng nh mong mun cn phi phn tch i tng ri trn c s chn tham
s cho ph hp. Mt s phng php thng c s dng chn tham s PID:
Phng php Ziegler-Nichols.
Phng php ti u m dun, phng php ti u i xng.
Phng php thc nghim.
Trong nhiu trng hp khng cn xc nh c ba tham s cho b iu khin. Nu
bn thn i tng c thnh phn tch phn trong b iu khin, ta khng cn phi
thm khu tch phn mi trit tiu c sai lch tnh, tc ch cn dng b iu khin
PD l . Nu tn hiu trong h thng thay i tng i chm v bn thn b iu
khin khng cn phi phn ng tht nhanh vi s thay i ca sai lch e(t) th ta ch
cn s dng b iu khin PI.
Khu iu chnh t l P c nhim v lm gim sai lch e(t), tng tnh tc ng nhanh
ca h thng. Nhc im ca khu ny l lun tn ti sai s ch xc lp.
Khu iu chnh tch phn I trit tiu c sai lch tnh nhng vn nh hng n
qu trnh qu , d gy mt n nh h thng. V vy, b iu khin tch phn khng
c dng n l.
Khu iu chnh vi phn D ci thin kh nng qu ca h thng, p ng c
tc thay i ca sai s e(t). N c th to ra mt s sa cha ng k trc khi bin
ca sai lch iu khin e(t) tr nn ln. Tc ng vi phn c ch trong h thng
kim tra khi c tn hiu vo t bin hoc thay i ph ti. Khu vi phn d b nh
hng bi nhiu.
Trong cc h ng c, ta thng dng b iu khin PI. N gim bt nh hng
ca nhiu lon, tng h s khuch i h thng vng tn s thp nhm gim bt sai
s ch xc lp m khng lm thay i c tnh min tn s cao.
10
SVTH: Nguyn ng Tn
Ng Kin t
CHNG 2: C S L THUYT
11
SVTH: Nguyn ng Tn
Ng Kin t
CHNG 2: C S L THUYT
Hnh 2.6S chn dsPIC30F4011
12
SVTH: Nguyn ng Tn
Ng Kin t
CHNG 2: C S L THUYT
2.3.2 Ngt
Dspic30f4011 c 30 ngun ngt. Bng vecto ngt c t gn b nh chng trnh
ti a ch 0x000004. B iu khin ngt iu khin cc ngt. Thit lp cc ngt thng
qua cc thanh ghi c bit sau:
IFS0<15:0>, IFS1<15:0>, IFS2<15:0> : cha tt c cc c ngt. C ngt
c bt ln bi ngoi vi ca vi iu khin hoc tn hiu t bn ngoi v
c xa bng phn mm.
IEC0<15:0>, IEC1<15:0>, IEC2<15:0>: cha tt c cc bit iu khin cho
php ngt. Cc bit ny c s dng bt cc ngt ring bit t cc thit b
ngoi vi hay tn hiu t bn ngoi.
IPC0<15:0>... IPC11<7:0> : thit lp cc ngt u tin thng qua 12 thanh
ghi.
IPL<3:0>: cc mc u tin c lu tr trong cc bit IPL. IPL<3> nm
trong thanh ghi CORCON, IPL<2:0> nm trong thanh ghi trng thi.
INTCON1<15:0>, INTCON2<15:0>: iu khin ngt ton cc. INTCON1
bao gm cc bit c iu khin cc ngt khi c li x l. INTCON2 iu khin
cc tn hiu yu cu ngt ngoi vi v vic s dng bng chuyn i cc vecto
ngt.
Tt c cc ngun ngt c th c ngi dng gn cho mt trong 7 cp u tin
thng qua cc thanh ghi IPCx. Nu bit NSTDIS (INTCON1 <15>) c thit lp, tt c
cc ngt u b cm.
2.3.3 B nh thi Timer
Trong vi iu khin dsPIC40F4011 c ti nm b nh thi (Timer) 16-bit. Trong
cc Timer c th hot ng ring bit, ring hai Timer 2, 3 v hai Timer 4, 5 c th
kt hp vi nhau tr thnh mt Timer 32 bit.
Timer 1 c th hot ng vi ngun to dao ng tn s thp 32KHz, v ch
khng ng b vi ngun to dao ng ngoi. c im ring bit ca Timer 1 l
c th dng trong cc ng dng thi gian thc. Timer 1 c th hot ng trong ba ch
:
Timer 16-bit: trong ch ny, timer s tng sau mi chu k lnh n khi gi tr
ca timer bng gi tr ca thanh ghi chu k PR1 (Period Register) th. s reset v
0 v tip tc m.
13
SVTH: Nguyn ng Tn
Ng Kin t
CHNG 2: C S L THUYT
Counter ng b 16-bit: trong ch ny, timer s tng mi sn ln ca ca
xung nhp ngoi m c ng b vi pha ca cc xung nhp trong. Timer tng
n gi tr nm trong thanh ghi PR1 th dng v reset timer v 0 ri tip tc
m ln.
Counter khng ng b 16-bit: khi hot ng trong ch ny, timer s tng
dn sau mi sn ln ca xung nhp bn ngoi tc ng vo. Timer s tng dn
n khi gi tr ca n bng thanh ghi PR1 th. b reset v 0 ri li tip tc m
ln.
14
SVTH: Nguyn ng Tn
Ng Kin t
CHNG 2: C S L THUYT
mt s kin do ngoi vi khc to ra. Kt qu chuyn i c lu trong b m gm
16 thanh ghi ADCBUF0 n ADCBUFF.
Cc bc tin hnh chuyn i ADC:
Cu hnh chn l ng vo tng t, chn in p chun.
Chn knh cn chuyn i, chn xung nhp chuyn i
Bt ADC hot ng.
Xa c ngt, chn mc u tin ngt cho ADC.
Bt u ly mu, i kt thc ly mu v bt u chuyn i
c kt qu t b m.
15
SVTH: Nguyn ng Tn
Ng Kin t
CHNG 2: C S L THUYT
16
SVTH: Nguyn ng Tn
Ng Kin t
CHNG 2: C S L THUYT
17
SVTH: Nguyn ng Tn
Ng Kin t
CHNG 2: C S L THUYT
18
SVTH: Nguyn ng Tn
Ng Kin t
CHNG 2: C S L THUYT
B to tc baud 16 bit c chia t l trc, tc baud t 38 bps ti 1,875
Mbps vi tn s h thng 30MHz.
C 4 b m d liu nhn v 4 b m d liu truyn.
Ch kim tra, pht hin bit chn l, trn b m.
Ngt truyn, ngt nhn d liu.
Cng th tnh tc baud:
tc Baud = F /(16 (BRG + 1))
(2.17)
19
SVTH: Nguyn ng Tn
Ng Kin t
CHNG 2: C S L THUYT
20
SVTH: Nguyn ng Tn
Ng Kin t
CHNG 2: C S L THUYT
in p VDS (Mosfet) hay VCE (IGBT) >> VDC/2
Dng din qua linh kin ln hn dng nh mc ca ng c 10A nhit
hot ng.
Chu c tn s ng ngt cao.
Mosfet IRFP460 ph hp vi nhng yu cu trn, gi thnh li r v d tm mua
trn th trng nn c chn s dng trong ng dng ny
2.5 IC CCH LY
Cc mch pht ra tn hiu iu khin mch cng sut dng bn dn phi c
cch ly v in. iu ny c th thc hin bng opto hoc bin p xung.
Bin p xung: gm mt cun s cp v c th c nhiu cun th cp. Vi nhiu
cun dy pha th cp, ta c th kch ng nhiu transistor mc ni tip hoc
song song. Bin p xung cn c cm khng tn nh v p ng nhanh. Trong
trng hp xung iu khin c tc ng ko di hoc tn s thp, bin p xung
sm t trng thi bo ha v ng ra s khng ph hp vi yu cu iu khin.
Opto: gm ngun pht hng ngoi bng diot (IR LED) v mch thu dng
phototransistor. Do , opto tha mn yu cu v in, ng thi p ng tt
hn bin p xung.
Trong ng dng ny,ta dng opto HCPL2631ca hng Fairchild c p ng tn s
ln ti 10MHz, tha mn yu cu ng dng.
21
SVTH: Nguyn ng Tn
Ng Kin t
CHNG 2: C S L THUYT
2.6 IC LI
Cc mch iu khin ng c dng mch nghch lu u cn dng ti mch li
iu khin ng ngt Mosfet hay IGBT. C hai thnh phn c bn trong iu khin
ng ngt linh kin cng sut l iu khin van pha cao (high side Q1) v van pha
thp (low side Q2).
22
SVTH: Nguyn ng Tn
Ng Kin t
CHNG 2: C S L THUYT
ON => chn S (MOSFET) hay chn E (IGBT) ca Q1 chuyn t ground sang in p
cao ( high voltage rail). Do mun kch Q1 tip tc ON th phi to in p kch
VGS1 c gi tr VGS1= VSQ1 + V.Trong khi tn hiu ra ca vi x l iu khin
ng ngt cc kha ch c gi tr in p +5V (so vi ground). Nn cn phi c mch
li to tri p v cch ly trong vic ng ngt pha cao Q1. Tuy nhin i vi Q2 th
chn S c ni ground , do in p kch VGS2 ch cn c gi tr V. Do vic
ng ngt kha low side (Q2) c iu khin d dng hn. V l gi tr in p cn
thit kch Q1 hay Q2 dn. i vi MOSFET v IGBT V c gi tr t 10 n 15
(V).
Trong ng dng ny, ta dng IC li loi s dng t bootstrap li pha cao. Trong
sut thi gian ON ca Q2 chn S ca Q1 c in th l ground. iu ny cho php t
Cboot c np (thng qua diode D1) n gi tr VBIAS. Khi Q2 c kch OFF v
Q1 c kch ON th in p chn S ca Q1 bt u tng ln. T Cboot lc ny ng
vai tr ca ngun phn cc, cung cp dng li pha cao Q1.
Nhc im ca mch li loi ny l thi gian tr hon gia tn hiu iu khin v
tn hiu ng ngt ln t 500ns n 1us, nhng trong ng dung ny th thi gian tr
hon ny khng nh hng. Mt trong cc IC li l IR2102 vi 2 ng vo v hai ng ra
tng ng cho mt cp mosfet mt pha.
23
SVTH: Nguyn ng Tn
Ng Kin t
CHNG 2: C S L THUYT
2.7 IC MAX232
Vi mch MAX 232 ca hng MAXIM l mt vi mch chuyn dng trong giao din
ni tip vi my tnh. Chng c nhim v chuyn i mc TTL li vo thnh mc
+10V hoc 10V pha truyn v cc mc +3+15V hoc -3-15V thnh mc TTL
pha nhn.
24
SVTH: Nguyn ng Tn
Ng Kin t
CHNG 2: C S L THUYT
2.8 ENCODER
iu khin c tc , ta cn c mt thit b o tc quay ca ng c.
Encoder l thit b o tc hay v tr theo nguyn l m vch xung thng c s
dng. o tc bng encoder n gin hn cc phng php khc. Khi kt hp vi
dsPIC th li cng n gin hn na khi dsPIC c khi chuyn dng c encoder v
c th tng phn gii ca encoder ln gp 2 hoc gp 4 ln. Encoder c s dng
trong ng dng ny c phn gii 100 xung/vng, in p cung cp 5V, hai knh ra
QA v QB.
2.9 NG C BA PHA
Trong ng dng ny, ta dng ng c 3 pha cng sut nh. l loi 5IK90GUSW, cng sut 90W, in p cung cp 220V-50Hz, tc danh nh 1300 vng/pht.
25
SVTH: Nguyn ng Tn
Ng Kin t
CHNG 2: C S L THUYT
26
SVTH: Nguyn ng Tn
Ng Kin t
CHNG 3
31
SVTH: Nguyn ng Tn
Ng Kin t
32
SVTH: Nguyn ng Tn
Ng Kin t
33
SVTH: Nguyn ng Tn
Ng Kin t
34
SVTH: Nguyn ng Tn
Ng Kin t
35
SVTH: Nguyn ng Tn
Ng Kin t
36
SVTH: Nguyn ng Tn
Ng Kin t
37
SVTH: Nguyn ng Tn
Ng Kin t
38
SVTH: Nguyn ng Tn
Ng Kin t
S bc nhy
1
2
3
4
5
6
8
2. L thuyt PID
iu khin PID l da trn sai s e gia gi tr t SP (set point) v gi tr o PV
(process variable) tnh ton ra gi tr iu khin u(t)
( )=
( ) + ( 1)
2
( )+
( )=
( )=
( )=
[ ( ) ( 1)]
( )
()
[ ( ) ( 1)] =
39
( )
( 1)]
SVTH: Nguyn ng Tn
Ng Kin t
( )=
( )+
( )+
( )
3. Encoder
Gi A (vng/pht) l tc trc ng c.
Vi b truyn ng t l 1:25, tc ng ra l A/25 (vng/pht).
Bnh rng ng ra l 22 rng, bnh rng encoder l 15 rng, tc encoder s l
(A/25)*(22/15) = A*22/375 vng/pht.
Encoder c phn gii 500 xung/vng, t l nhn xung ca vi x l bng 4 suy
ra vi x l nhn c A*352/3 (xung/pht) hay A*88/45 (xung/giy).
Nh vy, nu t chu k ly mu bng 45/88 = 0.511364s th s xung nhn
c trong mt chu k chnh l tc ca trc ng c.
40
SVTH: Nguyn ng Tn
Ng Kin t
41
SVTH: Nguyn ng Tn
Ng Kin t
42
SVTH: Nguyn ng Tn
Ng Kin t
43
SVTH: Nguyn ng Tn
Ng Kin t
CHNG 4
KT QU V THO LUN
4.1 KT QU
Sau thi gian tm hiu, nghin cu, lm mch, m hnh hon thnh v hot ng
t yu cu. Tc t v tc o c hin th trn LCD. Gi tr t c c
nhp t bn phm ma trn to s linh hot, c th thay i gi tr t mt cch nhanh
chng khng cn phi kt ni my tnh. Nhp gi tr t bn phm nh sau:
ch thng, tt c cc phm khng c tc dng tr phm MENU. Nhn
phm MENU s a mn hnh vo ch ci t.
Trong ch ci t, nhn phm 0 n 9 nhp gi tr v ENT cp nht
gi tr v thot ra ch thng. Nhn phm UP s tr li ch thng, tc
t khng thay i. Nhn phm MENU s xa gi tr va nhp vo
nhp li gi tr khc.
M hnh cng c kh nng kt ni vi my tnh thng qua mch giao tip ni tip dng
RS232.
Giao din my tnh cho php nhp tc t, hin th tc o.
Giao din my tnh cng cho php thay i h s Kp, Kd, iu m bn phm ma
trn khng lm c.
C nhiu ty chn thng s giao tip, kt ni nh chn tc baud, cng com,
bit chn l, stop bit.
C th ghi li gi tr o theo thi gian, thng qua c th kho st, nh gi
cht lng iu khin ca h thng.
Trong chng trnh ny, cng com kt ni l COM8, tc baud 9600, 1 Stop
bit, 8 bit d liu, khng dng bit chn l.
Tuy nhin, do ln u tin lm v ng c ba pha nn khng trnh khi mt s
hn ch v phn cng lm cho m hnh hot ng cha c tt. Ngoi dy tc ny
ng c khng cn n nh.
45
SVTH: Nguyn ng Tn
Ng Kin t
46
SVTH: Nguyn ng Tn
Ng Kin t
47
SVTH: Nguyn ng Tn
Ng Kin t
48
SVTH: Nguyn ng Tn
Ng Kin t
49
SVTH: Nguyn ng Tn
Ng Kin t
50
SVTH: Nguyn ng Tn
Ng Kin t
51
SVTH: Nguyn ng Tn
Ng Kin t
52
SVTH: Nguyn ng Tn
Ng Kin t
CHNG 5
49
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
50
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
PH LC
CHNG TRNH TRN VI IU KHIN
/**********************************************************
********************
**********************************************************
********************/
#include "p30F4011.h"
#include "delay.h"
#include "lcd.h"
#include "uart.h"
//----------------------------------------------------------------------------//Configuration bits
_FOSC(CSW_FSCM_OFF & XT_PLL16);
_FWDT(WDT_OFF);
_FBORPOR(PBOR_ON
&
BORV27
&
PWRT_16
&
PWMxL_ACT_LO & PWMxH_ACT_LO & MCLR_EN);
_FGS(CODE_PROT_OFF);
//----------------------------------------------------------------------------//Program Specific Constants
#define FCY 29491200 //Instruction cycle rate (Osc x PLL / 4)
//----------------------------------------------------------------------------//Khai bao chuong trinh con
void period();
unsigned char ALL_ROWS();
//Phat hien co phim
nhan.
unsigned char kbd_getc();
//Ham lay ma phim.
unsigned int read_adc();
void adc_init();
void update();
void QEI_init();
void get_speed();
void pid_freq();
//----------------------------------------------------------------------------// Global variants using in subroutine
GVHD: TRN VN HNG
51
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
52
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
53
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
54
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
55
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
56
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
57
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
58
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
TRISBbits.TRISB1 = 0; //Relay
TRISBbits.TRISB2 = 0; //BUZZ
LATBbits.LATB1 = 0;
lcd_init();
kbd_init();
__delay_ms(1000);
// Thiet lap Timer 2 de update gia tri PWM.
IEC0 = 0x0048; //Enalble Timer1 & Timer 2 interrupt request
T2CON = 0; //Turn off Timer2 and clear settings
TMR2 = 0; //Start Timer2 at zero
PR2 = FCY/240/freq; //Set period register value for 1/240/60 second
(60 Hz)
T2CON = 0x8000; //Turn on Timer2 with 1:1 prescaler.
//Thiet lap Timer 1 de lay toc do tra ve tu encoder.
T1CON = 0;
TMR1 = 0;
PR1 = 0xE61D;
//Set thoi gian timer1 sao cho so xung tra ve = so
vong/phut.
T1CON = 0x8030; //Turn on Timer1 with 1:256 prescaler.
PTCON = 0x8007;
// Hien thi LCD
lcd_puts(" Welcome ");
lcd_gotoxy(0,1);
lcd_puts("Bien tan SinPWM ");
__delay_ms(1000);
//--------------- Che do ban phim -----------------------MODE1:
lcd_putc('\f');
lcd_puts("Tan so:
Hz");
lcd_gotoxy(12,0);
lcd_putd(freq);
if(key_change == 1)
{
lcd_gotoxy(0,1);
lcd_puts("Nhan D de update");
GVHD: TRN VN HNG
59
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
}
while(1)
{
key = kbd_getc();
if(key == 'D')
{
key_change = 0;
lcd_gotoxy(0,1);
lcd_puts("Toc do:
rpm");
lcd_gotoxy(11,1);
lcd_putd(speed);
OVDCON = 0xffff; //ngo ra PWM
module PWM.
update();
while(1)
{
if(tmr1_flag == 1)
//Neu
cap nhat.
{
lcd_gotoxy(11,1);
lcd_putd(speed);
tmr1_flag =0;
}
__delay_ms(10);
phim.
switch (kbd_getc())
{
case 'D':
ngung bien tan.
OVDCON = 0x00ff;
khien boi POUTx o muc tich cuc (1).
goto MODE1;
man hinh ban dau cua che do KEY.
break;
case '*':
GVHD: TRN VN HNG
60
//Nhan
//Ngo
nut
ra
//Tro
dieu
ve
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
key_change = 1;
goto MODE1_1;
//Truong
hop
61
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
if(key_freq != 0)
freq = key_freq;
goto MODE1;
}
if(key == 'A')
goto MENU;
}
//--------------------- Menu chinh -----------------------MENU:
lcd_putc('\f');
lcd_puts("KEY POT COM JOG ");
lcd_gotoxy(0,1);
lcd_puts(" 1 2 3 4 ");
while (1)
{
switch(kbd_getc())
{
case 'A':
lcd_putc('\f');
lcd_puts("Time.Set PID ");
lcd_gotoxy(0,1);
lcd_puts(" 5
6 ");
while(1)
{
switch(kbd_getc())
{
case 'A':
goto MENU;
break;
/*case '2':
mode = 2;
goto MODE2;
break;
case '3':
GVHD: TRN VN HNG
62
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
mode = 3;
goto MODE3;
break;*/
default:
break;
}
}
break;
case '1':
mode =1;
goto MODE1;
break;
case '2':
mode = 2;
goto MODE2;
break;
case '3':
mode = 3;
goto MODE3;
break;
case '4':
mode = 4;
goto MODE4;
break;
default:
break;
}
}
//------------------------ Che do su dung bien tro -----------------------------MODE2:
adc_value = 0;
lcd_putc('\f');
lcd_puts("Gia tri adc: ");
lcd_gotoxy(0,1);
GVHD: TRN VN HNG
63
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
64
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
}
if(tmr1_flag == 1)
cap nhat.
{
lcd_gotoxy(11,1);
lcd_putd(speed);
tmr1_flag =0;
}
lcd_gotoxy(12,0);
lcd_putd(freq);
}
OVDCON = 0x00ff;
lcd_putc('\f');
lcd_puts("Gia tri adc: ");
lcd_gotoxy(0,1);
lcd_puts("Nhan [D] de chay");
}
//Tat PWM.
}
//Lap lai mode 2.
65
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
freq = 10;
update();
//Cap nhat tan so 10 Hz
OVDCON = 0xffff; //Chay PWM
__delay_ms(1000);
key = '\0';
//Xoa key quet lai.
freq = jog_freq;
OVDCON = 0x00ff;
//Tat PWM
lcd_gotoxy(0,1);
lcd_puts("
STOP
");
}
}
//-------------------------- Che do giao tiep may tinh-----------------------MODE3:
lcd_putc('\f');
lcd_puts("Ket noi den PC");
lcd_gotoxy(0,1);
lcd_puts("Nhan D de chay");
set_speed = 1500;
Kp = 1;
Ki = 0.5;
Kd = 0;
while(1)
{
key = kbd_getc();
if(key == 'A')
{
goto MENU;
}
if(key == 'D')
{
lcd_putc('\f');
lcd_puts("Tan so:
Hz");
lcd_gotoxy(0,1);
lcd_puts("Nhan D de dung");
GVHD: TRN VN HNG
66
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
__delay_ms(100);
IEC0|= 0x0200;
//U1RX Interrupt enable.
while(kbd_getc() != 'D')
{
if(tmr1_flag == 1)
{
tmr1_flag == 0;
mea_speed = speed;
pid_freq();
freq = pc_freq;
lcd_gotoxy(12,0);
lcd_putf(freq);
//
update();
//
OVDCON = 0xffff;
for(a=0;a<4;a++)
{
tran_data[3-a] = mea_speed%10
+48;
mea_speed/=10;
}
//if(uart_flag == 1)
putsUART1(tran_data);
}
}
IEC0 &= 0xfdff;
OVDCON = 0x00ff;
goto MODE3;
}
}
} //End of main()
//==================================================
===========================
//Error traps
GVHD: TRN VN HNG
67
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
68
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
locus = 0;
period();
}
void __attribute__((__interrupt__)) _T1Interrupt (void)
{
IFS0bits.T1IF = 0; // Clear timer 1 interrupt flag
get_speed();
tmr1_flag = 1;
POSCNT = 0;
}
void __attribute__((__interrupt__)) _U1RXInterrupt(void)
{
IFS0bits.U1RXIF = 0;
// Read the receive buffer till atleast one or more character
can be read
while(DataRdyUART1())
{
pc_data[byte_num] = U1RXREG;//ReadUART1(); //
Nhan chuoi thong tin (gom 5 byte) tu UART.
byte_num++;
// Tang bien dem so
luong byte da nhan trong chuoi.
if (byte_num>3) // Kiem tra so byte du lieu nhan
duoc.
{
uart_flag = 1;
byte_num = 0;
// Dat lai so thu byte trong
chuoi (tong so byte trong chuoi la 5).
}
}
}
/*void __attribute__((__interrupt__, auto_psv)) _T3Interrupt (void)
{
IFS0bits.T3IF = 0; // Clear timer 3 interrupt flag
GVHD: TRN VN HNG
69
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
display = pdc1_value;
for(i = 15;i>=12;i--)
{
lcd_gotoxy(i,1);
lcd_putc(number[display%10]);
display = display/10;
}
}*/
//-----------------------------------------------------------------------------//Subroutines
void period()
{
locus_a = locus;
locus_b = locus+240;
locus_c = locus+480;
if(locus_b > 719)
locus_b -= 720;
if(locus_c > 719)
locus_c -= 720;
PDC1 = (unsigned int)1050 + 1000*sine[locus_a];
PDC2 = (unsigned int)1050 + 1000*sine[locus_b];
PDC3 = (unsigned int)1050 + 1000*sine[locus_c];
}
// ***************************************************
// Ten CTC:
ALL_ROWS(void).
// Thong so dau vao:
// Thong so dau ra: Tra ve gia tri LOW(0) neu khong nhan phim.
//
Tra ve gia tri HIGH(1) neu co nhan
phim.
// Cong dung:
Kiem tra co nhan hay khong nhan phim.
// ***************************************************
unsigned char ALL_ROWS() // Ham kiem tra co nhan hay khong
nhan phim.
GVHD: TRN VN HNG
70
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
{
// Tra ve gia tri
LOW(0) neu khong nhan phim va gia tri HIGH(1) neu co nhan
phim.
// Khai bao bien.
// Dinh nghia ham.
if(row0 && row1 && row2 && row3)
logic cua cac hang ban phim.
// ***************************************************
// Ten CTC:
kbd_getc().
// Thong so dau vao:
// Thong so dau ra: Ma phim duoc nhan tren ban phim 4x4 (ma
ASCII). Xem cau hinh ben tren.
// Cong dung:
Ham se tra ve gia tri (ma) cua phim duoc nhan
(theo ASCII),
//
hoac ky tu NULL neu khong co
phim nao duoc nhan.
//
Ham nay phai duoc goi lien tuc de tranh khong phat hien
phim nhan.
// ***************************************************
unsigned char kbd_getc()
// Ham lay ma phim duoc nhan tren
ban phim.
{
// Khai bao bien.
unsigned char kchar;
// Bien chua ma phim.
GVHD: TRN VN HNG
71
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
72
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
break;
case 3:
col3 = 0;
col2 = 1;
col1 = 1;
col0 = 1;
break;
}
73
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
//
Hang 0.
else if(!row1)
(row1 = LOW).
row = 1;
//
Hang 1.
else if(!row2)
(row2 = LOW).
row = 2;
//
Hang 2.
else if(!row3)
(row3 = LOW).
row = 3;
//
Hang 3.
last_key = KEYS[row][col];
phim dua vao hang (row) va cot (col) tich cuc.
// Lay ma
74
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
}
}
while (ALL_ROWS() != 0);
// Cho cho den khi khong con
giu phim nua moi tra ve ma phim nhan.
LATBbits.LATB2 = 0;
return(kchar);
// Tra ve ma ASCII cua phim duoc nhan
(bang ma duoc khai bao o dau chuong trinh).
}
//Chuong trinh cai dat adc
void adc_init()
{
TRISBbits.TRISB0 = 1; //RB0 la input.
ADPCFG = 0xfffe;
//AN0 la input analog.
ADCON1 = 0x00e0;
//Convert tu dong.
ADCON2 = 0;
ADCON3 = 0x033f;
//Thoi gian lay mau = 3 Tad
(3us), Tad = 32 Tcy = 1us.
ADCHS = 0;
//CN0- = Vref- = AVss, CN0+
= AN0.
ADCSSL = 0;
//Chi lay mau tai AN0
nen khong scan input.
ADCON1bits.ADON = 1; //Cho phep chay ADC.
}
//Chuong trinh lay gia tri adc
unsigned int read_adc()
{
ADCON1bits.SAMP = 1;
while(!ADCON1bits.DONE);
ADCON1bits.DONE = 0;
return (ADCBUF0);
}
//Chuong trinh cap nhat gia tri PR2
GVHD: TRN VN HNG
75
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
void update()
{
if(freq < 25)
step = 1;
else if (freq < 50)
step = 2;
else if (freq < 75)
step = 3;
else if (freq < 100)
step = 4;
else if (freq < 125)
step = 5;
else if (freq < 150)
step = 6;
else
step = 8;
IEC0 &= 0xffbf;
T2CON = 0;
TMR2 = 0;
PR2 = FCY/720/freq*step;
IEC0 |= 0x0040;
T2CON = 0x8000;
}
//Chuong trinh thiet lap QEI.
void QEI_init()
{
QEICONbits.QEIM = 0; // Tat Module QEI
QEICONbits.TQCS = 0; // su dung bo dao dong trong
QEICONbits.CNTERR = 0; // Clear any count errors
QEICONbits.QEISIDL = 0; // Continue operation during
sleep
QEICONbits.SWPAB = 0; // QEA and QEB not swapped
QEICONbits.PCDOUT = 0; // Normal I/O pin operation
GVHD: TRN VN HNG
76
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
77
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
/*
}
CHNG TRNH TRN VB 6.0
Dim chuoinhan As String
Dim maguidi As String
Dim chuoinhan1 As String
Dim tocdodo As Long
Dim tocdodat As Long
Dim kp, ki, kd As Single
Dim e0, e1, e2, e3, e4, e5 As Single
Dim MANG(0 To 500000) As Long
Dim biendem As Integer
Private Sub Command1_Click()
'gui du lieu di
maguidi = txtgiu.Text
If (Len(maguidi) < 4) Then
MsgBox "Du lieu chua du"
Else
If MSComm1.PortOpen = True Then
MSComm1.Output = maguidi
GVHD: TRN VN HNG
78
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
Else
MsgBox "Chua ket noi Cong COM"
End If
End If
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub Command3_Click()
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
Label1.Caption = "Disconnect" 'hien thi chu Disconnect len
Shape1.BackColor = &HFF&
Else
MsgBox "Not Conneting"
End If
End Sub
Private Sub Command4_Click()
txthien.Text = ""
End Sub
Private Sub connect_Click()
'an nut ket noi
79
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
.InBufferSize = 512
.InputLen = 0
.RThreshold = 1
.SThreshold = 1
.OutBufferSize = 1024
'.InputMode = comInputModeBinary // dung de truyen so
.InputMode = comInputModeText
.PortOpen = True
End With
Label1.Caption = "Connect"
Shape1.BackColor = &HFF00&
End If
End Sub
Private Sub MSComm1_OnComm()
Dim chuoinhan1 As String
GVHD: TRN VN HNG
80
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
chuoinhan1 = MSComm1.Input
txtnhanve.Text = chuoinhan1 + txtnhanve.Text
txthien.Text = txtnhanve.Text
'StrReverse(
tocdodat = Val(txtgiu.Text)
tocdodo = Val(txthien.Text)
MANG(biendem) = tocdodo
'dich chuyen truc
If biendem / 10 > 10 Then
TChart1.Axis.Bottom.SetMinMax biendem / 10 - 9, biendem / 10
TChart1.Series(0).AddXY biendem / 10, MANG(biendem), "", vbBlue
TChart1.Series(1).AddXY biendem / 10, tocdodat, "", vbRed
'TChart1.Series(2).AddXY biendem / 20, MANG(biendem) + 100, "",
vbGreen
Else
TChart1.Series(0).AddXY biendem / 10, MANG(biendem), "", vbBlue
TChart1.Series(1).AddXY biendem / 10, tocdodat, "", vbRed
'TChart1.Series(2).AddXY biendem / 20, MANG(biendem) + 100, "",
vbGreen '
End If
biendem = biendem + 1
End Sub
GVHD: TRN VN HNG
81
SVTH: Nguyn ng Tn
Ng Kin t
PH LC
82
SVTH: Nguyn ng Tn
Ng Kin t