Temperature control design project Temperature control design project Temperature control design project Temperature control design project Temperature control design project Temperature control design project Temperature control design project Temperature control design project Temperature control design project Temperature control design project Temperature control design project Temperature control design project Temperature control design project Temperature control design project Temperature control design project Temperature control design project Temperature control design project Temperature control design project Temperature control design project Temperature control design project Temperature control design project Temperature control design project Temperature control design project
Trang 1BỘ MÔN : ĐIỀU KHIỂN TỰ ĐỘNG ––––––––––––––o0o––––––––––––––
Trang 2LỜI NÓI ĐẦU
Đây là báo cáo đồ án môn học 1 đề tài Đo và điều khiển nhiệt
độ dùng vi điều khiển PIC16F887A bằng thuật toán PID Với thời
gian và kiến thức hạn chế của sinh viên thực hiện, đồ án chỉ mới dừng
lại ở việc thực hiện yêu cầu đề tài ở mức độ đơn giản
Lẽ tất nhiên, đồ án này không thể tránh khỏi nhiều thiếu sót,
em rất mong nhận được sự đóng góp ý kiến từ phía các thầy cô để
hoàn chỉnh đồ án cũng như phục vụ cho việc thực hiện đồ án môn học
2 & luận văn tốt nghiệp sau này
Cuối cùng, em xin bày tỏ lòng biết ơn sâu sắc đến giáo viên hướng dẫn, TS Huỳnh Thái Hoàng, vì sự giúp đỡ, hướng dẫn tận tình
của thầy trong suốt thời gian qua
Hồ Tấn Thuận
Tp HCM, ngày 04 tháng 01 năm 2009
Trang 3MỤC LỤC
LỜI NÓI ĐẦU ……… … 1
MỤC LỤC ……… … 2
CHƯƠNG 1 : TỔNG QUAN VỀ BỘ ĐIỀU KHIỂN PID ……… 3
CHƯƠNG 2 : SƠ ĐỒ NGUYÊN LÝ ……… 5
2.1 SƠ ĐỒ KHỐI VÀ VI ĐIỀU KHIỂN ……… … 6
2.2 KHỐI MẠCH NHẬP VÀ HIỂN THỊ ……… … 6
2.3 KHỐI KHUẾCH ĐẠI VÀ BÙ NHIỆT CẢM BIẾN……… 8
2.4 MẠCH CÔNG SUẤT ……… 10
2.5 MẠCH NGUỒN……….… 11
CHƯƠNG 3 : THUẬT TOÁN PID ĐIỀU KHIỂN NHIỆT ĐỘ…… … 13
3.1 THUẬT TOÁN PID VÀ RỜI RẠC HOÁ……… … 14
3.2 ANTI – WINDUP ……… … 15
3.3 XÁC ĐỊNH THÔNG SÔ BỘ ĐIỀU KHIỂN ……….… 16
CHƯƠNG 4 : LƯU ĐỒ GIẢI THUẬT ……… … 18
4.1 CHƯƠNG TRÌNH CHÍNH ……… … 19
4.2 CHƯƠNG TRÌNH NGẮT ……….… 20
4.3 CHƯƠNG TRÌNH CON……….… 22
CHƯƠNG 5 : KẾT QUẢ THỰC HIỆN ……… 28
Tài liệu tham khảo ……….… 30
Trang 4CHƯƠNG 1 : TỔNG QUAN VỀ BỘ ĐIỀU KHIỂN PID
Trang 5TỔNG QUAN VỀ BỘ ĐIỀU KHIỂN PID
Bộ điều khiển PID thuộc nhóm các bộ điều khiển kinh điển Mặc dù hiện nay ra đời nhiều phương pháp điều khiển mới như điều khiển thích nghi, điều khiển mờ, mạng-nơron và nhiều thuật toán điều khiển phi tuyến, nhưng PID vẫn hiện đang được dùng rất nhiều trong các bài toán điều khiển (nhiệt độ, tốc độ, điều khiển bám, ) vì tính đơn giản trong thiết kế và chất lượng điều khiển khá tốt
Hàm truyền của bộ điều khiển PID :
định các thông số K P , K I , K D (có nhiều phương pháp để xác định bộ thông số này)
Khuyết điểm của bộ điều khiển PID : đối tượng được điều khiển phải là cố định, các thông số của đối tượng không thay đổi
Trang 6CHƯƠNG 2 :
SƠ ĐỒ NGUYÊN LÝ
Trang 72.1 SƠ ĐỒ KHỐI VÀ VI ĐIỀU KHIỂN :
2.1.1 Sơ đồ khối của hệ thống :
2.1.2 Vi điều khiển :
Vi điều khiển được sử dụng trong đồ án này là PIC16F877A Đây là 1 vi điều khiển 8 bit,
có kiến trúc RISC, dòng Mid-range của hãng Microchip Technology Tập lệnh gồm 35
lệnh (14–bit opcode)
PIC16F877A có tích hợp sẵn một số ngoại vi như sau :
– 2 Timer 8 bit và 1 Timer 16 bit
– Module Capture, Compare và PWM
– Port nối tiếp đồng bộ
Mạch khuếch đại và bù nhiệt
Trang 833 34 35 36 37 38 39 40 15
16 17 18 23 24 25 26
19 20 21 22 27 28 29 30 13
14
32 11 31
12
1
8 9 10
RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+
RA4/T0CKI/C1OUT RA5/AN4/SS*/C2OUT
RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT
RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 OSC1/CLKIN
OSC2/CLKOUT
VDD VDD VSS
VSS
MCLR*/VPP
RE0/RD*/AN5 RE1/WR*/AN6 RE2/CS*/AN7
F PORTD<5>
SW3 SW4 4.7k
PORTD<7>
D DOT
PORTD<6>
SW5
C
10MHz CRY STAL
Q3
A1015
SW1 VCC
D 1k
DOT A
SW1 G
Q4
A1015
SW1 C
PORTD<4>
4.7k
A
SW3
Trang 9đó sẽ nhấp nháy trong lúc đặt nhiệt độ)
– Nút nhấn SW2 : (UP) Tăng hàng đơn vị của nhiệt độ đặt lên 1(nếu SW1 chọn hàng đơn vị) Tăng hàng chục của nhiệt độ đặt lên 1 (nếu SW1 chọn hàng chục), tương tự cho hàng đơn vị và hàng thập phân (riêng hàng thập phân tăng 0.5 độ mỗi lần ấn)
– Nút nhấn SW3 : (DOWN) Giảm hàng đơn vị của nhiệt độ đặt xuống 1 (nếu SW1 chọn hàng đơn vị) Tương tự cho hàng chục, đơn vị và hàng thập phân (riêng hàng thập phân giảm 0.5 độ mỗi lần ấn)
– Nút nhấn SW4 : (ENTER/STOP) Xác nhận nhiệt độ cài đặt và chạy chương trình Nếu
hệ thống đang chạy, ấn SW4 1 lần nữa thì chương trình sẽ dừng và chờ cài đặt lại nhiệt độ
để chạy tiếp
2.2.3 Giá trị các điện trở :
– Các chân của vi điều khiển có nối với nút nhấn được kéo lên nguồn qua điện trở 10k – Dòng qua mỗi đoạn của các LED 7 đoạn trong khoảng 15 – 20mA Vì vậy, khoảng giá trị điện trở nối giữa các LED 7 đoạn và vi điều khiển là 250 – 333Ω (nguồn cung cấp các LED là 5V) Chọn : 330Ω
– Tính toán điện trở nối giữa vi điều khiển và cực B của các Transistor A1015 :
R2
Vcc
VI DIEU KHIEN
Q1 A1015 4.7k
LED 7 DOAN
R1 1k
+ Ngõ ra mức 0 của vi điều khiển : IOL = 8.5mA, VOL = 0.6V
+ Ta thiết kế sao cho khi ngõ ra của vi điều khiển mức 1 : transistor A1015 không dẫn, khi ngõ ra vi điều khiển mức 0, A1015 dẫn ở chế độ bão hòa (để VC xấp xỉ 5V) Khi đó :
I CE I B I OL
OL CC
R
V V
+ Thay ICE = 15 2mA
330
5
, = 180, VCC= 5V, VOL = 0.6V, IOL = 8.5mA ta có :
436 ≤ R1 ≤ 44k Chọn R1 = 1k
– Điện trở hồi tiếp R2 chọn 4.7k
2.3 MẠCH KHUẾCH ĐẠI VÀ BÙ NHIỆT CHO CẢM BIẾN :
2.3.1 Sơ đồ nguyên lý :
Trang 10R8 22k
R7 100
RA0/AN0
-5V
Rf 1 18k R3
3.3k
-5V
+
- U4 OP07
-3 2
-3 2
R10 1k
-5V +5V
+ U2 OP07
-3 2
Rf 2 10k
R5 10k
+5V
R4
2.2k
R9 10k
3 2
6
2.3.2 Các linh kiện chính được sử dụng :
+ Thermocouple loại K có độ nhạy S = 40µV/oC, tín hiệu điện áp giữa 2 đầu thermocouple có giá trị : vthermocouple = S(Td – Ta), trong đó Td là nhiệt độ của đầu nóng thermocouple (Td = nhiệt độ cần đo), Ta là nhiệt độ của đầu lạnh thermocouple (Ta = nhiệt
độ môi trường)
+ IC cảm biến nhiệt độ LM335 dùng để đo nhiệt độ môi trường Ta LM335 tạo ra điện áp
có giá trị : vLM335 = 2.73 + KTa, với K = 10mV/oC và Ta được tính theo độ C
+ OPAMP OP07 có điện áp offset rất thấp OPAMP U1, U2, U3 được dùng làm bộ đệm điện áp OPAMP U4 khuếch đại tín hiệu từ thermocouple, OPAMP U5 khử thành phần 2.73V trong điện áp ra của LM335, bù nhiệt môi trường, và khuếch đại tín hiệu OPAMP U6 đệm trở kháng, để trở kháng ra của mạch khuếch đại và bù nhiệt này rất nhỏ
Trang 11R
v R
v
) –
3
2 1
)(
25073
.2
R
T T S R
1010
1040250250
3 6
R
Chọn R6 = R10 = 1k
v4 = (1 +
3
2 1
25073.2
R
ST R
d
3
2 1
R –
3
2 1
hệ số khuếch đại 39.1 mV/oC Ngõ ra này được nối vào chân RA0/AN0 của vi điều khiển
2.4 MẠCH CÔNG SUẤT :
+12V
220Vac 0Vdc
Q2 BTA16 Q1
Q2SC1815 R1
47k
U15 MOC3020
1 2
Heater
R2 330
FUSE
PORTC<2>
R3 470
– Khi PORTC<2> = 0, lớp BE của Transistor không được phân cực, không có dòng qua MOC3020, triac không được kích
– Khi PORTC<2> = 1, Transistor dẫn, ta thiết kế sao cho dòng qua OPTO MOC3020 từ 5 – 20mA, mà :
Trang 12IMOC3020 = ICEQ =
2 1
7 0 5
Chọn R1 = 47k, R2 = 330 Khi đóIMOC3020 = 7.3mA
– Chọn R3 = 470Ω để đảm bảo dòng kích qua Triac
-6VAC
C2 0.1u
5VDC 6VAC
C4 0.1u C3
470u
R 330
D1 D1N4007
D4 LED
2.5.2 Mạch nguồn +/–5Vdc cung cấp cho các OPAMP OP07:
C7 470u
C3 470u
5VDC
LED
C6 0.1u 2200u C5
2200u
6VAC
C4 0.1u
C8 0.1u LED
Trang 132.5.3 Mạch nguồn 12Vdc cung cấp cho mạch công suất và mạch nguồn tham
khảo:
C1 2200u
-12VAC
C2 0.1u
12VDC 12VAC
C4 0.1u C3
470u
R 1k
D1 D1N4007
D4 LED
2.5.4 Mạch nguồn tham khảo 5VDC cho module ADC :
R2 10k
R1 1k
RA3/AN3/VRef +
C 47u TL431
12VDC
IC ổn áp TL431 có sai số khoảng 0.4% ở 25oC Chiết áp R2 = 10k để chỉnh cho giá trị điện áp ra của mạch là 5V Tụ C= 47μF có tác dụng lọc nhiễu Ngõ ra của mạch được nối vào chân RA3/AN3/Vref+ của vi điều khiển
Trang 14CHƯƠNG 3:
THUẬT TOÁN PID ĐIỀU KHIỂN NHIỆT ĐỘ
Trang 153.1 THUẬT TOÁN PID VÀ RỜI RẠC HÓA:
Sơ đồ khối bộ điều khiển :
Phương trình mô tả bộ điều khiển PID :
u(t) = K p e(t) + K I
t
dt t e
0 )
– e(t) : độ sai lệch giữa nhiệt độ đặt ban đầu và nhiệt độ hiện tại
– u(t) : tín hiệu ngõ ra của bộ điều khiển
Vì vi điều khiển không thể tính toán trực tiếp với các phép tích phân và đạo hàm Do vậy, cần phải rời rạc hóa phương trình này
0 1 2 3 4 5 6 7 8
: nhiệt độ đặt
: đáp ứng quá độ, đầu vào là hàm nấc
: rời rạc hóa đáp ứng quá độ
* Khâu vi phân :
T
n e n e dt
T dt
( (tính theo diện tích hình thang)
Suy ra, phương trình rời rạc mô tả bộ điều khiển PID có dạng :
1
)]
1()([Đặt : delta_e (n) = e(n) – e(n – 1)
Trang 16)]
1()([
hở vì phần tử chấp hành sẽ duy trì ở công suất Pmax Mặt khác, do có chứa khâu tích phân, nên khi xảy ra hiện tượng này, sai số sẽ được cộng dồn lại và giá trị tích phân sẽ trở nên rất lớn, hệ thống bị windup Để hệ thống trở về hoạt động bình thường, sai số nhiệt độ phải có dấu âm (nhiệt độ đặt nhỏ hơn nhiệt độ hiện tại) trong một thời gian dài, gây ra quá trình quá độ dài khi phần tử chấp hành bão hòa công suất
– Có nhiều phương pháp để loại trừ hiện tượng này Một trong những phương pháp đó được thể hiện qua sơ đồ khối sau :
– Trong đó e s là hiệu giữa tín hiệu đưa vào phần tử chấp hành u và ngõ ra v của bộ điều
khiển PID
+ Khi phần tử chấp hành chưa bão hòa công suất, e s = 0, hệ thống hoạt động bình thường
+ Khi phần tử chấp hành bão hòa công suất, e s ≠ 0 Khi đó, đầu vào khâu tích phân sẽ có
giá trị :
s
e e
Phần tử chấp hành
Trang 17– Do có vòng hồi tiếp từ e s về khâu tích phân, ngõ ra của khâu tích phân sẽ được lái đến
một giá trị mà ở đó ngõ vào của nó đạt đến zero:
s a i
e T
e T
= 0 Hay :
e s = – Ke
T
T
i a
Trong đó, ulim là giá trị bão hòa của tín hiệu điều khiển phần tử chấp hành
Vậy, tín hiệu ngõ ra v của bộ điều khiển PID bị giới hạn bởi u lim , và sẽ bị tác động lập tức
ngay khi sai số e thay đổi theo thời gian Hiện tượng windup bị loại trừ
– Khi giá trị Ta càng nhỏ, hệ số hồi tiếp từ e s về khâu tích phân là 1/Ta lớn, giá trị ngõ ra của khâu tích phân bị reset càng nhanh Nhưng nếu chọn Ta quá nhỏ sẽ ảnh hưởng đến giá trị bão hòa của ngõ ra, vì giá trị của khâu tích phân có thể bị reset một cách không mong muốn Khoảng giá trị hợp lý của Ta là (Ti, Td)
3.3 XÁC ĐỊNH THỐNG SỐ BỘ ĐIỀU KHIỂN:
Các thông số K P , K I , K D được xác định theo phương pháp Ziegler – Nichols :
Mô hình lò nhiệt có thể biểu diễn dưới dạng hàm truyền :
Ts
Ke Ls
θ Công suất được điều khiển bằng phương pháp điều rộng xung
Ton
T
Trang 18
lap xac đo nhiet
– Sau khi cấp 40% công suất cho mô hình, tiến hành đo và thực hiện các phép thử và sai,
ta có bộ thông số của bộ điều khiển như sau:
L = 120s, T = 1800s, K = 100/0.4 = 250 – Suy ra :
Ti = 2L = 240s, Td = 0.5L = 60s, KP = 250, K = 0.032, Ki = 1x10–4, Kd = 1.92
– Chọn Ta = Ti = 240s
Trang 19
CHƯƠNG 4:
LƯU ĐỒ GIẢI THUẬT
Trang 204.1 CHƯƠNG TRÌNH CHÍNH :
START
Đặt giá trị thông số PID
Cho phép ngắt Timer 1 //thời gian ngắt: 200ms
Cho phép ngắt Timer 2 //thời gian ngắt : 2ms
Gán giá trị đầu cho các biến
Gọi chương trình con Button_Press
Nút ENTER/STOP
đã được nhấn?
Hiển thị nhiệt độ đã đặt lần trước
Cho phép nhấp nháy LED 7 đoạn
Ngừng nhấp nháy LED 7 đoạn
Nút ENTER/STOP
đã được nhấn?
Trang 214.2 CHƯƠNG TRÌNH NGẮT :
4.2.1 Ngắt Timer 1: Ngắt Timer 1 xảy ra sau mỗi 200ms, dùng để nhấp nháy LED 7
đoạn trong quá trình cài đặt nhiệt độ, và cứ sau 2s hiển thị nhiệt độ, xử lý thuật toán PID
Có nhấp nháy LED 7 đoạn?
Đảo bit 0 của thanh
Trang 224.2.2 Ngắt Timer 2: Ngắt Timer 2 xảy ra sau mỗi 2ms, dùng để điều xung và quét 4
LED 7 đoạn
Có kích Triac hay không?
Không cấp nguồn cho LED
Trang 234.3 CHƯƠNG TRÌNH CON :
4.3.1 Chương trình con Button_Press xử lý các phím nhấn:
SW1 được nhấn?
SW1 được nhấn?
Trang 25100
Sel = 1
Tăng hàng chục 1 đơn vị
Hàng đvị = 9
Hàng chục
0
Tăng hàng đơn vị lên 1
Hàng đvị
0
Hàng thphân
5
Hàng thphân
0
Hàng thphân = 5
Hàng chục = 9
Y Y
Trang 26100
Sel = 1
Giảm hàng chục 1 đơn vị
Hàng đvị = 0
Hàng chục
9
Giảm hàng đơn vị xuống
1
Hàng đvị
9
Hàng thphân
5
Hàng thphân
0
Hàng thphân = 5
Hàng chục = 0
Y Y
Trang 274.3.2 Chương trình con lấy mẫu ADC : Chương trình ADC_Program sẽ lấy trung
bình của 512 mẫu để xử lý tính toán
Lấy mẫu ADC
temp temp + Giá trị mẫu ADC
//temp là giá trị chứa trong 4 thanh ghi temp1, 2, 3, 4
count 512
temp temp/512 count count – 1
Lưu giá trị của temp vào các thanh ghi để tính toán
trong chương trình PID và hiển thị
temp 0
Cờ ADC 0
Cờ ADC = 1? N
Y
Trang 284.3.3 Chương trình con PID:
PID
v < 0?
e1 e0 e0 t_set – t
Kp_e Kp*e0 Kd_e Kd*(e0 – e1) Ki_sum Ki_sum + Ki*(e1 + es)
v = Kp_e + Kd_e + Ki_sum
Y
N
Nhiệt độ đặt t_set Nhiệt độ hiện tại t
Kd = Kd/T
Ki = Ki*T/2
es (v – u)/K
//anti–windup //v, u : kết quả tính toán cho bộ điều khiển lần gọi hàm PID trước
Trang 29CHƯƠNG 5:
KẾT QUẢ THỰC HIỆN
Trang 30– Đối tượng điều khiển là nồi nước có thể tích khoảng 2lit
– Nhiệt độ nước lúc đầu : 30oC
độ từ cảm biến đưa về lúc đó nhỏ hơn khi Triac không được kích, làm cho nhiệt độ hiển thị trên các LED 7 đoạn dao động trong khoảng quanh nhiệt độ đặt
Mặt khác, cũng do đối tượng điều khiển là nhỏ, nên đặc tuyến vòng hở khá tuyến tính, làm cho việc xác định các thông số bộ điều khiển gặp nhiều khó khăn
Trang 31Tài liệu tham khảo
[1] Nguyễn Thị Phương Hà – Huỳnh Thái Hoàng (2005) Lý thuyết ĐIỀU KHIỂN TỰ
ĐỘNG Nhà xuất đại học Quốc Gia TP Hồ Chí Minh
[2] Nguyễn Văn Nhờ (2005) Điện tử công suất 1 Nhà xuất bản đại học Quốc Gia TP Hồ
Chí Minh
[3] Bộ môn Điều khiển Tự động – Khoa Điện Điện Tử, ĐH Bách Khoa Tập tài liệu
hướng dẫn thí nghiệm Điều khiển tự động 1
[4] Karl Johan Åström (2002) Control System Design Department of Mechanical and
Environmental Engineering, University of California
[5] www.microchip.com Microchip Technology Inc
[7] www.dientuvietnam.net