Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 34 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
34
Dung lượng
1,41 MB
Nội dung
TRƯỜNG ĐẠI HỌC SƯ PHẠM KĨ THUẬT THÀNH PHỐ HỒ CHÍ MINH KHOA CƠ KHÍ ĐỘNG LỰC BÁO CÁO MƠN HỌC ỨNG DỤNG PID TRONG ĐIỀU KHIỂN TỐC ĐỘ VÀ VỊ TRÍ ĐỘNG CƠ DC LÊ HẬU ĐỨC MSSV: 17145277 MAI NGUYỄN ANH ĐỨC MSSV: 17145278 NGUYỄN TẤN HƯNG MSSV: 17145 PHAN TRẦN TRỌNG HIẾU MSSV:17145291 DƯƠNG NGỌC TRỌNG MSSV: 17145379 TRẦN NGỌC HUẤN MSSV: 18145 GVHD: ThS NGUYỄN TRUNG HIẾU TP.Hồ Chí Minh, tháng năm 2020 TRƯỜNG ĐẠI HỌC SƯ PHẠM KĨ THUẬT THÀNH PHỐ HỒ CHÍ MINH KHOA CƠ KHÍ ĐỘNG LỰC BÁO CÁO MƠN HỌC Chun ngành: Công nghệ Kỹ thuật ô tô ỨNG DỤNG PID TRONG ĐIỀU KHIỂN TỐC ĐỘ VÀ VỊ TRÍ ĐỘNG CƠ DC LÊ HẬU ĐỨC MSSV: 17145277 MAI NGUYỄN ANH ĐỨC MSSV: 17145278 NGUYỄN TẤN HƯNG MSSV: 17145 PHAN TRẦN TRỌNG HIẾU MSSV:17145291 DƯƠNG NGỌC TRỌNG MSSV: 17145379 TRẦN NGỌC HUẤN MSSV: 18145 GVHD: ThS NGUYỄN TRUNG HIẾU TP.Hồ Chí Minh, tháng năm 2020 TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH KHOA CƠ KHÍ ĐỘNG LỰC NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN Tên tiểu luận: ĐIỀU KHIỂN TỐC ĐỘ VÀ VỊ TRÍ CỦA ĐỘNG CƠ DC Ngành: Công nghệ kĩ thuật ô tô Họ tên: MSSV: Lê Hậu Đức 17145277 Mai Nguyễn Anh Đức 17145278 Nguyễn Tấn Hưng 17145 Phan Trần Trọng Hiếu 17145291 Dương Ngọc Trọng 17145373 Trần Ngọc Huấn 18145 I NHẬN XÉT Về hình thức trình bày & tính hợp lý cấu trúc tiểu luận: ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… Về nội dung (đánh giá chất lượng tiểu luận, ưu/khuyết điểm giá trị thực Tiễn): ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… II NHỮNG NỘI DUNG CẦN ĐIỀU CHỈNH, BỔ SUNG: ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… III ĐỀ NGHỊ VÀ ĐÁNH GIÁ: Điểm đánh giá (theo thang điểm 10): Tp Hồ Chí Minh, ngày 12 tháng 12 năm 2019 Giảng viên hướng dẫn (Ký & ghi rõ họ tên) Mục lục Chương TỔNG QUAN Chương GIẢI THUẬT ĐIỀU KHIỂN PID 2.1 Giới thiệu chung PID 2.2 Thuật toán PID 2.2.1 Khâu tỉ lệ 2.2.2 Khâu đạo hàm 2.2.3 Khâu tích phân 2.3 Giải thuật điều khiển PID Chương 3.1 THỰC HÀNH ĐIỀU KHIỂN TỐC ĐỘ VÀ VỊ TRÍ ĐƠNG CƠ DC 10 Các linh kiện mơ hình 10 3.1.1 Encoder 10 3.1.2 Mạch cầu H-L298N 12 3.1.3 Động DC 15 3.2 Sơ đồ lắp mạch 16 3.2 Lưu đồ giải thuật điều khiển động DC (tốc độ + vị trí) 16 3.3 Điều khiển tốc độ động DC 17 3.3.1 Cách thức điều khiển 17 3.3.2 Mô Simulink 18 3.3.3 Code điều khiển tốc độ động DC có giảm tốc GA25-370 19 3.3.4 Code điều khiển tốc độ động DC không giảm tốc (1 vòng 334 xung) 21 3.3.5 Kết điều khiển động DC 23 3.4 Điều khiển vị trí động DC 24 3.4.1 Cách thức điều khiển 24 3.4.2 Mô Simulink 25 3.4.3 Code điều khiển vị trí động 27 3.3.3 Kết việc điều khiển vị trí động DC 29 Chương KẾT LUẬN 31 DANH MỤC CÁC CHỮ VIẾT TẮT VÀ KÝ HIỆU DANH MỤC CÁC HÌNH Hình Khâu tỉ lệ Hình 2 Khâu tích phân Hình Khâu đạo hàm Hình Ví dụ điều khiển xe đường thẳng Hình Encoder loại quang 11 Hình Xung kênh A kênh B 12 Hình 3 Mạch cầu L298N 13 Hình Chip L298 13 Hình Mạch bên chip L298 14 Hình Động Cơ Giảm Tốc Có Encoder GA25-370 12V 130rpm 15 Hình Sơ đồ lắp mạch 16 Hình 8: Lưu đồ giải thuật điều khiển động DC (tốc độ + vị trí) 17 Hình Mơ hình điều khiển 17 Hình 10: Tạo hàm truyền 19 Hình 11: Mô điều khiển tốc độ Simulink 19 Hình 12 Động giảm tốc GA25-370 130rpm 23 Hình 13 Điều khiển tốc độ động khơng giảm tốc (1 vịng 334 xung) 24 Hình 3.14 Mơ hình điều khiển 25 Hình 15: Tạo hàm truyền 26 Hình 16: Mơ hình mơ vị trí động DC 26 Hình 17: Đồ thị điều khiển vị trí mơ 27 Hình 18 Đồ thị biểu diễn điều khiển vị trí động DC 29 Chương TỔNG QUAN Điều khiển động DC (DC motor) ứng dụng thuộc dạng điều khiển tự động DC Motor cấu chấp hành (actuator) dùng nhiều hệ thống tự động (ví dụ cánh tay robot, robot) Bộ điều khiển dùng cho việc điều khiển động closed-loop, thông qua ta tổng hợp nhiều vấn đề ứng dụng Arduino bao gồm nhận liệu từ dùng, điều khiển motor, mạch công suất cho motor, đọc cảm biến encoder đặc biệt giải thuật điều khiển PID Nói chung thơng qua ta hiểu rõ vấn đề giải thuật PID việc sử dụng phần P, phần D hay phần I tùy thuộc vào nhu cầu đáp ứng người dùng độ xác; vấn đề chọn hệ số kp, kd, ki cho vận tốc vị trí động mà ta điều khiển phải dao động xung quanh vận tốc vị trí xét với error nhỏ Chương GIẢI THUẬT ĐIỀU KHIỂN PID 2.1 Giới thiệu chung PID PID kết hợp điều khiển: tỉ lệ, tích phân vi phân, có khả điều chỉnh sai số thấp có thể, tăng tốc độ đáp ứng, giảm độ vọt lố, hạn chế dao động Bộ điều khiển PID hay đơn giản PID kỹ thuật điều khiển trình tham gia vào hành động xử lý “tỉ lệ, tích phân vi phân“ Nghĩa tín hiệu sai sốxảy làm giảm đến mức tối thiểu ảnh hưởng tác động tỉ lệ, ảnh hưởng tác động tích phân làm rõ tốc độ đạt với tác động vi phân số liệu trước Điều khiển PID kiểu điều khiển có hồi tiếp vịng kín sử dụng rộng rải hệ thống điện, tự động hóa, điện tử,… 2.2 Thuật tốn PID Phần mơ tả dạng song song không tương tác điều khiển PID Sơ đồ điều khiển PID đặt tên theo ba khâu hiệu chỉnh nó, tổng ba khâu tạo thành biến điều khiển (MV) Ta có: Pout ;Iout ; Dout thành phần đầu từ ba khâu điều khiển PID, xác định 2.2.1 Khâu tỉ lệ Khâu tỉ lệ (đơi cịn gọi độ lợi) làm thay đổi giá trị đầu ra, tỉ lệ với giá trị sai số Đáp ứng tỉ lệ điều chỉnh cách nhân sai số với số Kp, gọi độ lợi tỉ lệ Khâu tỉ lệ cho bởi: Hình Khâu tỉ lệ Độ lợi khâu tỉ lệ lớn thay đổi lớn đầu mà sai số thay đổi nhỏ Nếu độ lợi khâu tỉ lệ cao, hệ thống không ổn định (xem phần điều chỉnh vòng) Ngược lại, độ lợi nhỏ đáp ứng đầu nhỏ sai số đầu vào lớn, làm cho điều khiển nhạy, đáp ứng chậm Nếu độ lợi khâu tỉ lệ thấp, tác động điều khiển bé đáp ứng với nhiễu hệ thống 2.2.2 Khâu đạo hàm Phân phối khâu tích phân (đơi cịn gọi reset) tỉ lệ thuận với biên độ sai số lẫn quảng thời gian xảy sai số Tổng sai số tức thời theo thời gian (tích phân sai số) cho ta tích lũy bù hiệu chỉnh trước Tích lũy sai số sau nhân với độ lợi tích phân cộng với tín hiệu đầu điều khiển Biên độ phân phối khâu tích phân tất tác động điều chỉnh xác định độ lợi tích phân, Thừa số tích phân cho bởi: Hình 2 Khâu tích phân Khâu tích phân (khi cộng thêm khâu tỉ lệ) tăng tốc chuyển động trình tới điểm đặt khử số dư sai số ổn định với tỉ lệ phụ thuộc vào điều khiển Tuy nhiên, khâu tích phân đáp ứng sai số tích lũy q khứ, khiến giá trị vọt lố qua giá trị đặt (ngang qua điểm đặt tạo độ lệch với hướng khác) Để tìm hiểu thêm đặc điểm việc điều chỉnh độ lợi tích phân độ ổn điều khiển 2.2.3 Khâu tích phân Tốc độ thay đổi sai số qua trình tính tốn cách xác định độ dốc sai số theo thời gian (tức đạo hàm bậc theo thời gian) nhân tốc độ với độ lợi tỉ lệ Biên độ phân phối khâu vi phân (đôi gọi tốc độ) tất hành vi điều khiển giới hạn độ lợi vi phân, Thừa số vi phân cho bởi: Hình Khâu đạo hàm Khâu vi phân làm chậm tốc độ thay đổi đầu điều khiển đặc tính ý để đạt tới điểm đặt điều khiển Từ đó, điều khiển vi phân sử dụng để làm giảm biên độ vọt lố tạo thành phần tích phân tăng cường độ ổn định điều khiển hỗn hợp Tuy nhiên, phép vi phân tín hiệu khuếch đại nhiễu khâu nhạy nhiễu sai số, khiến trình trở nên khơng ổn định nhiễu độ lợi vi phân đủ lớn Do xấp xỉ vi sai với băng thông giới hạn thường sử dụng Hình 8: Lưu đồ giải thuật điều khiển động DC (tốc độ + vị trí) 3.3 Điều khiển tốc độ động DC 3.3.1 Cách thức điều khiển Hình Mơ hình điều khiển Input : số xung khoảng thời gian 17 Controller: Arduino Uno Actuator: L298N Process : ĐC Output : Tốc độ trục ĐC Khi động hoạt động, encoder trả xung vuông lệch pha nhau, arrduino dựa vào xung nhận để tính số xung trả khoảng thời gian định (tương ứng tốc độ động cơ) Sau thực giải thuật PID để điều khiển số xung cần điếm khoảng thời gian đặt cách quy đổi giá trị biến trở nhận Arduino thực điều khiển độ rộng xung xuất tác động vào L298N thực điều khiển động Theo tài liệu L298N, có tồn độ trễ cạnh xung điều khiển nên cần cân nhắc tương ứng tần số PWM arrduino tần số hoạt động ổn định động phù hợp Khoảng thời gian đếm xung phụ thuộc vào dải tốc độ hoạt động ổn định động độ mịn tín hiệu encoder (số xung vòng quay) Cần cân nhắc sử dụng nguồn pin cho hệ thống theo thời gian pin giảm dần, điện áp điều khiền động thay đổi ảnh hưởng đến lựa chọn hệ số Kp, Kd, Ki giải thuật PID 3.3.2 Mô Simulink Từ thông số điện trở cảm ứng Ra, độ từ cảm La, mô men quán tính motor Jm, hệ số ma sát trượt Dm , hệ số mô men Kt, hệ số điện áp cảm ứng Kb động ta tạo hàm truyền cho điều khiển sau: 18 Hình 10: Tạo hàm truyền Mô điều khiển tốc độ motor Simulink với khối constant, PID controller, Transfer function, scope, Add, Integrator ta nối khối hình 3.10 Hình 11: Mơ điều khiển tốc độ Simulink 3.3.3 Code điều khiển tốc độ động DC có giảm tốc GA25-370 #include uint32_t demXung,lastDemXung; int32_t P,I,D,Err,lastErr; uint8_t soXung,soXungMM,output; float kp,kd,ki; void setup() { Serial.begin(9600); DDRD = 0b00111000; PORTD = 0b10100000; 19 TCCR2B |= 0b011; //490 >976.5Hz cli(); TCCR1A=0; TCCR1B = 0b11; // T = 64/16 = us TCNT1 = 53036; // 50ms =12500 xung TIMSK1=1; sei(); attachInterrupt(0,readEncoder,RISING); } void loop() { if(PIND&0b10000000){ kp=0.5775,kd=0.077,ki=1.9; // Ku=1.75,Tu=0.4s }else{ kp=0,kd=0,ki=0;I=0;output=0; } soXungMM = map(analogRead(A0),0,1023,5,42); float rpm = soXung/0.05/495; float rpmMM = soXungMM/0.05/495; Serial.print(rpm); Serial.print(','); Serial.print(rpmMM); Serial.print(','); Serial.print(3); Serial.print(','); Serial.println(0); } void readEncoder(){ 20 if(PIND&0b01000000)demXung++; } ISR (TIMER1_OVF_vect){ TCNT1 = 53036; soXung = demXung-lastDemXung; //5 >42 lastDemXung = demXung; Err = (int32_t)soXungMM - soXung; P =kp*Err; D =kd*(Err-lastErr)/0.05; I += ki*Err*0.05; output += P+D+I; output = constrain(output,0,255); analogWrite(3,output); lastErr = Err; } 3.3.4 Code điều khiển tốc độ động DC khơng giảm tốc (1 vịng 334 xung) #include uint32_t demXung,lastDemXung; int32_t P,I,D,Err,lastErr; uint16_t soXung,soXungMM,output; float kp,kd,ki; void setup() { Serial.begin(9600); DDRD = 0b00111000; PORTD = 0b10100000; TCCR2B |= 0b010; //490 >3.9kHz cli(); TCCR1A=0; 21 TCCR1B = 0b010; TCNT1 = 45536; TIMSK1=1; sei(); attachInterrupt(0,readEncoder,RISING); } void loop() { if(PIND&0b10000000){ kp=0.15,kd=0.0025,ki=0.05; // Ku=0.59,Tu=0.1111 kp=0.2,kd=0.0025,ki=0.05 }else{ kp=0,kd=0,ki=0;I=0;output=0; } soXungMM = map(analogRead(A0),0,1023,150,300); uint16_t rpm= soXung/0.01/334; uint16_t rpmMM =soXungMM/0.01/334; Serial.print(rpm); Serial.print(','); Serial.print(rpmMM ); Serial.print(','); // Serial.print(output); // Serial.print(','); Serial.print(100); Serial.print(','); Serial.println(0); } void readEncoder(){ 22 if(PIND&0b01000000)demXung++; } ISR (TIMER1_OVF_vect){ TCNT1 = 45536; soXung = demXung - lastDemXung; lastDemXung = demXung; Err = (int32_t) soXungMM-soXung; P = kp*Err; D = kd*(Err-lastErr)/0.01; I += ki*0.01*Err; output += P+D+I; output = constrain(output,0,255); analogWrite(3,output); lastErr = Err; } 3.3.5 Kết điều khiển động DC Hình 12 Động giảm tốc GA25-370 130rpm 23 Đồ thị Hình 3.9 thể việc điều khiển tốc độ động có giảm tốc dải tốc độ thấp Trục tung đồ thị số vịng quay đơn vị (rpm) Trục hồnh trục thời gian đơn vị 10ms Đường màu xanh tốc độ đặt biến trở, đường màu đỏ tốc độ mà động đáp ứng nhờ giải thuật điều khiển PID Ở đây, ta chọn hệ số kp, kd ,ki cho thời gian đáp ứng nhỏ error nhỏ Dạng xung đường màu đỏ có dạng ta chọn thời gian mẫu 50ms (bởi thời gian mẫu chọn bé số xung xuất q it khó điều khiển, cịn lớn sau khoảng thời gian lớn có xung việc điều khiển khơng mịn) Hình 13 Điều khiển tốc độ động khơng giảm tốc (1 vịng 334 xung) Đồ thị Hình 3.10, thể việc điều khiển động khơng giảm tốc có thời gian lấy mẫu thấp Ở động này, ta điều khiển dải tốc độ cao ổn định Tương tự đồ thị Hình 3.9, đồ thị có trục tung tốc độ (rpm) trục hồnh thời gian (s) Đường màu đỏ tốc độ mà ta set biến trở, đường màu xanh đường mà tốc độ đáp ứng động Bằng việc điều khiển giải thuật PID với hệ số kp, kd, ki mà ta chọn ta thấy việc đáp ứng động ổn Khi ta xét động tốc độ không đổi, tải tăng lên, PID cho output tăng lên để bù lại phần bị giữ 3.4 Điều khiển vị trí động DC 3.4.1 Cách thức điều khiển 24 Hình 3.14 Mơ hình điều khiển Input : Số lượng xung cần đặt Controller: Arduino Uno Actuator: L298N Process : ĐC Output : Vị trí trục ĐC Khi động hoạt động, encoder trả xung vuông lệch pha nhau, arrduino dựa vào số xung điếm (quay chiều cộng thêm xung ngược lại) để biết vị trí trục động so với mốc ban đầu Sau thực giải thuật PID để điều khiển số xung đếm cách quay động ngược chiều Arduino thực điều khiển độ rộng xung xuất tác động vào L298N tín hiệu digital chân điều khiển chiều quay L298 để thực điều khiển động Theo tài liệu L298N, có tồn độ trễ cạnh xung điều khiển nên cần cân nhắc tương ứng tần số PWM arrduino tần số hoạt động ổn định động phù hợp Xung đếm sai số điều khiển phụ thuộc độ mịn tín hiệu encoder (số xung vòng quay) Cần cân nhắc sử dụng nguồn pin cho hệ thống theo thời gian pin giảm dần, điện áp điều khiền động thay đổi ảnh hưởng đến lựa chọn hệ số Kp, Kd, Ki giải thuật PID 3.4.2 Mô Simulink 25 Từ thông số điện trở cảm ứng Ra, độ từ cảm La, mơ men qn tính motor Jm, hệ số ma sát trượt Dm , hệ số mô men Kt, hệ số điện áp cảm ứng Kb động ta tạo hàm truyền cho điều khiển sau: Hình 15: Tạo hàm truyền Mơ điều khiển tốc độ motor Simulink với khối constant, PID controller, Transfer function, scope, Add, ta nối khối hình 3.12 Hình 16: Mơ hình mơ vị trí động DC Sau chọn hệ số Kp, Kd, Ki PID turner ta đồ thị hình 3.15 26 Hình 17: Đồ thị điều khiển vị trí mơ 3.4.3 Code điều khiển vị trí động #include int16_t demXung,xungMM,Err,lastErr,output; int32_t P,I,D; float kp,kd,ki; void setup() { Serial.begin(9600); DDRD = 0b00111000; PORTD = 0b10010000; TCCR2B |= 0b011; //490 >976.5Hz cli(); TCCR1A=0; TCCR1B = 1; // T = 1/16 = 0.0625 us TCNT1 = 49536; // 1ms =16000 xung TIMSK1=1; sei(); attachInterrupt(0,readEncoder,RISING); 27 demXung = map(analogRead(A0),0,1020,0,300); } void loop() { if(digitalRead(7)){ kp=2;ki=0.7;kd=0.0855;//Ku=10; Tu=0.1282 ki=1.5;kd=0.063 }else{ demXung=0; I=0;kp=0;ki=0;kd=0; } xungMM = map(analogRead(A0),0,1020,0,300); float goc = (float)demXung*360/495; float gocMM = (float)xungMM*360/495; Serial.print(goc); Serial.print(','); Serial.print(gocMM); Serial.print(','); Serial.print(250); Serial.print(','); Serial.println(0); } void readEncoder(){ 28 (PIND&0b01000000)?demXung :demXung++; } ISR (TIMER1_OVF_vect){ TCNT1 = 49536; Err = xungMM-demXung; P = kp*Err; D = kd*(Err-lastErr)/0.001; I += ki*0.001*Err; output = P+D+I; PORTD=(output>0)?0b10010000:0b10100000; analogWrite(3,abs(output)); lastErr = Err; } 3.3.3 Kết việc điều khiển vị trí động DC Hình 18 Đồ thị biểu diễn điều khiển vị trí động DC 29 Đồ thị có trục đứng vị trí cưa động đơn vị độ, trục ngang thời gian, đơn vị 10ms Đường màu đỏ đường vị trí mà ta set cịn đường màu xanh đường mà động đáp ứng Khi ta thay đổi vị trí đường đáp ứng vọt lố lên lại gần đường ta set với sai số ± 1.45 (độ) Với việc điều khiển mơ hình sai số chấp nhận thời gian đáp ứng chậm 30 Chương KẾT LUẬN Thơng qua project này, ta hiểu nguyên lí chi tiết sợ đồ điều khiển động DC cách thức giải vấn đề xảy thực tế Nắm rõ cách thức thực giải thuật PID việc điều khiển phần chí cách chọn hệ số ảnh hưởng hệ số lên hệ thống 31 ... 3.1.3 Động DC Động DC Servo giảm tốc GA25 thường sử dụng ứng dụng cần xác định tốc độ, vị trí, chiều quay động DC: Robot mê cung, robot xe hai bánh tự cân bằng, Động DC Servo thực tế động DC thường... hình mơ vị trí động DC 26 Hình 17: Đồ thị điều khiển vị trí mơ 27 Hình 18 Đồ thị biểu diễn điều khiển vị trí động DC 29 Chương TỔNG QUAN Điều khiển động DC (DC motor) ứng dụng... KHIỂN PID 2.1 Giới thiệu chung PID PID kết hợp điều khiển: tỉ lệ, tích phân vi phân, có khả điều chỉnh sai số thấp có thể, tăng tốc độ đáp ứng, giảm độ vọt lố, hạn chế dao động Bộ điều khiển PID