Điều khiển động cơ bằng mờ và PID
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP.HCM
-TIỂU LUẬN ĐIỀU KHIỂN ĐỘNG CƠ BẰNG MỜ VÀ PID
MÔN: Đo Lường Và Điều Khiển Bằng Máy Tính
GVHD : HUỲNH MINH NGỌC
TP.HCM Ngày 23 tháng 6 năm 2013
TỔNG QUAN ĐỀ TÀI
Trang 21.1 Đặt vấn đề
Cùng với sự phát triển của khoa học công nghiệp hóa hiện đại hóa đất nước, làm xuất hiện các đối tượng điều khiển có độ phức tạp ngày càng tang Tất cả đều hướng tới mục tiêu là độ chính xác tốt cao cũng như khả năng đáp ứng tốt với các thiết bị điều khiển Các phương pháp điều khiển cổ điển và hiện đại chỉ đáp ứng tốt với các đối tượng tuyến tính có mô hình toán học, nhưng trong thực tế cần các hệ thống có điều khiển phi tuyến, có đọ phức tạp cao vì vậy các bộ điều khiển đã được ra đời Các bộ điều khiển thông minh dựa trên lý luận của con người hay dựa trên hoạt đọng bộ não con người, đó là các Phuong pháp điều khiển mờ và mạng Các bộ điều khiển mờ áp dụng điều khiển các đối tượng phi tuyến và được áp dụng thành công trong các thiết bị gia dụng như máy ghi hình, máy giặt, lò vi ba cũng như hệ thống công nghiệp
Động cơ là một đối tượng phi tuyến không thể áp dụng các điều khiển thong thường được Do đó, phương pháp điều khiển mờ được áp dụng điều khiển mờ dựa trên các thông tin không rõ ràng, và tùy thuộc vào kinh nghiệm của chuyên gia hay người điều khiển
1.2 YÊU CẦU CỦA ĐỀ TÀI.
Đề tài “ điều khiển động cơ bằng mờ và PID” mới và khó vì thế cần thực hiện các yêu cầu sau
Tìm hiểu lý thuyết mờ và ứng dụng của nó trong điều khiển
Tìm hiểu phần mền Keil C
Viết chuong trình điều khiển bằng ngôn ngữ C
Xây dựng mô hình thực tế, ứng dụng điều khiển mờ và PID điều khiển động cơ
2 THIẾT KẾ BỌ ĐIỀU KHIỂN
2.1 Sơ đồ khối
Trang 324VDC 12VDC
2.2 Khối điều khiển trung tâm
Sử dụng vi điều khiển P89v51RB2
Thanh ghi chế độ định thời TMOD: chứa các bit thiết lập chế độ hoạt động của bộ định
thời
Trang 4Cấu trúc của thanh ghi TMOD
Thanh ghi điều khiển định thời TCON: chứa các bit dung để điều khiển và báo trạng
thái của bộ định thời
Cấu trúc của thanh ghi TCON
Trang 5Thanh ghi SCON( Serial Control Register )
Đây là thanh ghi điều khiển Port nối tiếp Nó chứa các bit dung để điều khiển chế độ hoạt động và báo trạng thái của Port nối tiếp
Port nối tiếp có 4 chế độ hoạt động Các chế độ này được chọn bởi các bit SM0, SM1
SM0 SM Chế độ Mô tả Tốc độ Baud
0 0 0 Thanh ghi dịch Cố định (fosc/ 12)
0 1 1 UART 8 BIT Thay đổi (thiết lập bởi timer 1 hoặc Timer 2)
1 0 2 UART 9 BIT Cố định (fosc/ 32 hoặc fosc/64 )
1 1 3 UART 10 BIT Thay đổi (thiết lập bởi timer 1 hoặc Timer 2)
Trang 6REN: Receive Enable -> Cho phép thu Bit này phải
được set để nhận các dữ liệu.
SM2: Serial Mode 2 -> Bit 2 chọn chế độ của port nối tiếp Bit này cho phép truyền thông đa xử lý ở chế độ 2 và 3; bit
RI sẽ không được tích cực nếu bit thứ 9 nhận được là 0 SM1: Serial Mode 1 -> Bit 1 chọn chế độ của port nối tiếp SM0: serial mode 0 -> Bit 0 chọn chế độ của port nối tiếp
1 sẽ lập trình cho nó không hoạt động trong trạng thái rỗi
6 WDTE Cho phép Watchdog Timer trên modules 4 ( 1 : cho phép hoạt
động)
2
-1
CPS1
-CPS0 Lựa chọn nguồn xung đếm cho PCA
0 ECF Cho phép ngắt khi tràn Counter PCA
Nguồn xung nhịp cho PCA được chọn từ 2 bit CPS1 và CPS2 trên thanh ghi CMOD
Trang 7CPS1 CPS2 Chọn xung nhịp cho PCA
0 0 1/6 fosc
0 1 1/2 fosc
1 0 Tràn từ timer 0
1 1 Xung nhịp ngoài tại chân ECI ( P1.2) Tốc độ lớn nhất 1/4 fosc
Thanh ghi CCON( PCA Counter Control ) bao gồm bit điều khiển chạy PCA , các cờ
cho PCA và mỗi Modules
CCON – PCA counter control register ( address 0 D8H) bit allocation
Bit addressable , Reset value : 00H
7 CF Cờ đếm tràn PCA Được thiết lập bằng phần cứng khi đếm tràn CF là
cờ ngắt khi ECF = 1 CF được thiết lập bằng phần cứng hoặc phần mềm nhưng chỉ xóa được bằng phần mềm
6 CR Bit điều khiển chạy counter PCA Được thiết lập bằng phần mềm 1 :
chạy 0: dừng
5 CCF4 Cờ ngắt modul PCA 4 Được thiết lập bằng phần cứng khi xuất hiện
match hoặc capture Được xóa bằng phần mềm
4 CCF3 Cờ ngắt modul PCA 3
3 CCF2 Cờ ngắt modul PCA 2
2 CCF1 Cờ ngắt modul PCA 1
1 CCF0 Cờ ngắt modul PCA 0
Trang 8Thanh ghi CMOD (CPA counter mode)
Điều khiển trạng thái rỗi của counter PCA CIDL = 0 sẽ cho Counter PCA tiếp tục hoạt động bất chấp đang trong trạng thái rỗi CIDL = 1 sẽ lập trình cho nó không hoạt động trong trạng thái rỗi
6 WDTE Cho phép Watchdog Timer trên modunles 4 ( 1: cho phép hoạt
dộng )
2 -1 CPS1- CPS0 Lựa chọn nguồn xung đếm cho PCA
0 ECP Cho phép ngắt khi tràn Counter PCA
Trang 9Nguồn xung nhịp cho PCA được chọn từ 2 bit CPS1 và CPS2 trên thanh ghi CMOD
1 0 Tràn từ timer 0
1 1 Xung nhịp ngoài tại chân ECI ( P1.2) Tốc độ lớn nhất ¼ fosc
Chế độ điều đọ rộng xung (Pulse width modulator mode )
Tất cả các Modul đề có thể sử dụng như là ngõ ra PWM Tần số ngõ ra được lấy từ PCA timer Tất cả các modul sẽ có tần số ngõ ra giống nhau vì sử dụng chung PCA timer Độ rộng xung của mỗi modul phụ thuộc vào giá trị thanh ghi CCAPNL Khi giá trị thanh ghi
CL của thanh ghi PCA nhỏ hơn giá trị thanh ghi CCAPNL của modul thì ngõ ra sẽ ở mức thấp Khi nó bằng hoặc lớn hơn thì ngõ ra ở mức cao Khi CL tràn từ FFH về 00H , CCAPNL được nạp lại từ thanh ghi CCAPNH Bit PWM và ECOM trong thanh ghi CCAPMN của modul phải ở mức 1
Trang 10Các thanh ghi và hoạt động ngắt :
Ngắt là việc xảy ra một điều kiện làm cho chương trình thực thi bị tạm dừng để quay sang thực hiện một chương trình khác rồi sau đó quay lại để thực thi tiếp chương trình đang bị tạm ngưng Các ngắt đóng vai trò trong việc thiết kế và thực hiện các ứng dụng của vi điều khiển
Địa chỉ bit (HEX)
Trang 11IT0 = 2 Ngắt ngoài 1 được kích khởi bởi việc phát hiện mức thấp tại chân INT0\ IT0 = 3 Ngắt ngoài 1 được kích khởi bởi việc phát hiện cạnh âm tại chân INT0\.
Trang 122 VDD Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này với
VCC=5V của mạch điều khiển
3 VEE Điều chỉnh độ tương phản của LCD
4 RS Chân chọn thanh ghi (Register select) Nối chân RS với logic “0”
(GND) hoặc logic “1” (VCC) để chọn thanh ghi
+ Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của LCD (ở chế độ “ghi” - write) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ
“đọc” - read)+ Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR bên trong LCD
5 R/W Chân chọn chế độ đọc/ghi (Read/Write) Nối chân R/W với logic “0” để
Trang 13LCD hoạt động ở chế độ ghi, hoặc nối với logic “1” để LCD ở chế độ đọc.
6 E Chân cho phép (Enable) Sau khi các tín hiệu được đặt lên bus
DB0-DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép của chân E.+ Ở 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 (high-to-low transition) của tín hiệu chân E
+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát hiện cạnh lên (low-to-high transition) ở chân E và được LCD giữ ở bus đến khi nào chân E xuống mức thấp
Trang 14Kết nối LCD với Vi Sử Lý:
Chân 1 nối GND
Chân 2 nối +5V
Chân Vef nối 1 biến trở 10k để chỉnh độ tương phản
Chân RS, RW, EN nối với 3 chân của IC 8951
8 chân dữ liệu nối với post 1 của IC 8951
2 chân của đèn Backlight kết nối như hình vẽ
2.4 Encoder.
2.4.1 Cấu tạo chính của Encoder
Gồm 1 bộ phát ánh sang (LED phát), một bộ thu ánh sang từ bộ phát (bộ thu thường là photodiode hoặc phototransistor), 1 đĩa quang có khoét lỗ gắn trên trục quay đặt giữa bộ phát và thu , thông thường trục quay này sẽ được gắn với trục quay của dối tượng cần đo tốc độ
Trang 15Cấu trúc đĩa và mắt đọcMột encoder thường có cá dây sau:
- Dây cấp nguồn (+5V) cho encoder
Dạng song ngõ ra của LED thu
2.4.2 Nguyên lý cơ bản
Encoder thực chất là một đĩa tròn xoay, quay quanh trục.Trên đĩa có các lỗ (rãnh) Người
ta dung 1 đèn LED để chiếu lên mặt đĩa Khi đĩa quay, chỗ không có lỗ (rãnh), đèn led không chiếu xuyên qua được, chỗ có lỗ (rãnh) , đèn led sẽ chiếu xuyên qua Khi đó, phía mặt bên kia của đĩa , người ta đặt 1 con mắt thu với các tín hiệu có, hoặc không có ánh sang chiếu qua, người ta ghi nhận được đèn led có chiếu qua lỗ hay không Cứ mỗi lần đi qua một lỗ , chúng ta phải lập trình để thiết bị đo đếm lên 1 Số lỗ trên đĩa sẽ quyết định độchính xác của thiết bị đo Ví dụ đĩa của bạn có 1 lỗ tức là khi bạn quay được 1 vòng thì bộ thu được 1 xung, nếu đĩa của bạn khoét N lỗ có nghĩa 1 vòng bạn thu được N xung Như vậy khi đo tốc đọ bạn đếm số xung trong 1 đơn vị thời gian, từ đó bạn tính được số vòng trên 1 đơn vị thời gian (hoặc bạn có thể đo chu kỳ xung) Nếu đo tốc đọ cao thì số lỗ khoét càng nhiều càng chính xác
Trang 162.5 Khối công suất.
Đây là IC driver MOSFET, dung để lái cực G của MOSFET, bởi vì để kích dẫn IRF540 tacần cấp điện áp 9-12V vào cực G của MOSFET, mà tín hiệu mức 1 từ 89v51 xuất ra chỉ là 5vdc thôi Do đó, ta phải sử dụng 1R2110 để chuyển mức tín hiệu 5vdc thành 12vdc kích dẫn MOSFET
Động cơ DC là thiết bị truyền động công suất mà phân phối năng lượng ra tải
Động cơ 1 chiều được mô tả ở hình sau:
Trong đó : Load : tải ; Armature: phần ứng, Field: trường ; Inertia: momen quán tính; Friction: ma sát
Từ thông xủa động cơ tỉ lệ với dòng điện từ, giả sử từ trường không bão hòa :
f f
K i
(1)Momen của động cơ được giả sử là tuyến tính với và dòng điện phần ứng tia ( armature current )
1 ( ) 1 ( ) ( )
T K i t K K i t i t
(2)Hay T t m( )K i t m a ( )
Trong đó K1 là hằng số tỉ lệ
Trang 17Tm (s) = TL (s) + Td (s) 3
Momen động cơ bằng momen phân phối cho tải.Quan hệ này được minh học (3) Trong
đó, TL(s) là momen của nhiễu (thể hiện momen ma sát tải như là ma sát Coulomb)
Trong đó Km là hàm của từ tính của vật liệu từ
Dòng điện phần ứng có quan hệ với điện áp vào đặt vào phần ứng (armature) Va(s) (gọi là U):
Va là điện áp vào đặt vào phần ứng
Vb(s) (gọi là E) là điện áp điện động ngược ( sức phẩn diện động phần ứng ) và tỉ lệ với tốcđộc động cơ
Trang 18Quan hện cho động cơ DC được điều khiển bằng phần ứng được minh họa ở hình sau:
Sử dụng phương trình (4), (7) và (8) hay sơ đồ khối và cho Td(s) =0 , ta giải và đạt được hàm truyền sau :
Trong đó Td(t) được xem là ngõ vào thứ hai trong phuong trình trạng thái
Khi không có nhiễu Td(t), phuong trình trạng thái:
Trang 19minh họa bằng cách xem xét hoạt động động cơ ở trạng thái xác lập và cân bằng công suất khi điện trở rotor bị bỏ qua Td(s)
- TL(s)
+
Hình 5.10 : Sơ đồ khối động cơ một chiều được điều khiển bằng phần ứng
Khi xét hàm truyền của tốc độ ta có :
L R
Đây là khâu quán tính bậc nhất
Khi bỏ qua phản ứng phần ứng, bỏ qua ma sát (b=0) và giả sử các phần tử trong hệ thống
là tuyến tính , có các phuong trình sau :
U: điện áp hai đầu phần ứng
I : dòng điện qua động cơ
Trang 20R,L : điện trở, tự cảm mạch điện phần ứng.
E, Mdc : sức điện động , moment quay của động cơ
J: moment quán tính của các phần quay và Mc là moment cản
Xem lý thuyết ở chương 8A
4 Bộ điều khiển PID số.
Bộ điều khiển PID số có hàm truyền dạng liên tục như sau :
1 1 0
Trang 21Rời rạc hóa PID ta có biến đổi z như sau:
( )
D p
2
D P
22
D p
Trang 225.THIẾT KẾ PID MỜ
Có thể nói trong lĩnh vực điều khiển, bộ PID được xem là một giải pháp đa năng cho các ứng dụng điểu khiển Analog cũng như Digital Việc thiết kế bộ PID thường dựa trên phương pháp Zeigler-Nochols, Reinish Ngày nay người ta thường sử dụng PID mềm, đây là cơ sở cho thiết kế PID hay PID thích nghi
5.1 Sơ đồ điều khiển PID mờ
Mô hình toán của bộ PID :
u(t) = Kpe(t) + Ki
các tham số Ki Kd Ki được điều chỉnh theo từng bộ điều khiển mờ riêng biệt dựa trên sai lệch e(t) và đạo hàm de(t) Có nhiều phương pháp khác nhau để chỉnh bộ PID như chỉnh định trực tiếp, chỉnh định Zhao, Tomizuka va Isaka Nguyên tắc chung là bắt đầu các trị
số Ki Kd Ki theo Zeigler-Nochol, sau đó dựa vào đáp ứng và thay đổi dần để tìm ra hướng điều chỉnh thích hợp
5.2 Luật chỉnh định PID
Trang 23+lân cận a1 ta cần luật điều khiển mạnh để rút ngắn thời gian lên, do vậy ta chọn : Kp lớn, Kd và Ki nhỏ
+ tốc độ tăng DET = ET (i+1)−e (i)
T , với T là chu kỳ lấy mẫu
- đầu ra : 3 biến
+ Kp là hệ số tỉ lệ
+ Kd là hệ số vi phân
+ Ki là hệ số tích phân
-Số lượng biến ngôn ngữ
ET = {âm nhiều, âm vừa, âm ít, Zero, dương ít, dương vừa, dương nhiều}
ET = {N3, N2, N1, NE, P1, P2, P3}
Trang 24DET = {âm nhiều, âm vừa, âm ít, Zero, dương ít, dương vừa, dương nhiều }DET = {N31, N21, N11, NE1, P11, P21, P31}
Kp/Kd = {zero, nhỏ, trung bình, lớn, rất lớn} = {Z,S,M,L,U}
Ki = {mức 1, mức 2, mức 3, mức 4, mức 5} = {N1, N2, N3, N4, N5}
Trang 276 CHƯƠNG TRÌNH CHÍNH6.1 Lưu đồ
Cấu hình Timer, Interrup, cho MCU
Cài đặt tốc độ cho Motor
Trang 29{Fuzy_M,Fuzy_M,Fuzy_M,Fuzy_M,Fuzy_M,Fuzy_M,Fuzy_M},{Fuzy_L,Fuzy_L,Fuzy_L,Fuzy_L,Fuzy_L,Fuzy_L,Fuzy_L},
{Fuzy_M,Fuzy_M,Fuzy_M,Fuzy_M,Fuzy_M,Fuzy_M,Fuzy_M},{Fuzy_I,Fuzy_L,Fuzy_M,Fuzy_M,Fuzy_M,Fuzy_L,Fuzy_L},
{Fuzy_U,Fuzy_U,Fuzy_U,Fuzy_U,Fuzy_UFuzy_U,Fuzy_U},
};
Float code FKi[7][7] = }
{Fuzy_L1,Fuzy_L1,Fuzy_L1,Fuzy_L1,Fuzy_L1,Fuzy_L1,Fuzy_L1},{Fuzy_L3,Fuzy_L2,Fuzy_L2,Fuzy_L1,Fuzy_L2,Fuzy_L2,Fuzy_L3},{Fuzy_L4,Fuzy_L3,Fuzy_L2,Fuzy_L1,Fuzy_L2,Fuzy_L3,Fuzy_L4},{Fuzy_L5,Fuzy_L4,Fuzy_L3,Fuzy_L2,Fuzy_L3,Fuzy_L4,Fuzy_L5},{Fuzy_L1,Fuzy_L1,Fuzy_L1,Fuzy_L1,Fuzy_L1,Fuzy_L1,Fuzy_L1},{Fuzy_L3,Fuzy_L2,Fuzy_L2,Fuzy_L1,Fuzy_L2,Fuzy_L2,Fuzy_L3},{Fuzy_L4,Fuzy_L3,Fuzy_L2,Fuzy_L1,Fuzy_L2,Fuzy_L3,Fuzy_L4},//**/*/*/*/*/*/*/*/
Void lcd_Ready (void);
Void send_cmd(unsigned char cmd);
Void send_text(unsigned char tex);
Trang 30Void int_lcd(void);
Void Clr_lcd(void);
Void Sprint_lcd(unsigned char cmd, unsigned char chuoi[]);Void Dprint_lcd(unsigned char cmd, unsigned int d);
Void delay_ms(unsigned int ms);
Unsigned char GetSW (void);
Void SetPWM(unsigned char PWM);
Void SetVpoint (void);
Unsigned char GiaiMo_DET(signed int x);
Unsigned char GiaiMo_ET(singed int x);
//**/*/*/*/*/*/*/*/
Unsigned char BitUpdateVreal = 0, flagPID=0;
Unsigned char prePWM = 0;
Unsigned int Timeout = 0, TongXung = 0, Vreal = 0, Vset = 100;Float PID_el=0,PID_e2=0,Fuzy_e1=0;
Void main (void)
Trang 31Sprint_lcd(0x0C1,”Vreal : “)flagPID=1;
CountDisp >=50;
Trang 32******************************************Void int_lcd(void) Khởi tạo LCD
{
Delay_ms(500);
rs=0;
rw=0;
Trang 39If (!swSet)
{
Masw =1 ;Timeout=40;
Trang 40Unsigned char Masw=0, V_set[4]= {0,0,0,0}, i=0;Clr_lcd();
Trang 42Unsigned char i,j,T=10;
Signed int e,PWM;
Trang 43Else if( x< -200) temp =1;
Else if( x< -100) temp =2;
Else if( x>100 && x <100) temp =3;
Else if(x >300) temp =6;
Else if(x >200) temp =5;
Else if(x >100) temp =4;
Trang 44}