namai - Maršrutizatoriaus nustatymas
Kaip padaryti keturkopterį naudojant arduino. Kaip sukurti savo keturkopterį Keturkopterio programavimas ant arduino 2 dalis habrahabr

Norėdami surinkti keturkopterį savo rankomis namuose, pirmiausia turite suprasti pagrindinius keturračio komponentus.

Kvadrokopterio surinkimo dalys

  1. Quadcopter rėmas Diatone Q450 Quad 450 V3 PCB Quadcopter Frame Kit 450mm (paskutiniai trys skaitmenys pavadinime Q450 rodo atstumą tarp variklių mm įstrižai). Tai orlaivio korpusas, į kurį bus montuojama visa kita įranga ir elektroniniai komponentai. Susideda iš 4 spindulių ir spausdintinė plokštė. Svoris 295 gramai.

    banggood.com

    Kaina 922 rub.

  2. Variklis DYS D2822-14 1450KV bešepetėlis. 4 vnt.

    Parduodama internetinėje parduotuvėje Banggood.com

    Kaina 571 rub./vnt

  3. Reguliatorius DYS 30A 2-4S bešepetėlis greičio reguliatorius ESC Simonk Firmware, skirtas greičio reguliavimui ir greičio valdymui. 4 vnt.

    Parduodama internetinėje parduotuvėje Banggood.com

    Kaina 438 rub./vnt

  4. Propeleriai DYS E-Prop 8x6 8060 SF ABS Slow Fly Propelerio mentė RC lėktuvui, 4 vnt. Du dešiniarankiai ir du kairiarankiai sraigtai.

    Parduodama internetinėje parduotuvėje Banggood.com

    Kaina 125 rub./vnt

  5. Kvadrokopterio valdymo modulis KK2.1.5 kk21evo. 1 PC.

    Parduodama internetinėje parduotuvėje Banggood.com

    Kaina 1680 rub.

  6. Įkraunama ličio polimero baterija Turnigy nano-tech 2200mah 4S ~90C Lipo Pack, reikia paruošti bent du gabalus, o geriausia keturis, nes jie greitai išsikrauna. 1 PC.

    Parduodama internetinėje parduotuvėje Parkflyer.ru

    Kaina 1268 RUR/vnt

  7. Hobby King Variable6S 50W 5A akumuliatoriaus įkroviklis. 1 PC.

    Parduodama internetinėje parduotuvėje Hobbyco.ru

    Kaina 900 rub.

  8. Akumuliatoriaus jungtis XT60 Vyriškas kištukas 12AWG 10cm su viela. 1 PC.

    Parduodama internetinėje parduotuvėje Banggood.com

    Kaina 144 rub.

  9. Gnybtai laidams tvirtinti prie keturkopterio korpuso. 1000 vnt 2,0x100 mm juodos/baltos nailoninės kabelių raiščiai. 1 pakuotė.

    Parduodama internetinėje parduotuvėje Banggood.com

    Kaina 316 rub.

  10. Jungtys 20 porų 3,5 mm kulkos jungtis Bananinis kištukas RC akumuliatoriui/varikliui. Reguliatoriaus laidams. 1 pakuotė.

    Parduodama internetinėje parduotuvėje Banggood.com

    Kaina 256 rub.

  11. Velcro juostelė, skirta akumuliatoriui pritvirtinti prie keturkopterio korpuso. 1 PC.

    Parduodama internetinėje parduotuvėje Banggood.com

    Kaina 79 rub.

  12. 50vnt Variklio tvirtinimo varžtų rinkinys DJI F450 F550 HJ450 550 Quadcopter Multicopter. 1 pakuotė.

    Kaina 217 rub.

  13. Nuotolinio valdymo pultas keturkopteriui Spektrum DX6 V2 su AR610 imtuvu. Imtuvas ir siųstuvas pateikiami viename komplekte. 1 PC.

    Kaina 9700 rub.

Iš viso surinkimo įrangos komplektas kainuos 20 018 rublių.

Savybės renkantis komponentus


Pagrindinės siųstuvo charakteristikos:

  • Režimai 1 arba 2 režimas. Pirmuoju režimu dujų rankena yra dešinėje, antruoju režimu dujų rankena yra kairėje.
  • Siųstuvo dažnis yra 2,4 GHz.
  • Kanalų skaičius. Mažiausi kanalai, reikalingi orlaiviui valdyti, yra keturi. Valdymo įranga iš Spektrum DX6 V2 su AR610 imtuvu turi 6 kanalus.

Žingsnis po žingsnio instrukcijos, kaip surinkti kvadrokopterį savo rankomis

  1. Sumažiname reguliatorių laidų ilgį. Jungiant reguliatorių prie variklių, laidų ilgis gerokai viršys sijos, ant kurios bus pritvirtinta visa ši konstrukcija, ilgį.

  2. Prilituojame jungtis prie reguliatoriaus laidų galų, kad ateityje galėtumėte prijungti reguliatorių prie variklių.

  3. Sumontuojame variklius – ant kiekvienos sijos prisukame po 1 variklį.

  4. Surenkame rėmą. Prisukite sijas prie lentos.

  5. Reguliatoriaus laidus prijungiame prie variklių. Reguliatoriaus ir variklio laidai prijungiami bet kokia tvarka. Ateityje baigiant drono konfigūraciją gali tekti pakeisti prisijungimo tvarką. Kai kiekvienam varikliui naudojami specialūs reguliatoriai, teigiami ir neigiami poliai turi būti prijungti prie valdiklio tik iš vieno reguliatoriaus.

  6. Valdymo modulį pritvirtiname prie korpuso dvipuse juosta. Geriausia vieta centrinėje platformos dalyje.

  7. Pritvirtiname imtuvą prie korpuso dvipuse juostele ir prijungiame prie valdymo modulio. Imtuvas turi būti kuo arčiau modulio.

    Kanalų paskirtis aprašyta imtuvo vadove. Paprastai jų seka yra tokia:

    1. Aileronai - kanalas, atsakingas už posūkius į kairę ir į dešinę;
    2. Liftas – kanalas, vedantis pirmyn ir atgal kryptimis;
    3. Dujos yra kanalas, kuris kontroliuoja dujas. Valdo kilimą ir tūpimą, taip pat aukščio pokyčius;
    4. Posūkis – kanalas leidžia pasukti keturkopterį aplink savo ašį.

  8. Mes maitiname įrenginį. Mes prijungiame akumuliatorių prie jungties.

Šia operacija užbaigiamas keturkoperio surinkimo procesas.

Sąranka

  1. Paleidžiame variklius. Variklių įjungimui reikalingas variklių paleidimo procesas – apsaugos įjungimas. Naudojimo instrukcijoje išsamiai paaiškinta, kaip tai pasiekti. Norint išjungti variklius, reikia išjungti apsaugą.
  2. Įjungiame silpnas dujas ir įsitikiname, kad varikliai sukasi. Sukimosi schema turi būti tokia, kaip nurodyta diagramoje valdiklio vadove. Jei variklis sukasi neteisingai, tereikia sukeisti iš variklio į valdiklį einančių laidų polius.

  3. Antrą platformą prisukame prie keturkopterio korpuso.

  4. Prie korpuso pritvirtiname Velcro juostelę, kad pritvirtintume akumuliatorių.

    „Pasidaryk pats“ keturkopių surinkimas naudojant „Arduino“.

    Išvada

    Kvadrokopterį savarankiškai surinkti gali tik tie, kurie mėgsta spręsti sudėtingas problemas. Tai turėtų būti žmonės, kuriems patinka įvairūs skaičiavimai ir įrenginio surinkimo procesas.

    Surinkto kopterio privalumas savo rankomis faktas, kad bet kuriuo metu galite jį atnaujinti pridėdami naujos įrangos.

Keturkopteris taip pat turi autonominį maitinimo šaltinį. Bendra tokio naminio gaminio kaina yra apie 60 USD.

Jei turite didesnę sumą, tuomet perspektyviau savo naminį gaminį aprūpinti varikliais be šepečių su atitinkamais valdikliais.

Skrydžiui stabilizuoti naudojamas giroskopas ir akselerometras. Giroskopas reikalingas norint nustatyti kvadrokopterio pasvirimo kampą žemės gravitacijos atžvilgiu. Pagreičiui apskaičiuoti reikalingas akselerometras.

Medžiagos ir įrankiai:
- ličio baterijos(esant 3,7 V);
- laidai;
- tranzistorius ULN2003A Darlington Transistor (galima naudoti galingesnius tranzistorius);
- 0820 Coreless Motors tipo varikliai;
- Arduino Uno mikrovaldiklis;
- MPU-6050 plokštė (tai ir giroskopas, ir akselerometras);
- galimybė turėti 3D spausdintuvą arba prieigą prie jo;
- reikalingos priemonės.

Gamybos procesas:

Pirmas žingsnis. Kvadrokopterio kėbulo kūrimas
Korpusas pagamintas labai greitai ir paprastai. Jis spausdinamas naudojant 3D spausdintuvą. Taip sukurti rėmą yra gerai, nes jis išeina šviesus, visa tai dėka korio spausdinimo. Dalių projektavimas vyko Solidworks programoje. Naudodami šią programą galite redaguoti korpuso parametrus ir, jei reikia, atlikti savo pakeitimus.




Atspausdinus keturkopterio rėmą, prie jų galite sumontuoti variklius ir litavimo laidus.




Antras žingsnis. Arduino prijungimas
Kaip prijungti MPU6050 plokštę, galite pamatyti toliau pateiktoje diagramoje. Svarbu suprasti, kad Arduino biblioteka reiškia ryšį per šiuos kaiščius. Jei naudojama kito gamintojo grandinė, svarbu užtikrinti, kad kontaktai būtų išdėstyti ta pačia seka.


Plokštei maitinti naudojama tik 3,3 V, jei maitinate 5 V, ji bus sugadinta. Kai kurios MPU6050 plokštės turi saugiklį, kuris apsaugo sistemą nuo aukštos įtampos, bet geriau nerizikuoti. Jei plokštė turi AD0 kaištį, ji turi būti prijungta prie žemės (GND). Šiuo atveju VIO yra prijungtas prie AD0 kaiščio tiesiai plokštėje, todėl nereikia jungti AD0 kaiščio.












Kad Arduino valdytų variklius, prireiks tranzistorių, kurių dėka bus galima tiekti aukštą įtampą variklius. Išsamiau galite pamatyti, kaip visi elementai yra sujungti diagramoje.

Trečias žingsnis. Arduino eskizas
Kai MPU-6050 yra prijungtas prie Arduino, turite jį įjungti ir atsisiųsti I2C skaitytuvo kodo eskizą. Tada turite nukopijuoti programos kodą ir įklijuoti jį į tuščią eskizą. Po to turite atidaryti Arduino IDE serijinį monitorių (Įrankiai-> Serialus monitorius) ir įsitikinti, kad 9600 yra prijungtas.
Jei viskas bus padaryta teisingai, I2C įrenginys bus aptiktas, jam bus priskirtas 0x68 arba 0x69 adresas, jį reikia užrašyti.
Toliau įkeliamas eskizas, kuris apdoroja informaciją iš giroskopo ir akselerometro. Internete jų yra daug, bet geriausia naudoti.


Įjungta paskutinis etapas Turėsite sukalibruoti giroskopo ir akselerometro reikšmes. Norėdami tai padaryti, turite rasti plokščią paviršių ir ant jo įdėti MPU6050. Tada paleidžiamas kalibravimo eskizas, gaunami nuokrypio duomenys įrašomi ir naudojami MPU6050_DMP6 eskize.

Ketvirtas žingsnis. Programa, skirta Arduino
Paskelbtos programos dėka keturkopteris stabilizuojasi ir kabo stabilioje būsenoje. Toliau, naudojant šią programą, valdomas kvadrokopteris.


Kvadrokopteriui stabilizuoti naudojami du PID valdikliai. Vienas reikalingas aikštelei, o antrasis ritiniui. Valdiklis matuoja sraigtų sukimosi greitį ir pagal tai valdomas kvadrokopteris.

Penktas žingsnis. Kvadrokopterio modifikacija

Pagrindinė mažo ir pigaus keturkoperio problema – jo svoris. Norint išspręsti šią problemą, reikia sumontuoti galingesnius ir lengvesnius variklius, geriausiai tinka varikliai be šepetėlių, jie dar vadinami vožtuviniais varikliais. Jie yra daug geresni nei šepečiai, tačiau jiems reikia nusipirkti ir greičio reguliatorius, todėl naminių gaminių kaina smarkiai išauga.

Sveiki skaitytojai!
Šioje straipsnių serijoje keturkopterio dangtį atversime šiek tiek daugiau nei reikalauja hobis, taip pat parašysime, sukonfigūruosime ir paleisime savo programą skrydžio valdikliui, kuri bus įprasta Arduino Mega 2560 plokštė.

Mes turime priekyje:

  1. Pagrindinės sąvokos.
  2. PID valdikliai su interaktyviu internetiniu virtualiojo keturkopterio veikimo demonstravimu.
  3. Tikroji „Arduino“ programa ir „Qt“ konfigūravimo programa.
  4. Pavojingi kvadrokopterio bandymai ant lyno. Pirmieji skrydžiai.
  5. Avarija ir pralaimėjimas lauke. Automatinė paieška iš oro naudojant Qt ir OpenCV.
  6. Paskutiniai sėkmingi testai. Apibendrinant. Kur eiti?

Medžiaga didelė, bet pasistengsiu sutalpinti į 2-3 straipsnius.
Šiandien tikimės: spoilerio su vaizdo įrašu, kaip skrido mūsų kvadrokopteris; pagrindinės sąvokos; PID valdikliai ir jų koeficientų parinkimo praktika.

Kam visa tai?

Akademinis interesas, kuris, beje, persekioja ne tik mane (,). Ir, žinoma, sielai. Labai smagiai praleidau laiką dirbdama ir pajutau tikrą, neapsakomą laimę, kai „IT“ skraidė su mano programa :-)

Kam?

Ši medžiaga taip pat gali būti įdomi žmonėms, kurie yra toli arba kurie tik planuoja įsitraukti į kelių rotorių sistemas. Dabar pakalbėkime apie pagrindinių keturkopterio komponentų paskirtį, kaip jie sąveikauja tarpusavyje, apie pagrindines skrydžio sąvokas ir principus. Žinoma, visas mums reikalingas žinias galima rasti internete, tačiau negalime būti priversti jų ieškoti didžiuliame internete.

Nepažeisdami pagrindinių sąvokų supratimo, praleiskite viską, ką žinote, iki kito nepažįstamo termino, paryškintas pusjuodžiu šriftu, arba į nesuprantamą iliustraciją.

NE #1!

Nerašykite savo skrydžio vadovo programos, kol jos neišbandysite. paruoštus sprendimus, kurių dabar yra gana daug (Ardupilot, MegapirateNG, MiltiWii, AeroQuad ir kt.). Visų pirma, tai pavojinga! Norint valdyti kvadrokopterį be GPS ir barometro, reikia praktikos, o juo labiau, kai jis sutrinka, apsiverčia arba skrieja ne ten, kur turėtų – ir tai beveik neišvengiama pirmųjų bandymų metu. Antra, jums bus daug kartų lengviau programuoti, nes suprasite, ką reikia užprogramuoti ir kaip tai turėtų veikti galiausiai. Patikėk manimi: skrydžio matematika yra tik nedidelė programos kodo dalis.

NE #2!

Nesiimkite rašyti savo programos skrydžio vadovui, jei nesiekiate akademinių pomėgių ir jums reikia tik to, ką jau seniai galėjo padaryti jau paruošti sprendimai (skraidyti, fotografuoti, filmuoti, skristi toliau). užduotis ir pan.) Kol viską rašysite patys, tai užtruks ilgai, net jei būsite ne vienas.

Pagrindinės sąvokos

Kvadrokopteriai yra įvairių veislių, tačiau juos visus vienija keturi pagrindiniai rotoriai:

Nepaisant akivaizdžios simetrijos, pilotui labai svarbu atskirti, kur yra keturkopterio priekis (rodoma rodykle). Čia kaip radijo bangomis valdomi modeliai automobiliai: duodamas komandą „pirmyn“, keturkopteris skrenda ne ten, kur žiūri pilotas, o ten, kur nukreipta įsivaizduojama keturkopterio nosis. Tai kupina pavojaus: pradedantiesiems gali būti sunku susigrąžinti vėjo pagautą, kažkaip į šoną pasuktą įrenginį (žinoma, nekalbame apie skraidymą pirmojo asmens fotoaparate ir apie „išmanųjį“). ” skrydžio režimai naudojant kompasą ir GPS.) Sprendimas Šią problemą iš dalies gali padėti kitos spalvos priekiniai varžtai ar sijos, koks nors kamuoliukas priekyje arba skirtingų spalvų šviesos diodai. Bet visa tai pasirodo nenaudinga, kai pepelatai greitai virsta tašku virš horizonto.

Skrisime ant „X“ formos keturkoperio rėmo, nes man labiau patinka jo išvaizda. Kiekvienas dizainas turi savo privalumų ir tikslą. Be keturkopių, yra ir kitų multikopterių. Net jei neskaičiuojate egzotiškų variantų, jų vis tiek yra visa krūva!

Išsiaiškinkime, kaip mūsų keturkopterio struktūra yra viduje ir ką turėtų daryti skrydžio valdiklis, kurį planuojame programuoti.


Kampai posūkis, posūkis ir posūkis (žingsnis, riedėjimas, posūkis)- kampai, pagal kuriuos įprasta nustatyti ir nustatyti kvadrokopterio orientaciją erdvėje.

Kartais praleidžiamas žodis „kampas“ ir tiesiog sakoma: pitch, roll, yaw. Tačiau, pasak Vikipedijos, tai nėra visiškai tikslu. Keturkopterio skrydis reikiama kryptimi pasiekiamas pakeitus šiuos tris kampus. Pavyzdžiui, norint skristi į priekį, keturkopteris turi pakrypti dėl to, kad galiniai varikliai sukasi šiek tiek stipriau nei priekiniai:

Dujinis kvadrokopteris- aritmetinis vidurkis tarp visų variklių sukimosi greičių. Kuo daugiau dujų, tuo didesnė bendra variklių trauka, tuo labiau jie tempia keturkopterį aukštyn(NESKIRTI PRIEKIN!!! „Šlepetės ant grindų“ čia reiškia greičiausią pakilimą). Paprastai matuojamas procentais: 0% - varikliai sustabdomi, 100% - sukasi maksimaliu greičiu. Dujos sklando- minimalus dujų lygis, būtinas, kad keturkopteris neprarastų aukščio.

Droselis, žingsnis, riedėjimas, posūkis – jei galite valdyti šiuos keturis parametrus, tuomet galėsite valdyti ir keturkopterį. Jie taip pat kartais vadinami valdymo kanalais. Jei įsigijote dviejų kanalų nuotolinio valdymo pultą, keturkopterio valdyti negalėsite. Trijų kanalų labiau tinka mažiems sraigtasparniams: galima skristi ir be posūkio valdymo, bet keturkopteryje tai nėra patogu. Jei norite pakeisti skrydžio režimus, turėsite nusipirkti penkių kanalų nuotolinio valdymo pultą. Jei norite valdyti kameros pakreipimą ir pasukimą laive, yra dar du kanalai, nors profesionalai tam naudoja atskirą nuotolinio valdymo pultą.

Yra daug skrydžio režimų. Naudojamas GPS, barometras ir nuotolio ieškiklis. Bet mes norime įgyvendinti pagrindinį - stabilizavimo režimą ( durti, stabilizuoti, skristi „stubu“), kuriame keturkopteris išlaiko kampus, kurie jam suteikiami iš nuotolinio valdymo pulto, nepaisant išorinių veiksnių. Šiuo režimu, nesant vėjo, keturkopteris gali kabėti beveik vietoje. Pilotas turės kompensuoti vėją.

Varžtų sukimosi kryptis parenkama neatsitiktinai. Jei visi varikliai suktųsi viena kryptimi, keturkopteris dėl susidarančių sukimo momentų suktųsi priešinga kryptimi. Todėl viena priešingų variklių pora visada sukasi viena kryptimi, o kita pora. Posūkio kampui pakeisti naudojamas sukimosi momentų atsiradimo efektas: viena variklių pora pradeda suktis šiek tiek greičiau nei kita, o dabar keturkopteris lėtai atsisuka į mus (koks siaubas):

  • LFW – priekinis kairysis sukimas pagal laikrodžio rodyklę (priekis į kairę, pagal laikrodžio rodyklę)
  • RFC – dešinysis priekis sukimas prieš laikrodžio rodyklę (priekis dešinėje, sukimas prieš laikrodžio rodyklę)
  • LBC – sukimas į kairę atgal prieš laikrodžio rodyklę (atgal į kairę, prieš laikrodžio rodyklę)
  • RBW – sukimas dešinėn atgal pagal laikrodžio rodyklę (galinis dešinysis, sukimas pagal laikrodžio rodyklę)

Reguliuoja variklių sukimosi greitį skrydžio valdiklis (valdiklis, smegenys). Paprastai tai yra maža lenta arba dėžutė su daugybe įėjimų ir išėjimų. Yra daugybė skirtingų valdiklių su skirtingomis galimybėmis, skirtinga programine įranga, skirtingos užduotys. Štai tik keletas:


Bendra skrydžio vadovo užduotis – keletą dešimčių kartų per sekundę atlikti valdymo ciklą, į kurį įeina: jutiklio rodmenų nuskaitymas, valdymo kanalų skaitymas, informacijos apdorojimas ir valdymo signalų išdavimas varikliams, siekiant vykdyti piloto komandas. Tai mes ketiname programuoti.

Galima naudoti daugybę skirtingų tipų jutiklių. Tuos, kurie jau tapo beveik privalomi, naudosime visuose keturkopiuose trijų ašių giroskopas ir trijų ašių akselerometras. Akselerometras matuoja pagreitį, giroskopas – kampinį greitį. Jų dėka skrydžio valdiklis žino esamus nuolydžio, posvyrio ir posūkio kampus. Šie jutikliai gali būti įmontuoti į skrydžio valdiklį arba išoriniai. Trijų kampų skaičiavimas pagal jutiklio rodmenis yra atskiro straipsnio tema. Tačiau mums to nereikia žinoti: MPU-6050 viską padarys už mus. Tai maža plokštė, kuri atlieka reikiamus skaičiavimus ir filtravimą viduje bei sukuria beveik paruoštus kampus naudojant i2c protokolą. Tereikia juos suskaičiuoti, apdoroti su likusiais duomenimis ir duoti valdymo signalus varikliams.

Daugiakopių varikliai sunaudoja dideles sroves, todėl skrydžio valdiklis jas valdo ne tiesiogiai, o per specialias aparatūros tvarkykles, vadinamas greičio reguliatoriai (ESC, reguliatorius, eska). Šie reguliatoriai maitinami iš pagrindinio borto akumuliatoriaus, valdymo signalas gaunamas iš valdiklio, o išėjime turi tris laidus (A, B, C), kurie eina tiesiai į variklius (kiekvienas variklis turi savo reguliatorių !)


Ryšio tarp reguliatoriaus ir variklio „protokolas“ mums nėra toks svarbus kaip skrydžio valdiklio ir reguliatoriaus ryšio „protokolas“, nes mes turime programiškai valdyti reguliatorių iš valdiklio. Yra reguliatorių, valdomų per i2c, bet dažniausiai valdomi kvadratinės bangos signalu, kurio minimali įtampa 0 voltų ir maksimali 3-5 voltai (tai vadinama PWM arba PWM o kai kurie teigia, kad tai teisingiau - PPM. Pavyzdžiui, daugiau informacijos).

„Protokolas“ yra stiprus žodis: norėdamas įsakyti varikliui suktis maksimaliu greičiu, valdiklis turi siųsti 2 milisekundžių impulsus, tarp kurių yra 10–20 milisekundžių loginis nulis. 1 milisekundės impulso trukmė atitinka variklio sustabdymą, 1,1 ms – 10 proc. Maksimalus greitis, 1,2 ms - 20% ir t. Praktiškai nulio trukmė nevaidina jokio vaidmens, svarbi tik paties pulso trukmė.

Nepaisant viso akivaizdaus paprastumo, čia yra pasala: skrydžių valdikliai būna skirtingi skirtingi nustatymai, reguliatoriai yra skirtingi, o minimalus (1 ms) ir maksimalus (2 ms) nėra universalus. Priklausomai nuo daugelio veiksnių, 1–2 ms diapazonas iš tikrųjų gali būti 1,1–1,9 ms. Tam, kad reguliuotojas ir kontrolierius kalbėtų visiškai ta pačia kalba, yra tvarka reguliatoriaus kalibravimas. Šios procedūros metu valdiklių diapazonai keičiami ir tampa lygūs valdiklio diapazonui. Procedūra yra įtraukta į kiekvieno valdiklio programą ir apima keletą paprastus veiksmus(veiksmai gali skirtis priklausomai nuo gamintojo – perskaitykite instrukcijas!):

  • Išjunkite reguliatoriaus maitinimą.
  • Nuimkite propelerį nuo variklio.
  • Į valdiklio įvestį įveskite signalą, atitinkantį didžiausią sukimosi greitį.
  • Įjunkite reguliatorių maitinimą. Variklis turi likti nejudantis be pašalinės pagalbos.
  • Į valdiklio įvestį įveskite signalą, atitinkantį minimalų sukimosi greitį.
  • Pristabdykite 1-2 sekundes, palaukite būdingo girgždėjimo.
  • Išjunkite reguliatoriaus maitinimą.

Po to į valdiklį bus įvestos atitinkamos intervalo ribos. Bandant kilti su nekalibruotais reguliatoriais, pasekmės gali būti netikėtos: nuo staigaus keturkopterio trūktelėjimo į artimiausią medį iki visiško variklių nejudėjimo esant bet kokiai droselio vertei.

PWM naudoja lygiai tą patį principą borto imtuvas. Tai mažas prietaisas, priimant radijo valdymo signalus iš žemės ir perduodant juos skrydžio vadovui. Dažniausiai kiekvieno valdymo kanalo skrydžio valdiklis (akceleratoriaus, žingsnio, posūkio ir kt.) turi savo įvestį, į kurią tiekiamas PWM. Sąveikos logika paprasta: komanda, pavyzdžiui, „70% droselis“, nuolat eina nuo žemės iki imtuvo, kur ji paverčiama PWM ir atskiru laidu siunčiama į skrydžio valdiklį. Tas pats su žingsniu, riedėjimu, posūkiu.

Kadangi imtuvas ir valdiklis turi savo draugišką PWM ryšį, juos taip pat reikės sukalibruoti: nuotolinio valdymo pultai su imtuvais skiriasi savo veikimo diapazonu. Valdiklis turi sugebėti prisitaikyti. Procedūra radijo kalibravimas, skirtingai nei reguliatorių kalibravimas, jį turėsime sukurti patys kaip skrydžio programos dalį. Bendras kalibravimo planas yra toks:

  • Tik tuo atveju nuimkite sraigtus nuo variklių.
  • Kažkaip įjunkite valdiklį į radijo kalibravimo režimą.
  • Valdiklis kelioms dešimtims sekundžių pradeda radijo kalibravimą.
  • Per nurodytą laiką visas nuotolinio valdymo pulto lazdeles judinkite visomis kryptimis, kol jos sustos.
  • Valdiklis įsimena visų valdymo kanalų maksimumus ir minimumus vidinė atmintis amžiais.

Taigi: radijo kalibravimo metu skrydžio valdiklis įsimena visų valdymo kanalų imtuvo diapazonus; ESC kalibravimo metu skrydžio valdiklio diapazonas įvedamas į visus ESC.

Be skrydžio vadovo programos, reikia dar vienos programos: Skrydžio valdiklio sąrankos sąsaja. Dažniausiai tai yra kompiuterinė programa, kuri per USB jungiasi prie skrydžio valdiklio ir leidžia vartotojui konfigūruoti bei patikrinti skrydžio programą, pvz.: atlikti radijo kalibravimą, konfigūruoti stabilizavimo parametrus, patikrinti jutiklių veikimą, nustatyti skrydžio maršrutą. žemėlapį, nustatykite multikopterio elgseną praradus signalą ir dar daugiau. Savo konfigūracijos sąsają parašysime C++ ir Qt kalbomis konsolės įrankio pavidalu. Štai, jei pažvelgsite į ateitį:


Niekas nėra apsaugotas nuo nelaimingų atsitikimų. Net ir 10 colių plastikiniai mažų variklių sraigtai ant odos gali palikti kruvinų mėlynių, kurios skaudės dar savaitę (išbandyta asmeniškai). Nesunku pasidaryti naują makiažą ir šukuoseną, jei nuotolinio valdymo pulte paspaudžiate dujų lazdelę, kai nešiojate įjungtą kvadrokopterį. Todėl skrydžio vadovas turi užtikrinti bent tam tikrą saugumą: mechanizmą ginkluotas / nuginkluotas. Kvadratinio kopterio „išjungta“ būsena reiškia, kad varikliai yra išjungti ir net visiško droselinio valdymo komanda iš nuotolinio valdymo pulto neturi jokios įtakos, nors maitinimas tiekiamas. Keturkopterio „ginkluota“ būsena reiškia, kad komandas iš nuotolinio valdymo pulto vykdo skrydžio valdytojas. Šioje būsenoje keturračiai pakyla, skrenda ir leidžiasi. Keturkopteris įsijungia ir turėtų nedelsiant pereiti į išjungimo būseną, jei neatidus pilotas jį įjungtų, kai nuotolinio valdymo pultelio akceleratoriaus svirtis nėra ties nuliu. Norėdami perkelti kopterį į „ginkluotą“ būseną, pilotas turi atlikti tam tikrą iš anksto sutartą gestą nuotolinio valdymo pulteliu. Dažnai šis gestas yra kelias sekundes palaikyti kairiąją lazdą apatiniame dešiniajame kampe (droselė = 0%, posūkis = 100%). Po to skrydžio vadovas atlieka bent minimalų savęs patikrinimą ir, jei jis sėkmingai išlaikomas, „ apsiginklavęs"(pasiruošęs skristi!) Kitu gestu (akceleratorius = 0%, posūkis = 0%) keturkoperis" tampa nuginkluotas„Dar viena gera saugumo priemonė yra automatinis nusiginklavimas, jei dujos buvo lygios nuliui 2–3 sekundes.

Apie variklius, baterijas, reguliatorius, propelerius

Daugiakopterio komponentų pasirinkimas yra visos straipsnių serijos tema. Jei ketinate gaminti savo pirmąjį keturkopterį, suformuluokite, kam jis reikalingas, ir pasinaudokite patyrusių patarimais arba pasiimkite kitų sudarytų ir sėkmingai juo skraidančių komponentų sąrašą.

Visgi bendram supratimui pravartu žinoti pagrindinius dalykus.

Baterijos

Tarp daugelio rotorių sistemų mėgėjų ir profesionalų ličio polimerų baterijos yra labiausiai paplitusios kaip pagrindiniai borto elektronikos ir variklių maitinimo šaltiniai. Jie išsiskiria talpa, įtampa ir maksimalia srovės galia. Talpa, kaip įprasta, matuojama ampervalandėmis arba miliampervalandėmis. Įtampa matuojama baterijos „celių“ skaičiumi. Viena „skardinė“ yra vidutiniškai 3,7 volto. Visiškai įkrauta „skardinė“ yra 4,2 volto. Dažniausiai pasitaikančios baterijos yra nuo trijų iki šešių elementų. Didžiausia išėjimo srovė matuojama amperais ir žymima, pavyzdžiui, taip: 25C. C yra akumuliatoriaus talpa, 25 yra daugiklis. Jei talpa yra 5 amperai, tada tokia baterija gali tiekti 25 * 5 = 125 amperus. Žinoma, geriau paimti dabartinį išvesties parametrą su rezervu, bet iš esmės kuo jis didesnis, tuo baterija brangesnė. Ženklinimo pavyzdys: 25C 3S 4500mah.

Kiekvienas bankas yra atskira baterija. Visi jie lituojami nuosekliai. Kad visi bankai būtų įkrauti tolygiai, yra numatyta balansavimo jungtis su prieiga prie kiekvieno banko atskirai ir speciali įkrovimo įrenginys.

Varikliai, sraigtai, reguliatoriai

Pagrindinis bešepetėlio variklio parametras yra jo kv. Tai apsisukimų skaičius per minutę kiekvienai įjungtos įtampos voltui. Labiausiai paplitę varikliai yra su kv nuo 300 iki 1100. Kv arčiau 1000 dažniausiai pasirenkamas mažiems keturkoperiams (1-2 kilogramai plius 500 gramų naudingoji apkrova) ir jie komplektuojami su plastikiniais iki 12 colių skersmens sraigtais. Dideli multikopteriai (gerai ir sunkiai foto-video įrangai kelti) ar ilgai skraidantys lėktuvai (skraidinimo laiko rekordams) dažniausiai turi variklius su mažu kv (300-500) ir didžiulius anglies sraigtus (15 - 20 colių skersmens). Kv nėra vienintelis svarbus parametras variklis: dažnai galite rasti ištisas variklio galios ir traukos priklausomybės nuo tiekiamos įtampos ir sumontuoto sraigto tipo lenteles. Be to, kiekvienas variklis sukurtas pagal savo įtampos diapazoną (akumuliatoriaus elementų skaičių) ir savo maksimalią srovę. Jei gamintojas rašo 3-4S, neturėtumėte jo naudoti su 5S baterijomis. Tas pats pasakytina ir apie reguliatorius.

Jei variklis skirtas iki 30A srovei, tai reguliatorius turi būti skirtas iki 30 + 10A srovei, kad būtų išvengta perkaitimo. Prastos kokybės arba netinkami valdikliai gali sukelti vadinamuosius „sinchronizacijos slydimus“ ir užstrigti varikliui skrendant, o jūs atpažinsite kitą kelių rotorių terminą: pagavo planetą"Kitas svarbus punktas- laidų storis ir kokybė. Netinkamo dydžio laidas arba bloga jungtis gali sukelti gaisrą ore.

Kaip matote, yra daug niuansų. Net pusės jų neišvardijau, todėl pačiam išsirinkti komponentus pirmajam multikopteriui gana sunku.

Stabilizavimo matematika, PID valdikliai (PID)

Jei nuspręsite patekti į multikopterius, anksčiau ar vėliau turėsite susidoroti su PID valdiklio nustatymu, nes šis matematinis aparatas naudojamas beveik visoms stabilizavimo užduotims: stabilizuoti kvadrokopterio kampus ore, skraidyti ir išlaikyti padėtį. naudojant GPS, aukščio laikymas naudojant barometrą, bešepetėliai vaizdo kameros stabilizavimo skrydžio metu mechanizmai (kameros gimbalas).

Nusiperki dviejų ašių kameros gimbalą, dedi ten, pavyzdžiui, GoPro, įjungi, ir vietoj stabilizavimo gauni traukulius, vibracijas ir trūkčiojimus, nors visi jutikliai sukalibruoti ir mechaninės problemos pašalintos. Priežastis – neteisingi PID valdiklių parametrai.

Susirenki multikopterį, sukalibruoji daviklius, reguliatorius, radiją, viską patikrini, bandai pakilti, o ore toks niūrus, kad net lengvas vėjelis jį apverčia. Arba atvirkščiai: jis toks aštrus, kad staiga pakyla ir be leidimo padaro trigubą salto. Priežastis vis dar ta pati: PID valdiklių parametrai.

Daugeliui įrenginių, naudojančių PID valdiklius, yra nustatymo instrukcijos ir net kelios, be daugybės pačių vartotojų pateiktų vaizdo instrukcijų. Tačiau norint lengviau naršyti šioje įvairovėje, naudinga suprasti, kaip šie reguliatoriai veikia viduje. Be to, ketiname parašyti savo keturkopių stabilizavimo sistemą! Siūlau „išradinėti iš naujo“ ir „ant pirštų“ suprasti PID valdiklio formulė. Mėgstantiems sausą matematinę kalbą rekomenduoju Vikipediją, nes... rusiškai medžiaga dar nėra pateikta taip išsamiai.

Kvadrokopterį nagrinėsime dvimatėje erdvėje, kur jis turi tik vieną kampą – posūkio kampą ir du variklius: kairįjį ir dešinįjį.


Skrydžio vadovas nuolat gauna komandas iš žemės: „sukite 30 laipsnių“, „sukite -10 laipsnių“, „sukite 0 laipsnių (laikyk horizontą)“; jos uždavinys – kuo greičiau ir tiksliau juos atlikti naudojant variklius, atsižvelgiant į: vėją, netolygų kvadrokopterio svorio pasiskirstymą, netolygų variklių susidėvėjimą, kvadrokopterio inerciją ir kt. Taigi, skrydžio valdiklis turi nuolat spręsti problemą, kokį sukimosi greitį taikyti kiekvienam varikliui, atsižvelgdamas į esamą posvyrio kampo reikšmę ir reikiamą. Be abejo, nuolat yra stiprus žodis. Viskas priklauso nuo konkrečios aparatinės įrangos skaičiavimo galimybių. „Adruino“ visiškai įmanoma vieną apdorojimo ir valdymo ciklo iteraciją pritaikyti 10 milisekundžių. Tai reiškia, kad kartą per 10 milisekundžių bus nuskaitomi keturkopterio kampai ir pagal juos į variklius bus siunčiami valdymo signalai. Šios 10 milisekundžių vadinamos reguliavimo laikotarpis. Akivaizdu, kad kuo jis mažesnis, tuo reguliavimas vyksta dažniau ir tiksliau.

Dujų lygis teka iš imtuvo į valdiklį. Pažymėkime tai. Leiskite jums priminti, kad tai yra aritmetinis vidurkis tarp visų variklių sukimosi greičių, išreikštas procentais nuo maksimalaus sukimosi greičio. Jei ir yra kairiojo ir dešiniojo variklių sukimosi greičiai, tada:

kur yra keturkopterio reakcija (jėga), kuri sukuria sukimo momentą dėl to, kad kairysis variklis sukasi greičiau nei dujos, o dešinysis variklis sukasi tiek pat lėčiau. taip pat gali turėti neigiamas vertes, tada tinkamas variklis suksis greičiau. Jei išmoksime apskaičiuoti šią vertę kiekvienoje apdorojimo ciklo pakopoje, galėsime valdyti keturkopterį. Akivaizdu, kad tai turėtų priklausyti mažiausiai nuo esamo sukimosi kampo () ir norimo posūkio kampo (), kuris gaunamas iš valdymo pulto.

Įsivaizduokime situaciją: gaunama komanda „išlaikyti horizontą“ (= 0), o keturkopteris rieda į kairę:


Skirtumas (klaida) tarp ir , kurį valdiklis siekia sumažinti.

Kuo didesnis skirtumas tarp norimo posūkio kampo ir dabartinio, tuo stipresnė turėtų būti reakcija, tuo greičiau turėtų suktis kairysis variklis, palyginti su dešiniuoju. Jei tai parašysime naudodami savo žymėjimą:

Čia P yra proporcingumo koeficientas. Kuo jis didesnis, tuo stipresnė bus reakcija, tuo staigiau keturkopteris reaguos į nukrypimus nuo reikiamo posūkio kampo. Ši intuityvi ir paprasta formulė apibūdina darbą proporcingas valdiklis. Esmė paprasta: kuo labiau keturkopteris nukrypsta nuo reikiamos padėties, tuo labiau reikia bandyti jį grąžinti. Deja, ši formulė turės būti sudėtinga. Pagrindinė priežastis yra viršijimas.

Po kelių dešimčių milisekundžių (keletas apdorojimo ciklo iteracijų), veikiamas proporcinio valdiklio, keturkopteris grįš į reikiamą (šiuo atveju horizontalią) padėtį. Visą šį laiką klaida ir pastangos turės tą patį ženklą, nors jų dydis bus vis mažesnis. Įgijęs tam tikrą apsisukimo greitį (kampinį greitį), keturkopteris tiesiog apvirs į kitą pusę, nes jo niekas nesustabdys reikiamoje padėtyje. Tai tarsi spyruoklė, kuri visada nori grįžti į pradinę padėtį, bet jei ją atitraukite ir atleisite, ji svyruos tol, kol trintis ims viršų. Žinoma, keturkopterį paveiks ir trintis, tačiau praktika rodo, kad to neužtenka.

Dėl šios priežasties prie proporcinio valdiklio reikia pridėti dar vieną terminą, kuris sulėtins keturkopterio sukimąsi ir neleis peršokti (riedėjimo priešinga kryptimi) – savotiška trinties imitacija klampioje terpėje: kuo greičiau keturkopteris apsisuka, tuo labiau reikia stengtis jį sustabdyti, žinoma, protingomis ribomis. Sukimosi greitį (klaidos pokyčio greitį) žymime kaip , tada:

kur D yra reguliuojamas koeficientas: kuo jis didesnis, tuo stipresnė stabdymo jėga. Iš mokyklos fizikos kurso iškyla neaiškūs prisiminimai, kad bet kokio dydžio kitimo greitis yra šio dydžio išvestinė laiko atžvilgiu:

.

O dabar proporcinis valdiklis virsta proporciniu-diferenciniu (proporcinis terminas ir diferencialas):

Klaidą lengva apskaičiuoti, nes kiekvienoje iteracijoje mes žinome ir ; P ir D yra parametrai, kuriuos galima konfigūruoti prieš paleidžiant. Norint apskaičiuoti išvestinę vertę (pokyčio greitį), būtina išsaugoti ankstesnę reikšmę, žinoti esamą reikšmę ir žinoti laiką, kuris praėjo tarp matavimų (kontrolinis laikotarpis). Ir štai – šeštos klasės mokyklos fizika (greitis = atstumas / laikas):

Reguliavimo laikotarpis; - klaidos reikšmė iš ankstesnės reguliavimo ciklo iteracijos. Beje, ši formulė yra paprasčiausias būdas skaitinė diferenciacija, ir ji mums čia visai tinka.

Dabar mes turime proporcingą diferencialinį valdiklį plokščiame bikopteryje, bet vis tiek yra dar viena problema. Tegul kairysis kraštas sveria šiek tiek daugiau nei dešinysis, arba, kas yra tas pats, kairysis variklis veikia šiek tiek prasčiau nei dešinysis. Keturkopteris šiek tiek pakreiptas į kairę ir nesisuka atgal: diferencialo narys lygus nuliui, o proporcinio nario, nors jis ir įgyja teigiamą reikšmę, neužtenka keturkopteriui grąžinti į horizontalią padėtį, nes kairysis kraštas šiek tiek sveria. daugiau nei dešinysis. Dėl to keturkopteris visada trauks į kairę.

Tokiems nukrypimams stebėti ir juos ištaisyti reikalingas mechanizmas. Būdingas tokių klaidų bruožas yra tas, kad laikui bėgant jos pasitaiso savaime. Į pagalbą ateina integralus terminas. Jame saugoma visų apdorojimo ciklo iteracijų klaidų suma. Kaip tai padės? Jei proporcinio nario neužtenka ištaisyti nedidelei klaidai, bet ji vis tiek egzistuoja, palaipsniui, laikui bėgant, integralo narys stiprėja, didėja atsakas ir keturkopteris įgauna reikiamą posūkio kampą.

Čia yra niuansas. Tarkime, kad tai yra 1 laipsnis, valdymo ciklas yra 0,1 s. Tada per vieną sekundę klaidų suma pasieks 10 laipsnių. Ir jei apdorojimo ciklas yra 0,01 s, tada kiekis padidės net 100 laipsnių. Kad per tą patį laiką integralinis narys įgytų tą pačią reikšmę įvairiems reguliavimo laikotarpiams, gautą sumą padauginsime iš paties reguliavimo laikotarpio. Nesunku apskaičiuoti, kad abiem atvejais iš pavyzdžio gaunama 1 laipsnio suma. Štai integralinis terminas (kol kas be reguliuojamo koeficiento):

kur yra vienas iš konfigūruojamų parametrų, kurių dabar yra trys: . Šią formulę lengva naudoti programos kodas, o štai vadovėliuose pateikta formulė:

Yra keletas jo variantų, pavyzdžiui, galima apriboti integralo nario modulį, kad jis neviršytų tam tikros leistinos ribos (taip ir padarysime).

Praktika

Na, dabar laikas treniruotis pasirenkant koeficientus. Skaitytojams siūlomas JavaScript puslapis su virtualiu keturkopteriu, kurį jie jau matė nuotraukose: keturkopterio PID valdiklio parametrų parinkimas(JSFiddle). Pirmo starto metu iš karto matosi viršijimas – svyravimai aplink reikiamą padėtį. Kai svyravimai sustoja, galite pastebėti, kad proporcinis koeficientas negali susidoroti su klaida dėl „asimetriško“ kvadrokopterio (nustatyta žymės langeliu „Asimetrija“). Galimi reguliuoti parametrai: P, I, D. Dabar žinote, ką su jais daryti. „Slinktis“ po keturkopteriu gali būti valdoma pagal reikiamą posūkio vertę. "Intervalas (ms):" - reguliavimo intervalas. Sumažinti jį yra apgaulė, tačiau labai naudinga pamatyti, kaip tai paveikia stabilizavimo kokybę.

„Grynos“ matematikos mėgėjams galime pasiūlyti sukonfigūruoti abstraktų PID valdiklį

Įvesti parametrai nėra taikomi automatiškai: reikia spustelėti „Taikyti“. Pora mažų patarimų: jei jums atrodo, kad keturkopteris per lėtai reaguoja į valdymą, galite padidinti P, tačiau per didelė P reikšmė gali sukelti viršijimą. Parametras D padės susidoroti su viršijimu, tačiau per didelės reikšmės sukels dažnus svyravimus arba vėl viršys. I parametras paprastai yra 10–100 kartų mažesnis nei P parametras, nes jo stiprybė yra kaupimas laikui bėgant, o ne greitas atsakas.

Rankinis PID parametrų derinimas reikalauja praktikos. Yra analitiniai jų skaičiavimo metodai, tačiau jiems reikia gerai pasiruošti ir tiksliai žinoti daugelį konkrečios tinkinamos sistemos parametrų. Kaip vidurį tarp rankinio atrankos ir analitinio skaičiavimo, įvairių tyrinėtojų siūlomi įvairūs empiriniai metodai.

Mūsų 2D keturkopteryje keičiasi tik vienas kampas – posūkio kampas. Derinant 3D keturkopterį, kiekvienam kampui reikės trijų nepriklausomų PID valdiklių, o konkretaus variklio valdymas bus visų valdiklių pastangų suma.

Pirmosios dalies išvada

Šiame straipsnyje mes susipažinome su pagrindinėmis sąvokomis: keturkopteris ir skrydžio principas, žingsnis, riedėjimas, posūkis, droselis, droselinė sklendė, skrydžio režimo stabilizavimas, skrydžio valdiklis, giroskopas, akselerometras, greičio reguliatorius, PWM, valdiklio kalibravimas, radijo kalibravimas, borto imtuvas, sąsaja skrydžio valdiklio nustatymui, įjungtos/išjungtos būsenos, automatinis išjungimas.

Po to mes išradome formulę iš naujo PID valdiklisšiek tiek liesdamas skaitinis diferencijavimas ir integravimas, ir patyrė sunkų būdą, kaip sukonfigūruoti parametrus P, aš, Dįjungta virtualus kvadrokopteris .

Dabar, jei esate įgudęs programuoti šviesos kardus, galite pradėti savo keturkopių stabilizavimo programą arba, dar geriau, prisijungti prie esamų atvirojo kodo projektų su naujomis idėjomis. Na, o po savaitės ar dviejų pratęsiu pasakojimą, kaip visa tai buvo užprogramuota, išbandyta, sudužo, įsipjovė pirštus ir visiškai nuskrido nežinoma kryptimi.

Baigdamas šią dalį tiesiog turiu paminėti asmenį, padėjusį man pasirinkti komponentus ir sukonfigūruoti sudėtingiausią (pirmąjį!) kvadrokopterį MegapirateNG programinėje įrangoje ir kantriai atsakiusį į šimtus klausimų apie tai. pagrindinės sąvokos: SovGVD, ačiū! :-)

Kaip atlygį tiems, kurie galėjo iššvaistyti visą šį lapą, paskelbiu žadėtą ​​mažą vaizdo įrašą, kaip mūsų keturkopteris su mūsų „išrastais“ PID valdikliais skrieja mūsų programoje, skirtoje Arduino Mega 2560:

Žinoma, jai trūksta GPS, kaip ir komerciniuose bei masinės gamybos produktuose, šiek tiek trūksta stabilumo, bet tai MŪSŲ, ir mes tai žinome iš vidaus ir iš išorės iki paskutinio integralo koeficiento faktoriaus! Ir labai šaunu, kad tokios technologijos šiandien mums prieinamos.



Sveiki, Habro gyventojai!
Šioje straipsnių serijoje keturkopterio dangtį atversime šiek tiek daugiau nei reikalauja hobis, taip pat parašysime, sukonfigūruosime ir paleisime savo programą skrydžio valdikliui, kuri bus įprasta Arduino Mega 2560 plokštė.

Mes turime priekyje:

  1. Pagrindinės sąvokos (pradedantiesiems kopterio pilotams).
  2. PID valdikliai su interaktyviu internetiniu virtualiojo keturkopterio veikimo demonstravimu.
  3. Tikroji „Arduino“ programa ir „Qt“ konfigūravimo programa.
  4. Pavojingi kvadrokopterio bandymai ant lyno. Pirmieji skrydžiai.
  5. Avarija ir pralaimėjimas lauke. Automatinė paieška iš oro naudojant Qt ir OpenCV.
  6. Paskutiniai sėkmingi testai. Apibendrinant. Kur eiti?

Medžiaga didelė, bet pasistengsiu sutalpinti į 2-3 straipsnius.
Šiandien tikimės: spoilerio su vaizdo įrašu, kaip skrido mūsų kvadrokopteris; pagrindinės sąvokos; PID valdikliai ir jų koeficientų parinkimo praktika.

Kam visa tai?

Akademinis interesas, kuris, beje, persekioja ne tik mane (,). Ir, žinoma, sielai. Labai smagiai praleidau laiką dirbdama ir pajutau tikrą, neapsakomą laimę, kai „IT“ skraidė su mano programa :-)

Kam?

Ši medžiaga taip pat gali būti įdomi žmonėms, kurie yra toli arba kurie tik planuoja įsitraukti į kelių rotorių sistemas. Dabar pakalbėkime apie pagrindinių keturkopterio komponentų paskirtį, kaip jie sąveikauja tarpusavyje, apie pagrindines skrydžio sąvokas ir principus. Žinoma, visas mums reikalingas žinias galima rasti internete, tačiau negalime būti priversti jų ieškoti didžiuliame internete.

Nepažeisdami pagrindinių sąvokų supratimo, praleiskite viską, ką žinote, iki kito nepažįstamo termino, paryškintas pusjuodžiu šriftu, arba į nesuprantamą iliustraciją.

NE #1!

Nepradėkite rašyti savo programos skrydžio valdikliui, kol neišbandysite jau paruoštų sprendimų, kurių dabar yra labai daug (Ardupilot, MegapirateNG, MiltiWii, AeroQuad ir kt.). Visų pirma, tai pavojinga! Norint valdyti kvadrokopterį be GPS ir barometro, reikia praktikos, o juo labiau, kai jis sutrinka, apsiverčia arba skrieja ne ten, kur turėtų – ir tai beveik neišvengiama pirmųjų bandymų metu. Antra, jums bus daug kartų lengviau programuoti, nes suprasite, ką reikia užprogramuoti ir kaip tai turėtų veikti galiausiai. Patikėk manimi: skrydžio matematika yra tik nedidelė programos kodo dalis.

NE #2!

Nesiimkite rašyti savo programos skrydžio vadovui, jei nesiekiate akademinių pomėgių ir jums reikia tik to, ką jau seniai galėjo padaryti jau paruošti sprendimai (skraidyti, fotografuoti, filmuoti, skristi toliau). užduotis ir pan.) Kol viską rašysite patys, tai užtruks ilgai, net jei būsite ne vienas.

Pagrindinės sąvokos


Kvadrokopteriai yra įvairių veislių, tačiau juos visus vienija keturi pagrindiniai rotoriai:
Nepaisant akivaizdžios simetrijos, pilotui labai svarbu atskirti, kur yra keturkopterio priekis (rodoma rodykle). Čia kaip radijo bangomis valdomuose automobilių modeliuose: davus komandą „pirmyn“, keturkopteris skrenda ne ten, kur žiūri pilotas, o ten, kur nukreipta įsivaizduojama kvadrokopterio nosis. Tai kupina pavojaus: pradedantiesiems gali būti sunku susigrąžinti vėjo pagautą, kažkaip į šoną pasuktą įrenginį (žinoma, nekalbame apie skraidymą pirmojo asmens fotoaparate ir apie „išmanųjį“). ” skrydžio režimai naudojant kompasą ir GPS.) Sprendimas Šią problemą iš dalies gali padėti kitos spalvos priekiniai varžtai ar sijos, koks nors kamuoliukas priekyje arba skirtingų spalvų šviesos diodai. Bet visa tai pasirodo nenaudinga, kai pepelatai greitai virsta tašku virš horizonto.

Skrisime ant „X“ formos keturkoperio rėmo, nes man labiau patinka jo išvaizda. Kiekvienas dizainas turi savo privalumų ir tikslą. Be keturkopių, yra ir kitų multikopterių. Net jei neskaičiuojate egzotiškų variantų, jų vis tiek yra visa krūva!



Išsiaiškinkime, kaip mūsų keturkopterio struktūra yra viduje ir ką turėtų daryti skrydžio valdiklis, kurį planuojame programuoti.




Kampai posūkis, posūkis ir posūkis (žingsnis, riedėjimas, posūkis)- kampai, pagal kuriuos įprasta nustatyti ir nustatyti kvadrokopterio orientaciją erdvėje.


Kartais praleidžiamas žodis „kampas“ ir tiesiog sakoma: pitch, roll, yaw. Tačiau, pasak Vikipedijos, tai nėra visiškai tikslu. Keturkopterio skrydis reikiama kryptimi pasiekiamas pakeitus šiuos tris kampus. Pavyzdžiui, norint skristi į priekį, keturkopteris turi pakrypti dėl to, kad galiniai varikliai sukasi šiek tiek stipriau nei priekiniai:

Dujinis kvadrokopteris- aritmetinis vidurkis tarp visų variklių sukimosi greičių. Kuo daugiau dujų, tuo didesnė bendra variklių trauka, tuo labiau jie tempia keturkopterį aukštyn(NESKIRTI PRIEKIN!!! „Šlepetės ant grindų“ čia reiškia greičiausią pakilimą). Paprastai matuojamas procentais: 0% - varikliai sustabdomi, 100% - sukasi maksimaliu greičiu. Dujos sklando- minimalus dujų lygis, būtinas, kad keturkopteris neprarastų aukščio.

Droselis, žingsnis, riedėjimas, posūkis – jei galite valdyti šiuos keturis parametrus, tuomet galėsite valdyti ir keturkopterį. Jie taip pat kartais vadinami valdymo kanalais. Jei įsigijote dviejų kanalų nuotolinio valdymo pultą, keturkopterio valdyti negalėsite. Trijų kanalų labiau tinka mažiems sraigtasparniams: galima skristi ir be posūkio valdymo, bet keturkopteryje tai nėra patogu. Jei norite pakeisti skrydžio režimus, turėsite nusipirkti penkių kanalų nuotolinio valdymo pultą. Jei norite valdyti kameros pakreipimą ir pasukimą laive, yra dar du kanalai, nors profesionalai tam naudoja atskirą nuotolinio valdymo pultą.

Yra daug skrydžio režimų. Naudojamas GPS, barometras ir nuotolio ieškiklis. Bet mes norime įgyvendinti pagrindinį - stabilizavimo režimą ( durti, stabilizuoti, skristi „stubu“), kuriame keturkopteris išlaiko kampus, kurie jam suteikiami iš nuotolinio valdymo pulto, nepaisant išorinių veiksnių. Šiuo režimu, nesant vėjo, keturkopteris gali kabėti beveik vietoje. Pilotas turės kompensuoti vėją.

Varžtų sukimosi kryptis parenkama neatsitiktinai. Jei visi varikliai suktųsi viena kryptimi, keturkopteris dėl susidarančių sukimo momentų suktųsi priešinga kryptimi. Todėl viena priešingų variklių pora visada sukasi viena kryptimi, o kita pora. Posūkio kampui pakeisti naudojamas sukimosi momentų atsiradimo efektas: viena variklių pora pradeda suktis šiek tiek greičiau nei kita, o dabar keturkopteris lėtai atsisuka į mus (koks siaubas):



  • LFW – priekinis kairysis sukimas pagal laikrodžio rodyklę (priekis į kairę, pagal laikrodžio rodyklę)
  • RFC – dešinysis priekis sukimas prieš laikrodžio rodyklę (priekis dešinėje, sukimas prieš laikrodžio rodyklę)
  • LBC – sukimas į kairę atgal prieš laikrodžio rodyklę (atgal į kairę, prieš laikrodžio rodyklę)
  • RBW – sukimas dešinėn atgal pagal laikrodžio rodyklę (galinis dešinysis, sukimas pagal laikrodžio rodyklę)

Reguliuoja variklių sukimosi greitį skrydžio valdiklis (valdiklis, smegenys). Paprastai tai yra maža lenta arba dėžutė su daugybe įėjimų ir išėjimų. Yra daugybė skirtingų valdiklių su skirtingomis galimybėmis, skirtinga programine įranga ir skirtingomis užduotimis. Štai tik keletas:




Bendra skrydžio vadovo užduotis – keletą dešimčių kartų per sekundę atlikti valdymo ciklą, į kurį įeina: jutiklio rodmenų nuskaitymas, valdymo kanalų skaitymas, informacijos apdorojimas ir valdymo signalų išdavimas varikliams, siekiant vykdyti piloto komandas. Tai mes ketiname programuoti.

Galima naudoti daugybę skirtingų tipų jutiklių. Tuos, kurie jau tapo beveik privalomi, naudosime visuose keturkopiuose trijų ašių giroskopas ir trijų ašių akselerometras. Akselerometras matuoja pagreitį, giroskopas – kampinį greitį. Jų dėka skrydžio valdiklis žino esamus nuolydžio, posvyrio ir posūkio kampus. Šie jutikliai gali būti įmontuoti į skrydžio valdiklį arba išoriniai. Trijų kampų skaičiavimas pagal jutiklio rodmenis yra atskiro straipsnio tema. Tačiau mums to nereikia žinoti: MPU-6050 viską padarys už mus. Tai maža plokštė, kuri atlieka reikiamus skaičiavimus ir filtravimą viduje bei sukuria beveik paruoštus kampus naudojant i2c protokolą. Tereikia juos suskaičiuoti, apdoroti su likusiais duomenimis ir duoti valdymo signalus varikliams.

Daugiakopių varikliai sunaudoja dideles sroves, todėl skrydžio valdiklis jas valdo ne tiesiogiai, o per specialias aparatūros tvarkykles, vadinamas greičio reguliatoriai (ESC, reguliatorius, eska). Šie reguliatoriai maitinami iš pagrindinio borto akumuliatoriaus, valdymo signalas gaunamas iš valdiklio, o išėjime turi tris laidus (A, B, C), kurie eina tiesiai į variklius (kiekvienas variklis turi savo reguliatorių !)




Ryšio tarp reguliatoriaus ir variklio „protokolas“ mums nėra toks svarbus kaip skrydžio valdiklio ir reguliatoriaus ryšio „protokolas“, nes mes turime programiškai valdyti reguliatorių iš valdiklio. Yra reguliatorių, valdomų per i2c, bet dažniausiai valdomi kvadratinės bangos signalu, kurio minimali įtampa 0 voltų ir maksimali 3-5 voltai (tai vadinama PWM arba PWM o kai kurie teigia, kad tai teisingiau - PPM. Pavyzdžiui, daugiau informacijos).

„Protokolas“ yra stiprus žodis: norėdamas įsakyti varikliui suktis maksimaliu greičiu, valdiklis turi siųsti 2 milisekundžių impulsus, tarp kurių yra 10–20 milisekundžių loginis nulis. 1 milisekundės impulso trukmė atitinka variklio sustabdymą, 1,1 ms – 10 % didžiausio greičio, 1,2 ms – 20 % ir t.t. Praktiškai nulio trukmė nevaidina jokio vaidmens, svarbi tik paties pulso trukmė.

Nepaisant viso akivaizdaus paprastumo, čia yra pasala: skrydžio valdikliai skiriasi skirtingais nustatymais, reguliatoriai skiriasi, o minimalus (1 ms) ir maksimalus (2 ms) nėra universalus. Priklausomai nuo daugelio veiksnių, 1–2 ms diapazonas iš tikrųjų gali būti 1,1–1,9 ms. Tam, kad reguliuotojas ir kontrolierius kalbėtų visiškai ta pačia kalba, yra tvarka reguliatoriaus kalibravimas. Šios procedūros metu valdiklių diapazonai keičiami ir tampa lygūs valdiklio diapazonui. Procedūra yra integruota į kiekvieno reguliatoriaus programą ir apima kelis paprastus veiksmus (veiksmai gali skirtis priklausomai nuo gamintojo – skaitykite instrukcijas!):

  • Išjunkite reguliatoriaus maitinimą.
  • Nuimkite propelerį nuo variklio.
  • Į valdiklio įvestį įveskite signalą, atitinkantį didžiausią sukimosi greitį.
  • Įjunkite reguliatorių maitinimą. Variklis turi likti nejudantis be pašalinės pagalbos.
  • Į valdiklio įvestį įveskite signalą, atitinkantį minimalų sukimosi greitį.
  • Pristabdykite 1-2 sekundes, palaukite būdingo girgždėjimo.
  • Išjunkite reguliatoriaus maitinimą.

Po to į valdiklį bus įvestos atitinkamos intervalo ribos. Bandant kilti su nekalibruotais reguliatoriais, pasekmės gali būti netikėtos: nuo staigaus keturkopterio trūktelėjimo į artimiausią medį iki visiško variklių nejudėjimo esant bet kokiai droselio vertei.

PWM naudoja lygiai tą patį principą borto imtuvas. Tai nedidelis įrenginys, kuris priima radijo valdymo signalus iš žemės ir perduoda juos skrydžio vadovui. Dažniausiai kiekvieno valdymo kanalo skrydžio valdiklis (akceleratoriaus, žingsnio, posūkio ir kt.) turi savo įvestį, į kurią tiekiamas PWM. Sąveikos logika paprasta: komanda, pavyzdžiui, „70% droselis“, nuolat eina nuo žemės iki imtuvo, kur ji paverčiama PWM ir atskiru laidu siunčiama į skrydžio valdiklį. Tas pats su žingsniu, riedėjimu, posūkiu.

Kadangi imtuvas ir valdiklis turi savo draugišką PWM ryšį, juos taip pat reikės sukalibruoti: nuotolinio valdymo pultai su imtuvais skiriasi savo veikimo diapazonu. Valdiklis turi sugebėti prisitaikyti. Procedūra radijo kalibravimas, skirtingai nei reguliatorių kalibravimas, jį turėsime sukurti patys kaip skrydžio programos dalį. Bendras kalibravimo planas yra toks:

  • Tik tuo atveju nuimkite sraigtus nuo variklių.
  • Kažkaip įjunkite valdiklį į radijo kalibravimo režimą.
  • Valdiklis kelioms dešimtims sekundžių pradeda radijo kalibravimą.
  • Per nurodytą laiką visas nuotolinio valdymo pulto lazdeles judinkite visomis kryptimis, kol jos sustos.
  • Valdiklis šimtmečius saugo visų valdymo kanalų maksimumus ir minimumus vidinėje atmintyje.
Taigi: radijo kalibravimo metu skrydžio valdiklis įsimena visų valdymo kanalų imtuvo diapazonus; ESC kalibravimo metu skrydžio valdiklio diapazonas įvedamas į visus ESC.

Be skrydžio vadovo programos, reikia dar vienos programos: Skrydžio valdiklio sąrankos sąsaja. Dažniausiai tai yra kompiuterinė programa, kuri per USB jungiasi prie skrydžio valdiklio ir leidžia vartotojui konfigūruoti bei patikrinti skrydžio programą, pvz.: atlikti radijo kalibravimą, konfigūruoti stabilizavimo parametrus, patikrinti jutiklių veikimą, nustatyti skrydžio maršrutą. žemėlapį, nustatykite multikopterio elgseną praradus signalą ir dar daugiau. Savo konfigūracijos sąsają parašysime C++ ir Qt kalbomis konsolės įrankio pavidalu. Štai, jei pažvelgsite į ateitį:




Niekas nėra apsaugotas nuo nelaimingų atsitikimų. Net ir 10 colių plastikiniai mažų variklių sraigtai ant odos gali palikti kruvinų mėlynių, kurios skaudės dar savaitę (išbandyta asmeniškai). Nesunku pasidaryti naują makiažą ir šukuoseną, jei nuotolinio valdymo pulte paspaudžiate dujų lazdelę, kai nešiojate įjungtą kvadrokopterį. Todėl skrydžio vadovas turi užtikrinti bent tam tikrą saugumą: mechanizmą ginkluotas / nuginkluotas. Kvadratinio kopterio „išjungta“ būsena reiškia, kad varikliai yra išjungti ir net visiško droselinio valdymo komanda iš nuotolinio valdymo pulto neturi jokios įtakos, nors maitinimas tiekiamas. Keturkopterio „ginkluota“ būsena reiškia, kad komandas iš nuotolinio valdymo pulto vykdo skrydžio valdytojas. Šioje būsenoje keturračiai pakyla, skrenda ir leidžiasi. Keturkopteris įsijungia ir turėtų nedelsiant pereiti į išjungimo būseną, jei neatidus pilotas jį įjungtų, kai nuotolinio valdymo pultelio akceleratoriaus svirtis nėra ties nuliu. Norėdami perkelti kopterį į „ginkluotą“ būseną, pilotas turi atlikti tam tikrą iš anksto sutartą gestą nuotolinio valdymo pulteliu. Dažnai šis gestas yra kelias sekundes palaikyti kairiąją lazdą apatiniame dešiniajame kampe (droselė = 0%, posūkis = 100%). Po to skrydžio vadovas atlieka bent minimalų savęs patikrinimą ir, jei jis sėkmingai išlaikomas, „ apsiginklavęs"(pasiruošęs skristi!) Kitu gestu (akceleratorius = 0%, posūkis = 0%) keturkoperis" tampa nuginkluotas„Dar viena gera saugumo priemonė yra automatinis nusiginklavimas, jei dujos buvo lygios nuliui 2–3 sekundes.

Apie variklius, baterijas, reguliatorius, propelerius

Daugiakopterio komponentų pasirinkimas yra visos straipsnių serijos tema. Jei ketinate gaminti savo pirmąjį keturkopterį, suformuluokite, kam jis reikalingas, ir pasinaudokite patyrusių patarimais arba pasiimkite kitų sudarytų ir sėkmingai juo skraidančių komponentų sąrašą.

Visgi bendram supratimui pravartu žinoti pagrindinius dalykus.

Baterijos


Tarp daugelio rotorių sistemų mėgėjų ir profesionalų ličio polimerų baterijos yra labiausiai paplitusios kaip pagrindiniai borto elektronikos ir variklių maitinimo šaltiniai. Jie išsiskiria talpa, įtampa ir maksimalia srovės galia. Talpa, kaip įprasta, matuojama ampervalandėmis arba miliampervalandėmis. Įtampa matuojama baterijos „celių“ skaičiumi. Viena „skardinė“ yra vidutiniškai 3,7 volto. Visiškai įkrauta „skardinė“ yra 4,2 volto. Dažniausiai pasitaikančios baterijos yra nuo trijų iki šešių elementų. Didžiausia išėjimo srovė matuojama amperais ir žymima, pavyzdžiui, taip: 25C. C yra akumuliatoriaus talpa, 25 yra daugiklis. Jei talpa yra 5 amperai, tada tokia baterija gali tiekti 25 * 5 = 125 amperus. Žinoma, geriau paimti dabartinį išvesties parametrą su rezervu, bet iš esmės kuo jis didesnis, tuo baterija brangesnė. Ženklinimo pavyzdys: 25C 3S 4500mah.

Kiekvienas bankas yra atskira baterija. Visi jie lituojami nuosekliai. Kad visi bankai būtų įkrauti tolygiai, prie kiekvieno banko atskirai suteikiama balansavimo jungtis, naudojami specialūs įkrovikliai.

Varikliai, sraigtai, reguliatoriai


Pagrindinis bešepetėlio variklio parametras yra jo kv. Tai apsisukimų skaičius per minutę kiekvienai įjungtos įtampos voltui. Labiausiai paplitę varikliai yra su kv nuo 300 iki 1100. Kv arčiau 1000 dažniausiai pasirenkamas mažiems keturkoperiams (1-2 kilogramai plius 500 gramų naudingoji apkrova) ir jie komplektuojami su plastikiniais iki 12 colių skersmens sraigtais. Dideli multikopteriai (gerai ir sunkiai foto-video įrangai kelti) ar ilgai skraidantys lėktuvai (skraidinimo laiko rekordams) dažniausiai turi variklius su mažu kv (300-500) ir didžiulius anglies sraigtus (15 - 20 colių skersmens). Kv nėra vienintelis svarbus variklio parametras: dažnai galima rasti ištisas variklio galios ir traukos priklausomybės nuo tiekiamos įtampos bei sumontuoto sraigto tipo lenteles. Be to, kiekvienas variklis sukurtas pagal savo įtampos diapazoną (akumuliatoriaus elementų skaičių) ir savo maksimalią srovę. Jei gamintojas rašo 3-4S, neturėtumėte jo naudoti su 5S baterijomis. Tas pats pasakytina ir apie reguliatorius.

Jei variklis skirtas iki 30A srovei, tai reguliatorius turi būti skirtas iki 30 + 10A srovei, kad būtų išvengta perkaitimo. Prastos kokybės arba netinkami valdikliai gali sukelti vadinamuosius „sinchronizacijos slydimus“ ir užstrigti varikliui skrendant, o jūs atpažinsite kitą kelių rotorių terminą: pagavo planetą„Kitas svarbus momentas – laidų storis ir kokybė.Neteisingai apskaičiuotas laido skerspjūvis arba bloga jungtis gali sukelti gaisrą ore.

Kaip matote, yra daug niuansų. Net pusės jų neišvardijau, todėl pačiam išsirinkti komponentus pirmajam multikopteriui gana sunku.

Stabilizavimo matematika, PID valdikliai (PID)


Jei nuspręsite patekti į multikopterius, anksčiau ar vėliau turėsite susidoroti su PID valdiklio nustatymu, nes šis matematinis aparatas naudojamas beveik visoms stabilizavimo užduotims: stabilizuoti kvadrokopterio kampus ore, skraidyti ir išlaikyti padėtį. naudojant GPS, aukščio laikymas naudojant barometrą, bešepetėliai vaizdo kameros stabilizavimo skrydžio metu mechanizmai (kameros gimbalas).

Nusiperki dviejų ašių kameros gimbalą, dedi ten, pavyzdžiui, GoPro, įjungi, ir vietoj stabilizavimo gauni traukulius, vibracijas ir trūkčiojimus, nors visi jutikliai sukalibruoti ir mechaninės problemos pašalintos. Priežastis – neteisingi PID valdiklių parametrai.

Susirenki multikopterį, sukalibruoji daviklius, reguliatorius, radiją, viską patikrini, bandai pakilti, o ore toks niūrus, kad net lengvas vėjelis jį apverčia. Arba atvirkščiai: jis toks aštrus, kad staiga pakyla ir be leidimo padaro trigubą salto. Priežastis vis dar ta pati: PID valdiklių parametrai.

Daugeliui įrenginių, naudojančių PID valdiklius, yra nustatymo instrukcijos ir net kelios, be daugybės pačių vartotojų pateiktų vaizdo instrukcijų. Tačiau norint lengviau naršyti šioje įvairovėje, naudinga suprasti, kaip šie reguliatoriai veikia viduje. Be to, ketiname parašyti savo keturkopių stabilizavimo sistemą! Siūlau „išradinėti iš naujo“ ir „ant pirštų“ suprasti PID valdiklio formulė. Mėgstantiems sausą matematinę kalbą rekomenduoju Vikipediją, nes... rusiškai medžiaga dar nėra pateikta taip išsamiai.

Kvadrokopterį nagrinėsime dvimatėje erdvėje, kur jis turi tik vieną kampą – posūkio kampą ir du variklius: kairįjį ir dešinįjį.




Skrydžio vadovas nuolat gauna komandas iš žemės: „sukite 30 laipsnių“, „sukite -10 laipsnių“, „sukite 0 laipsnių (laikyk horizontą)“; jos uždavinys – kuo greičiau ir tiksliau juos atlikti naudojant variklius, atsižvelgiant į: vėją, netolygų kvadrokopterio svorio pasiskirstymą, netolygų variklių susidėvėjimą, kvadrokopterio inerciją ir kt. Taigi, skrydžio valdiklis turi nuolat spręsti problemą, kokį sukimosi greitį taikyti kiekvienam varikliui, atsižvelgdamas į esamą posvyrio kampo reikšmę ir reikiamą. Be abejo, nuolat yra stiprus žodis. Viskas priklauso nuo konkrečios aparatinės įrangos skaičiavimo galimybių. „Adruino“ visiškai įmanoma vieną apdorojimo ir valdymo ciklo iteraciją pritaikyti 10 milisekundžių. Tai reiškia, kad kartą per 10 milisekundžių bus nuskaitomi keturkopterio kampai ir pagal juos į variklius bus siunčiami valdymo signalai. Šios 10 milisekundžių vadinamos reguliavimo laikotarpis. Akivaizdu, kad kuo jis mažesnis, tuo reguliavimas vyksta dažniau ir tiksliau.

Dujų lygis teka iš imtuvo į valdiklį. Pažymėkime tai. Leiskite jums priminti, kad tai yra aritmetinis vidurkis tarp visų variklių sukimosi greičių, išreikštas procentais nuo maksimalaus sukimosi greičio. Jei ir yra kairiojo ir dešiniojo variklių sukimosi greičiai, tada:




kur yra keturkopterio reakcija (jėga), kuri sukuria sukimo momentą dėl to, kad kairysis variklis sukasi greičiau nei dujos, o dešinysis variklis sukasi tiek pat lėčiau. taip pat gali turėti neigiamas vertes, tada tinkamas variklis suksis greičiau. Jei išmoksime apskaičiuoti šią vertę kiekvienoje apdorojimo ciklo pakopoje, galėsime valdyti keturkopterį. Akivaizdu, kad tai turėtų priklausyti mažiausiai nuo esamo sukimosi kampo () ir norimo posūkio kampo (), kuris gaunamas iš valdymo pulto.

Įsivaizduokime situaciją: gaunama komanda „išlaikyti horizontą“ (= 0), o keturkopteris rieda į kairę:




- skirtumas (klaida) tarp ir , kurį valdiklis siekia sumažinti.

Kuo didesnis skirtumas tarp norimo posūkio kampo ir dabartinio, tuo stipresnė turėtų būti reakcija, tuo greičiau turėtų suktis kairysis variklis, palyginti su dešiniuoju. Jei tai parašysime naudodami savo žymėjimą:



Čia P yra proporcingumo koeficientas. Kuo jis didesnis, tuo stipresnė bus reakcija, tuo staigiau keturkopteris reaguos į nukrypimus nuo reikiamo posūkio kampo. Ši intuityvi ir paprasta formulė apibūdina darbą proporcingas valdiklis. Esmė paprasta: kuo labiau keturkopteris nukrypsta nuo reikiamos padėties, tuo labiau reikia bandyti jį grąžinti. Deja, ši formulė turės būti sudėtinga. Pagrindinė priežastis yra viršijimas.

Po kelių dešimčių milisekundžių (keletas apdorojimo ciklo iteracijų), veikiamas proporcinio valdiklio, keturkopteris grįš į reikiamą (šiuo atveju horizontalią) padėtį. Visą šį laiką klaida ir pastangos turės tą patį ženklą, nors jų dydis bus vis mažesnis. Įgijęs tam tikrą apsisukimo greitį (kampinį greitį), keturkopteris tiesiog apvirs į kitą pusę, nes jo niekas nesustabdys reikiamoje padėtyje. Tai tarsi spyruoklė, kuri visada nori grįžti į pradinę padėtį, bet jei ją atitraukite ir atleisite, ji svyruos tol, kol trintis ims viršų. Žinoma, keturkopterį paveiks ir trintis, tačiau praktika rodo, kad to neužtenka.

Dėl šios priežasties prie proporcinio valdiklio reikia pridėti dar vieną terminą, kuris sulėtins keturkopterio sukimąsi ir neleis peršokti (riedėjimo priešinga kryptimi) – savotiška trinties imitacija klampioje terpėje: kuo greičiau keturkopteris apsisuka, tuo labiau reikia stengtis jį sustabdyti, žinoma, protingomis ribomis. Sukimosi greitį (klaidos pokyčio greitį) žymime kaip , tada:



kur D yra reguliuojamas koeficientas: kuo jis didesnis, tuo stipresnė stabdymo jėga. Iš mokyklos fizikos kurso iškyla neaiškūs prisiminimai, kad bet kokio dydžio kitimo greitis yra šio dydžio išvestinė laiko atžvilgiu:

.

O dabar proporcinis valdiklis virsta proporciniu-diferenciniu (proporcinis terminas ir diferencialas):

.

Klaidą lengva apskaičiuoti, nes kiekvienoje iteracijoje mes žinome ir ; P ir D yra parametrai, kuriuos galima konfigūruoti prieš paleidžiant. Norint apskaičiuoti išvestinę vertę (pokyčio greitį), būtina išsaugoti ankstesnę reikšmę, žinoti esamą reikšmę ir žinoti laiką, kuris praėjo tarp matavimų (kontrolinis laikotarpis). Ir štai – šeštos klasės mokyklos fizika (greitis = atstumas / laikas):

.

- reguliavimo laikotarpis; - klaidos reikšmė iš ankstesnės reguliavimo ciklo iteracijos. Beje, ši formulė yra paprasčiausias skaitinio diferencijavimo būdas ir čia mums visai tinka.

Dabar mes turime proporcingą diferencialinį valdiklį plokščiame bikopteryje, bet vis tiek yra dar viena problema. Tegul kairysis kraštas sveria šiek tiek daugiau nei dešinysis, arba, kas yra tas pats, kairysis variklis veikia šiek tiek prasčiau nei dešinysis. Keturkopteris šiek tiek pakreiptas į kairę ir nesisuka atgal: diferencialo narys lygus nuliui, o proporcinio nario, nors jis ir įgyja teigiamą reikšmę, neužtenka keturkopteriui grąžinti į horizontalią padėtį, nes kairysis kraštas šiek tiek sveria. daugiau nei dešinysis. Dėl to keturkopteris visada trauks į kairę.

Tokiems nukrypimams stebėti ir juos ištaisyti reikalingas mechanizmas. Būdingas tokių klaidų bruožas yra tas, kad laikui bėgant jos pasitaiso savaime. Į pagalbą ateina integralus terminas. Jame saugoma visų apdorojimo ciklo iteracijų klaidų suma. Kaip tai padės? Jei proporcinio nario neužtenka ištaisyti nedidelei klaidai, bet ji vis tiek egzistuoja, palaipsniui, laikui bėgant, integralo narys stiprėja, didėja atsakas ir keturkopteris įgauna reikiamą posūkio kampą.

Čia yra niuansas. Tarkime, kad tai yra 1 laipsnis, valdymo ciklas yra 0,1 s. Tada per vieną sekundę klaidų suma pasieks 10 laipsnių. Ir jei apdorojimo ciklas yra 0,01 s, tada kiekis padidės net 100 laipsnių. Kad per tą patį laiką integralinis narys įgytų tą pačią reikšmę įvairiems reguliavimo laikotarpiams, gautą sumą padauginsime iš paties reguliavimo laikotarpio. Nesunku apskaičiuoti, kad abiem atvejais iš pavyzdžio gaunama 1 laipsnio suma. Štai integralinis terminas (kol kas be reguliuojamo koeficiento):

.

Ši formulė yra ne kas kita, kaip skaitinis funkcijos integralas intervale nuo nulio iki dabartinio momento. Štai kodėl terminas vadinamas integraliu:

,

kur T yra dabartinis laiko momentas.
Atėjo laikas užrašyti galutinę proporcinio integralo išvestinės valdiklio formulę:

,

kur yra vienas iš konfigūruojamų parametrų, kurių dabar yra trys: . Šią formulę patogu naudoti iš programos kodo, tačiau čia yra formulė, kuri pateikiama vadovėliuose:

.

Yra keletas jo variantų, pavyzdžiui, galima apriboti integralo nario modulį, kad jis neviršytų tam tikros leistinos ribos (taip ir padarysime).

Praktika

Na, dabar laikas treniruotis pasirenkant koeficientus. Skaitytojams siūlomas JavaScript puslapis su virtualiu keturkopteriu, kurį jie jau matė nuotraukose: keturkopterio PID valdiklio parametrų parinkimas(JSFiddle). Pirmo starto metu iš karto matosi viršijimas – svyravimai aplink reikiamą padėtį. Kai svyravimai sustoja, galite pastebėti, kad proporcinis koeficientas negali susidoroti su klaida dėl „asimetriško“ kvadrokopterio (nustatyta žymės langeliu „Asimetrija“). Galimi reguliuoti parametrai: P, I, D. Dabar žinote, ką su jais daryti. „Slinktis“ po keturkopteriu gali būti valdoma pagal reikiamą posūkio vertę. "Intervalas (ms):" - reguliavimo intervalas. Sumažinti jį yra apgaulė, tačiau labai naudinga pamatyti, kaip tai paveikia stabilizavimo kokybę.

„Grynos“ matematikos mėgėjams galime pasiūlyti sukonfigūruoti abstraktų PID valdiklį

Įvesti parametrai nėra taikomi automatiškai: reikia spustelėti „Taikyti“. Pora mažų patarimų: jei jums atrodo, kad keturkopteris per lėtai reaguoja į valdymą, galite padidinti P, tačiau per didelė P reikšmė gali sukelti viršijimą. Parametras D padės susidoroti su viršijimu, tačiau per didelės reikšmės sukels dažnus svyravimus arba vėl viršys. I parametras paprastai yra 10–100 kartų mažesnis nei P parametras, nes jo stiprybė yra kaupimas laikui bėgant, o ne greitas atsakas.

Rankinis PID parametrų derinimas reikalauja praktikos. Yra analitiniai jų skaičiavimo metodai, tačiau jiems reikia gerai pasiruošti ir tiksliai žinoti daugelį konkrečios tinkinamos sistemos parametrų. Kaip vidurį tarp rankinio atrankos ir analitinio skaičiavimo, įvairių tyrinėtojų siūlomi įvairūs empiriniai metodai.

Mūsų 2D keturkopteryje keičiasi tik vienas kampas – posūkio kampas. Derinant 3D keturkopterį, kiekvienam kampui reikės trijų nepriklausomų PID valdiklių, o konkretaus variklio valdymas bus visų valdiklių pastangų suma.

Pirmosios dalies išvada

Šiame straipsnyje mes susipažinome su pagrindinėmis sąvokomis: keturkopteris ir skrydžio principas, žingsnis, riedėjimas, posūkis, droselis, droselinė sklendė, skrydžio režimo stabilizavimas, skrydžio valdiklis, giroskopas, akselerometras, greičio reguliatorius, PWM, valdiklio kalibravimas, radijo kalibravimas, borto imtuvas, sąsaja skrydžio valdiklio nustatymui, įjungtos/išjungtos būsenos, automatinis išjungimas.

Po to mes išradome formulę iš naujo PID valdiklisšiek tiek liesdamas skaitinis diferencijavimas ir integravimas, ir patyrė sunkų būdą, kaip sukonfigūruoti parametrus P, aš, Dįjungta virtualus kvadrokopteris .

Dabar, jei esate įgudęs programuoti šviesos kardus, galite pradėti savo keturkopių stabilizavimo programą arba, dar geriau, prisijungti prie esamų atvirojo kodo projektų su naujomis idėjomis. Na, o po savaitės ar dviejų, kai turėsiu jėgų ir laiko prilygti kokybei, tęsiu pasakojimą, kaip visa tai buvo užprogramuota, išbandyta, sugedo, susipjovė pirštus ir visiškai nuskrido nežinoma kryptimi. Jei tikrai norite tęsti, galite susisiekti su manimi čia arba, pavyzdžiui, „Vkontakte“: tai šiek tiek paskatina.

Baigdamas šią dalį tiesiog turiu paminėti asmenį, padėjusį man pasirinkti komponentus ir sukonfigūruoti sudėtingiausią (pirmąjį!) kvadrokopterį MegapirateNG programinėje įrangoje ir kantriai atsakiusį į šimtus klausimų apie šias labai paprastas sąvokas: ačiū! :-)

Kaip atlygį tiems, kurie galėjo iššvaistyti visą šį lapą, paskelbiu žadėtą ​​mažą vaizdo įrašą, kaip mūsų keturkopteris su mūsų „išrastais“ PID valdikliais skrieja mūsų programoje, skirtoje Arduino Mega 2560:



Žinoma, jai trūksta GPS, kaip ir komerciniuose bei masinės gamybos produktuose, šiek tiek trūksta stabilumo, bet tai MŪSŲ, ir mes tai žinome iš vidaus ir iš išorės iki paskutinio integralo koeficiento faktoriaus! Ir labai šaunu, kad tokios technologijos šiandien mums prieinamos.

DĖMESIO, straipsnis pasenęs, bet vis tiek gali būti naudojamas informaciniais tikslais
Kaip ir žadėjau, kai tik skrisiu, parašysiu visą įrašą apie savo skraidančio bloko surinkimą. Tikrai daugelis jau seniai matė, kaip „paprastas“ biuro darbuotojas tai surenka per 2 valandas. Iš karto pažymėsiu, kad nesu „eilinis“ biuro darbuotojas, todėl dar nesu daug pilotavę, bet svarbu, kad keturkopteris skraido ir tinkamai reaguoja į valdymą. Pirmas ir svarbiausias dalykas, jei nuspręsite kolekcionuoti, netaupykite pinigų ir negalvokite, kad esate protingesni už tuos, kurie jau skraido, taip pat nepamirškite, kad teorija šiek tiek prieštarauja praktikai.
Yra daugybė programinės įrangos, paruoštų valdiklių, jutiklių parinkčių, variklių ir kt. ir taip toliau. - Yra iš ko rinktis, tačiau straipsnyje aš sutelksiu dėmesį tik į vieną variantą, paremtą Arduino Mega, MegaPirate programine įranga ir palyginti pigiais jutikliais.

Rezultatas

Kad nekankintų jūsų, %username%, štai kaip jis skrenda be specialių nustatymų, kalibravimo ir balansavimo netinkamose rankose:

Ko mums dabar reikia tam...

Tęsinys
PS: Tikiuosi, kad RC temos žmonės man atleis už netikslumus ir, kur reikia, pataisys.



 


Skaityti:



Kaip padalinti standųjį diską

Kaip padalinti standųjį diską

Kaip padalinti standųjį diską į du skaidinius neprarandant duomenų, jei yra vienas skaidinys, konvertuotas į pagrindinį tomą su raide (C:), įjungta...

Kietąjį diską padaliname į skaidinius

Kietąjį diską padaliname į skaidinius

Diegiant Windows, kietasis diskas tradiciškai yra padalinamas į bent du skaidinius – mažesnį sistemos skaidinį su raide C ir didesnį vartotojo skaidinį...

Įjungus kompiuteris pypsi

Įjungus kompiuteris pypsi

Paskelbimo data: 2011-02-01 Būna atvejų, kai kompiuteris neįsijungia, o pradeda pypsėti. Jeigu įsiklausysite, paaiškės, kad...

Teisingas failų plėtinių keitimas sistemoje Windows Kaip pakeisti archyvo plėtinį

Teisingas failų plėtinių keitimas sistemoje Windows Kaip pakeisti archyvo plėtinį

„Windows“ operacinės sistemos yra populiarios, nes leidžia konfigūruoti darbo kompiuterius taip, kaip vartotojui atrodo tinkama. Dar nei vienos OS...

tiekimo vaizdas RSS