Đề tài Ứng dụng lý thuyết hiện đại thiết kế modul điều khiển động cơ DC

Khi xửlý thời gian thực, ta mong muốn sao cho vi điều khiển xửlý nhanh các kết quả tính toán hầu mong tạo được tín hiệu điều khiển thích hợp nhất với tín hiệu hiện tại. o Sự đáp ứng phần cứng bao giờcũng gây ra những khó khăn, ở đây ta không thểlấy mẫu ởkhoảng thời gian quá nhỏ, không phải chỉvì thời gian đáp ứng của thuật toán xửlý, mà còn vì sựphân giải của sensor là có giới hạn. Ví dụ, trong bài, nếu sửdụng encoder có độphân giải 100xung/vòng, ta lấy mẫu với chu kì 10ms.

pdf37 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2899 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Đề tài Ứng dụng lý thuyết hiện đại thiết kế modul điều khiển động cơ DC, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TRƯỜNG ĐẠI HỌC BÁCH KHOA THÀNH PHỐ HỒ CHÍ MINH Khoa Điện-Điện tử Ngành Điều khiển tự động ỨNG DỤNG LÝ THUYẾT HIỆN ĐẠI THIẾT KẾ MODUL ĐIỀU KHIỂN ĐỘNG CƠ DC -----¾?½----- Sinh viên thực hiện: Bùi Trung Hiếu – Mã số: 40200776 ™ ™ Lớp: DD02KSTN Thành phố Hồ Chí Minh, 2005-12-24 Index – DC Motor Control Module Trang i I. Khái quát-giới thiệu đề tài: • Kiến thức cơ bản: II. Giới thiệu thuật toán điều khiển và các chương trình. II.1. Điều khiển kinh điển II.2. Mạng neural II.3. Fuzzy control II.4. Genetic Algorithm(GA). II.5. Chương trình điều khiển viết bằng ngôn ngữ C trong uV3 Hình II.1 Mô hình điều khiển hệ thống khi chưa có khâu chỉnh định Hình II.2 Mô hình điều khiển hệ thống có thêm khâu chỉnh định III. Phần cứng chuẩn bị và phần mềm sử dụng. III.1. Mạch phần cứng Hình III.1 Mạch giao tiếp MCU P89LPC922 với PC qua cổng COM Hình III.2 Mạch phát triển ứng dụng MCU P89LPC922 Hình III.3 Mạch đọc Encoder sử dụng MCU P89LPC922 <dự định-đang thiết kế> Hình III.4 Mạch động lực (mạch công suất). IV. Giải quyết vấn đề: IV.1. Định hướng chương trình: Hình IV.1 Định hướng chương trình dạng TOP-DOWN design IV.2. Phác thảo giải thuật IV.2.1. Đọc Encoder: Hình IV.2.1.1 Cấu hình các nguồn tạo dao động của P89LPC922 Hình IV.2.1.2 Cấu hình của Counter/Timer 0 và cách khai báo khi T0 ở chức năng Counter Hình IV.2.1.3 Cấu hình của WDT ở chức năng Timer Hình IV.2.1.4 Sơ đồ giải thuật cách đọc Encoder bằng Counter và gửi lên PC IV.2.2. Điều xung Hình IV.2.2.1 Sơ đồ khối điều xung tham khảo Hình IV.2.2.2 Mạch nguyên lý của Driver LMD18200 dùng ở chế độ điều biến xung Hình IV.2.2.3 Timer 1 ở mode 6 với chức năng PWM IV.2.3. Khâu điều khiển kinh điển PID: IV.2.3.1 Khâu PID rời rạc: Hình IV.2.3.1 Tìm các thông số cho PID nhờ Matlab Hình IV.2.3.2 Sơ đồ giải thuật khảo sát đặc tính động cơ Hình IV.2.3.3 Biểu diễn kết quả với Ts=9ms Hình IV.2.3.4 Xấp xỉ các kết quả khảo sát bằng một hàm truyền không đơn vị IV.2.3.2 Thiết kế khâu điều khiển mờ PID rời rạc dùng MATLAB(Tìm bộ thông số Kp,Ki,Kd bằng thuật toán GA kết hợp mạng neural): Hình IV.2.3.1 Sơ đồ mô phỏng động cơ DC xây dựng trong Matlab Hình IV.2.3.2 Chức năng của MCU P89LPC922 mô phỏng trong Matlab Hình IV.2.3.3 Khóa mờ xây dựng luật điều khiển Hình IV.2.3.4 Khối PID rời rạc xây dựng trong Matlab Hình IV.2.3.5 Quần thể được chọn nhờ lời khuyên của chuyên gia. Hình IV.2.3.6 Đáp ứng của hệ thống khi tín hiệu thử là 1000+500sin(0.02t) (v/p) trên mô phỏng. Hình IV.2.3.7 Hình phóng to sai số giữa tín hiệu đặc và tín hiệu đáp ứng (vòng/phút) trên mô phỏng. Hình IV.2.3.8 Đáp ứng của hệ thống khi tín hiệu thử là 20+10sin(0.5t) (xung/Ts) trên thực tế với chu kì lệnh là 10xung/lệnh. DC Motor Control Module Trang ii Hình IV.2.3.9 Sơ đồ giải thuật điều khiển vòng kín chưa chỉnh hướng chỉ dùng khâu PID kinh điển Hình IV.2.3.10 Đáp ứng vòng kín khi chỉ có khâu PID với các tốc độ khác nhau khi không gây nhiễu tải. IV.2.3.3 Mở rộng chiến lược điều khiển, tìm cách tối ưu hóa đáp ứng quá độ của hệ thống-nhận dạng đối tượng và xây dựng một mô hình tham chiếu chuẩn cho động cơ-Mạng neural truyền thẳng: Hình IV.2.3.1 Sơ đồ giải thuật khảo sát đặc tính động cơ. Hình IV.2.3.2 Đặc tính điều xung theo vận tốc (xung/Ts). Hình IV.2.3.3 Đáp ứng bước khi có khâu hiệu chỉnh kết hợp. V. Các vấn đề mở rộng và hướng giải quyết: VI. Kết luận: VII. Dự định: VIII. Tài liệu tham khảo VIII.1. Giáo trình. VIII.2. Tài liệu tham khảo chính: • Từ khóa tra cứu tài liệu sử dụng. IX. Các phiên bản cập nhật. (I) Khái quát – Giới thiệu sơ lược về nội dung đề tài I Khái quát: – Việc áp dụng lý thuyết điều khiển kinh điển và hiện đại vào những mô hình thực tế luôn gặp khó khăn về giải thuật phần mềm lẫn đáp ứng phần cứng của thiết bị. – Bằng cách sử dụng vi điều khiển P89LPC922 của Philips làm nhân điều khiển trung tâm, Matlab là chương trình xử lý trung gian, phần mạch công suất sử dụng Driver tích hợp , hi vọng đề tài đem đến một cách nhìn nhận mới về vấn đề áp dụng lý thuyết điều khiển vào thực tế. – Đề tài đã phân tích khá kĩ lưỡng các vấn đề như thiết kế và chọn bộ thông số của khâu điều khiển kinh điển PID bằng thuật toán GA, cách chọn tần số điều xung, xử lý ngắt trong lấy mẫu, thời gian thực hiện của các hàm, giới hạn phần cứng đáp ứng của thiết bị, cách xây dựng mô hình tham chiếu chuẩn cho đối tượng, khắc phục những sự cố về nhiễu tải hoặc/và nhiễu đo lên đối tượng. – Làm việc trên nhân điều khiển P89LPC922 của Philips nên tôi phân tích các sơ đồ giải thuật và chương trình, cũng như thời gian thực để thực thi trên cơ sở tập lệnh của họ MCU8051. " Kiến thức cơ bản: Lý thuyết điều khiển kinh điển,lý thuyết điều khiển hiện đại, điện tử cơ bản, điện tử công suất, cấu trúc vi điều khiển, giải thuật và lập trình ngôn ngữ C. Trang I.1 (II) Thuật toán điều khiển và các chương trình II. Thuật toán điều khiển và các chương trình: II.1: Điều khiển kinh điển: Sử dụng khâu vi tích phân tỉ lệ (PID) để làm bộ điều khiển hệ thống. II.2: Mạng neural: nhận dạng đặc tính động cơ DC. Điều khiển theo mô hình tham chiếu. Chuyên gia cho ‘lời khuyên’ về vùng khả nghiệm của khâu PID, hướng dẫn thuật toán GA tìm quần thể thích nghi. II.3: Fuzzy control: Điều khiển vòng kín bằng ‘công tắc mờ’: Nếu <80% tốc độ yêu cầu thì mở toàn công suất, nếu >120% thì tắt nguồn, khoảng giữa sử dụng khâu hiệu chỉnh PID kinh điển. II.4: Genetic Algorithm(GA): chọn bộ thông số PID cho khâu điều khiển kinh điển, lựa cá thể trội theo yêu cầu thiết kế với mức chính xác đặt ra của người dùng. II.5: Chương trình điều khiển viết bằng ngôn ngữ C trong uV3. II.6: Các mô hình điều khiển hệ thống: Hình II.1 Mô hình điều khiển hệ thống khi chưa có khâu tự chỉnh định Hình II.2 Mô hình điều khiển hệ thống có thêm khâu chỉnh định Trang II.1 (III) Phần cứng và phần mềm III. Phần cứng chuẩn bị và phần mềm sử dụng: III.1: Mạch phần cứng: III.1.1 Mạch giao tiếp MCU P89LPC922 với PC qua cổng COM. III.1.2 Mạch phát triển ứng dụng MCU P89LPC922. III.1.3 Mạch đọc Encoder sử dụng MCU P89LPC922 III.1.4 Mạch công suất điều khiển động cơ. III.1.5 Động cơ DC có Encoder. III.1.6 Bộ nguồn: 12VDC, 5VDC <Sử dụng bộ nguồn ATX-nối 2 chân 14-15> III.2: Chương trình phần mềm: III.2.1 Keil For 8051(uV3—tools c51+a51). III.2.2 Hyper terminal. III.2.3 Matlab version 7.0. III.2.4 Orcad version 9.2. Hình III.1.1.: Mạch giao tiếp MCU P89LPC922 với PC qua cổng COM. Trang III.1 ‘DC Motor Control Module’ Trang III.2 Hình III.1.2.: Mạch phát triển ứng dụng MCU P89LPC922. Hình III.1.3.: Mạch đọc Encoder sử dụng MCU P89LPC922 (III) Phần cứng và phần mềm Hình III.1.4.:Sơ đồ phần cứng mạch công suất Trang III.3 (IV.I) Giải quyết vấn đề-Định hướng chương trình IV. Giải quyết vấn đề: IV.1. Định hướng chương trình: Muốn điều khiển động cơ vòng kín, có hồi tiếp: (i) Đề tài sử dụng encoder quang để phản hồi vận tốc <sử dụng động cơ có encoder 100xung/vòng>. Nhiệm vụ phải đọc được giá trị này. Dự định sẽ phát triển cách đọc Encoder sử dụng ngắt cạnh ở mode x4 (ii) Áp đặt vào 2 đầu động cơ thay đổi sẽ làm vận tốc động cơ thay đổi nên tín hiệu điều xung có tác động trực tiếp đến vận tốc động cơ. Nhiệm vụ phải có chương trình điều biến xung. (iii)Muốn động cơ đáp ứng đúng vận tốc mong muốn, phải có một khâu điều khiển, có thể dùng khâu điều khiển kinh điển (PID) hoặc(/và kết hợp với) điều khiển hiện đại (xây dựng mô hình tham chiếu, hoặc/và khâu điều khiển mờ) (iv) Giá trị vận tốc và chiều quay của động cơ được ra lệnh từ bàn phím và hiển thị trên màn hình PC bằng giao tiếp RS232. Các giá trị này có thể được nhận từ một MCU master khác qua các giao tiếp I2C, song song,… tùy nhu cầu sử dụng của người thiết kế. (v) Khâu PID cần các thông số để điều khiển vòng kín, nhiệm vụ phải tìm được bộ 3 thông số KP, KI, KD, sử dụng thuật GA kết hợp với ‘lời khuyên của chuyên gia’. Hình IV.2 Định hướng chương trình dạng TOP-DOWN design Trang IV.1 DC Motor Control Module IV. Giải quyết vấn đề: IV.1. Định hướng chương trình: IV.2. Phác thảo các giải thuật: IV.2.1. Đọc Encoder: Hình IV.2.1.1 Cấu hình các nguồn tạo dao động của P89LPC922 Hình IV.2.1.2 Cấu hình của Counter/Timer 0 và cách khai báo khi T0 ở chức năng Counter Hình IV.2.1.3 Cấu hình của WDT ở chức năng Timer Hình IV.2.1.4 Sơ đồ giải thuật cách đọc Encoder bằng Counter và gửi lên PC Muốn điều khiển động cơ bằng vòng kín, có hồi tiếp, trong đề tài này sử dụng encoder quang để phản hồi vận tốc . Về cơ bản, để có được giá trị vận tốc này, ta có thể: (i) Tính số cạnh xuống trong thời gian Ts (sampling time) để suy ra vận tốc trung bình của động cơ.(pulse/Ts) (ii) Tìm thời gian xuất hiện 2 cạnh xuống l tiếp của encoder, từ đó cũng suy ra được vận tốc trung bình của động cơ. iên • Phân tích: i. Nếu sử dụng phương án 1, ta cần 1 timer để định thời gian lấy mẫu, 1 counter để đếm số xung. ii. Nếu sử dụng phương án 2, ta cũng cần 1 timer để định khoảng thời gian và 1 chân (có thể là counter/ngắt ngoài/1 chân In/Out bình thường) iii. Nếu sử dụng phương án 2, thời gian thực thi chiếm hầu hết thời gian hoạt động của MCU nên sẽ dùng một Device riêng biệt làm nhiệm vụ này. iv. Nếu sử dụng phương án 1 sẽ bị giới hạn về mặt đáp ứng do encoder gây ra <số xung quá lớn, tràn Counter/hoặc encoder có độ phân giải thấp thì thời gian lấy mẫu Ts phải lớn để giảm thiểu sai số đo đạc> v. Nếu sử dụng phương án 2, trong thuật giải của MCU MASTER, dùng giao tiếp song song để giảm thiểu thời gian lấy mẫu, tất nhiên cần giao thức bắt tay để đảm bảo nhận đúng dữ liệu, chiều quay của động cơ cũng được ENCODER READER CARD nhận và gởi lên ở bit cao nhất của byte cao. →Lựa chọn: Trong đề tài chọn phương án 1. • Cách thức giải quyết: i. Sử dụng Watchdog Timer để định khoảng thời gian ngắt(Ts). Khoảng thời gian này được lập trình để có thể thay đổi tùy mục đích sử dụng. ii. Sử dụng Timer 0 ở mode 1 để làm counter đếm số xung cạnh ở encoder. Không tính đến trường hợp Counter tràn do vượt quá 65535xung/Ts. <được khống chế trong đề tài bằng phần mềm> Trang IV.2 (IV.2.1)Phác thảo giải thuật – Đọc Encoder Sơ qua về phần cứng của P89LPC922 phục vụ chức năng đếm xung: Hình IV.2.1.1. Cấu hình các nguồn tạo dao động của P89LPC922 Muốn điều khiển động cơ i. Đề tài sử dụng nguồn xung nhịp là thạch anh 11.0592MHz. (High freq) <Khi khai báo Flash User Configuration Byte 1 (UCFG1) chọn UCFG1.0-UCFG1.1- UCFG1.2=000B> bộ DIVM=0, tức là CCLK= 1 oscf → PCLK= 2 oscf (thời gian tính bằng giây ) ii. Cấu hình của Counter/Timer 0 và cách khai báo khi T0 ở chức năng Counter/Timer 16bit: Hình IV.2.1.2. Cấu hình của Counter/Timer 0 và cách khai báo khi T0 ở chức năng Counter Trang IV.3 (IV.2.1)Phác thảo giải thuật – Đọc Encoder i. Cấu hình của WDT ở chức năng Timer: Hình IV.2.1.3. Cấu hình của WDT ở chức năng Timer Cấu hình của WDT ở chức năng Timer Khai báo cấu hình:Các thanh ghi chịu tác động: TMOD, TAMOD,WDFEED1&2, WDCON, IE,IP <Xem thêm ở >. Ở đây, ta dùng chân T0 ở chế độ Input Only. Sơ đồ giải thuật: Hình IV.2.1.4. Sơ đồ giải thuật cách đọc Encoder bằng Counter và gửi lên PC Trang IV.4 (IV.2.1)Phác thảo giải thuật – Đọc Encoder Code: Khởi tạo WD ở chức năng Timer và sinh ra ngắt sau mỗi Ts <Ts có thể chọn trước> cho Counter 1 cập nhật giá trị gửi lên PC và Reset Counter. Phân tích giá trị lớn nhất và nhỏ nhất có thể sinh ngắt từ WDT. Từ công thức: , với PRE=0÷7, WDL=0÷255 ta thấy rằng: ( )52 PREtclks WDL+= +1 1+ • Khi chọn PLCK=11.0592M/2 thì (Ts)min=6µs, (Ts)max=189.6ms • Khi chọn WDCLK=400kHz thì (Ts)min=82.5µs, (Ts)max=2.62s o Trong bài này, ta thống nhất chọn WDCLK, có các công thức sau: o ( )52 1 1 400000 400000 PRE s WDLtclksT + + += = ( ) 5400000 12 1 2PRE s TWDL −→ + = ( ) ( )5400 12 1 2PRE s s TWDL T ms:−→ + = Nếu ta thực hiện các phép nhân chia và so sánh tìm ra số có sai số bé nhất thì tương đối tốn dung lượng bộ nhớ, vậy nên ta chuyển sang cách dùng cấu trúc sau để tính TS.(Có sai số tương đối lớn) o Ts=[1:20]ms→PRE=000 o Ts=(20:2000]ms→PRE=111 Từ định hướng như thế, ta viết chương trình: if(time>20) //Phai be thua 2500ms { WDCON = 0xE5; WDL = 25*time/256-1; } //Thoi gian lay mau >=1ms va <=20ms else //(time>=1&time<=20) { WDCON = 0x05; WDL = (400*time-1)/32-1; } Hay viết gọn lại: (time>20)?( WDCON = 0xE5,WDL = 25*time/256-1):( WDCON = 0x05,WDL = (400*time-1)/32-1); Trong các phép tính, không có số nào vượt quá tầm của số unsigned int nên kết quả chấp nhận(trong sai số tính được) Ghi chú: Source code có tại Phân tích sự khó khăn về mặt đáp ứng của Counter: o Khi xử lý thời gian thực, ta mong muốn sao cho vi điều khiển xử lý nhanh các kết quả tính toán hầu mong tạo được tín hiệu điều khiển thích hợp nhất với tín hiệu hiện tại. o Sự đáp ứng phần cứng bao giờ cũng gây ra những khó khăn, ở đây ta không thể lấy mẫu ở khoảng thời gian quá nhỏ, không phải chỉ vì thời gian đáp ứng của thuật toán xử lý, mà còn vì sự phân giải của sensor là có giới hạn. Ví dụ, trong bài, nếu sử dụng encoder có độ phân giải 100xung/vòng, ta lấy mẫu với chu kì 10ms. Vậy, để có thể đọc được sự sai lệch của 1 xung, động cơ cần có vận tốc tối thiểu: (min 601 :10 100 :1 60 / / s )xung ms xung s v p v p ST ω ω⇒ ⇒ = → = . (Với S là độ phân giải của Sensor) Ở công thức trên, ta thấy có 2 cách để giảm ωmin: ™ Tăng độ phân giải của Encoder. ™ Hoặc/và tăng thời gian lấy mẫu. o Tuy nhiên: min 60sSTω = là một đẳng thức, và trong đẳng thức đó, ta muốn 2 thành phần: ωmin và Ts càng nhỏ càng tốt, vậy chỉ còn cách tăng S, cách này không phải bao Trang IV.5 (IV.2.1)Phác thảo giải thuật – Đọc Encoder giờ cũng thực hiện được vì giá thành/cũng như phần cứng đáp ứng cũng phải có giới hạn. o Hướng khắc phục: sử dụng Encoder có độ phân giải cao hơn, đề nghị đưa ra là 1000xung/vòng. Lúc này, giả sử vẫn dùng Ts=10ms, vậy thì tốc độ để đạt độ phân giải xung là: . Với cách khắc phục này, ta phải phân tích ngưỡng trên của đáp ứng: (min 6 /v pω = ) 11 : 4 1000 : 4000 1 : 4000 1 : 362 11.0592 xung CCLK xung CCLK v v s MHz μ⇒ → ×  , (165840 /v pω→ = ) , giới hạn trên này không cần xét tới trong đề tài này. Phân tích khó khăn khi kéo tải: P Khi kéo tải, vận tốc của động cơ sẽ giảm xuống và dòng qua động cơ tăng lên, lúc này, giá trị encoder gởi về (nếu vẫn giữ thời gian lấy mẫu như trước) sẽ gây rất nhiều khó khăn (do độ phân giải gây ra) để vi điều khiển có thể hiểu được. >>>>Cách giải quyết vấn đề: Ta sẽ điều khiển động cơ bằng cách sau: P Khi gán vận tốc>vận tốc hiện tại, ta mở hàm Vmax, đạt sai số khoảng gần 20%, chuyển sang PID. P Khi gán vận tốc<vận tốc hiện tại, ta mở hàm Vmin, đạt sai số gần 20% chuyển sang dùng PID. Cách làm này, có thể gọi là ‘khóa mờ’, hoặc dùng từ ‘điều khiển theo ngưỡng’. Hai thuật ngữ như nhau trong trường hợp này! Trang IV.6 DC Motor Control Module IV. Giải quyết vấn đề: IV.1. Định hướng chương trình: IV.2. Phác thảo giải thuật IV.2.1. Đọc Encoder: IV.2.2. Điều xung Tín hiệu điều khiển trực tiếp lên mạch công suất chính là tín hiệu điều xung để Driver có thể điều áp cấp cho động cơ đạt tốc độ mong muốn. a) Phân tích: Sử dụng Timer ở Mode 6, ta sẽ có thuận lợi về mặt: không phải lo giải thuật phần mềm và không tốn nhiều thời gian xử lý ngắt; khoảng thời gian Tpwm = 256×PCLK≈44µsÆfpwm≈22kHz gây khá nhiều phiền phức về phần cứng Áp nguồn chia được 256 mức, tức khoảng 12/256=46.875mV mỗi mức. Khối xử lý PWM: Hình IV.2.2.1 Sơ đồ khối điều xung tham khảo Mạch nguyên lý: ™ Mạch nguyên lý của Driver LMD18200 dùng ở chế độ điều biến xung: Hình IV.2.2.2 Mạch nguyên lý của Driver LMD18200 dùng ở chế độ điều biến xung Ở đây, tín hiệu PWM và DIR được MCU P89LPC922 tạo ra. Xử lý khối PWM: (lý thuyết) „ PWM(Pulse width modulation) là quá trình điều biến tín hiệu xung nhằm thực hiện biến đổi áp DC-DC. „ Gọi Tm là chu kì điều biến xung, thời gian ON: Ton, thời gian OFF: Toff, ta có mối quan hệ về áp ra và khoảng Ton, Toff, Tm như sau: 0 on DC TV T = ×V . Hình vẽ bên minh họa. Trang IV.7 (IV.2.2) Thuật toán PWM „ Với Driver, có một số kết quả đáng quan tâm sau: Dòng điều chế khi ấy: b) Sơ qua về phần cứng của MCU P89LPC922: Mô hình Timer1 ở Mode 6. Hình IV.2.2.3 Timer 1 ở mode 6 với chức năng PWM c) Giải thuật: Ghi chú: Source code có tại Trang IV.8 DC Motor Control Module IV. Giải quyết vấn đề: IV.1. Định hướng chương trình: IV.2. Phác thảo giải thuật IV.2.1. Đọc Encoder: IV.2.2. Điều xung IV.2.3. Khâu điều khiển kinh điển PID: IV.2.3.1 Khâu PID rời rạc: 1. P (proportional): Gp(z)=Kp 2. I (integrate) : 1 1( ) 1I I G z K T z− = − Với (xấp xỉ theo hình chữ nhật tới) ( 1) ( ) ( ) kT k T e t dt Te kT− ≈∫ 3. D (derivative): 11( ) (1 )D DD K KzG z z T z T −−= = − „ Kết hợp ba điều trên ta được khâu PID số với hàm truyền rời rạc: 1 1 1 1 1 1( ) (1 ) ( ) (1 ) 1 1 D p I p i d KG z K K T z G z K K K z z T z − − − −= + + − ⇔ = + + −− − „ Qua phép biến đổi ta được: 1 1 1 1 1 1 1 1 ( ) 1 (1 ) ( ) 1 ( )(1 ) ( )( (1 ) (1 ) ) ( ) ( 2 _ (*) c p i d c p i d k k p k k i k d k k k k k U z K K K z E z z U z z E z K z K K z u u K e e K e K e e e u u control value − − − − − − − − = + + −− ⇔ − = − + + − ⇔ − = − + + − + ⇔ = + 1 2 2 ) − − „ (*) chính là giải thuật mà ta sẽ sử dụng trong chương trình điều khiển PID bằng C. „ Nếu tích phân được xấp xỉ theo hình chữ nhật lùi thì ta sẽ có kết quả như sau: 1 1 1( ) (1 )1p i d zG z K K K z z − − −= + + −− . „ Tương tự ta cũng có thể xấp xỉ theo hình thang, tuy nhiên thuật toán lập trình rất phức tạp và chứa thành phần sai số tương lai(dự báo). „ Từ cơ sở lý thuyết trên, ta thấy sẽ phải dùng đến 3 giá trị sai lệch và một giá trị điều khiển quá khứ cho mỗi tín hiệu điều khiển hiện tại, nếu các số trên đều ở định dạng float, sẽ cần 3 phép nhân và 3 phép cộng số float (sử dụng khoảng 2500 lệnh máy tức khoảng 550us) để có kết quả. Tính luôn thời gian ở các lệnh khác, tổng cộng khoảng 1ms để hoàn thành việc cập nhật giá trị hiệu chỉnh PID ở mỗi lần. „ Ta viết gọn lại kết quả trên như sau: ( ) ( ) 1 1 2 1 _ _ _ 2 k k p i d k p d k d k now k last k last last k u u control value control value K K K e K K e K e K e K e K e − 2− − − = + = + + − + + = + + − Với các thông số Know, Klast, Klast_last đều là những hằng số từ bộ ba KP,KI,KD được tính nhờ Matlab. Tại sao lại dùng bộ PID? „ Tăng tốc độ đáp ứng đối với vòng kín của bộ điều khiển. „ Tăng độ chính xác của đáp ứng xác lập. „ Giảm độ vọt lố. „ Bộ PID là khâu hiệu chỉnh tương đối dễ thiết kế và đa dụng. Trang IV.9 (IV.2.3.1)Khâu PID số Nguyên tắc hoạt động của bộ điều khiển PID: ƒ Dựa trên sai số giữa tín hiệu đặt và tín hiệu phản hồi, lúc đầu, ta đặt tín hiệu mong muốn, ngay lúc ấy, tín hiệu phản hồi là 0 nên sai lệch bằng chính tín hiệu đặt, bộ thông số PID sẽ khuyếch đại sai lệch này để tạo tín hiệu điều khiển đối tượng, với tín hiệu điều khiển ấy, đối tượng sẽ chưa thể nào đáp ứng đúng như yêu cầu ngay lập tức, nên sai lệch sẽ vẫn còn và do đó, tín hiệu điều khiển mới sẽ kết hợp tín hiệu điều chỉnh sai lệch mới và tín hiệu điều khiển trước (uk) để tiến dần tới giá trị điều khiển đúng mà tại đó, đối tượng sẽ cho ra giá trị phản hồi đúng như yêu cầu (hoặc gần đúng như yêu cầu với một độ chính xác chấp nhận được do chính phần mềm và/hoặc phần cứng của hệ thống quy định). ƒ Vậy thật sự, bộ điều khiển PID hoạt động dựa trên tín hiệu sai số và “tích lũy giá trị điều khiển đúng” chứ không phải tín hiệu yêu cầu. Mặc dù tín hiệu sai số do tín hiệu yêu cầu và tín hiệu phản hồi về gây ra. (hiệu của sigcommand và sigfeedback). ƒ Khái niệm “tích lũy giá trị điều khiển đúng” dùng để thay thế cho uk-1 trong biểu thức: , giá trị control_value sẽ tiến tới 0 khi sai số không còn, và giá trị điều khiển khi ấy chỉ còn u 1 _k ku u control value−= + k=uk-1, đấy là tín hiệu điều khiển đúng với tín hiệu yêu cầu. ƒ Trong hầu hết các hệ thống có điều khiển bây giờ, khâu PID đều là khâu PID số, vậy nên ảnh hưởng của thời gian lấy mẫu tương đối lớn lên hệ thống điều khiển. o Để tìm bộ thông số Kp, KI, KD ta phải khảo sát được đặc tính động học của động cơ hoặc tìm bằng thử sai. Có thể sử dụng phương pháp Zeigler-Nichols để khảo sát. Trong đề tài này tìm đáp ứng bước của động cơ, từ đó tìm được hàm truyền vòng hở để thiết kế khâu điều khiển dùng thuật toán GA dựa trên ‘lời khuyên của chuyên gia’. o Lấy đáp ứng bước của động cơ: ƒ Phân tích: • Đáp ứng bước của động cơ có được khi ta cấp áp dạng Step và lấy đáp ứng từng thời điểm của động cơ sau đó. PID: (Tìm các thông số nhờ Matlab) Hình IV.2.3.1 Tìm các thông số cho PID nhờ Matlab Trang IV.10 (IV.2.3.1)Khâu PID số Hình IV.2.3.2 Sơ đồ giải thuật khảo sát đặc tính động cơ Dựa trên sơ đồ giải thuật trên, ta sẽ có các hàm sau: Khởi tạo: init() o timer_init(); o watchdog_init(Ts); o watchdogrtc_isrinit(); o uart_init(); Khởi động: start(); o PWM_status=1; o Dir=1; o Brake=0; o timers_starttimer0(); o watchdog_start(); o EA=1; Xử lý trung tâm: chờ và không làm gì cả o while(1); Sự biến: chỉ có ngắt từ WDT và ngắt ấy cưỡng bức sinh ra ngắt Counter 0. o watchdogrtc_isr(); o timers_isr0(); Trang IV.11 (IV.2.3.1)Khâu PID số Kết thúc lấy mẫu: khi có 250 mẫu liên tiếp có giá trị sai lệch nhau chỉ ±1 xung. o compare(); o timers_stoptimer0(); o watchdog_stop(); o stop(); //stop=printf(“\nQua trinh lay mau ket thuc”); Kết quả thu được: dùng Hyper Terminal (baud rate=115200,DTR=1,RTS=1,No parity) sẽ là một ma trận cột có giá trị chỉ số vạch encoder đọc được trong thời gian lấy mẫu TS và số mẫu được lấy chính là số hàng của vector đó. Cách lấy đặc tính vòng hở của động cơ: Xác định áp toàn thang của nguồn là bao nhiêu? (Vs) ta đặt áp ấy vào động cơ: 1. Cho thời gian lấy mẫu lớn (1giây-2giây) để lấy tốc độ xác lập của động cơ? Lấy khoảng 100 mẫu. 1.1. Vcc=12V 1.2. ωxl=sum(ω)/length(ω)≈7800(xung/2.5s)≈1900(v/phút) Xác định đặc tính quá độ của động cơ: 2. Giữ nguyên áp đặt vào, thay khoảng thời gian lấy mẫu xuống TS(ms.) 2.1. Vcc=12V 2.2. Đặc tính quá độ: ( ) ( ) ( )0 1 at btt b ae e a b b a ω ω − −= + +− − tức ( ) ( )( ) KH s s a s b = + + , tìm các giá trị a,b thường khó khăn vì độ phân giải của encoder không cao nên không cho ta thấy điểm uốn của đồ thị, vì thế, ta sẽ xấp xỉ mô hình động cơ là bậc nhất: ( ) ( ) KH s s a = + và ( ) 0 0 1 at t a e ω ω ω −= + >>>General model Exp1: f1(x) = a*exp(b*x) P Tìm thông số đáng tin cậy: ( )Giá trị: 0 0 1 at t a e ω ω ω −= + , (không đơn vị); thử tìm bằng thống kê xem kết quả có hội tụ hay không? Matlab cho ta mô hình động cơ là: ( ) ( ) ( ) 25 25 KH s s a s = =+ + . Trang IV.12 (IV.2.3.1)Khâu PID số Hình IV.2.3.3 Biểu diễn kết quả với Ts=9ms Sau 10 mẫu thử, ta thu được hình: Hình IV.2.3.4 Xấp xỉ các kết quả khảo sát bằng một hàm truyền không đơn vị Trang IV.13 (IV.2.3.1)Khâu PID số Kết quả là chấp nhận được! Có 2 nguyên nhân gây sai lệch chính: thời gian lấy mẫu và sự đáp ứng trong Ts của encoder. Khi thời gian lấy mẫu giảm, sự lệch 1 xung cũng gây ra sai số hệ thống tương đối lớn, khi thời gian lấy mẫu tăng, số mẫu lấy trong thời gian quá độ quá ít không đủ để thể hiện đặc tính động cơ ÆThông số gần đúng của động cơ mà ta chọn sẽ là: a=25. Từ đó: ( ) ( ) ( ) 25 25 KH s s a s = =+ + Hình vẽ với giá trị Vmax chính là ngưỡng đáp ứng trên của động cơ, ta không thể qua được bên trái mặt phẳng quy định bởi hàm truyền H(s). Hàm truyền H(s) xây dựng trên không dùng một đơn vị nào để chuẩn hóa cả! Để điều khiển vận tốc, ta có thể nhân H(s) với một hệ số K nào đó. Ví dụ như: o Nếu đầu vào H(s) là vận tốc yêu cầu và đầu ra H(s) là áp mong muốn thì ta có quan hệ: ƒ U=12VDC Æ v=31.7(v/g) ÆK=12/31.7=0.378 ( 2 V s π × )=0.060 ( )V s× . o Tuy nhiên, trong phạm vi đề tài này, người viết lại có chủ định dùng một hàm truyền không đơn vị. Bởi vậy, sẽ chuẩn hóa các tín hiệu vào và ra! Trang IV.14 DC Motor Control Module IV. Giải quyết vấn đề: IV.1. Định hướng chương trình: IV.2. Phác thảo giải thuật IV.2.1. Đọc Encoder: IV.2.2. Điều xung IV.2.3. Khâu điều khiển kinh điển PID: IV.2.3.1 Khâu PID rời rạc: IV.2.3.2 Thiết kế khâu điều khiển mờ PID rời rạc dùng MATLAB(Tìm bộ thông số Kp,Ki,Kd bằng thuật toán GA kết hợp neural): Trong matlab, ta xây dựng lại mô hình động cơ và các tính năng của MCU để mô phỏng: Hình IV.2.3.1 Sơ đồ mô phỏng động cơ DC xây dựng trong Matlab Trong đó, khối chức năng của MCU P89LPC922 là: Hình IV.2.3.2 Chức năng của MCU P89LPC922 mô phỏng trong Matlab Với khóa mờ là công tắc được xây dựng theo quy luật: Hình IV.2.3.3 Khóa mờ xây dựng luật điều khiển Trang IV.15 (IV.2.3.2) Thuật toán GA-Neural để tìm bộ thông số PID Khối PID rời rạc được xây dựng như sau: Hình IV.2.3.4 Khối PID rời rạc xây dựng trong Matlab Cách tìm bộ thông số PID bằng thuật toán GA: – Trong thời đại máy tính số hiện nay, cách sử dụng vòng lặp hoặc khởi tạo nhiều mẫu thử ngẫu nhiên để tìm giá trị tốt nhất thỏa mãn yêu cầu đặt ra thường được dùng khi mà cách giải bằng lý thuyết toán học kinh điển quá phức tạp, hoặc không cho lời giải tường minh. – Thuật toán GA (Genetic algorithm) khai sinh dựa trên thuyết tiến hóa của Darwin, định luật di truyền của Mendel đặt cơ sở rất lớn trên máy tính số. – Trong phạm vi ứng dụng của đề tài, với công cụ hỗ trợ Matlab, ta sẽ kết hợp một mạng Neural (nếp nhăn của võ não hay tri thức) với luật lựa chọn cá thể trong quần thể chỉ định, bằng các phép lai tạo ngẫu nhiên và chọn lọc các cá thể để tìm ra cá thể trội nhất sống sót sau phép đào thải của hàm phạt ta xây dựng! a) Nếp nhăn vỏ não: ƒ Nguồn gốc tri thức: Cơ sở toán học xây dựng dựa trên lý thuyết đưa ra của các tác giả: Guillermo J. Silva, Aniruddha Datta, S. P. Bhattacharyya: Vùng khả tồn của bộ thông số KP, KI, KD, trong không gian số thực ( )<Xem tài liệu (8) và (11)> Đấy chính là quần thể được chọn trong thuật toán GA. 3\ ƒ Thuật xấp xỉ: ƒ Xấp xỉ thứ 1:Với hàm truyền đã tìm được, so sánh với dạng hàm truyền chuẩn của các tác giả trên đưa ra, ta có thể lấy L=0.001s (tức 1/10 thời gian lấy mẫu). ƒ Xấp xỉ thứ 2: ta giả định đang làm trên mô hình liên tục chứ không phải rời rạc. Kết quả với hàm truyền không đơn vị: T=0.04,L=0.001: quần thể được chọn <KP trục z, KI trục x, KD trục y> Hình IV.2.3.5 Quần thể được chọn nhờ lời khuyên của chuyên gia Trang IV.16 (IV.2.3.2) Thuật toán GA-Neural để tìm bộ thông số PID b) Phép chọn lọc và lai tạo: – Tìm cá thể thích nghi bằng tái sinh chọn lọc ngẫu nhiên: Trong quần thể chỉ định, các cá thể tồn tại là độc lập và xác xuất tồn tại như nhau khi chưa có biến cố đào thải của tự nhiên, khi xảy ra biến động về điều kiện sinh tồn, những cá thể thích nghi được sẽ tiếp tục tồn tại, các cá thể không thích nghi hoặc sẽ bị đào thải, hoặc phải tiến hóa thành dạng khác, phép chọn lọc đầu sa thải toàn bộ những cá thể không thích nghi. Ta giữ lại phần quần thể đã thích nghi ban đầu hoặc sẽ chọn trong quần thể đấy một vài cá thể tốt nhất để lai ghép. ƒ Thuật GA tái sinh: Lấy ngẫu nhiên một lượng lớn cá thể(bộ thông số KP, KI, KD) trong quần thể được chọn, thử độ thích nghi của chúng với hàm phạt: min(ITAE(closeloop(PID.HS))) cá thể tốt nhất sẽ được chọn. – Lai tạo cá thể trội để tìm cá thể mạnh: Từ cá thể tìm được bằng hàm phạt trên, ta xây dựng thêm luật sinh tồn: L(POT,steady_state_error,settling_time), cá thể sinh ra bằng cách giữ cố định KP, lặp vòng KI và KD, tìm cá thể tốt nhất trong quần thể lai mới. Đấy có thể là cá thể được chọn nếu đã thỏa yêu cầu đặt ra của ta. Nếu không, phải cho KP thay đổi, hoặc bắt đầu lại thuật tóan tái sinh để tìm cá thể trội mới! Có thể gặp trường hợp xấu, trong quần thể không có cá thể nào đáp ứng nổi với luật sinh tồn, lúc đó, buộc ta chấp nhận phải thay đổi lại luật để tìm cá thể thích nghi, nếu không như thế, toàn bộ cấu trúc loài bị diệt vong! Bài toán vô nghiệm! ƒ Thuật GA lai tạo: Lấy cá thể tồn tại sau biến cố ban đầu, cho phép nó sinh sản thành những tập đoàn cá thể mới, thử độ thích nghi của chúng với luật sinh tồn: f(POT,state_error,settling_time), cá thể nào đáp ứng được các yêu cầu đặt ra sẽ tồn tại, và tất cả các cá thể khác bị bỏ đi, không xét tới nữa, thuật lai tạo kết thúc. Ghi chú: Các hàm ITAE, POT, state_error, settling_time có trên trong phần Matlab> Đáp ứng của hệ thống với bộ thông số: (2,1,0.0005) Hình IV.2.3.6 Đáp ứng của hệ thống khi tín hiệu thử là 1000+500sin(0.02t) (v/p) chu kì lệnh 1 giây Trang IV.17 (IV.2.3.2) Thuật toán GA-Neural để tìm bộ thông số PID Sai số lý thuyết: Hình IV.2.3.7 Hình phóng to sai số giữa tín hiệu đặc và tín hiệu đáp ứng (vòng/phút) với chu kì lệnh là 1 giây. Theo lý thuyết và mô phỏng, kết quả tương đối tốt, bây giờ, ta thực hiện vào giải thuật điều khiển cho MCU P89LPC922. Hình IV.2.3.8 Đáp ứng của hệ thống thực khi tín hiệu đặt là 20+10*sin(0.05*t) với chu kì lệnh chọn là 10xung/lệnh. Trang IV.18 (IV.2.3.2) Thuật toán GA-Neural để tìm bộ thông số PID Nhận xét: Do sai số của phần cứng nên ta chưa thể phân tích giá trị đáp ứng có tốt hay không? Chỉ có thể nói giá trị xác lập đúng với tín hiệu đặt và sai số xác lập bằng sai số phần cứng. Chương trình giải thuật có thể viết như sau: /************************************************************************ Chuc nang : Ham PID la khau tao tin hieu dieu khien de tao tin hieu dieu xung dua vao chan PWM. Dau vao : Khong co Dau ra : Khong co, gia tri dieu khien cap nhat trong ham Tac gia : Bui Trung Hieu, Webmaster: Su dung : Duoc phep su dung mien phi voi moi muc dich. Khoi tao : 9h59PM ngay 10 thang 11 nam 2005 Lien he : Moi trao doi xin lien lac qua email: buitrunghieu@khvt.com Tai lieu tham khao cho khau PID so: -Sach "LT Dieu Khien tu dong" - NXB DHQG TPHCM Nguyen Thi Phuong Ha (Chu bien) -Huynh Thai Hoang -Co tai -“The PID Control Algorithm: ‘How it works, how to tune it, and how to use it’- John A. Shaw Cac thong so Kp,Ki,Kd cho khau PID so duoc tim bang chuong trinh Matlab 7.0 (C) Mathworks /*************************************************************************/ void PID (void) { double temp; temp=(double)control_value/k1; //k1 la he so ho*.p thu*’c temp+=(double)Know*(double)ek+(double)Klast*(double)ekp1+(double)Klast_last*(double)ekp2; temp=temp*k1; (temp>255)?(temp=255):(temp<20?temp=20:(temp=temp)); //Khau bao hoa control_value=(unsigned char)(temp); timers_setdutycycle1(control_value); } Trang IV.19 (IV.2.3.2) Thuật toán GA-Neural để tìm bộ thông số PID Sơ đồ giải thuật tham khảo: Hình IV.2.3.9 Sơ đồ giải thuật điều khiển vòng kín chưa chỉnh hướng chỉ dùng khâu PID kinh điển Trang IV.20 (IV.2.3.2) Thuật toán GA-Neural để tìm bộ thông số PID Kết quả thực tế: Khi chỉ dùng khâu PID (2,1,0.0005) Hình IV.2.3.10 Đáp ứng vòng kín khi chỉ có khâu PID với các tốc độ khác nhau Nhận xét: ™ Đáp ứng quá độ của hệ thống tương đối tốt. Khâu PID là tốt với đáp ứng xác lập, sai số xác lập bằng chính sai số của phần cứng.(+/- 1 encoder/Ts). ™ Khi thử gây nhiễu tải, đáp ứng của hệ thống tương đối nhanh. Đạt yêu cầu đặt ra. ™ Mặc dù kết quả không hoàn toàn giống như mô phỏng nhưng chấp nhận được do khi mô phỏng, ta đã bỏ qua sai số và giới hạn phần cứng. Khi dùng PID kết hợp với ON-OFF: Không dẫn kết quả ra ở đây vì điều khiển kết hợp như vậy tốt nhất nên dùng lúc kéo tải, khi moment quán tính lớn. Trang IV.21 DC Motor Control Module IV. Giải quyết vấn đề: IV.1. Định hướng chương trình: IV.2. Phác thảo giải thuật IV.2.1. Đọc Encoder: IV.2.2. Điều xung IV.2.3. Khâu điều khiển kinh điển PID: IV.2.3.1 Khâu PID rời rạc: IV.2.3.2 Thiết kế khâu điều khiển mờ PID rời rạc dùng MATLAB(Tìm bộ thông số Kp,Ki,Kd bằng thuật toán GA kết hợp mạng neural): IV.2.3.3 Mở rộng chiến lược điều khiển, tìm cách tối ưu hóa đáp ứng quá độ của hệ thống-nhận dạng đối tượng và điều khiển sử dụng mạng neural truyền thẳng: ƒ Nhận dạng các thông số mô hình-huấn luyện mạng: Ta có thể nhận dạng các đặc tính của động cơ DC và xây dựng một hàm vận tốc theo dòng điện và điện áp điều biến xung, tuy nhiên, với MCU P89LPC922, ta chỉ nên nhận dạng một phần: hàm PWM=f(v_command). Cách thức tiến hành như sau: ƒ Lần lượt tăng duty cycle từ min đến max để có được đặc tuyến dutycycle theo vận tốc. Sơ đồ giải thuật: Trang IV.22 (IV.2.3.3) Xây dựng mô hình và điều khiển sử dụng mạng nơron Hình IV.2.3.1 Sơ đồ giải thuật khảo sát đặc tính động cơ Trang IV.23 (IV.2.3.3) Xây dựng mô hình và điều khiển sử dụng mạng nơron Xử lý bằng Matlab, ta tìm được mối quan hệ đáng chú ý sau: Hình IV.2.3.2 Đặc tính điều xung theo vận tốc (xung/Ts) Phương trình đặc tính tìm trên được sử dụng để làm mô hình tham chiếu chuẩn cho động cơ. Kết quả khi dùng các thông số nhận dạng để điều khiển theo vòng hở: Trang IV.24 (IV.2.3.3) Xây dựng mô hình và điều khiển sử dụng mạng nơron Hình IV.2.3.3 Đáp ứng khi vận tốc thay đổi của khâu hiệu chỉnh kết hợp Có tại: Nhận xét: sai số xác lập bằng với sai số quy định bởi phần cứng. đáp ứng quá độ rất tốt, độ vọt lố rất ít, động cơ nhanh chóng tìm được giá trị xác lập đúng. Đến đây, ta có thêm phương án lựa chọn để điều khiển thích hợp theo yêu cầu đặt ra: ƒ Đáp ứng nhanh. ƒ Vọt lố ít. ƒ Không có sai số xác lập. ƒ Chống nhiễu? ƒ Nhiễu tải ƒ Nhiễu đo Phần này không phải đi xây dựng hệ MRAS, các thông số của mô hình được nhận dạng tương đối đầy đủ, người viết không có ý định xây dựng một MRAS với các thông số cập nhật theo luật MIT trong khi đang sử dụng nhân điều khiển 8bit và phần nhận dạng thông qua chương trình trung gian chứ không điều khiển ‘online’ và chạy ‘Real time’! Phần trình bày trên được viết theo ý định điều khiển vòng hở sử dụng mạng nơron sau khi đi tìm(nhận dạng) mối quan hệ PWM(velocity.) Quá trình điều khiển vòng hở sau nhận dạng các thông số như trên đúng trong trường hợp tải là cố định nếu chỉ có thông số phản hồi từ encoder. Để xây dựng một mô hình tốt hơn, cần phải cập nhật thêm thông số phản hồi khác như dòng điện. Tất nhiên, lúc ấy, hàm xây dựng PWM=f(velocity,current) sẽ tương đối phức tạp. Tuy ta không quan tâm đến mức độ phức tạp của hàm sẽ xây dựng nhưng sẽ phải quan tâm đến thời gian thực hiện để tìm ra giá trị PWM đúng của MCU từ hàm trên. Trang IV.25 DC Motor Control Module V. Các vấn đề mở rộng, những hạn chế và hướng giải quyết: Bộ thông số PID khi dùng GA kết hợp với tri thức của chuyên gia đã giải quyết bài toán một cách tổng quát, đến đây, ta đã hoàn toàn bỏ đi các hành động can thiệp của con người trong tất cả các khâu thiết kế! Cách tìm bộ thông số PID theo Ziegler-Nichols không phải tổng quát, không đạt tối ưu, và ta sẽ gặp nhiều điều phiền phức nếu cố tìm thông số PID theo cách kinh điển này trong khi phần cứng hạn chế để có thể tìm được thời hằng Tc (hằng số thời gian điện cơ) của động cơ. Với cách áp dụng lý thuyết mới của các tác giả Guillermo J. Silva, Aniruddha Datta, S. P. Bhattacharyya (8) vùng khả nghiệm sẽ luôn tồn tại nếu hàm truyền của đối tượng ban đầu có thể điều khiển được bằng khâu PID. Áp dụng lý thuyết này để tìm các thông số PID thích hợp trong điều khiển mờ thích nghi gián tiếp cũng là một hướng giải quyết bài toán, cách ấy được xem là một phương án kết hợp để mô hình có thể giải tối ưu theo nhiều lựa chọn. Yêu cầu chống nhiễu tải và nhiễu đo cũng được đặt ra: o Nếu sử dụng P89LPC922 và không dùng thêm sensor ngoài, ta thật khó khăn để chống nhiễu đo, giá trị đo hoàn toàn phụ thuộc vào encoder quang, mà sự hạn chế của encoder thì đã được phân tích trên. Nếu sử dụng P89LPC952, có thể hạn chế bằng dùng thêm hồi tiếp dòng từ driver của động cơ bằng bộ ADC10 bit. o Với nhiễu tải, nếu xây dựng mô hình tham chiếu đầy đủ, hoàn toàn có thể khắc phục sự cố với mức độ cho phép trong phạm vi của công suất toàn mạch. Cách xây dựng hệ STR để chống nhiễu tải theo phương pháp bình phương cực tiểu tổng quát cũng đã được xét tới nhưng không thể thực thi trong quá trình thực nghiệm do thuật toán quá phức tạp để MCU8bit có thể đảm đương. Ý định xây dựng một bộ điều khiển theo yêu cầu người dùng cũng được đặt ra: với các thông số POT, SETTLING TIME, STEADY STATE ERROR tùy định trong thuật toán GA, ta hoàn toàn có thể thỏa mãn nếu có cá thể tồn tại sau luật sinh tồn L(POT,steady_state_error,settling_time). ☺ Trang V.1 DC Motor Control Module VI. Kết luận: Cách điều khiển động cơ hoàn chỉnh trong đề tài này sẽ là sự kết hợp giữa khóa mờ, PID kinh điển và tham chiếu mô hình chuẩn. Một khâu lai kết hợp nhiều lý thuyết có thể phức tạo về thuật toán xử lý nhưng sẽ tốt hơn về đáp ứng. Thật ra, với bộ thông số PID tìm nhờ GA, ta hoàn toàn có thể sử dụng bộ điều khiển kinh điển để đáp ứng yêu cầu đặt ra của bài toán, việc xây dựng thêm mô hình diễn tả đầy đủ đặc tính của động cơ được người viết xem là một phương án để đối phó với các biến loạn của nhiễu tác động lên hệ thống. Với lý thuyết trình bày, con người không cần can thiệp vào các khâu thiết kế, ta sẽ quen dần với việc nhờ máy móc làm toàn bộ các công việc mà con người đã dạy cho nó! Bằng việc sử dụng nhân điều khiển P89LPC922 với các tính năng tương đối mạnh của nó, ta có thể làm được nhiều việc cho các mô hình điều khiển nhỏ, rất thích hợp cho đề tài của sinh viên. Ứng dụng của đề tài: i. Là modul cho các đối tượng điều khiển cần dẫn động, hoặc mô hình đối tượng cần công suất thay đổi. Rất thích hợp cho các đội thi Robocon năm nay. ☺ ii. Trong phạm vi ứng dụng rộng hơn, mang tính thương mại, có thể tạo thành modul điều khiển động cơ hòan thiện thỏa mãn các chuẩn thông thường<về giao tiếp ngoại vi, chất lượng cần đạt, các thông số kĩ thuật khác về đầu vào- đầu ra của sản phẩm> iii. Bằng việc giao tiếp máy tính, đề tài là mô hình tương đối tốt để điều khiển các đối tượng khác, như lò nhiệt chẳng hạn, khi đó, thông số chỉnh đổi là giá trị cập nhật của sensor: thay vì cần thông tin từ encoder, ta cần thông tin từ sensor nhiệt. VII. Dự định: Sử dụng họ ARM32 bits của Philips (LPC2214) nhằm phát triển công việc tính toán! Trang VI.1 (VII) Tài liệu tham khảo VIII. Tài liệu tham khảo: (1) Giáo trình môn vi xử lý-ThS Hồ Trung Mỹ-NXB ĐHQG TPHCM. (2) Giáo trình môn Lý thuyết điều khiển tự động-Phó GS-TS Nguyễn Thị Phương Hà- TS Huỳnh Thái Hoàng- NXB ĐHQG TPHCM. (3) Giáo trình môn Lý thuyết điều khiển hiện đại-Phó GS-TS Nguyễn Thị Phương Hà- NXB ĐHQG TPHCM tháng 8 năm 2005. (4) Giáo trình môn Điện tử công suất-ThS Huỳnh Văn Kiểm-Tài liệu học kì 2 năm học 2004-2005. (5) Datasheets và User manual MCU P89LPC920/921/922 (Philips Semiconductor) (6) The PID Control Algorithm: ‘How it works, how to tune it, and how to use it’- John A. Shaw- Process Control Solutions. (7) Neural network for controls-Edited by W.Thomas Miller, III, Richard S.Sutton and Paul J.Werbos-The MIT Press. (8) New Results on the Synthesis of PID Controllers-Guillermo J. Silva, Aniruddha Datta, S. P. Bhattacharyya-IEEE TRANSACTIONS ON AUTOMATIC CONTROL, VOL. 47, NO. 2, FEBRUARY 2002. (9) Fuzzy Control-Kelvin M.Passino-Stephen Yurkovich-Department of Electrical Engineering-The Ohio State University-Addison Wesley Longman Inc. (10) Biomimicry-Kelvin M.Passino-Stephen Yurkovich-Department of Electrical Engineering-The Ohio State University-Addison Wesley Longman Inc. (11) Đề tài thảo luận LTĐKTĐ nhóm 8 lớp DD02KSTN: ‘Những kết quả mới về tổng hợp bộ điều khiển PID’-Nguyễn Đức Hoàng, Võ Lê Duy Tân,Vũ Hoàng Dũng- Khoa học và tuổi trẻ. (12) C51 Primer: ‘An Introduction To The Use Of The Keil C51 Compiler On The 8051 Family’, ©Hitex Ltd. (13) Application Note: driver LMD18200 (©National Semiconductor)  Từ khóa tìm kiếm các tài liệu sử dụng: • English: Neural network, PID, Genetic Algorithms (GA), reference model, classical control, modern control, hybrid method, P89LPC922, LMD18200, power electronic, micro controller, real time operation. • Tiếng Việt: mạng nơron, điều khiển hiện đại, điều khiển kinh điển, mô hình tham chiếu, điện tử công suất, vi xử lý, điều khiển thời gian thực. Trang VII.1 Các phiên bản cập nhật Các phiên bản cập nhật: Ngày 8/10/2005: Sử dụng mô hình tham chiếu để điều khiển Ngày 20/11/2005: Sử dụng khâu PID kinh điển kết hợp Fuzzy switch. Ngày 30/11/2005: Điều khiển kết hợp PID kinh điển và mô hình tham chiếu. Ngày 12/12/2005: Sử dụng lý thuyết mới để tìm bộ thông số PID-GA sử dụng tri thức chuyên gia. Ngày 16/12/2005: Chỉnh sửa form trình bày. Ngày 23/12/2005: Sửa lại phần lý thuyết về mô hình tham chiếu. Hochiminh city University of Technology, Saturday, December 24, 2005 KHOA HỌC VÀ TUỔI TRẺ Notes:  Bản cập nhật mới nhất có ở trang:  Các giải thuật và code của phần này có ghi chi tiết trong Files pdf. -----•@•----- Phiên bản cập nhật: 200512231800 -----•@•-----

Các file đính kèm theo tài liệu này:

  • pdfỨng dụng lý thuyết hiện đại thiết kế modul điều khiển động cơ DC.pdf
Luận văn liên quan