فهرست مطالب:

کوادکوپتر با استفاده از برد Zybo Zynq-7000: 5 مرحله
کوادکوپتر با استفاده از برد Zybo Zynq-7000: 5 مرحله

تصویری: کوادکوپتر با استفاده از برد Zybo Zynq-7000: 5 مرحله

تصویری: کوادکوپتر با استفاده از برد Zybo Zynq-7000: 5 مرحله
تصویری: ساخت موتور پهپاد یا کوادکوپتر با برد ضایعاتی (پارت1) 2024, جولای
Anonim
کوادکوپتر با استفاده از برد Zybo Zynq-7000
کوادکوپتر با استفاده از برد Zybo Zynq-7000

قبل از شروع کار ، موارد زیر را برای پروژه می خواهید: لیست قطعات 1x هیئت مدیره Digynt Zybo Zynq-7000 1x قاب کوادکوپتر قادر به نصب 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 توجه: موتورهای فوق تنها موتورهایی نیستند که می توان از آنها استفاده کرد. آنها فقط موارد استفاده شده در این پروژه هستند. بقیه قطعات و نیازهای نرم افزاری نیز همینطور است. امیدوارم هنگام خواندن این دستورالعمل ، این درک ناگفته ای باشد.

مرحله 1: ماژول PWM را اجرا کنید

یک SystemVerilog ساده (یا سایر برنامه های HDL) را برای ثبت دریچه گاز HI و دریچه گاز LO با استفاده از سوئیچ های ورودی برنامه ریزی کنید. PWM را با یک ESC و موتور بدون برس Turnigy متصل کنید. برای اطلاع از نحوه کالیبراسیون 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 پیکربندی M AXI GP0 رابط محیطی I/ O پین اترنت 0 USB 0 SD 0 SPI 1 UART 1 I2C 0 TTC0 SWDT GPI MIOMIO پیکربندی زمان سنج 0 WatchdogClock پیکربندی FCLK_CLK0 و فرکانس را روی 100 مگاهرتز تنظیم کنید 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' یک 'مهم نیست' است. آن بیت ها را روی 0 تنظیم کنید.

مرحله 4: فرستنده گیر بی سیم را ادغام کنید

فرستنده گیرنده بی سیم را ادغام کنید
فرستنده گیرنده بی سیم را ادغام کنید
گیرنده بی سیم را ادغام کنید
گیرنده بی سیم را ادغام کنید

فرستنده گیرنده بی سیم از ارتباط SPI استفاده می کند. پیوست مشخصات nRF24L01+ یک آموزش خوب در مورد nrf24l01+ اما با arduino است:

مرحله 5: برنامه Zybo FPGA را برنامه ریزی کنید

این ماژول ها آخرین ماژول هایی هستند که برای کنترل PWM کوادکوپتر استفاده می شوند. motor_ctl_wrapper.sv هدف: بسته بندی زاویه اویلر و درصد گاز را می گیرد. خروجی PWM جبران شده است که به کوادکوپتر اجازه می دهد تا تثبیت شود. این بلوک وجود دارد ، زیرا کوادکوپترها مستعد اختلال در هوا هستند و به نوعی تثبیت نیاز دارند. ما از زاویه های اویلر استفاده می کنیم ، زیرا برای تلنگر یا زاویه های سنگین که ممکن است باعث قفل گیمبال شود برنامه ریزی نمی کنیم. ورودی: اتوبوس داده های 25 بیتی CTL_IN = {[24] GO ، [23:16] اویلر X ، [15: 8] Euler Y ، [7: 0] Throttle Percentage} ، Clock (clk) ، Synchronous CLR (sclr) خروجی: موتور 1 PWM ، موتور 2 PWM ، موتور 3 PWM ، موتور 4 PWM ، درصد دریچه گاز PWM درصد گاز سلولی PWM است برای راه اندازی اولیه ESC استفاده می شود ، که 30٪ - 70٪ PWM را می خواهد ، نه محدوده موتور 1-4 PWM. پیشرفته - بلوک های 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 موتور spwm.sv هدف: ورودی: خروجی:

توصیه شده: