Πίνακας περιεχομένων:

Quadcopter Using Zybo Zynq-7000 Board: 5 βήματα
Quadcopter Using Zybo Zynq-7000 Board: 5 βήματα

Βίντεο: Quadcopter Using Zybo Zynq-7000 Board: 5 βήματα

Βίντεο: Quadcopter Using Zybo Zynq-7000 Board: 5 βήματα
Βίντεο: Lec4 Zynq and Zedboard #1 2024, Νοέμβριος
Anonim
Quadcopter Χρησιμοποιώντας τον πίνακα Zybo Zynq-7000
Quadcopter Χρησιμοποιώντας τον πίνακα Zybo Zynq-7000

Πριν ξεκινήσουμε, εδώ είναι μερικά πράγματα που θέλετε για το έργο: Λίστα μερών 1x Digilent Zybo Zynq-7000 σανίδα 1x Quadcopter Frame ικανό να τοποθετήσει το Zybo (συνημμένο αρχείο Adobe Illustrator για λέιζερ) 4x Turnigy D3530/14 1100KV Brushless Motors 4x Turnigy ESC Basic -18A Speed Controller 4x Propellers (αυτά πρέπει να είναι αρκετά μεγάλα για να ανεβάσετε το τετρακόπτερό σας) 2x nRF24L01+ πομποδέκτης 1x IMU BNO055 Απαιτήσεις λογισμικούXilinx Vivado 2016.2 ΣΗΜΕΙΩΣΗ: Οι παραπάνω κινητήρες δεν είναι οι μόνοι κινητήρες που μπορούν να χρησιμοποιηθούν. Είναι μόνο αυτά που χρησιμοποιούνται σε αυτό το έργο. Το ίδιο ισχύει και για τα υπόλοιπα εξαρτήματα και απαιτήσεις λογισμικού. Ας ελπίσουμε ότι αυτή είναι μια ανείπωτη κατανόηση όταν διαβάζετε αυτό το Instructable.

Βήμα 1: Λειτουργήστε τη μονάδα PWM

Προγραμματίστε ένα απλό SystemVerilog (ή άλλο πρόγραμμα HDL) για να καταχωρίσετε το γκάζι HI και το γκάζι LO χρησιμοποιώντας διακόπτες εισόδου. Συνδέστε το PWM με ένα μόνο ESC και Turnigy Brushless Motor. Ελέγξτε τα ακόλουθα αρχεία για να μάθετε πώς μπορείτε να βαθμονομήσετε το ESC. Ο τελικός κώδικας επισυνάπτεται στο βήμα 5 για τη μονάδα PWM. Σε αυτό το βήμα επισυνάπτεται ένας εκκινητής PWM ESC Datasheet: Turnigy ESC Datasheet PDF (Τα πράγματα που πρέπει να προσέξετε είναι οι διαφορετικές λειτουργίες που μπορείτε να επιλέξετε χρησιμοποιώντας γκάζι HI και LO)

Βήμα 2: Ρυθμίστε το σχέδιο μπλοκ

Δημιουργία σχεδίασης μπλοκ Κάντε διπλό κλικ στο μπλοκ που δημιουργήθηκε πρόσφατα Εισαγωγή ρυθμίσεων XPS που κατεβάσατε εδώ: https://github.com/ucb-bar/fpga-zynq/tree/master/z… Τροποποίηση ρυθμίσεων PS-PL Configuration M AXI GP0 interface Peripheral 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 και ρυθμίστε τη συχνότητα στα 100 MHzΚάντε I2C και SPI εξωτερική σύνδεση FCLK_CLK0 σε M_AXI_GP0_ACLK Τερματίστε τον αυτοματισμό

Βήμα 3: Βαθμονομήστε το IMU

Βαθμονομήστε το IMU
Βαθμονομήστε το IMU

Ο πομποδέκτης BNO055 χρησιμοποιεί επικοινωνία I2C. (Προτεινόμενη ανάγνωση για αρχάριους: https://learn.sparkfun.com/tutorials/i2c)Το πρόγραμμα οδήγησης για την εκτέλεση του IMU βρίσκεται εδώ: https://github.com/BoschSensortec/BNO055_driver Ένα τετράπτερο δεν απαιτεί τη χρήση του μαγνητόμετρου από το BNO055. Εξαιτίας αυτού, ο τρόπος λειτουργίας που απαιτείται είναι η λειτουργία IMU. Αυτό αλλάζει γράφοντας έναν δυαδικό αριθμό xxxx1000 στον καταχωρητή OPR_MODE, όπου το 'x' είναι ένα 'δεν με νοιάζει'. Ορίστε αυτά τα bits στο 0.

Βήμα 4: Ενσωματώστε τον Ασύρματο πομποδέκτη

Ενσωματώστε τον Ασύρματο πομποδέκτη
Ενσωματώστε τον Ασύρματο πομποδέκτη
Ενσωματώστε τον Ασύρματο πομποδέκτη
Ενσωματώστε τον Ασύρματο πομποδέκτη

Ο ασύρματος πομποδέκτης χρησιμοποιεί επικοινωνία SPI. Επισυνάπτεται το φύλλο προδιαγραφών για το nRF24L01+ Ένα καλό σεμινάριο για το nrf24l01+ αλλά με arduino:

Βήμα 5: Προγραμματίστε το Zybo FPGA

ΕπισκόπησηΑυτές οι ενότητες είναι οι τελικές ενότητες που χρησιμοποιούνται για τον έλεγχο του PWM του τετρακόπτερου. motor_ctl_wrapper.svΣκοπός: Το περιτύλιγμα λαμβάνει γωνίες Euler και ποσοστό γκαζιού. Εξάγει ένα αντισταθμισμένο PWM που θα επιτρέψει στο quadcopter να σταθεροποιηθεί. Αυτό το μπλοκ υπάρχει, επειδή τα τετρακόπτερα είναι επιρρεπή σε διαταραχές στον αέρα και απαιτούν κάποιο είδος σταθεροποίησης. Χρησιμοποιούμε γωνίες Euler, καθώς δεν σχεδιάζουμε ανατροπές ή βαριές γωνίες που μπορεί να προκαλέσουν Gimbal Lock. Εισαγωγή: 25-bit bus δεδομένων CTL_IN = {[24] GO, [23:16] Euler X, [15: 8] Euler Y, [7: 0] Throttle Percentage}, Clock (clk), Synchronous CLR (sclr) Output: Motor 1 PWM, Motor 2 PWM, Motor 3 PWM, Motor 4 PWM, Throttle Percentage PWM The Throttle Percentage PWM is χρησιμοποιείται για την προετοιμασία του ESC, το οποίο θα θέλει ένα καθαρό εύρος PWM 30% - 70%, όχι αυτό από τις τιμές του κινητήρα 1-4 PWM. Advanced - Vivado Zynq IP Blocks: 8 Προσθέτει (LUT) 3 Αφαιρεί (LUT) 5 Πολλαπλασιαστές (Μπλοκ μνήμης (BRAM)) clock_div.sv (AKA pwm_fsm.sv) Σκοπός: Ελέγξτε το υλικό, συμπεριλαμβανομένων των εξόδων MUX, PWM και sclr για motor_ctl_wrapper. Κάθε Μηχανή Πεπερασμένης Κατάστασης (FSM) χρησιμοποιείται για ένα πράγμα: τον έλεγχο άλλου υλικού. Οποιαδήποτε μεγάλη απόκλιση από αυτόν τον στόχο μπορεί να προκαλέσει το υποτιθέμενο FSM να λάβει τη μορφή διαφορετικού τύπου μονάδας (μετρητής, αθροιστής κ.λπ.). Το pwm_fsm έχει 3 καταστάσεις: INIT, CLR και FLYINIT: Επιτρέψτε στον χρήστη να προγραμματίσει το ESC ως επιθυμητό. Στέλνει ένα επιλεγμένο σήμα στο mux_pwm που εξάγει απευθείας PWM σε όλους τους κινητήρες. Επιστρέφει στον εαυτό του μέχρι GO == '1'. CLR: Διαγράψτε τα δεδομένα στο motor_ctl_wrapper και τη μονάδα pwm out. FLY: Κάντε βρόχο για πάντα για να σταθεροποιήσετε το quadcopter (εκτός αν κάνουμε επαναφορά). Στέλνει το αντισταθμισμένο PWM μέσω του mux_pwm. Είσοδος: GO, RESET, clkOutput: RST για άλλες επαναφορές μονάδων, FullFlight για σήμα FLY mode, Period to run atmux_pwm.svΣκοπός: Είσοδος: Έξοδος: PWM και για τα 4 motorspwm.svΣκοπός: Είσοδος::

Συνιστάται: