38
1 Hướng dn thí nghim điu khin tđộ (bsung)-©Hunh Minh Ngc Tham kho: HTHNG ĐIU KHIN VÀ THU THP DLIU NHIU KÊNH I.Yêu cu: Kho sát làm mô hình hai lò nhit dung vi điu khi nPIC 16F877A giao tiếp máy tính. Nhn dng hàm truyn lò nhit dùng đáp ng n c hhca Ziegler- Nichols. Điu khin và thu thp dlu đồng thi 2 lò nhit theo 2 phương pháp on/off và PID s . Viết chương trình VB6.0, và chương trình CCS cho PIC. Cm biến nhit độ l à LM35. II. Phn l ý thuyết chun b: 1. Thut toán PID s: Bđiu khin PID (A proportional integral derivative controller) là bđiu khin sdng kthuât điu khin theo vòng lp có hi tiếp được sdng rng rãi trong các hthng điu khin tđộng. Mt bđiu khin PID cgng hiu chnh sai lch gia tín hiu ngõ ra và ngõ vào sau đó đưa ra mt mt tín hiu điu khin để điu chnh quá trình cho phù hp. 1.1 Hàm truyn đạt Hàm truyn ca khâu PID liên tc là: () + + = s T s T K s G d i p C 1 1 Vi e(t) là đầu vào, u(t) là đầu ra thì: () () () ( ) + + = dt t de T dt t e T t e K t u d i p 1 Hay viết dưới dng khác: () s T s K K s G d i p C + + = Vi: – Kp là độ li ca khâu tl(Proportional gain) – K i độ li ca khâu tích phân (Integral gain) – Kd là độ li ca khâu vi phân (Derivative gain)

Tham kh o: H TH NG I U KHI N VÀ THU TH P D LI U NHI U KÊNH · Ph ươ ng pháp i u khi n on/off hay còn g i là ph ươ ng pháp óng ng ˙t hay relay có tr -. C ơ c#u ch #p

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

1

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

Tham khảo: HỆ THỐNG ĐIỀU KHIỂN VÀ

THU THẬP DỮ LIỆU NHIỀU KÊNH I.Yêu cầu:

Khảo sát làm mô hình hai lò nhiệt dung vi điều khi ểnPIC 16F877A

giao tiếp máy tính. Nhận dạng hàm truyền lò nhiệt dùng đáp ứng n ấc hệ hở của Ziegler-

Nichols. Điều khiển và thu thập dữ lệu đồng thời 2 lò nhiệt theo 2

phương pháp on/off và PID s ố. Viết chương trình VB6.0, và chương trình CCS cho PIC. Cảm

biến nhiệt độ l à LM35.

II. Phần l ý thuyết chuẩn bị: 1. Thuật toán PID số:

Bộ điều khiển PID (A proportional integral derivative controller) là bộ

điều khiển sử dụng kỹ thuât điều khiển theo vòng lặp có hồi tiếp được sử dụng rộng rãi trong các hệ thống điều khiển tự động. Một bộ điều khiển PID cố gắng hiệu chỉnh sai lệch giữa tín hiệu ngõ ra và ngõ vào sau đó đưa ra một một tín hiệu điều khiển để điều chỉnh quá trình cho phù hợp.

1.1 Hàm truyền đạt

Hàm truyền của khâu PID liên tục là:

( )

++= sT

sTKsG

d

i

pC

11

Với e(t) là đầu vào, u(t) là đầu ra thì:

( ) ( ) ( )( )

++= ∫

dt

tdeTdtte

TteKtu

d

i

p

1

Hay viết dưới dạng khác:

( ) sTs

KKsG

d

i

pC++=

Với: – Kp là độ lợi của khâu tỷ lệ (Proportional gain) – Ki là độ lợi của khâu tích phân (Integral gain) – Kd là độ lợi của khâu vi phân (Derivative gain)

2

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

Việc hiệu chỉnh 3 thông số KP, KI, KD sẽ làm tăng chất lượng điều khiển. Ảnh hưởng của 3 thông số này lên hệ thống như sau:

Đáp ứng vòng kín Thời gian

tăng Vọt lố

Thời gian quá độ

Sai sô xác lập

Kp Giảm Tăng Thay đổi nhỏ Giảm Ki Giảm Tăng Tăng Loại bỏ Kd Thay đổi nhỏ Giảm Giảm Thay đổi nhỏ

Chú ý rằng các mối liên hệ này không chính xác hoàn toàn vì Kp, Ki, Kd

phụ thuộc vào nhau. Biến đổi bộ điều khiển PID liên tục về dạng PID số. Bộ điều khiển PID có hàm truyền dạng liên tục như sau:

( ) ip d

KG s K K s

s= + +

Có 3 phương pháp căn bản để biến đổi Z hàm truyền trên.

� Phương pháp biến đổi Z thuận:T

zs

1−=

� Phương pháp biến đổi Z ngược: zT

zs

1−=

� Phương pháp hình thang : 1

12

+

−=

z

z

Ts

Áp dụng phương pháp biến đổi ngược cho khâu vi phân và biến đổi hình thang cho khâu tích phân ta có hàm truyền như sau:

( )

−+

++=

z

z

T

K

z

zTKKzG di

p

111

2

`

Viết lại G(z) ta có:

( )1

21

1

2

22−

−−

+

−+−+

++

=z

zT

Kz

T

KTKK

T

KTKK

zG

ddi

P

di

p

Đặt:

T

KTKKa di

p ++=20 ;

T

KTKKa di

P

2

21 −+−= ; T

Ka d=2

Ta có:

( )1

22

110

1 −

−−

++=

z

zazaazG

Từ đó, ta tính được tín hiệu điều khiển u(k) khi tín hiệu vào e(k) như sau:

( ) ( ) ( ) ( )kez

zazaakezGku

1

22

110

1 −

−−

++==

Áp dụng tính chất dời thời gian theo biến đổi Z ta có: ( ) ( ) ( ) ( ) ( )2.11 210 −+−++−= keakeakeakuku

3

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

1.2Tìm thông số cho bộ điều khiển PID. Tìm thông số cho bộ điều khiển PID theo phương pháp Zeigler-Nichols

Thông số Bộ ĐK Kp Ti Td

Kp T/(L*K) Vô cùng 0

Ki 0,9T/(L*K) L/3 0

Kd 1,2T/(L*K) 2L 0,5L

2.H àm truyền lò điện và mô hình của Ziegler-Nichols: Lò nhiệt có đầu vào là điện áp (hay công suất) cung cấp cho dây điện trở và ngõ ra là nhiệt độ bên trong lò. Để lập hàm truyền lò nhiệt ta phải khảo sát phương trình vi phân mô tả các quan hệ nhiệt độ và năng lượng. Đây là một bài toán phức tạp nếu muốn mô tả chính xác hàm truyền phi tuyến của hệ thống. Một cách gần đúng, ta có thể xem môi trường nung là đồng chất, đẳng nhiệt. Từ phương trình cân bằng năng lượng : điện năng cung cấp sẽ được dùng để bù vào năng lượng nhiệt truyền ra bên ngoài và tích nhiệt vào môi trường nung, ta tính được hàm truyền lò là bậc nhất, có dạng như sau:

Trong đó : P: công suất cung cấp. θ: là độ tăng nhiệt nhiệt độ ngõ ra so với nhiệt độ môi trường. K: là hệ số tỉ lệ cho biết quan hệ vào ra ở chế độ xác lập. T: là thời hằng, thể hiện quán tính nhiệt hệ thống. Mô hình hàm truyền này cho thấy quá trình quá độ với đầu vào hàm nấc có dạng hàm mũ. Thực tế cho thấy mô hình trên chỉ là gần đúng, hệ thống có bậc cao hơn nhưng quá trình quá độ đầu vào hàm nấc vẫn là không vọt lố, có dạng như hình sau khi cho nhiệt độ đầu bằng 0.

4

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

Theo Ziegler-Nichols thì một hệ thống như vậy có thể được biểu diễn dưới dạng hàm truyền sau :

5

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

bao gồm một khâu quán tính hệ số khuếch đại K và thời hằng T, và khâu trễ thời gian L, các thông số này có th lấy được khi kẻ tiếp tuyến ở điểm uốn cho đồ thị quá độ hàm nấc như hình vẽ bên. Hệ số khuếch đại K được tính như sau :

congsuat

lapnhietdoxacK

%=

Khi nhiệt độ ban đầu khác không, K được tính từ độ tăng nhiệt độ ngõ ra so với môi trường . Để áp dụng cho hệ tuyến tính, ta lấy khai triển Taylor của e-LS, hàm truyền trở nên :

)1)(1()(

TsLs

KsG

++=

Tóm lại, Ziegler-Nichols xấp xỉ hàm truyền lò với hệ bậc nhất có trễ hay hệ

tuyến tính bậc hai, và cho phép tìm hàm truyền bằng thực nghiệm khi vẽ quá

trình quá độ hệ thống với ngõ vào là hàm nấc.

3.Bộ điều khiển ON/OFF

Sơ đồ khối

Hình : Sơ đồ khối điều khiển nhiệt độ theo kiểu on/off Phương pháp điều khiển on/off hay còn gọi là phương pháp đóng ngắt hay relay có trễ. Cơ cấu chấp hành sẽ đóng nguốn cung cấp năng lượng ở mức tối đa cho dây đốt nóng nếu nhiệt độ đặt W(k) lớn hơn nhiệt độ đo được y(k) .Còn ngược lại mạch sẽ ngắt nguồn khi y(k)> w(k). Một vùng trễ được đưa vào để hạn chế tần số đóng ngắt như sơ đồ khối trên: nguồn chỉ đóng khi sai số e(k) lớn hơn và ngắt khi e(k) < - như vậy nhiệt độ y(k) se được giao đông quanh giá trị đặt w(k) và 2 coòn được gọi là vùng trễ của relay.

W(k) W(k) u(k) y(k)

Khâu relay

Lò nhiệt

6

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

-Ưu điểm của điều khiển on/off:

+Thiết bị tin cậy, đơn giản,chắc chắn hệ thống luôn hoạt động với mọi tải.

+ Tính toán thết kế ít phức tạp và cân chỉnh dễ dàng.

- Nhược điểm là sai số xác lập sẽ lớn do hệ chỉ cân bằng đông quanh nhiệt độ đặt và thay đổi theo tải.Khuyết điểm này có thể thay đổi khi giảm vùng trễ bằng cách dùng phần tử đóng ngắt điện tử ở mạch công suất.

III.HỆ THỐNG THU THẬP DỮ LIỆU NHIỀU KÊNH

3.1 . Sơ đồ phần cứng: 3.1.1.Sơ đồ khối của hệ thống.

Máy tính:Dùng để tạo giao diện với người dùng, hiển thị giá trị nhiệt độ đo và đồ thị thay đổi nhiệt độ đo, đồng thời là nơi người dùng nhập giá trị nhiệt độ đặt. máy tính sẻ gửi giá trị đặt xuống VXL và nhận dữ liệu từ VXL truyền lên sau đó tính toán theo công thức PID số rời gửi giá trị delay xuông cho VXL. Vi xử lý:Trao đổi dữ liệu với máy tính, chuyển đổi giá tri ADC từ các chân AN0 và AN1, xuất xung điều khiển đóng ngắt TRIAC .Trong đồ án này em sử dụng PIC16F877A.

Máy tính

Cảm biến 1

Bóng đèn 2

Mạch công suất

Vi xử lý

Bóng đèn 1

Cảm biến 2

7

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

Mạch công suất:Cách ly điện áp giữa bộ phận chấp hành và VXL, khuếch đại công suất, mạch bao gồm thành phần đồng pha và thành phần đóng ngắt TRIAC.

Bóng đèn:Đốt nóng làm thay đổi nhiệt độ môi trường. bóng đèn được dùng trong mô hình là bóng đèn sợi đốt 75W, 220 VAC.

Cảm biến:Đo lường giá trị nhiệt độ của môi trường đưa tín hiệu về VXL, cảm biến được dùng trong mô hình là cảm biến LM35 có đô phân giải 10mV/ 1độ C .Độ chính xác cao, tính năng cảm biến nhiệt độ rất nhạy, ở nhiệt độ 25(0C) nó có sai số không quá1%. Với tầm đo từ 0(0C) đến 128(0C) , tín hiệu ngõ ra tuyến tính liên tục với những thay đổi của tínhiệu nhõ vào.* Thông số kỹ thuật:- Tiêu tán công suất thấp .- Dòng làm việc từ 400µA đến 5mA.- Dòng ngược 15mA.- Dòng thuận 10mA.- Độ chính xác: khi làm việc ở nhiệt độ 25(0C) với dòng làm việc 1mA thì điện áp ngõ ra từ 2,94V đến3,04V 3.1.2. Sơ đồmạch chi tiết:

1. Cảm biến nhiệt độ LM35 DZ:

8

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

Hình dạng

Hình : hình dạng cảm biến LM35

- 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.

9

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

Cảm biến LM35 thứ nhất đưa tín hiệu Vo vào chân AN0 của PIC 16F877A, để đo nhiệt độ từ lò một (điều khiển PID). Cảm biến LM35 thứ hai đưa tín hiệu Vo vào chân AN1 của PIC 16F877A, để đo nhiệt độ từ lò hai (điều khiển on/off ).

2. Khối mạch vi xử lý PIC16F877A

Đây là board mạch chính của đồ án

Vi xử lý được cấp nguồn , kết nối mạch reset , gắn thạch anh 4MHz, và các chân ở các port được đưa ra ngoài để kết nối với các thiết bị ,các mạch khác thông qua jack cắm.

Mạch xử lý của chúng ta sẽ thu thập dữ liệu nhiệt độ từ cảm biến thông qua mạch khuyếch đại và ADC rồi truyền lên máy tính .Đồng thời nó cũng nhận dữ liệu điều khiển từ máy tính gửi xuống ,rồi sau đó nó xử lý và xuất tin hiệu điều khiển ra mạch công suất.

Hình : mạch vi xử lý chính

10

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

3.Mạch công suất.

rb0

rx

U5

MOC3020

1

2

64

vcc

vcc

U2

220VAC

12 1

2

U6

LOAD

12 1

2

mach cong suat den 1

pidsin1

C1010u

Q1TRIAC

-

+

U1A

LM358

3

21

84

mach cong suat den 2

on on

R3

330

J4

CON2

12

U7

MAX232

13811

10

1

34

5

2

6

129

147

16

15

R1INR2INT1IN

T2IN

C1+

C1-C2+

C2-

V+

V-

R1OUTR2OUT

T1OUTT2OUT

VCC

GN

D

sin2

J3

CON2

12

Q2TRIAC

mach tao xung vuong tu hinh sin

rb0

pid

U3

LOAD

12 1

2

C7

CAP

D2

DIODE

tx

sin1

R5

330sin2

R6

330

R4

330

C6CAP

R1

330

U4

MOC3020

1

2

64

C9

CAP

J6

CON2

12

C11104

tx

J1

10VAC

12

P1

COM PORT

594837261

mach giao tiep RS232

rx

R2

1kJ2

CON2

12

C8

10u

vcc

v cc

J7

CON2

12

v cc

J5

CON2

12

11

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

12

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

13

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

3.2. Lưu đồ giải thuật chương trình. 3.2.1.Chương trình Vi xử lý:

Lưu đồ giải thuật chương trình.

S S D D D

START

Khởi tạo các giá trị và cài đặt các thuộc tính ban đầu

Chương trình chính : đọc giá trị ADC và gửi lên cho máy tính

Thực hiện chương trình nằm trong ngắt truyền thông

Ngắt truyền thông xảy ra

Ngắt ngoài RB0 xảy ra

Delay và xuất giá trị ra RD0

14

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

3.2.2. Chương trình VB.

Lưu đồ giải thuật chương trình. S D

START

Kiểm tra kết nối

Kết nối thành công

Cho phép nhấn nút START

Kiểm tra gia trị đặt của 2 lò

Cho phép nhấn nút START

Cho phép nhấn nút bật lò 1 và lò 2 Truyền giá trị đặt xuống cho VXL

15

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

Chờ ngắt truyền thông xảy ra

Ngắt truyền thông xảy ra

Hiển thị giá tri đo được lên giao diện,tính giá trị PID rồi gửi xuống

cho XVL

STOP

16

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

3.2.3. Giao diện chương trình.

II.Thí nghiệm:

1. Nh ận d ạng h àm truy ền l ò nhi ệt d ùng đ áp ứng n ấc h ệ h ở c ủaZiegler-Nichols.

Từ đặc tính quá độ của lò nhiệt thu được từ thực nghiệm có dạng như sau:

17

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

Ta có T1=50s

T2= 320 s ; K=45 Suy ra : Kp = 1,2T2/(T1*K) = 0,17066 Ki = Kp/Ti = Kp/2T1 = 0,0017066 Kd= Kp*Td = Kp*0,5*T1 = 4,26666 Như vậy hàm truyền lò nhiệt là:

)3201)(501(

45)(

sssGLN

++=

2. Điều khiểnon/off.

18

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

Giao diện chương trình.

Đặt nhiệt độ là 500C, tiến hành điều khiển on/off. Xem và nhận xét đồ thị nhiệt độ.

3. Điều khiển PID.

Giao diện chương trình.

Cho chu kì lấy mẫu T=200 ms=0,2s

19

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

a. Đặt nhiệt độ là 500C, tiến hành điều khiển PID với các tham số Kp=0,17066

Ki=0,0017066 Kd=4,26666 theo phương pháp Ziegler-Nichol. Nhận xét đồ thị nhiệt

độ.

b. Thử sai chọn lựa giá trị Kp, Ki, và Kd khác nhau. Nhận xét đồ thị nhiệt độ.So sánh

kết quả với phần a.

TÀI LIỆU THAM KHẢO

1. Trần Xuân Trường ,Tài liệu sử dụng CCS tiếng việt . 2. Nguyễn Văn Tình ,Tài liệu vi điều khiển PIC 16F877A . 3. ThS. Huỳnh Minh Ngọc ,Thí nghiệm điều khiển tự động. 4.TS. Nguyễn Thị Phương Hà, ThS.Huỳnh Thái Hoàng, Lý thuyết điều khiển tự

động. 4. http://www.picvietnam.com 5.http://www.dientuvietnam.net 6.Phạm Văn Luân ,MSSV: 08102571, Đồ án chuyên ngành: THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN VÀ THU THẬP DỮ LIỆU NHIỀU KÊNH, lớp ĐHĐT4A, ngày 9 tháng 12-2012.

Phụ l ục:

1. Chương trình vi xử lý PIC 16F877A dùng CCS C. #include <16F877A.h> #device *=16 ADC=10 #priority INT_RDA,INT_EXT,INT_TIMER1 #fuses NOWDT,PUT,XT,NOPROTECT #use delay(clock=4000000) #byte PORTB = 0x06 #byte PORTC = 0x07 #byte PORTD = 0x08 #use RS232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) char ma1=0; // khai bao bien int16 timer=0; Signed int8 d ;// so nguyen co dau int16 giatri1=0; int8 giatri2=0; char data1=0; char data2=0; char a='x'; // KHAI BAO MA NHAN DU LIEU char b='y'; char c=0; int16 tam1=0; int8 tam2=0;

20

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

#INT_RDA // chuong trinh ngat void ngatrs232() { int8 m; char c; c = getc(); if (m==1) { giatri1=c; m=0; timer=giatri1*225; tam1=65535-timer; } else if (m==2) { giatri2=c; m=0; } else if(c =='x') { m=1; } else if (c=='y') { m=2; } else if (c=='c') { m==0; putc(c); } else if (c=='m')// ma tat lo1 { output_low(pin_d0); disable_interrupts (INT_EXT); } else if (c=='n')// ma tat lo2 { output_low(pin_d1); } else if (c=='k')// ma bat lo1 { enable_interrupts (INT_EXT);

21

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

} } #INT_EXT // chuong trinh ngat ngoai RB0 void ngatngoai() { setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);// thiet lap che do cho timer1 :ti le 1 ,lay xung ngoai set_timer1(tam1); // gan gia tri 0 cho timer1 enable_interrupts(int_timer1);// cho phep ngat timer0 } #INT_TIMER1// gia tri cua timer1 tu 1 den 65536 void timer1() { tam2=tam2+1; if (tam2==2)// thoi gian nua chu ky sau { output_high(pin_d0); //cho d0=1 delay_us(50); output_low(pin_d0); disable_interrupts(INT_TIMER1);//khong cho phep ngat timer0 setup_timer_1(T1_DISABLED);// khong cho timer1 hoat dong tam2=0; } else if(tam2==1)// thoi gian nua chu ky dau { output_high(pin_d0); //cho d0=1 delay_us(50); output_low(pin_d0); setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);// thiet lap che do cho timer1 :ti le 1 ,lay xung ngoai set_timer1(55635); // gan gia tri 0 cho timer1 enable_interrupts(int_timer1);// cho phep ngat timer0 } } void phu() { set_ADC_channel(0); //kenh 0 chan A0 lo on/off delay_us(50); data1 =read_adc(); data1 =data1 *0.48875855;// khi truyen du lieu len neu gia tri nho ho

22

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

putc(a); putc(data1); set_ADC_channel(1); //kenh 0 chan A0 lo on/off delay_us(50); data2 =read_adc(); data2 =data2 *0.48875855;// khi truyen du lieu len neu gia tri nho hon d=giatri2-data2; putc(b); putc(data2); if (d>=1) { output_high(pin_d1); //cho d0=1 } else if(d<=-1) { output_low(pin_d1); //cho d0=0 } delay_us(10); } void main(void)//Chuong trinh chinh { set_tris_D(0x00);//thiet lap portd la ngo ra set_tris_B(0xff);//thiet lap portd la ngo VAO enable_interrupts(INT_RDA); ext_int_edge(L_TO_H); enable_interrupts (GLOBAL); // cho phep ngat cuc bo setup_adc_ports(AN0_AN1_AN3);//A0 , A1 , A3 nhaän analog , aùp nguoàn +5V caáp cho IC seõ laø ñieän aùp chuaån setup_adc(ADC_CLOCK_INTERNAL); setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);// thiet lap che do cho timer1 :ti le 1 ,lay xung ngoai set_timer1(0); // gan gia tri 0 cho timer1 enable_interrupts(int_timer1);// cho phep ngat timer0 while(1) { phu(); } } 2. Chương trình Visual Basic 6.0

23

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

Dim data1, data2, m, i Dim y1, y2, x1, x2, delay, h, delay1 Dim kp, kd, ki, A0, A1, A2 Dim e0, e1, e2, ketqua Private Sub Command3_Click() 'STOP MSComm1.Output = "e" ' Timer1.Enabled = False Command2.Enabled = False Command6.Enabled = False End Sub Private Sub Command4_Click() Unload Me End Sub Private Sub Command5_Click() Text1.Text = 7.68 Text2.Text = 0.0768 Text3.Text = 192 End Sub Private Sub Command6_Click() ' BAT LO2 x1 = Val(Text4.Text) 'nhiet do dat pid y1 = Val(Text5.Text) ' nhiet do do x2 = Val(Text6.Text) 'nhiet do dat on/off y2 = Val(Text7.Text) 'nhiet do do kp = Val(Text1.Text) ki = Val(Text2.Text) kd = Val(Text3.Text) MSComm1.Output = "y" ' goi ma nhan 2 MSComm1.Output = Chr(x2) ' goi gia tri nhan 2 End Sub Private Sub Command7_Click() ' START Timer1.Enabled = True Timer1.Interval = 10 x1 = Val(Text4.Text) 'nhiet do dat pid y1 = Val(Text5.Text) ' nhiet do do x2 = Val(Text6.Text) 'nhiet do dat on/off y2 = Val(Text7.Text) 'nhiet do do kp = Val(Text1.Text) ki = Val(Text2.Text)

24

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

kd = Val(Text3.Text) If x1 < 10 Or x1 > 100 Then MsgBox "gia tri nhap khong dung" Else Command2.Enabled = True End If If x2 < 10 Or x2 > 100 Then MsgBox "gia tri nhap khong dung" Else Command6.Enabled = True End If End Sub Private Sub Command8_Click() ' TAT LO1 MSComm1.Output = "m" 'goi ma nhan 1 End Sub Private Sub Command9_Click() ' TAT LO2 MSComm1.Output = "y" 'goi ma nhan 1 MSComm1.Output = Chr(10) End Sub Private Sub Form_Load() 'cho phep cong com hoat dong MSComm1.Settings = "9600,N,8,1" ' toc do truyen,mac dinh,8 bit du lieu,1 bit stop MSComm1.CommPort = 2 'dung cong com thu MSComm1.RThreshold = 1 'nhan 1 byte thi xay ra ngat MSComm1.SThreshold = 0 MSComm1.PortOpen = True 'cho phep mo conng com MSComm1.OutBufferCount = 0 Command6.Enabled = False Command2.Enabled = False mm.XGridNumber = 10 mm.YGridNumber = 10 End Sub Private Sub Command1_Click() ' KET NOI Label11.Caption = "ket noi khong thanh cong" MSComm1.RThreshold = 1 MSComm1.Output = "c" ' gui ma kiem tra ket noi 'gui ma ket noi xuong vxl 'kiem tra ma ket noi

25

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

End Sub Private Sub Command2_Click() ' BAT LO1 x1 = Val(Text4.Text) 'nhiet do dat pid y1 = Val(Text5.Text) ' nhiet do do x2 = Val(Text6.Text) 'nhiet do dat on/off y2 = Val(Text7.Text) 'nhiet do do kp = Val(Text1.Text) ki = Val(Text2.Text) kd = Val(Text3.Text) MSComm1.Output = "k" 'goi ma bat lo 1 End Sub Private Sub MSComm1_OnComm() dem = MSComm1.Input If m = 1 Then m = 0 y1 = Asc(dem) Text5.Text = y1 PID 'goi chuong trinh con PID MSComm1.Output = "x" MSComm1.Output = Chr(40 - ketqua) ' goi gia tri de lay xuong VXL End If If m = 2 Then y2 = Asc(dem) Text7.Text = y2 m = 0 End If If dem = "c" Then Label11.Caption = "ket noi thanh cong" m = 0 End If If dem = "x" Then m = 1 End If If dem = "y" Then m = 2 End If End Sub Private Sub Timer1_Timer() y1 = Val(Text5.Text) y2 = Val(Text7.Text) h = h + 1

26

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

Timer1.Enabled = True Timer1.Interval = 100 mm.AddElement mm.Element = 1 mm.ElementLineColor = vbYellow mm.ElementWidth = 2 mm.PlotXY h, y1, 1 mm.AddElement mm.Element = 2 mm.ElementLineColor = vbBlue mm.ElementWidth = 2 mm.PlotXY h, y2, 2 mm.SetRange 0, h, 30, 100 'cai dat gioi han cho hai truc End Sub Sub PID() Dim t As Single t = 0.02 'gia tri thoi gian lay mau bang voi thoi gian ngat EXT =20 ms x1 = Val(Text4.Text) y1 = Val(Text5.Text) kp = Val(Text1.Text) ki = Val(Text2.Text) kd = Val(Text3.Text) e2 = x1 - y1 A0 = kp + ki * t / 2 + kd / t A1 = 0 - kp + ki * t / 2 - 2 * kd / t A2 = kd / t delay = delay1 + A0 * e2 + A1 * e1 + A2 * e0 ketqua = delay If ketqua >= 40 Then ketqua = 40 ElseIf ketqua < 0 Then ketqua = 0 End If delay1 = delay e0 = e1 e1 = e2 End Sub

27

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

Bài 5: Hiện thực hệ thống điều khiển nhiệt độ I.Mục tiêu:

Khảo sát làm mô hình lò nhiệt dung vi điều khi ểnPIC 16F877A/887

giao tiếp máy tính. Nhận dạng hàm truyền lò nhiệt dùng đáp ứng n ấc hệ hở của Ziegler-

Nichols. Điều khiển và thu thập dữ lệu nhiệt độ lò nhiệt theo 2 phương

pháp on/off và PID s ố. -Sử dụng chương trình VB6.0, và chương trình CCS cho PIC.

Cảm biến nhiệt độ l à LM35.

II. Cơ sở lý thuyết:

1.Sơ đồ khối: Hệ thống điều khiển nhiệt độ dung vi điều khiển PIC 16F877A/887 có giao tiếp máy tính.

Trong đó:

-Máy tính: làm nhiệm vụ thu thập, hiển thị dữ liệu, vẽ đồ thị nhiệt độ trên máy tính.

-Vi điều điều khiển 16F877A/887: làm nhiệm vụ đọc giá trị A/D từ cảm biến nhiệt

LM35 và gửi tín hiệu lên máy tính, ngoài ra vi điều khiển còn xuất tín hiệu điều khiển mạch công suất để đóng ngắt lò nhiệt. Vi điều khiển còn nhận tín hiệu từ máy

Máy tính Vi điều khiển PIC16F877A/887

Mạch công suất

Lò nhiệt

Cảm biến nhiệt LM35

ADC

28

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

tính gửi xuống. Máy tính giao tiếp với vi điều khiển thong qua IC Max232. PIC 16F877A/887 có ADC 10 bit bên trong với 8 kênh ngõ vào.

-Mạch công suất: làm nhiệm vụ đóng ngắt lò nhiệt, sử dụngOpto-triac.

-Cảm biến nhiệt độ LM35: là cảm biến nhiệt độ, chuyển tín hiệu nhiệt độ thành điện áp. Độ nhạy là 10mV/0C.

Ngoõ ra caûm bieán nhieät ñöôïc ñöa vaøo AN0(RA0). Bit RB1: ñieàu khieån neon. RB1=’1’: neon taét, RB1=’0’: neon saùng. Bit RB2: ñieàu khieån quaït. RB2=’1’: quaït taét, RB2=’0’: quaït quay.

2.H àm truyền lò điện và mô hình của Ziegler-Nichols: Lò nhiệt có đầu vào là điện áp (hay công suất) cung cấp cho dây điện trở và ngõ ra là nhiệt độ bên trong lò. Để lập hàm truyền lò nhiệt ta phải khảo sát phương trình vi phân mô tả các quan hệ nhiệt độ và năng lượng. Đây là một bài toán phức tạp nếu muốn mô tả chính xác hàm truyền phi tuyến của hệ thống. Một cách gần đúng, ta có thể xem môi trường nung là đồng chất, đẳng nhiệt. Từ phương trình cân bằng năng lượng : điện năng cung cấp sẽ được dùng để bù vào năng lượng nhiệt truyền ra bên ngoài và tích nhiệt vào môi trường nung, ta tính được hàm truyền lò là bậc nhất, có dạng như sau:

Trong đó : P: công suất cung cấp. θ: là độ tăng nhiệt nhiệt độ ngõ ra so với nhiệt độ môi trường. K: là hệ số tỉ lệ cho biết quan hệ vào ra ở chế độ xác lập. T: là thời hằng, thể hiện quán tính nhiệt hệ thống. Mô hình hàm truyền này cho thấy quá trình quá độ với đầu vào hàm nấc có dạng hàm mũ. Thực tế cho thấy mô hình trên chỉ là gần đúng, hệ thống có bậc cao hơn nhưng quá trình quá độ đầu vào hàm nấc vẫn là không vọt lố, có dạng như hình sau khi cho nhiệt độ đầu bằng 0.

29

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

Theo Ziegler-Nichols thì một hệ thống như vậy có thể được biểu diễn dưới dạng hàm truyền sau :

30

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

bao gồm một khâu quán tính hệ số khuếch đại K và thời hằng T, và khâu trễ thời gian L, các thông số này có th lấy được khi kẻ tiếp tuyến ở điểm uốn cho đồ thị quá độ hàm nấc như hình vẽ bên. Hệ số khuếch đại K được tính như sau :

congsuat

lapnhietdoxacK

%=

Khi nhiệt độ ban đầu khác không, K được tính từ độ tăng nhiệt độ ngõ ra so với môi trường . Để áp dụng cho hệ tuyến tính, ta lấy khai triển Taylor của e-LS, hàm truyền trở nên :

)1)(1()(

TsLs

KsG

++=

Tóm lại, Ziegler-Nichols xấp xỉ hàm truyền lò với hệ bậc nhất có trễ hay hệ

tuyến tính bậc hai, và cho phép tìm hàm truyền bằng thực nghiệm khi vẽ quá

trình quá độ hệ thống với ngõ vào là hàm nấc.

3.Bộ điều khiển ON/OFF

Sơ đồ khối

Hình : Sơ đồ khối điều khiển nhiệt độ theo kiểu on/off Phương pháp điều khiển on/off hay còn gọi là phương pháp đóng ngắt hay relay có trễ. Cơ cấu chấp hành sẽ đóng nguốn cung cấp năng lượng ở mức tối đa cho dây đốt nóng nếu nhiệt độ đặt W(k) lớn hơn nhiệt độ đo được y(k) .Còn ngược lại mạch sẽ ngắt nguồn khi y(k)> w(k). Một vùng trễ được đưa vào để hạn chế tần số đóng ngắt như sơ đồ khối trên: nguồn chỉ đóng khi sai số e(k) lớn hơn và ngắt khi e(k) < - như vậy nhiệt độ y(k) se được giao đông quanh giá trị đặt w(k) và 2 coòn được gọi là vùng trễ của relay.

W(k) W(k) u(k) y(k)

Khâu relay

Lò nhiệt

31

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

-Ưu điểm của điều khiển on/off:

+Thiết bị tin cậy, đơn giản,chắc chắn hệ thống luôn hoạt động với mọi tải.

+ Tính toán thết kế ít phức tạp và cân chỉnh dễ dàng.

- Nhược điểm là sai số xác lập sẽ lớn do hệ chỉ cân bằng đông quanh nhiệt độ đặt và thay đổi theo tải.Khuyết điểm này có thể thay đổi khi giảm vùng trễ bằng cách dùng phần tử đóng ngắt điện tử ở mạch công suất.

4.Bộ điều khiển PID số:

Thuật toán PID số:

R + e u c

-

Trong đó:

R: nhiệt độ đặt.

C: nhiệt độ ra.

E:sai lệch= r-c

U: tín hiệu điều khiển.

Hàm truyền của bộ điều khiển PID số như sau:

Bộ điều khiển PID có hàm truyền dạng liên tục như sau:

sKs

KK

sE

sUsG d

ippid .

)(

)()( ++== (1)

Bộ điều khiển PID

Lò nhiệt

32

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

Phương pháp đáp ứng nấc của Ziegler-Nichols Một phương pháp đơn giản để xác định các tham số của bộ điều khiển PID là dựa trên dữ liệu đáp ứng nấc của Ziegler-Nichols. Phương pháp chỉ dùng hai tham số trong bảng sau: Với a=K.L/T

Bảng 1 Bộ điều khiển Kp Ti Td P 1/a PI 0.9a L/0,3 PID 1.2/a 2L L/2

Có 3 phương pháp căn bản để biến đổi Z hàm truyền (1) trên.

� Phương pháp biến đổi thuận:T

zs

1−=

� Phương pháp biến đổi ngược: zT

zs

1−=

� Phương pháp hình thang : 1

12

+

−=

z

z

Ts

Áp dụng phương pháp biến đổi ngược cho khâu vi phân và biến đổi hình thang cho khâu tích phân ta có hàm truyền như sau:

( )

−+

++==

z

z

T

K

z

zTKK

zE

zUzG di

p

1

1

1

2

`

)(

)(

Viết lại G(z) ta có:

( )1

21

1

2

22−

−−

+

−+−+

++

=z

zT

Kz

T

KTKK

T

KTKK

zG

ddi

P

di

p

Đặt:

T

KTKKa di

p ++=20 ;

T

KTKKa di

P

2

21 −+−= ; T

Ka d=2

Ta có:

( )1

22

110

1 −

−−

++=

z

zazaazG

Từ đó, ta tính được tín hiệu điều khiển u(k) khi tín hiệu vào e(k) như sau:

( ) ( ) ( ) ( )kez

czbzakezGku

1

21

1 −

−−

++==

Áp dụng tính chất dời thời gian theo biến đổi Z ta có: ( ) ( ) ( ) ( ) ( )2.11 210 −+−++−= keakeakeakuku

Đặc trưng của các bộ điều khiển P,I,D

33

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

Điều khiển tỉ lệ (Kp) có ảnh hưởng làm giảm thời gian lên và sẽ giảm

nhưng không loại bỏ sai số xác lập. Điều khiển tích phân (Ki) sẽ loại bỏ sai số

xác lập nhưng làm đáp ứng quá độ xấu đi. Điều khiển vi phân (Kd) có tác

dụng làm tăng sự ổn định của hệ thống, giảm vọt lố và cải thiện đáp ứng quá

độ. Ảnh hưởng của mỗi bộ điều khiển Kp, Ki, Kd lên hệ thống vòng kín

được cho ở bảng sau.

Bảng 2

Đáp ứng vòng

kín

Thời gian lên Vọt lố Thời gian xác

lập

Sai số xác lập

Kp giảm Tăng Thay đổi nhỏ Giảm

Ki giảm Tăng Tăng Loại bỏ

Kd Thay đổi nhỏ Giảm Giảm Thay đổi nhỏ

Chú ý rằng các mối liên hệ này không chính xác hoàn toàn bởi vì Kp, Ki, Kd

phụ thuộc vào nhau. Vì vậy, bảng này chỉ dùng tham khảo khi xác định các

tham số Kp, Ki, Kd.

5.Mô phỏng: Lệnh Matlab: >>Kp=0.2577 >>Ki=0.00859 >>Kd=1.9327 >>T=0.06 >>simulink Mở tập tin dkpidnhdo.mdl Cho thời gian mô phỏng là 1000s. Tiến hành mô phỏng. Sơ đồ Simulink: dkpidnhdo.mdl

34

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

Đặt nhiệt độ: step có giá trị cuối là 100. Chu kì lấy mẫu của bộ điều khiển PID số là Ts=0.06 s. Bộ giữbậc không có Ts=0.06s Bộ điều khiển PID số:

35

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

Nhận xét đồ thị nhiệt độ ngõ ra. Tính sai số xác lập, độ vọt lố, thời gian xác lập. Thử lại với các giá trị Kp,Ki,Kd khác nhau. Nhận xét.

III. Thí nghiệm: 1. Nh ận d ạng h àm truy ền l ò nhi ệt d ùng đ áp ứng n ấc h ệ h ở c

ủaZiegler-Nichols. Thực hiện chương trình (tập tin .exe) :

Từ đặc tính quá độ của lò nhiệt thu được từ thực nghiệm có dạng như sau:

Từ đồ thị suy ra Ta có L=15

T=145 K=45 Suy ra : Kp = 1,2T/(L*K) =0,2577 Ki = Kp/Ti = Kp/(2L) = 0,00859 Kd= Kp*Td = Kp*0,5*L =1,9327 Như vậy hàm truyền lò nhiệt là:

)1451)(151(

45)(

sssGLN

++=

Chọn chu kì lấy mẫu là Ts=0,06s. 1. Điều khiểnon/off.

Giao diện chương trình.

36

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

Đặt nhiệt độ là 500C, tiến hành điều khiển on/off. Xem và nhận xét đồ thị nhiệt độ.

3. Điều khiển PID.

Giao diện chương trình.

Cho chu kì lấy mẫu T=60 ms=0,06s.

Khảo sát hệ kín:

37

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

a.Đặt nhiệt độ là 500C, tiến hành điều khiển PID với các tham số bộ điều khiển

PID(kp, Ki, Kd) lấy ở phần 3.1

Kp = 1,2T/(L*K) =0,2577 Ki = Kp/Ti = Kp/(2L) = 0,00859 Kd= Kp*Td = Kp*0,5*L =1,9327

theo phương pháp Ziegler-Nichol. Nhận xét đồ thị nhiệt độ.

Tính độ vọt lố, thời gian xác lập, và sai số xác lập.

b.Thử sai chọn lựa giá trị Kp, Ki, và Kd khác nhau. Nhận xét đồ thị nhiệt độ.

b1.Khảo sát ảnh hưởng của thong số Kp(Ki=0, Kd=0) và tính độ vọt lố, sai số xác lập, thời gian xác lập của ngõ ra theo bảng sau:

KP 1 10 20 50 100 POT Exl txl

Nhận xét chất lượng của hệ thống thay đổi như thế nào khi Kp thay đổi. Giải thích. B2. Thực hiện khảo sát với bộ điều khiển PI(Kp=2, Kd=0) và tính độ vọt lố, sai số xác lập, thời gian xác lập của ngõ ra theo bảng sau:

KI 0.1 0.5 0.8 1 2 POT

38

Hướng dẫn thí nghiệm điều khiển tự độ (bổ sung)-©Huỳnh Minh Ngọc

Exl txl

Nhận xét chất lượng của hệ thống thay đổi thế nào khi Ki thay đổi . Giải thích . So sánh chất lượng bộ điều khiển PI với bộ điều khiển P. B3. Thực hiện khảo sát hệ thống với bộ điều khiển PID (Kp=2, Ki=2) và tính độ vọt lố, sai số xác lập, thời gian xác lập của ngõ ra theo bảng sau:

KD 0.1 0.2 0.5 1 2 POT Exl txl

Nhận xét chất lượng của hệ thống thay đổi thế nào khi Kd thay đổi . Giải thích . So sánh chất lượng bộ điều khiển PID với bộ điều khiển P và PI.

B4. Nhận xét ảnh hưởng của các khâu P, I, D lên chất lượng hệ thống.

c.Xem xét ảnh hưởng của chu kì lấy mẫu Ts:

IV. Báo cáo kết quả:

Sinh viên nộp báo cáo và giảng viên nhận xét, đánh giá.