خانه - راه اندازی روتر
آموزش ساخت کوادکوپتر با استفاده از آردوینو چگونه کوادکوپتر خود را طراحی کنیم برنامه ریزی کوادکوپتر در آردوینو قسمت 2 habrahabr

برای مونتاژ یک کوادکوپتر با دستان خود در خانه، ابتدا باید اجزای اصلی کوادکوپتر را بشناسید.

قطعات مونتاژ کوادکوپتر

  1. قاب کوادکوپتر Diatone Q450 Quad 450 V3 PCB Quadcopter Frame Kit 450mm (سه رقم آخر در نام Q450 نشان دهنده فاصله بین موتورها بر حسب میلی متر به صورت مورب است). این بدنه هواپیما است که برای نصب سایر تجهیزات و قطعات الکترونیکی استفاده خواهد شد. شامل 4 پرتو و تخته مدار چاپی. وزن 295 گرم.

    banggood.com

    قیمت 922 روبل.

  2. موتور DYS D2822-14 1450KV موتور براشلس. 4 عدد.

    فروخته شده در فروشگاه اینترنتی Banggood.com

    قیمت 571 روبل / قطعه

  3. رگولاتور DYS 30A 2-4S براشلس سرعت کنترلر ESC Simonk Firmware برای تنظیم سرعت و کنترل سرعت. 4 عدد.

    فروخته شده در فروشگاه اینترنتی Banggood.com

    قیمت 438 روبل / قطعه

  4. پروانه پروانه DYS E-Prop 8x6 8060 SF ABS Slow Fly Propeller Blade For RC Airplane 4 عدد. دو پروانه راست و دو پروانه چپگرد.

    فروخته شده در فروشگاه اینترنتی Banggood.com

    قیمت 125 روبل / قطعه

  5. ماژول کنترل کوادکوپتر KK2.1.5 kk21evo. 1 کامپیوتر.

    فروخته شده در فروشگاه اینترنتی Banggood.com

    قیمت 1680 روبل.

  6. باتری لیتیوم-پلیمر قابل شارژ Turnigy Nano-tech 2200mah 4S ~90C Lipo Pack، باید حداقل دو قطعه و ترجیحاً چهار قطعه تهیه کنید، زیرا به سرعت تمام می شوند. 1 کامپیوتر.

    در فروشگاه آنلاین Parkflyer.ru فروخته می شود

    قیمت 1268 RUR / قطعه

  7. شارژر باتری Hobby King Variable6S 50W 5A. 1 کامپیوتر.

    در فروشگاه آنلاین Hobbyco.ru فروخته می شود

    قیمت 900 روبل.

  8. کانکتور باتری XT60 دوشاخه نر 12AWG 10cm با سیم. 1 کامپیوتر.

    فروخته شده در فروشگاه اینترنتی Banggood.com

    قیمت 144 روبل.

  9. گیره برای اتصال سیم به بدنه کوادکوپتر. 1000 عدد 2.0x100 میلی متر کابل نایلونی سیاه/سفید کراوات زیپ. 1 بسته.

    فروخته شده در فروشگاه اینترنتی Banggood.com

    قیمت 316 روبل.

  10. اتصالات 20 جفت اتصال گلوله 3.5 میلی متری دوشاخه موز برای باتری/موتور RC. برای سیم های رگلاتور. 1 بسته.

    فروخته شده در فروشگاه اینترنتی Banggood.com

    قیمت 256 روبل.

  11. نوار چسب برای اتصال باتری به بدنه کوادکوپتر. 1 کامپیوتر.

    فروخته شده در فروشگاه اینترنتی Banggood.com

    قیمت 79 روبل.

  12. ست پیچ های ثابت موتور 50 عددی برای کوادکوپتر مولتی کوپتر DJI F450 F550 HJ450 550. 1 بسته.

    قیمت 217 روبل.

  13. کنترل از راه دور کوادکوپتر Spektrum DX6 V2 با گیرنده AR610. گیرنده و فرستنده در یک کیت عرضه می شوند. 1 کامپیوتر.

    قیمت 9700 روبل.

در مجموع، مجموعه ای از تجهیزات برای مونتاژ 20018 روبل هزینه خواهد داشت.

ویژگی های هنگام انتخاب اجزا


ویژگی های اصلی فرستنده:

  • حالت‌ها Mode1 یا Mode2. در حالت اول دسته گاز در سمت راست و در حالت دوم دسته گاز در سمت چپ قرار دارد.
  • فرکانس فرستنده 2.4 گیگاهرتز است.
  • تعداد کانال ها حداقل کانال مورد نیاز برای کنترل هواپیما چهار کانال است. تجهیزات کنترل Spektrum DX6 V2 با گیرنده AR610 شامل 6 کانال می باشد.

دستورالعمل های گام به گام برای مونتاژ کوادکوپتر با دستان خود

  1. طول سیم ها را روی رگلاتورها کاهش می دهیم. هنگام اتصال رگولاتور به موتورها، طول سیم ها به طور قابل توجهی از طول تیری که کل این سازه روی آن وصل می شود، بیشتر می شود.

  2. اتصال دهنده ها را به انتهای سیم ها روی رگولاتور لحیم می کنیم تا در آینده بتوانید رگولاتور را به موتورها وصل کنید.

  3. ما موتورها را نصب می کنیم - 1 موتور را روی هر تیر پیچ می کنیم.

  4. ما قاب را جمع می کنیم. تیرها را به تخته پیچ کنید.

  5. سیم های رگلاتور را به موتورها وصل می کنیم. کابل های رگلاتور و موتور به هر ترتیبی به هم متصل می شوند. در آینده، ممکن است لازم باشد هنگام نهایی کردن پیکربندی پهپاد، ترتیب اتصال را تغییر دهید. هنگام استفاده از رگولاتورهای اختصاصی برای هر موتور، قطب مثبت و منفی باید تنها از یک رگولاتور به کنترلر متصل شود.

  6. ماژول کنترل را با چسب دو طرفه روی بدنه محکم می کنیم. بهتر است در قسمت مرکزی سکو قرار گیرد.

  7. گیرنده را با چسب دو طرفه روی بدنه محکم می کنیم و به ماژول کنترل وصل می کنیم. گیرنده باید تا حد امکان نزدیک به ماژول قرار گیرد.

    هدف کانال ها در دفترچه راهنمای گیرنده توضیح داده شده است. معمولا توالی آنها به شرح زیر است:

    1. Ailerons - کانال مسئول چرخش چپ و راست.
    2. آسانسور - کانالی که مسیرهای جلو و عقب را هدایت می کند.
    3. گاز کانالی است که گاز را کنترل می کند. برخاست و فرود و همچنین تغییرات ارتفاع را مدیریت می کند.
    4. Yaw - کانال امکان چرخش کوادکوپتر حول محور خود را فراهم می کند.

  8. دستگاه را نیرو می دهیم. باتری را به کانکتور وصل می کنیم.

این عملیات فرآیند مونتاژ کوادکوپتر را تکمیل می کند.

برپایی

  1. موتورها را روشن می کنیم. فعال سازی موتورها نیاز به فرآیند راه اندازی موتورها - مسلح کردن دارد. کتابچه راهنمای دستورالعمل نحوه دستیابی به این امر را با جزئیات توضیح می دهد. غیرفعال کردن موتورها نیاز به یک روش خلع سلاح دارد.
  2. گاز ضعیف را روشن می کنیم و از چرخش موتورها مطمئن می شویم. الگوی چرخش باید همان باشد که در نمودار در دفترچه راهنمای کنترل نشان داده شده است. اگر موتور اشتباه می‌چرخد، فقط باید قطب‌های سیم‌هایی را که از موتور به کنترل‌کننده می‌آیند، عوض کنید.

  3. سکوی دوم را به بدنه کوادکوپتر پیچ می کنیم.

  4. یک نوار Velcro را برای محکم کردن باتری به قاب وصل می کنیم.

    مونتاژ کوادکوپتر DIY با استفاده از آردوینو

    نتیجه

    فقط کسانی که به حل مسائل پیچیده علاقه دارند می توانند کوادکوپتر را خود مونتاژ کنند. اینها باید افرادی باشند که از فرآیند محاسبات مختلف و روند مونتاژ دستگاه لذت ببرند.

    مزیت یک هلی کوپتر مونتاژ شده با دستان خودماین واقعیت که در هر زمان می توانید آن را با اضافه کردن تجهیزات جدید ارتقا دهید.

این کوادکوپتر دارای منبع تغذیه مستقل نیز می باشد. هزینه کل چنین محصول خانگی حدود 60 دلار است.

اگر مقدار قابل توجهی دارید، بهتر است محصول خانگی خود را به موتورهای بدون برس با کنترلرهای مناسب مجهز کنید.

برای تثبیت پرواز از ژیروسکوپ و شتاب سنج استفاده می شود. برای تعیین زاویه شیب کوادکوپتر نسبت به گرانش زمین به ژیروسکوپ نیاز است. برای محاسبه شتاب به یک شتاب سنج نیاز است.

مواد و ابزار:
- باتری های لیتیومی(در 3.7 ولت)؛
- سیم ها؛
- ترانزیستور ULN2003A ترانزیستور دارلینگتون (ترانزیستورهای قوی تری را می توان استفاده کرد).
- موتورهای نوع 0820 بدون هسته؛
- میکروکنترلر آردوینو Uno؛
- برد MPU-6050 (این هم ژیروسکوپ و هم شتاب سنج است).
- در دسترس بودن چاپگر سه بعدی یا دسترسی به آن؛
- ابزار لازم

فرایند ساخت:

گام یک. ساخت بدنه کوادکوپتر
بدنه بسیار سریع و ساده ساخته می شود. با استفاده از پرینتر سه بعدی چاپ می شود. ایجاد یک قاب به این روش خوب است زیرا سبک از آن خارج می شود، همه اینها به لطف چاپ لانه زنبوری است. طراحی قطعات در برنامه Solidworks انجام شد. با استفاده از این برنامه می توانید پارامترهای کیس را ویرایش کرده و در صورت نیاز تغییرات خود را در آن اعمال کنید.




پس از پرینت فریم کوادکوپتر، می توانید موتورها و سیم های لحیم کاری را روی آن ها نصب کنید.




مرحله دو. اتصال آردوینو
نحوه اتصال برد MPU6050 در نمودار زیر قابل مشاهده است. درک این نکته مهم است که کتابخانه آردوینو به معنای اتصال از طریق این پین ها است. اگر مداری از سازنده دیگری استفاده می شود، مهم است که اطمینان حاصل شود که کنتاکت ها به یک ترتیب مرتب شده اند.


برای تغذیه برد فقط از 3.3 ولت استفاده می شود که اگر آن را با ولتاژ 5 ولت تغذیه کنید آسیب می بیند. برخی از بردهای MPU6050 دارای فیوز هستند که از سیستم در برابر آن محافظت می کند ولتاژ بالا، اما بهتر است ریسک نکنید. اگر برد دارای پین AD0 باشد، باید به زمین (GND) متصل شود. در این حالت VIO مستقیماً روی برد به پایه AD0 متصل می شود بنابراین نیازی به اتصال پایه AD0 نیست.












برای اینکه آردوینو بتواند موتورها را کنترل کند، به ترانزیستورهایی نیاز است که به لطف آنها می توان ولتاژ بالا را به موتورها رساند. شما می توانید با جزئیات بیشتر نحوه اتصال همه عناصر را در نمودار مشاهده کنید.

مرحله سوم. طرحی برای آردوینو
هنگامی که MPU-6050 به آردوینو متصل شد، باید آن را روشن کنید و طرح کد اسکنر I2C را دانلود کنید. در مرحله بعد، باید کد برنامه را کپی کرده و در یک طرح خالی قرار دهید. پس از این، باید مانیتور سریال Arduino IDE (Tools->Serial Monitor) را باز کنید و از اتصال 9600 مطمئن شوید.
اگر همه چیز به درستی انجام شود، دستگاه I2C شناسایی می شود، آدرس 0x68 یا 0x69 به آن اختصاص داده می شود، باید یادداشت شود.
سپس، طرحی بارگذاری می شود که اطلاعات ژیروسکوپ و شتاب سنج را پردازش می کند. تعداد زیادی از آنها در اینترنت وجود دارد، اما بهتر است از آنها استفاده کنید.


بر مرحله نهاییشما باید مقادیر ژیروسکوپ و شتاب سنج را کالیبره کنید. برای این کار باید یک سطح صاف پیدا کنید و MPU6050 را روی آن قرار دهید. سپس، طرح کالیبراسیون راه اندازی می شود، داده های انحراف حاصل ثبت می شود و سپس در طرح MPU6050_DMP6 استفاده می شود.

مرحله چهارم برنامه برای آردوینو
به لطف برنامه ای که قرار داده شده است، کوادکوپتر تثبیت می شود و در حالت پایدار آویزان می شود. در ادامه با استفاده از این برنامه کوادکوپتر کنترل می شود.


برای تثبیت کوادکوپتر از دو کنترلر PID استفاده شده است. یکی برای زمین مورد نیاز است، و دوم برای رول. کنترلر سرعت چرخش پروانه ها را اندازه گیری می کند و بر این اساس کوادکوپتر کنترل می شود.

مرحله پنجم اصلاح کوادکوپتر

مشکل اصلی یک کوادکوپتر کوچک و ارزان وزن آن است. برای حل این مشکل، باید موتورهای قدرتمندتر و سبک تری نصب کنید؛ موتورهای براشلس بهترین گزینه هستند که به آنها موتور سوپاپ نیز می گویند. آنها بسیار بهتر از انواع قلم مو هستند، اما شما همچنین باید برای آنها کنترل کننده های سرعت بخرید، بنابراین هزینه محصولات خانگی به شدت افزایش می یابد.

سلام خوانندگان!
در این سری مقالات، درب کوادکوپتر را کمی بیشتر از نیاز سرگرمی باز می کنیم و همچنین برنامه خودمان را برای فلایت کنترلر که یک برد معمولی آردوینو مگا 2560 خواهد بود، می نویسیم، پیکربندی و راه اندازی می کنیم.

پیش رو داریم:

  1. مفاهیم اساسی.
  2. کنترلرهای PID با نمایش تعاملی وب روی یک کوادکوپتر مجازی.
  3. برنامه واقعی برای آردوینو و برنامه پیکربندی برای Qt.
  4. تست های خطرناک کوادکوپتر روی طناب. اولین پروازها
  5. تصادف و باخت در میدان. جستجوی خودکاراز هوا با استفاده از Qt و OpenCV.
  6. تست های موفقیت آمیز نهایی خلاصه کردن. کجا بریم؟

مطالب حجیم است، اما من سعی خواهم کرد آن را در 2-3 مقاله قرار دهم.
امروز انتظار داریم: اسپویلر با ویدیویی از نحوه پرواز کوادکوپتر ما; مفاهیم اساسی؛ کنترل کننده های PID و تمرین انتخاب ضرایب آنها.

این همه برای چیست؟

علاقه تحصیلی، که به هر حال، نه تنها من را دنبال می کند (،). و البته برای روح. در حین کار بسیار لذت بردم و وقتی "IT" با برنامه من پرواز کرد، احساس خوشحالی واقعی و غیرقابل توصیف کردم :-)

برای چه کسی؟

این مواد همچنین ممکن است برای افرادی که دور هستند یا فقط قصد دارند در سیستم های چند روتوری درگیر شوند، جالب باشد. حالا بیایید در مورد هدف اجزای اصلی کوادکوپتر، نحوه تعامل آنها با یکدیگر، در مورد مفاهیم اولیه و اصول پرواز صحبت کنیم. البته، تمام دانشی که نیاز داریم را می‌توان در اینترنت پیدا کرد، اما نمی‌توان مجبور شد آن را در اینترنت گسترده جستجو کنیم.

بدون به خطر انداختن درک خود از مفاهیم اساسی، از هر چیزی که می دانید تا ترم ناآشنا بعدی بگذرید. برجسته شده است، یا به یک تصویر غیرقابل درک.

نه شماره 1!

تا زمانی که آن را امتحان نکرده اید، برنامه کنترل پرواز خود را ننویسید. راه حل های آماده، که اکنون تعداد زیادی از آنها وجود دارد (Ardupilot، MegapirateNG، MiltiWii، AeroQuad، و غیره). اول از همه، خطرناک است! کنترل یک کوادکوپتر بدون GPS و فشارسنج، و حتی بیشتر از آن زمانی که دچار مشکل می شود، واژگون می شود یا دقیقاً در جایی که باید پرواز نمی کند، به تمرین نیاز دارد - و این تقریباً در اولین آزمایش ها اجتناب ناپذیر است. ثانیا، با درک اینکه چه چیزی باید برنامه ریزی شود و در نهایت چگونه باید کار کند، برنامه نویسی برای شما چندین برابر آسان تر خواهد بود. باور کن: ریاضیات پرواز تنها بخش کوچکی از کد برنامه است.

نه شماره 2!

اگر به دنبال علایق آکادمیک نیستید و فقط به کارهایی نیاز دارید که راه حل های آماده برای مدت طولانی انجام داده اند (پرواز کنید، عکس بگیرید، فیلم بگیرید، پرواز کنید) تعهد نکنید که برنامه خود را برای کنترلر پرواز بنویسید. تکلیف و غیره) در حالی که همه چیز را خودتان می نویسید، زمان زیادی طول می کشد، حتی اگر تنها نباشید.

مفاهیم اساسی

کوادکوپترها انواع مختلفی دارند، اما همه آنها توسط چهار روتور اصلی متحد می شوند:

با وجود تقارن ظاهری، تشخیص قسمت جلویی کوادکوپتر برای خلبان بسیار مهم است (با فلش نشان داده شده است). اینجا، مانند مدل های رادیویی کنترل شدهماشین‌ها: هنگامی که فرمان "به جلو" داده می‌شود، کوادکوپتر نه در جایی که خلبان به آن نگاه می‌کند، بلکه در جایی که دماغه خیالی کوادکوپتر اشاره می‌کند پرواز می‌کند. این مملو از خطر است: برای مبتدیان ممکن است دشوار باشد که دستگاهی را که توسط باد گرفتار شده است، به نحوی به سمت خود برگردانده شده است (البته ما در مورد پرواز با دوربین اول شخص و در مورد "هوشمند" صحبت نمی کنیم. حالت های پرواز با استفاده از قطب نما و GPS.) راه حل این مشکل را می توان تا حدی با پیچ های جلو یا پرتوهای رنگ متفاوت، نوعی توپ در جلو یا LED های رنگی متفاوت برطرف کرد. اما همه اینها وقتی که pepelats به سرعت به یک نقطه در بالای افق تبدیل می شود بی فایده است.

ما روی یک قاب کوادکوپتر به شکل "X" پرواز خواهیم کرد زیرا ظاهر آن را بیشتر دوست دارم. هر طرحی مزایا و هدف خاص خود را دارد. علاوه بر کوادکوپتر، مولتی کوپترهای دیگری نیز وجود دارد. حتی اگر گزینه های عجیب و غریب را در نظر نگیرید، هنوز یک دسته کامل از آنها وجود دارد!

بیایید بفهمیم که کوادکوپتر ما در داخل چگونه ساختار دارد و کنترلر پروازی که قصد داریم برنامه ریزی کنیم باید چه کار کند.


زاویه زمین، رول و انحراف (پیچ، رول، انحراف)- زوایایی که مرسوم است جهت کوادکوپتر را در فضا تعیین و تنظیم کنید.

گاه از کلمه «زاویه» حذف می شود و به سادگی می گویند: قیر، رول، انحراف. اما طبق ویکی پدیا این کاملاً دقیق نیست. پرواز کوادکوپتر در جهت مورد نیاز با تغییر این سه زاویه حاصل می شود. به عنوان مثال، برای پرواز به جلو، به دلیل اینکه موتورهای عقب کمی قوی تر از موتورهای جلو می چرخند، کوادکوپتر باید کج شود:

کوادکوپتر گازی- میانگین حسابی بین سرعت چرخش همه موتورها. هر چه گاز بیشتر باشد، تراست کل موتورها بیشتر می شود، کوادکوپتر را بیشتر می کشند. بالا(به جلو نروید!!! "دمپایی روی زمین" در اینجا به معنای سریعترین صعود است). معمولاً به صورت درصد اندازه گیری می شود: 0٪ - موتورها متوقف شده اند، 100٪ - چرخش با حداکثر سرعت. گاز معلق است- حداقل سطح گازی که لازم است تا کوادکوپتر ارتفاع را از دست ندهد.

دریچه گاز، پیچ، رول، انحراف - اگر بتوانید این چهار پارامتر را کنترل کنید، می توانید کوادکوپتر را کنترل کنید. گاهی اوقات به آنها کانال های کنترل نیز می گویند. اگر ریموت کنترل دو کاناله خریداری کرده باشید، قادر به کنترل کوادکوپتر نخواهید بود. سه کانال برای هلیکوپترهای کوچک مناسب تر است: شما می توانید بدون کنترل رول پرواز کنید، اما در یک کوادکوپتر راحت نیست. اگر می خواهید حالت پرواز را تغییر دهید، باید برای یک کنترل از راه دور پنج کانال هزینه کنید. اگر می‌خواهید شیب و حرکت دوربین روی برد را کنترل کنید، دو کانال دیگر وجود دارد، اگرچه متخصصان از یک کنترل از راه دور جداگانه برای این کار استفاده می‌کنند.

حالت های پرواز زیادی وجود دارد. GPS، فشارسنج و مسافت یاب استفاده می شود. اما ما می خواهیم یک پایه را پیاده سازی کنیم - حالت تثبیت ( خنجر زدن، تثبیت کردن، در یک "خرد") پرواز کنید)، که در آن کوادکوپتر بدون توجه به عوامل خارجی، زوایایی را که از طریق کنترل از راه دور به آن داده می شود، حفظ می کند. در این حالت در صورت عدم وجود باد، کوادکوپتر می تواند تقریبا در جای خود آویزان شود. خلبان باید باد را جبران کند.

جهت چرخش پیچ ها به طور تصادفی انتخاب نمی شود. اگر همه موتورها در یک جهت می چرخیدند، کوادکوپتر به دلیل گشتاورهای ایجاد شده در جهت مخالف می چرخید. بنابراین، یک جفت موتور مخالف همیشه در یک جهت و جفت دیگر در جهت دیگر می چرخند. از اثر وقوع گشتاورهای چرخشی برای تغییر زاویه انحراف استفاده می شود: یک جفت موتور کمی سریعتر از دیگری شروع به چرخش می کند و اکنون کوادکوپتر به آرامی به سمت ما می چرخد ​​(چه وحشتناک):

  • LFW - چرخش در جهت عقربه های ساعت جلو چپ (جلو چپ، چرخش در جهت عقربه های ساعت)
  • RFC - چرخش خلاف جهت عقربه‌های ساعت جلوی راست (جلو راست، چرخش خلاف جهت عقربه‌های ساعت)
  • LBC - چرخش در خلاف جهت عقربه های ساعت به عقب (چپ عقب، چرخش خلاف جهت عقربه های ساعت)
  • RBW - چرخش در جهت عقربه های ساعت به عقب (راست عقب، چرخش در جهت عقربه های ساعت)

سرعت چرخش موتورها را کنترل می کند کنترلر پرواز (کنترل کننده، مغزها). معمولاً این یک برد یا جعبه کوچک با ورودی و خروجی های زیاد است. تعداد زیادی کنترلر مختلف با مجموعه ای از قابلیت های مختلف، سیستم عامل های مختلف، وظایف مختلف. در اینجا فقط چند مورد است:


وظیفه کلی کنترلر پرواز انجام چرخه کنترل چندین ده بار در ثانیه است که شامل: خواندن قرائت سنسور، خواندن کانال های کنترل، پردازش اطلاعات و صدور سیگنال های کنترلی به موتورها به منظور اجرای دستورات خلبان است. این چیزی است که ما قصد داریم برنامه ریزی کنیم.

انواع مختلفی از سنسورها وجود دارد که می توان از آنها استفاده کرد. ما از آنهایی که قبلاً تقریباً اجباری شده اند در همه کوادکوپترها استفاده خواهیم کرد ژیروسکوپ سه محوره و شتاب سنج سه محوره. شتاب سنج شتاب را اندازه گیری می کند و ژیروسکوپ سرعت زاویه ای را اندازه گیری می کند. با تشکر از آنها، کنترلر پرواز زوایای زمین فعلی، رول و انحراف را می داند. این سنسورها را می توان در کنترلر پرواز یا خارجی تعبیه کرد. فرآیند محاسبه سه زاویه بر اساس خوانش سنسور موضوعی برای مقاله جداگانه است. اما ما نیازی به دانستن این موضوع در اینجا نداریم: MPU-6050 همه چیز را برای ما انجام خواهد داد. این یک برد کوچک است که محاسبات و فیلترهای لازم را در داخل انجام می دهد و با استفاده از پروتکل i2c زوایای تقریباً آماده تولید می کند. تنها کاری که باید انجام دهیم این است که آنها را بشماریم، آنها را با بقیه داده ها پردازش کنیم و سیگنال های کنترلی را به موتورها صادر کنیم.

موتورهای مولتی کوپتر جریان های زیادی را مصرف می کنند، بنابراین کنترلر پرواز آنها را نه به طور مستقیم، بلکه از طریق درایورهای سخت افزاری خاص به نام کنترل می کند. کنترل کننده های سرعت (ESC، رگولاتور، eska). این رگولاتورها توسط باتری اصلی روی برد تغذیه می شوند، سیگنال کنترل از کنترلر دریافت می شود و در خروجی دارای سه سیم (A, B, C) هستند که مستقیماً به موتورها می روند (هر موتور رگولاتور مخصوص به خود را دارد. !)


"پروتکل" ارتباط بین رگولاتور و موتور برای ما به اندازه "پروتکل" ارتباط بین کنترلر پرواز و رگولاتور برای ما مهم نیست، زیرا باید رگولاتور را از طریق کنترلر به صورت برنامه ای کنترل کنیم. رگولاتورهایی وجود دارند که از طریق i2c کنترل می شوند، اما رایج ترین آنها توسط یک سیگنال موج مربعی با حداقل 0 ولت و حداکثر 3-5 ولت کنترل می شوند. PWMیا PWMو برخی استدلال می کنند که صحیح تر است - PPM. جزئیات بیشتر، برای مثال).

"پروتکل" یک کلمه قوی است: برای فرمان دادن به موتور برای چرخش با حداکثر سرعت، کنترل کننده باید پالس هایی به مدت 2 میلی ثانیه ارسال کند که با یک صفر منطقی 10 تا 20 میلی ثانیه طول می کشد. مدت زمان پالس 1 میلی ثانیه مربوط به توقف موتور، 1.1 ms - 10٪ از حداکثر سرعت، بیشینه سرعت، 1.2 ms - 20٪ و غیره در عمل، مدت زمان صفر هیچ نقشی ندارد، فقط مدت زمان خود پالس مهم است.

با وجود تمام سادگی ظاهری، در اینجا کمین وجود دارد: کنترلرهای پرواز متفاوت هستند تنظیمات مختلف، تنظیم کننده ها متفاوت هستند و حداقل (1 میلی ثانیه) و حداکثر (2 میلی ثانیه) جهانی نیستند. بسته به عوامل بسیاری، محدوده 1-2 ms ممکن است در واقع 1.1 - 1.9 ms باشد. برای اینکه تنظیم کننده و کنترل کننده کاملاً به یک زبان صحبت کنند، رویه ای وجود دارد کالیبراسیون تنظیم کننده. در طی این روش، محدوده کنترل ها تغییر می کند و با محدوده کنترل کننده برابر می شود. این رویه به برنامه هر کنترلر متصل شده و شامل چندین است مراحل ساده(مراحل بسته به سازنده ممکن است متفاوت باشد - دستورالعمل ها را بخوانید!):

  • منبع تغذیه رگولاتور را خاموش کنید.
  • پروانه را از موتور خارج کنید.
  • سیگنالی مطابق با حداکثر سرعت چرخش به ورودی کنترلر اعمال کنید.
  • برق را به رگولاتور اعمال کنید. موتور باید بدون کمک خارجی بی حرکت بماند.
  • سیگنالی مطابق با حداقل سرعت چرخش به ورودی کنترلر اعمال کنید.
  • 1-2 ثانیه مکث کنید، منتظر صدای جیر جیر باشید.
  • منبع تغذیه رگولاتور را خاموش کنید.

پس از این، مرزهای بازه مربوطه به کنترلر وارد می شود. هنگام تلاش برای بلند شدن با رگولاتورهای کالیبره نشده، عواقب آن ممکن است غیرمنتظره باشد: از تکان ناگهانی کوادکوپتر به نزدیکترین درخت تا بی حرکتی کامل موتورها در هر مقدار دریچه گاز.

PWM دقیقاً از همین اصل استفاده می کند گیرنده آنبورد. این دستگاه کوچک، دریافت سیگنال های رادیو کنترل از زمین و انتقال آنها به کنترلر پرواز. اغلب، کنترلر پرواز برای هر کانال کنترل (دریچه گاز، زمین، رول، و غیره) ورودی خاص خود را دارد که PWM به آن عرضه می شود. منطق تعامل ساده است: یک فرمان، به عنوان مثال، "70% دریچه گاز"، به طور مداوم از زمین به گیرنده می رود، جایی که به PWM تبدیل می شود و از طریق یک سیم جداگانه به کنترل کننده پرواز ارسال می شود. همینطور با زمین، رول، انحراف.

از آنجایی که گیرنده و کنترلر رابطه PWM دوستانه خود را دارند، باید کالیبره شوند: کنترل‌های از راه دور با گیرنده‌ها با محدوده عملکرد خود متفاوت هستند. کنترل کننده باید بتواند خود را تطبیق دهد. روش کالیبراسیون رادیوییبرخلاف کالیبراسیون رگولاتورها، باید خودمان آن را به عنوان بخشی از برنامه پرواز ایجاد کنیم. طرح کلی کالیبراسیون به شرح زیر است:

  • پروانه ها را از موتورها جدا کنید تا در صورت امکان.
  • به نحوی کنترلر را در حالت کالیبراسیون رادیویی قرار دهید.
  • کنترلر کالیبراسیون رادیویی را برای چند ده ثانیه شروع می کند.
  • در زمان تعیین شده، تمام میله های کنترل از راه دور را در همه جهات حرکت دهید تا متوقف شوند.
  • کنترلر حداکثر و مینیمم ها را برای همه کانال های کنترل در طول زمان به خاطر می آورد حافظه داخلیبرای قرن ها.

بنابراین: در طول کالیبراسیون رادیویی، کنترلر پرواز محدوده گیرنده را برای همه کانال های کنترل به خاطر می آورد. در طول کالیبراسیون ESC، محدوده کنترلر پرواز در تمام ESC ها وارد می شود.

علاوه بر برنامه کنترلر پرواز، یک برنامه دیگر مورد نیاز است: رابط راه اندازی کنترلر پرواز. اغلب، این یک برنامه رایانه شخصی است که از طریق USB به کنترلر پرواز متصل می شود و به کاربر اجازه می دهد برنامه پرواز را پیکربندی و بررسی کند، به عنوان مثال: اجرای کالیبراسیون رادیویی، پیکربندی پارامترهای تثبیت، بررسی عملکرد سنسورها، تنظیم مسیر پرواز در نقشه، تعیین رفتار مولتی کوپتر در هنگام از دست رفتن سیگنال و موارد دیگر. رابط پیکربندی خود را در C++ و Qt در قالب یک ابزار کنسول می نویسیم. اگر به آینده نگاه کنید اینجاست:


هیچکس از حوادث مصون نیست. حتی پروانه‌های پلاستیکی ده اینچی روی موتورهای کوچک می‌توانند کبودی‌های خونی روی پوست باقی بگذارند که برای یک هفته دیگر آسیب خواهد دید (تست شخصی). اگر در حالی که کوادکوپتر را روشن حمل می کنید، چوب گاز روی ریموت کنترل را درگیر کنید، می توانید آرایش و مدل موی جدیدی به خود بدهید. بنابراین، کنترلر پرواز باید حداقل ایمنی را فراهم کند: مکانیسم مسلح / خلع سلاح. حالت "خلع سلاح" کوادکوپتر به این معنی است که موتورها خاموش هستند و حتی یک فرمان کامل دریچه گاز از ریموت کنترل هیچ تاثیری ندارد، اگرچه برق تامین می شود. حالت "مسلح" کوادکوپتر به این معنی است که دستورات از راه دور توسط کنترلر پرواز انجام می شود. در این حالت کوادکوپترها بلند می شوند، پرواز می کنند و فرود می آیند. کوادکوپتر روشن می شود و باید فوراً به حالت خلع سلاح شود در صورتی که خلبان بی توجه آن را روشن کند زمانی که میله دریچه گاز روی کنترل از راه دور صفر نیست. برای قرار دادن هلی کوپتر در حالت "مسلح"، خلبان باید برخی از ژست های از پیش توافق شده را با چوب های کنترل از راه دور انجام دهد. اغلب این حرکت به این صورت است که چوب چپ را در گوشه پایین سمت راست نگه دارید (دریچه گاز = 0٪، انحراف = 100٪) برای چند ثانیه. پس از این، کنترلر پرواز حداقل یک خودآزمایی حداقلی انجام می دهد و در صورت موفقیت آمیز بودن، خود را مسلح می کند"(آماده برای پرواز!) با یک حرکت دیگر (دریچه گاز = 0٪، یاو = 0٪) کوادکوپتر" خلع سلاح می شودیکی دیگر از اقدامات امنیتی خوب این است خلع سلاح خودکار، اگر گاز برای 2-3 ثانیه صفر بود.

در مورد موتور، باتری، رگولاتور، پروانه

انتخاب اجزای یک مولتیکوپتر موضوعی برای یک سری مقالات است. اگر قصد دارید اولین کوادکوپتر خود را بسازید، آنچه را که به آن نیاز دارید را فرموله کنید و از مشاوره افراد با تجربه استفاده کنید یا لیستی از قطعاتی که شخص دیگری گردآوری کرده و با موفقیت روی آن پرواز کرده است را تهیه کنید.

با این حال، برای درک کلی، دانستن نکات اصلی مفید است.

باتری ها

در میان آماتورها و متخصصان سیستم‌های چند روتوری، باتری‌های لیتیوم پلیمری رایج‌ترین منبع تغذیه برای الکترونیک و موتورهای روی برد هستند. آنها با ظرفیت، ولتاژ و حداکثر جریان خروجی متمایز می شوند. ظرفیت، طبق معمول، با آمپر ساعت یا میلی آمپر ساعت اندازه گیری می شود. ولتاژ با تعداد "سلول" باتری اندازه گیری می شود. یک "قوطی" به طور متوسط ​​3.7 ولت است. یک "قوطی" با شارژ کامل 4.2 ولت است. رایج ترین باتری ها آنهایی هستند که سه تا شش سلول دارند. حداکثر جریان خروجی بر حسب آمپر اندازه گیری می شود و به عنوان مثال به صورت زیر مشخص می شود: 25 درجه سانتیگراد. C ظرفیت باتری است، 25 ضریب است. اگر ظرفیت 5 آمپر باشد، چنین باتری می تواند 25 * 5 = 125 آمپر را ارائه دهد. البته، بهتر است پارامتر خروجی فعلی را با ذخیره بگیرید، اما، اساسا، هر چه بزرگتر باشد، باتری گران تر است. مثال برچسب زدن: 25C 3S 4500mah.

هر بانک یک باتری جداگانه است. همه آنها به صورت سری لحیم شده اند. به منظور شارژ یکنواخت تمامی بانک ها، یک کانکتور بالانس با دسترسی به هر بانک به صورت جداگانه و ویژه ارائه شده است. دستگاه شارژ.

موتورها، پروانه ها، رگلاتورها

پارامتر اصلی موتور براشلس kv آن است. این تعداد دور در دقیقه برای هر ولت ولتاژ اعمال شده است. رایج ترین موتورها با kv از 300 تا 1100 هستند. Kv نزدیک به 1000 معمولاً برای کوادکوپترهای کوچک (1-2 کیلوگرم به اضافه 500 گرم بار) انتخاب می شود و آنها به پروانه های پلاستیکی تا قطر 12 اینچ مجهز هستند. مولتی کوپترهای بزرگ (برای بلند کردن تجهیزات خوب و سنگین عکس-فیلم) یا هواپیماهای بلند پرواز (برای ثبت زمان پرواز) معمولاً دارای موتورهایی با kv پایین (300-500) و پروانه های کربنی عظیم (قطر 15 تا 20 اینچ) هستند. Kv تنها نیست پارامتر مهمموتور: اغلب می توانید جداول کامل وابستگی قدرت و رانش موتور به ولتاژ عرضه شده و نوع پروانه نصب شده را پیدا کنید. علاوه بر این، هر موتور برای محدوده ولتاژ خود (تعداد سلول های باتری) و حداکثر جریان خود طراحی شده است. اگر سازنده 3-4S نوشته است، نباید آن را با باتری های 5S استفاده کنید. همین امر در مورد رگولاتورها نیز صدق می کند.

اگر موتور برای جریان حداکثر 30 آمپر طراحی شده باشد، رگولاتور باید برای جریان حداکثر 30 + 10 آمپر طراحی شود تا از گرمای بیش از حد جلوگیری شود. گاورنرهای بی کیفیت یا نامناسب می توانند باعث به اصطلاح "لغزش های همگام سازی" شوند و موتور را در حین پرواز متوقف کنند و شما یک اصطلاح مولتی روتور دیگر را تشخیص دهید: " سیاره را گرفت." یکی دیگر نکته مهم- ضخامت و کیفیت سیم ها. یک سیم با اندازه نادرست یا یک اتصال دهنده بد می تواند منجر به آتش سوزی در هوا شود.

همانطور که می بینید، تفاوت های ظریف زیادی وجود دارد. من حتی نیمی از آنها را لیست نکرده ام، بنابراین انتخاب اجزای اولین مولتی کوپتر خود بسیار دشوار است.

ریاضیات تثبیت، کنترل کننده های PID (PID)

اگر تصمیم دارید وارد مولتی کوپتر شوید، دیر یا زود باید با تنظیم کنترلر PID دست و پنجه نرم کنید، زیرا این دستگاه ریاضی تقریباً در تمام کارهای تثبیت کننده استفاده می شود: تثبیت زوایای یک کوادکوپتر در هوا، پرواز و نگه داشتن موقعیت. با استفاده از GPS، نگه داشتن ارتفاع با استفاده از فشارسنج، مکانیسم های بدون براش تثبیت دوربین فیلمبرداری در پرواز (گیمبال دوربین).

شما یک گیمبال دوربین دو محوره می‌خرید، مثلاً یک گوپرو را آنجا می‌گذارید، آن را روشن می‌کنید و به جای تثبیت، تشنج، لرزش و انقباض می‌گیرید، البته همه سنسورها کالیبره شده‌اند و مشکلات مکانیکی برطرف می‌شود. دلیل آن پارامترهای نادرست کنترلرهای PID است.

شما یک مولتیکوپتر جمع می کنید، سنسورها، رگولاتورها، رادیو را کالیبره می کنید، همه چیز را چک می کنید، سعی می کنید بلند شوید و آنقدر در هوا کسل کننده است که حتی یک نسیم ملایم آن را برمی گرداند. یا برعکس: او آنقدر تیز است که ناگهان بلند می شود و بدون اجازه یک سالتو سه گانه انجام می دهد. دلیل هنوز یکسان است: پارامترهای کنترل کننده های PID.

برای بسیاری از دستگاه‌هایی که از کنترل‌کننده‌های PID استفاده می‌کنند، دستورالعمل‌هایی برای راه‌اندازی، و حتی چندین دستورالعمل علاوه بر دستورالعمل‌های ویدیویی متعدد از خود کاربران وجود دارد. اما برای سهولت در پیمایش این تنوع، درک نحوه عملکرد این تنظیم کننده ها در داخل مفید است. در ضمن قراره سیستم تثبیت کوادکوپتر خودمون رو بنویسیم! من پیشنهاد می کنم "دوباره اختراع" و "روی انگشتان" برای درکفرمول کنترل کننده PID برای کسانی که زبان ریاضی خشک را ترجیح می دهند، ویکی پدیا را توصیه می کنم، زیرا... به زبان روسی این مطالب هنوز با جزئیات ارائه نشده است.

ما یک کوادکوپتر را در فضای دو بعدی در نظر خواهیم گرفت، جایی که فقط یک زاویه دارد - زاویه رول، و دو موتور: چپ و راست.


کنترلر پرواز به طور مداوم دستورات را از زمین دریافت می کند: "30 درجه بغلتید" ، "10 درجه بچرخید" ، "0 درجه بچرخید (افق را نگه دارید)"؛ وظیفه آن این است که با در نظر گرفتن باد، توزیع ناهموار وزن کوادکوپتر، سایش ناهموار موتورها، اینرسی کوادکوپتر و غیره، آنها را با حداکثر سرعت و دقت با استفاده از موتورها انجام دهد. بنابراین، فلایت کنترل باید به طور مداوم مشکل سرعت چرخش را برای هر موتور با در نظر گرفتن مقدار فعلی زاویه بانک و مقدار مورد نیاز حل کند. به طور مستمر، البته، یک کلمه قوی است. همه چیز به توانایی های محاسباتی سخت افزار خاص بستگی دارد. در Adruino، می توان یک تکرار از چرخه پردازش و کنترل را در 10 میلی ثانیه جا داد. یعنی هر 10 میلی ثانیه یک بار زوایای کوادکوپتر خوانده می شود و بر اساس آنها سیگنال های کنترلی به موتورها ارسال می شود. این 10 میلی ثانیه نامیده می شود دوره تنظیم. واضح است که هرچه کوچکتر باشد، تنظیم بیشتر و دقیقتر اتفاق می افتد.

سطح گاز از گیرنده به کنترل کننده جریان دارد. بیایید آن را نشان دهیم. یادآوری می کنم که این میانگین حسابی بین سرعت چرخش همه موتورها است که به صورت درصدی از حداکثر سرعت چرخش بیان می شود. اگر و سرعت چرخش موتورهای چپ و راست هستند، پس:

پاسخ کوادکوپتر (نیروی) کجاست که به دلیل اینکه موتور سمت چپ سریعتر از گاز می چرخد ​​و موتور سمت راست به همان اندازه کندتر می چرخد، گشتاور ایجاد می کند. همچنین می تواند مقادیر منفی بگیرد، سپس موتور مناسب سریعتر می چرخد. اگر یاد بگیریم که این مقدار را در هر تکرار چرخه پردازش محاسبه کنیم، آنگاه قادر خواهیم بود کوادکوپتر را کنترل کنیم. واضح است که حداقل باید به زاویه رول فعلی () و زاویه رول مورد نظر () که از صفحه کنترل می آید بستگی داشته باشد.

بیایید یک موقعیت را تصور کنیم: دستور "keep the horizon" (= 0) دریافت می شود و کوادکوپتر یک رول در سمت چپ دارد:


تفاوت (خطا) بین و که کنترل کننده به دنبال به حداقل رساندن آن است.

هر چه تفاوت بین زاویه رول مورد نظر و زاویه فعلی بیشتر باشد، واکنش باید قوی تر باشد، موتور سمت چپ باید سریعتر نسبت به سمت راست بچرخد. اگر این را با استفاده از نماد خود بنویسیم:

در اینجا P ضریب تناسب است. هر چه بزرگتر باشد، واکنش قوی تر خواهد بود، کوادکوپتر به انحراف از زاویه رول مورد نیاز واکنش تیزتری نشان می دهد. این فرمول بصری و ساده کار را توصیف می کند کنترل کننده تناسبی. نکته ساده است: هر چه کوادکوپتر بیشتر از موقعیت مورد نیاز منحرف شود، باید تلاش بیشتری برای بازگرداندن آن انجام دهید. متأسفانه، این فرمول باید پیچیده باشد. دلیل اصلی بیش از حد است.

در چند ده میلی ثانیه (چندین تکرار از چرخه پردازش)، تحت تأثیر کنترل کننده تناسبی، کوادکوپتر به موقعیت مورد نیاز (در این مورد افقی) باز می گردد. در تمام این مدت، خطا و تلاش همان علامت را خواهد داشت، اگرچه از نظر بزرگی کمتر و کمتر می شود. با به دست آوردن سرعت چرخش معین (سرعت زاویه ای)، کوادکوپتر به سادگی به سمت دیگر غلت می خورد، زیرا هیچ کس آن را در موقعیت مورد نیاز متوقف نمی کند. مانند فنری است که همیشه می خواهد به حالت اولیه خود بازگردد، اما اگر آن را به عقب بکشید و رها کنید، نوسان می کند تا زمانی که اصطکاک تمام شود. البته کوادکوپتر نیز تحت تاثیر اصطکاک قرار خواهد گرفت، اما تمرین نشان می دهد که کافی نیست.

به همین دلیل، باید یک عبارت دیگر به کنترلر پروپشنال اضافه شود، که باعث کند شدن چرخش کوادکوپتر و جلوگیری از بیش از حد (غلتش در جهت مخالف) می شود - نوعی تقلید از اصطکاک در یک محیط چسبناک: هر چه سریعتر کوادکوپتر می چرخد، باید سخت تر تلاش کنید تا آن را متوقف کنید، البته در محدوده معقول. سرعت چرخش (نرخ تغییر خطا) را به صورت زیر نشان می دهیم، سپس:

که در آن D یک ضریب قابل تنظیم است: هر چه بزرگتر باشد، نیروی توقف قوی تر است. از یک درس فیزیک مدرسه، خاطرات مبهمی ظاهر می شود که نرخ تغییر هر کمیت مشتق این کمیت نسبت به زمان است:

.

و اکنون کنترل کننده تناسبی به یک تناسبی-دیفرانسیل تبدیل می شود (ترم متناسب و دیفرانسیل):

محاسبه خطا آسان است، زیرا در هر تکرار می دانیم و ; P و D پارامترهایی هستند که می توانند قبل از راه اندازی پیکربندی شوند. برای محاسبه مشتق (نرخ تغییر)، باید مقدار قبلی را ذخیره کرد، مقدار فعلی را دانست و زمان بین اندازه‌گیری‌ها را دانست (دوره کنترل). و اینجاست - فیزیک کلاس ششم مدرسه (سرعت = مسافت / زمان):

دوره نظارتی؛ - مقدار خطا از تکرار قبلی چرخه تنظیم. به هر حال، این فرمول است ساده ترین راهتمایز عددی، و در اینجا برای ما کاملا مناسب است.

اکنون ما یک کنترلر دیفرانسیل تناسبی در یک دوکوپتر تخت داریم، اما هنوز یک مشکل دیگر وجود دارد. اجازه دهید لبه سمت چپ کمی بیشتر از سمت راست وزن داشته باشد، یا همان چیزی است که موتور سمت چپ کمی بدتر از سمت راست کار می کند. کوادکوپتر کمی به سمت چپ متمایل است و به عقب برنمی‌گردد: عدد دیفرانسیل صفر است و جمله تناسبی، اگرچه مقدار مثبت می‌گیرد، برای بازگشت کوادکوپتر به حالت افقی کافی نیست، زیرا لبه سمت چپ وزن کمی دارد. بیشتر از حق در نتیجه کوادکوپتر همیشه به سمت چپ کشیده می شود.

مکانیزمی برای نظارت بر این گونه انحرافات و اصلاح آنها لازم است. ویژگی بارز چنین خطاهایی این است که در طول زمان خود را اصلاح می کنند. اصطلاح انتگرال به کمک می آید. مجموع تمام خطاها را در تمام تکرارهای حلقه پردازش ذخیره می کند. این چگونه کمک خواهد کرد؟ اگر ترم تناسبی برای تصحیح یک خطای کوچک کافی نباشد، اما همچنان وجود داشته باشد، به تدریج، با گذشت زمان، عبارت انتگرال قدرت می گیرد و پاسخ را افزایش می دهد و کوادکوپتر زاویه رول مورد نیاز را می گیرد.

در اینجا یک نکته ظریف وجود دارد. فرض کنید 1 درجه است، چرخه کنترل 0.1 ثانیه است. سپس در یک ثانیه مجموع خطاها مقدار 10 درجه را می گیرد. و اگر چرخه پردازش 0.01 ثانیه باشد، مقدار آن تا 100 درجه افزایش می یابد. به طوری که در همان زمان، عبارت انتگرال برای دوره های مختلف تنظیم مقدار یکسانی به دست آورد، مقدار حاصل را در خود دوره تنظیم ضرب می کنیم. به راحتی می توان محاسبه کرد که در هر دو مورد مجموع 1 درجه از مثال به دست می آید. در اینجا آن است - عبارت انتگرال (در حال حاضر بدون ضریب قابل تنظیم):

کجا یکی از پارامترهای قابل تنظیم است که اکنون سه مورد از آن وجود دارد: . استفاده از این فرمول آسان است کد برنامهو فرمولی که در کتاب های درسی آمده است:

انواع مختلفی از آن وجود دارد، به عنوان مثال، می توانید مدول عبارت انتگرال را محدود کنید تا از آستانه مجاز خاصی تجاوز نکند (ما این کار را انجام خواهیم داد).

تمرین

خوب، اکنون زمان تمرین در انتخاب ضرایب است. به خوانندگان یک صفحه جاوا اسکریپت با یک کوادکوپتر مجازی ارائه می شود که قبلاً در تصاویر دیده اند: انتخاب پارامترهای کنترل کننده PID برای کوادکوپتر(JSFiddle). در اولین شروع، بیش از حد قابل مشاهده است - نوسانات در اطراف موقعیت مورد نیاز. هنگامی که نوسانات متوقف می شوند، می توانید این اثر را مشاهده کنید که ضریب تناسبی به دلیل کوادکوپتر "نامتقارن" (تنظیم شده توسط چک باکس "Asymmetry") نمی تواند با خطا مقابله کند. پارامترهای موجود برای پیکربندی عبارتند از P، I، D. اکنون می‌دانید که با آنها چه کار کنید. "اسکرول" زیر کوادکوپتر را می توان با مقدار رول مورد نیاز کنترل کرد. "فاصله (ms):" - فاصله تنظیم. کاهش آن تقلب است، اما دیدن اینکه چگونه بر کیفیت تثبیت تاثیر می گذارد بسیار مفید است.

برای دوستداران ریاضیات "خالص"، ما می توانیم ارائه دهیم کنترل کننده PID انتزاعی را پیکربندی کنید

پارامترهای وارد شده به طور خودکار اعمال نمی شوند: باید روی "اعمال" کلیک کنید. چند نکته کوچک: اگر به نظرتان می رسد که کوادکوپتر خیلی کند است و نمی تواند به کنترل پاسخ دهد، می توانید P را افزایش دهید، اما مقدار P خیلی بزرگ ممکن است منجر به overshoot شود. پارامتر D به مقابله با بیش از حد کمک می کند، اما مقادیر بیش از حد بزرگ منجر به نوسانات مکرر یا دوباره به بیش از حد می شود. پارامتر I معمولاً 10 تا 100 برابر کمتر از پارامتر P است زیرا قدرت آن در تجمع در طول زمان نهفته است، نه در واکنش سریع.

تنظیم دستی پارامترهای PID نیاز به تمرین دارد. روش های تحلیلی برای محاسبه آنها وجود دارد، اما نیاز به آماده سازی خوب و دانش دقیق بسیاری از پارامترهای سیستم خاص در حال سفارشی سازی دارد. به عنوان حد وسط بین انتخاب دستی و محاسبه تحلیلی، طیف گسترده ای از روش های تجربی توسط محققان مختلف پیشنهاد شده است.

در کوادکوپتر دو بعدی ما، تنها یک زاویه تغییر می کند - زاویه رول. در تنظیم یک کوادکوپتر سه بعدی، سه کنترلر PID مستقل برای هر یک از زوایا مورد نیاز است و کنترل یک موتور خاص، مجموع تلاش‌های تمام کنترل‌کننده‌ها خواهد بود.

نتیجه گیری قسمت اول

در این مقاله با مفاهیم اولیه کوادکوپتر و اصل پرواز، پیچ، رول، انحراف، دریچه گاز، شناور دریچه گاز، حالت پرواز پایدار، کنترلر پرواز، ژیروسکوپ، شتاب سنج، کنترل کننده سرعت، PWM، کالیبراسیون کنترلر، کالیبراسیون رادیویی، گیرنده داخلی، رابط برای راه اندازی کنترلر پرواز، حالت های مسلح/خلع سلاح، خلع سلاح خودکار.

پس از آن فرمول را دوباره اختراع کردیم کنترل کننده PIDکمی لمس کردن تمایز و ادغام عددی، و روش سخت پیکربندی پارامترها را تجربه کرد پ، من، دیبر کوادکوپتر مجازی .

اکنون، اگر در برنامه نویسی شمشیر نوری مهارت دارید، می توانید برنامه تثبیت کننده کوادکوپتر خود را شروع کنید یا بهتر است با ایده های تازه به پروژه های منبع باز موجود بپیوندید. خوب، یکی دو هفته دیگر داستان را ادامه خواهم داد که چگونه همه چیز برنامه ریزی شد، آزمایش شد، سقوط کرد، انگشتانم را بریدند و به طور کامل در جهت نامعلومی پرواز کردند.

در خاتمه این قسمت، فقط باید به شخصی اشاره کنم که در انتخاب کامپوننت ها و راه اندازی پیچیده ترین (اول!) کوادکوپتر روی فریمور MegapirateNG به من کمک کرد و با حوصله به صدها سوال در مورد این موارد پاسخ داد. مفاهیم اساسی: SovGVD، متشکرم! :-)

به عنوان پاداش برای کسانی که توانستند همه این ورق را هدر دهند، من ویدیوی کوچک وعده داده شده را از نحوه پرواز کوادکوپتر ما با کنترلرهای PID "اختراع شده" ما در برنامه ما برای آردوینو مگا 2560 ارسال می کنم:

البته فاقد جی پی اس است، همانطور که در محصولات تجاری و تولید انبوه، کمی ثبات ندارد، اما OUR است و تا آخرین فاکتور ضریب انتگرال را از درون و بیرون می دانیم! و واقعاً جالب است که چنین فناوری‌هایی امروزه در دسترس ما هستند.



سلام، ساکنین هابرو!
در این سری مقالات، درب کوادکوپتر را کمی بیشتر از نیاز سرگرمی باز می کنیم و همچنین برنامه خودمان را برای فلایت کنترلر که یک برد معمولی آردوینو مگا 2560 خواهد بود، می نویسیم، پیکربندی و راه اندازی می کنیم.

پیش رو داریم:

  1. مفاهیم اولیه (برای خلبانان مبتدی بالگرد).
  2. کنترلرهای PID با نمایش تعاملی وب روی یک کوادکوپتر مجازی.
  3. برنامه واقعی برای آردوینو و برنامه پیکربندی برای Qt.
  4. تست های خطرناک کوادکوپتر روی طناب. اولین پروازها
  5. تصادف و باخت در میدان. جستجوی خودکار از هوا با استفاده از Qt و OpenCV.
  6. تست های موفقیت آمیز نهایی خلاصه کردن. کجا بریم؟

مطالب حجیم است، اما من سعی خواهم کرد آن را در 2-3 مقاله قرار دهم.
امروز انتظار داریم: اسپویلر با ویدیویی از نحوه پرواز کوادکوپتر ما; مفاهیم اساسی؛ کنترل کننده های PID و تمرین انتخاب ضرایب آنها.

این همه برای چیست؟

علاقه تحصیلی، که به هر حال، نه تنها من را دنبال می کند (،). و البته برای روح. در حین کار بسیار لذت بردم و وقتی "IT" با برنامه من پرواز کرد، احساس خوشحالی واقعی و غیرقابل توصیف کردم :-)

برای چه کسی؟

این مواد همچنین ممکن است برای افرادی که دور هستند یا فقط قصد دارند در سیستم های چند روتوری درگیر شوند، جالب باشد. حالا بیایید در مورد هدف اجزای اصلی کوادکوپتر، نحوه تعامل آنها با یکدیگر، در مورد مفاهیم اولیه و اصول پرواز صحبت کنیم. البته، تمام دانشی که نیاز داریم را می‌توان در اینترنت پیدا کرد، اما نمی‌توان مجبور شد آن را در اینترنت گسترده جستجو کنیم.

بدون به خطر انداختن درک خود از مفاهیم اساسی، از هر چیزی که می دانید تا ترم ناآشنا بعدی بگذرید. برجسته شده است، یا به یک تصویر غیرقابل درک.

نه شماره 1!

شروع به نوشتن برنامه خود برای کنترلر پرواز نکنید تا زمانی که راه حل های آماده ای را امتحان کنید، که اکنون تعداد زیادی از آنها وجود دارد (Ardupilot، MegapirateNG، MiltiWii، AeroQuad و غیره). اول از همه، خطرناک است! کنترل یک کوادکوپتر بدون GPS و فشارسنج، و حتی بیشتر از آن زمانی که دچار مشکل می شود، واژگون می شود یا دقیقاً در جایی که باید پرواز نمی کند، به تمرین نیاز دارد - و این تقریباً در اولین آزمایش ها اجتناب ناپذیر است. ثانیا، با درک اینکه چه چیزی باید برنامه ریزی شود و در نهایت چگونه باید کار کند، برنامه نویسی برای شما چندین برابر آسان تر خواهد بود. باور کن: ریاضیات پرواز تنها بخش کوچکی از کد برنامه است.

نه شماره 2!

اگر به دنبال علایق آکادمیک نیستید و فقط به کارهایی نیاز دارید که راه حل های آماده برای مدت طولانی انجام داده اند (پرواز کنید، عکس بگیرید، فیلم بگیرید، پرواز کنید) تعهد نکنید که برنامه خود را برای کنترلر پرواز بنویسید. تکلیف و غیره) در حالی که همه چیز را خودتان می نویسید، زمان زیادی طول می کشد، حتی اگر تنها نباشید.

مفاهیم اساسی


کوادکوپترها انواع مختلفی دارند، اما همه آنها توسط چهار روتور اصلی متحد می شوند:
با وجود تقارن ظاهری، تشخیص قسمت جلویی کوادکوپتر برای خلبان بسیار مهم است (با فلش نشان داده شده است). در اینجا، مانند مدل‌های ماشین‌های رادیویی: هنگامی که فرمان "به جلو" داده می‌شود، کوادکوپتر نه در جایی که خلبان به آن نگاه می‌کند، بلکه جایی که دماغه خیالی کوادکوپتر اشاره می‌کند پرواز می‌کند. این مملو از خطر است: برای مبتدیان ممکن است دشوار باشد که دستگاهی را که توسط باد گرفتار شده است، به نحوی به سمت خود برگردانده شده است (البته ما در مورد پرواز با دوربین اول شخص و در مورد "هوشمند" صحبت نمی کنیم. حالت های پرواز با استفاده از قطب نما و GPS.) راه حل این مشکل را می توان تا حدی با پیچ های جلو یا پرتوهای رنگ متفاوت، نوعی توپ در جلو یا LED های رنگی متفاوت برطرف کرد. اما همه اینها وقتی که pepelats به سرعت به یک نقطه در بالای افق تبدیل می شود بی فایده است.

ما روی یک قاب کوادکوپتر به شکل "X" پرواز خواهیم کرد زیرا ظاهر آن را بیشتر دوست دارم. هر طرحی مزایا و هدف خاص خود را دارد. علاوه بر کوادکوپتر، مولتی کوپترهای دیگری نیز وجود دارد. حتی اگر گزینه های عجیب و غریب را در نظر نگیرید، هنوز یک دسته کامل از آنها وجود دارد!



بیایید بفهمیم که کوادکوپتر ما در داخل چگونه ساختار دارد و کنترلر پروازی که قصد داریم برنامه ریزی کنیم باید چه کار کند.




زاویه زمین، رول و انحراف (پیچ، رول، انحراف)- زوایایی که مرسوم است جهت کوادکوپتر را در فضا تعیین و تنظیم کنید.


گاه از کلمه «زاویه» حذف می شود و به سادگی می گویند: قیر، رول، انحراف. اما طبق ویکی پدیا این کاملاً دقیق نیست. پرواز کوادکوپتر در جهت مورد نیاز با تغییر این سه زاویه حاصل می شود. به عنوان مثال، برای پرواز به جلو، به دلیل اینکه موتورهای عقب کمی قوی تر از موتورهای جلو می چرخند، کوادکوپتر باید کج شود:

کوادکوپتر گازی- میانگین حسابی بین سرعت چرخش همه موتورها. هر چه گاز بیشتر باشد، تراست کل موتورها بیشتر می شود، کوادکوپتر را بیشتر می کشند. بالا(به جلو نروید!!! "دمپایی روی زمین" در اینجا به معنای سریعترین صعود است). معمولاً به صورت درصد اندازه گیری می شود: 0٪ - موتورها متوقف شده اند، 100٪ - چرخش با حداکثر سرعت. گاز معلق است- حداقل سطح گازی که لازم است تا کوادکوپتر ارتفاع را از دست ندهد.

دریچه گاز، پیچ، رول، انحراف - اگر بتوانید این چهار پارامتر را کنترل کنید، می توانید کوادکوپتر را کنترل کنید. گاهی اوقات به آنها کانال های کنترل نیز می گویند. اگر ریموت کنترل دو کاناله خریداری کرده باشید، قادر به کنترل کوادکوپتر نخواهید بود. سه کانال برای هلیکوپترهای کوچک مناسب تر است: شما می توانید بدون کنترل رول پرواز کنید، اما در یک کوادکوپتر راحت نیست. اگر می خواهید حالت پرواز را تغییر دهید، باید برای یک کنترل از راه دور پنج کانال هزینه کنید. اگر می‌خواهید شیب و حرکت دوربین روی برد را کنترل کنید، دو کانال دیگر وجود دارد، اگرچه متخصصان از یک کنترل از راه دور جداگانه برای این کار استفاده می‌کنند.

حالت های پرواز زیادی وجود دارد. GPS، فشارسنج و مسافت یاب استفاده می شود. اما ما می خواهیم یک پایه را پیاده سازی کنیم - حالت تثبیت ( خنجر زدن، تثبیت کردن، در یک "خرد") پرواز کنید)، که در آن کوادکوپتر بدون توجه به عوامل خارجی، زوایایی را که از طریق کنترل از راه دور به آن داده می شود، حفظ می کند. در این حالت در صورت عدم وجود باد، کوادکوپتر می تواند تقریبا در جای خود آویزان شود. خلبان باید باد را جبران کند.

جهت چرخش پیچ ها به طور تصادفی انتخاب نمی شود. اگر همه موتورها در یک جهت می چرخیدند، کوادکوپتر به دلیل گشتاورهای ایجاد شده در جهت مخالف می چرخید. بنابراین، یک جفت موتور مخالف همیشه در یک جهت و جفت دیگر در جهت دیگر می چرخند. از اثر وقوع گشتاورهای چرخشی برای تغییر زاویه انحراف استفاده می شود: یک جفت موتور کمی سریعتر از دیگری شروع به چرخش می کند و اکنون کوادکوپتر به آرامی به سمت ما می چرخد ​​(چه وحشتناک):



  • LFW - چرخش در جهت عقربه های ساعت جلو چپ (جلو چپ، چرخش در جهت عقربه های ساعت)
  • RFC - چرخش خلاف جهت عقربه‌های ساعت جلوی راست (جلو راست، چرخش خلاف جهت عقربه‌های ساعت)
  • LBC - چرخش در خلاف جهت عقربه های ساعت به عقب (چپ عقب، چرخش خلاف جهت عقربه های ساعت)
  • RBW - چرخش در جهت عقربه های ساعت به عقب (راست عقب، چرخش در جهت عقربه های ساعت)

سرعت چرخش موتورها را کنترل می کند کنترلر پرواز (کنترل کننده، مغزها). معمولاً این یک برد یا جعبه کوچک با ورودی و خروجی های زیاد است. تعداد زیادی کنترلر مختلف با مجموعه ای از قابلیت های مختلف، سیستم عامل های مختلف و وظایف مختلف وجود دارد. در اینجا فقط چند مورد است:




وظیفه کلی کنترلر پرواز انجام چرخه کنترل چندین ده بار در ثانیه است که شامل: خواندن قرائت سنسور، خواندن کانال های کنترل، پردازش اطلاعات و صدور سیگنال های کنترلی به موتورها به منظور اجرای دستورات خلبان است. این چیزی است که ما قصد داریم برنامه ریزی کنیم.

انواع مختلفی از سنسورها وجود دارد که می توان از آنها استفاده کرد. ما از آنهایی که قبلاً تقریباً اجباری شده اند در همه کوادکوپترها استفاده خواهیم کرد ژیروسکوپ سه محوره و شتاب سنج سه محوره. شتاب سنج شتاب را اندازه گیری می کند و ژیروسکوپ سرعت زاویه ای را اندازه گیری می کند. با تشکر از آنها، کنترلر پرواز زوایای زمین فعلی، رول و انحراف را می داند. این سنسورها را می توان در کنترلر پرواز یا خارجی تعبیه کرد. فرآیند محاسبه سه زاویه بر اساس خوانش سنسور موضوعی برای مقاله جداگانه است. اما ما نیازی به دانستن این موضوع در اینجا نداریم: MPU-6050 همه چیز را برای ما انجام خواهد داد. این یک برد کوچک است که محاسبات و فیلترهای لازم را در داخل انجام می دهد و با استفاده از پروتکل i2c زوایای تقریباً آماده تولید می کند. تنها کاری که باید انجام دهیم این است که آنها را بشماریم، آنها را با بقیه داده ها پردازش کنیم و سیگنال های کنترلی را به موتورها صادر کنیم.

موتورهای مولتی کوپتر جریان های زیادی را مصرف می کنند، بنابراین کنترلر پرواز آنها را نه به طور مستقیم، بلکه از طریق درایورهای سخت افزاری خاص به نام کنترل می کند. کنترل کننده های سرعت (ESC، رگولاتور، eska). این رگولاتورها توسط باتری اصلی روی برد تغذیه می شوند، سیگنال کنترل از کنترلر دریافت می شود و در خروجی دارای سه سیم (A, B, C) هستند که مستقیماً به موتورها می روند (هر موتور رگولاتور مخصوص به خود را دارد. !)




"پروتکل" ارتباط بین رگولاتور و موتور برای ما به اندازه "پروتکل" ارتباط بین کنترلر پرواز و رگولاتور برای ما مهم نیست، زیرا باید رگولاتور را از طریق کنترلر به صورت برنامه ای کنترل کنیم. رگولاتورهایی وجود دارند که از طریق i2c کنترل می شوند، اما رایج ترین آنها توسط یک سیگنال موج مربعی با حداقل 0 ولت و حداکثر 3-5 ولت کنترل می شوند. PWMیا PWMو برخی استدلال می کنند که صحیح تر است - PPM. جزئیات بیشتر، برای مثال).

"پروتکل" یک کلمه قوی است: برای فرمان دادن به موتور برای چرخش با حداکثر سرعت، کنترل کننده باید پالس هایی به مدت 2 میلی ثانیه ارسال کند که با یک صفر منطقی 10 تا 20 میلی ثانیه طول می کشد. مدت زمان پالس 1 میلی ثانیه مربوط به توقف موتور، 1.1 میلی ثانیه - 10 درصد حداکثر سرعت، 1.2 میلی ثانیه - 20 درصد و غیره است. در عمل، مدت زمان صفر هیچ نقشی ندارد، فقط مدت زمان خود پالس مهم است.

با وجود تمام سادگی ظاهری، در اینجا کمین وجود دارد: کنترلرهای پرواز با تنظیمات مختلف متفاوت هستند، تنظیم کننده ها متفاوت هستند، و حداقل (1 میلی ثانیه) و حداکثر (2 میلی ثانیه) جهانی نیستند. بسته به عوامل بسیاری، محدوده 1-2 ms ممکن است در واقع 1.1 - 1.9 ms باشد. برای اینکه تنظیم کننده و کنترل کننده کاملاً به یک زبان صحبت کنند، رویه ای وجود دارد کالیبراسیون تنظیم کننده. در طی این روش، محدوده کنترل ها تغییر می کند و با محدوده کنترل کننده برابر می شود. این روش در برنامه هر تنظیم کننده تعبیه شده است و شامل چندین مرحله ساده است (مراحل ممکن است بسته به سازنده متفاوت باشد - دستورالعمل ها را بخوانید!):

  • منبع تغذیه رگولاتور را خاموش کنید.
  • پروانه را از موتور خارج کنید.
  • سیگنالی مطابق با حداکثر سرعت چرخش به ورودی کنترلر اعمال کنید.
  • برق را به رگولاتور اعمال کنید. موتور باید بدون کمک خارجی بی حرکت بماند.
  • سیگنالی مطابق با حداقل سرعت چرخش به ورودی کنترلر اعمال کنید.
  • 1-2 ثانیه مکث کنید، منتظر صدای جیر جیر باشید.
  • منبع تغذیه رگولاتور را خاموش کنید.

پس از این، مرزهای بازه مربوطه به کنترلر وارد می شود. هنگام تلاش برای بلند شدن با رگولاتورهای کالیبره نشده، عواقب آن ممکن است غیرمنتظره باشد: از تکان ناگهانی کوادکوپتر به نزدیکترین درخت تا بی حرکتی کامل موتورها در هر مقدار دریچه گاز.

PWM دقیقاً از همین اصل استفاده می کند گیرنده آنبورد. این دستگاه کوچکی است که سیگنال های رادیویی کنترل را از زمین دریافت کرده و به کنترلر پرواز ارسال می کند. اغلب، کنترلر پرواز برای هر کانال کنترل (دریچه گاز، زمین، رول، و غیره) ورودی خاص خود را دارد که PWM به آن عرضه می شود. منطق تعامل ساده است: یک فرمان، به عنوان مثال، "70% دریچه گاز"، به طور مداوم از زمین به گیرنده می رود، جایی که به PWM تبدیل می شود و از طریق یک سیم جداگانه به کنترل کننده پرواز ارسال می شود. همینطور با زمین، رول، انحراف.

از آنجایی که گیرنده و کنترلر رابطه PWM دوستانه خود را دارند، باید کالیبره شوند: کنترل‌های از راه دور با گیرنده‌ها با محدوده عملکرد خود متفاوت هستند. کنترل کننده باید بتواند خود را تطبیق دهد. روش کالیبراسیون رادیوییبرخلاف کالیبراسیون رگولاتورها، باید خودمان آن را به عنوان بخشی از برنامه پرواز ایجاد کنیم. طرح کلی کالیبراسیون به شرح زیر است:

  • پروانه ها را از موتورها جدا کنید تا در صورت امکان.
  • به نحوی کنترلر را در حالت کالیبراسیون رادیویی قرار دهید.
  • کنترلر کالیبراسیون رادیویی را برای چند ده ثانیه شروع می کند.
  • در زمان تعیین شده، تمام میله های کنترل از راه دور را در همه جهات حرکت دهید تا متوقف شوند.
  • این کنترلر حداکثر و حداقل ها را برای تمام کانال های کنترلی برای قرن ها در حافظه داخلی ذخیره می کند.
بنابراین: در طول کالیبراسیون رادیویی، کنترلر پرواز محدوده گیرنده را برای همه کانال های کنترل به خاطر می آورد. در طول کالیبراسیون ESC، محدوده کنترلر پرواز در تمام ESC ها وارد می شود.

علاوه بر برنامه کنترلر پرواز، یک برنامه دیگر مورد نیاز است: رابط راه اندازی کنترلر پرواز. اغلب، این یک برنامه رایانه شخصی است که از طریق USB به کنترلر پرواز متصل می شود و به کاربر اجازه می دهد برنامه پرواز را پیکربندی و بررسی کند، به عنوان مثال: اجرای کالیبراسیون رادیویی، پیکربندی پارامترهای تثبیت، بررسی عملکرد سنسورها، تنظیم مسیر پرواز در نقشه، تعیین رفتار مولتی کوپتر در هنگام از دست رفتن سیگنال و موارد دیگر. رابط پیکربندی خود را در C++ و Qt در قالب یک ابزار کنسول می نویسیم. اگر به آینده نگاه کنید اینجاست:




هیچکس از حوادث مصون نیست. حتی پروانه‌های پلاستیکی ده اینچی روی موتورهای کوچک می‌توانند کبودی‌های خونی روی پوست باقی بگذارند که برای یک هفته دیگر آسیب خواهد دید (تست شخصی). اگر در حالی که کوادکوپتر را روشن حمل می کنید، چوب گاز روی ریموت کنترل را درگیر کنید، می توانید آرایش و مدل موی جدیدی به خود بدهید. بنابراین، کنترلر پرواز باید حداقل ایمنی را فراهم کند: مکانیسم مسلح / خلع سلاح. حالت "خلع سلاح" کوادکوپتر به این معنی است که موتورها خاموش هستند و حتی یک فرمان کامل دریچه گاز از ریموت کنترل هیچ تاثیری ندارد، اگرچه برق تامین می شود. حالت "مسلح" کوادکوپتر به این معنی است که دستورات از راه دور توسط کنترلر پرواز انجام می شود. در این حالت کوادکوپترها بلند می شوند، پرواز می کنند و فرود می آیند. کوادکوپتر روشن می شود و باید فوراً به حالت خلع سلاح شود در صورتی که خلبان بی توجه آن را روشن کند زمانی که میله دریچه گاز روی کنترل از راه دور صفر نیست. برای قرار دادن هلی کوپتر در حالت "مسلح"، خلبان باید برخی از ژست های از پیش توافق شده را با چوب های کنترل از راه دور انجام دهد. اغلب این حرکت به این صورت است که چوب چپ را در گوشه پایین سمت راست نگه دارید (دریچه گاز = 0٪، انحراف = 100٪) برای چند ثانیه. پس از این، کنترلر پرواز حداقل یک خودآزمایی حداقلی انجام می دهد و در صورت موفقیت آمیز بودن، خود را مسلح می کند"(آماده برای پرواز!) با یک حرکت دیگر (دریچه گاز = 0٪، یاو = 0٪) کوادکوپتر" خلع سلاح می شودیکی دیگر از اقدامات امنیتی خوب این است خلع سلاح خودکار، اگر گاز برای 2-3 ثانیه صفر بود.

در مورد موتور، باتری، رگولاتور، پروانه

انتخاب اجزای یک مولتیکوپتر موضوعی برای یک سری مقالات است. اگر قصد دارید اولین کوادکوپتر خود را بسازید، آنچه را که به آن نیاز دارید را فرموله کنید و از مشاوره افراد با تجربه استفاده کنید یا لیستی از قطعاتی که شخص دیگری گردآوری کرده و با موفقیت روی آن پرواز کرده است را تهیه کنید.

با این حال، برای درک کلی، دانستن نکات اصلی مفید است.

باتری ها


در میان آماتورها و متخصصان سیستم‌های چند روتوری، باتری‌های لیتیوم پلیمری رایج‌ترین منبع تغذیه برای الکترونیک و موتورهای روی برد هستند. آنها با ظرفیت، ولتاژ و حداکثر جریان خروجی متمایز می شوند. ظرفیت، طبق معمول، با آمپر ساعت یا میلی آمپر ساعت اندازه گیری می شود. ولتاژ با تعداد "سلول" باتری اندازه گیری می شود. یک "قوطی" به طور متوسط ​​3.7 ولت است. یک "قوطی" با شارژ کامل 4.2 ولت است. رایج ترین باتری ها آنهایی هستند که سه تا شش سلول دارند. حداکثر جریان خروجی بر حسب آمپر اندازه گیری می شود و به عنوان مثال به صورت زیر مشخص می شود: 25 درجه سانتیگراد. C ظرفیت باتری است، 25 ضریب است. اگر ظرفیت 5 آمپر باشد، چنین باتری می تواند 25 * 5 = 125 آمپر را ارائه دهد. البته، بهتر است پارامتر خروجی فعلی را با ذخیره بگیرید، اما، اساسا، هر چه بزرگتر باشد، باتری گران تر است. مثال برچسب زدن: 25C 3S 4500mah.

هر بانک یک باتری جداگانه است. همه آنها به صورت سری لحیم شده اند. برای شارژ یکنواخت تمامی بانک ها یک کانکتور بالانس با دسترسی به هر بانک به صورت جداگانه در نظر گرفته شده است و از شارژرهای مخصوص استفاده می شود.

موتورها، پروانه ها، رگلاتورها


پارامتر اصلی موتور براشلس kv آن است. این تعداد دور در دقیقه برای هر ولت ولتاژ اعمال شده است. رایج ترین موتورها با kv از 300 تا 1100 هستند. Kv نزدیک به 1000 معمولاً برای کوادکوپترهای کوچک (1-2 کیلوگرم به اضافه 500 گرم بار) انتخاب می شود و آنها به پروانه های پلاستیکی تا قطر 12 اینچ مجهز هستند. مولتی کوپترهای بزرگ (برای بلند کردن تجهیزات خوب و سنگین عکس-فیلم) یا هواپیماهای بلند پرواز (برای ثبت زمان پرواز) معمولاً دارای موتورهایی با kv پایین (300-500) و پروانه های کربنی عظیم (قطر 15 تا 20 اینچ) هستند. Kv تنها پارامتر مهم موتور نیست: شما اغلب می توانید جداول کامل وابستگی قدرت موتور و رانش به ولتاژ عرضه شده و نوع پروانه نصب شده را پیدا کنید. علاوه بر این، هر موتور برای محدوده ولتاژ خود (تعداد سلول های باتری) و حداکثر جریان خود طراحی شده است. اگر سازنده 3-4S نوشته است، نباید آن را با باتری های 5S استفاده کنید. همین امر در مورد رگولاتورها نیز صدق می کند.

اگر موتور برای جریان حداکثر 30 آمپر طراحی شده باشد، رگولاتور باید برای جریان حداکثر 30 + 10 آمپر طراحی شود تا از گرمای بیش از حد جلوگیری شود. گاورنرهای بی کیفیت یا نامناسب می توانند باعث به اصطلاح "لغزش های همگام سازی" شوند و موتور را در حین پرواز متوقف کنند و شما یک اصطلاح مولتی روتور دیگر را تشخیص دهید: " سیاره را گرفتیکی دیگر از نکات مهم، ضخامت و کیفیت سیم ها است، محاسبه نادرست سطح مقطع سیم یا اتصال بد می تواند منجر به آتش سوزی در هوا شود.

همانطور که می بینید، تفاوت های ظریف زیادی وجود دارد. من حتی نیمی از آنها را لیست نکرده ام، بنابراین انتخاب اجزای اولین مولتی کوپتر خود بسیار دشوار است.

ریاضیات تثبیت، کنترل کننده های PID (PID)


اگر تصمیم دارید وارد مولتی کوپتر شوید، دیر یا زود باید با تنظیم کنترلر PID دست و پنجه نرم کنید، زیرا این دستگاه ریاضی تقریباً در تمام کارهای تثبیت کننده استفاده می شود: تثبیت زوایای یک کوادکوپتر در هوا، پرواز و نگه داشتن موقعیت. با استفاده از GPS، نگه داشتن ارتفاع با استفاده از فشارسنج، مکانیسم های بدون براش تثبیت دوربین فیلمبرداری در پرواز (گیمبال دوربین).

شما یک گیمبال دوربین دو محوره می‌خرید، مثلاً یک گوپرو را آنجا می‌گذارید، آن را روشن می‌کنید و به جای تثبیت، تشنج، لرزش و انقباض می‌گیرید، البته همه سنسورها کالیبره شده‌اند و مشکلات مکانیکی برطرف می‌شود. دلیل آن پارامترهای نادرست کنترلرهای PID است.

شما یک مولتیکوپتر جمع می کنید، سنسورها، رگولاتورها، رادیو را کالیبره می کنید، همه چیز را چک می کنید، سعی می کنید بلند شوید و آنقدر در هوا کسل کننده است که حتی یک نسیم ملایم آن را برمی گرداند. یا برعکس: او آنقدر تیز است که ناگهان بلند می شود و بدون اجازه یک سالتو سه گانه انجام می دهد. دلیل هنوز یکسان است: پارامترهای کنترل کننده های PID.

برای بسیاری از دستگاه‌هایی که از کنترل‌کننده‌های PID استفاده می‌کنند، دستورالعمل‌هایی برای راه‌اندازی، و حتی چندین دستورالعمل علاوه بر دستورالعمل‌های ویدیویی متعدد از خود کاربران وجود دارد. اما برای سهولت در پیمایش این تنوع، درک نحوه عملکرد این تنظیم کننده ها در داخل مفید است. در ضمن قراره سیستم تثبیت کوادکوپتر خودمون رو بنویسیم! من پیشنهاد می کنم "دوباره اختراع" و "روی انگشتان" برای درکفرمول کنترل کننده PID برای کسانی که زبان ریاضی خشک را ترجیح می دهند، ویکی پدیا را توصیه می کنم، زیرا... به زبان روسی این مطالب هنوز با جزئیات ارائه نشده است.

ما یک کوادکوپتر را در فضای دو بعدی در نظر خواهیم گرفت، جایی که فقط یک زاویه دارد - زاویه رول، و دو موتور: چپ و راست.




کنترلر پرواز به طور مداوم دستورات را از زمین دریافت می کند: "30 درجه بغلتید" ، "10 درجه بچرخید" ، "0 درجه بچرخید (افق را نگه دارید)"؛ وظیفه آن این است که با در نظر گرفتن باد، توزیع ناهموار وزن کوادکوپتر، سایش ناهموار موتورها، اینرسی کوادکوپتر و غیره، آنها را با حداکثر سرعت و دقت با استفاده از موتورها انجام دهد. بنابراین، فلایت کنترل باید به طور مداوم مشکل سرعت چرخش را برای هر موتور با در نظر گرفتن مقدار فعلی زاویه بانک و مقدار مورد نیاز حل کند. به طور مستمر، البته، یک کلمه قوی است. همه چیز به توانایی های محاسباتی سخت افزار خاص بستگی دارد. در Adruino، می توان یک تکرار از چرخه پردازش و کنترل را در 10 میلی ثانیه جا داد. یعنی هر 10 میلی ثانیه یک بار زوایای کوادکوپتر خوانده می شود و بر اساس آنها سیگنال های کنترلی به موتورها ارسال می شود. این 10 میلی ثانیه نامیده می شود دوره تنظیم. واضح است که هرچه کوچکتر باشد، تنظیم بیشتر و دقیقتر اتفاق می افتد.

سطح گاز از گیرنده به کنترل کننده جریان دارد. بیایید آن را نشان دهیم. یادآوری می کنم که این میانگین حسابی بین سرعت چرخش همه موتورها است که به صورت درصدی از حداکثر سرعت چرخش بیان می شود. اگر و سرعت چرخش موتورهای چپ و راست هستند، پس:




پاسخ کوادکوپتر (نیروی) کجاست که به دلیل اینکه موتور سمت چپ سریعتر از گاز می چرخد ​​و موتور سمت راست به همان اندازه کندتر می چرخد، گشتاور ایجاد می کند. همچنین می تواند مقادیر منفی بگیرد، سپس موتور مناسب سریعتر می چرخد. اگر یاد بگیریم که این مقدار را در هر تکرار چرخه پردازش محاسبه کنیم، آنگاه قادر خواهیم بود کوادکوپتر را کنترل کنیم. واضح است که حداقل باید به زاویه رول فعلی () و زاویه رول مورد نظر () که از صفحه کنترل می آید بستگی داشته باشد.

بیایید یک موقعیت را تصور کنیم: دستور "keep the horizon" (= 0) دریافت می شود و کوادکوپتر یک رول در سمت چپ دارد:




- تفاوت (خطا) بین و که کنترل کننده به دنبال به حداقل رساندن آن است.

هر چه تفاوت بین زاویه رول مورد نظر و زاویه فعلی بیشتر باشد، واکنش باید قوی تر باشد، موتور سمت چپ باید سریعتر نسبت به سمت راست بچرخد. اگر این را با استفاده از نماد خود بنویسیم:



در اینجا P ضریب تناسب است. هر چه بزرگتر باشد، واکنش قوی تر خواهد بود، کوادکوپتر به انحراف از زاویه رول مورد نیاز واکنش تیزتری نشان می دهد. این فرمول بصری و ساده کار را توصیف می کند کنترل کننده تناسبی. نکته ساده است: هر چه کوادکوپتر بیشتر از موقعیت مورد نیاز منحرف شود، باید تلاش بیشتری برای بازگرداندن آن انجام دهید. متأسفانه، این فرمول باید پیچیده باشد. دلیل اصلی بیش از حد است.

در چند ده میلی ثانیه (چندین تکرار از چرخه پردازش)، تحت تأثیر کنترل کننده تناسبی، کوادکوپتر به موقعیت مورد نیاز (در این مورد افقی) باز می گردد. در تمام این مدت، خطا و تلاش همان علامت را خواهد داشت، اگرچه از نظر بزرگی کمتر و کمتر می شود. با به دست آوردن سرعت چرخش معین (سرعت زاویه ای)، کوادکوپتر به سادگی به سمت دیگر غلت می خورد، زیرا هیچ کس آن را در موقعیت مورد نیاز متوقف نمی کند. مانند فنری است که همیشه می خواهد به حالت اولیه خود بازگردد، اما اگر آن را به عقب بکشید و رها کنید، نوسان می کند تا زمانی که اصطکاک تمام شود. البته کوادکوپتر نیز تحت تاثیر اصطکاک قرار خواهد گرفت، اما تمرین نشان می دهد که کافی نیست.

به همین دلیل، باید یک عبارت دیگر به کنترلر پروپشنال اضافه شود، که باعث کند شدن چرخش کوادکوپتر و جلوگیری از بیش از حد (غلتش در جهت مخالف) می شود - نوعی تقلید از اصطکاک در یک محیط چسبناک: هر چه سریعتر کوادکوپتر می چرخد، باید سخت تر تلاش کنید تا آن را متوقف کنید، البته در محدوده معقول. سرعت چرخش (نرخ تغییر خطا) را به صورت زیر نشان می دهیم، سپس:



که در آن D یک ضریب قابل تنظیم است: هر چه بزرگتر باشد، نیروی توقف قوی تر است. از یک درس فیزیک مدرسه، خاطرات مبهمی ظاهر می شود که نرخ تغییر هر کمیت مشتق این کمیت نسبت به زمان است:

.

و اکنون کنترل کننده تناسبی به یک تناسبی-دیفرانسیل تبدیل می شود (ترم متناسب و دیفرانسیل):

.

محاسبه خطا آسان است، زیرا در هر تکرار می دانیم و ; P و D پارامترهایی هستند که می توانند قبل از راه اندازی پیکربندی شوند. برای محاسبه مشتق (نرخ تغییر)، باید مقدار قبلی را ذخیره کرد، مقدار فعلی را دانست و زمان بین اندازه‌گیری‌ها را دانست (دوره کنترل). و اینجاست - فیزیک کلاس ششم مدرسه (سرعت = مسافت / زمان):

.

- دوره تنظیم؛ - مقدار خطا از تکرار قبلی چرخه تنظیم. به هر حال، این فرمول ساده ترین روش تمایز عددی است و برای ما در اینجا کاملاً مناسب است.

اکنون ما یک کنترلر دیفرانسیل تناسبی در یک دوکوپتر تخت داریم، اما هنوز یک مشکل دیگر وجود دارد. اجازه دهید لبه سمت چپ کمی بیشتر از سمت راست وزن داشته باشد، یا همان چیزی است که موتور سمت چپ کمی بدتر از سمت راست کار می کند. کوادکوپتر کمی به سمت چپ متمایل است و به عقب برنمی‌گردد: عدد دیفرانسیل صفر است و جمله تناسبی، اگرچه مقدار مثبت می‌گیرد، برای بازگشت کوادکوپتر به حالت افقی کافی نیست، زیرا لبه سمت چپ وزن کمی دارد. بیشتر از حق در نتیجه کوادکوپتر همیشه به سمت چپ کشیده می شود.

مکانیزمی برای نظارت بر این گونه انحرافات و اصلاح آنها لازم است. ویژگی بارز چنین خطاهایی این است که در طول زمان خود را اصلاح می کنند. اصطلاح انتگرال به کمک می آید. مجموع تمام خطاها را در تمام تکرارهای حلقه پردازش ذخیره می کند. این چگونه کمک خواهد کرد؟ اگر ترم تناسبی برای تصحیح یک خطای کوچک کافی نباشد، اما همچنان وجود داشته باشد، به تدریج، با گذشت زمان، عبارت انتگرال قدرت می گیرد و پاسخ را افزایش می دهد و کوادکوپتر زاویه رول مورد نیاز را می گیرد.

در اینجا یک نکته ظریف وجود دارد. فرض کنید 1 درجه است، چرخه کنترل 0.1 ثانیه است. سپس در یک ثانیه مجموع خطاها مقدار 10 درجه را می گیرد. و اگر چرخه پردازش 0.01 ثانیه باشد، مقدار آن تا 100 درجه افزایش می یابد. به طوری که در همان زمان، عبارت انتگرال برای دوره های مختلف تنظیم مقدار یکسانی به دست آورد، مقدار حاصل را در خود دوره تنظیم ضرب می کنیم. به راحتی می توان محاسبه کرد که در هر دو مورد مجموع 1 درجه از مثال به دست می آید. در اینجا آن است - عبارت انتگرال (در حال حاضر بدون ضریب قابل تنظیم):

.

این فرمول چیزی نیست جز یک انتگرال عددی در طول زمان یک تابع در بازه زمانی صفر تا لحظه فعلی. به همین دلیل است که این اصطلاح انتگرال نامیده می شود:

,

جایی که T لحظه جاری در زمان است.
زمان آن فرا رسیده است که فرمول نهایی کنترل کننده انتگرال-متناسب را بنویسیم:

,

کجا یکی از پارامترهای قابل تنظیم است که اکنون سه مورد از آن وجود دارد: . این فرمول برای استفاده از کد برنامه راحت است، اما در اینجا فرمولی است که در کتاب های درسی آورده شده است:

.

انواع مختلفی از آن وجود دارد، به عنوان مثال، می توانید مدول عبارت انتگرال را محدود کنید تا از آستانه مجاز خاصی تجاوز نکند (ما این کار را انجام خواهیم داد).

تمرین

خوب، اکنون زمان تمرین در انتخاب ضرایب است. به خوانندگان یک صفحه جاوا اسکریپت با یک کوادکوپتر مجازی ارائه می شود که قبلاً در تصاویر دیده اند: انتخاب پارامترهای کنترل کننده PID برای کوادکوپتر(JSFiddle). در اولین شروع، بیش از حد قابل مشاهده است - نوسانات در اطراف موقعیت مورد نیاز. هنگامی که نوسانات متوقف می شوند، می توانید این اثر را مشاهده کنید که ضریب تناسبی به دلیل کوادکوپتر "نامتقارن" (تنظیم شده توسط چک باکس "Asymmetry") نمی تواند با خطا مقابله کند. پارامترهای موجود برای پیکربندی عبارتند از P، I، D. اکنون می‌دانید که با آنها چه کار کنید. "اسکرول" زیر کوادکوپتر را می توان با مقدار رول مورد نیاز کنترل کرد. "فاصله (ms):" - فاصله تنظیم. کاهش آن تقلب است، اما دیدن اینکه چگونه بر کیفیت تثبیت تاثیر می گذارد بسیار مفید است.

برای دوستداران ریاضیات "خالص"، ما می توانیم ارائه دهیم کنترل کننده PID انتزاعی را پیکربندی کنید

پارامترهای وارد شده به طور خودکار اعمال نمی شوند: باید روی "اعمال" کلیک کنید. چند نکته کوچک: اگر به نظرتان می رسد که کوادکوپتر خیلی کند است و نمی تواند به کنترل پاسخ دهد، می توانید P را افزایش دهید، اما مقدار P خیلی بزرگ ممکن است منجر به overshoot شود. پارامتر D به مقابله با بیش از حد کمک می کند، اما مقادیر بیش از حد بزرگ منجر به نوسانات مکرر یا دوباره به بیش از حد می شود. پارامتر I معمولاً 10 تا 100 برابر کمتر از پارامتر P است زیرا قدرت آن در تجمع در طول زمان نهفته است، نه در واکنش سریع.

تنظیم دستی پارامترهای PID نیاز به تمرین دارد. روش های تحلیلی برای محاسبه آنها وجود دارد، اما نیاز به آماده سازی خوب و دانش دقیق بسیاری از پارامترهای سیستم خاص در حال سفارشی سازی دارد. به عنوان حد وسط بین انتخاب دستی و محاسبه تحلیلی، طیف گسترده ای از روش های تجربی توسط محققان مختلف پیشنهاد شده است.

در کوادکوپتر دو بعدی ما، تنها یک زاویه تغییر می کند - زاویه رول. در تنظیم یک کوادکوپتر سه بعدی، سه کنترلر PID مستقل برای هر یک از زوایا مورد نیاز است و کنترل یک موتور خاص، مجموع تلاش‌های تمام کنترل‌کننده‌ها خواهد بود.

نتیجه گیری قسمت اول

در این مقاله با مفاهیم اولیه کوادکوپتر و اصل پرواز، پیچ، رول، انحراف، دریچه گاز، شناور دریچه گاز، حالت پرواز پایدار، کنترلر پرواز، ژیروسکوپ، شتاب سنج، کنترل کننده سرعت، PWM، کالیبراسیون کنترلر، کالیبراسیون رادیویی، گیرنده داخلی، رابط برای راه اندازی کنترلر پرواز، حالت های مسلح/خلع سلاح، خلع سلاح خودکار.

پس از آن فرمول را دوباره اختراع کردیم کنترل کننده PIDکمی لمس کردن تمایز و ادغام عددی، و روش سخت پیکربندی پارامترها را تجربه کرد پ، من، دیبر کوادکوپتر مجازی .

اکنون، اگر در برنامه نویسی شمشیر نوری مهارت دارید، می توانید برنامه تثبیت کننده کوادکوپتر خود را شروع کنید یا بهتر است با ایده های تازه به پروژه های منبع باز موجود بپیوندید. خوب، یکی دو هفته دیگر، زمانی که قدرت و زمان لازم برای مطابقت با کیفیت را داشته باشم، داستان را ادامه خواهم داد که چگونه همه چیز برنامه ریزی شده، آزمایش شده، سقوط کرده، انگشتانم را بریده و کاملاً در جهت نامعلومی پرواز کرده است. اگر واقعاً می خواهید ادامه دهید، می توانید در اینجا یا به عنوان مثال در Vkontakte با من تماس بگیرید: این انگیزه کمی می دهد.

در خاتمه این قسمت، فقط باید به شخصی اشاره کنم که در انتخاب قطعات و راه اندازی پیچیده ترین (اولین!) کوادکوپتر روی فریمور MegapirateNG به من کمک کرد و با حوصله به صدها سوال در مورد این مفاهیم بسیار ابتدایی پاسخ داد: متشکرم! :-)

به عنوان پاداش برای کسانی که توانستند همه این ورق را هدر دهند، من ویدیوی کوچک وعده داده شده را از نحوه پرواز کوادکوپتر ما با کنترلرهای PID "اختراع شده" ما در برنامه ما برای آردوینو مگا 2560 ارسال می کنم:



البته فاقد جی پی اس است، همانطور که در محصولات تجاری و تولید انبوه، کمی ثبات ندارد، اما OUR است و تا آخرین فاکتور ضریب انتگرال را از درون و بیرون می دانیم! و واقعاً جالب است که چنین فناوری‌هایی امروزه در دسترس ما هستند.

توجه، مقاله قدیمی است، اما همچنان می توان از آن برای مقاصد اطلاعاتی استفاده کرد
همونطور که قول داده بودم به محض پرواز یه پست کامل در مورد مونتاژ یونیت پروازم مینویسم. مطمئناً خیلی ها مدت هاست که دیده اند که چگونه یک کارمند اداری "معمولی" این را در 2 ساعت مونتاژ می کند. من فوراً متذکر می شوم که من یک کارمند اداری "معمولی" نیستم، بنابراین هنوز خیلی خلبان نیستم، اما مهم است که کوادکوپتر پرواز می کند و به اندازه کافی به کنترل ها پاسخ می دهد. اول و مهمتر از همه، اگر تصمیم به جمع آوری دارید، پول پس انداز نکنید و فکر نکنید که از کسانی که قبلاً پرواز می کنند باهوش تر هستید، همچنین به خاطر داشته باشید که تئوری تا حدودی با عمل در تضاد است.
تعداد زیادی سفت‌افزار، کنترل‌کننده‌های آماده، گزینه‌های سنسور، موتورها و غیره وجود دارد. و غیره - گزینه های زیادی برای انتخاب وجود دارد، اما در مقاله من فقط بر روی یک گزینه تمرکز می کنم، مبتنی بر آردوینو مگا، سیستم عامل MegaPirate و سنسورهای نسبتا ارزان.

نتیجه

برای اینکه شما را عذاب ندهد، %username%, اینطوری بدون تنظیمات خاص، کالیبراسیون و تعادل در دستان ناکارآمد پرواز می کند:

حالا برای این چه نیازی داریم...

ادامه
PS: امیدوارم افرادی که در تاپیک RC هستند من را به خاطر نادرستی ها ببخشند و در صورت لزوم اصلاح کنند.



 


خواندن:



نحوه پارتیشن بندی هارد دیسک

نحوه پارتیشن بندی هارد دیسک

نحوه تقسیم هارد به دو پارتیشن بدون از دست دادن اطلاعات به شرطی که یک پارتیشن با حرف (C:) به حجم اصلی تبدیل شود، در...

هارد دیسک را به پارتیشن تقسیم می کنیم

هارد دیسک را به پارتیشن تقسیم می کنیم

هنگام نصب ویندوز، هارد دیسک به طور سنتی به حداقل دو پارتیشن تقسیم می شود - یک پارتیشن سیستم کوچکتر با حرف C و یک پارتیشن کاربر بزرگتر...

وقتی کامپیوتر روشن می شود بوق می دهد

وقتی کامپیوتر روشن می شود بوق می دهد

تاریخ انتشار: 1390/02/01 مواقعی وجود دارد که کامپیوتر روشن نمی شود، اما شروع به بیپ می کند. اگر گوش کنید، مشخص می شود که ...

تغییر صحیح پسوند فایل در ویندوز نحوه تغییر پسوند آرشیو

تغییر صحیح پسوند فایل در ویندوز نحوه تغییر پسوند آرشیو

سیستم عامل های ویندوز محبوب هستند زیرا به شما امکان می دهند رایانه های کاری را به دلخواه خود پیکربندی کنید. هنوز یک سیستم عامل وجود ندارد ...

فید-تصویر RSS