1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

THIẾT kế máy BAY điều KHIỂN (có code và sơ đồ mạch)

36 2,5K 23

Đ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

Thông tin cơ bản

Định dạng
Số trang 36
Dung lượng 878,26 KB

Nội dung

THIẾT kế máy BAY điều KHIỂN (có code và sơ đồ mạch) ......................THIẾT kế máy BAY điều KHIỂN (có code và sơ đồ mạch) ......................THIẾT kế máy BAY điều KHIỂN (có code và sơ đồ mạch) ......................THIẾT kế máy BAY điều KHIỂN (có code và sơ đồ mạch) ......................

THIẾT KẾ MÁY BAY ĐIỀU KHIỂN MỤC LỤC DANH MỤC CÁC HÌNH VẼ DANH MỤC CÁC BẢNG BIỂU DANH MỤC CÁC TỪ VIẾT TẮT DC Direct Current ESC Electronic Speed Control TX Transmitter RX Receiver I2C Inter-integrated Circuit DMP Digital Motion Processor Trang 6/33 CHƯƠNG GIỚI THIỆU ĐỀ TÀI 1.1 Giới thiệu  Máy bay điều khiển mơ hình điều khiển RF (RC), đáp ứng nhiều nhu cầu sử dụng khác giải trí, chụp ảnh, quay phim,có thể ứng dụng vào quân sự, thám hiểm nơi người tới, ứng dụng nông nghiệp  Máy bay điều khiển hoạt động dựa theo nguyên lý tạo lực nâng đủ lớn cân để nâng mơ hình lên cao, điều khiển hướng tiến,lùi, trái, phải, xoay vòng; ngồi gắn thêm cảm biến, GPS, camera  Máy bay điều khiển: - Ưu điểm: điều khiển từ xa, đáp ứng nhiều nhu cầu, sử dụng sống, quân - Khuyết điểm: khó điều khiển, cần có thời gian luyện tập, nguy hiểm điều khiển chỗ đơng người, chi phí cao  Đề tài sử dụng vi điều khiển arduino, cảm biến trục MPU6050, điều khiển từ xa tay cầm chuyên dụng dùng RF Đề tài có tham khảo dự án Joop Brokking 1.2 Mục tiêu đề tài  Thiết kế mạch điều khiển dùng module arduino cảm biến trục, lập trình máy bay tự cân trục, hiểu cách hoạt động động DC không chổi than pha  Thiết kế máy bay điều khiển qua thu phát sóng Biết thêm cách thức hoạt động máy bay ứng dụng đời sống 1.3 Hướng thực đề tài Thiết kế máy bay điều khiển Trang 7/33  Tìm hiểu cảm biến trục MPU6050, động DC không chổi than với điều tốc ESC, đọc tín hiệu từ thu sóng  Củng cố kiến thức lập trình vi điều khiển, đọc hiểu tài liệu tiếng anh thành phần máy bay, datasheet cảm biến, viết chương trình Thiết kế máy bay điều khiển Trang 8/33 CHƯƠNG THỰC HIỆN ĐỀ TÀI 1.4 Sơ đồ khối 1.1.1 Sơ đồ khối TX(transmitter) Nguồn(pin) Động cơ, cánh quạt RX(receiver) Vi điều khiển Cảm biến MPU6050 Hình 2-1 Sơ đồ khối Thiết kế máy bay điều khiển ESC Trang 9/33 2.1.2 Chức khối • Khối TX (transmitter): sử dụng tay cầm điều khiển phát liệu qua RF cho thu • Khối RX (receiver): nhận liệu từ TX, nối với chân vi điều khiển • Khối vi điều khiển: module Arduino, lập trình đọc tín hiệu từ RX, đọc tính tốn góc cảm biến MPU6050, xuất tín hiệu điều khiển cho ESC • Khối nguồn (pin): dùng pin Lipo 11.1 V cấp nguồn cho ESC Arduino • Khối ESC: nhận tín hiệu từ Arduino, sử dụng mạch động lực điều khiển động DC không chổi than pha • Khối động cơ, cánh quạt: động cơ-cánh quạt điều khiển qua ESC, mơ hình máy bay (quadcopter) 1.5 Tìm hiểu thành phần, module 1.1.2 Vi điều khiển Arduino • Đề tài sử dụng module Arduino Nano có thiết kế nhỏ gọn,nhẹ thích hợp để làm mạch xử lý điều khiển cho tồn mơ hình • Arduino Nano dùng chíp điều khiển Atmega328 cho phép xử lý liệu phức tạp, hỗ trợ ngơn ngữ lập trình C,C++ ngơn ngữ thống họ AT Hình 2-2 Aruino Nano [1] Thiết kế máy bay điều khiển Trang 10/33 1.1.3 Cảm biến MPU6050 • Cảm biến MPU6050 cảm biến trục tự tích hợp gồm trục cảm biến gia tốc trục cảm biến vận tốc góc • MPU6050 cho phép phát chuyển động, độ lệch so với điểm đặt trước đó, qua ứng dụng vào nhiều dự án cân máy bay điều khiển, xe cân bằng, lắc, ứng dụng việc theo dõi tình trạng sức khỏe, đo độ nghiêng • Cảm biến cho phép xuất liệu thô gia tốc vận tốc góc, từ tính tốn dựa datasheet cho số liệu mong muốn • Cảm biến MPU6050 sử dụng chuẩn giao tiếp I2C kết nối vi điều khiển với tốc độ nhanh chóng, cảm biến có tính tốn chuyển động tín hiệu số (DMP) lập trình sẵn để tính tốn liệu, giảm bớt khối lượng xử lý cho vi điều khiển • Giao tiếp I2C (Inter-integrated Circuit): chuẩn giao tiếp phạm vi ngắn, tốc độ truyền nhận cao, giao thức kiểu Multi-Master Multi-Slave, sử dụng hai dây SCL SDA để truyền nhận liệu, tiết kiệm chân giao tiếp cho vi điều khiển nối nhiều thiết bị bus I2C • Cảm biến kết nối với Arduino theo giao tiếp I2C, SCL nối với chân A5, SDA nối với chân A4 Hình 2-2 Cảm biến MPU6050 [2] Thiết kế máy bay điều khiển Trang 22/33 float roll_dieuchinh, pitch_dieuchinh; long giatoc_x, giatoc_y, giatoc_z, tong_giatoc; unsigned long timer_kenh1, timer_kenh2, timer_kenh3, timer_kenh4, esc_timer, esc_loop_timer; unsigned long timer_1, timer_2, timer_3, timer_4, current_time; unsigned long loop_timer; double gyro_pitch, gyro_roll, gyro_yaw; double truc_vantocgoc_cal[4]; float loi_pid; float tong_pid_i_roll, roll_setpoint, gyro_roll_input, pid_output_roll, last_roll_d_error; float tong_pid_i_pitch, pitch_setpoint, gyro_pitch_input, pid_output_pitch, last_pitch_d_error; float tong_pid_i_yaw, yaw_setpoint, gyro_yaw_input, pid_output_yaw, last_yaw_d_error; float goc_roll_acc, goc_pitch_acc, goc_pitch, goc_roll; boolean gyro_angles_set; void setup(){ //Copy the EEPROM data for fast access data for(start = 0; start 1050){ if(tin_hieu_kenh4 > 1508)yaw_setpoint = (tin_hieu_kenh4 - 1508)/3.0; else if(tin_hieu_kenh4 < 1492)yaw_setpoint = (tin_hieu_kenh4 - 1492)/3.0; } calculate_pid(); //PID inputs are known So we can calculate the pid output //A complementary filter is used to reduce noise //0.09853 = 0.08 * 1.2317 Thiết kế máy bay điều khiển Trang 28/33 battery_voltage = battery_voltage * 0.92 + (analogRead(0) + 65) * 0.09853; if(battery_voltage < 1000 && battery_voltage > 600)digitalWrite(12, HIGH); throttle = tin_hieu_kenh3;// throttle signal as a base signal if (start == 2){ if (throttle > 1800) throttle = 1800;//giới hạn throttle esc_1 = throttle + pid_output_pitch - pid_output_roll - pid_output_yaw;//(trướcphải - CCW) esc_2 = throttle - pid_output_pitch - pid_output_roll + pid_output_yaw;//(sauphải - CW) esc_3 = throttle - pid_output_pitch + pid_output_roll - pid_output_yaw;//(sau-trái - CCW) esc_4 = throttle + pid_output_pitch + pid_output_roll + pid_output_yaw;//(trướctrái - CW) if (esc_1 < 1150) esc_1 = 1150;//giữ motor quay đất if (esc_2 < 1150) esc_2 = 1150; if (esc_3 < 1150) esc_3 = 1150; if (esc_4 < 1150) esc_4 = 1150; if(esc_1 > 1900)esc_1 = 1900;//giới hạn tốc độ if(esc_2 > 1900)esc_2 = 1900; if(esc_3 > 1900)esc_3 = 1900; if(esc_4 > 1900)esc_4 = 1900; } else{ esc_1 = 1000;//nếu start != giữ tốc độ 1000ms esc_2 = 1000; esc_3 = 1000; esc_4 = 1000; } Thiết kế máy bay điều khiển Trang 29/33 if(micros() - loop_timer > 4050)digitalWrite(12, HIGH);// if the loop time exceeds 4050us //The refresh rate is 250Hz the esc's need there pulse every 4ms while(micros() - loop_timer < 4000); //We wait until 4000us are passed loop_timer = micros();//Set the timer for the next loop PORTD |= B11110000;//Set digital outputs 4,5,6 and high timer_kenh1 = esc_1 + loop_timer;//tính thời gian cạnh xuống esc1 timer_kenh2 = esc_2 + loop_timer; timer_kenh3 = esc_3 + loop_timer; timer_kenh4 = esc_4 + loop_timer; gyro_signalen(); while(PORTD >= 16){ //Stay in this loop until output 4,5,6 and are low esc_loop_timer = micros();//Read the current time if(timer_kenh1

Ngày đăng: 21/01/2018, 22:07

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w