Điều khiển động cơ bằng mờ và PID

44 452 0
Điều khiển động cơ bằng mờ và PID

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Điều khiển động cơ bằng mờ và PID

BỘ 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 năm 2013 TỔNG QUAN ĐỀ TÀI 1.1 Đặt vấn đề Cùng với phát triển khoa học công nghiệp hóa đại hóa đất nước, làm xuất đối tượng điều khiển có độ phức tạp ngày tang Tất hướng tới mục tiêu độ xác tốt cao khả đáp ứng tốt với thiết bị điều khiển Các phương pháp điều khiển cổ điển đại đáp ứng tốt với đối tượng tuyến tính có mô hình toán học, thực tế cần hệ thống có điều khiển phi tuyến, có đọ phức tạp cao điều khiển đời Các điều khiển thông minh dựa lý luận người hay dựa hoạt đọng não người, Phuong pháp điều khiển mờ mạng Các điều khiển mờ áp dụng điều khiển đối tượng phi tuyến áp dụng thành công thiết bị gia dụng máy ghi hình, máy giặt, lò vi ba hệ thống công nghiệp Động đối tượng phi tuyến áp dụng điều khiển thong thường Do đó, phương pháp điều khiển mờ áp dụng điều khiển mờ dựa thông tin không rõ ràng, tùy thuộc vào kinh nghiệm 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 mờ PID” khó cần thực yêu cầu sau Tìm hiểu lý thuyết mờ ứng dụng điều khiển Tìm hiểu phần mền Keil C Viết chuong trình điều khiển ngôn ngữ C Xây dựng mô hình thực tế, ứng dụng điều khiển mờ PID điều khiển động THIẾT KẾ BỌ ĐIỀU KHIỂN 2.1 Sơ đồ khối 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 bit thiết lập chế độ hoạt động định thời Cấu trúc ghi TMOD Thanh ghi điều khiển định thời TCON: chứa bit dung để điều khiển báo trạng thái định thời Cấu trúc ghi TCON Thanh ghi SCON( Serial Control Register ) Đây ghi điều khiển Port nối tiếp Nó chứa bit dung để điều khiển chế độ hoạt động báo trạng thái Port nối tiếp Port nối tiếp có chế độ hoạt động Các chế độ chọn bit SM0, SM1 SM0 0 1 SM 1 Chế độ Mô tả Thanh ghi dịch UART BIT UART BIT UART 10 BIT Tốc độ Baud Cố định (fosc/ 12) Thay đổi (thiết lập timer Timer 2) Cố định (fosc/ 32 fosc/64 ) Thay đổi (thiết lập timer Timer 2) SCON: Serial Control Register 9F 9E 9D 9C 9B 9A 99 98 Bit Ký CI WD 2-1 CPS1 E Nguồn xung nhịp cho PCA chọn từ bit CPS1 CPS2 ghi CMOD CPS1 CPS2 Chọn xung nhịp cho PCA 0 1 1 1/6 fosc 1/2 fosc Tràn từ timer Xung nhịp chân ECI ( P1.2) Tốc độ lớn 1/4 fosc Thanh ghi CCON( PCA Counter Control ) bao gồm bit điều khiển chạy PCA , cờ cho PCA Modules CCON – PCA counter control register ( address D8H) bit allocation Bit addressable , Reset value : 00H Bit Symbol CF Bit Ký hiệu CF CR CCF4 CCF3 CCF2 CCF1 CCF0 CR - CCF4 CCF3 CCF2 CCR1 CCF0 Chức Cờ đếm tràn PCA Được thiết lập phần cứng đếm tràn CF cờ ngắt ECF = CF thiết lập phần cứng phần mềm xóa phần mềm Bit điều khiển chạy counter PCA Được thiết lập phần mềm : chạy 0: dừng Cờ ngắt modul PCA Được thiết lập phần cứng xuất match capture Được xóa phần mềm Cờ ngắt modul PCA Cờ ngắt modul PCA Cờ ngắt modul PCA Cờ ngắt modul PCA Thanh ghi CMOD (CPA counter mode) Bit Ký hiệu CIDL WDTE -1 CPS1- CPS0 ECP Chức Điều khiển trạng thái rỗi counter PCA CIDL = cho Counter PCA tiếp tục hoạt động bất chấp trạng thái rỗi CIDL = lập trình cho không hoạt động trạng thái rỗi Cho phép Watchdog Timer modunles ( 1: cho phép hoạt dộng ) Lựa chọn nguồn xung đếm cho PCA Cho phép ngắt tràn Counter PCA Nguồn xung nhịp cho PCA chọn từ bit CPS1 CPS2 ghi CMOD CPS1 CPS2 Chọn xung nhịp cho PCA 0 1 1 1/6 fosc ½ fosc Tràn từ timer Xung nhịp chân ECI ( P1.2) Tốc độ lớn ¼ fosc Chế độ điều đọ rộng xung (Pulse width modulator mode ) Tất Modul đề sử dụng ngõ PWM Tần số ngõ lấy từ PCA timer Tất modul có tần số ngõ giống sử dụng chung PCA timer Độ rộng xung modul phụ thuộc vào giá trị ghi CCAPNL Khi giá trị ghi CL ghi PCA nhỏ giá trị ghi CCAPNL modul ngõ mức thấp Khi lớn ngõ mức cao Khi CL tràn từ FFH 00H , CCAPNL nạp lại từ ghi CCAPNH Bit PWM ECOM ghi CCAPMN modul phải mức Các ghi hoạt động ngắt : Ngắt việc xảy điều kiện làm cho chương trình thực thi bị tạm dừng để quay sang thực chương trình khác sau quay lại để thực thi tiếp chương trình bị tạm ngưng Các ngắt đóng vai trò việc thiết kế thực ứng dụng vi điều khiển x AF AE x A D IE: INTERRUPT ENABLE REGISTER A C AB A A A9 A Địa bit (HEX) EA ES EXI ETI EX0 Ký hiệu ET0 EX0: Enable External InterruptCho phép ngắt ET0: Enable Timer Interrupt Cho phép ngắt Timer EX1: Enable External InterruptCho phép ngắt ET1: EnableTimer Interrupt Cho phép ngắt Timer ES: Enable Serial InterruptCho phép ngắt port nối tiếp EA: Enable All InterruptCho phép tất ngắt Hai điều kiện để ngắt phép hoạt động : • • Bit EA = Bit ngắt tương ứng = IT0 = Ngắt kích khởi việc phát mức thấp chân INT0\ IT0 = Ngắt kích khởi việc phát cạnh âm chân INT0\ 10 Void 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) { Unsigned char Masw = 0, CountDisp=10; TMOD = 0x11; TH1 = 0xd8; TL1 = 0xf0; TF =0; EA=1; ET = 1; TR =1 ; CMOD=0; CR=1; 30 CCAPM4 = 0x42; Int_lcd(); Clr_lcd(); SetPWM(0); SetVpoin(); EX0=1; EX1=1; IT0=1; IT1=1; flagPID=2; while (1) { If(flagPID ==2) { Clr_lcd(); Send_cmd(0x0c); Sprint_lcd(0x081,”Vset : “); Dprint_lcd(0x88,Vset); Sprint_lcd(0x0C1,”Vreal : “) flagPID=1; ] If(flagPID==1 && BitUpdateVreal ==1) { BitUpdateVreal =0; If(CountDisp>=50) { CountDisp >=50; 31 Dprint_lcd(0xc8,Vreal); } Else CountDisp +=1; } Masw = GetSW(); If (Masw ==1) { flagPID=0; SetPWM(0); EX0=0; EX1=0; Clr_lcd(); setVpoint(); EX0=1; Ex1=1; TongXing=0; Vreal=0; flagPID=2; } } } ****************************************** Void int_lcd(void) Khởi tạo LCD { Delay_ms(500); rs=0; rw=0; 32 en=1; send_cmd(0x38); send_cmd(0x38); send_cmd(0x0c); send_cmd(0x01); } /************************/ Xóa hiển thị LCD Void Clr_lcd(void) { Send_cmd(0x01); } /************************/ Void send_cmd(unsigned char cmd) gửi lệnh cho LCD { lcd_Ready(); lcd_port =cmd; rs=0; rw=0; en=0; en=1; } //*/*/*/*/*/*/*/*/*/*/*/*/ Void send_text(unsigned char text) gửi ký tự cho LCD { Lcd_Ready(); Lcd_port = text; 33 rs=1; rw=0; en=0; en=1; } //*/*/*/*/*/*/*/*/*/*/*/*/ Void Sprint_lcd(unsigned char cmd, unsigned char chuoi[]) { Int l,i; Send_cmd(cmd); = strlen(chuoi); For(i=0;i=3) i=0; else i+=1; send_cmd (0xc7+i); } else if (Masw == && V_set[i] 200) temp =5; Else if(x >100) temp =4; 43 Return(temp); } 44

Ngày đăng: 05/07/2016, 17:27

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan