Thiết kế và xây dựng hệ thống điều khiển động cơ theo nhiệt độThiết kế và xây dựng hệ thống điều khiển động cơ theo nhiệt độThiết kế và xây dựng hệ thống điều khiển động cơ theo nhiệt độThiết kế và xây dựng hệ thống điều khiển động cơ theo nhiệt độThiết kế và xây dựng hệ thống điều khiển động cơ theo nhiệt độThiết kế và xây dựng hệ thống điều khiển động cơ theo nhiệt độThiết kế và xây dựng hệ thống điều khiển động cơ theo nhiệt độThiết kế và xây dựng hệ thống điều khiển động cơ theo nhiệt độThiết kế và xây dựng hệ thống điều khiển động cơ theo nhiệt độThiết kế và xây dựng hệ thống điều khiển động cơ theo nhiệt độThiết kế và xây dựng hệ thống điều khiển động cơ theo nhiệt độ
Trang 3C ng hoà xã h i ch t Nam
c l p T Do H nh Phúc -o0o -
I H C DÂN L P H I PHÒNG
Sinh viên : Ki u Công Hòa MSV : 1312102017
tài : Thi t k và xây d ng h th u khitheo nhi
Trang 4NHI M V TÀI
1 N i dung và các yêu c u c n gi i quy t trong nhi m v tài t t nghi p (
v lý lu n, th c ti n, các s li u c n tính toán và các b n v )
2 Các s li u c n thi thi t k , tính toán
Trang 6
PH N NH N XÉT TÓM T T C A CÁN B NG D N
ng c i n i dung yêu c ra trong nhi m v t lý lu n th c ti n, tính toán giá tr s d ng, ch ng các b n v )
m c a cán b ng d n
m ghi b ng s và ch )
Cán b ng d n chính
(Ký và ghi rõ h tên)
Trang 7NH GIÁ C I CH M PH N BI N
TÀI T T NGHI P
tài t t nghi p v các m t thu th p và phân tích s
thuy t minh và b n v , giá tr lý lu n và th c ti tài
m c a cán b ch m ph n bi n
m ghi b ng s và ch )
7
i ch m ph n bi n
(Ký và ghi rõ h tên)
Trang 8M C L C
L I M U 1
T NG QUAN V CÁC PH N T 2
1.1 T NG QUAN V PIC16F877A 2
1.1.1 Ch u khi n PIC16F877A 2
1.1.2 M t vài thông s v u khi n PIC16877A 3
kh u khi n PIC16F877A 4
1.1.4 T ch c b nh 5
1.1.5 Các c ng xu t nh p c a PIC16F877A 9
1.1.6 Timer0 11
1.1.7 Timer1 13
1.1.8 Timer2 15
1.2 THI T B LCD 16
1.2.1 Hình dáng kích c 17
1.2.2 Các chân ch c 18
kh i c a HD44780 19
1.2.4 T p l nh c a LCD 22
1.2 c tính c a các chân giao ti p 27
THI T K H TH U KHI THEO NHI 28
KH I 28
2.2 THI T K CÁC KH I 28
2.2.1 M 28
2.2.2 Kh i x lý 30
2.2.3 Kh i ADC (tích h p trong PIC16F877A) 31
2.2.4 Kh i khu i hi u ch nh 32
2.2.5 Kh i công su t 33
Trang 92.2.7 Motor DC 38
m ch nguyên lý h th ng 43
U KHI N 45
THU T TOÁN 45
3.2 U KHI N 46
K T LU N 56
TÀI LI U THAM KH O 58
Trang 111.1 T NG QUAN V PIC16F877A
PIC16F877A là dòng PIC ph bi n nh t hi n nay m nh v
Hình 1.1: u khi n PIC 16F877A/PIC16F874A và các d chân
Trang 12Ch a PIC16F877A:
tràn Timer, ng t ngo t ADC
r ng xung)
- Ch ng b n i ti p SSP g m 2 giao ti p SPI và I2C
module ph n c ng ph c v cho giao ti p theo chu n RS-232
- B ADC 10 bit chuy i tín hi ng t sang tín hi u s
1.1.2 M t vài thông s v u khi n PIC16877A
u khi n thu c h PIC16Fxxx v i t p l nh g m 37 l nh có dài 14 bit M i l c th c thi trong m t chu kì xung clock T
nh d li u 368x8 byte RAM và b nh d li u EEPROM v ng 256x8 byte S PORT I/O là 5 v i 33 pin I/O
c tính ngo i vi bao g m các kh i ch
-Timer0: b m 8 bit v i b chia t n s 8 bit
-Timer1: b m 16 bit v i b chia t n s , có th th c hi n ch c n
sleep
-Timer2: b m 8 bit v i b chia t n s , b postcaler
- Các chu n giao ti p n i ti p SSP(Synchronous Serial Port) v i các chân
u khi n RD, WR, CS bên ngoài
c tính Analog:
- 8 kênh chuy i ADC 10 bit
Trang 13Programming) thông qua 2 chân.
- Watchdog Timer v i b ng trong
Trang 141.1.4 T ch c b nh
C u trúc b nh u khi n PIC16F877A bao g m b nh
trình (Program memory) và b nh d li u (Data Memmory)
1.1.4.1 B nh
Trang 151.1.4.2 B nh d li u
B nh d li u c a PIC là b nh c chia ra làm nhi u
i v i PIC16F877A b nh d li c chia ra làm 4 bank M i
ng 28 byte, bao g m các thanh ghi có ch c bi t SFR (Special Function Register) n m a ch th p và các thanh ghi
c s d ng (ví dghi STATUS) s t t t c các bank c a b nh d li u giúp thu n ti n trong quá trình truy xu t và làm gi m b t l nh c c th
c a b nh d li
Hình 1.4: b nh d li u PIC16F877A
Trang 16- Thanh ghi STATUS (03h, 83h, 103h, 183h): thanh ghi ch a k t qu
th c hi n phép toán c a kh i ALU, tr ng thái reset và các bit ch n bank c n truy xu t trong b nh d li u
Trang 17- Thanh ghi PIE2 (8Dh): ch u khi n ng t c a các kh i ch c
t c a b so sánh và ng t ghi vào b nh EEPROM
- Thanh ghi PIR2 (0Dh): ch a các c ng t c a các kh i ch i
vi, các ng c cho phép b u khi n ch a trong thanh ghi PIE2
- Thanh ghi PCON (8Eh): ch a các c hi u cho bi t tr ng thái các chreset c u khi n
1.1.4.2.2.Thanh ghi m
Các thanh ghi này có th c truy xu t tr c ti p ho c gián ti p thông
ch a các bi n s , h ng s , k t qu ho c các tham s
ph c v
1.1.4.3 Stack
Stack không n m trong b nh y b d li u mà là m t
u khi n c t vào trong stack Khi m t
Trang 18C n chú ý là không có c hi u nào cho bi t tr
không bi c khi nào stack tràn Bên c p l nh c u khi n
u khi n PIC16F877A có 5 c ng xu t nh p, bao g m PORTA, PORTB, PORTC, PORTD, PORTE
i v i các PORT và các thanh ghi
Trang 19sánh, ngõ vào analog ngõ vào xung clock c a Timer0 và ngõ vào c a b giao
ti p MSSP (Master Synchronous Serial Port)
sánh, b Timer1, b PWM và các chu n giao ti p n i ti p I2C, SPI, SSP, USART
- a ch 07h): ch a giá tr các pin trong PORTC
Trang 20ng là TRISE Các chân c a PORTE có ngõ vào analog Bên c PORTE
u khi n c a chu n giao ti p PSP
n PORTE g m:
- PORTE: ch a giá tr các chân trong PORTE
- u khi n xu t nh p và xác l p các thông s cho chu n giao
ti p PSP
1.1.6 Timer0
t trong ba b m ho c b nh th i c u khi n PIC16F877A Timer0 là b c k t n i v i b chia t n s(prescaler) 8 bit C u trúc c a Timer0 cho phép ta l a ch n xung clock tác
ng và c nh tích c c c a xung clock Ng t Timer0 s xu t hi n khi Timer0
cho phép ng t Timer0 tác ng, TMR0IF=0 không cho phép ng t Timer0 tác
kh i c a
Trang 21Hình 1.5: kh i c a Timer0.
Mu n Timer0 ho ng ch Timer ta clear bit TOSC
ng h (t n s vào Timer0 b ng ¼ t n s oscillator) Khi giá tr thanh ghi TMR0 t FFh tr v 00h, ng t Timer0 s xu t hi n Thanh ghi TMR0 cho
c giúp ta nh th m ng t Timer0 xu t hi n m t ng
Mu n Timer0 ho ng ch counter ta set bit TOSC
ng lên b c l y t chân RA4/TOCK1 Bit TOSE (OPTION_REG<4>) cho phép l a ch n c nh tác
s là c nh xu ng n u TOSE=1
Khi thanh ghi TMR0 b tràn, bit TMR0IF (INTCON<2>) s c set
ng t c a Timer0 C ng t này ph c xóa b
Trang 22c khi b m b u th c hi n l m Ng t Timer0
B chia t n s c chia s gi a Timer0 và WDT (Watchdog
c s d ng cho Timer0 thì WDT
ng c a prescaler Các bit PS2:PS0 (OPTION_REG<2:0>) xác
nh l i m t cách chi ti t v u khi n trên
Các l ng lên giá tr thanh ghi TMR0 s xóa ch ho ng
1.1.7 Timer1
Timer1 là b nh th i 16 bit, giá tr c a Timer1 s
thanh ghi (TMR1H:TMR1L) C ng t c a Timer1 là bit TMR1IF(PIR1<0>)
u khi n c a Timer1 s là TMR1IE (PIE<0>)
th i (timer) v i xung kích là xung clock c a oscillator (t n s c a timer b ng
¼ t n s c a oscillator) và ch m (counter) v i xung kích là xung ph n ánh các s ki n c m l y t bên ngoài thông qua chân
Trang 23ng v i vi c l a ch n ch ho ng là timer hay counter)
Timer1:
Hình 1.6: kh i c a Timer1
b i m t trong hai kh i CCP(Capture/Compare/PWM)
c set, Timer1 s l y xung clock t
Khi clear bit T1OSCEN Timer1 s l m t oscillator ho c t chân RC0/T1OSO/T1CKI
Timer1 có hai ch ng b (Synchronous) và b ng b
(T1CON<2>)
ch sleep và ng t do Timer1 t o ra khi b tràn có kh
Trang 24làm ngu n xung clock cho kh i CCP (Capture/Compare/Pulse width modulation).
Khi T1SYNC m vào Timer1 s ng b hóa v i xung
ch sleep
Các thanh ghi liên quan n Timer1 g m:
- a ch 0Bh, 8Bh, 10Bh, 18Bh): cho phép ng t ho ng (GIE và PEIE)
- PIR1 ( a ch 0Ch): ch a c ng t Timer1 (TMR1IF)
- a ch 8Ch): cho phép ng t Timer1 (TMR1IE)
- a ch 0Eh): ch a giá tr 8 bit th p c a b m Timer1
- a ch 0Eh): ch a giá tr 8 bit cao c a b m Timer1
- a ch 10h): xác l p các thông s cho Timer1
1.1.8 Timer2
Timer2 là b nh th c h tr b i hai b chia t n sprescaler và postcaler Thanh ghi ch a giá tr m c a Timer2 là TMR2 Bit cho phép ng t Timer2 tác ng là TMR2ON (T2CON<2>) C ng t c a Timer2 là bit TMR2IF (PIR1<1>) Xung ngõ vào (t n s b ng ¼ t n s
chia t n s prescaler 4 bit (v i các t s chia t n s
là 1:1, 1:4 ho u khi n b i các bit T2CKPS1:T2CKPS0(T2CON<1:0>))
c h tr thanh ghi PR2 Giá tr m trong thanh ghi
Trang 25- a ch 0Ch): ch a c ng t Timer2 (TMR2IF).
- a ch 11h): ch a giá tr m c a Timer2
- a ch 12h): xác l p các thông s cho Timer2
- a ch 92h): thanh ghi h tr cho Timer2
1.2 THI T B LCD
Ngày nay, th LCD (Liquid Crystal Display)
Trang 272 Vdd Chân c p ngu n cho LCD, khi thi t k m ch ta n i
chân này v i 5V c a m u khi n
+ ch ghi: D li u bus s c LCD chuy n vào (ch p nh n) thanh ghi bên trong nó khi phát hi n
m t xung (low-to-high transition) c a tín hi u chânE
ng c a bus d li i thông tin
+ Ch 8 bit: D li u c truy n trên c ng,
Trang 28rõ i dùng ch vi c cung c a ch l nh b ng cách n p vào thanh
p vào thanh ghi IR m t chu i 8 bit, chíp HD44780
s tra b ng mã l nh t a ch mà IR cung c p và th c hi n l nh
Trang 29- ch a d li ghi vào
li u t 2 vùng RAM này g i ra cho MPU ( ch
ghi thông tin vào DR, m ch n i bên trong chíp s t ng ghi thông tin này vào DDRAM ho c CGRAM Ho c khi thông tin v a ch c ghi vào IR,
d li u a ch này trong vùng RAM n i c a HD44780 s c chuy n ra
truy n cho MPU V y b u khi n chân RS và R/W chúng
ta có th chuy n qua l i gi a 2 thanh ghi này trong khi giao ti p v i MPU
B ng 1.2 tóm t t l i các thi t l i v i hai chân RS và R/W theo m
c c b n DB7 và giá tr c a b a
Trang 30-DB6 khi có thi
mà cao (not busy), cho nên
-5µS (ngay sau khi BF=1) tr khid
Hình 1.12: M i liên h gi a ch c a DDRAM và v trí hi n th c a LCD
Trang 31Hình 1.13: M i liên h gi a ch c a ROM và d li u t o m u kí t f) Vùng
mã
1.2.4 T p l nh c a LCD
Trang 32a 2 thanh ghi này
Hình 1.14: M i liên h gi a ch c a CGRAM, d li u CGRAM,
và mã kí t
Trang 33L nh Clear Display (xóa hi n th ) s ghi m t kho ng tr ng
(mã hi n th kí t 20H) vào t t c ô nh trong DDRAM,
b a ch AC=0, tr l i hi n th g c n u nó
u tiên), chReturn
Trang 34n N:
* Chú ý:
Không th hi n th ki u kí t m nh ki u hi n
Trang 35m c th p Cho nên, khi l u khi n, b n
ph i ki m tra c c khi ghi d li u vào LCD Khi
c c BF, giá tr c c xu t ra các bit [AC]
a ch c a CG hay DDRAM là tùy thu c vào l nh
các chân DBx t m ch ngoài s c LCD chuy n vào
Sau khi ghi, b a ch AC t ng
m 1 tùy theo thi t l p Entry mode i gian c p nh t AC không tính vào th i gian th c thi l nh
37µs tADD4µs
Trang 36c tính c a các chân giao ti p
cc =
B ng 1.5: Mi n làm vi ng
Trang 37m n
theo dõi các thông và thao tác
2.2 THI T K CÁC KH I
2.2.1 M
Trang 39- Nhi Kelvin T = Vout/(10mV).
T Kelvin ta có th C theo công th c:
T C)= T Kenvin) - 273,15
2.2.2 Kh i x lý
c em
PWM
Hình 2.4: nguyên lý c a PIC16F877A trong m ch
Trang 402.2.3 Kh i ADC (tích h p trong PIC16F877A)
ADC (Analog to Digital Converter) là b chuy i tín hi u gi a hai
d và s PIC16F877A có 8 ngõ vào analog (RA4:RA0 và RE2:RE0) Hi n th chu n VREF có th c l a ch n là VDD, VSS hay
hi n th chu c xác l p trên hai chân RA2 và RA3 K t qu chuy n
i t tín hi sang tín hi u s là 10 bit s
trong hai thanh ghi ADRESH : ADRESL Khi không s d ng b chuy i
khác Khi quá trình chuy i hoàn t t, k t qu s
+ Thi t l p các thông s cho b chuy i ADC:
- Ch n ngõ vào analog, ch n áp l y m u (d a trên các thông s c a thanh ghi ADCON1)
- Ch n kênh chuy i AD (thanh ghi ADCON0)
- Ch n xung clock cho kênh chuy i AD (thanh ghi ADCON0)
- Cho phép b chuy i AD ho ng (thanh ghi ADCON0)
+ Thi t l p các c ng t cho AD:
- Clear bit ADIF
- Set bit ADIE
- Set bit PEIE
- Set bit GIE
+ i cho t i khi quá trình l y m u hoàn t t
+ B u quá trình chuy i (set bit GO/DONE )
+ i cho t i khi quá trình chuy i hoàn t t b ng cách :
- Ki m tra bit GO/DONE N u GO/DONE =0, quá trình chuy
hoàn t t
Trang 42ch khu i hi u ch chuy n d n áp trong LM335 (Vout=2,73÷3,73V ng v i d i nhi 0C) thành d i t 0÷5V r ADC tích h p trong PIC16F877A.
Trang 43Hình 2.6: u raHình 2.6
Trang 44- ra
Duty = t1/T.100%
Trong kh u khi n, PIC16F87 u khi
t o xung PWM r m ch c u H tích h p trong IC Driver L293D
Trang 46cao (l n nh n nh t 1.2A nên r t thích h p
Hình 2.9: chân L293D
Trang 47n m t chi c s d ng r ng rãi trong các ng
d ng công nghi p vì nó cung c p công su i ho c moment không
Trang 48n ch y qua cu n dây qu n xung quanh m t lõi s t non,
c nh phía bên c b ng b i m t l ng lên, trong khi c nh
i di n l i b ng b ng m t l ng xu ng theo nguyên lí bàn tay trái
c a Fleming Các l ng quay lên cu n dây, và làm cho rotor quay
chuy n m n sau m i v trí ng v i ½ chu kì Khi m t c a cu n
theo quán tính
Trang 49n m t chi u l i ta có nhi u cu n dây n i ra
liên t c và h i theo các v trí khác nhau c a rotor
Trang 51ng s d u ch n áp c p cho
i, còn t không t ng thì tùy thu c vào giá tr u khi n
u khi n là m t h ng song song:
- M ch nguyên lí:
Trang 53Hình 2.15: m ch nguyên lý h th ng.
Trang 55#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz for PCM/PCH)
(>10mhz for PCD)
#FUSES NOPUT //No Power Up Timer
Trang 56#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#FUSES RESERVED //Used to set the reserved FUSE bits
delay_ms(150); // Ham delay chong rung phim
while(INPUT(PIN_D0)==0); // Cho den khi nut duoc tha ra
Mode++; // Tang mode len 1 de chuyen sang mode ke tiep
if(Mode==4) Mode=0; // Lap lai mode 0 khi da chuyen qua het cac mode
KeyPress=1;
Trang 58if (Read_T<Tdat) {Duty=0; On_Off=0;}
else {dT=Read_T-Tdat; On_Off=1;
if(Read_T<60) {output_bit(PIN_C6,0);
if(dT<=2) Duty=40;
else if(dT<=4) Duty=55;
else if(dT<=6) Duty=70;
else if(dT<=8) Duty=85;
else Duty=100;}
else{output_bit(PIN_C6,1);
if(dT<=2) Duty=40;
else if(dT<=4) Duty=55;
else if(dT<=6) Duty=70;
else if(dT<=8) Duty=85;
else Duty=100;}
}
}
/************************************************/
Trang 59void HienNhietDo() // Ham hien thi nhiet do do duoc tu LM335{
Trang 60LCD_Char(" DAT GIAM NHIET ");
T = Tdat; // Tach hang chuc va don vi cua tmin va hien thi ra LCDchuc = T/10 + 48;
Trang 61void SetTUp() // Ham cai dat nguong nhiet do max
case 0: HienNhietDo(); break;
case 1: SetTUp(); break;
Trang 62case 2: SetTDown(); break;
case 3: LCD_Cmd(0x80); LCD_Char(" CHE DO ON/OFF ");
if(On_Off==1) {LCD_Cmd(0xC0); LCD_Char(" ON ");}else {LCD_Cmd(0xC0); LCD_Char(" OFF ");} }
CLEAR_INTERRUPT(INT_TIMER1); // Xoa co ngat timer1
DISABLE_INTERRUPTS(GLOBAL); // Khong cho phep ngat khacCount++; // Sau moi ngat ta tang bien dem
if(Count==10) // khi cnt=10 thi da dem duoc 10 lan tuong ung voi 1s{
case 0: set_pwm2_duty(0); break;
case 40: set_pwm2_duty(102); break;
case 55: set_pwm2_duty(140); break;
case 70: set_pwm2_duty(178); break;
Trang 63case 85: set_pwm2_duty(217); break;
case 100: set_pwm2_duty(255); break;
lcd_init(); // Khoi tao LCD
SETUP_TIMER_1(T1_INTERNAL|T1_DIV_BY_8); // Cai dat timer1 voi bo chia tan 1:8
SETUP_TIMER_2(T2_DIV_BY_16,255,1);
SET_TIMER1(3035); // Gia tri khoi tao cho timer1 ( dem den 65535
Trang 64// voi clock 20Mhz chia 8 => mot ngat tuong ung voi 0.1s )ENABLE_INTERRUPTS(INT_TIMER1); // Cho phep ngat timer1
ENABLE_INTERRUPTS(GLOBAL); // Cho phep ngat toan cuc
while(KeyPress==0); // Lien tuc lap lai viec kiem tra xem nhiet do
} // co duoc doc hay ko va kiem tra phim bam
}