Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 115 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
115
Dung lượng
5,29 MB
Nội dung
Nhận xét giáo viên hướng dẫn ` Cần Thơ, ngày…tháng…năm 2019 ThS: Đường Khánh Sơn Nhận xét giáo viên phản biện Cần Thơ, ngày…tháng…năm 2019 LỜI CAM ĐOAN Tôi xin cam đoan cơng trình nghiên cứu riêng tơi hướng dẫn thầy Đường Khánh Sơn Các số liệu kết thu thân trực dõi, thu thập với thái độ hoàn toàn khách quan trung thực, tài liệu trích dẫn điều liệt kê đầy đủ, khơng chép tài liệu mà khơng có trích dẫn Tác giả luận văn Từ Đặng Thanh Hạc i LỜI CẢM ƠN Trước tiên, em xin gửi lời cảm ơn trân trọng sâu sắc đến thầy Đường Khánh Sơn - người tạo điều kiện tận tình hướng dẫn, góp ý, động viên em suốt trình nghiên cứu thực đồ án Xin chân thành cảm ơn đến tất q thầy thuộc Khoa Kỹ thuật khí, Bộ môn Cơ điện tử trường Đại học Kỹ thuật – công nghệ Cần Thơ người trang bị cho chúng em kiến thức bản, nhiệt tình hướng dẫn giúp đỡ chúng em suốt khóa học vừa qua Và sau cùng, xin cảm ơn, chia sẻ niềm vui với gia đình, người thân, tập thể lớp Cơ điện tử khóa - người bên quan tâm giúp đỡ tạo điều kiện thuận lợi để học tập, nghiên cứu hoàn thành đồ án tốt nghiệp Cần Thơ, ngày…tháng…năm 2019 Từ Đặng Thanh Hạc ii MỤC LỤC LỜI CAM ĐOAN i LỜI CẢM ƠN ii MỤC LỤC iii DANH MỤC HÌNH ẢNH .vii CHỮ VIẾT TẮT x DANH SÁCH KÍ HIỆU xi MỞ ĐẦU CHƯƠNG TỔNG QUAN 1.1 Khái quát quadcopter 1.2 Lịch sử hình thành 1.3 Tình hình nghiên cứu nước ngồi 1.4 Tình hình nghiên cứu nước 1.4.1 Mơ hình sinh viên sư phạm kỹ thuật Tp.HCM 1.4.2 Mơ hình sinh viên đại học bách khoa Đà Nẵng 1.4.3 Ở câu lạc mơ hình 1.5 Nội dung nghiên cứu 10 CHƯƠNG MƠ HÌNH HĨA HỆ THỐNG 11 2.1 Đặt giả thuyết 11 2.2 Mơ hình động học 11 2.3 Mơ hình động lực 14 2.3.1 Phương trình chuyển động quay 14 2.3.1.1 Ma trận quán tính 15 iii 2.3.1.2 Moment quay 15 2.3.1.3 Moment chuyển động quadcopter 15 2.3.2 2.4 Phương trình chuyển động tịnh tiến 19 Hiệu ứng khí động học 20 2.4.1 Lực kéo 20 2.4.2 Moment kéo 20 2.5 Động lực cánh quạt 21 2.6 Mơ hình khơng gian trạng thái 23 2.6.1 Vector trạng thái x 23 2.6.2 Điều khiển Vector đầu vào U 23 2.6.3 Phương trình chuyển động quay 25 2.6.4 Phương trình chuyển động tịnh tiến 26 2.6.5 Phương trình khơng gian trạng thái tổng hợp 27 CHƯƠNG 3.1 THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN CHO QUADCOPTER 29 Điều khiển hệ thống 29 3.1.1 Điều khiển độ cao 29 3.1.2 Điều khiển độ cao hướng 29 3.1.3 Điều khiển vị trí 30 3.2 Bộ điều khiển PID 32 3.2.1 Điều khiển độ cao 32 3.2.2 Bộ điều khiển độ cao hướng 33 3.2.2.1 Điều khiển góc roll 33 3.2.2.2 Điều khiển góc pitch 34 iv 3.2.2.3 Điều khiển góc yaw 34 3.2.2.4 Điều khiển vị trí 35 CHƯƠNG THIẾT KẾ QUADCOPTER 36 4.1 Thiết kế khung quadcopter 36 4.2 Các linh kiện sử dụng 37 4.2.1 Khung 37 4.2.2 Cánh quạt 38 4.2.3 Nguồn sử dụng 39 4.2.4 Động sử dụng 40 4.2.5 Cảm biến quay hồi chuyển cảm biến gia tốc 42 4.2.6 Bộ điều khiển 43 4.2.7 Bộ điều khiển RC Devo 44 4.2.8 Bộ điều tốc ESC (Electronic Speed Controller) 45 Hình 4.13 Bộ điều tốc ESC 30A simonk 46 4.3 Giao tiếp I2C (Inter intergrated circuit) 46 4.4 Lập trình arduino 47 4.4.1 Sơ đồ nguyên lý 47 4.4.2 Sơ đồ kết nối 48 4.4.4 Tính tốn góc xử lý tín hiệu 50 4.4.4.1 Tính góc 50 4.4.4.2 Xử lý tín hiệu 50 4.4.5 Lập trình 50 CHƯƠNG KẾT QUẢ VÀ ĐÁNH GIÁ 51 v 5.1 Kết 51 5.1.1 Mô Matlab Simulink 51 5.1.2 Giá trị nhận từ cảm biến 60 5.1.3 Mơ hình thực tế 63 5.2 Đánh giá 66 Kết đạt 67 Kết chưa đạt 67 Hướng phát triển 67 Ứng dụng 67 PHỤ LỤC A 68 PHỤ LỤC B 71 TÀI LIỆU THAM KHẢO 99 vi DANH MỤC HÌNH ẢNH Hình 1.1 Máy bay phản lực Breguet-Richet (1907) Hình 1.2 Oehmichen số (1920) Hình 1.3 Máy bay trực thăng de Bothezat (1922) Hình 1.4 Convertawings Model A Quadrotor (1956) Hình 1.5 Curtiss - Wright VZ-7 (1958) Hình 1.6 Máy bay PHANTOM PRO hãng DJI Hình 1.7 Máy bay MAVIC hãng DJI Hình 1.8 Mơ hình quadcopter sinh viên sư phạm kỹ thuật Tp.HCM Hình 1.9 Mơ hình quadcopter sinh viên đại học bách khoa Đà Nẵng Hình 1.10 Mơ hình câu lạc 10 Hình 2.1 Khung tham chiếu 12 Hình 2.2 Lực moment quadcopter 17 Hình 2.3 Sơ đồ động DC không chổi than 21 Hình 3.1 Sơ đồ điều khiển độ cao 29 Hình 3.2 Sơ đồ điều khiển độ cao mục tiêu 30 Hình 3.3 Sơ đồ điều khiển (hoàn chỉnh) 32 Hình 3.4 Bộ điều khiển PID 32 Hình 4.1 Cánh tay khung quadcopter 36 Hình 4.2 Thân quadcopter 36 Hình 4.3 Thân (bên trái) đáp (bên phải) quadcopter 37 Hình 4.4 Khung quadcopter hồng chỉnh 37 Hình 4.5 Khung quadcopter 38 Hình 4.6 Cánh quạt 10x45 39 Hình 4.7 Pin Lithium polymer 11.1v 40 Hình 4.9 BLDC MT2216-810KV 42 Hình 4.10 Cảm biến MPU-6050 43 Hình 4.11 Arduino nano 44 vii Hình 4.12 Bộ phát TX (bên trái) thu RX (bên phải) Devo 45 Hình 4.13 Bộ điều tốc ESC 30A simonk 46 Hình 4.14 Sơ đồ nguyên lý quadcopter 47 Hình 4.15 Sơ đồ kết nối 48 Hình 4.16 Lưu đồ giải thuật 49 Hình 5.1 Thơng số quadcopter 51 Hình 5.2 Mơ hình hóa quadcopter Matlab Simulink 52 Hình 5.3 Khối Translational Equation 52 Hình 5.4 Khối Rotational Equation 53 Hình 5.5 Khối Motor calibration 54 Hình 5.6 Khối Attitude and Heading Control 55 Hình 5.7 Khối Position controller 56 Hình 5.8 Khối Calculation controller 56 Hình 5.9 Khối INPUT 57 Hình 5.10 Vị trí x mong muốn x đầu 57 Hình 5.11 Vị trí y mong muốn y đầu 58 Hình 5.12 Vị trí z mong muốn z đầu 58 Hình 5.13 Giá trị phi mong muốn phi đầu 59 Hình 5.14 Giá trị theta mong muốn theta đầu 59 Hình 5.15 Giá trị psi mong muốn psi đầu 60 Hình 5.16 Ngõ góc phi, theta psi 60 Hình 5.17 Xử lý tín hiệu góc roll pith sử dụng lọc bổ xung 61 Hình 5.18 Xử lý tín hiệu góc roll pith sử dụng lọc bổ xung phóng to 61 Hình 5.19 Tín hiệu gyro trục x trước sau 62 Hình 5.20 Tín hiệu gyro trục y trước sau 62 Hình 5.21 Tín hiệu gyro trục z trước sau 63 Hình 5.22 Tín hiệu xung PWM động 63 Hình 5.23 Bộ phận điều khiển quadcopter 64 viii PHỤ LỤC B if ((abs(gyro_offset[XAXIS]) > 300 || abs(gyro_offset[YAXIS]) > 300 || abs(gyro_offset[ZAXIS]) > 300) && retry < 10) { // tính tốn lỗi thực lại retry++; delay(500); calibrate_gyro();}}; ///////////////////////////////////////////////////////////// void calibrate_accel() { // tính tốn sai lệch accel uint8_t i, count = 128; int32_t xSum = 0, ySum = 0, zSum = 0; for (i = 0; i < count; i++) { accel_signalen(); Serial.print("."); xSum += accelRaw[XAXIS]; ySum += accelRaw[YAXIS]; zSum += accelRaw[ZAXIS]; delay(10);} accel_offset[XAXIS] = xSum / count; accel_offset[YAXIS] = ySum / count; accel_offset[ZAXIS] = (zSum / count) - 8192; // - 1G; Từ Đặng Thanh Hạc 86 PHỤ LỤC B accel_offset[XAXIS] *= -1; accel_offset[YAXIS] *= -1; accel_offset[ZAXIS] *= -1;}; ///////////////////////////////////////////////////////////// void readGyroSum() {// đọc giá trị gyro gyro_signalen(); gyroSum[XAXIS] += gyroRaw[XAXIS]; gyroSum[YAXIS] += gyroRaw[YAXIS]; gyroSum[ZAXIS] += gyroRaw[ZAXIS]; gyroSamples++;}; ///////////////////////////////////////////////////////////// void readAccelSum() {// đọc giá trị accel accel_signalen(); accelSum[XAXIS] += accelRaw[XAXIS]; accelSum[YAXIS] += accelRaw[YAXIS]; accelSum[ZAXIS] += accelRaw[ZAXIS]; accelSamples++;}; ///////////////////////////////////////////////////////////// void evaluateGyro() { // tính trung bình Từ Đặng Thanh Hạc 87 PHỤ LỤC B gyro[XAXIS] = gyroSum[XAXIS] / gyroSamples; gyro[YAXIS] = gyroSum[YAXIS] / gyroSamples; gyro[ZAXIS] = gyroSum[ZAXIS] / gyroSamples; // gyro_x_cal:41 gyro_y_cal:99 gyro_z_cal:41 gyro[XAXIS] += gyro_offset[XAXIS]; gyro[YAXIS] += gyro_offset[YAXIS]; gyro[ZAXIS] += gyro_offset[ZAXIS]; gyro[XAXIS] *= gyroScaleFactor; gyro[YAXIS] *= gyroScaleFactor; gyro[ZAXIS] *= gyroScaleFactor; gyro[YAXIS] *= -1; gyro[ZAXIS] *= -1; // Reset biến SUM gyroSum[XAXIS] = 0; gyroSum[YAXIS] = 0; gyroSum[ZAXIS] = 0; gyroSamples = 0; }; ///////////////////////////////////////////////////////////// void evaluateAccel() { Từ Đặng Thanh Hạc 88 PHỤ LỤC B // tính trung bình accel[XAXIS] = accelSum[XAXIS] / accelSamples; accel[YAXIS] = accelSum[YAXIS] / accelSamples; accel[ZAXIS] = accelSum[ZAXIS] / accelSamples; // accel_x_cal:-445 accel_y_cal:251 accel_z_cal:833 accel[XAXIS] +=(-445);// accel_offset[XAXIS]; accel[YAXIS] += 251;//accel_offset[YAXIS]; accel[ZAXIS] +=833 ;// accel_offset[ZAXIS]; ///////////////////////////////////////////////////////////// accel[XAXIS] *= accelScaleFactor; accel[YAXIS] *= accelScaleFactor; accel[ZAXIS] *= accelScaleFactor; // Reset biến SUM accelSum[XAXIS] = 0; accelSum[YAXIS] = 0; accelSum[ZAXIS] = 0; accelSamples = 0;} ///////////////////////////////////////////////////////////// Từ Đặng Thanh Hạc 89 PHỤ LỤC B // tính tốn góc trục x y; void kinematics_update(float gyroX, float gyroY, float gyroZ, float accelX, float accelY, float accelZ) { float norm = sqrt(accelX * accelX + accelY * accelY + accelZ * accelZ); accelX /= norm; accelY /= norm; accelZ /= norm; //float accelXangle = atan2(accelY, accelZ); //float accelYangle = atan2(accelX, accelZ); float accelXangle = atan2(accelY, sqrt(accelX *accelX + accelZ *accelZ)); float accelYangle = atan2(accelX, sqrt(accelY *accelY + accelZ *accelZ)); float accelWeight = 0.0040; if (norm > 13.0 || norm < 7.0) accelWeight = 0.00; unsigned long now = micros(); kinematicsAngle[XAXIS] += (gyroX * (float)(now - kinematics_timer) / 1000000); kinematicsAngle[YAXIS] += (gyroY * (float)(now - kinematics_timer) / 1000000); kinematicsAngle[ZAXIS] += (gyroZ * (float)(now - kinematics_timer) / 1000000); // giới hạn quay (+- PI) NORMALIZE(kinematicsAngle[XAXIS]); NORMALIZE(kinematicsAngle[YAXIS]); Từ Đặng Thanh Hạc 90 PHỤ LỤC B NORMALIZE(kinematicsAngle[ZAXIS]); if (accelZ > 0.75) { if ((kinematicsAngle[XAXIS] - accelXangle) > PI) { kinematicsAngle[XAXIS] = (1.00 - accelWeight) * kinematicsAngle[XAXIS] + accelWeight * (accelXangle + TWO_PI); } else if ((kinematicsAngle[XAXIS] - accelXangle) < -PI) { kinematicsAngle[XAXIS] = (1.00 - accelWeight) * kinematicsAngle[XAXIS] + accelWeight * (accelXangle - TWO_PI); } else { kinematicsAngle[XAXIS] = (1.00 - accelWeight) * kinematicsAngle[XAXIS] + accelWeight * accelXangle;}} if (accelZ > 0.60) { if ((kinematicsAngle[YAXIS] - accelYangle) > PI) { kinematicsAngle[YAXIS] = (1.00 - accelWeight) * kinematicsAngle[YAXIS] + accelWeight * (accelYangle + TWO_PI); } else if ((kinematicsAngle[YAXIS] - accelYangle) < -PI) { kinematicsAngle[YAXIS] = (1.00 - accelWeight) * kinematicsAngle[YAXIS] + accelWeight * (accelYangle - TWO_PI); } else { kinematicsAngle[YAXIS] = (1.00 - accelWeight) * kinematicsAngle[YAXIS] + accelWeight * accelYangle;} } Từ Đặng Thanh Hạc 91 PHỤ LỤC B kinematics_timer = now;} ////////////////////////////////////////////////// void mpu6050_initialize(){//khai báo cài đặt mpu-6050 // Chip reset Wire.beginTransmission(MPU6050_ADDRESS); Wire.write(MPUREG_PWR_MGMT_1); Wire.write(BIT_H_RESET); Wire.endTransmission(); // Startup delay delay(100); Wire.beginTransmission(MPU6050_ADDRESS); Wire.write(MPUREG_WHOAMI); Wire.endTransmission(); Wire.requestFrom(MPU6050_ADDRESS, 1); uint8_t register_value = Wire.read(); Wire.beginTransmission(MPU6050_ADDRESS); Wire.write(MPUREG_INT_PIN_CFG); Wire.write(0x02); Wire.endTransmission(); Từ Đặng Thanh Hạc 92 PHỤ LỤC B Wire.beginTransmission(MPU6050_ADDRESS); Wire.write(MPUREG_PWR_MGMT_1); Wire.write(MPU_CLK_SEL_PLLGYROZ); Wire.endTransmission(); Wire.beginTransmission(MPU6050_ADDRESS); Wire.write(MPUREG_PWR_MGMT_2); Wire.write(0); Wire.endTransmission(); Wire.beginTransmission(MPU6050_ADDRESS); Wire.write(MPUREG_SMPLRT_DIV); Wire.write(0x00); Wire.endTransmission(); Wire.beginTransmission(MPU6050_ADDRESS); Wire.write(MPUREG_CONFIG); Wire.write(BITS_DLPF_CFG_42HZ); Wire.endTransmission(); Wire.beginTransmission(MPU6050_ADDRESS); Wire.write(MPUREG_GYRO_CONFIG); Wire.write(BITS_FS_1000DPS); Từ Đặng Thanh Hạc 93 PHỤ LỤC B Wire.endTransmission(); Wire.beginTransmission(MPU6050_ADDRESS); Wire.write(MPUREG_ACCEL_CONFIG); Wire.write(0x08); Wire.endTransmission(); delay(1500); } ///////////////////////////////////////////////////////////// void gyro_signalen(){ //đọc giá trị gyro thô Wire.beginTransmission(MPU6050_ADDRESS); Wire.write(MPUREG_GYRO_XOUT_H); Wire.endTransmission(); Wire.requestFrom(MPU6050_ADDRESS, 6); while(Wire.available() < 6); //chờ nhận đủ byte gyroRaw[XAXIS] = ((Wire.read() pid_max_yaw)pid_output_yaw = pid_max_yaw; else if(pid_output_yaw < pid_max_yaw * -1)pid_output_yaw = pid_max_yaw * -1; pid_last_yaw_d_error = pid_error_temp;} Từ Đặng Thanh Hạc 98 TÀI LIỆU THAM KHẢO TÀI LIỆU THAM KHẢO [1] 2016.“Giáo trình kỹ thuật robot”TS Ngơ Quang Hiếu, PGS TS Nguyễn Chí Ngơn [2]Spring 2014.“ Dynamic Modeling and Control of a Quadrotor Using Linear and Nonlinear Approaches” byProf Maki K Habib [3]January 2016.”mathematical modeling of unmanned aerial vehicles with four rotors”by Denis Kotarski, Zoran Benić and Matija Krznar [17-19] [4] March 2016 “Control design for unmanned aerial vehicles with four rotors”by Denis Kotarski, Zoran Benić and Matija Krznar [5] September 2013“Design Procedure of 4-Bladed Propeller”.by Ishiodu Anthony [6]https://www.banggood.com/EMAX-MT2216-KV810-Brushless-Motor-With-1045Propeller-For-RC-Modes-p925679.html?utm_source=google&utm_medium=cpc_ods&utm_campaign=contentsdsrm-led2-strip&utm_content=aurogon&ad_id=208549888285&gclid=Cj0KCQjwtXlBRDWARIsAGYQAmfYZJP_km38XlQ38NHxLEPmez6PeeTSyytE5ZON0VVeEwmAsbnCpcaAq0NEALw_wcB&ID=521309&cur_warehouse=CN [7]https://www.orientalmotor.com/technology/motor-sizing-calculations.html [8]https://anhminhvn.com/news/dong-co-dien-moi-quan-he-giua-cong-suat-va-momenvoi-toc-do-95.html [9]https://vi.wikipedia.org/wiki/Lực_điện_động [10]2007.” design and control of quadrotors with application to autonomous flying”by Samir BOUABDALLAH,tr.24-25 Từ Đặng Thanh Hạc 99 TÀI LIỆU THAM KHẢO [11]May 30, 2011”Stabilization and control of unmanned quadcopter”.By Tomáš Jiřinec [12] https://m-selig.ae.illinois.edu/props/propDB.html [13] http://www.geekmomprojects.com/gyroscopes-and-accelerometers-on-a-chip/ [14] “MPU-6000 and MPU-6050 Register Map and Descriptions Revision 4.2” Từ Đặng Thanh Hạc 100 ... định vị trí tốt Từ Đặng Thanh Hạc CHƯƠNG TỔNG QUAN Hình 1.10 Mơ hình câu lạc 1.5 Nội dung nghiên cứu Đề tài nghiên cứu chế tạo mơ hình máy bay quadcopter đề tài đòi hỏi kiến thức tổng hợp nhiều... Từ Đặng Thanh Hạc CHƯƠNG TỔNG QUAN Hình 1.6 Máy bay PHANTOM PRO hãng DJI Hình 1.7 Máy bay MAVIC hãng DJI 1.4 Tình hình nghiên cứu nước Trong nước thuật ngữ quadcopter dần quen thuộc với người... Quadrotor (1956) Hình 1.5 Curtiss - Wright VZ-7 (1958) Hình 1.6 Máy bay PHANTOM PRO hãng DJI Hình 1.7 Máy bay MAVIC hãng DJI Hình 1.8 Mơ hình quadcopter sinh viên