O'zingizning kvadrokopteringizni qanday loyihalash mumkin. Arduino asosida kvadrokopterni qanday yasash kerak Biz arduinoda kvadrokopter uchun dastur yozamiz.

Salom, aziz o'quvchilarimiz. Ushbu maqolada biz Arduino yordamida kvadrokopterni qanday yig'ish haqida gapiramiz. Bu eng oson ish emas, garchi juda hayajonli vazifa bo'lsa-da, natijada ishlab chiqilgan, yig'ilgan va sozlangan kichik dron paydo bo'ladi. o'z qo'llarim bilan. Darhol rezervatsiya qilaylik, biz eng arzon komponentlardan mumkin bo'lgan eng arzon dron haqida gapiramiz.

O'z qo'llaringiz bilan kvadrokopterni yig'ishni boshlashdan oldin siz barcha kerakli qismlarni olishingiz kerak. Bizning uy qurilishi mahsulotimizning miyasi parvoz boshqaruvchisi bo'ladi Arduino Uno. Uning imkoniyatlari dronni boshqarish uchun yetarli.

Mikrokontrollerga qo'shimcha ravishda bizga kerak bo'ladi:

  • Batareya (afzal bir nechta) 3,7V
  • MPU-6050 platasi (unga giroskop va akselerometr o'rnatilgan)
  • Transistor ULN2003A
  • Bo'shliq rotorli kommutator motorlar 0820
  • Simlar

Bir nechta fikrlarni ta'kidlash kerak. Biz yig'ganimizdan so'ng, bizning tanlovimiz ichi bo'sh rotorli (yadrosiz motorlar deb ataladigan) kollektorli motorlarga to'g'ri keldi. Ular cho'tkasi bo'lmagan motorlar kabi deyarli ishonchli emas, lekin ular ancha arzon. Bundan tashqari, siz qo'shimcha tezlikni regulyatorlarisiz qilishingiz mumkin.

Ammo giroskop va akselerometrsiz buni qilish mumkin emas. Giroskop kvadrokopter ma'lum bir harakat yo'nalishini saqlab turishini ta'minlash uchun zarur, akselerometr esa tezlanishni o'lchash uchun ishlatiladi. Ushbu qurilmalarsiz kopterni boshqarish ancha qiyin bo'ladi (agar imkonsiz bo'lsa), chunki ular pervanellarning aylanish tezligini tartibga soluvchi signal uchun ma'lumot beradi.

Biz ramkani kerakli qismlar ro'yxatiga kiritmadik. Siz uni sotib olishingiz mumkin yoki dvigatellar uchun ramka, nurlar va o'rnatish moslamalarini 3D chop etishingiz mumkin. Ikkinchi variant biz uchun afzalroq ko'rinadi, ayniqsa siz Internetda kvadrokopter loyihalarini osongina topishingiz mumkin.

Printerda chop etilgan ramka nafaqat engil, balki bardoshli bo'ladi. Ammo 3D printerga kirish imkoningiz bo'lmasa, ramkaga buyurtma berishingiz mumkin.

O'rnatish bo'yicha bosqichma-bosqich ko'rsatmalar

Ramka va mahkamlagichlarni qanday chop etish kerak

3D printerlarni ko'plab universitetlar, laboratoriyalar va kovorking maydonlarida topish mumkin. Ko'pincha ularga kirish bepul. Siz, masalan, Solidworks-dan foydalanib, o'zingiz chop etish uchun modellarni yaratishingiz mumkin. Yoki agar kerak bo'lsa, parametrlarni o'zgartirib, tayyor echimlardan foydalanishingiz mumkin.

Gyroskop akselerometrini qanday sozlash kerak

Akselerometr-giroskopni (I2C) sozlash uchun quyidagi kutubxonadan foydalanishni tavsiya etamiz. Hech qanday holatda taxtani 5V kuchlanishga ulamang, aks holda siz darhol unga zarar etkazasiz.


Keling, nima uchun sensorli I2C platasi qiziqarli ekanligini qisqacha aytib beraylik. U X, Y, Z o‘qlari uchun uchta analog chiqishga ega bo‘lgan an’anaviy akselerometr platasidan sezilarli farq qiladi.I2C – interfeys shinasi bo‘lib, mantiqiy raqamli impulslar orqali muhim hajmdagi ma’lumotlarni uzatish imkonini beradi.

Bortda ko'p analog chiqishlar mavjud emas va bu I2C ning katta plyusidir, chunki aks holda biz giroskop va akselerometrdan ma'lumotlarni olish uchun Arduinodagi barcha portlardan foydalanishimiz kerak edi.

Arduino ga ulanish diagrammasi

I2C platasi Arduino bilan aloqa o'rnatishdan oldin uni kontrollerga ulash kerak.

Bizni I2C skanerining kod eskizi, aniqrog'i uning kodi qiziqtiradi.

Dastur kodini nusxa ko'chiring, uni bo'sh eskizga qo'ying va keyin uni ishga tushiring. 9600 ga ulanish o'rnatilganligiga ishonch hosil qiling (buni amalga oshirish uchun ishga tushiring Arduino IDE Tools-Serial Monitor orqali). 0x68 yoki 0x69 manzilli I2C qurilmasi paydo bo'lishi kerak. Manzilni yozing yoki eslab qoling. Agar manzil tayinlanmagan bo'lsa, muammo Arduino elektronikasiga ulanishda bo'lishi mumkin.

Keyinchalik, bizga giroskop va akselerometr ma'lumotlarini qayta ishlay oladigan eskiz kerak. Internetda ko'plab variantlar mavjud va to'g'risini topish muammo emas. Katta ehtimol bilan, u arxivlangan shaklda bo'ladi. Yuklab olingan arxivni oching, Arduino IDE-ni oching va kutubxonani qo'shing (eskiz-import kutubxonasi-kutubxonani qo'shish). Bizga MPU6050 va I2Cdev papkalari kerak bo'ladi.

MPU6050_DMP6-ni oching va kodni diqqat bilan ko'rib chiqing. Siz hech qanday murakkab amallarni bajarishingiz shart emas, lekin agar 0x60 manzili tayinlangan bo'lsa, unda siz yuqoridagi qatorni izohdan olib tashlashingiz kerak (uni #includes ostida topish mumkin) va to'g'ri manzilni yozishingiz kerak. Dastlab tav 0×68 sifatida ko'rsatilgan.

Biz dasturni yuklab olamiz, 115200 orqali monitor oynasini ochamiz va shunchaki ko'rsatmalarga amal qilamiz. Bir necha daqiqadan so'ng siz giroskop/akselerometrdan ma'lumotlarni olasiz. Keyin datchiklarni kalibrlash kerak.

Doskani tekis yuzaga qo'ying va MPU6050_calibration.ino sketchini ishga tushiring (Internetda topish oson). Kodni ko'rib chiqing, standart manzil 0x68. Dasturni ishga tushirgandan so'ng siz og'ishlar (ofset) haqida ma'lumotga ega bo'lasiz. Uni yozing, bizga MPU6050_DMP6 eskizida kerak bo'ladi.

Hammasi shu, sizda ishlaydigan giroskop va akselerometr bor.

Arduino uchun dastur

Dastur sizga dronni boshqarishda yordam beradi. Stabillashtirish uchun ishlatiladigan algoritm ikkita PID kontrollerlariga asoslangan. Biri rulon uchun, ikkinchisi pitch uchun.

1 va 2 juft parvonalarning aylanish tezligidagi farq 3 va 4 juft parvonalarning aylanish tezligidagi farqga teng. 1, 3 va 2, 4 juftliklari uchun ham xuddi shunday. PID kontrolleri farqni o'zgartiradi. tezlik, shundan so'ng rulon va qadam nolga aylanadi.

Dvigatellar uchun Arduino raqamli pinlariga e'tibor bering va eskizni o'zgartirishni unutmang.

Tekshirish moslamasiga ulanish

Kopterni boshqarish uchun biz motorlarni Arduino-ga ulash orqali boshqarishimiz kerak. Tekshirish moslamasi faqat kichik kuchlanish va oqim chiqaradi, shuning uchun motorlarni to'g'ridan-to'g'ri ulash mantiqiy emas. Buning o'rniga, kuchlanishni oshirish uchun bir nechta tranzistorlarni o'rnatishingiz mumkin.


Diagramma yaratish uchun bizga kerak:

  • Arduino
  • Dvigatellar
  • Transistorlar

Bularning barchasi elektron platada yig'iladi va ulagichlar orqali ulanadi.

Birinchi qadam 4 ta PWM chiqishini (~ belgilangan) tranzistorga ulashdir. Keyin ulagichlarni quvvat manbaiga ulangan motorlarga ulang. Bizning holatlarimizda biz 5V batareyadan foydalanamiz, lekin 3-5V batareya ham ishlaydi.

Tranzistorlar erga ulangan bo'lishi kerak va Arduino platasidagi tuproq batareyaning erga ulangan bo'lishi kerak. Dvigatellar to'g'ri yo'nalishda aylanishi kerak, ya'ni ular kopterni ko'tarish uchun ishlashi kerak, lekin uni aylantirmaslik kerak.

Dvigatel kontaktini 5V dan tranzistorga o'tkazish orqali siz rotorning aylanish yo'nalishini o'zgartirishini ko'rasiz. Sozlashni amalga oshirganingizdan so'ng, siz endi rotorning aylanish yo'nalishini o'zgartirishga qaytishingiz shart emas. Endi biz tezlikka qiziqamiz.

Akselerometrni ishga tushirgandan va sinovdan o'tkazgandan so'ng, biz sxemani ProtoBoard-ga o'rnatamiz. Agar u yo'q bo'lsa, siz oddiy elektron platadan foydalanishingiz mumkin, unda boshqaruvchi uchun relslarni oldindan lehimlangan.

Akselerometrni taxtaga lehimlashdan oldin uni gorizontal yuzada kalibrlash kerak. Bu ko'proq narsaga erishishga yordam beradi aniq ish kelajakda sensor.

Kvartirangizni yana qanday yangilashingiz mumkin?

Kopterning to'siqlari uning kollektor dvigatellaridir. Agar siz qidirsangiz, bizning maqolamizda taklif qilinganidan biroz kattaroq va kuchliroq motorlarni topishingiz mumkin, ammo ishlashda sezilarli daromad bo'lmaydi.


Biroq, bizning maqsadimiz o'z qo'llarimiz bilan arzon kvadrokopterni yig'ish edi va shuning uchun arzon motorlar ishlatilgan. Cho'tkasiz motorlar sezilarli darajada qimmatroq, ammo ular sizga sezilarli darajada ko'proq kuch va ishonchlilik beradi. Ularni tezlikni regulyatorlari bilan ham sotib olish kerak bo'ladi, ammo bu haqiqatan ham samarali yangilanishdir.

Arduino Uno platasini tanlash siz undan chipni osongina olib tashlashingiz va uni ProtoBoard-ga qo'yishingiz mumkinligi bilan bog'liq. Bu sizga dronning og'irligini 30 grammga kamaytirishga imkon beradi, ammo sxemaga qo'shimcha kondansatörlarni kiritishingiz kerak bo'ladi. Mos Arduino taxtasi Pro Mini.

Haqida Arduino dasturlari, keyin uni nisbatan oson o'zgartirish va yangi funktsiyalar bilan to'ldirish mumkin. Asosiysi, uning yordami bilan dron bunga qodir avtomatik rejim pozitsiyangizni barqarorlashtirish.

Loyihaning asosiy g'oyasi Arduino yordamida avtonom quvvat manbai va parvozni barqarorlashtirish algoritmiga ega bo'lgan arzon kvadrokopter yaratishdir.

Arduino-dan tashqari, bizga giroskop/akselerometr va cho'tka motorlari kerak bo'ladi. Yuqoridagi loyihada kvadrokopterning parvozini boshqarish usullari ko'rib chiqilmaydi, ammo ularni albatta qo'shish mumkin. Ushbu kvadrokopterning narxi taxminan 60 dollarni tashkil qiladi.

Kvadrokopter nima?

Ishonchim komilki, ushbu maqolani o'qiyotganlarning ko'pchiligi kvadrokopter nima ekanligini bilishadi. Agar yo'q bo'lsa, bu ajoyib qurilmalarning qisqacha tavsifi.

Kvadrokopter - bu to'rtta "oyog'i" bo'lgan uchuvchi qurilma, ularning har birida pervanelli dvigatel mavjud. Kvadrokopterlar mohiyatan vertolyotlarga o'xshaydi, lekin ularning harakati, aylanishi va egilishi to'rtta pervanelning sinxron ishlashi bilan ta'minlanadi. Bundan tashqari, kvadrokopterlarda "pitch" - uzunlamasına o'q atrofida aylanish tushunchasi mavjud. Kvadrokopterning parvozini barqarorlashtirish uchun ikkita pervanel bir yo'nalishda (soat yo'nalishi bo'yicha), ikkita pervanel esa teskari yo'nalishda (soat miliga teskari) aylanadi. Havoda bir pozitsiyada harakatlanish qobiliyati tufayli kvadrokopterlar birinchi navbatda aerofotosurat va video suratga olish uchun ishlatiladi. Albatta, kvadrokopterlar va bir nechta dvigatelli boshqa shunga o'xshash qurilmalar qutqaruv operatsiyalarida, politsiyada, harbiylarda va hokazolarda qo'llaniladi. IN Yaqinda kvadrokopterlarni ishlab chiqarish uchun butlovchi qismlarning narxi sezilarli darajada kamaydi va ko'plab kompaniyalar ularni ishlab chiqarishni boshladilar. Bugun tayyor mahsulotni sotib olish muammo bo'lmaydi.

Shunday qilib, siz kvadrokopter nima ekanligini biroz tushunib oldingiz, endi unga o'tamiz qisqacha tavsif uni ishlab chiqarish jarayoni.

Biz qilgan birinchi narsa, biz qilishimiz kerak bo'lgan komponentlarni qidirish uchun Google xaridlari edi.

Ko'pgina hollarda mikrokontrollerlar va cho'tkasiz (valf) motorlar qo'llaniladi. Arduino-dan boshqaruvchi sifatida foydalanishga qaror qilindi, chunki u narx jihatidan ideal platforma. Birinchi muammo cho'tkasiz motorlar edi. Esingizda bo'lsin, biz 60 dollarlik byudjetga e'tibor qaratmoqdamiz. Va bizning kvadrokopter dizaynimizda ishlatilishi mumkin bo'lgan bitta cho'tkasiz motorning narxi 20 dan 60 dollargacha! Bundan tashqari, ushbu motorlardan foydalanish qo'shimcha kontrollerlarni - tezlikni nazorat qilish moslamalarini o'rnatishni talab qiladi. Shunday qilib, cho'tkali motorlardan foydalanishga qaror qilindi. Bizning kvadrokopterimizning o'lchamlari kichik, shuning uchun biz nisbatan past momentga ega motorlarni sotib oldik. Google shunga o'xshash drayverlarga ega kvadrokopterlar mavjudligini taklif qildi. Topilgan motorlar 55 grammgacha og'irlikni ko'tarishi mumkin, bu bizga juda mos keladi. Keyingi qadam gyroskoplar va akselerometrlar yordamida motorlarni barqarorlashtirish muammolarini hal qilishdir. Giroskop - bu Yerning tortishish kuchidan foydalanib, kosmosdagi moyillik burchagini (orientatsiyasini) aniqlash uchun qurilma. Gyroskopning klassik dizayni rotor deb ataladigan erkin aylanadigan diskdan iborat. Rotor kattaroq, barqarorroq g'ildirakning markazida joylashgan o'qga o'rnatiladi. Eksa aylanganda, rotor og'irlik markaziga to'g'ri keladigan statik holatda qoladi. Akselerometr - bu tezlanishni o'lchash uchun ishlatiladigan ixcham qurilma. Ob'ekt dam olish holatini tark etganda (harakatlana boshlasa), akselerometr bu harakat paytida paydo bo'ladigan tebranishlarni qayd qiladi. Akselerometrlar ta'sirlanganda kuchlanish hosil qiluvchi mikroskopik kristallardan foydalanadi. Bu kuchlanish olib tashlanadi va tezlashuv qiymati hosil bo'ladi. Ushbu ikkita sensorlar kvadrokopterda talab qilinadi. Aynan ularning o'qishlari asosida bizning kvadrokopterning aylanishini, harakatlanishini yoki barqarorligini ta'minlash uchun motorlarning aylanish tezligini tartibga soluvchi nazorat signali yaratiladi.

Kerakli komponentlar, ehtiyot qismlar va jihozlar

Arduino tomonidan boshqariladigan kvadrokopter loyihasi uchun bizga kerak bo'ladi:

  • - simlar;
  • - lityum batareyalar 3,7 V da;
  • - tranzistor: ULN2003A Darlington tranzistori (siz kattaroq yuklarni qo'llab-quvvatlaydigan tranzistorni olishingiz mumkin);
  • - motorlar: 0820 Coreless Motors;
  • - mikrokontroller: Arduino Uno;
  • - akselerometr/giroskop: MPU-6050 platasi (arzon va quvnoq all-in-one varianti);
  • - kvadrokopter dizayni qismlarini chop etish uchun 3D-printer yoki unga kirish;
  • - asboblar (shu jumladan lehimli temir va undan foydalanish qobiliyati!).
  • 3,7 V lityum batareyalarni XARID OL (Ehtiyot bo'ling, taklif qilingan mahsulotlar orasida sizga mos keladiganini topishingiz kerak!);

Kvadrokopter qismlarini 3D bosib chiqarish

Birinchi qadamlardan biri bizning kvadrokopterimiz ramkasini yaratishdir. Eng kam qarshilik yo'lini tanlash va ramkani 3D printerda chop etishga qaror qilindi. Ishlab chiqarish qulayligiga qo'shimcha ravishda, 3D printerda chop etilgan ramka chuqurchalar yordamida chop etish tufayli juda engildir. Qismlar Solidworks-da ishlab chiqilgan. Quyida barcha mustahkam modellar mavjud. Siz ularni osongina yuklab olishingiz va chop etishga yuborishingiz mumkin. Tafsilotlar .stl formatida saqlanadi. Agar xohlasangiz, ularni bir xil Solidworks yordamida xavfsiz tarzda o'zgartirishingiz va o'zgartirishingiz mumkin. Modellar parametrikdir, shuning uchun siz boshqa motorlardan foydalanishga qaror qilsangiz, faqat modeldagi bir nechta parametrlarni o'zgartirishingiz kerak va siz kvadrokopter o'lchamlari uchun tayyor ramka olasiz.


Natijada siz shunga o'xshash narsani olasiz:



Akselerometr-giroskopni sozlash (I2C)


Ushbu misolda SparkFun-dan MPU6050 platasi ishlatilgan. Amazonda taxminan 10 dollar turadi va yaxshi ishlaydi. Aliexpress yoki Ebay-da shunga o'xshash Xitoy shunga o'xshash taxtalarni 5 dollargacha taklif qiladi. Ajoyib ishlaydi.

I2C nima?

Yoniq oddiy taxtalar akselerometr, hammasi mantiqiy va tushunarli: u X, Y va Z o‘qlari uchun alohida analog chiqishlarga ega.Har bir chiqish alohida akselerometr o‘qiga mos keladi. Agar siz hozir I2C taxtasiga qarasangiz, hamma narsa biroz chalkash ekanligini tushunasiz. I2C aloqa standarti bo'lib, unda analog chiqishlar o'rniga raqamli mantiqiy impulslar yordamida katta hajmdagi ma'lumotlar uzatiladi. MPU6050 sizga 6 ta boshqariladigan o'qni beradi (3 ta giroskop va 3 ta akselerometr uchun). Agar ularning barchasi analog bo'lsa, biz Arduino Uno-dagi barcha analog portlardan foydalanishimiz kerak edi. I2C protokoli bilan biz ulanish uchun kamroq pinlardan foydalanamiz.

Arduino ulanish diagrammasi

MPU6050 platasining ulanish sxemasi quyida ko'rsatilgan. E'tibor bering, Arduino kutubxonasi ushbu pinlardan foydalanishni o'z zimmasiga oladi. Qoida tariqasida, agar sizda boshqa ishlab chiqaruvchining taxtasi bo'lsa ham, pinlar bir xil etiketlanadi, shuning uchun ulanish sxemasi bir xil bo'lib qoladi.

Agar siz uni 5V dan quvvatlantirsangiz, plata shikastlangan bo‘lishi mumkin, shuning uchun ehtiyot bo‘ling va 3,3V dan foydalaning.Ba’zi MPU6050 platalarida sug‘urta vazifasini bajaradigan kuchlanish regulyatori mavjud, biroq bu hali ham xavfga loyiq emas. Agar platangizda AD0 pinli bo'lsa, u erga (GND) ulangan bo'lishi kerak. Bizning holatda, VIO pin plataning o'zida AD0 ga ulangan, shuning uchun AD0 pinini ulashning hojati yo'q.

Arduino uchun eskiz

Ushbu bosqichda sizga Arduino dasturlash bo'yicha bir oz bilim kerak bo'ladi. Agar biror narsani tushunmasangiz, u erda to'xtab, uni tushunishga harakat qiling. Quyidagi tushuntirishlar sizga ko'p savollar bilan yordam beradi, ammo barcha mumkin bo'lgan nuanslarni tasvirlab bo'lmaydi.

MPU-6050-ni Arduino-ga ulaganingizdan so'ng uni yoqing va I2C skanerining kod eskizini yuklab oling.

Dastur kodini nusxa ko'chiring, uni bo'sh eskizga qo'ying va uni ishga tushiring. Ochiq serial Arduino monitor IDE (Tools->Serial Monitor) va 9600 (pastki chap) ga ulanganingizga ishonch hosil qiling.

Agar siz hamma narsani to'g'ri bajargan bo'lsangiz, I2C qurilmasi aniqlanishi va 0x68 yoki 0x69 manzilini belgilashi kerak. Yozing. Xatolar paydo bo'lsa, ulanishingizni tekshiring.

Endi siz akselerometr/giroskopdan ma'lumotlarni qayta ishlaydigan eskizni yuklashingiz kerak. Internetda o'xshash eskizlarning bir nechta versiyalari mavjud, biz undan foydalanishni tavsiya qilamiz. Havolaga kirganingizdan so'ng, "Zipni yuklab olish" tugmasini bosing. Yuklab olgandan so'ng, arxivni oching. Keyin Arduino IDE-ni oching. Eskiz->Kutubxonani import qilish -> kutubxona qo'shish-ga o'ting. Ikkala jildni ham qo'shishingiz kerak bo'ladi: I2Cdev va MPU6050.

Kutubxonalarni o'rnatganingizdan so'ng, MPU6050_DMP6 faylini oching (MPU6050 -> Misollar). Kodni yaxshi bilmasangiz ham, uni tomosha qilishingizni tavsiya qilaman. Agar siz 0x69 manzilini belgilagan bo'lsangiz, kodning yuqori qismidagi bitta qatorni izohdan olib tashlashingiz kerak (#includes dan keyin), chunki standart 0x68. Dastur endi kompilyatsiya qilinishi kerak.

Dasturni yuklab oling, ketma-ket monitor oynasini oching (bu safar 115200 bilan) va ko'rsatmalarga amal qiling. Tabriklaymiz, chunki endi siz Arduino orqali akselerometr/giroskopdan qiymatlarni olishingiz kerak!

Endi kalibrlash eskizini ishga tushiring, uni bu yerdan yuklab olish mumkin: MPU6050_calibration.ino (yana standart port 0x68, lekin siz uni o'zgartirishingiz mumkin). Olingan ofset ma'lumotlarini yozib oling. Siz ushbu ma'lumotlardan MPU6050_DMP6 eskizida (va kvadrokopter uchun keyingi dasturda) foydalanasiz.

Endi sizda ishlaydigan, albatta foydali, akselerometr/giroskop bor.

Arduino-ga ulanish

Biz akselerometrni ulashni ko'rib chiqdik. Keyingi qadam Arduino-ni motorlarni boshqarish uchun olishdir. Arduino platasi hech qanday chiqishni ta'minlamaydi katta ahamiyatga ega oqim va kuchlanish, shuning uchun motorlarni to'g'ridan-to'g'ri taxtaning raqamli chiqishlariga ulash o'rniga, biz kuchlanishni "kuchaytirish" uchun tranzistorlardan foydalanamiz.

Elektr zanjirini yig'ishni boshlaylik. Ushbu bosqichda bizga Arduino, motorlar, tranzistorlar (elektron plata va ulagichlar) kerak bo'ladi. Ulanish diagrammasi quyida kerakli matnli tushuntirishlar ostida berilgan. Rasmlarda ko'rsatilganidek, to'rtta PWM chiqishini (Arduinoda ~ bilan belgilangan) tranzistorga ulang. Shundan so'ng, ulagichlarni quvvat manbaiga ulangan motorlarga ulang. Yuqoridagi kvadrokopter loyihasi 5V quvvat manbaidan foydalangan, ammo 3-5V batareya ham ishlashi kerak.

Tranzistorlar erga ulanganligiga ishonch hosil qiling va Arduino-dagi yer quvvat manbaidan erga ulangan. Dvigatel rotorlari to'g'ri yo'nalishda aylanayotganiga ishonch hosil qiling (ular aylana emas, balki kvadrokopterni ko'tarishi kerak). Dvigatel pinini 5V dan tranzistorga o'tkazsangiz, vosita rotori teskari yo'nalishda aylana boshlaydi. Konfiguratsiya qilingandan so'ng, siz motorlarning aylanish yo'nalishini o'zgartirishingiz shart emas. Biz faqat tezlikni o'zgartiramiz.

Akselerometrni ishga tushirib, uni sinab ko'rganingizdan so'ng, siz ProtoBoard-ga hamma narsani o'rnatishingiz kerak (siz Arduino-ga o'rnatish uchun relslarni lehimlaydigan elektron platadan foydalanishingiz mumkin. Siz yanada oqlangan yo'lga borib, Proto Shield sotib olishingiz mumkin). Siz prototiplash taxtasiga tranzistorni lehimlamasligingiz kerak. Istalgan vaqtda almashtirishingiz uchun u uchun kontaktlari bo'lgan rozetkadan foydalanish yaxshiroqdir.

Bizning holatda, biz akselerometrni taxtaga lehimladik va shundan keyingina kalibrlash amalga oshirildi. Ammo amaliyot shuni ko'rsatadiki, bu mutlaqo to'g'ri emas. Gyroskop / akselerometr ko'rsatkichlarining aniqligini oshirish uchun avval uni tekis yuzada kalibrlash va faqat keyin uni lehimlash yaxshiroqdir.










Agar siz ushbu kontrollerlar bilan tanish bo'lmasangiz, PID boshqaruvi haqida Wiki-da o'qishingiz mumkin. Arduino uchun PID klassi uchta kirishdan foydalanadi: belgilangan nuqta, o'lchash va chiqish. Chiqish joriy holatiga va o'lchovlarga bog'liq. PID tekshirgichi o'lchovlar maqsadli pozitsiyaga mos kelishi uchun chiqishni o'zgartirishga harakat qiladi. Algoritm qiziqarli matematikadan foydalanadi. PID boshqaruv algoritmi qiymatlar iloji boricha barqaror bo'lib qoladigan tarzda ishlashga harakat qiladi.

Bizning algoritmimiz barqarorlashtirish uchun ikkita PID kontrollerlaridan foydalanadi: biri pitch uchun, ikkinchisi esa rulon uchun. 1 va 2 pervanellarning aylanish tezligidagi farq 3 va 4 pervanellarning tezligidagi farq bilan bir xil bo'ladi. 1,3 va 2,4 juftliklar uchun ham xuddi shunday. Shundan so'ng, PID tekshirgichi tezlikdagi farqni o'zgartiradi, pitch va rulonni nolga keltiradi.

Arduino-dan qaysi raqamli pinlar motorlarga o'tishini tekshirishni va shunga mos ravishda eskizni o'zgartirishni unutmang.

Arduino yordamida kvadrokopterni yanada modernizatsiya qilish


Kichkina kvadrokopterning asosiy muammolari uning narxi va og'irligidir. Siz kattaroq va kuchli motorlarni izlashingiz mumkin, ammo bu uning ish faoliyatini yaxshilamaydi. Sizga haqiqatan ham yordam beradigan narsa (agar siz ko'proq pul sarflashga tayyor bo'lsangiz) cho'tkasiz (valf) motorlardir. Xususiyatlarga ko'ra, ular kattalik tartibida yaxshiroq, ammo ularga qo'shimcha ravishda siz kvadrokopterni qimmatroq qiladigan tezlikni boshqarish moslamalaridan foydalanishingiz kerak.

Dizaynning og'irligini kamaytirish uchun Arduino Uno-dan foydalanish yaxshidir, chunki ushbu kontroller modeli uchun siz "tikilgan" mikroprotsessor chipini olib tashlashingiz va uni to'g'ridan-to'g'ri ProtoBoard-ga o'rnatishingiz mumkin. Natijada, siz taxminan 30 gramm vaznga ega bo'lasiz, bu bunday miqyosda juda ko'p. Bundan tashqari, siz yana bir nechta kondansatör va boshqalarni ishlatishingiz kerak bo'ladi. Yoki qanday qilib Muqobil variant, siz Arduino Pro Mini dan foydalanishingiz mumkin.

Oldingi bo'limda yozilgan va taqdim etilgan Arduino dasturi osongina kengaytirilishi va qo'shimcha funktsiyalar bilan boyitilishi mumkin. Eng muhimi, bu bosqichda kvadrokopter allaqachon parvozni avtomatik ravishda barqarorlashtirishi mumkin. Agar siz masofadan boshqarish pultini o'rnatmoqchi bo'lsangiz, uzatgichlar/qabul qiluvchilar yoki bluetooth modullariga qarashingiz mumkin. Umuman olganda, sizda endi asos bor va yanada modernizatsiya qilish uchun ko'proq joy bor.

Fikrlaringizni, savollaringizni qoldiring va baham ko'ring shaxsiy tajriba quyida. Yangi g'oyalar va loyihalar ko'pincha muhokamalarda tug'iladi!

Kvadrokopter avtonom quvvat manbaiga ham ega. Bunday uy qurilishi mahsulotining umumiy qiymati taxminan 60 dollarni tashkil qiladi.

Agar sizda ko'proq miqdor bo'lsa, unda uy qurilishi mahsulotingizni tegishli kontrollerlar bilan cho'tkasiz motorlar bilan jihozlash yanada istiqbolli.

Parvozni barqarorlashtirish uchun giroskop va akselerometr ishlatiladi. Yerning tortishish kuchiga nisbatan kvadrokopterning moyillik burchagini aniqlash uchun giroskop kerak. Tezlanishni hisoblash uchun akselerometr kerak.

Materiallar va asboblar:
- lityum batareyalar (3,7 V);
- simlar;
- tranzistor ULN2003A Darlington tranzistori (kuchliroq tranzistorlardan foydalanish mumkin);
- 0820 Coreless Motors turidagi dvigatellar;
- Arduino Uno mikrokontrolleri;
- MPU-6050 platasi (bu ham giroskop, ham akselerometr);
- 3D printerning mavjudligi yoki unga kirish imkoniyati;
- zarur vositalar.

Ishlab chiqarish jarayoni:

Birinchi qadam. Kvadrokopter korpusini yaratish
Tana juda tez va sodda tarzda yaratilgan. U 3D printer yordamida chop etiladi. Ramkani shu tarzda yaratish yaxshi, chunki u yorug'likdan chiqadi, bularning barchasi chuqurchalarni bosib chiqarish tufayli. Qismlarning dizayni Solidworks dasturida amalga oshirildi. Ushbu dastur yordamida siz ishning parametrlarini tahrirlashingiz va agar kerak bo'lsa, unga o'zingiz o'zgartirishlar kiritishingiz mumkin.




Kvadrokopter ramkasi chop etilgandan so'ng, siz ularga motorlar va lehim simlarini o'rnatishingiz mumkin.




Ikkinchi qadam. Arduino-ni ulash
MPU6050 platasini qanday ulashni quyidagi diagrammada ko'rish mumkin. Buni tushunish muhimdir Arduino kutubxonasi bu kontaktlar orqali ulanishni nazarda tutadi. Agar boshqa ishlab chiqaruvchining sxemasi ishlatilsa, kontaktlarning bir xil ketma-ketlikda joylashishini ta'minlash kerak.


Kengashni quvvatlantirish uchun faqat 3,3 V ishlatiladi, agar siz uni 5 V bilan quvvatlantirsangiz, u buziladi. Ba'zi MPU6050 platalarida tizimni himoya qiluvchi sug'urta mavjud yuqori kuchlanish, lekin uni xavf ostiga qo'ymaslik yaxshiroqdir. Agar taxtada AD0 pinli bo'lsa, u erga (GND) ulanishi kerak. Bunday holda, VIO AD0 piniga to'g'ridan-to'g'ri platada ulanadi, shuning uchun AD0 pinini ulashning hojati yo'q.












Arduino dvigatellarni boshqarishi uchun tranzistorlar kerak bo'ladi, ular tufayli motorlarni yuqori kuchlanish bilan ta'minlash mumkin bo'ladi. Diagrammada barcha elementlarning qanday bog'langanligini batafsilroq ko'rishingiz mumkin.

Uchinchi qadam. Arduino uchun eskiz
MPU-6050 Arduino-ga ulangandan so'ng, siz uni yoqishingiz va I2C skanerining kod eskizini yuklab olishingiz kerak. Keyinchalik, dastur kodini nusxalashingiz va uni bo'sh eskizga joylashtirishingiz kerak. Shundan so'ng, siz Arduino IDE seriyali monitorini (Tools->Serial Monitor) ochishingiz va 9600 ulanganligiga ishonch hosil qilishingiz kerak.
Har bir narsa to'g'ri bajarilgan bo'lsa, I2C qurilmasi aniqlanadi, unga 0x68 yoki 0x69 manzili beriladi, uni yozib olish kerak.
Keyinchalik, giroskop va akselerometrdan olingan ma'lumotlarni qayta ishlaydigan eskiz yuklanadi. Internetda ularning ko'plari bor, lekin ulardan foydalanish yaxshidir.


Yakuniy bosqichda siz giroskop va akselerometr qiymatlarini kalibrlashingiz kerak bo'ladi. Buning uchun siz tekis sirtni topishingiz va unga MPU6050 ni joylashtirishingiz kerak. Keyinchalik, kalibrlash eskizi ishga tushiriladi, natijada olingan og'ish ma'lumotlari yoziladi va keyin MPU6050_DMP6 eskizida ishlatiladi.

To'rtinchi qadam. Arduino uchun dastur
Joylashtirilgan dastur tufayli kvadrokopter barqarorlashadi va barqaror holatda osilib turadi. Keyinchalik, ushbu dastur yordamida kvadrokopter boshqariladi.


Kvadrokopterni barqarorlashtirish uchun ikkita PID kontrollerlari ishlatiladi. Biri pitch uchun, ikkinchisi esa rulon uchun kerak. Tekshirish moslamasi pervanellarning aylanish tezligini o'lchaydi va shu asosda kvadrokopter boshqariladi.

Beshinchi qadam. Kvadrokopter modifikatsiyasi

Kichik va arzon kvadrokopterning asosiy muammosi uning og'irligidir. Ushbu muammoni hal qilish uchun siz kuchliroq va engilroq motorlarni o'rnatishingiz kerak, cho'tkasiz motorlar eng mos keladi, ular valfli motorlar deb ham ataladi. Ular cho'tkalarga qaraganda ancha yaxshi, lekin siz ular uchun tezlikni regulyatorlarini ham sotib olishingiz kerak, shuning uchun uy qurilishi mahsulotlarining narxi keskin oshadi.

Ushbu maqolada biz Arduino-ga asoslangan kvadrokopterlar, ularning afzalliklari va narx toifalari haqida gapiramiz.

Kompyuter qurilmasi funksiyalariga ega kvadrokopter.


IN zamonaviy dunyo Turli maqsadlarda foydalanish uchun mo'ljallangan kvadrokopter modellarining keng assortimenti mavjud. Ular shunchaki o'yinchoqlar emas, ular ichki bozorda paydo bo'lishining boshidanoq qabul qilingan. Endi ular turli xil vazifalarni bajarish uchun mo'ljallangan qurilmalardir. Ular ko'p hollarda professional ijodiy faoliyat uchun ishlatiladi. Kvadrokopterning to'g'ri ishlashi uchun u ishlab chiqarishda bazaga qo'shimcha ravishda qo'shimcha qismlar bilan jihozlangan bo'lishi kerak. Qurilmani masofadan boshqarish pulti yordamida boshqarish uchun masofaviy boshqarish unga protsessor va boshqa ko'plab elektron tizim qismlarini o'rnatish kerak. Bugungi kunda yuqori sifatli va funktsional kvadrokopterlarni yaratish uchun ishlatiladigan ko'plab protsessorlar mavjud. Ular orasida Arduino alohida ajralib turadi. Bu kvadrokopterga kompyuter qurilmasining ba'zi funktsiyalarini bajarishga imkon beruvchi juda kuchli protsessor.

Bugungi kunda Arduino-dan foydalanadigan kvadrokopterni bunday qurilmalarni ishlab chiqarishga ixtisoslashgan har qanday onlayn-do'konda osongina sotib olish mumkin. Ushbu protsessor tufayli texnik parametrlar bo'yicha eng katta va eng kuchli qurilmalar yaratiladi. Ular turli xil vazifalarni bajarish uchun javob beradi. Ular ham muntazam parvozlar, ham professional suratga olish uchun mo'ljallangan. Rahmat kuchli protsessor ular foydalanuvchilar tomonidan tayinlangan barcha vazifalarni osongina bajaradilar. Masofadan boshqarish pulti bilan ma'lumot almashish tezligi sezilarli darajada oshadi. Bundan tashqari, real vaqtda suratga olingan videolar bir zumda uzatiladi mobil qurilmalar yoqilgan kvadrokopterga ulangan bu daqiqa. Shuni ta'kidlash kerakki, ko'plab foydalanuvchilar Arduino protsessoriga asoslangan qurilmalarni o'zlari yig'adilar. U deyarli har bir ixtisoslashgan do'konda mavjud.

Adruino asosidagi kvadrokopterning xususiyatlari.


Arduino qurilmalari juda mashhur, chunki ulardan foydalanish juda qulay. Ushbu turdagi kvadrokopterlar foydalanuvchilar tomonidan berilgan barcha vazifalarni tezda bajaradi. Ushbu protsessor yordamida oddiy parvoz paytida va hatto suratga olish jarayonida cheksiz imkoniyatlardan bahramand bo'lish imkonini beruvchi yuqori sifatli qurilmani olish mumkin. Tasvirlar yuqori aniqlik darajasida olinadi. Arduino asosidagi qurilmalar muammosiz ishlaydi. Ushbu protsessor tufayli qurilmaning o'zi uzoq vaqt davomida o'z ishini bajarishga qodir va uning tizimi muvaffaqiyatsiz bo'lmaydi. Qurilmalar yoqilgan oxirgi versiyalari Arduinolar byudjetli emas. Biroq, bu foydalanuvchilarga iste'molchilar tomonidan berilgan barcha vazifalarni tez va uzluksiz bajaradigan professional darajadagi kvadrokopterlarni olish imkonini beradi. Bu kvadrokopterning ishonchli ishlashini ta'minlaydi.



Salom, Xabro aholisi!
Ushbu maqolalar seriyasida biz kvadrokopterning qopqog'ini sevimli mashg'ulot talab qiladiganidan biroz ko'proq ochamiz, shuningdek, oddiy Arduino Mega 2560 platasi bo'lgan parvoz boshqaruvchisi uchun o'z dasturimizni yozamiz, sozlaymiz va ishga tushiramiz.

Oldinda:

  1. Asosiy tushunchalar (boshlang'ich uchuvchilar uchun).
  2. Virtual kvadrokopterda ishlashning interaktiv veb-namoyishiga ega PID kontrollerlari.
  3. Arduino uchun haqiqiy dastur va Qt uchun konfiguratsiya dasturi.
  4. Arqonda kvadrokopterning xavfli sinovlari. Birinchi parvozlar.
  5. Maydondagi halokat va yo'qotish. Avtomatik qidiruv Qt va OpenCV yordamida havodan.
  6. Yakuniy muvaffaqiyatli sinovlar. Xulosa qilish. Qayerga borish kerak?

Material katta hajmli, lekin men uni 2-3 ta maqolaga joylashtirishga harakat qilaman.
Bugun biz kutamiz: bizning kvadrokopterimiz qanday uchganligi haqidagi video bilan spoyler; asosiy tushunchalar; PID kontrollerlari va ularning koeffitsientlarini tanlash amaliyoti.

Buning hammasi nima uchun?

Aytgancha, nafaqat meni (, ,) ta'qib etuvchi ilmiy qiziqish. Va, albatta, ruh uchun. Men ishlayotganda juda xursand bo'ldim va "IT" mening dasturim bilan uchganda haqiqiy, ta'riflab bo'lmaydigan baxtni his qildim :-)

Kimdan?

Ushbu material uzoqda bo'lgan yoki faqat ko'p rotorli tizimlarda ishtirok etishni rejalashtirayotgan odamlarni ham qiziqtirishi mumkin. Endi kvadrokopterning asosiy komponentlarining maqsadi, ularning bir-biri bilan o'zaro ta'siri, parvozning asosiy tushunchalari va tamoyillari haqida gapiraylik. Albatta, bizga kerak bo'lgan barcha bilimlarni Internetda topish mumkin, ammo biz uni keng Internetdan izlashga majbur qila olmaymiz.

Asosiy tushunchalarni tushunishingizga putur etkazmasdan, keyingi notanish atamagacha o'zingiz bilgan hamma narsani o'tkazib yuboring, qalin qilib ta'kidlangan, yoki tushunarsiz tasvirga.

YO'Q #1!

Hozirda juda ko'p (Ardupilot, MegapirateNG, MiltiWii, AeroQuad va boshqalar) mavjud bo'lgan tayyor echimlarni sinab ko'rmaguningizcha parvoz boshqaruvchisi uchun o'z dasturingizni yozishni boshlamang. Birinchidan, bu xavfli! Kvadrokopterni GPS va barometrsiz boshqarish uchun amaliyot talab etiladi, va undan ham ko'proq u nosozliklar paydo bo'lganda, ag'darilganda yoki kerakli joyda uchib ketmasa - va birinchi sinovlarda bu deyarli muqarrar. Ikkinchidan, nima dasturlash kerakligini va oxir-oqibat qanday ishlashi kerakligini tushunib, dasturlash sizga ko'p marta osonroq bo'ladi. Menga ishon: parvoz matematikasi dastur kodining faqat kichik bir qismidir.

YO'Q #2!

Agar siz ilmiy qiziqish bilan shug'ullanmasangiz va sizga uzoq vaqt davomida tayyor echimlar kerak bo'lsa (uchish, suratga olish, video suratga olish, parvoz qilish) kerak bo'lsa, parvoz boshqaruvchisi uchun o'z dasturingizni yozishni o'z zimmangizga olmang. topshiriq va h.k.) Siz hamma narsani o'zingiz yozayotganingizda, yolg'iz bo'lmasangiz ham ko'p vaqt talab etiladi.

Asosiy tushunchalar


Kvadrokopterlar turli xil navlarda keladi, ammo ularning barchasi to'rtta asosiy rotor bilan birlashtirilgan:
Ko'rinib turgan simmetriyaga qaramasdan, uchuvchi uchun kvadrokopterning old qismi qaerda ekanligini (o'q bilan ko'rsatilgan) farqlash juda muhimdir. Bu erda, xuddi radio orqali boshqariladigan avtomobil modellarida bo'lgani kabi: "oldinga" buyrug'i berilganda, kvadrokopter uchuvchi qaragan joyga emas, balki kvadrokopterning xayoliy burni ishora qilgan joyga uchadi. Bu xavf bilan to'la: yangi boshlanuvchilar uchun shamol ushlab qolgan, qandaydir tarzda yon tomonga burilgan qurilmani o'zlariga qaytarish qiyin bo'lishi mumkin (biz, albatta, birinchi shaxs kamerasida uchish va "aqlli" haqida gapirmayapmiz. ” kompas va GPS yordamida parvoz rejimlari.) Yechim Ushbu muammoni qisman oldingi vintlardek yoki boshqa rangdagi nurlar, old tomonda qandaydir to'p yoki turli rangdagi LEDlar yordamida hal qilish mumkin. Ammo bularning barchasi pepelatlar tezda ufq ustidagi nuqtaga aylanganda foydasiz bo'lib chiqadi.

Biz "X" shaklidagi kvadrokopter ramkasida uchamiz, chunki menga uning ko'rinishi ko'proq yoqadi. Har bir dizayn o'zining afzalliklari va maqsadiga ega. Kvadrokopterlardan tashqari boshqa multikopterlar ham mavjud. Agar siz ekzotik variantlarni hisoblamasangiz ham, ularning to'liq to'plami bor!



Keling, kvadrokopterimiz ichida qanday tuzilganligini va biz dasturlashni rejalashtirayotgan parvoz boshqaruvchisi nima qilishi kerakligini aniqlaylik.




Burchaklar pitch, roll va yaw (pitch, roll, yaw)- kvadrokopterning kosmosdagi yo'nalishini aniqlash va o'rnatish odatiy bo'lgan burchaklar.


Ba'zan "burchak" so'zi o'tkazib yuboriladi va ular oddiygina aytadilar: pitch, roll, yaw. Ammo Vikipediyaga ko'ra, bu mutlaqo to'g'ri emas. Kvadrokopterning kerakli yo'nalishda parvozi ushbu uch burchakni o'zgartirish orqali amalga oshiriladi. Masalan, oldinga uchish uchun kvadrokopter egilishi kerak, chunki orqa motorlar oldingisiga qaraganda bir oz kuchliroq aylanadi:

Gazli kvadrokopter- barcha motorlarning aylanish tezligi o'rtasidagi arifmetik o'rtacha. Gaz qancha ko'p bo'lsa, dvigatellarning umumiy kuchi shunchalik katta bo'lsa, ular kvadrokopterni shunchalik ko'p tortadi. yuqoriga(OLDINA BERMANG!!! Bu yerda "Yerga shippak" eng tez ko'tarilishni anglatadi). Odatda foiz sifatida o'lchanadi: 0% - motorlar to'xtatiladi, 100% - maksimal tezlikda aylanadi. Gaz tebranish- kvadrokopter balandlikni yo'qotmasligi uchun zarur bo'lgan minimal gaz darajasi.

Gaz kelebeği, pitch, roll, yaw - agar siz ushbu to'rtta parametrni nazorat qila olsangiz, kvadrokopterni boshqarishingiz mumkin. Ular ba'zan nazorat kanallari deb ham ataladi. Agar siz ikki kanalli masofadan boshqarish pultini sotib olgan bo'lsangiz, kvadrokopterni boshqara olmaysiz. Uch kanalli kichik vertolyotlar uchun ko'proq mos keladi: siz rulonni boshqarishsiz uchishingiz mumkin, ammo kvadrokopterda bu qulay emas. Agar siz parvoz rejimlarini o'zgartirmoqchi bo'lsangiz, besh kanalli masofadan boshqarish pultini sotib olishingiz kerak bo'ladi. Agar siz bortda kameraning egilishi va panasini boshqarishni xohlasangiz, yana ikkita kanal mavjud, ammo mutaxassislar buning uchun alohida masofadan boshqarish pultini ishlatadilar.

Ko'p parvoz rejimlari mavjud. GPS, barometr va masofa o'lchagich ishlatiladi. Ammo biz asosiy - barqarorlashtirish rejimini amalga oshirmoqchimiz ( pichoqlash, barqarorlashtirish, "stubda" uchish), bunda kvadrokopter tashqi omillardan qat'i nazar, masofadan boshqarish pultidan unga berilgan burchaklarni saqlab turadi. Ushbu rejimda, shamol bo'lmasa, kvadrokopter deyarli joyida osilib turishi mumkin. Uchuvchi shamolning o'rnini qoplashi kerak bo'ladi.

Vintlarning aylanish yo'nalishi tasodifiy tanlanmaydi. Agar barcha motorlar bir yo'nalishda aylansa, kvadrokopter yaratilgan momentlar tufayli teskari yo'nalishda aylanadi. Shuning uchun, bir juft qarama-qarshi motor har doim bir yo'nalishda, ikkinchisi esa boshqa yo'nalishda aylanadi. Aylanish momentlarining paydo bo'lishining ta'siri egilish burchagini o'zgartirish uchun ishlatiladi: bir juft motor boshqasiga qaraganda bir oz tezroq aylana boshlaydi va endi kvadrokopter asta-sekin bizga qaraydi (qanday dahshat):



  • LFW - chap old soat yo'nalishi bo'yicha aylanish (chap old, soat yo'nalishi bo'yicha aylanish)
  • RFC - o'ng oldingi soat miliga teskari aylanish (o'ng old, soat miliga teskari aylanish)
  • LBC - chap orqa soat miliga teskari aylanish (chap orqa, soat miliga teskari aylanish)
  • RBW - o'ngga orqaga soat yo'nalishi bo'yicha aylanish (o'ng orqa, soat yo'nalishi bo'yicha aylanish)

Dvigatellarning aylanish tezligini nazorat qiladi parvoz boshqaruvchisi (boshqaruvchi, miya). Odatda bu ko'plab kirish va chiqishlarga ega bo'lgan kichik taxta yoki quti. Turli xil imkoniyatlar to'plamiga, turli proshivkalarga va turli vazifalarga ega bo'lgan juda ko'p turli xil kontrollerlar mavjud. Mana bir nechtasi:




Parvoz boshqaruvchisining umumiy vazifasi sekundiga bir necha o'n marta boshqaruv tsiklini bajarishdan iborat bo'lib, u quyidagilarni o'z ichiga oladi: sensor ko'rsatkichlarini o'qish, boshqaruv kanallarini o'qish, ma'lumotlarni qayta ishlash va uchuvchining buyruqlarini bajarish uchun dvigatellarga boshqaruv signallarini berish. Bu biz dasturlashmoqchi bo'lgan narsadir.

Foydalanish mumkin bo'lgan juda ko'p turli xil sensorlar mavjud. Biz barcha kvadrokopterlarda deyarli majburiy bo'lib qolganlardan foydalanamiz uch o'qli giroskop va uch o'qli akselerometr. Akselerometr tezlanishni, giroskop esa burchak tezligini o'lchaydi. Ularning yordami bilan parvoz boshqaruvchisi joriy pitch, roll va egilish burchaklarini biladi. Ushbu sensorlar parvoz boshqaruvchisiga yoki tashqi qurilmaga o'rnatilishi mumkin. Sensor o'qishlari asosida uchta burchakni hisoblash jarayoni alohida maqola uchun mavzudir. Ammo bu erda biz buni bilishimiz shart emas: MPU-6050 biz uchun hamma narsani qiladi. Bu kerakli hisob-kitoblarni va ichki filtrlashni amalga oshiradigan va i2c protokoli yordamida deyarli tayyor burchaklarni ishlab chiqaradigan kichik taxta. Biz qilishimiz kerak bo'lgan narsa - ularni sanash, qolgan ma'lumotlar bilan qayta ishlash va motorlarga boshqaruv signallarini berish.

Multikopterlardagi motorlar katta oqimlarni iste'mol qiladi, shuning uchun parvoz boshqaruvchisi ularni bevosita emas, balki maxsus apparat drayverlari orqali boshqaradi. tezlikni regulyatorlari (ESC, regulyator, eska). Ushbu regulyatorlar asosiy bort batareyasi bilan quvvatlanadi, boshqaruv signali kontrollerdan olinadi va chiqishda ular to'g'ridan-to'g'ri motorlarga o'tadigan uchta simga (A, B, C) ega (har bir dvigatel o'z regulyatoriga ega). !)




Regulyator va dvigatel o'rtasidagi aloqa "protokoli" biz uchun parvoz boshqaruvchisi va regulyator o'rtasidagi aloqa "protokoli" kabi muhim emas, chunki biz regulyatorni boshqaruvchidan dasturiy ravishda boshqarishimiz kerak. I2c orqali boshqariladigan regulyatorlar mavjud, ammo eng keng tarqalganlari kamida 0 volt va maksimal 3-5 volt bo'lgan kvadrat to'lqin signali bilan boshqariladi (u deyiladi. PWM yoki PWM, va ba'zilar buni to'g'riroq deb ta'kidlashadi - PPM. Batafsil ma'lumot, masalan).

"Protokol" kuchli so'zdir: dvigatelni maksimal tezlikda aylantirishni buyurish uchun boshqaruvchi 10-20 millisekundlik mantiqiy nol bilan kesishgan 2 millisekundlik impulslarni yuborishi kerak. 1 millisekundlik impuls davomiyligi motorni to'xtatishga to'g'ri keladi, 1,1 ms - 10% maksimal tezlik, 1,2 ms - 20% va boshqalar. Amalda, nolning davomiyligi hech qanday rol o'ynamaydi, faqat pulsning davomiyligi muhimdir.

Ko'rinib turgan soddaligiga qaramay, bu erda pistirma bor: parvoz boshqaruvchilari har xil bo'ladi turli xil sozlamalar, regulyatorlar har xil bo'lib, minimal (1 ms) va maksimal (2 ms) universal emas. Ko'pgina omillarga qarab, 1-2 ms diapazoni aslida 1,1 - 1,9 ms bo'lishi mumkin. Regulyator va boshqaruvchi mutlaqo bir xil tilda gaplashishi uchun protsedura mavjud regulyatorni kalibrlash. Ushbu protsedura davomida boshqaruv elementlari diapazonlari o'zgartiriladi va boshqaruvchi diapazoniga teng bo'ladi. Jarayon har bir kontroller dasturiga qattiq ulangan va bir nechtasini o'z ichiga oladi oddiy qadamlar(qadamlar ishlab chiqaruvchiga qarab farq qilishi mumkin - ko'rsatmalarni o'qing!):

  • Regulyatorga quvvat manbaini o'chiring.
  • Pervaneni dvigateldan chiqarib oling.
  • Tekshirish moslamasining kirishiga maksimal aylanish tezligiga mos keladigan signalni qo'llang.
  • Regulyatorga quvvat bering. Dvigatel tashqi yordamisiz harakatsiz qolishi kerak.
  • Tekshirish moslamasining kirishiga minimal aylanish tezligiga mos keladigan signalni qo'llang.
  • 1-2 soniya davomida pauza qiling, xarakterli chiyillashni kuting.
  • Regulyatorga quvvat manbaini o'chiring.

Shundan so'ng, mos keladigan interval chegaralari kontrollerga kiritiladi. Kalibrovka qilinmagan regulyatorlar bilan uchishga urinayotganda, oqibatlar kutilmagan bo'lishi mumkin: kvadrokopterning to'satdan eng yaqin daraxtga siljishidan tortib, har qanday gaz kelebeği qiymatida motorlarning to'liq harakatsizligiga qadar.

PWM aynan bir xil printsipdan foydalanadi bortdagi qabul qiluvchi. Bu kichik qurilma, erdan radio boshqaruv signallarini qabul qilish va ularni parvoz boshqaruvchisiga uzatish. Ko'pincha, har bir boshqaruv kanali uchun parvoz boshqaruvchisi (gaz kelebeği, pitch, rulon va boshqalar) PWM bilan ta'minlangan o'z kirishiga ega. O'zaro ta'sir mantig'i oddiy: buyruq, masalan, "70% gaz kelebeği" doimiy ravishda erdan qabul qilgichga o'tadi, u erda PWM ga aylanadi va alohida sim orqali parvoz boshqaruvchisiga yuboriladi. Pitch, roll, yaw bilan bir xil.

Qabul qilgich va kontroller o'zlarining do'stona PWM munosabatlariga ega bo'lganligi sababli, ular ham sozlanishi kerak bo'ladi: qabul qiluvchilar bilan masofadan boshqarish pultlari o'zlarining ishlash diapazonlari bilan farq qiladi. Nazoratchi moslasha olishi kerak. Jarayon radio kalibrlash, regulyatorlarni kalibrlashdan farqli o'laroq, biz uni parvoz dasturining bir qismi sifatida o'zimiz yaratishimiz kerak. Umumiy kalibrlash rejasi quyidagicha:

  • Har qanday holatda pervanellarni motorlardan olib tashlang.
  • Qandaydir tarzda tekshirgichni radio kalibrlash rejimiga o'tkazing.
  • Tekshirish moslamasi bir necha o'n soniya davomida radio kalibrlashni boshlaydi.
  • Ajratilgan vaqt ichida barcha masofadan boshqarish pultlarini to'xtaguncha barcha yo'nalishlarda harakatlantiring.
  • Tekshirish paytida barcha nazorat kanallari uchun maksimal va minimal qiymatlarni eslab qoladi ichki xotira asrlar davomida.
Shunday qilib: radio kalibrlash paytida parvoz boshqaruvchisi barcha boshqaruv kanallari uchun qabul qiluvchi diapazonlarini eslab qoladi; ESC kalibrlash vaqtida parvoz boshqaruvchisi diapazoni barcha ESC-larga kiritiladi.

Parvoz boshqaruvchisi dasturiga qo'shimcha ravishda yana bitta dastur kerak: parvoz boshqaruvchisini sozlash interfeysi. Чаще всего им является программа для PC, которая соединяется с полетным контроллером по USB и позволяет пользователю настраивать и проверять полетную программу, например: запускать калибровку радио, настраивать параметры стабилизации, проверять работу датчиков, задавать маршрут полета на карте, определять поведение мультикоптера при потере сигнала va boshqalar. Biz konfiguratsiya interfeysimizni C++ va Qt-da konsol yordam dasturi shaklida yozamiz. Mana, agar siz kelajakka nazar tashlasangiz:




Hech kim baxtsiz hodisalardan himoyalanmagan. Hatto kichik motorlardagi o'n dyuymli plastik pervaneler terida qonli ko'karishlar qoldirishi mumkin, ular yana bir hafta davomida og'riydi (shaxsan sinovdan o'tgan). Agar siz kvadrokopter yoqilgan holda masofadan boshqarish pultidagi gaz tayoqchasini bossangiz, o'zingizga yangi bo'yanish va soch turmagi berish oson. Shuning uchun, parvoz boshqaruvchisi kamida bir oz xavfsizlikni ta'minlashi kerak: mexanizm qurollangan/qurolsizlangan. Kvadrokopterning "qurolsizlangan" holati motorlar o'chirilganligini anglatadi va hatto masofadan boshqarish pultidan to'liq gaz buyrug'i ham hech qanday ta'sir ko'rsatmaydi, garchi quvvat berilgan bo'lsa ham. Kvadrokopterning "qurollangan" holati masofadan boshqarish pultidagi buyruqlar parvoz boshqaruvchisi tomonidan bajarilishini anglatadi. Bu holatda kvadrokopterlar havoga ko'tariladi, uchadi va qo'nadi. Kvadrokopter yoqiladi va agar masofadan boshqarish pultidagi gaz kelebeği nolga teng bo'lmasa, beparvo uchuvchi uni yoqsa, darhol qurolsizlangan holatga o'tishi kerak. Kopterni "qurollangan" holatga keltirish uchun uchuvchi masofadan boshqarish pulti bilan oldindan kelishilgan imo-ishoralarni bajarishi kerak. Ko'pincha bu imo-ishora chap tayoqni pastki o'ng burchakda (gaz = 0%, yaw = 100%) bir necha soniya ushlab turishdir. Shundan so'ng, parvoz boshqaruvchisi kamida minimal o'z-o'zini sinovdan o'tkazadi va agar u muvaffaqiyatli o'tsa " o'zini qurollantirish"(uchishga tayyor!) Yana bir ishora bilan (gaz = 0%, yaw = 0%) kvadrokopter" qurolsizlanadi“Yana bir yaxshi xavfsizlik chorasi avtomatik qurolsizlantirish, agar gaz 2-3 soniya davomida nol bo'lsa.

Dvigatellar, batareyalar, regulyatorlar, pervaneler haqida

Multikopter uchun komponentlarni tanlash butun bir qator maqolalar uchun mavzudir. Agar siz birinchi kvadrokopteringizni yaratmoqchi bo'lsangiz, unga nima kerakligini aniqlang va tajribalilarning maslahatidan foydalaning yoki kimdir tuzgan va muvaffaqiyatli uchib ketgan komponentlar ro'yxatini oling.

Shunga qaramay, umumiy tushunish uchun asosiy fikrlarni bilish foydalidir.

Batareyalar


Havaskorlar va professionallar orasida ko'p rotorli tizimlar eng keng tarqalgan lityum polimer batareyalar, bortdagi elektronika va motorlar uchun asosiy quvvat manbalari sifatida. Ular quvvat, kuchlanish va maksimal oqim chiqishi bilan ajralib turadi. Imkoniyatlar, odatdagidek, amper-soat yoki milliamper-soat bilan o'lchanadi. Voltaj batareyaning "hujayralari" sonida o'lchanadi. Bitta "kon" o'rtacha 3,7 voltni tashkil qiladi. To'liq zaryadlangan "kon" 4,2 voltni tashkil qiladi. Eng keng tarqalgan batareyalar uchdan oltitagacha bo'lgan batareyalardir. Maksimal oqim chiqishi amperda o'lchanadi va, masalan, quyidagicha belgilanadi: 25C. C - batareya quvvati, 25 - multiplikator. Imkoniyatlar 5 amper bo'lsa, unda bunday batareya 25 * 5 = 125 amperni etkazib berishi mumkin. Albatta, joriy chiqish parametrini zaxira bilan olish yaxshiroqdir, lekin, asosan, u qanchalik katta bo'lsa, batareya qimmatroq bo'ladi. Yorliqlash misoli: 25C 3S 4500mah.

Har bir bank alohida batareyadir. Ularning barchasi ketma-ket lehimlangan. Barcha banklarni teng ravishda to'lash uchun balanslash ulagichi har bir bankka alohida kirish imkoniyati bilan ta'minlangan va maxsus zaryadlovchi qurilma.

Dvigatellar, pervaneler, regulyatorlar


Cho'tkasi bo'lmagan motorning asosiy parametri uning kv. Bu qo'llaniladigan har bir voltli kuchlanish uchun daqiqada aylanishlar soni. Eng keng tarqalgan motorlar kv 300 dan 1100 gacha. 1000 ga yaqin Kv odatda kichik kvadrokopterlar uchun tanlanadi (1-2 kilogramm ortiqcha yuk 500 gramm) va ular diametri 12 dyuymgacha bo'lgan plastik pervanellar bilan jihozlangan. Katta multikopterlar (yaxshi va og'ir foto-video jihozlarini ko'tarish uchun) yoki uzoq uchuvchi samolyotlar (uchish vaqtini qayd qilish uchun) odatda past kv (300-500) va ulkan uglerod parvonalariga (diametri 15 - 20 dyuym) ega motorlarga ega. Kv yagona emas muhim parametr Dvigatel: ko'pincha dvigatel kuchi va kuchlanishning berilgan kuchlanishga va o'rnatilgan pervanel turiga bog'liqligi to'liq jadvallarini topishingiz mumkin. Bundan tashqari, har bir vosita o'z kuchlanish diapazoni (akkumulyator hujayralari soni) va o'zining maksimal oqimi uchun mo'ljallangan. Agar ishlab chiqaruvchi 3-4S yozsa, uni 5S batareyalari bilan ishlatmaslik kerak. Xuddi shu narsa regulyatorlarga ham tegishli.

Dvigatel 30A gacha bo'lgan oqim uchun mo'ljallangan bo'lsa, u holda regulyator qizib ketishning oldini olish uchun 30 + 10A gacha bo'lgan oqim uchun mo'ljallangan bo'lishi kerak. Sifatsiz yoki mos bo'lmagan regulyatorlar "sinxronizatsiya sliplari" deb ataladigan narsaga olib kelishi va motorni parvoz paytida to'xtatib qo'yishi mumkin va siz yana bir ko'p rotorli atamani taniysiz: " sayyorani tutdi." Yana bitta muhim nuqta- simlarning qalinligi va sifati. Noto'g'ri o'lchamdagi sim yoki yomon ulagich havoda yong'inga olib kelishi mumkin.

Ko'rib turganingizdek, juda ko'p nuanslar mavjud. Men ularning yarmini ham sanab o'tmaganman, shuning uchun birinchi multikopteringiz uchun komponentlarni o'zingiz tanlash juda qiyin.

Stabilizatsiya matematikasi, PID kontrollerlari (PID)


Agar siz multikopterlarga kirishga qaror qilsangiz, ertami-kechmi siz PID kontrollerni o'rnatish bilan shug'ullanishingiz kerak bo'ladi, chunki bu matematik apparat deyarli barcha stabilizatsiya vazifalarida qo'llaniladi: havoda kvadrokopterning burchaklarini barqarorlashtirish, uchish va pozitsiyani ushlab turish. GPS-dan foydalanish, barometr yordamida balandlikni ushlab turish, cho'tkasiz mexanizmlar parvoz paytida videokamerani barqarorlashtirish (kamera gimbal).

Siz ikki o'qli kamera gimbalini sotib olasiz, masalan, GoPro-ni u erga qo'ying, uni yoqing va barqarorlashtirish o'rniga siz konvulsiyalar, tebranishlar va chayqalishlarni olasiz, garchi barcha sensorlar sozlangan va mexanik muammolar bartaraf etilgan. Buning sababi PID kontrollerlarining noto'g'ri parametrlari.

Siz multikopterni yig'asiz, datchiklar, regulyatorlar, radiolarni kalibrlaysiz, hamma narsani tekshirasiz, uchishga harakat qilasiz va havoda shunchalik zerikarliki, hatto engil shabada ham uni aylantiradi. Yoki aksincha: u shunchalik o'tkirki, u birdan uchib ketadi va ruxsatsiz uch marta salto qiladi. Sababi hali ham bir xil: PID kontrollerlarining parametrlari.

PID kontrollerlaridan foydalanadigan ko'plab qurilmalar uchun foydalanuvchilarning o'zlari tomonidan ko'plab video ko'rsatmalarga qo'shimcha ravishda sozlash bo'yicha ko'rsatmalar va hatto bir nechtasi mavjud. Ammo bu xilma-xillikni boshqarishni osonlashtirish uchun ushbu regulyatorlarning ichida qanday ishlashini tushunish foydalidir. Bundan tashqari, biz o'z kvadrokopter stabilizatsiya tizimini yozmoqchimiz! Men "qayta ixtiro qilishni" taklif qilaman va tushunish uchun "barmoqlarda" PID kontroller formulasi. Quruq matematik tilni afzal ko'rganlar uchun men Vikipediyani tavsiya qilaman, chunki... rus tilida material hali bunday batafsil taqdim etilmagan.

Biz kvadrokopterni ikki o'lchovli kosmosda ko'rib chiqamiz, bu erda u faqat bitta burchakka ega - aylanish burchagi va ikkita dvigatel: chap va o'ng.




Parvoz boshqaruvchisi doimiy ravishda erdan buyruqlar oladi: "30 daraja aylanish", "aylanish -10 daraja", "0 daraja aylanish (ufqni ushlab turish)"; uning vazifasi shamol, kvadrokopter og'irligining notekis taqsimlanishi, dvigatellarning notekis eskirishi, kvadrokopterning inertsiyasi va boshqalarni hisobga olgan holda ularni motorlar yordamida imkon qadar tez va aniq bajarishdir. Shunday qilib, parvoz boshqaruvchisi bank burchagining joriy qiymatini va kerakli qiymatni hisobga olgan holda, har bir dvigatelga qanday aylanish tezligini qo'llash masalasini doimiy ravishda hal qilishi kerak. Doimiy, albatta, kuchli so'z. Bularning barchasi ma'lum bir uskunaning hisoblash imkoniyatlariga bog'liq. Adruino-da ishlov berish va boshqarish siklining bir iteratsiyasini 10 millisekundga sig'dirish juda mumkin. Bu degani, har 10 millisekundda bir marta kvadrokopterning burchaklari o'qiladi va ular asosida dvigatellarga boshqaruv signallari yuboriladi. Bu 10 millisekundlar deyiladi tartibga solish davri. Bu qanchalik kichik bo'lsa, tartibga solish qanchalik tez-tez va aniqroq sodir bo'lishi aniq.

Gaz darajasi qabul qilgichdan tekshirgichga oqadi. Uni belgilaylik. Shuni eslatib o'tamanki, bu barcha motorlarning aylanish tezligi o'rtasidagi arifmetik o'rtacha, maksimal aylanish tezligining foizi sifatida ifodalangan. Chap va o'ng motorlarning aylanish tezligi va bo'lsa, u holda:




chap dvigatelning gazga qaraganda tezroq aylanishi va o'ng dvigatelning xuddi shunday sekinroq aylanishi tufayli moment hosil qiluvchi kvadrokopterning (kuch) javobi qayerda. salbiy qiymatlarni ham qabul qilishi mumkin, keyin o'ng vosita tezroq aylanadi. Agar biz qayta ishlash siklining har bir iteratsiyasida ushbu qiymatni hisoblashni o'rgansak, u holda biz kvadrokopterni boshqarishimiz mumkin bo'ladi. Hech bo'lmaganda u boshqaruv panelidan keladigan joriy rulon burchagi () va kerakli rulo burchagi () ga bog'liq bo'lishi aniq.

Vaziyatni tasavvur qilaylik: "ufqni ushlab turish" buyrug'i ( = 0) qabul qilinadi va kvadrokopter chap tomonda rulonga ega:




- nazoratchi minimallashtirishga intiladigan va orasidagi farq (xato).

Kerakli burilish burchagi va joriy o'rtasidagi farq qanchalik katta bo'lsa, reaktsiya qanchalik kuchli bo'lishi kerak, chap dvigatel o'ngga nisbatan tezroq aylanishi kerak. Agar biz buni yozuvimiz yordamida yozsak:



Bu erda P - mutanosiblik koeffitsienti. U qanchalik katta bo'lsa, reaktsiya shunchalik kuchli bo'ladi, kvadrokopter kerakli burilish burchagidan og'ishlarga shunchalik keskin javob beradi. Ushbu intuitiv va sodda formula ishni tasvirlaydi proportsional boshqaruvchi. Gap oddiy: kvadrokopter talab qilingan joydan qanchalik og‘ishsa, uni qaytarishga urinishingiz shunchalik qiyin bo‘ladi. Afsuski, bu formula murakkab bo'lishi kerak. Asosiy sabab - haddan tashqari ko'tarilish.

Bir necha o'n millisekundlarda (qayta ishlash siklining bir necha iteratsiyasi), proportsional kontroller ta'sirida kvadrokopter kerakli (bu holda gorizontal) holatga qaytadi. Shu vaqt ichida xato va harakat bir xil belgiga ega bo'ladi, garchi ular tobora kamayib boradi. Ma'lum bir burilish tezligiga (burchak tezligi) erishgandan so'ng, kvadrokopter shunchaki boshqa tomonga aylanadi, chunki hech kim uni kerakli holatda to'xtata olmaydi. Bu har doim o'zining asl holatiga qaytishni xohlaydigan bahorga o'xshaydi, lekin agar siz uni orqaga tortib, qo'yib yuborsangiz, u ishqalanish kuchini olguncha tebranadi. Albatta, kvadrokopter ham ishqalanishdan ta'sirlanadi, ammo amaliyot shuni ko'rsatadiki, bu etarli emas.

Shu sababli, mutanosib boshqaruvchiga yana bir atama qo'shilishi kerak, bu kvadrokopterning aylanishini sekinlashtiradi va haddan tashqari o'tishni (qarama-qarshi yo'nalishda aylanish) oldini oladi - yopishqoq muhitda ishqalanishning bir turi: tezroq kvadrokopter burilsa, uni to'xtatishga harakat qilish qanchalik qiyin bo'lsa, albatta, oqilona chegaralar ichida. Aylanish tezligini (xato o'zgarish tezligini) quyidagicha belgilaymiz, keyin:



bu erda D - sozlanishi koeffitsient: u qanchalik katta bo'lsa, to'xtash kuchi shunchalik kuchli bo'ladi. Maktab fizikasi kursidan har qanday miqdorning o'zgarish tezligi bu miqdorning vaqtga nisbatan hosilasi ekanligi haqida noaniq xotiralar paydo bo'ladi:

.

Va endi proportsional boshqaruvchi proportsional-differensialga aylanadi (proporsional atama va differentsial):

.

Xatoni hisoblash oson, chunki har bir iteratsiyada biz bilamiz va ; P va D - ishga tushirishdan oldin sozlanishi mumkin bo'lgan parametrlar. Loyini (o'zgarish tezligi) hisoblash uchun oldingi qiymatni saqlash, joriy qiymatni bilish va o'lchovlar (nazorat davri) o'rtasida o'tgan vaqtni bilish kerak. Va bu erda - oltinchi sinf maktab fizikasi (tezlik = masofa / vaqt):

.

- tartibga solish muddati; - tartibga solish siklining oldingi iteratsiyasidan xato qiymati. Aytgancha, bu formula eng oddiy yo'l raqamli farqlash va bu biz uchun juda mos keladi.

Endi bizda tekis bikopterda proportsional differensial boshqaruvchi bor, ammo yana bir muammo bor. Chap qirrasi o'ngdan bir oz ko'proq og'irlik qilsin yoki xuddi shunday, chap dvigatel o'ngdan bir oz yomonroq ishlaydi. Kvadrokopter biroz chapga egilgan va orqaga burilmaydi: differensial atama nolga teng va proportsional atama, garchi u musbat qiymat olsa ham, kvadrokopterni gorizontal holatga qaytarish uchun yetarli emas, chunki chap qirrasi biroz og'irlik qiladi. o'ngdan ko'proq. Natijada, kvadrokopter doimo chapga tortiladi.

Bunday og'ishlarni kuzatish va ularni tuzatish uchun mexanizm kerak. Bunday xatolarning o'ziga xos xususiyati shundaki, ular vaqt o'tishi bilan o'zlarini tuzatadilar. Integral atama yordamga keladi. U qayta ishlash tsiklining barcha iteratsiyalari bo'yicha barcha xatolar yig'indisini saqlaydi. Bu qanday yordam beradi? Proportsional muddat kichik xatoni tuzatish uchun etarli bo'lmasa, lekin u hali ham mavjud bo'lsa, asta-sekin, vaqt o'tishi bilan integral atama kuchga ega bo'lib, javobni oshiradi va kvadrokopter kerakli rulon burchagini oladi.

Bu erda bir nuance bor. Faraz qilaylik, bu 1 daraja, boshqaruv sikli 0,1s. Keyin bir soniyada xatolar yig'indisi 10 daraja qiymatini oladi. Va agar ishlov berish davri 0,01 s bo'lsa, unda miqdor 100 darajaga etadi. Shunday qilib, bir vaqtning o'zida integral atama turli xil tartibga solish davrlari uchun bir xil qiymatga ega bo'lishi uchun biz olingan miqdorni tartibga solish davrining o'ziga ko'paytiramiz. Ikkala holatda ham misoldan 1 daraja yig'indisi olinishini hisoblash oson. Mana bu - integral atama (hozircha sozlanishi koeffitsientsiz):

.

Bu formula noldan hozirgi momentgacha bo'lgan oraliqda funktsiyaning vaqt bo'yicha raqamli integralidan boshqa narsa emas. Shuning uchun atama integral deb ataladi:

,

bu erda T - vaqtning joriy momenti.
Proportsional-integral-hosil boshqaruvchi uchun yakuniy formulani yozish vaqti keldi:

,

sozlanishi mumkin bo'lgan parametrlardan biri qaerda, hozir uchtasi mavjud: . Ushbu formulani dastur kodidan foydalanish qulay, ammo bu erda darsliklarda keltirilgan formula:

.

Uning bir nechta o'zgarishlari mavjud, masalan, siz integral atama modulini ma'lum bir ruxsat etilgan chegaradan oshmasligi uchun cheklashingiz mumkin (biz buni qilamiz).

Amaliyot

Xo'sh, endi koeffitsientlarni tanlashni mashq qilish vaqti keldi. O'quvchilarga virtual kvadrokopterli JavaScript sahifasi taklif etiladi, ular allaqachon rasmlarda ko'rgan: kvadrokopter uchun PID kontroller parametrlarini tanlash(JSFiddle). Birinchi ishga tushirishda haddan tashqari o'tish darhol ko'rinadi - kerakli pozitsiya atrofida tebranishlar. Tebranishlar to'xtaganda, siz proportsional koeffitsientning "assimetrik" kvadrokopter tufayli xatoga bardosh bera olmasligi ta'sirini kuzatishingiz mumkin ("Asimmetriya" katagiga belgi qo'yilgan). Konfiguratsiya uchun mavjud parametrlar P, I, D. Endi ular bilan nima qilish kerakligini bilasiz. Kvadrokopter ostidagi "aylantirish" kerakli rulon qiymati bilan boshqarilishi mumkin. "Interval (ms):" - tartibga solish oralig'i. Uni kamaytirish aldashdir, lekin barqarorlashtirish sifatiga qanday ta'sir qilishini ko'rish juda foydali.

"Sof" matematikani sevuvchilar uchun biz taklif qilishimiz mumkin mavhum PID kontrollerni sozlash

Kiritilgan parametrlar avtomatik ravishda qo'llanilmaydi: "Ilova" tugmasini bosishingiz kerak. Bir nechta kichik maslahatlar: agar sizga kvadrokopter boshqaruvga javob berish uchun juda sekin bo'lib tuyulsa, siz P ni oshirishingiz mumkin, lekin juda katta P qiymati oshib ketishiga olib kelishi mumkin. D parametri haddan tashqari oshib ketish bilan kurashishga yordam beradi, ammo juda katta qiymatlar tez-tez tebranishlarga yoki yana oshib ketishga olib keladi. I parametr odatda P parametridan 10 - 100 marta kam, chunki uning kuchi tez javob berishda emas, balki vaqt o'tishi bilan to'planishidadir.

PID parametrlarini qo'lda sozlash amaliyotni talab qiladi. Ularni hisoblashning analitik usullari mavjud, biroq ular yaxshi tayyorgarlik va moslashtirilgan muayyan tizimning ko'plab parametrlarini aniq bilishni talab qiladi. Qo'lda tanlash va analitik hisoblash o'rtasidagi o'rta zamin sifatida turli tadqiqotchilar tomonidan taklif qilingan empirik usullarning keng doirasi mavjud.

Bizning 2D kvadrokopterimizda faqat bitta burchak o'zgaradi - rulon burchagi. 3D kvadrokopterni sozlashda har bir burchak uchun uchta mustaqil PID kontrollerlari kerak bo'ladi va ma'lum bir dvigatelni boshqarish barcha kontrollerlar bo'ylab harakatlar yig'indisi bo'ladi.

Birinchi qismning xulosasi

Ushbu maqolada biz asosiy tushunchalar bilan tanishdik: kvadrokopter va parvoz printsipi, pitch, roll, yaw, gaz kelebeği, hover gaz kelebeği, parvoz rejimini barqarorlashtirish, parvoz boshqaruvchisi, giroskop, akselerometr, tezlikni boshqarish moslamasi, PWM, boshqaruvchi kalibrlash, radio kalibrlash, bortdagi qabul qiluvchi, parvoz boshqaruvchisini sozlash interfeysi, qurollangan/qurolsizlangan holatlar, avtomatik qurolsizlantirish.

Shundan so'ng biz formulani qayta ixtiro qildik PID boshqaruvchisi ozgina teginish sonli differentsiallash va integratsiya, va parametrlarni sozlashning qiyin usulini boshdan kechirdim P, I, D yoqilgan virtual kvadrokopter .

Endi, agar siz yorug'lik qilichini dasturlashni yaxshi bilsangiz, kvadrokopterni barqarorlashtirish dasturini boshlashingiz mumkin, yoki yaxshisi, mavjudlariga yangi g'oyalar qo'shishingiz mumkin. ochiq manba loyihalar. Xo'sh, bir yoki ikki hafta ichida, sifatga mos keladigan kuch va vaqtim bo'lsa, men bularning barchasi dasturlashtirilgani, sinovdan o'tgani, qulab tushgani, barmoqlarimni kesib, noma'lum tomonga butunlay uchib ketganligi haqidagi hikoyani davom ettiraman. Agar chindan ham davom etishni istasangiz, bu yerda yoki, masalan, Vkontakte-da men bilan bog'lanishingiz mumkin: bu biroz rag'bat beradi.

Ushbu qismni yakunlab, men MegapirateNG proshivkasida komponentlarni tanlashda va eng murakkab (birinchi!) kvadrokopterni o'rnatishda yordam bergan va ushbu asosiy tushunchalar bo'yicha yuzlab savollarga sabr bilan javob bergan shaxsni eslatib o'tishim kerak: SovGVD, rahmat ! :-)

Ushbu varaqning barchasini isrof qilishga muvaffaq bo'lganlar uchun mukofot sifatida men "ixtiro qilingan" PID kontrollerlari bilan kvadrokopterimiz Arduino Mega 2560 uchun dasturimizda qanday uchishi haqida va'da qilingan kichik videoni joylashtiraman:



Albatta, unda GPS yo'q, tijorat va ommaviy ishlab chiqarilgan mahsulotlarda bo'lgani kabi, u biroz barqarorlikdan mahrum, ammo bu BIZNIKI va biz buni integral koeffitsientning oxirgi omiligacha ichkarida va tashqarisida bilamiz! Va bugungi kunda bunday texnologiyalar biz uchun mavjud bo'lganligi juda ajoyib.