Mục lục:

Quadcopter sử dụng bo mạch Zybo Zynq-7000: 5 bước
Quadcopter sử dụng bo mạch Zybo Zynq-7000: 5 bước

Video: Quadcopter sử dụng bo mạch Zybo Zynq-7000: 5 bước

Video: Quadcopter sử dụng bo mạch Zybo Zynq-7000: 5 bước
Video: Zynq-7000 Sneak Peak 2024, Tháng mười một
Anonim
Quadcopter sử dụng bo mạch Zybo Zynq-7000
Quadcopter sử dụng bo mạch Zybo Zynq-7000

Trước khi chúng tôi bắt đầu, đây là một số điều bạn muốn cho dự án: Bảng liệt kê 1x Digilent Zybo Zynq-7000 1x Khung Quadcopter có thể gắn Zybo (đính kèm tệp Adobe Illustrator cho lasercutting) 4x Turnigy D3530 / 14 1100KV Động cơ không chổi than 4x Turnigy ESC Basic Bộ điều khiển tốc độ -18A 4x Cánh quạt (cần phải đủ lớn để nâng quadcopter của bạn lên) 2x nRF24L01 + bộ thu phát 1x IMU BNO055 Yêu cầu phần mềmXilinx Vivado 2016.2LƯU Ý: Các động cơ trên không phải là động cơ duy nhất có thể được sử dụng. Chúng chỉ là những thứ được sử dụng trong dự án này. Tương tự đối với các phần còn lại và yêu cầu phần mềm. Hy vọng rằng đó là một sự hiểu biết không thành văn khi đọc Hướng dẫn này.

Bước 1: Chạy Mô-đun PWM

Lập trình một SystemVerilog đơn giản (hoặc chương trình HDL khác) để đăng ký van tiết lưu HI và van tiết lưu LO bằng cách sử dụng các công tắc đầu vào. Kết nối PWM với một ESC và Động cơ không chổi than Turnigy. Kiểm tra các tệp sau để tìm hiểu cách hiệu chỉnh ESC. Mã cuối cùng được đính kèm trong bước 5 cho mô-đun PWM. Một bộ khởi động PWM được đính kèm trong bước này Bảng dữ liệuESC: Bảng dữ liệu ESC Turnigy PDF (Những điều cần chú ý là các chế độ khác nhau mà bạn có thể chọn bằng cách sử dụng van tiết lưu HI và LO)

Bước 2: Thiết lập thiết kế khối

Tạo thiết kế khối Nhấp đúp vào khối mới tạo Nhập cài đặt XPS được tải xuống tại đây: https://github.com/ucb-bar/fpga-zynq/tree/master/z… Sửa đổi cài đặt Cấu hình PS-PL Giao diện M AXI GP0 Ngoại vi I / O Pins Ethernet 0 USB 0 SD 0 SPI 1 UART 1 I2C 0 TTC0 SWDT GPI MIOMIO Configuration Timer 0 WatchdogClock Configuration FCLK_CLK0 và đặt tần số thành 100 MHz Tạo I2C và SPI bên ngoài Kết nối FCLK_CLK0 với M_AXI_GP0_ACLK Chạy khối tự động hóa Tạo Cổng và gọi nó là "gnd"

Bước 3: Hiệu chỉnh IMU

Hiệu chỉnh IMU
Hiệu chỉnh IMU

Bộ thu phát BNO055 sử dụng giao tiếp I2C. (Đọc đề xuất cho người mới bắt đầu: https://learn.sparkfun.com/tutorials/i2c) Trình điều khiển để chạy IMU được đặt tại đây: https://github.com/BoschSensortec/BNO055_driverMột quadcopter không yêu cầu sử dụng từ kế từ BNO055. Do đó, chế độ hoạt động cần thiết là chế độ IMU. Điều này được thay đổi bằng cách ghi một số nhị phân xxxx1000 vào thanh ghi OPR_MODE, trong đó 'x' là 'không quan tâm'. Đặt các bit đó thành 0.

Bước 4: Tích hợp bộ thu phát không dây

Tích hợp bộ thu phát không dây
Tích hợp bộ thu phát không dây
Tích hợp bộ thu phát không dây
Tích hợp bộ thu phát không dây

Bộ thu phát không dây sử dụng giao tiếp SPI. Đính kèm là bảng thông số kỹ thuật cho nRF24L01 + Hướng dẫn tốt về nrf24l01 + nhưng với arduino:

Bước 5: Lập trình Zybo FPGA

Các mô-đun này là những mô-đun cuối cùng được sử dụng để điều khiển PWM của quadcopter. motor_ctl_wrapper.sv Mục đích: Trình bao bọc lấy góc Euler và tỷ lệ điều tiết. Nó xuất ra một PWM được bù sẽ cho phép quadcopter ổn định. Khối này tồn tại, bởi vì quadcopter dễ bị nhiễu loạn trong không khí và yêu cầu một số loại ổn định. Chúng tôi đang sử dụng góc Euler, vì chúng tôi không có kế hoạch lật hoặc góc nặng có thể gây ra Gimbal Lock. Đầu vào: bus dữ liệu 25 bit CTL_IN = {[24] GO, [23:16] Euler X, [15: 8] Euler Y, [7: 0] Phần trăm bướm ga}, Đồng hồ (clk), Ngõ ra CLR đồng bộ (sclr): Động cơ 1 PWM, Động cơ 2 PWM, Động cơ 3 PWM, Động cơ 4 PWM, Phần trăm bướm ga PWM Phần trăm bướm ga là được sử dụng để khởi tạo ESC, sẽ muốn phạm vi PWM thuần túy là 30% - 70%, không phải phạm vi từ các giá trị PWM của Động cơ 1-4. Nâng cao - Khối IP Vivado Zynq: 8 Thêm (LUT) 3 Trừ (LUT) 5 Bộ nhân (Bộ nhớ khối (BRAM)) clock_div.sv (AKA pwm_fsm.sv) Mục đích: Điều khiển phần cứng, bao gồm đầu ra MUX, PWM và sclr cho motor_ctl_wrapper. Bất kỳ Máy trạng thái hữu hạn nào (FSM) đều được sử dụng cho một việc: điều khiển phần cứng khác. Bất kỳ độ lệch lớn nào từ mục tiêu này đều có thể khiến FSM được cho là có dạng một loại mô-đun khác (bộ đếm, bộ cộng, v.v.). Pwm_fsm có 3 trạng thái: INIT, CLR và FLYINIT: Cho phép người dùng lập trình ESC như mong muốn. Gửi tín hiệu đã chọn tới mux_pwm để xuất PWM thẳng tới tất cả các động cơ. Vòng lặp về chính nó cho đến khi GO == '1'. CLR: Xóa dữ liệu trong motor_ctl_wrapper và mô-đun pwm out. FLY: Vòng lặp mãi mãi để ổn định quadcopter (trừ khi chúng tôi được đặt lại). Gửi PWM đã bù thông qua mux_pwm. Input: GO, RESET, clkOutput: RST để đặt lại mô-đun khác, FullFlight để báo hiệu chế độ FLY, Giai đoạn chạy atmux_pwm.sv Mục đích: Đầu vào: Đầu ra: PWM cho cả 4 động cơpwm.sv Mục đích: Đầu vào: Đầu ra:

Đề xuất: