40
Ứng dụng Pic16F877A để đo và ổn định nhiệt độ bằng thuật toán PID ĐỀ TÀI NHÓM 5 “Ứng dụng Pic16F877A đo và ổn định nhiệt độ bằng thuật toán PID” MỤC LỤC Chương I: Tìm hiểu thiết bị. Chương II: Sơ đồ nguyên lý. Chương III: Lập trình CCS, kết nối PC và mô phỏng Proteus. Chương IV: Mô hình thực tế và chạy thử chương trình. Chương V: Kết luận. Thành viên trong nhóm: 1/ Nguyễn Anh Tuấn – 08D2 (nhóm trưởng) 2/ Nguyễn Duy Luân – 08D2 3/ Nguyễn Hữu Tâm – 08D2 4/ Nguyễn Văn Hiệu – 08D4 Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng Page 1

ON DINH NHIET DO BANG PID

Embed Size (px)

Citation preview

Page 1: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

Đ TÀI NHÓM 5Ề

“ ng d ng Pic16F877A đo và n đ nh nhi t đ b ng thu t toán PID”Ứ ụ ổ ị ệ ộ ằ ậ

M C L CỤ Ụ

Ch ng I:ươ Tìm hi u thi t b .ể ế ị

Ch ng II:ươ S đ nguyên lý.ơ ồ

Ch ng III:ươ L p trình CCS, k t n i PC và mô ph ng Proteus.ậ ế ố ỏ

Ch ng IV:ươ Mô hình th c t và ch y th ch ng trình.ự ế ạ ử ươ

Ch ng V:ươ K t lu n.ế ậ

Thành viên trong nhóm:

1/ Nguy n Anh Tu n – 08D2 (nhóm tr ng)ễ ấ ưở 2/ Nguy n Duy Luân – 08D2ễ 3/ Nguy n H u Tâm – 08D2ễ ữ 4/ Nguy n Văn Hi u – 08D4ễ ệ

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 1

Page 2: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

Ch ng IươTÌM HI U THI T BỂ Ế Ị

1/ PIC16F877A:

- Đây là vi đi u khi n thu c h PIC16Fxxx v i t p l nh g m 35 l nh có đề ể ộ ọ ớ ậ ệ ồ ệ ộ dài 14 bít.M i l nh đ u đ c th c thi trong m t chu kỳ xung clock.T c đỗ ệ ề ượ ự ộ ố ộ ho t đ ng t i đa cho phép là 20MHz v i m t chu kỳ l nh là 200ns.B nhạ ộ ố ớ ộ ệ ộ ớ ch ng trình 8Kx14 bít, b nh d li u 368x8 byte RAM và b nh d li uươ ộ ớ ữ ệ ộ ớ ữ ệ EEPROM v i dung l ng 256x8 byte.S PORT I/O là 5 v i 33 pin I/O.ớ ượ ố ớ

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 2

Page 3: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

- Các đ c tính ngo i vi bao g m các kh i ch c năng sau:ặ ạ ồ ố ứ

+ Timer0: b đ m 8 bít v i b chia t n s 8 bít.ộ ế ớ ộ ầ ố+ Timer1: b đ m 16 bít v i b chia t n s , có th th c hi n ch c năngộ ế ớ ộ ầ ố ể ự ệ ứ đ m d a vào xung clock ngo i vi ngay khi vi đi u khi n ho t đ ng chế ự ạ ề ể ạ ộ ở ế đ sleep.ộ+ Timer2: b đ m 8 bít v i b chia t n s , b postcaler.ộ ế ớ ộ ầ ố ộ+ Hai b Capture/ so sánh/ đi u ch đ r ng xung.ộ ề ế ộ ộ+ Các chu n giao ti p n i ti p SSP, SPI và I2C.ẩ ế ố ế+ Chu n giao ti p n i ti p USART v i 9 bít đ a ch .ẩ ế ố ế ớ ị ỉ+ C ng giao ti p song song PSP v i các chân đi u khi n RD, WR, CS bênổ ế ớ ề ể ở ngoài.- Các kênh Analog:+ 8 kênh chuy n đ i ADC 10 bít.Hai b so sánh.ể ổ ộ- Bên c nh đó là m t vài đ c tính khác c a vi đi u khi n nh :ạ ộ ặ ủ ề ể ư+ B nh flash v i kh năng ghi xóa đ c 100.000 l n.ộ ớ ớ ả ượ ầ+ B nh EEPROM v i kh năng ghi xóa đ c 1.000.000 l n.ộ ớ ớ ả ượ ầ+ D li u b nh EEPROM có th l u tr trên 40 năm.ữ ệ ộ ớ ể ư ữ+ Kh năng t n p ch ng trình v i s đi u khi n c a ph n m m.ả ự ạ ươ ớ ự ề ể ủ ầ ề+ Watchdog Timer v i b dao đ ng trong.ớ ộ ộ+ Ch c năng b o m t mã ch ng trình.ứ ả ậ ươ+ Ch đ Sleep.ế ộ+ Có th ho t đ ng v i nhi u d ng Oscillator khác nhau.ể ạ ộ ớ ề ạ

2/ C M BI N NHI T Đ LM35 DZ:Ả Ế Ệ Ộ

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 3

Page 4: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

- LM35 là m t c m bi n nhi t đ analog, nhi t đ đ c xác đ nh b ng cáchộ ả ế ệ ộ ệ ộ ượ ị ằ đo hi u đi n th ngõ ra c a LM35ệ ệ ế ủ :+ Đ n v nhi t đ : °C.ơ ị ệ ộ+ Có m c đi n áp thay đ i tr c ti p theo đ C (10mV/*C).ứ ệ ổ ự ế ộ+ Có hi u năng cao, công su t tiêu th là 60uAệ ấ ụ+ S n ph m không c n ph i canh ch nh nhi t đ khi s d ng.ả ẩ ầ ả ỉ ệ ộ ử ụ+ Đ chính xác th c t : 1/4°C nhi t đ phòng và 3/4°C ngoài kho ng -ộ ự ế ở ệ ộ ả55°C t i 150°Cớ .+ Chân +Vs là chân cung c p đi n áp cho LM35DZ ho t đ ng (4—20V).ấ ệ ạ ộ+ Chân Vout là chân đi n áp ngõ ra c a LM35DZ, đ c đ a vào chânệ ủ ượ ư Analog c a các b ADC.ủ ộ+ Chân GND là chân n i mass,l u ý c n n i mass chân này đ tránh làmố ư ầ ố ể h ng ỏc m bi n cũng nh làm gi m sai s trong quá trình đo.ả ế ư ả ố

3/ OPAM LM358:

- Tín hi u t c m bi n đ c đ a qua opam LM358 đ khu ch đ i lênệ ừ ả ế ượ ư ể ế ạ tr c khi đ a vào chân analog c a pic và qua đó nâng cao đ c đ chínhướ ư ủ ượ ộ xác h n.ơ

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 4

Page 5: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

4/ LED 7 ĐO N:Ạ- LED 7 đo n là m t công c thông d ng đ c dùng đ hi n th các thôngạ ộ ụ ụ ượ ể ể ị s d i d ng các s t 0 đ n 9.M c dù công c LCD giúp ta th hi n cácố ướ ạ ố ừ ế ặ ụ ể ệ thông s m t cách linh đ ng h n nh ng LED 7 đo n v n đ c s d ngố ộ ộ ơ ư ạ ẫ ượ ử ụ nhi u trong công ềnghi p do các u th c a nó nh : ít ch u nh h ng c a nhi t đ , d t oệ ư ế ủ ư ị ả ưở ủ ệ ộ ễ ạ s chú ý và góc nhìn r ng.ự ộ- LED 7 đo n bao g m 7 đo n LED đ c đánh d u là các kí t a, b, c, d, e, f,ạ ồ ạ ượ ấ ự g và m t d u ch m th p phân kí hi u là dp.Ta có th xem LED 7 đo n làộ ấ ấ ậ ệ ể ạ m t t h p g m 8 LED.8 LEDnày có m t đ u (Anode ho c Cathode) đ cộ ổ ợ ồ ộ ầ ặ ượ

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 5

Page 6: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

n i chung và đ c b trí theo m tqui t c nh t đ nh dùng đ hi n th cácố ượ ố ộ ắ ấ ị ể ể ị ch s th p phân.ữ ố ậ- Có hai lo i LED 7 đo n, đó là lo i Anode chung (c c Anode c a các LEDạ ạ ạ ự ủ đ c n i chung v i nhau) và lo i Cathode chung (c c Cathode c a các LEDượ ố ớ ạ ự ủ đ c n i chung v i nhau).ượ ố ớ- Tùy theo t ng lo i LED mà ta có các ph ng pháp đi u khi n các LEDừ ạ ươ ề ể trong t h p đó sáng t t m t cách thích h p.Đ i v i lo i Anode chung, m tổ ợ ắ ộ ợ ố ớ ạ ộ LED sẽ đ c b t sang n u m c logic đ a vào chân đi u khi n đo n LED đó là m cượ ậ ế ứ ư ề ể ạ ứ logic 0.Đ i v i lo i Cathode chung, m t LED sẽ đ c b t sang n u m cố ớ ạ ộ ượ ậ ế ứ logic đ a vào chân đi u khi n đo n LED đo là m c logic 1.ư ề ể ạ ứ

5/ TRANZITO PNP (A1015):

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 6

Page 7: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

- B ng thông s :ả ố

- Chân ngu n c a các led 7 đo n sẽ đ c đi u khi n b i các chân trên viồ ủ ạ ượ ề ể ở đi u khi n thông qua c c Base c a tranzito PNP.ề ể ự ủ

6/ QU T LÀM MÁT:Ạ- Tác d ng làm mát cho ngu n nhi t lúc c n thi t.ụ ồ ệ ầ ế- Thông s :ố+ Ngu n DC 12V.ồ+ Dòng đi n: 0.14A.ệ+ V b c b ng nh a.ỏ ọ ằ ự+ Kích th c 30mm x 30mm x 10mm.ướ

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 7

Page 8: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

7/ MOSFET IRF 540 + OPTO PC817:

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 8

Page 9: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

- Mosfet hay còn g i là tranzitor có c c cách ly, có tác d ng nh m t khóaọ ự ụ ư ộ K. Vi c kích đóng hay m khóa K tùy thu c đi n áp đ t vào chân G c aệ ở ộ ệ ặ ủ mosfet.- đây ta đ a xung PWM t chân RC1 c a Pic vào chân G c a mosfet đỞ ư ừ ủ ủ ể kích m nó, qua đó đi u ch nh đ c đi n áp cung c p cho đ ng c (qu tở ề ỉ ượ ệ ấ ộ ơ ạ làm mát), nghĩa là thay đ i đ c t c đ c a đ ng c .ổ ượ ố ộ ủ ộ ơ

- Dùng Opto PC817 đ cách ly quang gi a m ch đ ng l c và m ch đi uể ữ ạ ộ ự ạ ề khi n.ể

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 9

Page 10: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

8/ C NG COM VÀ IC MAX 232:Ổ

a/ C ng COM:ổ- Giao ti p gi a PIC và PC thông qua c ng n i ti p hay còn g i là c ng COMế ữ ổ ố ế ọ ổ theo chu n giao ti p RS232.ẩ ế- C ng COM có 2 d ng: đ u n i DB25 ( 25 chân ) và DB9 ( 9 chân ) đ c môổ ạ ầ ố ượ t nh b ng sau:ả ư ả

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 10

Page 11: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

- C ng n i ti p đ c s d ng đ truy n d li u hai chi u gi a máy tính vàổ ố ế ượ ử ụ ể ề ữ ệ ề ữ ngo i vi, nó có các u đi m sau:ạ ư ể+ Kho ng cách truy n xa h n so v i truy n song song.ả ề ơ ớ ề

+ S dây k t n i ít.ố ế ố+ Có th truy n không dây dùng h ng ngo i.ể ề ồ ạ+ Có th ghép n i v i VĐK hay PLC.ể ố ớ+ Cho phép n i m ng.ố ạ+ Có th tháo l p thi t b trong lúc máy tính đang làm vi c.ể ắ ế ị ệ+ Có th cung c p ngu n cho các m ch đi n đ n gi n.ể ấ ồ ạ ệ ơ ả- Các thi t b ghép n i chia làm 2 lo i:ế ị ố ạ+ DCE: là các thi t b trung gian nh MODEM.ế ị ư+ DTE: là các thi t b ti p nh n hay truy n d li u nh PC, PLC, VĐK.ế ị ế ậ ề ữ ệ ư+ Vi c trao đ i tín hi u thông th ng qua 2 chân RDX (nh n) và RTX (g i).ệ ổ ệ ườ ậ ử- Tín hi u truy n theo chu n RS232:ệ ề ẩ+ Chu n RS232 truy n tín hi u v i các t c đ thông d ng là: 1200 bps,ẩ ề ệ ớ ố ộ ụ 4800 bps, 9600 bps, 19200 bps.+ Đ nh d ng khung truy n chu n RS232:ị ạ ề ẩ

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 11

Page 12: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

Khi không truy n d li u, đ ng truy n sẽ tr ng thái mark ( đi nề ữ ệ ườ ề ở ạ ệ áp -10V).

Khi b t đ u truy n, DTE sẽ đ a ra xung Start ( space :10V ) và sau đóắ ầ ề ư truy n l n l t t D0 -> D7 và Parity, cu i cùng là xung Stop ( mark:ề ầ ượ ừ ố -10V ) đ khôi ph c l i tr ng thái đ ng truy n.Ví d truy n ký tể ụ ạ ạ ườ ề ụ ề ự A:

Các đ c tính kỹ thu t c a chu n RS232:ặ ậ ủ ẩ

b/ IC MAX 232:

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 12

Page 13: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

- IC MAX 232 là IC chuyên dùng trong giao ti p n i ti p v i PC.Nó có 2 bế ố ế ớ ộ đ m và 2 b nh n.Đ ng d n đi u khi n l i vào CTS, đi u khi n vi cệ ộ ậ ườ ẫ ề ể ố ề ể ệ xu t d li u c ng n i ti p khi c n thi t, đ c n i v i chân 9.Chân RTSấ ữ ệ ở ổ ố ế ầ ế ượ ố ớ (chân 10) đ c n i v i đ ng d n b t tay đ đi u khi n v i quá trìnhượ ố ớ ườ ẫ ắ ể ề ể ớ nh n.Th ng thì các đ ng d n b t tay đ c n i v i c ng n i ti p quaậ ườ ườ ẫ ắ ượ ố ớ ổ ố ế các c u n i, đ khi không dùng đ n n a có th đ h m ch các c uầ ố ể ế ữ ể ể ở ạ ầ này.Cách truy n d li u đ n gi n nh t là ch dùng 3 chân RTX, RDX vàề ữ ệ ơ ả ấ ỉ GND.

9/ M T S LINH KI N KHÁC:Ộ Ố Ệ

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 13

Page 14: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

Đi n trệ ở

Nút b m Th ch anh 12MHzấ ạ

T đi n 33pF Jack ngu n DCụ ệ ồ

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 14

Page 15: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

Cáp n iố

Bóng đi n 60W (làm ngu n nhi t) Led đ nệ ồ ệ ơ

CH NG IIƯƠS Đ NGUYÊN LÝƠ Ồ

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 15

Page 16: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

CH NG IIIƯƠL P TRÌNH CCS, K T N I PC VÀ MÔ PH NG PROTEUSẬ Ế Ố Ỏ

1/ ĐO NHI T Đ :Ệ Ộ- S d ng c m bi n LM35 v i đ phân gi i là 10 mv/ử ụ ả ế ớ ộ ả 0C, d i nhi t đ đoả ệ ộ đ c t -50 đ n 150 ượ ừ ế 0C.- Đ đ c đ c giá tr ADC ta dùng hàm read_adc( );ể ọ ượ ị- T giá tr ADC đ c đ c ta quy đ i ng c l i nhi t đ :ừ ị ọ ượ ổ ượ ạ ệ ộ+ ch n ch đ ADC 10 bít (nghĩa là ADC có giá tr t 0 đ n 1023).ọ ế ộ ị ừ ế+ ta có: read_adc( ) =1023 ---------------- ng v i đi n áp 5 (V)ứ ớ ệ read_adc( )=x ---------------- ng v i đi n áp (x*5)/1023 (V)ứ ớ ệ+ m t khác:ặ c 10 (mv) ----------------ứ ng v i 1 ứ ớ 0Cv y (x*5*10^3)/1023 (mv) ----------------ậ ng v i (x*5*10^3)/(1023*10)ứ ớ =0.489x 0C+ ch ng nhi u:ố ễ* l c s :ọ ốadc_cu=0;anpha=k;Vòng l pặ{x=read_adc( ); adc_moi=anpha*adc_cu+ (1-anpha)*x; adc_cu=adc_moi;}* l c nhi u vi sai:ọ ễadc_tong=0;Vòng l pặ{adc_tong=adc_tong+read_adc( );}adc_tb=adc_tong/(s vòng l p);ố ặ

2/ HI N TH RA LED 7 ĐO N:Ể Ị Ạ- Dùng 4 led 7 đo n đ hi n th nhi t đ :ạ ể ể ị ệ ộ+led 1 và led 2 hi n th nhi t đ hàng ch c và hàng đ n v (t 0 đ n 99 ể ị ệ ộ ụ ơ ị ừ ế 0C).+led 3 và led 4 hi n th ký t ể ị ự 0C.- Dùng thu t toán quét led:ậVòng l pặ{

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 16

Page 17: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

HC=temp/10;HDV=temp%10;Xu t d li u [HC];ấ ữ ệ

B t ngu n led 1;ậ ồDelay;T t ngu n led 1;ắ ồXu t d li u [HDV];ấ ữ ệB t ngu n led 2;ậ ồDelay;T t ngu n led 2;ắ ồXu t ký t “đ ”;ấ ự ộB t ngu n led 3;ậ ồDelay;T t ngu n led 3;ắ ồXu t ký t “C”;ấ ựB t ngu n led 4;ậ ồDelay;T t ngu n led 4;ắ ồ}

3/ TÍNH Đ R NG XUNG B NG THU T TOÁN PID:Ộ Ộ Ằ Ậ- Trong mi nề  th iờ  gian, bộ đi uề  khi nể  PID đ cượ  mô tả b ngằ  mô hình vàora:

Trong đó: e(t) là tín hi uệ  ngõ vào, u(t) là tín hi uệ  ngõ ra c aủ  bộ đi uề  khi n.ể  

Tuy nhiên, đ iố  v iớ  Vi Đi uề  khi nể  nói chung, vi cệ  tính toán các thành ph nầ   P,I,D‐ nói cách khác là tính các tích phân hay đ oạ  hàm trong công th cứ  trên là không th cự  hi nệ  đ c.ượ  Lý do: CPU không thể tính toán chính xác t iớ  m cứ  Δt =0nghĩa là không liên t c.ụ  Do đó, ta chỉ có thể tính toán g nầ  đúng b ngằ  cách ta choΔ t= ε r tấ  nhỏ nh ngư  l nớ  h nơ  0.   Để tìm hệ th cứ  PID r iờ  r cạ  ,ta xét đồ thị sau đây: 

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 17

Page 18: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

- Khi đó công th c trên đ c vi t l i nh sau:ứ ượ ế ạ ư

- Đ i t ng đi u khi n là đ ng c DC 12V.ố ượ ề ể ộ ơ- Các ngõ vào và ra c aủ  bộ đi uề  khi nể  PID như sau: Ngõ vào: e= nhi t đệ ộ đ tặ  (tem_dat) ‐ nhiệt độ hiện tại (tem_htai).Ngõ ra: u = %duty cycle.- Thu t toán PID:ậKi: h s tích phân.ệ ốKp: h s t l .ệ ố ỉ ệKd: h s vi phân.ệ ốe2: sai l ch nhi t đ hi n t i.ệ ệ ộ ệ ạe1: sai l ch nhi t đ quá kh ngay tr c đó.ệ ệ ộ ứ ướe_sum: t ng các sai l ch t lúc đ u đ n th i đi m hi n t i.ổ ệ ừ ầ ế ờ ể ệ ạe_del: đ bi n thiên sai l ch nhi t đ .ộ ế ệ ệ ộduty: đ r ng xung PWM (theo %).ộ ộTa có:{e2=tem_dat – tem_htai;e_sum= e2 + e1;e_del= e2 – e1;e1=e2;duty=duty + Kp*e2 + Ki*e_sum + Kd*e_del;}Xu t xung PWM v i duty v a tính đ c trên.ấ ớ ừ ượ ở

4/ PH NG PHÁP ĐI U XUNG PWM:ƯƠ Ề- Ph ng pháp đi u ch PWM có tên ti ng anh là Pulse Width Modulationươ ề ế ế là ph ng pháp đi u ch nh đi n áp ra t i hay nói cách khác là ph ngươ ề ỉ ệ ả ươ pháp đi u ch d a trên s thay đ i đ r ng c a chu i xung vuông d nề ế ự ự ổ ộ ộ ủ ỗ ẫ đ n s thay đ i đi n áp ra.ế ự ổ ệ

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 18

Page 19: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

- Các PWM khi bi n đ i thì có cùng 1 t n s và khác nhau v đ r ng c aế ổ ầ ố ề ộ ộ ủ s n d ng hay ho c là s n âm.ườ ươ ặ ườ- Đây là ph ng pháp đ c th c hi n theo nguyên t c đóng ng t ngu nươ ượ ự ệ ắ ắ ồ c i t i và m t cách có chu kì theo lu t đi u ch nh th i gian đóng c t.Ph nớ ả ộ ậ ề ỉ ờ ắ ầ t th c hi n nhi n v đó trong m ch các van bán d n.ử ự ệ ệ ụ ạ ẫ

- Giá tr đi n áp trung bình đ t lên t i:ị ệ ặ ảUd=Umax*(t0/T) V hay Ud=Umax*DV i D=t0/T là h s đi u ch nh và tính theo %.ớ ệ ố ề ỉ- Cách xu t xung PWM trong CCS:ấ// cài đ t t n s đi u xung:ặ ầ ố ề+ setup_timer_2 (mode,period,postscale);// cài đ t chân RC2 ho c RC1 làm chân xu t xung PWM.ặ ặ ấ+ setup_ccp1(ccp_pwm);+ setup_ccp2(ccp_pwm);// cài đ t đ r ng xung:ặ ộ ộ+ set_pwm1_duty(value);+ set_pwm2_duty(value);

5/ CH NG TRÌNH CCS:ƯƠ// De tai: do va on dinh nhiet do bang thuat toan PID===============#include <16F877A.h>#fuses XT,NOWDT,NOLVP,NOPROTECT,HS#include <DEF_877A.h>#device *=16 adc=10#use delay(clock=12M)#use rs232 (baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7)// Toc do baud=9600, khong bit chan le, chan truyen RC6, chan nhan RC7==

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 19

Page 20: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

#define TANG RD2#define GIAM RD3#define ENTER RD1// Khai bao bien toan cuc===============================Byte const maled[ ]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};int8 mode,i,j,k,p,tem_dat,tem_do,HC,HDV,tam_i,tam_p,tam_d;float adc_tong,adc_tb,adc_cu,adc_moi,TPe2,TPe1,Out_put;signed int8 e2,e1;

long int16 value;float Kp;float Ki;float Kd;//e2: sai so nhiet do hien tai;//e1: sai so nhiet do qua khu ngay truoc do;//tem_dat: nhiet do dat;//tem_do: nhiet do hien tai;//Ki: he so tich phan;//Kp: he so ti le;//Kd: he so vi phan;// Khai bao ngat timer1=================================#INT_TIMER1void Ngat_TIMER1( ){if(mode==1){set_timer1(24280);k++;if(k==2){k=0;printf("%u",tem_do);}}}// Khai bao ngat TIMER0===============================#INT_TIMER0void Ngat_TIMER0( ){if(mode==1){set_timer0(21);// T=256*(256-21)*4/12 ~ 20msj++;

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 20

Page 21: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

if(j==5){j=0;Ki=(tam_i)*0.1;Kp=(tam_p)*0.5;Kd=(tam_d)*0.5;e2=tem_do-tem_dat;TPe2=Ki*(e2+e1)*0.05;

Out_put=Out_put+Kp*e2+TPe2+TPe1+Kd*(e2-e1)*10;TPe1=TPe2;e1=e2;if(Out_put<0)value=0;//if((Out_put>=0)&&(Out_put<=150))//value=Out_put;//if(Out_put>150)//value=150;elsevalue=Out_put;set_pwm2_duty(value);}}elseset_pwm2_duty(0);}// Khai bao ngat truyen thong RS232========================// San sang nhan data tu RS232===========================#INT_RDAvoid ngat_RDA ( ){p++;if(p==1)tem_dat=getc( );if(p==2)tam_i=getc( );if(p==3)tam_p=getc( );if(p==4)tam_d=getc( );if(p==5)mode=getc( );if(p==6)

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 21

Page 22: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

{mode=getc( );p=0;Out_put=0;}}// Khai bao chuong trinh con=============================void CAI_DAT_NHIET_DO( )void main( ){

TrisD=0x0E;TrisB=0x00;PortD=0xF0;// Cai dat ADC=====================================setup_adc_ports(AN0);setup_adc(ADC_CLOCK_INTERNAL);set_adc_channel(0);Delay_ms(10);// Cai dat ngat TIMER1================================enable_interrupts(INT_TIMER1);setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);enable_interrupts(GLOBAL);set_timer1(24280) ;set_timer1(6);// Cai dat TIMER0===================================enable_interrupts(INT_TIMER0);setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);enable_interrupts(GLOBAL);set_timer0(21);// Cai dat PWM===========================================// F(x)=F(osc)/(4*mode*(period+1)))//Duty_cycle=value/(period+1)// Bam xung 5KHz;Setup_timer_2(T2_DIV_BY_4,149,1);Setup_ccp2(CCP_PWM);set_pwm2_duty(0);// Cai dat ngat truyen thong RS232==========================enable_interrupts(INT_RDA);enable_interrupts(GLOBAL);mode=0;tem_dat=0;adc_cu=0;e1=0;TPe1=0;j=0;Out_put=0;j=0;k=0;p=0;tem_do=0;

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 22

Page 23: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

tam_i=0;tam_p=0;tam_d=0;while(1){// Cai dat nhiet do====================================if(mode==0)

CAI_DAT_NHIET_DO ( );// PID on dinh nhiet do=================================if(mode==1){// Chong nhieu vi sai khi lay mau===========================adc_tong=0;for(i=0;i<50;i++)

{adc_tong=adc_tong+read_adc();Delay_us(10);}adc_tb=adc_tong*0.02;// Loc so=========================================adc_moi=0.2*adc_cu+0.8*adc_tb;adc_cu=adc_moi;tem_do=adc_cu*0.097752;HC=tem_do/10;HDV=tem_do%10;PortB=maled[HC];RD7=0;Delay_ms(2);RD7=1;PortB=maled[HDV];RD6=0;Delay_ms(2);RD6=1;PortB=0x1C;RD5=0;Delay_ms(2);RD5=1;PortB=0x46;RD4=0;Delay_ms(2);RD4=1;

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 23

Page 24: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

}}}// Chuong trinh con===================================// Cai dat nhiet do====================================

void CAI_DAT_NHIET_DO ( ){//Enter==========================================if(ENTER==0){While(ENTER==0){}Delay_ms(100);mode++;}//Phim tang=======================================if(TANG==0){while(TANG==0){}Delay_ms(100);tem_dat=tem_dat+10;if(tem_dat==100)tem_dat=0;}// Phim giam===========================================if(GIAM==0){while(GIAM==0){}Delay_ms(100);tem_dat--;if(tem_dat==255)tem_dat=99;}// Xuat ra led 7 doan===========================================HC=tem_dat/10;HDV=tem_dat%10;PortB=maled[HC];RD7=0;Delay_ms(2);RD7=1;

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 24

Page 25: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

PortB=maled[HDV];RD6=0;Delay_ms(2);RD6=1;PortB=0x1C;RD5=0;Delay_ms(2);RD5=1;PortB=0x46;RD4=0;Delay_ms(2);RD4=1;}

6/ GIAO TI P V I MÁY TÍNH QUA GIAO DI N VISUAL BASIC:Ế Ớ Ệ

- Đ giao ti p thu n ti n v i máy tính ta dùng giao di n Visual basic 6.0.ể ế ậ ệ ớ ệ+ Vi c truy n thông n i ti p trên Windows đ c th c hi n qua m t ệ ề ố ế ượ ự ệ ộActiveX có s n là Microsoft Comm Control.ActiveX này đ c l u tr trong ẵ ượ ư ữfile MSCOMM32.OCT.Quá trình này có 2 kh năng th c hi n đi u khi n ả ự ệ ề ểtrao đ i thông tin:ổ

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 25

Page 26: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

Đi u khi n s ki n: là ph ng pháp t t nh t trong quá trình đi u ề ể ự ệ ươ ố ấ ềkhi n trao đ i thông tin.Quá trình đi u khi n đ c th c hi n qua sể ổ ề ể ượ ự ệ ự OnComm.

H i vòng: đ c th c hi n thông qua vi c ki m tra các giá tr c a ỏ ượ ự ệ ệ ể ị ủthu c tính CommEvent sau m t chu kỳ nào đó đ xác đ nh xem có s ộ ộ ể ị ựki n nào x y ra hay không.ệ ả

- Ch ng trình VB:ươPrivate Sub Cmd_Reset_Click( )Dim D As ByteD = 0

MSComm1.Output = Chr(D)Txt_nd_dat.Text = "0"Txt_nd_do.Text = "0"'Txt_Ki.Text = "0"'Txt_Kp.Text = "0"'Txt_Kd.Text = "0"End Sub

Private Sub Cmd_Enter_Click( ) Dim X As ByteDim Y As ByteDim Z As ByteDim B As ByteDim C As ByteX = Val(Txt_nd_dat.Text)Y = Val(Txt_Ki.Text)Z = Val(Txt_Kp.Text)B = Val(Txt_Kd.Text)C = 1MSComm1.Output = Chr(X)

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 26

Page 27: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

MSComm1.Output = Chr(Y)MSComm1.Output = Chr(Z)MSComm1.Output = Chr(B)MSComm1.Output = Chr(C)End Sub

Private Sub Cmd_Exit_Click( )EndEnd Sub

Private Sub Form_Load( )MSComm1.Settings = "9600,N,8,1"MSComm1.CommPort = 1MSComm1.RThreshold = 1MSComm1.SThreshold = 1MSComm1.InputMode = comInputModeTextMSComm1.InputLen = 0MSComm1.Handshaking = comNoneMSComm1.InBufferSize = 1024MSComm1.OutBufferSize = 1024

MSComm1.PortOpen = True

End Sub Private Sub MSComm1_OnComm( )

Dim A As ByteIf MSComm1.CommEvent = comEvReceive ThenA = MSComm1.InputTxt_nd_do.Text = Str(A)End If

End Sub

7/ M T S HÌNH NH MÔ PH NG:Ộ Ố Ả Ỏ- Test ph n quét phím đ đ t nhi t đ c n n đ nh:ầ ể ặ ệ ộ ầ ổ ịNút: RESET đ ch y l i ch ng trình.ể ạ ạ ươ INC đ tăng nhi t đ đ t.ể ệ ộ ặ DEC đ gi m nhi t đ đ t.ể ả ệ ộ ặ ENTER đ xác nh n nh p thành công.ể ậ ậ- Test ph n đo nhi t đ t c m bi n và hi n th lên led 7 đo n:ầ ệ ộ ừ ả ế ể ị ạ

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 27

Page 28: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 28

Page 29: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

- Test ph n xu t xung PWM t n s 5KHz v i đ r ng xung là 50%:ầ ấ ầ ố ớ ộ ộ

CH NG IVƯƠMÔ HÌNH TH C T VÀ CH Y TH CH NG TRÌNHỰ Ế Ạ Ử ƯƠ

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 29

Page 30: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

( Kh i m ch ngu n )ố ạ ồ

( Kh i x lý trung tâm )ố ử

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 30

Page 31: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

( M ch đ ng l c )ạ ộ ự

( Ngu n nhi t + c m bi n + qu t làm mát )ồ ệ ả ế ạ

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 31

Page 32: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

( Mô hình nhìn t bên c nh )ừ ạ

( Mô hình nhìn t trên xu ng )ừ ố

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 32

Page 33: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

( Mô hình nhìn đ i di n )ố ệ

( Hình nh mô ph ng )ả ỏ

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 33

Page 34: ON DINH NHIET DO BANG PID

ng d ng Pic16F877A đ đo và n đ nh nhi t đ b ng thu t toán PIDỨ ụ ể ổ ị ệ ộ ằ ậ

CH NG VƯƠK T LU NẾ Ậ

u đi m:Ư ể- Ph n c ng thi t k nh g n và đ c l p ráp theo ki u module nên dầ ứ ế ế ỏ ọ ươ ắ ể ễ dàng thay th cũng nh ki m tra các linh ki n trong m ch.ế ư ể ệ ạ- Ph n m m ch y khá n đ nh, sai l ch nhi t đ n m trong kho ng choầ ề ạ ổ ị ệ ệ ộ ằ ả phép.- Có th ng d ng đ c trong th c t ( n đ nh nhi t đ trong các lò pể ứ ụ ượ ự ế ổ ị ệ ộ ấ tr ng, trong các kho b o qu n nông s n…).ứ ả ả ảNh c đi m:ượ ể- Th i gian xác l p c a h th ng còn l n, ch a n đ nh nhi t đ m t cáchờ ậ ủ ệ ố ớ ư ổ ị ệ ộ ộ tuy t đ i do ch a ch n đ c các h s Ki, Kp,Kd c a b đi u khi n PIDệ ố ư ọ ượ ệ ố ủ ộ ề ể m t cách chính xác.ộ

Nguy n Anh Tu n - 08D2 – Bách Khoa Đà N ngễ ấ ẵ Page 34