Điều khiển động cơ bằng PID

27 1.5K 15
Điều khiển động cơ bằng 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

CHƯƠNG 1 TỔNG QUAN....................................................................................................11.1. Động cơ DC ..................................................................................................................11.1.1. Động cơ DC Servo................................................................................................11.1.2. Điều khiển tốc độ động cơ...................................................................................11.2. Phương pháp điều xung PWM (Pulse Width Modulation) .....................................21.3. Giới thiệu về Arduino ..................................................................................................21.3.1. Arduino là gì?........................................................................................................21.3.2. Board Arduino Uno ..............................................................................................31.4. PID..................................................................................................................................41.4.1 Giới thiệu PID ........................................................................................................41.4.2. Hàm truyền ............................................................................................................51.4.3. Đặc tính bộ điều khiển PID .................................................................................5CHƯƠNG 2 THIẾT KẾ MÔ HÌNH ĐIỀU KHIỂN TỐC ĐỘ ĐỘNG CƠ BẰNG PID.72.1. Sơ đồ khối hệ thống .....................................................................................................72.2. Lưu đồ giải thuật...........................................................................................................82.3. Cách đấu dây mô hình..................................................................................................82.3.1. Arduino Uno với L298N......................................................................................82.3.2. L298N với DC Servo ...........................................................................................82.3.3. Encoder với Arduino Uno....................................................................................92.4. Tìm hệ số cho bộ điều khiển PID ...............................................................................92.4.1. Lấy mẫu Encoder ..................................................................................................92.4.2 Khảo sát vòng hở để xác định mô hình động cơ bằng phương pháp thựcnghiệm............................................................................................................................ 112.4.3. Điều khiển vòng kín .......................................................................................... 12ii2.4.4 Các bước tìm hệ số Kp, Ki, Kd......................................................................... 122.4. Code Arduino ............................................................................................................. 162.4. Giao diện điều khiển ................................................................................................. 20PHỤ LỤC............................................................................................................................... 21Kinh phí thực hiện............................................................................................................. 21Code Matlab vẽ đồ thị đáp ứng vòng hở của động cơ.................................................. 21Code Matlab tìm hàm truyền của động cơ..................................................................... 23

BỘ GIÁO DỤC - ĐÀO TẠO TRƯỜNG ĐẠI HỌC QUỐC TẾ HỒNG BÀNG KHOA ĐIỆN TỬ - TỰ ĐỘNG HÓA - - BÁO CÁO BÀI TẬP LỚN SỞ ĐIỀU KHIỂN TỰ ĐỘNG Đề tài: Điều khiển tốc độ động PID Giảng viên hướng dẫn : TS Nguyễn Trọng Tài Sinh viên thực : Phạm Thị Vân 141103007 : Trần Chánh Phát 141102044 Lớp : DT14DH – DT1 TP.HCM 06/2016 MỤC LỤC CHƯƠNG TỔNG QUAN 1.1 Động DC 1.1.1 Động DC Servo 1.1.2 Điều khiển tốc độ động 1.2 Phương pháp điều xung PWM (Pulse Width Modulation) .2 1.3 Giới thiệu Arduino 1.3.1 Arduino gì? 1.3.2 Board Arduino Uno 1.4 PID 1.4.1 Giới thiệu PID 1.4.2 Hàm truyền 1.4.3 Đặc tính điều khiển PID CHƯƠNG THIẾT KẾ MÔ HÌNH ĐIỀU KHIỂN TỐC ĐỘ ĐỘNG BẰNG PID.7 2.1 Sơ đồ khối hệ thống .7 2.2 Lưu đồ giải thuật 2.3 Cách đấu dây mô hình 2.3.1 Arduino Uno với L298N 2.3.2 L298N với DC Servo 2.3.3 Encoder với Arduino Uno 2.4 Tìm hệ số cho điều khiển PID .9 2.4.1 Lấy mẫu Encoder 2.4.2 Khảo sát vòng hở để xác định mô hình động phương pháp thực nghiệm 11 2.4.3 Điều khiển vòng kín 12 i 2.4.4 Các bước tìm hệ số Kp, Ki, Kd 12 2.4 Code Arduino 16 2.4 Giao diện điều khiển 20 PHỤ LỤC 21 Kinh phí thực 21 Code Matlab vẽ đồ thị đáp ứng vòng hở động 21 Code Matlab tìm hàm truyền động 23 ii CHƯƠNG TỔNG QUAN 1.1 Động DC 1.1.1 Động DC Servo Động điện máy điện dùng để chuyển đổi lượng điện sang lượng Nguyên tắc hoạt động: phần động điện gồm phần đứng yên (stator) phần chuyển động (rotor) quấn nhiều vòng dây dẫn hay nam châm vĩnh cửu Khi cuộn dây rotor stator nối với nguồn điện, xung quanh tồn từ trường, tương tác từ trường rotor stator tạo chuyển động quay rotor quanh trục hay mômen Thông số động DC Servo dùng làm đề tài: Kiểu: DSE38BE27-001 Điện áp cấp cho động cơ: 24VDC Tốc độ: 4400 vòng/phút Điện áp cấp cho encoder: 5VDC Encoder: 108 xung/vòng Số encoder: encoder đặt lệch 90 o * Ghi chú: Để đơn giản thuận tiện việc làm mô hình, sử dụng điện áp cấp cho DC Servo 12V Việc sử dụng điện áp nửa điện áp định mức động làm giảm tốc độ quay động xuống khoảng nửa (2200 vòng/phút) so với số vòng quay sử dụng điện áp quy định (4400 vòng/phút) 1.1.2 Điều khiển tốc độ động Thông thường, tốc độ quay động điện chiều tỷ lệ với điện áp đặt vào ngẫu lực quay tỷ lệ với dòng điện, ngẫu lực quay lớn động khởi động (nghĩa động bắt đầu quay) động cần dòng điện lớn để khởi động Điều khiển tốc độ động cách thay đổi giá trị điện áp dòng vào động 1.2 Phương pháp điều xung PWM (Pulse Width Modulation) Phương pháp điều xung PWM (Pulse Width Modulation) phương pháp điều chỉnh điện áp tải, hay nói cách khác, phương pháp điều chế dựa thay đổi độ rộng chuỗi xung vuông, dẫn đến thay đổi điện áp PWM ứng dụng nhiều điều khiển Điển hình mà thường hay gặp điều khiển động xung áp, điều áp Sử dụng PWM điều khiển độ nhanh chậm động hay cao nữa, dùng để điều khiển ổn định tốc độ động Đây phương pháp thực theo nguyên tắc đóng ngắt nguồn với tải cách chu kì theo luật điều chỉnh thời gian đóng ngắt Phần tử thực nhiệm vụ báo cáo Module L298N Thông số kỹ thuật: Driver: Tích hợp mạch cầu H Điện áp điều khiển động cơ: ~ 12V Dòng tối đa qua cầu H: 2A Điện áp tín hiệu điều khiển: ~ 7V Dòng tín hiệu điều khiển: ~ 36mA Để tạo PWM hai cách thông dụng : Bằng phần cứng phần mềm:  Trong phần cứng tạo phương pháp so sánh trực tiếp từ IC dao động tạo xung vuông : 555, LM556  Trong phần mền tạo chip lập trình Tạo phần mền độ xác cao tạo phần cứng 1.3 Giới thiệu Arduino 1.3.1 Arduino gì? Arduino tảng mã nguồn mở sử dụng để xây dựng ứng dụng điện tử Arduino gồm board mạch lập trình (thường gọi vi điều khiển) phần mềm hỗ trợ phát triển tích hợp IDE (Integrated Development Environment) dùng để soạn thảo, biên dịch code nạp chương trình cho board Arduino ngày phổ biến cho người bắt đầu tìm hiểu điện tử đơn giản, hiệu dễ tiếp cận Không giống loại vi điều khiển khác, Arduino không cần phải công cụ chuyên biệt để phụ vụ việc nạp code, ví dụ để nạp code cho PIC cần phải Pic Kit Đối với Arduino đơn giản, ta kết nối với máy tính cáp USB Thêm vào việc lập trình cho Arduino dễ dàng, trình biên dịch Arduino IDE sử dụng phiên đơn giản hóa ngôn ngữ C++ 1.3.2 Board Arduino Uno Một board thông dụng, sử dụng nhiều board Arduino Uno Dòng phát triển tới hệ thứ với tên gọi Arduino Uno Revision (Arduino Uno R3) Hình 1.1: Board Arduino Uno R3 Vi điều khiển ATmega328P (họ bit) Điện áp hoạt động 5V Điện áp vào khuyên dùng 7-12V Điện áp vào giới hạn 6-20V Digital I/O pin 14 (trong chân PWM) PWM Digital I/O Pins Analog Input Pins (độ phân giải 10 bit) Cường độ dòng điện I/O pin 20 mA Cường độ dòng điện 3.3V pin 50 mA 32 KB (ATmega328P) 0.5 KB sử dụng bootloader Flash Memory SRAM KB (ATmega328P) EEPROM KB (ATmega328P) Tốc độ xung nhịp 16 MHz Chiều dài 68.6 mm Chiều rộng 53.4 mm Trọng lượng 25 g Bảng 1.1: Thông số board Arduino Uno 1.4 PID 1.4.1 Giới thiệu PID Bộ điều khiển PID (A proportional integral derivative controller) điều khiển sử dụng kỹ thuật điều khiển theo vòng lặp dụng kỹ thuật điều khiển theo vòng lặp hồi tiếp sử dụng rộng rãi hệ thống điều khiển tự động Một điều khiển PID cố gắng hiệu chỉnh sai lệch tín hiệu ngõ ngõ vào sau đưa một tín hiệu điều khiển để điều chỉnh trình cho phù hợp Bộ điều khiển kinh điển PID sử dụng rộng rãi để điều khiển đối tượng SISO tính đơn giản cấu trúc lẫn nguyên lý làm việc Bộ điều chỉnh làm việc tốt hệ thống quán tính lớn điều khiển tốc độ, điều khiển mức, hệ điều khiển tuyến tính hay mức độ phi tuyến thấp PID lý thuyết cổ điển cũ dùng cho điều khiển nhiên ứng dụng rộng rãi ngày Sơ đồ khối điều khiển PID: 1.4.2 Hàm truyền W ( p)  K P (1  K  TD P)  K P  I  K D P TI P P Bộ điều khiển gồm thành phần: - KP : hệ số tỷ lệ - KI : hệ số tích phân - KD: hệ số vi phân Xét hệ thống sơ đồ khối sau: Hình 2.2 Sơ đồ khối hệ thống Plant: đối tượng cần điều khiển Controller: đưa tín hiệu điều khiển đối tượng, thiết kế để hệ thống đạt đáp ứng mong muốn Biến e thành phần sai lệch, hiệu giá trị tín hiệu vào mong muốn tín hiệu thực tế Tín hiệu sai lệch (e) đưa tới PID, điều khiển tính toán thành phần tích phân lẫn vi phân (e) Tín hiệu (u) điều khiển bằng: u  K p e  K I  edt  K D de dt Lúc đối tượng điều khiển tín hiệu vào (u), tín hiệu (Y) (Y) hồi tiếp cảm biến để tiếp tục tính sai lệch (e) Và điều khiển lại tiếp tục 1.4.3 Đặc tính điều khiển PID - Thành phần tỉ lệ (Kp) tác dụng làm tăng tốc độ đáp ứng hệ, làm giảm không triệt tiêu sai số xác lập hệ (steady-state error) - Thành phần tích phân (Ki) tác dụng triệt tiêu sai số xác lập làm giảm tốc độ đáp ứng hệ - Thành phần vi phân (Kd) làm tăng độ ổn định hệ thống, giảm độ vọt lố cải thiện tốc độ đáp ứng hệ Ảnh hưởng thành phần Kp, Ki, Kd hệ kín tóm tắt bảng sau: Đáp ứng vòng kín KP Giảm Tăng Thời gian xác lập Thay đổi nhỏ KI Giảm Tăng Tăng Thay đổi nhỏ KD Thay đổi nhỏ Giảm Giảm Thay đổi nhỏ Thời gian lên Vọt lố Sai số xác lập Giảm - Lưu ý quan hệ xác tuyệt đối Kp, Ki Kd phụ thuộc vào Trên thực tế, thay đổi thành phần ảnh hưởng đến hai thành phần lại Vì bảng tác dụng tham khảo chọn Kp, Ki, Kd CHƯƠNG THIẾT KẾ MÔ HÌNH ĐIỀU KHIỂN TỐC ĐỘ ĐỘNG BẰNG PID 2.1 Sơ đồ khối hệ thống PC: Gửi giá trị cài đặt nhận tốc độ độngđiều khiển chạy ngừng chạy hệ thống Arduino Uno: Bộ điều khiển trung tâm với giải thuật PID, nhận giá trị cài đặt từ máy tính, điều khiển động L298N, thông qua encoder lấy tốc độ gửi cho máy tính qua RS232, cổng USB máy tính L298N: nhiệm vụ nhận tín hiệu xung PWM, điều khiển mức điện áp vào động DC Servo, Encoder: Dựa vào mức điện áp mà L298N cấp vào động cơ, động hoạt động với tốc độ mong muốn Encoder dùng để lấy tốc độ cho Arduino Uno void setup() { Serial.begin(9600); pinMode(2, INPUT_PULLUP); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); attachInterrupt(0, encoder, RISING); Timer1.initialize(10000); Timer1.attachInterrupt(tocdo); digitalWrite(3, HIGH); digitalWrite(4, LOW); } void loop() { if(ok == 1) { analogWrite(5, _pwm); for(int i = 0; i > C >> tf(C) >> pid(C) Kết sau đánh lệnh: >>C C= 0.11487 (s+23.66) s 15 Continuous-time zero/pole/gain model >> tf(C) ans = 0.1149 s + 2.718 -s Continuous-time transfer function >> pid(C) ans = Kp + Ki * s with Kp = 0.115, Ki = 2.72 Continuous-time PI controller in parallel form Tương tự cho số liệu lại ta tìm K p, Ki lại ứng với mức khác 2.4 Code Arduino #include #include #include double Setpoint, Input, Output; double Kp=0.0394, Ki=26.3, Kd=0.1; PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT); unsigned int readValue = 0; int inChar = 0; 16 String inString = ""; int Start = 0; float vantoc = 0; float vset = 20; void encoder() { readValue++; } void tocdo() { vantoc = readValue/1.080/2; readValue=0; } void setup() { Serial.begin(9600); pinMode(2, INPUT_PULLUP); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); attachInterrupt(0, encoder, RISING); Timer1.initialize(20000); Timer1.attachInterrupt(tocdo); 17 digitalWrite(3, HIGH); digitalWrite(4, LOW); Input = vantoc; Setpoint = vset; myPID.SetMode(AUTOMATIC); } void loop() { while(Serial.available()>0) { inChar = Serial.read(); if (inChar != '\n') inString += (char)inChar; else { if(inString == "s" || inString == "r") if(inString == "s") Start = 0; else Start = 1; else { vset = inString.toFloat(); if(vset > 20) 18 { Kp=0.0394; Ki=26.3; Kd=0.1; } else if(vset > 10) { Kp=0.517; Ki=27.1; Kd=0.1; } else { Kp=0.546; Ki=37.2; Kd=0.1; } myPID.SetTunings(Kp, Ki, Kd); } inString = ""; } } if(Start == 1) { Setpoint = vset; 19 Input = vantoc; myPID.Compute(); analogWrite(5,Output); Serial.println(vantoc); } else { analogWrite(5,0); } delay(100); } 2.4 Giao diện điều khiển Giao diện phần mềm điều khiển tốc độ động 20 PHỤ LỤC Kinh phí thực Tên thiết bị STT Số lượng Nơi mua Giá thành Thành tiền Arduino Uno Điện Tử Á Châu 85.000 85.000 L298 HShop 80.000 80.000 Nguồn 12V – 5A Chợ Nhật Tảo 90.000 90.000 Động DC Servo Chợ Nhật Tảo 180.000 180.000 Khác (dây bus, ốc, vít, …) Chợ Nhật Tảo, HShop 30.000 Tổng cộng: 465.000 Code Matlab vẽ đồ thị đáp ứng vòng hở động clc clear all t = 10/1000 % khoang thoi gian lay mau 10ms Tmax = 500/1000 % Tong thoi gian lay mau 500 ms x=[0:t:Tmax] y2 = [0.00 0.93 0.93 0.93 1.85 1.85 2.78 2.78 4.63 4.63 4.63 4.63 5.56 5.56 5.56 5.56 6.48 6.48 6.48 7.41 6.48 7.41 6.48 7.41 7.41 8.33 7.41 8.33 7.41 8.33 8.33 8.33 8.33 8.33 8.33 8.33 8.33 8.33 9.26 8.33 9.26 8.33 9.26 8.33 9.26 9.26 9.26 8.33 9.26 9.26 9.26 ] figure(1) hold on plot(x,y2,'r') %plot(x,y3,'g') %plot(x,y4,'b') % plot(x,y5,'r ') % plot(x,y6,'g ') 21 % plot(x,y7,'b ') % plot(x,y8,'r-x') % plot(x,y9,'g-x') grid on %%%%%%%%%%%%%%%%%%%%%%%%% clc clear all; ts = 10/1000 Tmax = 500/1000 % khoang thoi gian lay mau 10 ms % Tong thoi gian lay mau 500 ms x=[0:ts:Tmax]; y2 = [0.00 0.93 0.93 0.93 1.85 1.85 2.78 2.78 4.63 4.63 4.63 4.63 5.56 5.56 5.56 5.56 6.48 6.48 6.48 7.41 6.48 7.41 6.48 7.41 7.41 8.33 7.41 8.33 7.41 8.33 8.33 8.33 8.33 8.33 8.33 8.33 8.33 8.33 9.26 8.33 9.26 8.33 9.26 8.33 9.26 9.26 9.26 8.33 9.26 9.26 9.26 ] figure(2); hold on; plot(x,y2,'b'); grid on; %%%%%%%%%%%%%%%%%%%%%%% % Xac dinh so phan tu cua dau vao N = size(x,2); for i = 1:N y2(i)=y2(i)-9.26; end plot(x,y2,'b'); 22 grid on; % Xac dinh gia tri xac lap t tien den vo cung K_inf = norm(y2,inf) % Hieu chinh gia tri xac lap bang he so nhan K_temp = 0.98*K_inf; % Tao du lieu de ve duong nam ngang for n = 1:N delta1(n) = 0.33*K_temp; delta2(n) = 0.67*K_temp; delta3(n) = 1.0*K_temp; end plot(x, delta1,'b') plot(x, delta2,'r') plot(x, delta3,'g') Code Matlab tìm hàm truyền động t1 = 0.07115 t2 = 0.1557 To = 1.5*(t2-t1) Theta = t2 - To Thoigian_tre = %Theta Heso_khuyech_dai = K_temp; s = tf('s'); % Dinh nghia bien s display('Ham truyen G ') G = exp(-Thoigian_tre*s)*(Heso_khuyech_dai)/(1 + To*s) 23 %figure(1) step(x,G,'m') grid on; 24 ... ứng dụng nhiều điều khiển Điển hình mà thường hay gặp điều khiển động xung áp, điều áp Sử dụng PWM điều khiển độ nhanh chậm động hay cao nữa, dùng để điều khiển ổn định tốc độ động Đây phương... hệ thống điều khiển tự động Một điều khiển PID cố gắng hiệu chỉnh sai lệch tín hiệu ngõ ngõ vào sau đưa một tín hiệu điều khiển để điều chỉnh trình cho phù hợp Bộ điều khiển kinh điển PID sử dụng... Arduino Uno 1.4 PID 1.4.1 Giới thiệu PID Bộ điều khiển PID (A proportional integral derivative controller) điều khiển sử dụng kỹ thuật điều khiển theo vòng lặp dụng kỹ thuật điều khiển theo vòng

Ngày đăng: 10/03/2017, 20:45

Từ khóa liên quan

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

Tài liệu liên quan