Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 70 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
70
Dung lượng
5,07 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HĨA THIẾT KẾ VÀ THI CƠNG MÁY BAY BỐN CÁNH GVHD : SVTH : MSSV : SVTH : MSSV : NGUYỄN MINH TÂM LÊ MINH HÀO 14151030 PHẠM MINH TRÍ 14151135 SKL 0 Tp Hồ Chí Minh, tháng 07/2018 an TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH KHOA ĐÀO TẠO CHẤT LƯỢNG CAO -*** *** - ĐỒ ÁN TỐT NGHIỆP THIẾT KẾ VÀ THI CÔNG MÁY BAY BỐN CÁNH SVTH : LÊ MINH HÀO 14151030 PHẠM MINH TRÍ 14151135 KHĨA : 2014-2018 NGÀNH : CNKT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HÓA GVHD: TS NGUYỄN MINH TÂM TP HỒ CHÍ MINH, THÁNG NĂM 2018 an CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc *** Tp Hồ Chí Minh, tháng 07 năm 2018 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Lê Minh Hào 14151030 Phạm Minh Trí 14151135 Lớp: 14151CLC Ngành: CNKT Điều khiển Tự động hóa Giảng viên hướng dẫn: TS Nguyễn Minh Tâm Ngày nhận đề tài: Ngày nộp đề tài: Tên đề tài: Thiết kế thi công máy bay bốn cánh Nội dung thực đề tài: - Tìm hiểu phương trình động học, động lực học, khí động học quadcopter - Nghiên cứu nguyên lý hoạt động cảm biến góc nghiêng MCU, truyền nhân tín hiệu qua thu phát sóng - Thiết kế chế tạo mơ hình quadcopter Sản phẩm: - Mơ hình quadcopter bay ổn định điều khiển thông qua tay cầm Devo TRƯỞNG NGÀNH GIẢNG VIÊN HƯỚNG DẪN TS Lê Mỹ Hà TS Nguyễn Minh Tâm i an CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh Phúc ******* PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Họ tên sinh viên: Lê Minh Hào 14151030 Phạm Minh Trí 14151135 Lớp: 14151CLC Ngành: CNKT Điều khiển Tự động hóa Giảng viên hướng dẫn: TS Nguyễn Minh Tâm Tên đề tài: Thiết kế thi công máy bay bốn cánh NHẬN XÉT Về nội dung đề tài & khối lượng thực hiện: Ưu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Đánh giá loại: …… Điểm:……………….(Bằng chữ: ) Tp Hồ Chí Minh, ngày tháng năm 2018 Giáo viên hướng dẫn (Ký & ghi rõ họ tên) ii an CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh Phúc ******* PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN Họ tên sinh viên: Lê Minh Hào 14151030 Phạm Minh Trí 14151135 Lớp: 14151CLC Ngành: CNKT Điều khiển Tự động hóa Giảng viên phản biện: TS Nguyễn Văn Thái Tên đề tài: Thiết kế thi công máy bay bốn cánh NHẬN XÉT Về nội dung đề tài & khối lượng thực hiện: Ưu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Đánh giá loại: …… Điểm:……………….(Bằng chữ: ) Tp Hồ Chí Minh, ngày tháng năm 2018 Giáo viên phản biện (Ký & ghi rõ họ tên) iii an LỜI CẢM ƠN Trong trình thực đồ án tốt nghiệp, chúng em xin gửi lời cảm ơn chân thành đến thầy TS Nguyễn Minh Tâm nhiệt tình giúp đỡ, động viên tạo điều kiện tốt cho chúng em suốt thời gian thực đồ án Chúng em xin cảm ơn quý Thầy Cô khoa Đào tạo chất lượng cao trường Đại học Sư Phạm Kỹ Thuật TP Hồ Chí Minh Cảm ơn từ kiến thức Thầy Cô truyền đạt, thêm nhiều đóng góp ý kiến, tạo điều kiện giúp đỡ giúp đỡ chúng em có thắc mắc liên quan đến đề tài Xin cám ơn tập thể lớp 14151CLC, bạn có ý kiến đóng góp thiết thực giúp đỡ trình thiết kế thi cơng đề tài Chúng em xin cảm ơn! iv an TÓM TẮT Trong quy mơ đồ án, chúng em xin trình bày sở lý thuyết nguyên lý hoạt động mô hình máy bay Quadcopter – dạng máy bay lên thẳng nâng bốn cánh quạt đặt khung chữ thập Hoạt động dựa nguyên lý khí động học Mơ hình thiết kế thi cơng dựa q trình tính tốn kết cấu khí, cân động học kết hợp giao tiếp cảm biến để máy bay cân với điều khiển từ xa v an MỤC LỤC NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP i PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ii PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN iii LỜI CẢM ƠN iv TÓM TẮT v MỤC LỤC vi DANH MỤC CÁC BẢNG viii DANH MỤC HÌNH ẢNH ix CHƯƠNG TỔNG QUAN ĐỀ TÀI .1 1.1 Tổng quan 1.2 Mục tiêu đề tài 1.3 Phạm vi đề tài CHƯƠNG CƠ SỞ LÝ THUYẾT 2.1 Sơ lược cấu tạo Quadcopter .2 2.2 Sơ lược nguyên lý bay Quadcopter 2.3 Lý thuyết điều khiển Quadcopter 2.4 Cơ sở lý thuyết mơ hình bay quadcopter .6 2.4.1 Nghiên cứu lý thuyết chuyển động Quadcopter xây dựng mơ hình động lực học máy bay 2.4.2 Mơ hình tính tốn khí động học 2.4.3 Tính tốn thơng số chế tạo 2.5 Lý thuyết hệ thống IMU 2.5.1 Lý thuyết hệ thống IMU 2.5.2 Một số phương pháp xác định góc nghiêng khơng gian 10 2.5.3 Phương pháp Quaternion 13 2.5.4 Chuyển đổi hệ trục tọa độ 14 2.6 Cảm biến MPU 15 2.6.1 Cảm biến Gyro 15 2.6.2 Cảm biến gia tốc (Accelerometer) 19 CHƯƠNG THIẾT KẾ PHẦN CỨNG 23 3.1 u cầu mơ hình máy bay cánh 23 3.2 Giới thiệu linh kiện phần cứng 23 3.2.1 Khung thân mơ hình 23 3.2.2 Động DC không chổi than (Brushless DC motor) 23 3.2.3 Bộ điều tốc – ESC (Electronic speed controler) 26 3.2.4 Cảm biến góc nghiêng MPU-6050 27 3.2.5 Board điều khiển – Board Arduino Uno .28 3.2.6 Nguồn cấp (Pin Lipo) 30 3.2.7 Cánh quạt 31 3.2.8 Tay điều khiển RF Devo Receiver RX701 32 3.3 Xây dựng mơ hình thực tế 33 CHƯƠNG GIẢI THUẬT ĐIỀU KHIỂN 35 4.1 Giải thuật cân 35 4.2 Lý thuyết điều khiển PID 36 vi an 4.2.1 Bộ điều khiển PID 36 4.2.2 Khâu tỷ lệ (độ lợi) 37 4.2.3 Khâu tích phân 38 4.2.4 Khâu vi phân 38 4.2.5 Cách hiệu chỉnh PID 39 4.3 Lý thuyết đánh giá chất lượng điều khiển 40 4.4 Giải thuật điều khiển 42 CHƯƠNG KẾT LUẬN 43 5.1 Kết đạt 43 5.2 Hạn chế đề tài 44 5.3 Hướng phát triển đề tài 44 TÀI LIỆU THAM KHẢO 45 PHỤ LỤC (Code arduino) 46 vii an DANH MỤC CÁC BẢNG Bảng 2.1 Bảng tính tốn góc Euler từ ma trận xoay .15 Bảng 3.1 Bảng điều khiển trạng thái động BLDC đơn giả 27 viii an 5.2 Hạn chế đề tài Bên cạnh kết đạt được, đề tài nhiều hạn chế: - Động cánh quạt chưa đạt đồng tốt nhất, hoạt động cịn gây nhiều rung động lên mơ hình - Hay bị trôi bay độ cao định 5.3 Hướng phát triển đề tài Tích hợp cảm biến khác giúp Quadcopter hoạt động tốt hơn: - La bàn điện tử để xác định phương hướng - Cảm biến áp suất xác định độ cao - Cảm biến siêu âm xác định độ cao thăm dị địa hình - Cảm biến hồng ngoại xác định đường chân trời nhằm nâng cao khả cân - Tích hợp hệ thống định vị tồn cầu GPS để xác định tọa độ bay Lắp thêm camera quay phim chụp ảnh gửi máy tính để ứng dụng thám 44 an TÀI LIỆU THAM KHẢO [1] K Munson (1968) Helicopters and Other Rotorcraft Since 1907 [2] Gabriel Hoffmann (2007, January 15) Schematic of reaction torques on each motor of a quadrotor aircraft, due to spinning rotors [3] Gabriel Hoffmann (2007, January 15) Schematic of reaction torques on each motor of a quadrotor aircraft, due to spinning rotors [4] Tommaso Bresciani " Modelling, Identification and Control of a Quadrotor Helicopter." Department of Automatic Control, Lund University October 2008 ISSN 0280-5316 [5] A Kivrak, “Design of control systems for a quadrotor flight vehicle squipped with inertial sensors”,M.S thesis, Atilim University, 2006 [6] Prof Pradeep Sarin “Quadcopter Dynamics” DigitalLab Course Project (EP 315) 45 an PHỤ LỤC (Code arduino) #include #include //Thu vien I2C //Thu vien EEPROM /* * Bo dieu khien PID: Cho goc ROW PITCH YAW float pid_p_gain_roll = 1.55; //Hệ số Kp float pid_i_gain_roll = 0.003; //3 float pid_d_gain_roll = 10.0; int pid_max_roll = 300; //Gía trị lớn nhỏ nhất(saturation), gọi ngưỡng float pid_p_gain_pitch = pid_p_gain_roll; float pid_i_gain_pitch = pid_i_gain_roll; float pid_d_gain_pitch = pid_d_gain_roll; int pid_max_pitch = pid_max_roll; float pid_p_gain_yaw = 3; float pid_i_gain_yaw = 0.005; float pid_d_gain_yaw = 0.0; int pid_max_yaw = 300; boolean auto_level = true; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /* * Khai báo biến : biến kênh điều khiển */ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// byte last_channel_1, last_channel_2, last_channel_3, last_channel_4; byte eeprom_data[36]; byte highByte, lowByte; volatile int receiver_input_channel_1, receiver_input_channel_2, receiver_input_channel_3, receiver_input_channel_4; int counter_channel_1, counter_channel_2, counter_channel_3, counter_channel_4, loop_counter; int esc_1, esc_2, esc_3, esc_4; int throttle, battery_voltage; int cal_int, start, gyro_address; int receiver_input[5]; int temperature; int acc_axis[4], gyro_axis[4]; float roll_level_adjust, pitch_level_adjust; long acc_x, acc_y, acc_z, acc_total_vector; unsigned long timer_channel_1, timer_channel_2, timer_channel_3, timer_channel_4, esc_timer, esc_loop_timer; 46 an unsigned long timer_1, timer_2, timer_3, timer_4, current_time; unsigned long loop_timer; double gyro_pitch, gyro_roll, gyro_yaw; double gyro_axis_cal[4]; float pid_error_temp; float pid_i_mem_roll, pid_roll_setpoint, gyro_roll_input, pid_output_roll, pid_last_roll_d_error; float pid_i_mem_pitch, pid_pitch_setpoint, gyro_pitch_input, pid_output_pitch, pid_last_pitch_d_error; float pid_i_mem_yaw, pid_yaw_setpoint, gyro_yaw_input, pid_output_yaw, pid_last_yaw_d_error; float angle_roll_acc, angle_pitch_acc, angle_pitch, angle_roll; boolean gyro_angles_set; int bu = 0;//100 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Cài đặt : I2C, calib MPU6050, cài đặt ngắt /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void setup(){ Serial.begin(250000); //Copy the EEPROM data for fast access data for(start = 0; start 1050){ //Do not yaw when turning off the motors if(receiver_input_channel_4 > 1508)pid_yaw_setpoint = (receiver_input_channel_4 - 1508)/3.0; else if(receiver_input_channel_4 < 1492)pid_yaw_setpoint = (receiver_input_channel_4 1492)/3.0; } 50 an calculate_pid(); //Tính tốn điều khiển PID //Bộ lọc bù để lọc liệu //0.09853 = 0.08 * 1.2317 battery_voltage = battery_voltage * 0.92 + (analogRead(0) + 65) * 0.09853; if(battery_voltage < 1000 && battery_voltage > 600)digitalWrite(12, HIGH); throttle = receiver_input_channel_3; if (start == 2){ if (throttle > 1800) throttle = 1800; esc_1 = bu + throttle - pid_output_pitch + pid_output_roll - pid_output_yaw; esc_2 = throttle + pid_output_pitch + pid_output_roll + pid_output_yaw; esc_3 = throttle + pid_output_pitch - pid_output_roll - pid_output_yaw; esc_4 = bu + throttle - pid_output_pitch - pid_output_roll + pid_output_yaw; if (battery_voltage < 1240 && battery_voltage > 800){ setup tín hiệu phụ thuộc vafod diện áp //Kiểm tra tín hiệu điện áp esc_1 += esc_1 * ((1240 - battery_voltage)/(float)3500); esc_2 += esc_2 * ((1240 - battery_voltage)/(float)3500); esc_3 += esc_3 * ((1240 - battery_voltage)/(float)3500); esc_4 += esc_4 * ((1240 - battery_voltage)/(float)3500); } if (esc_1 < 1100) esc_1 = 1100; đầu //Giữ động quay tốc độ ban if (esc_2 < 1100) esc_2 = 1100; if (esc_3 < 1100) esc_3 = 1100; if (esc_4 < 1100) esc_4 = 1100; if(esc_1 > 2000)esc_1 = 2000; đông // giới hạn ngưỡng để điều khiển if(esc_2 > 2000)esc_2 = 2000; if(esc_3 > 2000)esc_3 = 2000; if(esc_4 > 2000)esc_4 = 2000; } else{ esc_1 = 1000; esc_2 = 1000; esc_3 = 1000; esc_4 = 1000; } if(micros() - loop_timer > 4050)digitalWrite(12, HIGH); // bật tắt led để kiểm tra // cài đặt điều khiển 250Hz Tức 4000us while(micros() - loop_timer < 4000); loop_timer = micros(); 51 an PORTD |= B11110000; timer_channel_1 = esc_1 + loop_timer; timer_channel_2 = esc_2 + loop_timer; timer_channel_3 = esc_3 + loop_timer; timer_channel_4 = esc_4 + loop_timer; gyro_signalen(); while(PORTD >= 16){ esc_loop_timer = micros(); if(timer_channel_1