جدول المحتويات:

كوادكوبتر باستخدام لوحة Zybo Zynq-7000: 5 خطوات
كوادكوبتر باستخدام لوحة Zybo Zynq-7000: 5 خطوات

فيديو: كوادكوبتر باستخدام لوحة Zybo Zynq-7000: 5 خطوات

فيديو: كوادكوبتر باستخدام لوحة Zybo Zynq-7000: 5 خطوات
فيديو: كيف يعمل الدرون الإيراني shahed 136 منخفض التكلفة و فعال جدا 2024, يوليو
Anonim
كوادكوبتر باستخدام لوحة Zybo Zynq-7000
كوادكوبتر باستخدام لوحة Zybo Zynq-7000

قبل أن نبدأ ، إليك بعض الأشياء التي تريدها للمشروع: قائمة الأجزاء 1x Digilent Zybo Zynq-7000 board 1x Quadcopter Frame قادر على تركيب Zybo (ملف Adobe Illustrator من أجل lasercutting مرفق) 4x Turnigy D3530 / 14 1100KV Brushless Motors 4x Turnigy ESC Basic -18A Speed Controller 4x مراوح (يجب أن تكون كبيرة بما يكفي لرفع كوادكوبتر) 2x nRF24L01 + جهاز الإرسال والاستقبال 1x IMU BNO055 متطلبات البرنامج Xilinx Vivado 2016.2 ملاحظة: المحركات المذكورة أعلاه ليست المحركات الوحيدة التي يمكن استخدامها. هم فقط من يستخدم في هذا المشروع. الشيء نفسه ينطبق على الأجزاء الأخرى ومتطلبات البرامج. نأمل أن يكون هذا فهمًا غير معلن عند قراءة هذا Instructable.

الخطوة 1: تشغيل وحدة PWM

قم ببرمجة SystemVerilog بسيط (أو برنامج HDL آخر) لتسجيل HI throttle و LO throttle باستخدام مفاتيح الإدخال. قم بتوصيل PWM بمحرك واحد ESC و Turnigy Brushless. تحقق من الملفات التالية لمعرفة كيفية معايرة ESC. تم إرفاق الكود النهائي في الخطوة 5 لوحدة PWM. يتم إرفاق بداية PWM في هذه الخطوة ورقة بيانات ESC: ورقة بيانات Turnigy ESC PDF (الأشياء التي يجب الانتباه إليها هي الأوضاع المختلفة التي يمكنك تحديدها باستخدام HI و LO throttle)

الخطوة 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 MHzMake I2C and SPI external Connect FCLK_CLK0 to 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 + ولكن مع اردوينو:

الخطوة 5: برمجة Zybo FPGA

هذه الوحدات هي الوحدات النهائية المستخدمة للتحكم في PWM للطائرة الرباعية. Motor_ctl_wrapper.sv الغرض: يأخذ الغلاف زوايا أويلر ونسبة الخانق. إنه ينتج PWM معوضًا يسمح للطائرة الرباعية بالاستقرار. هذه الكتلة موجودة ، لأن المروحيات الرباعية عرضة للاضطرابات في الهواء وتتطلب نوعًا من التثبيت. نحن نستخدم زوايا أويلر ، لأننا لا نخطط للقلبات أو الزوايا الثقيلة التي قد تسبب قفل Gimbal. الإدخال: ناقل بيانات 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 ، وليس النطاق من قيم المحرك 1-4 PWM. متقدم - Vivado Zynq IP Blocks: 8 يضيف (LUTs) 3 طرح (LUTs) 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. فلاي: التكرار إلى الأبد لتثبيت المروحية الرباعية (ما لم تتم إعادة ضبطنا). يرسل PWM المعوض من خلال mux_pwm. Input: GO ، RESET ، clkOutput: RST لإعادة تعيين الوحدة الأخرى ، FullFlight للإشارة إلى وضع FLY ، الفترة للتشغيل atmux_pwm.sv الغرض: الإدخال: الإخراج: PWM لجميع المحركات الأربعة.:

موصى به: