תוכן עניינים:

Quadcopter באמצעות לוח Zybo Zynq-7000: 5 שלבים
Quadcopter באמצעות לוח Zybo Zynq-7000: 5 שלבים

וִידֵאוֹ: Quadcopter באמצעות לוח Zybo Zynq-7000: 5 שלבים

וִידֵאוֹ: Quadcopter באמצעות לוח Zybo Zynq-7000: 5 שלבים
וִידֵאוֹ: Раффаэлло Д'Андреа: Восхитительный атлетизм квадролётов 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 בקר מהירות 4x מדחפים (אלה צריכים להיות גדולים מספיק כדי להרים את הארבע) שלך 2x nRF24L01+ מקלט 1x IMU BNO055 דרישות תוכנה Xilinx Vivado 2016.2 הערה: המנועים למעלה אינם המנועים היחידים שניתן להשתמש בהם. הם רק אלה המשמשים בפרויקט זה. כנ ל לגבי שאר החלקים ודרישות התוכנה. יש לקוות שזוהי הבנה בלתי מדוברת בעת קריאת הוראה זו.

שלב 1: הפעל את מודול PWM

תכנות מערכת SystemVerilog פשוטה (או תוכנית HDL אחרת) לרישום מצערת HI ומצערת LO באמצעות מתגי קלט. חבר את ה- PWM עם מנוע ESC יחיד ומנוע מברשת ללא טרניגי. בדוק את הקבצים הבאים כדי לברר כיצד לכייל את ESC. הקוד הסופי מצורף בשלב 5 עבור מודול PWM. מפתח PWM מצורף שלב זה ESC גליון נתונים: Turnigy ESC גליון נתונים PDF (דברים שיש לשים לב אליהם הם המצבים השונים שניתן לבחור באמצעות מצערת HI ו- LO)

שלב 2: הגדר את עיצוב הבלוק

צור עיצוב בלוק לחץ פעמיים על הבלוק החדש שנוצר ייבא הגדרות XPS שהורדות כאן: https://github.com/ucb-bar/fpga-zynq/tree/master/z… שנה הגדרות PS-PL תצורה M AXI ממשק היקפי I/ O Pins Ethernet 0 USB 0 SD 0 SPI 1 UART 1 I2C 0 TTC0 SWDT GPI MIOMIO Timer Configuration Timer 0 תצוגת WatchdogClock FCLK_CLK0 והגדר את התדר ל- 100 MHz צור I2C ו- SPI חיבור חיצוני FCLK_CLK0 ל- M_AXI_GP0_ACLK הפעל את בלוק יצירת g

שלב 3: כייל את ה- IMU

כייל את ה- IMU
כייל את ה- IMU

מקלט BNO055 משתמש בתקשורת I2C. (קריאה מומלצת למתחילים: https://learn.sparkfun.com/tutorials/i2c) הנהג להפעלת ה- IMU נמצא כאן: https://github.com/BoschSensortec/BNO055_driver Quadcopter אינו מצריך שימוש במגנטומטר מה- BNO055. בגלל זה, מצב הפעולה הדרוש הוא מצב IMU. זה משתנה על ידי כתיבת מספר בינארי xxxx1000 לרשם OPR_MODE, כאשר 'x' הוא 'לא אכפת'. הגדר את הביטים האלה ל- 0.

שלב 4: שלב את משדר האלחוט

שלב את משדר האלחוט
שלב את משדר האלחוט
שלב את משדר האלחוט
שלב את משדר האלחוט

מקלט המשדר האלחוטי משתמש בתקשורת SPI. מצורף דף המפרט של nRF24L01+ הדרכה טובה על nrf24l01+ אך עם arduino:

שלב 5: תכנת את ה- FPGA של Zybo

סקירה כללית מודולים אלה הם המודולים האחרונים המשמשים לשליטה על ה- PWM של הארבעה. motor_ctl_wrapper.sv מטרה: העטיפה לוקחת זוויות אוילר ואחוז מצערת. הוא מוציא PWM מפוצל, שיאפשר להתייצבות הקווקדופטר. חסימה זו קיימת מכיוון שרביעיות נוטות להפרעות באוויר ודורשות ייצוב כלשהו. אנו משתמשים בזוויות אוילר, מכיוון שאיננו מתכננים התהפכות או זוויות כבדות שעלולות לגרום לנעילת גימבל. קלט: אוטובוס נתונים של 25 סיביות CTL_IN = {[24] GO, [23:16] אוילר X, [15: 8] Euler Y, [7: 0] אחוז מצערת}, שעון (clk), פלט CLR סינכרוני (sclr): מנוע 1 PWM, מנוע 2 PWM, מנוע 3 PWM, מנוע 4 PWM, אחוז מצערת PWM אחוז המצערת PWM הוא משמש לאתחול ה- ESC, שירצה טווח טהור של 30% - 70% של PWM, לא זה מערכי PWM של מנוע 1-4. מתקדם - בלוקי IP של Vivado Zynq: 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: לולאה לנצח לייצוב הארבע (אם לא יתאפסו). שולח את ה- PWM המתוגמל דרך mux_pwm. קלט: GO, RESET, clkOutput: RST עבור איפוס מודולים אחרים, FullFlight לאותת מצב FLY, תקופה להפעלת atmux_pwm.sv מטרה: קלט: פלט: PWM לכל 4 מנועיםpwm.sv מטרה: קלט: פלט:

מוּמלָץ: