Kako oblikovati svoj kvadrokopter. Kako narediti kvadrokopter na osnovi arduina. Napišemo program za kvadrokopter na arduinu

Pozdravljeni, naši dragi bralci. V tem članku bomo govorili o tem, kako sestaviti kvadrokopter z uporabo Arduina. To ni najlažja, čeprav zelo razburljiva naloga, katere rezultat bo videz majhnega drona, zasnovanega, sestavljenega in konfiguriranega. z lastnimi rokami. Takoj pridržimo, da govorimo o najcenejšem možnem dronu iz najbolj dostopnih komponent.

Preden začnete sestavljati kvadrokopter z lastnimi rokami, morate pridobiti vse potrebne dele. Možgani našega domačega izdelka bodo krmilnik letenja Arduino Uno. Njegove zmogljivosti so več kot dovolj za upravljanje drona.

Poleg mikrokontrolerja bomo potrebovali:

  • Baterija (po možnosti več) 3,7 V
  • Plošča MPU-6050 (žiroskop in merilnik pospeška sta nameščena na njej)
  • Tranzistor ULN2003A
  • Komutatorski motorji z votlim rotorjem 0820
  • Žice

Poudariti je treba nekaj točk. Ker zbiramo, je naša izbira padla na komutatorske motorje z votlim rotorjem (ti brezjedrni motorji). Niso niti približno tako zanesljivi kot brezkrtačni motorji, so pa veliko cenejši. Poleg tega lahko storite brez dodatnih regulatorjev hitrosti.

Toda brez žiroskopa in merilnika pospeška je nemogoče. Žiroskop je nujen, da lahko kvadrokopter vzdržuje dano smer gibanja, medtem ko se merilnik pospeška uporablja za merjenje pospeška. Brez teh naprav bi bilo upravljanje helikopterja veliko težje (če ne nemogoče), saj dajejo podatke za signal, ki uravnava hitrost vrtenja propelerjev.

Okvirja nismo uvrstili na seznam potrebnih delov. Lahko ga kupite ali pa 3D natisnete okvir, nosilce in nosilce za motorje. Druga možnost se nam zdi boljša, še posebej, ker lahko projekte kvadrokopterjev zlahka najdete na internetu.

Okvir, natisnjen na tiskalniku, ne bo le lahek, ampak tudi vzdržljiv. Če pa nimate dostopa do 3D tiskalnika, lahko naročite okvir.

Navodila za sestavljanje po korakih

Kako natisniti okvir in pritrdilne elemente

3D tiskalnike lahko najdete na številnih univerzah, laboratorijih in coworking prostorih. Pogosto je dostop do njih brezplačen. Sami lahko ustvarite modele za tiskanje, na primer s programom Solidworks. Lahko pa uporabite že pripravljene rešitve in po potrebi spremenite parametre.

Kako nastaviti žiroskopski merilnik pospeška

Za konfiguracijo merilnika pospeška-žiroskopa (I2C) priporočamo uporabo naslednje knjižnice. Plošče v nobenem primeru ne priključite na 5V napetost, sicer jo takoj poškodujete.


Naj vam na kratko povemo, zakaj je I2C plošča s senzorji zanimiva. Opazno se razlikuje od običajne plošče merilnika pospeška s tremi analognimi izhodi za osi X, Y, Z. I2C je vmesniško vodilo, ki omogoča prenos znatnih količin podatkov prek logičnih digitalnih impulzov.

Na plošči ni veliko analognih izhodov in to je velik plus I2C, saj bi drugače morali uporabiti vsa vrata na Arduinu za sprejemanje podatkov iz žiroskopa in merilnika pospeška.

Diagram povezave z Arduinom

Preden lahko plošča I2C komunicira z Arduinom, jo ​​je treba povezati s krmilnikom.

Zanima nas skica kode skenerja I2C, oziroma njegova koda.

Kopirajte programsko kodo, jo prilepite v prazno skico in jo nato zaženite. Prepričajte se, da je vzpostavljena povezava z 9600 (za to zaženite Arduino IDE prek Orodja-Serijski Monitor). Prikazati bi se morala naprava I2C z naslovom 0x68 ali 0x69. Zapišite ali si zapomnite naslov. Če naslov ni dodeljen, je najverjetneje težava v povezavi z elektroniko Arduino.

Nato potrebujemo skico, ki lahko obdela podatke žiroskopa in merilnika pospeška. Na internetu je veliko možnosti in najti pravo ni problem. Najverjetneje bo v arhivirani obliki. Razpakirajte preneseni arhiv, odprite Arduino IDE in dodajte knjižnico (skica-uvoz knjižnice-dodaj knjižnico). Potrebovali bomo mapi MPU6050 in I2Cdev.

Odprite MPU6050_DMP6 in natančno preglejte kodo. Ne bo vam treba izvajati nobenih zapletenih dejanj, če pa je bil dodeljen naslov 0x60, morate odkomentirati vrstico na vrhu (najdete jo pod #includes) in napisati pravilen naslov. Na začetku je tav določen kot 0×68.

Prenesemo program, odpremo okno monitorja prek 115200 in preprosto sledimo navodilom. Čez nekaj trenutkov boste prejeli podatke iz žiroskopa/pospeška. Nato je treba senzorje umeriti.

Postavite ploščo na ravno površino in zaženite skico MPU6050_calibration.ino (lahko jo najdete na internetu). Preglejte kodo, privzeti naslov je 0x68. Po zagonu programa boste imeli podatke o odstopanjih (odmik). Zapišite ga, potrebovali ga bomo v skici MPU6050_DMP6.

To je to, imate delujoč žiroskop in merilnik pospeška.

Program za Arduino

Program vam bo pomagal upravljati dron. Algoritem za stabilizacijo temelji na dveh PID regulatorjih. Ena je za roll, druga za pitch.

Razlika v hitrostih vrtenja parov propelerjev 1 in 2 je enaka razliki v hitrostih parov propelerjev 3 in 4. Enako velja za pare 1, 3 in 2, 4. PID regulator spremeni razliko v hitrost, po kateri nagib in naklon postaneta nič.

Bodite pozorni na Arduino digitalne zatiče za motorje in ne pozabite spremeniti skice.

Povezava s krmilnikom

Za nadzor nad helikopterjem moramo pridobiti nadzor nad motorji tako, da jih povežemo z Arduinom. Krmilnik oddaja le majhno napetost in tok, zato je neposredna povezava motorjev nesmiselna. Namesto tega lahko namestite več tranzistorjev, da povečate napetost.


Za izdelavo diagrama potrebujemo:

  • Arduino
  • Motorji
  • Tranzistorji

Vse to je sestavljeno na vezju in povezano s konektorji.

Prvi korak je priključitev 4 izhodov PWM (označenih z ~) na tranzistor. Nato priključite konektorje na motorje, ki so priključeni na napajanje. V našem primeru uporabljamo baterijo 5V, vendar bo delovala tudi baterija 3-5V.

Tranzistorji morajo biti ozemljeni in ozemljitev na plošči Arduino mora biti povezana z ozemljitvijo baterije. Motorji se morajo vrteti v pravilni smeri, to pomeni, da morajo delovati tako, da dvignejo helikopter, in ne da ga kotalijo.

Če preklopite kontakt motorja s 5V na tranzistor, boste videli, da bo rotor spremenil smer vrtenja. Ko opravite nastavitev, se vam ne bo treba več vračati k spreminjanju smeri vrtenja rotorja. Zdaj nas zanima hitrost.

Po zagonu in testiranju merilnika pospeška namestimo naše vezje na ProtoBoard. Če ga ni, lahko uporabite navadno vezje, na katerem ste predhodno spajkali tirnice za krmilnik.

Pred spajkanjem merilnika pospeška na ploščo ga je potrebno kalibrirati na vodoravni površini. To bo pomagalo doseči več natančno delo senzor v prihodnosti.

Kako drugače lahko nadgradite svoj štirikolesnik?

Ozko grlo helikopterja so njegovi kolektorski motorji. Če iščete, lahko najdete nekoliko večje in močnejše motorje od tistih, predlaganih v našem članku, vendar ne bo bistvenega povečanja zmogljivosti.


Vendar je bil naš cilj z lastnimi rokami sestaviti poceni kvadrokopter, zato so bili uporabljeni poceni motorji. Brezkrtačni motorji so opazno dražji, vendar vam bodo dali opazno več moči in zanesljivosti. Prav tako jih bo treba kupiti z regulatorji hitrosti, vendar je to resnično učinkovita nadgradnja.

Izbira plošče Arduino Uno je posledica dejstva, da lahko z nje povsem enostavno odstranite čip in ga postavite na ploščo ProtoBoard. To vam omogoča, da zmanjšate težo drona za 30 gramov, vendar boste morali v vezje vključiti dodatne kondenzatorje. Primerno Arduino plošča Pro Mini.

Glede Arduino programi, potem ga je mogoče relativno enostavno spremeniti in dopolniti z novimi funkcijami. Glavna stvar je, da je dron z njeno pomočjo sposoben avtomatski način stabilizirajte svoj položaj.

Glavna ideja projekta je ustvariti poceni kvadrokopter, ki ima avtonomno napajanje in algoritem stabilizacije letenja z uporabo Arduina.

Poleg Arduina bomo potrebovali še žiroskop/merilnik pospeška in motorje s ščetkami. Zgornji projekt ne obravnava metod za nadzor letenja kvadrokopterja, vendar jih je vsekakor mogoče dodati. Cena tega kvadrokopterja je približno 60 $.

Kaj je kvadrokopter?

Prepričan sem, da večina tistih, ki berejo ta članek, že ve, kaj je kvadrokopter. Če ne, je tukaj kratek opis teh čudovitih naprav.

Kvadrokopter je letalna naprava s štirimi "nogami", od katerih ima vsaka motor s propelerjem. Kvadrokopterji so v bistvu podobni helikopterjem, le da njihovo gibanje, vrtenje in nagib zagotavlja sinhrono delovanje štirih propelerjev. Poleg tega imajo kvadrokopterji tak koncept, kot je "pitch" - vrtenje okoli vzdolžne osi. Za stabilizacijo letenja kvadrokopterja se dva propelerja vrtita v eno smer (v smeri urinega kazalca), dva propelerja pa v nasprotni smeri (nasprotna smer). Zahvaljujoč tej zmožnosti lebdenja v enem položaju v zraku se kvadrokopterji uporabljajo predvsem za fotografiranje iz zraka in video snemanje. Seveda se kvadrokopterji in druge podobne naprave z več motorji uporabljajo v reševalnih akcijah, policiji, vojski itd. IN Zadnje čase stroški sestavnih delov za proizvodnjo kvadrokopterjev so se močno znižali in mnoga podjetja so jih začela proizvajati. Nakup končnega izdelka danes ne bo problem.

Torej ste že malo ugotovili, kaj je kvadrokopter, zdaj pa preidimo na to Kratek opis postopek njegove izdelave.

Prva stvar, ki smo jo naredili, je bilo nakupovanje v Googlu in iskanje komponent, ki bi jih potrebovali za izdelavo.

Največkrat se uporabljajo mikrokontrolerji in brezkrtačni (ventilski) motorji. Odločeno je bilo, da se kot krmilnik uporabi Arduino, saj je idealna platforma glede na ceno. Prva težava, ki se je pojavila, so bili brezkrtačni motorji. Ne pozabite, da se osredotočamo na proračun v višini 60 USD. Cena enega brezkrtačnega motorja, ki ga lahko uporabimo v našem dizajnu kvadrokopterja, se giblje od 20 do 60 dolarjev! Poleg tega uporaba teh motorjev zahteva vgradnjo dodatnih krmilnikov - regulatorjev hitrosti. Zato so se odločili za uporabo krtačenih motorjev. Dimenzije našega kvadrokopterja so majhne, ​​zato smo nabavili motorje z relativno nizkim navorom. Google je predlagal, da kvadrokopterji s podobnimi pogoni obstajajo. Najdeni motorji lahko dvignejo do 55 gramov teže, kar nam kar ustreza. Naslednji korak je reševanje problemov stabilizacije motorjev z uporabo giroskopov in merilnikov pospeška. Žiroskop je naprava, ki s pomočjo zemeljske gravitacije določa naklonski kot (orientacijo) v prostoru. Klasična zasnova žiroskopa je sestavljena iz prosto vrtečega se diska, imenovanega rotor. Rotor je nameščen na osi, ki se nahaja v središču večjega, stabilnejšega kolesa. Ko se os vrti, ostane rotor v statičnem stanju, ki ustreza težišču. Merilnik pospeška je kompaktna naprava, ki se uporablja za merjenje pospeška. Ko predmet zapusti stanje mirovanja (se začne premikati), merilnik pospeška zabeleži tresljaje, ki nastanejo med tem gibanjem. Merilniki pospeška uporabljajo mikroskopske kristale, ki ob udarcu ustvarijo napetost. Ta napetost se odstrani in nastane vrednost pospeška. Ta dva senzorja sta potrebna v kvadrokopterju. Na podlagi njihovih odčitkov se generira krmilni signal, ki uravnava hitrost vrtenja motorjev, da zagotovi kotanje, gibanje ali stabilizacijo našega kvadrokopterja.

Potrebne komponente, deli in oprema

Za projekt kvadrokopterja, ki ga upravlja Arduino, bomo potrebovali:

  • - žice;
  • - litijeve baterije pri 3,7 V;
  • - tranzistor: ULN2003A Darlington Transistor (lahko vzamete tranzistor, ki podpira večje obremenitve);
  • - motorji: 0820 Motorji brez jedra;
  • - mikrokrmilnik: Arduino Uno;
  • - merilnik pospeška/žiroskop: plošča MPU-6050 (poceni in vesela možnost vse-v-enem);
  • - 3D tiskalnik ali dostop do njega za tiskanje delov zasnove kvadrokopterja;
  • - orodje (vključno s spajkalnikom in sposobnostjo njegove uporabe!).
  • KUPITE 3,7 V litijeve baterije (pozor, med ponujenimi izdelki morate najti točno tistega, ki vam ustreza!);

3-D tiskanje delov kvadrokopterja

Eden od prvih korakov je ustvariti okvir našega kvadrokopterja. Odločeno je bilo ubrati pot najmanjšega odpora in natisniti okvir na 3D tiskalniku. Poleg enostavne izdelave je okvir, natisnjen na 3D-tiskalniku, precej lahek zahvaljujoč satnemu tisku. Deli so bili zasnovani v Solidworksu. Spodaj so vsi trdni modeli. Preprosto jih lahko prenesete in pošljete v tisk. Podrobnosti so shranjene v formatu .stl. Če želite, jih lahko varno spremenite in spremenite z istim Solidworksom. Modeli so parametrični, tako da če se odločite za uporabo drugih motorjev, morate samo spremeniti nekaj parametrov v modelu in dobili boste že pripravljen okvir za vaše dimenzije kvadrokopterja.


Kot rezultat boste dobili nekaj takega:



Nastavitev merilnika pospeška-žiroskopa (I2C)


V tem primeru je bila uporabljena plošča MPU6050 podjetja SparkFun. Na Amazonu stane približno 10 dolarjev in dobro deluje. Podobna Kitajska na Aliexpressu ali Ebayu ponuja podobne plošče do 5 USD. Deluje tudi odlično.

Kaj je I2C?

Vklopljeno preproste plošče merilnik pospeška, je vse logično in jasno: ima ločene analogne izhode za osi X, Y in Z. Vsak izhod ustreza ločeni osi merilnika pospeška. Če zdaj pogledate ploščo I2C, boste razumeli, da je vse nekoliko bolj zmedeno. I2C je komunikacijski standard, pri katerem se velike količine informacij prenašajo z uporabo digitalnih logičnih impulzov namesto analognih izhodov. MPU6050 vam omogoča 6 nadzorovanih osi (3 za žiroskop in 3 za merilnik pospeška). Če bi bili vsi analogni, bi morali uporabiti vsa analogna vrata na Arduino Uno. S protokolom I2C uporabljamo veliko manj pinov za povezavo.

Diagram povezave Arduino

Shema povezave za ploščo MPU6050 je prikazana spodaj. Upoštevajte, da knjižnica Arduino predvideva uporabo teh zatičev. Praviloma, tudi če imate ploščo drugega proizvajalca, so nožice označene enako, zato shema povezave ostane enaka.

Če ga napajate na 5 V, se lahko plošča poškoduje, zato bodite previdni in uporabite 3,3 V. Nekatere plošče MPU6050 imajo regulator napetosti, ki deluje kot varovalka, vendar še vedno ni vredno tveganja. Če ima vaša plošča pin AD0, mora biti priključen na maso (GND). V našem primeru je VIO pin priključen na AD0 na sami plošči, tako da ni potrebe po priključitvi AD0 pina.

Skica za Arduino

Na tej točki boste potrebovali nekaj znanja o programiranju Arduino. Če nečesa ne razumete, se ustavite in poskusite ugotoviti. Spodnja pojasnila vam bodo pomagala pri številnih vprašanjih, vendar je nemogoče opisati vse možne nianse.

Ko povežete MPU-6050 z vašim Arduinom, ga vklopite in prenesite skico kode optičnega bralnika I2C.

Kopirajte programsko kodo, jo prilepite v prazno skico in jo zaženite. Odprta serija Arduino monitor IDE (Orodja->Serijski monitor) in se prepričajte, da ste povezani z 9600 (spodaj levo).

Če ste vse naredili pravilno, bi morala biti naprava I2C zaznana in ji dodeliti naslov 0x68 ali 0x69. Zapišite. Če se pojavijo napake, preverite povezavo.

Zdaj morate naložiti skico, ki obdeluje informacije iz merilnika pospeška/žiroskopa. Po internetu obstaja več kot ena različica podobnih skic, priporočamo uporabo te. Ko sledite povezavi, kliknite »Prenesi Zip«. Po prenosu razpakirajte arhiv. Nato odprite Arduino IDE. Pojdite na skico->uvoz knjižnice -> dodaj knjižnico. Dodati boste morali obe mapi: I2Cdev in MPU6050.

Ko namestite knjižnice, odprite datoteko MPU6050_DMP6 (MPU6050 -> Primeri). Priporočam, da si ga ogledate, tudi če niste posebej vešči kodiranja. Če ste dodelili naslov 0x69, morate odkomentirati eno vrstico na vrhu kode (za #includes), saj je privzeta vrednost 0x68. Program bi se zdaj moral prevesti.

Prenesite program, odprite okno serijskega monitorja (tokrat z 115200) in sledite navodilom. Čestitamo, saj bi zdaj morali imeti možnost pridobiti vrednosti iz merilnika pospeška/žiroskopa prek Arduina!

Zdaj zaženite kalibracijsko skico, ki jo lahko prenesete tukaj: MPU6050_calibration.ino (spet so privzeta vrata 0x68, vendar jih lahko spremenite). Zabeležite podatke o odmiku, ki jih prejmete. Te podatke boste uporabili v skici MPU6050_DMP6 (in v naslednjem programu za kvadrokopter).

Zdaj imate delujoč, vsekakor uporaben merilnik pospeška/žiroskop.

Povezovanje z Arduinom

Ogledali smo si povezavo merilnika pospeška. Naslednji korak je pridobiti Arduino za krmiljenje motorjev. Plošča Arduino ne daje izhoda velik pomen tok in napetost, zato namesto da bi motorje priključili neposredno na digitalne izhode plošče, uporabimo tranzistorje za "ojačitev" napetosti.

Začnimo sestavljati električni tokokrog. Na tej stopnji bomo potrebovali Arduino, motorje, tranzistorje (vezje in priključke). Shema povezave je podana spodaj, pod potrebnimi besedilnimi pojasnili. Povežite štiri izhode PWM (označene z ~ na Arduinu) na tranzistor, kot je prikazano na slikah. Po tem priključite konektorje na motorje, ki so priključeni na vir napajanja. Zgornji projekt kvadrokopterja je uporabljal napajalnik 5 V, vendar bi morala delovati tudi baterija 3–5 V.

Prepričajte se, da so tranzistorji ozemljeni in da je ozemljitev Arduina povezana z ozemljitvijo napajalnika. Prepričajte se, da se rotorji motorja vrtijo v pravo smer (morajo biti sposobni dvigniti kvadrokopter, ne pa kotaliti). Če preklopite pin motorja s 5V na tranzistor, se bo rotor motorja začel vrteti v nasprotni smeri. Po konfiguraciji vam ne bo več treba spreminjati smeri vrtenja motorjev. Spremenili bomo samo hitrost.

Ko zaženete merilnik pospeška in ga preizkusite, morate vse namestiti na ProtoBoard (za namestitev na Arduino lahko uporabite vezje, na katerega prispajkate tirnice. Lahko greste bolj elegantno in kupite Proto Shield). Tranzistorja ne smete spajkati na prototipno ploščo. Za to je bolje uporabiti vtičnico s kontakti, da jo lahko kadar koli zamenjate.

V našem primeru smo merilnik pospeška prispajkali na ploščo in šele nato opravili kalibracijo. Toda praksa kaže, da to ni povsem pravilno. Da bi povečali natančnost odčitkov žiroskopa/pospeška, je bolje, da ga najprej kalibrirate na ravni površini in šele nato spajkate.










Če niste seznanjeni s temi krmilniki, lahko preberete o krmiljenju PID na Wiki. Razred PID za Arduino uporablja tri vhode: nastavljeno vrednost, meritev in izhod. Izhod je odvisen od trenutnega položaja in meritev. PID krmilnik poskuša spremeniti izhod tako, da meritve ustrezajo ciljnemu položaju. Algoritem uporablja zanimivo matematiko. Algoritem PID regulacije poskuša delovati tako, da vrednosti ostanejo čim bolj stabilne.

Naš algoritem uporablja dva krmilnika PID za stabilizacijo: enega za naklon in enega za nagib. Razlika v hitrosti vrtenja propelerjev 1 in 2 bo enaka razliki v hitrosti propelerjev 3 in 4. Enako velja za pare 1,3 in 2,4. Po tem krmilnik PID spremeni razliko v hitrosti, tako da naklon in nagib postavi na nič.

Ne pozabite preveriti, kateri digitalni zatiči iz Arduina gredo na motorje in ustrezno spremeniti skico.

Nadaljnja posodobitev kvadrokopterja z uporabo Arduina


Glavni težavi majhnega kvadrokopterja sta cena in teža. Lahko iščete večje in močnejše motorje, vendar to ne bo posebej izboljšalo njegove zmogljivosti. Kar vam bo res pomagalo (če ste pripravljeni odšteti več denarja) so brezkrtačni (ventilski) motorji. Kar zadeva značilnosti, so za red velikosti boljši, vendar morate poleg njih uporabiti krmilnike hitrosti, zaradi česar bo kvadrokopter dražji.

Da bi zmanjšali težo zasnove, je najbolje uporabiti Arduino Uno, saj lahko za ta model krmilnika odstranite "šiti" mikroprocesorski čip in ga namestite neposredno na vašo ProtoBoard. Posledično se boste zredili za približno 30 gramov, kar je v takem merilu precej. Poleg tega boste morali uporabiti več kondenzatorjev itd. Ali kako Alternativna možnost, lahko uporabite Arduino Pro Mini.

Program Arduino, ki je bil napisan in predstavljen v prejšnjem poglavju, lahko preprosto razširimo in obogatimo z dodatnimi funkcionalnostmi. Najpomembneje je, da lahko v tej fazi kvadrokopter že samodejno stabilizira let. Če želite nastaviti daljinsko upravljanje, lahko pogledate proti oddajnikom/sprejemnikom ali modulom bluetooth. Na splošno imate zdaj osnovo, še več pa je prostora za nadaljnje posodabljanje.

Pustite svoje komentarje, vprašanja in delite Osebna izkušnja spodaj. V razpravah se pogosto rodijo nove ideje in projekti!

Kvadrokopter ima tudi avtonomno napajanje. Skupni strošek takega domačega izdelka je približno 60 dolarjev.

Če imate večjo količino, potem je bolj obetavno, da svoj domači izdelek opremite z motorji brez krtačk z ustreznimi krmilniki.

Za stabilizacijo leta se uporabljata žiroskop in merilnik pospeška. Za določitev kota naklona kvadrokopterja glede na zemeljsko gravitacijo je potreben žiroskop. Za izračun pospeška je potreben merilnik pospeška.

Materiali in orodja:
- litijeve baterije (3,7 V);
- žice;
- tranzistor ULN2003A Darlington Transistor (lahko uporabimo močnejše tranzistorje);
- motorji tipa 0820 Coreless Motors;
- mikrokrmilnik Arduino Uno;
- plošča MPU-6050 (to je tako žiroskop kot merilnik pospeška);
- razpoložljivost 3D tiskalnika ali dostop do njega;
- potrebna orodja.

Proizvodni proces:

Prvi korak. Izdelava telesa kvadrokopterja
Telo je narejeno zelo hitro in preprosto. Natisnjena je s 3D tiskalnikom. Ustvarjanje okvirja na ta način je dobro, ker je svetel, vse zahvaljujoč satnemu tisku. Načrtovanje delov je potekalo v programu Solidworks. S tem programom lahko urejate parametre ohišja in po potrebi naredite svoje spremembe.




Ko je okvir kvadrokopterja natisnjen, lahko namestite motorje in nanje spajkate žice.




Drugi korak. Povezovanje Arduino
Kako priključiti ploščo MPU6050 si lahko ogledate na spodnjem diagramu. To je pomembno razumeti Arduino knjižnica pomeni povezavo prek teh stikov. Če se uporablja vezje drugega proizvajalca, je pomembno zagotoviti, da so kontakti razporejeni v istem zaporedju.


Za napajanje plošče se uporablja samo 3,3 V, če jo napajate s 5 V, se poškoduje. Nekatere plošče MPU6050 imajo varovalko, ki ščiti sistem pred visokonapetostni, vendar je bolje, da ne tvegate. Če ima plošča pin AD0, mora biti priključen na maso (GND). V tem primeru je VIO priključen na pin AD0 neposredno na plošči, tako da ni potrebe po priključitvi pina AD0.












Da bi Arduino krmilil motorje, bodo potrebni tranzistorji, zahvaljujoč jim bo mogoče napajati motorje z visoko napetostjo. Kako so vsi elementi povezani, si lahko podrobneje ogledate na diagramu.

Tretji korak. Skica za Arduino
Ko je MPU-6050 povezan z Arduinom, ga morate vklopiti in prenesti skico kode optičnega bralnika I2C. Nato morate kopirati programsko kodo in jo prilepiti v prazno skico. Po tem morate odpreti serijski monitor Arduino IDE (Orodja->Serijski monitor) in se prepričati, da je 9600 povezan.
Če je vse opravljeno pravilno, bo naprava I2C zaznana, dodeljen ji bo naslov 0x68 ali 0x69, treba ga je zapisati.
Nato se naloži skica, ki obdeluje informacije iz žiroskopa in merilnika pospeška. Na internetu jih je veliko, vendar je najbolje uporabiti.


Na zadnji stopnji boste morali umeriti vrednosti žiroskopa in merilnika pospeška. Če želite to narediti, morate najti ravno površino in nanjo postaviti MPU6050. Nato se zažene kalibracijska skica, dobljeni podatki o odstopanju se zabeležijo in nato uporabijo v skici MPU6050_DMP6.

Četrti korak. Program za Arduino
Zahvaljujoč objavljenemu programu se kvadrokopter stabilizira in visi v stabilnem stanju. Nato se s tem programom upravlja kvadrokopter.


Za stabilizacijo kvadrokopterja sta uporabljena dva PID krmilnika. Eden je potreben za nagib, drugi pa za roll. Krmilnik meri hitrost vrtenja propelerjev in na podlagi tega se krmili kvadrokopter.

Peti korak. Modifikacija kvadrokopterja

Glavna težava majhnega in poceni kvadrokopterja je njegova teža. Da bi rešili to težavo, morate namestiti močnejše in lažje motorje, najbolj primerni so brezkrtačni motorji, imenujemo jih tudi ventilski motorji. So veliko boljši od ščetk, vendar morate zanje kupiti tudi regulatorje hitrosti, zato se stroški domačih izdelkov močno povečajo.

V tem članku bomo govorili o kvadrokopterjih, ki temeljijo na Arduinu, njihovih prednostih in cenovnih kategorijah.

Kvadrokopter s funkcijami računalniške naprave.


IN sodobni svet Obstaja veliko različnih modelov kvadrokopterjev, ki so zasnovani za uporabo v različne namene. Niso le igrače, kot so jih dojemali že od samega začetka nastopa na domačem trgu. Zdaj so naprave, zasnovane za opravljanje številnih različnih vrst nalog. V mnogih primerih se uporabljajo za poklicne ustvarjalne dejavnosti. Za pravilno delovanje kvadrokopterja mora biti v proizvodnji poleg osnove opremljen z dodatnimi deli. Za upravljanje naprave z daljinskim upravljalnikom daljinec nanj je treba namestiti procesor in številne druge dele elektronskega sistema. Danes obstaja veliko število procesorjev, ki se uporabljajo za izdelavo visokokakovostnih in funkcionalnih kvadrokopterjev. Med njimi izstopa Arduino. Gre za precej zmogljiv procesor, ki kvadrokopterju omogoča nekatere funkcije računalniške naprave.

Danes je kvadrokopter, ki uporablja Arduino, mogoče enostavno kupiti v kateri koli spletni trgovini, ki je specializirana za proizvodnjo takšnih naprav. Zahvaljujoč temu procesorju so ustvarjene največje in najmočnejše naprave v smislu tehničnih parametrov. Primerni so za najrazličnejša opravila. Namenjeni so tako rednim poletom kot profesionalnim snemanjem. Zahvale gredo močan procesor z lahkoto opravljajo vse naloge, ki jih uporabniki dodelijo. Hitrost izmenjave podatkov z daljinskim upravljalnikom se bistveno poveča. Poleg tega se videoposnetki, posneti v realnem času, takoj prenesejo v mobilne naprave, ki sta povezana s kvadrokopterjem na ta trenutek. Treba je opozoriti, da mnogi uporabniki sami sestavljajo naprave, ki temeljijo na procesorju Arduino. Na voljo je v skoraj vsaki specializirani trgovini.

Značilnosti kvadrokopterja, ki temelji na Adruinu.


Naprave Arduino so zelo priljubljene, saj so zelo priročne za uporabo. Tovrstni kvadrokopterji hitro opravijo vse naloge, ki jih dodelijo uporabniki. S tem procesorjem je mogoče dobiti visokokakovostno napravo, ki vam bo omogočila neomejene možnosti med običajnim letom in tudi med snemanjem. Slike so pridobljene z visoko ločljivostjo. Naprave, ki temeljijo na Arduinu, delujejo gladko. Zahvaljujoč temu procesorju lahko naprava sama opravlja svoje delo v daljšem časovnem obdobju in njen sistem ne bo odpovedal. Naprave vklopljene najnovejše različice Arduini niso proračunski. Vendar pa to uporabnikom omogoča, da dobijo kvadrokopterje profesionalne ravni, ki bodo hitro in nemoteno opravili vse naloge, ki jih naložijo potrošniki. Zagotavlja zanesljivo delovanje kvadrokopterja.



Pozdravljeni Habrovci!
V tej seriji člankov bomo odprli pokrov kvadrokopterja malo bolj, kot zahteva hobi, napisali, konfigurirali in zagnali pa bomo tudi lasten program za krmilnik letenja, ki bo navadna plošča Arduino Mega 2560.

Pred nami je:

  1. Osnovni pojmi (za pilote helikopterjev začetnike).
  2. PID regulatorji z interaktivno spletno demonstracijo delovanja na virtualnem kvadrokopterju.
  3. Dejanski program za Arduino in konfiguracijski program za Qt.
  4. Nevarni preizkusi kvadrokopterja na vrvi. Prvi leti.
  5. Trk in izguba na polju. Samodejno iskanje iz zraka z uporabo Qt in OpenCV.
  6. Končni uspešni testi. Povzemanje. Kam iti?

Gradivo je obsežno, vendar ga bom poskušal strniti v 2-3 članke.
Danes pričakujemo: spojler z videoposnetkom letenja našega kvadrokopterja; osnovni pojmi; PID regulatorji in praksa izbire njihovih koeficientov.

Čemu je vse to namenjeno?

Akademsko zanimanje, ki mimogrede ne zasleduje samo mene (, ,). In seveda za dušo. Med delom sem se zelo zabaval in čutil pravo, nepopisno srečo, ko je “IT” poletelo z mojim programom :-)

Za kogar?

To gradivo bo morda zanimivo tudi za ljudi, ki so daleč ali se šele nameravajo vključiti v sisteme z več rotorji. Zdaj pa se pogovorimo o namenu glavnih komponent kvadrokopterja, kako medsebojno delujejo, o osnovnih konceptih in načelih letenja. Seveda lahko vse znanje, ki ga potrebujemo, najdemo na spletu, vendar nas ni mogoče prisiliti, da ga iščemo po prostranem internetu.

Ne da bi pri tem ogrozili svoje razumevanje osnovnih pojmov, preskočite vse, kar veste, do naslednjega neznanega pojma, poudarjeno s krepkim tiskom, ali na nerazumljivo ilustracijo.

NE #1!

Ne začnite pisati svojega programa za krmilnik letenja, dokler ne preizkusite že pripravljenih rešitev, ki jih je zdaj kar nekaj (Ardupilot, MegapirateNG, MiltiWii, AeroQuad itd.). Najprej je nevarno! Za upravljanje kvadrokopterja brez GPS-a in barometra je potrebna praksa, še bolj pa, če se zatika, prevrne ali ne leti točno tam, kjer bi moral - in to je med prvimi preizkusi skoraj neizogibno. Drugič, programiranje vam bo veliko lažje, če boste razumeli, kaj je treba programirati in kako naj bi na koncu delovalo. Verjemi mi: matematika letenja je le majhen del programske kode.

NE #2!

Ne lotevajte se pisanja lastnega programa za kontrolorja letenja, če vas ne zanima akademski interes in potrebujete le tisto, kar že dolgo zmorejo že pripravljene rešitve (leteti, fotografirati, snemati videe, leteti naprej). naloga itd.) Medtem ko vse napišete sami, bo trajalo veliko časa, tudi če niste sami.

Osnovni pojmi


Kvadrokopterji so na voljo v različnih različicah, vendar jih vse povezujejo štirje glavni rotorji:
Kljub navidezni simetriji je zelo pomembno, da pilot razloči, kje je sprednji del kvadrokopterja (prikazano s puščico). Tukaj, kot pri radijsko vodenih modelih avtomobilov: ko je dan ukaz »naprej«, kvadrokopter ne leti tja, kamor gleda pilot, ampak tja, kamor kaže namišljeni nos kvadrokopterja. To je polno nevarnosti: začetnikom je težko vrniti k sebi napravo, ki jo je zajel veter, nekako obrnjen vstran (seveda ne govorimo o letenju v prvoosebni kameri in o »pametnem ” načini letenja z uporabo kompasa in GPS-a.) Rešitev To težavo lahko delno rešijo sprednji vijaki ali nosilci druge barve, nekakšna krogla spredaj ali različne barve LED. A vse to se izkaže za neuporabno, ko se pepelats hitro spremeni v piko nad obzorjem.

Leteli bomo na okvirju kvadrokopterja v obliki črke "X", ker mi je bolj všeč na videz. Vsak dizajn ima svoje prednosti in namen. Poleg kvadrokopterjev obstajajo tudi drugi multikopterji. Tudi če ne štejemo eksotičnih možnosti, jih je še vedno cel kup!



Ugotovimo, kako je znotraj strukturiran naš kvadrokopter in kaj naj počne krmilnik letenja, ki ga nameravamo programirati.




Koti pitch, roll and yaw (naklon, zavihtek, nihanje)- koti, s katerimi je običajno določiti in nastaviti orientacijo kvadrokopterja v prostoru.


Včasih besedo "kot" izpustijo in preprosto rečejo: pitch, roll, yaw. Toda glede na Wikipedijo to ni povsem točno. Let kvadrokopterja v zahtevani smeri dosežemo s spreminjanjem teh treh kotov. Na primer, če želite leteti naprej, se mora kvadrokopter nagniti zaradi dejstva, da se zadnji motorji vrtijo nekoliko močneje od sprednjih:

Plinski kvadrokopter- aritmetično povprečje med hitrostmi vrtenja vseh motorjev. Več kot je plina, večji je skupni potisk motorjev, bolj vlečejo kvadrokopter gor(NE NAPREJ!!! “Copati po tleh” tukaj pomeni najhitrejši vzpon). Običajno merjeno v odstotkih: 0 % - motorji so ustavljeni, 100 % - vrtijo se z največjo hitrostjo. Plin lebdi- najmanjši nivo plina, ki je potreben, da kvadrokopter ne izgubi višine.

Plin, naklon, nagibanje, odklon - če lahko nadzorujete te štiri parametre, potem lahko nadzorujete kvadrokopter. Včasih jih imenujemo tudi nadzorni kanali. Če ste kupili dvokanalni daljinski upravljalnik, kvadrokopterja ne boste mogli upravljati. Trikanalni je bolj primeren za majhne helikopterje: lahko letite brez nadzora nagiba, vendar na kvadrokopterju ni primeren. Če želite spremeniti načine letenja, boste morali odšteti petkanalni daljinski upravljalnik. Če želite nadzorovati nagib in panoramo kamere na krovu, sta na voljo še dva kanala, čeprav profesionalci za to uporabljajo ločen daljinski upravljalnik.

Obstaja veliko načinov letenja. Uporabljajo se GPS, barometer in daljinomer. Vendar želimo implementirati osnovno - stabilizacijski način ( stab, stabilizirati, leti v »škrbi«), pri katerem kvadrokopter ohranja kote, ki so mu podani z daljinca, ne glede na zunanje dejavnike. V tem načinu lahko v odsotnosti vetra kvadrokopter visi skoraj na mestu. Pilot bo moral kompenzirati veter.

Smer vrtenja vijakov ni izbrana naključno. Če bi se vsi motorji vrteli v eno smer, bi se kvadrokopter zaradi ustvarjenih navorov vrtel v nasprotni smeri. Zato se en par nasprotnih motorjev vedno vrti v eno smer, drugi par pa v drugo. Učinek pojava rotacijskih navorov se uporablja za spremembo kota zasuka: en par motorjev se začne vrteti nekoliko hitreje od drugega in zdaj se kvadrokopter počasi obrne proti nam (kakšna groza):



  • LFW - levo spredaj v smeri urinega kazalca (levo spredaj, v smeri urinega kazalca)
  • RFC - desno spredaj v nasprotni smeri urinega kazalca (desno spredaj, v nasprotni smeri urinega kazalca)
  • LBC - rotacija levo nazaj v nasprotni smeri urinega kazalca (levo nazaj, rotacija v nasprotni smeri urinega kazalca)
  • RBW - vrtenje desno nazaj v smeri urinega kazalca (desno zadaj, vrtenje v smeri urinega kazalca)

Nadzoruje hitrost vrtenja motorjev kontrolor letenja (kontrolor, možgani). Običajno je to majhna plošča ali škatla s številnimi vhodi in izhodi. Obstaja ogromno število različnih krmilnikov z različnimi nabori zmogljivosti, različno strojno programsko opremo in različnimi nalogami. Tukaj je le nekaj:




Splošna naloga kontrolorja letenja je izvesti krmilni cikel več desetkrat na sekundo, ki vključuje: branje odčitkov senzorjev, branje krmilnih kanalov, obdelavo informacij in izdajanje krmilnih signalov motorjem za izvajanje pilotovih ukazov. To bomo programirali.

Obstaja veliko različnih tipov senzorjev, ki jih je mogoče uporabiti. Uporabili bomo tiste, ki so postali že skoraj obvezni pri vseh kvadrokopterjih triosni žiroskop in triosni merilnik pospeška. Merilnik pospeška meri pospešek, žiroskop meri kotno hitrost. Zahvaljujoč njim kontrolor letenja pozna trenutne kote nagiba, nagiba in nihanja. Ti senzorji so lahko vgrajeni v krmilnik letenja ali zunanji. Postopek izračuna treh kotov na podlagi odčitkov senzorjev je tema za ločen članek. Vendar nam tega tukaj ni treba vedeti: MPU-6050 bo naredil vse namesto nas. To je majhna plošča, ki interno izvaja potrebne izračune in filtriranje ter proizvaja skoraj pripravljene kote z uporabo protokola i2c. Vse, kar moramo storiti, je, da jih preštejemo, obdelamo z ostalimi podatki in pošljemo krmilne signale motorjem.

Motorji na multikopterjih porabijo velike tokove, zato jih krmilnik letenja ne krmili neposredno, temveč prek posebnih gonilnikov strojne opreme, imenovanih regulatorji hitrosti (ESC, regulator, eska). Ti regulatorji se napajajo iz glavne vgrajene baterije, krmilni signal sprejemajo iz krmilnika, na izhodu pa imajo tri žice (A, B, C), ki gredo neposredno na motorje (vsak motor ima svoj regulator !)




“Protokol” komunikacije med regulatorjem in motorjem nam ni tako pomemben kot “protokol” komunikacije med krmilnikom leta in regulatorjem, saj moramo regulator programsko krmiliti iz krmilnika. Obstajajo regulatorji, ki se krmilijo prek i2c, vendar so najpogostejši krmiljeni s pravokotnim signalom z najmanj 0 volti in največ 3-5 voltov (imenuje se PWM oz PWM, in nekateri trdijo, da je bolj pravilno - PPM. Več podrobnosti, na primer).

»Protokol« je močna beseda: za ukaz motorju, naj se vrti z največjo hitrostjo, mora krmilnik poslati impulze, ki trajajo 2 milisekundi, prepletene z logično ničlo, ki traja 10–20 milisekund. Trajanje impulza 1 milisekunde ustreza zaustavitvi motorja, 1,1 ms - 10 % največja hitrost, 1,2 ms - 20 % itd. V praksi trajanje ničle ne igra nobene vloge, pomembno je le trajanje samega impulza.

Kljub vsej navidezni preprostosti je tukaj zaseda: kontrolorji letenja so različni različne nastavitve, regulatorji so različni, najmanjša (1 ms) in največja (2 ms) pa nista univerzalna. Odvisno od številnih dejavnikov se lahko razpon 1–2 ms dejansko izkaže za 1,1–1,9 ms. Da bi regulator in kontrolor govorila popolnoma isti jezik, obstaja postopek kalibracija regulatorja. Med tem postopkom se obsegi krmilnikov spremenijo in postanejo enaki obsegu krmilnika. Postopek je vgrajen v program vsakega krmilnika in vključuje več preprosti koraki(koraki se lahko razlikujejo glede na proizvajalca - preberite navodila!):

  • Izklopite napajanje regulatorja.
  • Odstranite propeler z motorja.
  • Na vhod krmilnika uporabite signal, ki ustreza največji hitrosti vrtenja.
  • Napajajte regulator. Motor mora ostati negiben brez zunanje pomoči.
  • Na vhod krmilnika uporabite signal, ki ustreza najmanjši hitrosti vrtenja.
  • Zaustavite se za 1-2 sekundi, počakajte na značilno škripanje.
  • Izklopite napajanje regulatorja.

Po tem bodo ustrezne meje intervalov vnesene v krmilnik. Pri poskusu vzleta z nekalibriranimi regulatorji so lahko posledice nepričakovane: od nenadnega sunka kvadrokopterja v najbližje drevo do popolne negibnosti motorjev pri kateri koli vrednosti plina.

PWM uporablja popolnoma enak princip vgrajeni sprejemnik. to majhna naprava, ki sprejema radijske krmilne signale s tal in jih posreduje kontrolorju leta. Najpogosteje ima krmilnik letenja za vsak krmilni kanal (plin, korak, nagib itd.) svoj vhod, na katerega se napaja PWM. Logika interakcije je preprosta: ukaz, na primer "70% plin," nenehno gre od tal do sprejemnika, kjer se pretvori v PWM in pošlje krmilniku leta prek ločene žice. Enako s pitch, roll, yaw.

Ker imata sprejemnik in krmilnik svoje prijateljsko razmerje PWM, ju bo treba tudi umeriti: daljinski upravljalniki s sprejemniki se razlikujejo po lastnem območju delovanja. Krmilnik se mora znati prilagoditi. Postopek radijska kalibracija, za razliko od kalibracije regulatorjev, ga bomo morali izdelati sami v okviru letalskega programa. Splošni načrt kalibracije je naslednji:

  • Za vsak slučaj odstranite propelerje z motorjev.
  • Nekako prestavite krmilnik v način radijske kalibracije.
  • Krmilnik začne z radijsko kalibracijo za nekaj deset sekund.
  • V dodeljenem času premaknite vse palice daljinskega upravljalnika v vse smeri, dokler se ne ustavijo.
  • Krmilnik si zapomni maksimume in minimume za vse krmilne kanale med notranji pomnilnik stoletja.
Torej: med radijsko kalibracijo si kontrolor letenja zapomni domete sprejemnikov za vse krmilne kanale; Med kalibracijo ESC se območje krmilnika leta vnese v vse ESC.

Poleg programa za krmilnik letenja je potreben še en program: vmesnik za nastavitev krmilnika letenja. Najpogosteje je to program za osebni računalnik, ki se prek USB-ja poveže s krmilnikom leta in uporabniku omogoča konfiguracijo in preverjanje programa letenja, na primer: zagon radijske kalibracije, konfiguracija stabilizacijskih parametrov, preverjanje delovanja senzorjev, nastavitev poti leta na zemljevid, določi obnašanje multikopterja ob izgubi signala in še veliko več. Naš konfiguracijski vmesnik bomo napisali v C++ in Qt v obliki konzolnega pripomočka. Tukaj je, če pogledate v prihodnost:




Nihče ni imun pred nesrečami. Tudi desetinčni plastični propelerji na majhnih motorjih lahko pustijo na koži krvave modrice, ki bodo bolele še en teden (preverjeno osebno). Z lahkoto si naredite novo ličenje in pričesko, če pritisnete plinsko ročico na daljinskem upravljalniku, medtem ko nosite prižgan kvadrokopter. Zato mora krmilnik letenja zagotoviti vsaj nekaj varnosti: mehanizem oborožen/razorožen. Stanje »razoroženega« kvadrokopterja pomeni, da so motorji izklopljeni in tudi ukaz za poln plin z daljinskega upravljalnika nima učinka, čeprav je napajanje napajano. "Oboroženo" stanje kvadrokopterja pomeni, da ukaze z daljinskega upravljalnika izvaja krmilnik letenja. V tem stanju kvadrokopterji vzletajo, letijo in pristajajo. Kvadrokopter se vklopi in bi moral takoj preiti v izključeno stanje, če ga vklopi nepazljiv pilot, ko palica za plin na daljinskem upravljalniku ni na nič. Da bi helikopter postavil v "oboroženo" stanje, mora pilot narediti nekaj vnaprej dogovorjenih potez s palicami za daljinsko upravljanje. Pogosto je ta gesta držanje leve palice v spodnjem desnem kotu (plin = 0%, vrtenje = 100%) za nekaj sekund. Po tem kontrolor letenja opravi vsaj minimalni samotest in če ga uspešno opravi, " oborožil"(pripravljen za letenje!) Z drugo kretnjo (plin = 0%, odklon = 0%) kvadrokopter" postane razorožen"Še en dober varnostni ukrep je samodejna razorožitev, če je bil plin na ničli 2-3 sekunde.

O motorjih, baterijah, regulatorjih, propelerjih

Izbira komponent za multikopter je tema cele serije člankov. Če nameravate izdelati svoj prvi kvadrokopter, formulirate, za kaj ga potrebujete, in uporabite nasvete izkušenih ali pa vzemite seznam komponent, ki jih je sestavil nekdo drug in na njem uspešno letite.

Kljub temu je za splošno razumevanje koristno poznati glavne točke.

Baterije


Med amaterji in profesionalci so najpogostejši sistemi z več rotorji litijeve polimerne baterije, kot glavni vir energije za vgrajeno elektroniko in motorje. Ločimo jih po zmogljivosti, napetosti in največjem izhodnem toku. Zmogljivost se, kot običajno, meri v amper-urah ali miliamper-urah. Napetost se meri v številu "celic" baterije. Ena "pločevinka" je v povprečju 3,7 voltov. Povsem napolnjena "pločevinka" je 4,2 volta. Najpogostejše baterije so tiste s tremi do šestimi celicami. Največji izhodni tok se meri v amperih in je označen na primer takole: 25C. C je kapaciteta baterije, 25 je množitelj. Če je zmogljivost 5 amperov, lahko taka baterija odda 25 * 5 = 125 amperov. Seveda je bolje vzeti trenutni izhodni parameter z rezervo, vendar v bistvu večji kot je, dražja je baterija. Primer označevanja: 25C 3S 4500mah.

Vsaka banka je ločena baterija. Vsi so spajkani zaporedno. Za enakomerno zaračunavanje vseh bank je predviden balansirni konektor z dostopom do vsake banke posebej in poseben polnilno napravo.

Motorji, propelerji, regulatorji


Glavni parameter brezkrtačnega motorja je njegov kv. To je število vrtljajev na minuto za vsak volt uporabljene napetosti. Najpogostejši motorji so s kv od 300 do 1100. Kv bližje 1000 se običajno izbere za majhne kvadrokopterje (1-2 kilograma plus 500 gramov tovora) in so opremljeni s plastičnimi propelerji do premera 12 palcev. Veliki multikopterji (za dvigovanje dobre in težke foto-video opreme) ali dolgoleteča letala (za beleženje časa letenja) imajo običajno motorje z nizkim kv (300-500) in ogromne karbonske propelerje (premera 15 - 20 palcev). Kv ni edini pomemben parameter motor: pogosto najdete cele tabele odvisnosti moči in potiska motorja od napajane napetosti in vrste nameščenega propelerja. Poleg tega je vsak motor zasnovan za svoje napetostno območje (število baterijskih celic) in svoj največji tok. Če proizvajalec piše 3-4S, ga ne smete uporabljati z baterijami 5S. Enako velja za regulatorje.

Če je motor zasnovan za tok do 30 A, mora biti regulator zasnovan za tok do 30 + 10 A, da se prepreči pregrevanje. Slaba kakovost ali neustrezni regulatorji lahko povzročijo tako imenovane "sinhronizacijske zdrse" in zaustavijo motor med letom, prepoznali pa boste še en izraz z več rotorji: " ujel planet." Še eno pomembna točka- debelina in kakovost žic. Napačna velikost žice ali slab konektor lahko povzroči požar v zraku.

Kot lahko vidite, obstaja veliko odtenkov. Niti polovice jih nisem naštel, zato je kar težko sam izbrati komponente za svoj prvi multikopter.

Stabilizacijska matematika, PID krmilniki (PID)


Če se odločite za multikopterje, se boste prej ali slej morali ukvarjati z nastavitvijo PID regulatorja, saj se ta matematični aparat uporablja pri skoraj vseh stabilizacijskih nalogah: stabilizaciji kotov kvadrokopterja v zraku, letenju in držanju položaja. z uporabo GPS, zadrževanje višine z uporabo barometra, brezkrtačni mehanizmi, stabilizacija video kamere med letom (camera gimbal).

Kupiš dvoosni gimbal kamere, daš tja recimo GoPro, prižgeš in namesto stabilizacije dobiš krče, tresljaje in trzanje, čeprav so vsi senzorji kalibrirani in mehanske težave odpravljene. Razlog so nepravilni parametri PID regulatorjev.

Sestaviš multikopter, umeriš senzorje, regulatorje, radio, vse preveriš, poskusiš vzleteti, pa je v zraku tako dolgočasno, da ga že rahel vetrič prevrne. Ali obratno: tako je oster, da nenadoma vzleti in brez dovoljenja naredi trojni salto. Razlog je še vedno isti: parametri PID regulatorjev.

Za veliko naprav, ki uporabljajo PID regulatorje, obstajajo navodila za nastavitev in celo več poleg številnih video navodil uporabnikov samih. Toda za lažje krmarjenje po tej raznolikosti je koristno razumeti, kako ti regulatorji delujejo znotraj. Poleg tega bomo napisali lasten stabilizacijski sistem kvadrokopterja! Predlagam, da "ponovno izumite" in "na prste" razumeti Formula PID regulatorja. Za tiste, ki imate raje suhoparen matematični jezik, priporočam Wikipedijo, ker... v ruščini gradivo še ni predstavljeno tako podrobno.

Kvadrokopter bomo obravnavali v dvodimenzionalnem prostoru, kjer ima samo en kot - kot zasuka in dva motorja: levi in ​​desni.




Kontrolor letenja neprekinjeno prejema ukaze s tal: "zavitek za 30 stopinj", "zavitek -10 stopinj", "zavitek za 0 stopinj (drži horizont)"; njegova naloga je, da jih izvede kar se da hitro in natančno z uporabo motorjev, pri čemer upošteva: veter, neenakomerno porazdelitev teže kvadrokopterja, neenakomerno obrabo motorjev, vztrajnost kvadrokopterja itd. Tako mora krmilnik leta nenehno reševati problem, kakšno hitrost vrtenja uporabiti za posamezen motor, pri čemer upošteva trenutno vrednost kota naklona in zahtevano. Nenehno je seveda močna beseda. Vse je odvisno od računalniških zmogljivosti določene strojne opreme. Na Adruinu je povsem mogoče eno ponovitev cikla obdelave in nadzora spraviti v 10 milisekund. To pomeni, da bodo vsakih 10 milisekund odčitani koti kvadrokopterja, na podlagi katerih bodo motorjem poslani krmilni signali. Teh 10 milisekund se imenujejo regulacijsko obdobje. Jasno je, da manjša je, pogostejša in natančnejša je regulacija.

Nivo plina teče od sprejemnika do krmilnika. Označimo ga. Naj vas spomnim, da je to aritmetično povprečje med hitrostmi vrtenja vseh motorjev, izraženo v odstotkih največje hitrosti vrtenja. Če in sta hitrosti vrtenja levega in desnega motorja, potem:




kje je odziv kvadrokopterja (sila), ki ustvarja navor zaradi tega, ker se levi motor vrti hitreje od plina, desni motor pa ravno toliko počasneje. ima lahko tudi negativne vrednosti, potem se bo desni motor vrtel hitreje. Če se naučimo izračunati to vrednost pri vsaki iteraciji procesnega cikla, potem bomo lahko krmilili kvadrokopter. Jasno je, da mora biti najmanj odvisno od trenutnega kota kota () in želenega kota kota (), ki prihaja iz nadzorne plošče.

Predstavljajmo si situacijo: prejet je ukaz »drži obzorje« ( = 0) in kvadrokopter se zasuka v levo:




- razlika (napaka) med in , ki jo upravljavec želi zmanjšati.

Večja ko je razlika med želenim in trenutnim kotom zasuka, močnejša mora biti reakcija, hitreje naj se levi motor vrti glede na desnega. Če to zapišemo z našim zapisom:



Tukaj je P sorazmernostni koeficient. Večja kot je, močnejša bo reakcija, ostreje se bo kvadrokopter odzval na odstopanja od zahtevanega kota zasuka. Ta intuitivna in preprosta formula opisuje delo proporcionalni regulator. Bistvo je preprosto: bolj ko kvadrokopter odstopa od želenega položaja, bolj ga morate poskušati vrniti. Na žalost bo morala biti ta formula zapletena. Glavni razlog je prekoračitev.

V nekaj desetih milisekundah (več iteracijah cikla obdelave) se bo kvadrokopter pod vplivom proporcionalnega krmilnika vrnil v zahtevano (v tem primeru vodoravno) lego. Ves ta čas bosta napaka in trud imela enak predznak, čeprav bosta po velikosti vse manjša. Ko doseže določeno hitrost obračanja (kotno hitrost), se bo kvadrokopter preprosto prevrnil na drugo stran, ker ga nihče ne bo ustavil v želenem položaju. Je kot vzmet, ki se vedno želi vrniti v prvotni položaj, a če jo potegnete nazaj in sprostite, bo nihala, dokler trenje ne prevzame moči. Seveda bo na kvadrokopter vplivalo tudi trenje, vendar praksa kaže, da to ni dovolj.

Zaradi tega je treba proporcionalnemu regulatorju dodati še en člen, ki bo upočasnil vrtenje kvadrokopterja in preprečil prekoračitev (kotaljenje v nasprotno smer) – nekakšno imitacijo trenja v viskoznem mediju: hitreje kot kvadrokopter obrača, toliko bolj ga morate poskušati ustaviti, seveda v razumnih mejah. Hitrost vrtenja (hitrost spremembe napake) označimo kot , potem:



kjer je D nastavljivi koeficient: večji kot je, močnejša je zavorna sila. Iz šolskega tečaja fizike se pojavljajo nejasni spomini, da je hitrost spremembe katere koli količine odvod te količine glede na čas:

.

In zdaj se proporcionalni regulator spremeni v proporcionalno-diferencialni (proporcionalni člen in diferencial):

.

Napako je enostavno izračunati, ker pri vsaki ponovitvi poznamo in ; P in D sta parametra, ki ju je mogoče konfigurirati pred zagonom. Za izračun odvoda (hitrost spremembe) je potrebno shraniti prejšnjo vrednost, poznati trenutno vrednost in poznati čas, ki je pretekel med meritvami (kontrolno obdobje). In tukaj je - šolska fizika šestega razreda (hitrost = razdalja / čas):

.

- regulacijsko obdobje; - vrednost napake iz prejšnje ponovitve regulacijskega cikla. Mimogrede, ta formula je najenostavnejši način numerična diferenciacija in je za nas tukaj zelo primerna.

Sedaj imamo proporcionalni diferencialni krmilnik v ravnem bikopterju, vendar je še en problem več. Naj levi rob tehta malo več kot desni, ali, kar je enako, levi motor deluje malo slabše od desnega. Kvadrokopter je rahlo nagnjen v levo in se ne obrača nazaj: diferencialni člen je enak nič, proporcionalni člen pa, čeprav ima pozitivno vrednost, ni dovolj za vrnitev kvadrokopterja v vodoravni položaj, ker levi rob nekoliko tehta več kot desno. Posledično bo kvadrokopter vedno vlekel v levo.

Potreben je mehanizem za spremljanje takšnih odstopanj in njihovo odpravljanje. Značilnost takih napak je, da se sčasoma same popravijo. Na pomoč priskoči integralni izraz. Shranjuje vsoto vseh napak v vseh iteracijah procesne zanke. Kako bo to pomagalo? Če proporcionalni člen ni dovolj za popravo majhne napake, vendar še vedno obstaja, postopoma, sčasoma, integralni člen pridobi moč, poveča odziv in kvadrokopter zavzame zahtevani kot zasuka.

Tukaj je odtenek. Predpostavimo, da je 1 stopinja, kontrolni cikel je 0,1 s. Potem bo v eni sekundi vsota napak zavzela vrednost 10 stopinj. In če je cikel obdelave 0,01 s, bo količina pridobila kar 100 stopinj. Da bi v istem času integralni rok pridobil enako vrednost za različna obdobja regulacije, bomo dobljeni znesek pomnožili s samim regulacijskim obdobjem. Iz primera je enostavno izračunati, da v obeh primerih dobimo vsoto 1 stopinje. Tukaj je - integralni člen (zaenkrat brez nastavljivega koeficienta):

.

Ta formula ni nič drugega kot numerični integral skozi čas funkcije v intervalu od nič do trenutnega trenutka. Zato se izraz imenuje integral:

,

kjer je T trenutni trenutek v času.
Čas je, da zapišemo končno formulo za regulator proporcionalnega-integralnega odvoda:

,

kjer je eden od nastavljivih parametrov, od katerih so zdaj trije: . Ta formula je priročna za uporabo iz programske kode, vendar je tukaj formula, ki je podana v učbenikih:

.

Obstaja več njegovih različic, na primer, lahko omejite modul integralnega člena, tako da ne preseže določenega dovoljenega praga (to bomo storili).

Vadite

No, zdaj je čas, da vadimo izbiro koeficientov. Bralcem je na voljo JavaScript stran z virtualnim kvadrokopterjem, ki so ga že videli na slikah: izbira parametrov PID regulatorja za kvadrokopter(JSFiddle). Pri prvem zagonu je takoj viden prekoračitev - nihanje okoli želenega položaja. Ko se nihanja ustavijo, lahko opazite učinek, da proporcionalni koeficient ne more obvladati napake zaradi »asimetričnega« kvadrokopterja (nastavljenega s potrditvenim poljem »Asymmetry«). Parametri, ki so na voljo za konfiguracijo, so P, I, D. Zdaj veste, kaj storiti z njimi. »Vrtenje« pod kvadrokopterjem lahko nadzirate z zahtevano vrednostjo zasuka. “Interval (ms):” - regulacijski interval. Zmanjšanje je goljufanje, vendar je videti, kako to vpliva na kakovost stabilizacije, zelo koristno.

Za ljubitelje »čiste« matematike lahko ponudimo konfigurirajte abstraktni regulator PID

Vneseni parametri se ne uporabijo samodejno: kliknite »Uporabi«. Nekaj ​​majhnih nasvetov: če se vam zdi, da je kvadrokopter prepočasen, da bi se odzval na krmiljenje, lahko povečate P, vendar prevelika vrednost P lahko povzroči prekoračitev. Parameter D bo pomagal pri obvladovanju prekoračitve, vendar bodo prevelike vrednosti povzročile pogosta nihanja ali spet prekoračitev. Parameter I je običajno 10-100-krat manjši od parametra P, ker njegova moč je v kopičenju skozi čas, ne v hitrem odzivu.

Ročno nastavljanje parametrov PID zahteva prakso. Za njihov izračun obstajajo analitične metode, ki pa zahtevajo dobro pripravo in natančno poznavanje številnih parametrov določenega sistema, ki ga prilagajamo. Kot srednja pot med ročno izbiro in analitičnimi izračuni obstaja širok nabor empiričnih metod, ki so jih predlagali različni raziskovalci.

V našem 2D kvadrokopterju se spreminja le en kot - kot zasuka. Pri nastavljanju 3D kvadrokopterja bodo potrebni trije neodvisni krmilniki PID za vsakega od kotov, krmiljenje določenega motorja pa bo vsota naporov vseh krmilnikov.

Zaključek prvega dela

V tem prispevku smo se seznanili z osnovnimi pojmi: kvadrokopter in princip letenja, naklon, nagib, nihanje, plin, lebdeči plin, stabilizacijski način letenja, krmilnik letenja, žiroskop, merilnik pospeška, regulator hitrosti, PWM, kalibracija krmilnika, radijska kalibracija, sprejemnik na vozilu, vmesnik za nastavitev krmilnika letenja, oborožena/razorožena stanja, samodejna razorožitev.

Po tem smo ponovno izumili formulo PID regulator malo dotikanje numerična diferenciacija in integracija, in izkusil težji način, kako konfigurirati parametre P, jaz, D na virtualni kvadrokopter .

Zdaj, če ste vešči programiranja svetlobnih mečev, lahko začnete s programom stabilizacije kvadrokopterja ali še bolje, obstoječim zamislim dodate sveže ideje. odprtokodno projekti. No, čez teden ali dva, ko bom imel moč in čas, da bom pariral kvaliteti, bom nadaljeval zgodbo o tem, kako je bilo vse skupaj programirano, testirano, sesuto, porezano po prstih in čisto odletelo v neznano smer. Če res želite nadaljevati, me lahko kontaktirate tukaj ali na primer na Vkontakte: to daje malo spodbude.

Za zaključek tega dela moram preprosto omeniti osebo, ki mi je pomagala pri izbiri komponent in nastavitvi najkompleksnejšega (prvega!) kvadrokopterja na vdelani programski opremi MegapirateNG in potrpežljivo odgovorila na stotine vprašanj o teh zelo osnovnih konceptih: SovGVD, hvala! :-)

Za nagrado tistim, ki so lahko zapravili ves ta list, objavljam obljubljeni mali video, kako naš kvadrokopter z našimi "izumljenimi" PID krmilniki leti na našem programu za Arduino Mega 2560:



Seveda mu manjka GPS, kot pri komercialnih in serijskih izdelkih, malo mu manjka stabilnost, ampak je NAŠ in ga poznamo znotraj in zunaj do zadnjega faktorja integralnega koeficienta! In res je kul, da so nam takšne tehnologije danes na voljo.