Làm một chiếc UAV cỡ nhỏ gọn, nhẹ, rẻ. Mục đích hiểu rõ các bước xây dựng nên một UAV hoàn chỉnh cũng như thiết kế để máy bay có thể cất cánh, cân bằng và điều khiển một cách tốt nhất.Để máy bay có thể có thể chuyển động tự do trong không gian thì cần thực hiện đủ 6 chuyển động ( 3 chuyển động quay và 3 chuyển động tịnh tiến ) tuy nhiên thì quadcopter lại không đủ số cánh quạt để làm thế. => Cách giải quyết là cần kết hợp các chuyển động với nhau phát triển hệ thống điều khiển kết hợp đẩy và quay thành đôi.
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CƠ KHÍ ĐỘNG LỰC BỘ MÔN KỸ THUẬT HÀNG KHÔNG - VŨ TRỤ BÀI TẬP LỚN MÔN: KỸ THUẬT ĐIỆN - ĐIỆN TỬ TRÊN MÁY BAY CHỦ ĐỀ Thiết kế xây dựng máy bay quadcopter Giảng viên hướng dẫn: TS Phạm Gia Điềm Nhóm 04 Họ tên MSSV Nguyễn Xuân Dũng 20186038 Võ Trung Kiên 20186054 Nguyễn Quốc Việt 20186081 Lưu Vương Trọng Hiếu 20186042 Tạ Viết Cường 20186033 Hà Nội, Ngày 21 tháng 07 năm 2021 MỤC LỤC Phần I: Bài toán thiết kế…………………………… ………………… I Đặt vấn đề mục đích đề tài II.1 Cách phân bố động cánh quạt UAV có motor (quadcopter) II.2 Chuyển động quadcopter Phần II: Sơ đồ khối hệ thống Phần III: Linh kiện thông số kỹ thuật I Mạch vi điều khiển trung tâm arduino nano I.1 Các cấu tạo Arduino Nano .5 I.2 Các chân Arduino Nano .6 II Động Driver I.1 Mơ hình tính toán .8 II.2 Động chiều pha 820 II.3 Module L298N 10 Phần IV: Thuật toán điều khiển cấu bập bênh thử nghiệm tìm thơng số PID 11 I Giới thiệu 11 II Tìm hiểu điều khiển PID đặc điểm phản hồi khâu .12 II.1 Khâu tỷ lệ (Hệ số ) 12 II.2 Khâu vi phân (Hệ số ) .13 II.3 Khâu tích phân (Hệ số ) 15 III Lập trình Arduino 16 IV Thực nghiệm 17 Phần V: Bộ điều khiển từ xa .17 I Linh kiện điện tử .17 I.1 Arduino 17 I.2.Module truyền phát tín hiệu 18 II Cách giao tiếp Module nRF24L01 với Arduino Uno Ardruino Nano 18 II.1 Sơ đồ nối mạch .18 II.1.1 Transmitter : Dùng arduino uno 19 II.1.2 Receiver : Dùng arduino nano .19 II.2 Thư viện Arduino 20 II.2.1 Transmitter : 20 II.2.2 Receiver : 21 Kết luận .22 Tài liệu tham khảo 22 Phân chia công việc thành viên nhóm: Họ tên Cơng việc Nguyễn Xuân Dũng Xây dựng chương trình điều khiển Võ Trung Kiên Xây dựng chương trình điều khiển Nguyễn Quốc Việt Lưu Vương Trọng Hiếu Tạ Viết Cường Lựa chọn driver + Xây dựng chương trình điều khiển Lựa chọn điều khiển từ xa Lựa chọn động driver động PHẦN I: Bài toán thiết kế I Đặt vấn đề mục đích đề tài - Làm UAV cỡ nhỏ gọn, nhẹ, rẻ - Mục đích hiểu rõ bước xây dựng nên UAV hoàn chỉnh thiết kế để máy bay cất cánh, cân điều khiển cách tốt II Các chế độ bay II.1 Cách phân bố động cánh quạt UAV có motor (quadcopter) - Bố trí theo hình dấu nhân - cánh quạt cạnh quay ngược chiều - cánh quạt đối diện quay chiều II.2 Chuyển động quadcopter * Vấn đề: Để máy bay có thể chuyển động tự khơng gian cần thực đủ chuyển động ( chuyển động quay chuyển động tịnh tiến ) nhiên quadcopter lại khơng đủ số cánh quạt để làm => Cách giải cần kết hợp chuyển động với phát triển hệ thống điều khiển kết hợp đẩy quay thành đôi 1 Để tịnh tiến lên xuống dọc theo trục thẳng đứng: tăng giảm đồngth ời vận tốc động Để thực chuyển động Yaw: cặp cánh đối diện tăng lực kéo động giảm với cặp lại Để thực chuyển động roll: tăng tốc cặp cánh bên giảm cặp lại Để thực chuyển động pitch: tăng tốc cặp cánh trước sau giảm cặp lại Để di chuyển tịnh tiến theo phương x, y quadcopter phải kết hợp với chuyển động pitch roll Hình Mơ hình động lực học máy bay quadcopter PHẦN II: Sơ đồ khối hệ thống CHỨC NĂNG CỦA CÁC KHỐI CHÍNH TRONG SƠ ĐỒ Khối điều khiển trung tâm: nhận liệu từ cảm biến dùng ngắt ngồi để lấy tín hiệu từ Receiver Thực giải thuật PID tính tốn, xuất tín hiệu PWM khối driver Khối cảm biến: khối lấy liệu độ nghiêng trục x y z, vận tốc góc truyền Arduino Driver: dùng để điều khiển chiều qua tốc độ động pha ( nhận tín hiệu PWM từ Arduino) Transmitter: khối truyền tín hiệu điều khiển cân bằng, di chuyển dạng song RF ( tần số radio) Receiver nhận tín hiệu điều khiển hướng từ giải mã gửi Arduino PHẦN III: Linh kiện thông số kỹ thuật I Mạch vi điều khiển trung tâm arduino nano: Là mạch điều khiển dựa chip Atmega 328P Thông số kỹ thuật Arduino nano: I.1 Các cấu tạo Arduino nano: Nguồn: cổng miniUSB, cổng sử dụng cho việc lập trình giám sát nối tiếp - Các chân nguồn Nano: Vin: ta cấp nguồn qua chân ( dùng ) 5V: chân cho nguồn 5V từ bo mạch 3.3V: chân cho nguồn 3.3V, dòng điện tối đa 50mA GND: chân đất Mạch dao động: tạo xung clock giúp cho vi điều khiển hoạt động, thực thi lệnh - Dùng thạch anh 16Mhz làm nguồn dao động ( thạch anh vùng điện từ trường thạch anh dao động giống điện từ trường đó) Mạch reset - Đảm bảo việc sau: Reset tay Reset tự động Khởi động vi điều khiển trước chạy chương trình - Để vi điều khiển khởi động lại chân reset phải mức logic low đủ yêu cầu Vi điều khiển Atmega328P board Arduino Nano có sẵn TQFP (plastic quad flat pack-gói quad phẳng) với 32 chân I.2 Các chân Arduino Nano Hình Các chân Arduino Nano vv Ba chân nguồn: Vin, 5V, 3V3, GND Các chân: 1, 2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 16 Ngoài chức đầu vào đầu số, chân có số chức bổ sung Sử dụng hàm pinModel(), digitalModel(), digitalRead() Giá trị điện áp 5V, dòng bên chân 20mA điện trở 20-50 Ohm Dòng tối đa trên I/O 40mA để không hỏng bo mạch - Một số chân Digital có chức đặc biệt: Serial O (RX), 1(TX): nhận truyền liệu Ngắt ngoài: 5,6 PWM: 6,8,9,12,13,14 cung cấp đầu xung PWM Mỗi chân cung cấp tín hiệu điều khiển độ rộng xung 8bit tạo cách dung hàm analogWrite() SPI: 13-16 hỗ trợ giao tiếp SPI LED: Led nối với chân D16 sáng giá trị mức cao tắt giá trị mức thấp Chân 18, 19, 20, 21, 22, 23, 24, 25 26 : Ngõ vào/ra tương tự.Tương tự chân digital Nano, chân analog có số chức khác Các chân dung điện áp từ 0V đến 5V ứng với 1024 giá trị Nếu muốn sử dụng điện áp tham chiếu 0->3.3V nối nguồn cho chân AREF cách sử dụng chức analof Reference() Chân A4,A5: giao tiếp I2C Chân 18: AREF điện áp tham chiếu cho đầu vào dung cho việc chuyển đổi ADC Chân 28: chân reset Các chân ICSP| Hình Các chân ICSP II Động driver: II.1 Mơ hình tính tốn: Coi động hoạt động ổn định, ta có phương trình lực đẩy động tính sau: Phương trình lực đẩy (N) Trong đó: Ký hiệu Định nghĩa Lực đẩy động thứ i(N) Mật độ khơng khí) Diện tích cánh quạt ( Vận tốc theo phương Z động thứ i () Như vậy, tính tổng lực nâng động là: Ký hiệu Giá trị 1,5 (kg) 1,249 (kg/) - Từ đó ta tìm được vận tốc gió dưới cánh là: V1=36.51m/s vận tốc góc của motor xấp xỉ 4800 rpm - Để đảm bảo Quadcopter chuyển động khoảng cách động trục phải đủ dài: II.2 Động chiều pha 820: * Thông số kỹ thuật động 2pha 820: Đường kính động cơ: 8.5 MM Chiều dài động cơ: 20 MM Đường kính trục: 1.0 MM Chiều dài trục: MM Dây nguồn dài: 12cm Trọng lượng: 5g Điện áp: V-5V Dòng: 2A tốc độ: 3V: 35.000-37.000 RPM (tham khảo) 5V: >50000 rpm (tham khảo) Số lượng: 04 Chiếc Cánh quạt: 04 Sải cánh: 75mm, trục: 1mm Hình hình Thơng số hình học động pha cánh quạt máy bay II.3 Module L298N: - Khái niệm: L298N IC tích hợp nguyên khối gồm mạch cầu H bên với điện áp làm tăng công suất nhỏ động DC loại vừa Hình Mạch cầu H - Nguyên lý hoạt động mạch cầu H: Mạch cầu H đơn giản để điều khiển động DC quay thuận quay nghịch Mở S2, S3 đóng S1, S4 quay thuận Mở S1, S4 đóng S2, S3 quay nghịch * Thông số kỹ thuật: Điện áp điều khiển: +5V ~ +12 V Dòng tối đa cho cầu H là: 2A Điện áp tín hiệu điều khiển: +5 V ~ +7 V Dịng tín hiệu điều khiển: ~ 36Ma Cơng suất hao phí: 20W (khi nhiệt độ T = 75 °C) Nhiệt độ bảo quản: -25°C ~ +130 Có gắn tán nhiệt chống nóng điốt board giúp vi xử lý chống dòng điểm cảm ứng từ việc khởi động/tắt động * Các chân L298N cách nối module với mạch vi điều khiển trung tâm: - 12V power 5Vpower chân cấp nguồn trực tiếp đến động Power GND chân nối đất nguồn cấp cho động Output A output B nối với động chân INPUT : IN1, IN2, IN3, IN4 nối tương ứng với chân Digital Arduino Điều khiển chiều quay động cách xuất giá trị logic chân Inx Điều khiển tốc độ quay động cần nối chân EnA EnB với chân PWM Arduino Nano SƠ ĐỒ ĐIỆN DRIVER, MOTOR, ARDUINO NANO Hình Sơ đồ điện Driver, Motor, Arduino Nano PHẦN IV: Thuật toán điều khiển cấu bập bênh thử nghiệm tìm thông số PID I Giới thiệu Trong tập lớn này, chúng em nhắm tới mục đích xây dựng quadcopter hoàn chỉnh, dựa vào phân tích động lực học quadcopter trình bày, chúng em xây dựng thuật toán cân đưa mơ hình cho trục quadcopter Hoàn thành việc cân trục quadcopter giải toán cân cho quadcopter, nhiên chúng em không kể đến ảnh hưởng lẫn trục cân Về ý tưởng, việc cân trục cho quadcopter lý tưởng đưa hai vận tốc góc motor Tuy nhiên thực tế khơng có tuyệt đối mặt vận tốc, sai lệch phụ thuộc vào nhiều khía cạnh vật liệu thiết kế, … gây sai lệch đủ nhỏ làm cho việc cân trục khó khăn, nên chúng em sử dụng điều khiển PID để thực việc cân cho trục Hình Sơ đồ khối hoạt động điều khiển PID II Tìm hiểu điều khiển PID đặc điểm phản hồi khâu Bộ điều khiển PID (Proportional-Integral-Derivative) chế phản hồi vòng điều khiển tổng quát sử dụng rộng rãi hệ thống điều khiển công nghiệp điều khiển PID điều khiển sử dụng nhiều điều khiển phản hồi Bộ điều khiển PID tính tốn giá trị "sai số" hiệu số giá trị đo thông số biến đổi giá trị đặt mong muốn Bộ điều khiển thực giảm tối đa sai số cách điều chỉnh giá trị điều khiển đầu vào Ở PID sử dụng để điều chỉnh sai số góc trục so với phương nằm ngang, từ điều chỉnh vận tốc hai động Ở đây, ta có khái niệm setpoint (SP) process variable (PV) Bộ điều khiển PID liên tục tính tốn giá trị “sai số” giá trị mong muốn SP giá trị thực PV II.1 Khâu tỷ lệ (Hệ số ) Khâu tỷ lệ có tỷ lệ với hiệu SP-PV=e(t) với hệ số Nếu giá trị sai số lớn đầu điều khiển lớn, tính hệ số Chỉ sử dụng khâu tỷ lệ triệt tiêu hết sai số thân MPU6050 cần có độ trễ để cập nhật sai số Trong mơ hình chúng em, sai số e(t) sử dụng góc lệch trục so với phương ngang Ví dụ tường minh, chúng em đưa mơ hình tơ muốn đỗ xe vị trí mong muốn hình vẽ, nhiên độ “trễ” việc cập nhật “sai số” xe lùi lại lại so với vị trí cần đỗ Tiếp tục xe tiến lên bị sai lệch, làm “sai số” đủ nhỏ Hình Hình ảnh minh họa tơ muốn đỗ vị trí mong muốn cho việc tìm hiểu khâu tỷ lệ Hình 10 Đồ thị phản hồi (step response) hệ số 0.5, 1.1, 1.6 Đối với mơ hình chúng em, sử dụng hệ số trục khơng tự cân được, tượng giống bập bênh Hình 11 Minh họa tượng bập bênh mơ hình II.2 Khâu vi phân (Hệ số ) Như trình bày, chúng em thiết lập thêm thành phần vi phân điều khiển Về mặt toán học, khâu vi phân đưa sau: Ở đây, thành phần thành phần vận tốc góc trục Như vậy, khâu vi phân có công dụng điều chỉnh cho trục đứng yên Trong mô hình chúng em, hệ số lớn với trễ phản hồi làm cho trục khơng cân mà cịn bị nhiễu loạn dùng khâu tỷ lệ Dựa vào thực nghiệm, chúng em tìm hệ số thích hợp với mơ hình Việc tìm hệ số thích hợp tương đối nhiều thời gian Hình 12 Hình ảnh minh họa nhiễu loạn trục sử dụng hệ số lớn Hình 13 Đồ thị phản hồi (step response) hệ số 0.5, 1, II.3 Khâu tích phân (Hệ số ) Khi lựa chọn hệ số thích hợp, trục mặt cân mặt động học, nhiên chưa thể cân mặt hình học, tức nghiêng so với phương ngang góc nhỏ Hình 14 Mơ hình thể trục cân động họ nghiêng so với phương ngang góc nhỏ Hình 15 Đồ thị phản hồi (step response) hệ số 0.5, 1, So với thực tế, trục ngang quadcopter khó đạt vị trí cân mặt hình học sau khoảng thời gian đủ lớn, nên chúng em không đề cập đến hệ số khâu tích phân III Lập trình Arduino Lập trình về: Thay đổi đơn vị góc từ rad sang degree Lọc nhiễu biến tốc độ góc Giới hạn bão hịa biến tốc độ góc Vơ hiệu hóa thành phần tốc độ góc Giới hạn bão hịa biến góc Lập trình về: Thuật tốn PID điều khiển tốc độ hai động In thông số vận tốc động cơ, góc vận tốc góc thời điểm, Chúng em giải thích thêm thành phần rate effect, qua thực nghiệm cho thấy, vượt qua “ngưỡng cân bằng” điều khiển khâu vi phân làm nhiễu loạn Vì vượt qua “ngưỡng cân bằng”, tức qua vi trí cân vận tốc góc khơng cập nhật kịp thời nên tiếp tục vuợt qua “ngưỡng cân bằng” gây nhiễu loạn Vì vận tốc góc góc trục phương ngang dấu, chúng em loại bỏ khâu vi phân IV Thực nghiệm Bộ điều khiển PID với hệ số =3 =0.2 (chưa có rate effect) https://drive.google.com/file/d/1SInwuCDJpKk3eSQU_Z0TT_7qZ0i3XQRz/vi ew?usp=sharing Bộ điều khiển PID với hệ số =2 =0.2 (chưa có rate effect) https://drive.google.com/file/d/1-ftrfvPa3IunF9VAOkx9y0CHUyIQyvTp/view? usp=sharing Bộ điều khiển PID với hệ số =1.2 =0.16 (chưa có rate effect) https://drive.google.com/file/d/1HcP6lUA5YU5EPshMEuTaZn2Rh3zk5c8c/vi ew?usp=sharing Bộ điều khiển PID với hệ số =1.5 =0.15 (đã có rate effect) https://drive.google.com/file/d/1es5vXP6k3drOsH3Zb9bvrGAwsfN3hbA-/vie w?usp=sharing Quá trình tìm hệ số thích hợp https://drive.google.com/drive/folders/1FRAeECXTdMK8b7t6wT75EG8dXU5 nArDw Như vậy, chúng em tìm hệ số thích hợp =1.5 =0.15 PHẦN V: BỘ ĐIỀU KHIỂN TỪ XA I Linh kiện điện tử: I.1.Arduino: Arduino Uno Arduino Nano I.2.Module truyền phát tín hiệu : nRF24L01 Module sử dụng băng tần 2,4 GHz hoạt động với tốc độ truyền từ 250 kbps lên đến Mbps Nếu sử dụng không gian mở với tốc độ truyền thấp hơn, phạm vi đạt tới 100 mét Mơ-đun sử dụng 125 kênh khác mang lại khả có mạng gồm 125 modem hoạt động độc lập nơi Mỗi kênh có tối đa địa đơn vị giao tiếp với tối đa đơn vị khác lúc Điện áp hoạt động mô-đun từ 1,9 đến 3,6V Ba số chân dành cho giao tiếp SPI chúng cần kết nối với chân SPI Arduino, lưu ý bảng Arduino có chân SPI khác Các chân CSN CE kết nối với chân kỹ thuật số bảng Arduino chúng sử dụng để thiết lập mô-đun chế độ chờ chế độ hoạt động, để chuyển đổi chế độ truyền chế độ lệnh Chốt cuối chân ngắt mà không cần phải sử dụng II Cách giao tiếp module nRF24L01 với arduino uno arduino nano II.1.Sơ đồ nối mạch : II.1.1 Transmitter : Dùng arduino uno nRF24L01 GND VCC CE CNS SCK MOSI MISO Arduino uno GND 3,3 V 10 13 11 12 Joystick GND 5V VRX Arduino uno GND 5V A0 Đèn Led: đầu dương nối với chân 14 arduino uno, đầu âm nối với điện trở 300 ôm II.1.2 Receiver : Dùng arduino nano nRF24L01 GND VCC CE CNS SCK MOSI MISO Arduino nano GND 3,3 V D7 D8 D12 D11 D10 Servo Dây vàng Dây đỏ Dây nâu Arduino nano D5 5V GND II.2 Thư viện Arduino II.2.1 Transmitter : #include #include #include #define led 12 RF24 radio(9,10); const byte addresses[][6] = {"00001","00002"}; boolean buttonState = 0; void setup(){ pinMode(12,OUTPUT); radio.begin(); radio.openWritingPipe(addresses[1]); radio.openReadingPipe(1, addresses[0]); radio.setPALevel(RF24_PA_MIN); } void loop(){ delay(5); radio.stopListening(); int potValue = analogRead(A0); int angleValue = map(potValue, 0, 1023, 0, 180); radio.write(&angleValue, sizeof(angleValue)); delay(5); radio.startListening(); while (!radio.available()); radio.read(&buttonState, sizeof(buttonState)); if (buttonState == HIGH) { digitalWrite(led, HIGH); } else { digitalWrite(led, LOW); } } II.2.2 Receiver : #include #include #include #include #define button RF24 radio(7,8); const byte addresses[][6] = {"00001","00002"}; Servo myServo; boolean buttonState = 0; void setup () { pinMode (button, INPUT); myServo.attach(5); radio.begin(); radio.openWritingPipe(addresses[0]); radio.openReadingPipe(1, addresses[1]); radio.setPALevel(RF24_PA_MIN); } void loop() { delay(5); radio.startListening(); if (radio.available()) { while ( radio.available()) { int angleV = 0; radio.read(&angleV, sizeof(angleV)); myServo.write(angleV); } delay(5); radio.stopListening(); buttonState = digitalRead(button); radio.write(&buttonState,sizeof(buttonState)); } } Kết luận Trong trình làm tập lớn, chúng em học thêm nhiều kiến thức mới, cách phối hợp phân công công việc cho hiệu Trong tập lớn này, chúng em nhắm tới mục đích xây dựng quadcopter hồn chỉnh, nhiên thực tế chúng em chưa có kết thực nghiệm quadcopter so chậm chễ, chúng em giải khoảng 70% trình xây dựng lên Trong tương lai, chúng em mơ quadcopter chế độ bay treo chế độ bay khác Ý tưởng dù có từ lâu, qua việc làm tập nhóm chúng em thứ đơn giản để phát triển tích lũy kiến thức cho việc đóng góp vào mơn kỹ thuật điện - điện tử máy bay học vật bay Tài liệu tham khảo PID brushless motor control tutorial - YouTube Atheer L Salih, M Moghavvemi, Haider A F Mohamed and Khalaf Sallom Gaeid Centre - Modelling and PID Controller Design for a Quadrotor Unmanned Air Vehicle Arduino Drone - YouTube PID controller - Wikipedia ... Mục đích hiểu rõ bước xây dựng nên UAV hoàn chỉnh thiết kế để máy bay cất cánh, cân điều khiển cách tốt II Các chế độ bay II.1 Cách phân bố động cánh quạt UAV có motor (quadcopter) - Bố trí theo... mục đích xây dựng quadcopter hoàn chỉnh, dựa vào phân tích động lực học quadcopter trình bày, chúng em xây dựng thuật tốn cân đưa mơ hình cho trục quadcopter Hoàn thành việc cân trục quadcopter. .. thực tế chúng em chưa có kết thực nghiệm quadcopter so chậm chễ, chúng em giải khoảng 70% trình xây dựng lên Trong tương lai, chúng em mơ quadcopter chế độ bay treo chế độ bay khác Ý tưởng dù có