Acasă - Configurarea routerului
Cum să faci un quadcopter folosind arduino. Cum să vă proiectați propriul quadcopter Programarea unui quadcopter pe arduino partea 2 habrahabr

Pentru a asambla un quadcopter cu propriile mâini acasă, trebuie mai întâi să înțelegeți componentele de bază ale quadcopterului.

Piese pentru asamblarea unui quadcopter

  1. Quadcopter Frame Diatone Q450 Quad 450 V3 PCB Quadcopter Frame Kit 450mm (ultimele trei cifre din numele Q450 indică distanța dintre motoare în mm în diagonală). Este corpul aeronavei, care va fi folosit pentru a monta toate celelalte echipamente și componente electronice. Este format din 4 raze și placa de circuit imprimat. Greutate 295 grame.

    banggood.com

    Pret 922 ruble.

  2. Motor DYS D2822-14 1450KV Motor fara perii. 4 bucăți.

    Vândut în magazinul online Banggood.com

    Pret 571 rub/buc

  3. Regulator DYS 30A 2-4S Brushless Speed ​​Controller ESC Simonk Firmware pentru reglarea vitezei și controlul vitezei. 4 bucăți.

    Vândut în magazinul online Banggood.com

    Pret 438 rub/buc

  4. Elice DYS E-Prop 8x6 8060 SF ABS Slow Fly Propeller Blade Pentru Avion RC, 4 buc. Două elice pentru dreapta și două elice pentru stânga.

    Vândut în magazinul online Banggood.com

    Pret 125 rub/buc

  5. Modul de control quadcopter KK2.1.5 kk21evo. 1 bucată

    Vândut în magazinul online Banggood.com

    Pret 1680 ruble.

  6. Baterie reîncărcabilă litiu-polimer Turnigy nano-tech 2200mah 4S ~90C Lipo Pack, trebuie să pregătiți cel puțin două bucăți, și de preferat patru, deoarece se epuizează rapid. 1 bucată

    Vândut în magazinul online Parkflyer.ru

    Pret 1268 RUR/buc

  7. Încărcător de baterie Hobby King Variable6S 50W 5A. 1 bucată

    Vândut în magazinul online Hobbyco.ru

    Pret 900 de ruble.

  8. Conector baterie XT60 Mufă Masă 12AWG 10cm Cu Sârmă. 1 bucată

    Vândut în magazinul online Banggood.com

    Pret 144 ruble.

  9. Cleme pentru fixarea firelor pe corpul quadcopterului. 1000 bucăți 2.0x100mm Legături de cablu din nailon negru/alb Legături cu fermoar. 1 pachet.

    Vândut în magazinul online Banggood.com

    Pret 316 ruble.

  10. Conectori 20 perechi 3,5 mm conector tip ștecher banană pentru baterie/motor RC. Pentru firele regulatorului. 1 pachet.

    Vândut în magazinul online Banggood.com

    Pret 256 ruble.

  11. Banda velcro pentru atasarea bateriei la corpul quadcopterului. 1 bucată

    Vândut în magazinul online Banggood.com

    Preț 79 ruble.

  12. Set de șuruburi de fixare a motorului 50 buc pentru DJI F450 F550 HJ450 550 Quadcopter Multicopter. 1 pachet.

    Pret 217 ruble.

  13. Telecomanda pentru quadcopter Spektrum DX6 V2 cu receptor AR610. Receptorul și transmițătorul sunt furnizate într-un singur kit. 1 bucată

    Pret 9700 ruble.

În total, un set de echipamente pentru asamblare va costa 20.018 ruble.

Caracteristici la alegerea componentelor


Caracteristicile de bază ale transmițătorului:

  • Moduri Mode1 sau Mode2. În primul mod, mânerul de gaz este în dreapta, în al doilea mod, mânerul de gaz este în stânga.
  • Frecvența emițătorului este de 2,4 GHz.
  • Numărul de canale. Canalele minime necesare pentru controlul aeronavei sunt patru. Echipamentul de control de la Spektrum DX6 V2 cu receptor AR610 conține 6 canale.

Instrucțiuni pas cu pas pentru asamblarea unui quadcopter cu propriile mâini

  1. Reducem lungimea firelor de pe regulatoare. La conectarea regulatorului la motoare, lungimea firelor va depăși semnificativ lungimea fasciculului pe care va fi atașată întreaga structură.

  2. Lipim conectorii la capetele firelor de pe regulator, astfel încât în ​​viitor să puteți conecta regulatorul la motoare.

  3. Instalăm motoarele - înșurubam 1 motor pe fiecare grindă.

  4. Asamblam cadrul. Înșurubați grinzile pe placă.

  5. Conectăm firele regulatorului la motoare. Cablurile regulatorului și ale motorului sunt conectate în orice ordine. În viitor, poate fi necesar să modificați ordinea conexiunii atunci când finalizați configurarea dronei. Când se utilizează regulatoare dedicate pentru fiecare motor, polii pozitiv și negativ trebuie conectați la controler de la un singur regulator.

  6. Fixăm modulul de comandă pe corp cu bandă dublă. Cel mai bine este situat în partea centrală a platformei.

  7. Fixăm receptorul pe corp cu bandă dublu și îl conectăm la modulul de control. Receptorul trebuie amplasat cât mai aproape de modul.

    Scopul canalelor este descris în manualul receptorului. De obicei, succesiunea lor este următoarea:

    1. Eleroanele - canalul responsabil pentru virajele la stânga și la dreapta;
    2. Lift - un canal care ghidează direcțiile înainte și înapoi;
    3. Gazul este un canal care controlează gazul. Gestionează decolarea și aterizarea, precum și schimbările de altitudine;
    4. Yaw - canalul face posibilă rotirea quadcopterului în jurul axei sale.

  8. Alimentam dispozitivul. Conectam bateria la conector.

Această operațiune completează procesul de asamblare a quadcopterului.

Înființat

  1. Pornim motoarele. Activarea motoarelor necesită procesul de pornire a motoarelor - armare. Manualul de instrucțiuni explică în detaliu cum să realizați acest lucru. Dezactivarea motoarelor necesită o procedură de dezarmare.
  2. Pornim gazul slab și ne asigurăm că motoarele se rotesc. Modelul de rotație trebuie să fie același cu cel indicat în diagrama din manualul controlerului. Dacă motorul se rotește incorect, trebuie doar să schimbați polii firelor care vin de la motor la controler.

  3. Înșurubam a doua platformă pe corpul quadcopterului.

  4. Atașăm o bandă Velcro pe carcasă pentru a fixa bateria.

    Asamblare quadcopter DIY folosind Arduino

    Concluzie

    Doar cei cărora le place să rezolve probleme complexe pot efectua auto-asamblarea unui quadcopter. Aceștia ar trebui să fie oameni care se bucură de progresul diferitelor calcule și de procesul de asamblare a dispozitivului.

    Avantajul unui copter asamblat cu propriile mele mâini faptul că oricând îl poți face upgrade adăugând noi echipamente.

Quadcopterul are și sursă de alimentare autonomă. Costul total al unui astfel de produs de casă este de aproximativ 60 USD.

Dacă aveți o cantitate mai substanțială, atunci este mai promițător să vă echipați produsul de casă cu motoare fără perii cu controlere adecvate.

Un giroscop și un accelerometru sunt folosite pentru a stabiliza zborul. Este necesar un giroscop pentru a determina unghiul de înclinare al quadcopterului în raport cu gravitația pământului. Este necesar un accelerometru pentru a calcula accelerația.

Materiale si instrumente:
- baterii cu litiu(la 3,7 V);
- fire;
- tranzistor ULN2003A Darlington Tranzistor (se pot folosi tranzistori mai puternici);
- motoare tip 0820 Motoare Coreless;
- microcontroler Arduino Uno;
- Placa MPU-6050 (aceasta este atat giroscop cat si accelerometru);
- disponibilitatea unei imprimante 3D sau acces la aceasta;
- instrumentele necesare.

Procesul de fabricatie:

Pasul unu. Crearea unui corp de quadcopter
Corpul este realizat foarte rapid și simplu. Este imprimat folosind o imprimantă 3D. Crearea unui cadru în acest fel este bună pentru că iese ușor, totul datorită imprimării în fagure. Proiectarea pieselor a avut loc în programul Solidworks. Folosind acest program, puteți edita parametrii carcasei și puteți face propriile modificări la acesta, dacă este necesar.




După imprimarea cadrului quadcopterului, puteți instala motoarele și firele de lipit pe ele.




Pasul doi. Conectarea Arduino
Modul de conectare a plăcii MPU6050 poate fi văzut în diagrama de mai jos. Este important să înțelegeți că biblioteca Arduino implică conectarea prin acești pini. Dacă se utilizează un circuit de la alt producător, este important să vă asigurați că contactele sunt aranjate în aceeași ordine.


Pentru alimentarea plăcii se folosește doar 3,3 V dacă o alimentați cu 5 V, se va deteriora. Unele plăci MPU6050 au o siguranță care protejează sistemul de înaltă tensiune, dar e mai bine să nu riști. Dacă placa are un pin AD0, aceasta trebuie conectată la masă (GND). În acest caz, VIO este conectat la pinul AD0 direct pe placă, deci nu este nevoie să conectați pinul AD0.












Pentru ca Arduino să controleze motoarele, va fi nevoie de tranzistori, datorită acestora va fi posibilă alimentarea cu tensiune înaltă a motoarelor. Puteți vedea mai detaliat cum sunt conectate toate elementele în diagramă.

Pasul trei. Schiță pentru Arduino
Odată ce MPU-6050 este conectat la Arduino, trebuie să îl porniți și să descărcați schița codului scanerului I2C. Apoi, trebuie să copiați codul programului și să-l lipiți într-o schiță goală. După aceasta, trebuie să deschideți monitorul serial Arduino IDE (Tools->Serial Monitor) și să vă asigurați că 9600 este conectat.
Dacă totul este făcut corect, dispozitivul I2C va fi detectat, i se va atribui o adresă de 0x68 sau 0x69, trebuie notat.
În continuare, este încărcată o schiță care prelucrează informațiile de la giroscop și accelerometru. Există multe dintre ele pe Internet, dar cel mai bine este să le folosiți.


Pe etapa finala Va trebui să calibrați valorile giroscopului și accelerometrului. Pentru a face acest lucru, trebuie să găsiți o suprafață plană și să plasați MPU6050 pe ea. În continuare, este lansată schița de calibrare, datele de abatere rezultate sunt înregistrate și apoi utilizate în schița MPU6050_DMP6.

Pasul patru. Program pentru Arduino
Datorită programului care este postat, quadcopterul se stabilizează și se blochează într-o stare stabilă. Apoi, folosind acest program, quadcopterul este controlat.


Două controlere PID sunt folosite pentru a stabiliza quadcopterul. Unul este necesar pentru pitch, iar al doilea pentru ruliu. Controlerul măsoară viteza de rotație a elicelor și pe baza acesteia este controlat quadcopterul.

Pasul cinci. Modificare quadcopter

Principala problemă a unui quadcopter mic și ieftin este greutatea acestuia. Pentru a rezolva această problemă, trebuie să instalați motoare mai puternice și mai ușoare, motoarele fără perii sunt cele mai potrivite, sunt numite și motoare cu supape. Sunt mult mai bune decât cele cu perie, dar trebuie să le cumpărați și regulatoare de viteză, astfel încât costul produselor de casă crește brusc.

Salutare cititori!
În această serie de articole vom deschide capacul quadcopterului puțin mai mult decât ne cere hobby-ul și, de asemenea, vom scrie, configura și lansa propriul program pentru controlerul de zbor, care va fi o placă obișnuită Arduino Mega 2560.

Avem in fata:

  1. Concepte de bază.
  2. Controlere PID cu o demonstrație web interactivă a funcționării pe un quadcopter virtual.
  3. Programul propriu-zis pentru Arduino și programul de configurare pentru Qt.
  4. Teste periculoase ale unui quadcopter pe o frânghie. Primele zboruri.
  5. Accident și pierdere în teren. Căutare automată din aer folosind Qt și OpenCV.
  6. Teste finale de succes. Rezumând. Unde urmează?

Materialul este voluminos, dar voi încerca să îl încadrez în 2-3 articole.
Astăzi ne așteptăm: un spoiler cu un videoclip despre cum a zburat quadcopterul nostru; concepte de bază; Controlere PID și practică de selectare a coeficienților acestora.

De ce toate astea?

Interes academic, care, de altfel, nu mă urmărește doar pe mine (,). Și, desigur, pentru suflet. M-am distrat de minune în timp ce lucram și am simțit o fericire reală, de nedescris, când „IT” a zburat cu programul meu :-)

Pentru cine?

Acest material poate fi, de asemenea, de interes pentru persoanele care sunt departe sau care doar plănuiesc să se implice în sisteme cu mai multe rotoare. Acum să vorbim despre scopul principalelor componente ale quadcopterului, cum interacționează între ele, despre conceptele și principiile de bază ale zborului. Desigur, toate cunoștințele de care avem nevoie pot fi găsite pe Internet, dar nu putem fi obligați să le căutăm pe vastul Internet.

Fără a compromite înțelegerea conceptelor de bază, nu ezitați să omiteți tot ce știți până la următorul termen necunoscut, evidențiate cu caractere aldine, sau la o ilustrare de neînțeles.

NU #1!

Nu scrieți propriul program de control de zbor până nu încercați. soluții gata făcute, dintre care acum sunt destul de multe (Ardupilot, MegapirateNG, MiltiWii, AeroQuad etc.). În primul rând, este periculos! Este nevoie de practică pentru a controla un quadcopter fără GPS și un barometru, și cu atât mai mult atunci când se defectează, se răstoarnă sau nu zboară exact unde ar trebui - și acest lucru este aproape inevitabil în timpul primelor teste. În al doilea rând, îți va fi de multe ori mai ușor să programezi înțelegând ce trebuie programat și cum ar trebui să funcționeze în cele din urmă. Crede-ma: matematica zborului este doar o mică parte din codul programului.

NU #2!

Nu vă angajați să vă scrieți propriul program pentru un controlor de zbor dacă nu urmăriți un interes academic și aveți nevoie doar de ceea ce soluții gata făcute au putut face de mult timp (zburați, faceți fotografii, filmați videoclipuri, zburați la misiune , etc.) În timp ce scrii totul singur, va dura mult timp, chiar dacă nu ești singur.

Concepte de bază

Quadcopterele vin în diferite soiuri, dar toate sunt unite de patru rotoare principale:

În ciuda simetriei aparente, este foarte important ca pilotul să distingă unde este partea din față a quadcopterului (indicată de săgeată). Aici, ca modele controlate radio mașini: atunci când este dată comanda „înainte”, quadcopterul zboară nu acolo unde se uită pilotul, ci unde este îndreptat nasul imaginar al quadcopterului. Acest lucru este plin de pericol: poate fi dificil pentru începători să se întoarcă la ei înșiși un dispozitiv care a fost prins de vânt și întors în lateral (noi, desigur, nu vorbim despre zborul cu o cameră la persoana întâi și despre „inteligentă” moduri de zbor folosind o busolă și GPS.) Soluție Această problemă poate fi parțial ajutată de șuruburi frontale sau grinzi de altă culoare, un fel de minge pe față sau LED-uri de diferite culori. Dar toate acestea se dovedesc a fi inutile atunci când pepelatele se transformă rapid într-un punct deasupra orizontului.

Vom zbura pe un cadru de quadcopter în formă de „X” pentru că îmi place mai mult aspectul. Fiecare design are propriile sale avantaje și scop. Pe lângă quadcoptere, există și alte multicoptere. Chiar dacă nu numărați opțiunile exotice, există totuși o mulțime de ele!

Să ne dăm seama cum este structurat în interior quadcopterul nostru și ce ar trebui să facă controlerul de zbor pe care intenționăm să-l programăm.


Unghiuri înclinare, rostogolire și rotire (pitch, roll, yaw)- unghiuri după care se obișnuiește să se determine și să se stabilească orientarea quadcopterului în spațiu.

Uneori, cuvântul „unghi” este omis și pur și simplu spun: pitch, roll, yaw. Dar, conform Wikipedia, acest lucru nu este complet corect. Zborul quadcopterului în direcția necesară se realizează prin schimbarea acestor trei unghiuri. De exemplu, pentru a zbura înainte, quadcopterul trebuie să se încline din cauza faptului că motoarele din spate se rotesc puțin mai puternic decât cele din față:

Quadcopter pe gaz- media aritmetică între vitezele de rotație ale tuturor motoarelor. Cu cât mai mult gaz, cu atât este mai mare forța totală a motoarelor, cu atât mai mult trag quadcopterul Sus(NU ÎNAINTE!!! „Papuci pe podea” înseamnă aici cea mai rapidă ascensiune). De obicei, măsurat ca procent: 0% - motoarele sunt oprite, 100% - se rotesc la viteza maximă. Gaz plutind- nivelul minim de gaz care este necesar pentru ca quadcopterul să nu piardă altitudine.

Accelerare, pitch, roll, yaw - dacă puteți controla acești patru parametri, atunci puteți controla quadcopterul. Ele sunt uneori numite și canale de control. Dacă ați achiziționat o telecomandă cu două canale, nu veți putea controla quadcopterul. Cel cu trei canale este mai potrivit pentru elicopterele mici: puteți zbura fără control de rulare, dar nu este convenabil pe un quadcopter. Dacă doriți să schimbați modurile de zbor, va trebui să plătiți pentru o telecomandă cu cinci canale. Dacă doriți să controlați înclinarea și panoul camerei de la bord, există încă două canale, deși profesioniștii folosesc o telecomandă separată pentru aceasta.

Există multe moduri de zbor. Se utilizează GPS, barometru și telemetru. Dar vrem să implementăm cel de bază - modul de stabilizare ( înjunghie, stabiliza, zboară într-un „stub”), în care quadcopterul menține unghiurile care îi sunt date de la telecomandă, indiferent de factorii externi. În acest mod, în absența vântului, quadcopterul poate atârna aproape pe loc. Pilotul va trebui să compenseze vântul.

Direcția de rotație a șuruburilor nu este aleasă aleatoriu. Dacă toate motoarele s-ar roti într-o direcție, quadcopterul s-ar roti în direcția opusă din cauza cuplurilor create. Prin urmare, o pereche de motoare opuse se rotește întotdeauna într-o direcție, iar cealaltă pereche se rotește întotdeauna în cealaltă. Efectul apariției cuplurilor de rotație este folosit pentru a schimba unghiul de rotire: o pereche de motoare începe să se rotească puțin mai repede decât cealaltă, iar acum quadcopterul se întoarce încet spre noi (ce groază):

  • LFW - rotație în sensul acelor de ceasornic față stânga (față stânga, rotație în sensul acelor de ceasornic)
  • RFC - rotație în sens invers acelor de ceasornic în față dreapta (față în dreapta, rotație în sens invers acelor de ceasornic)
  • LBC - spate stânga rotație în sens invers acelor de ceasornic (spate stânga, rotație în sens invers acelor de ceasornic)
  • RBW - rotație dreapta spate în sensul acelor de ceasornic (dreapta spate, rotație în sensul acelor de ceasornic)

Controlează viteza de rotație a motoarelor controler de zbor (controller, creier). De obicei, aceasta este o placă mică sau o cutie cu multe intrări și ieșiri. Există un număr mare de controlere diferite cu seturi diferite de capabilități, firmware diferit, sarcini diferite. Iată doar câteva:


Sarcina generală a controlorului de zbor este de a efectua un ciclu de control de câteva zeci de ori pe secundă, care include: citirea citirilor senzorilor, citirea canalelor de control, procesarea informațiilor și emiterea de semnale de control către motoare pentru a executa comenzile pilotului. Acesta este ceea ce vom programa.

Există multe tipuri diferite de senzori care pot fi utilizați. Le vom folosi pe cele care au devenit deja aproape obligatorii în toate quadcopterele giroscop cu trei axe și accelerometru cu trei axe. Accelerometrul măsoară accelerația, giroscopul măsoară viteza unghiulară. Datorită acestora, controlorul de zbor cunoaște unghiurile curente de înclinare, rulare și rotire. Acești senzori pot fi încorporați în controlerul de zbor sau externi. Procesul de calcul a trei unghiuri pe baza citirilor senzorului este un subiect pentru un articol separat. Dar nu trebuie să știm acest lucru aici: MPU-6050 va face totul pentru noi. Aceasta este o placă mică care efectuează calculele și filtrarea necesare intern și produce unghiuri aproape gata făcute folosind protocolul i2c. Tot ce trebuie să facem este să le numărăm, să le procesăm cu restul datelor și să emitem semnale de control către motoare.

Motoarele de pe multicoptere consumă curenți mari, astfel încât controlerul de zbor le controlează nu direct, ci prin drivere hardware speciale numite regulatoare de viteza (ESC, regulator, eska). Aceste regulatoare sunt alimentate de bateria principală de bord, semnalul de control este primit de la controler, iar la ieșire au trei fire (A, B, C), care merg direct la motoare (fiecare motor are propriul regulator). !)


„Protocolul” de comunicare între regulator și motor nu este la fel de important pentru noi precum „protocolul” de comunicare între controlerul de zbor și regulator, deoarece trebuie să controlăm programatic regulatorul de la controler. Există regulatoare controlate prin i2c, dar cele mai comune sunt controlate de un semnal de undă pătrată cu minim 0 volți și maxim 3-5 volți (se numește PWM sau PWM, iar unii susțin că este mai corect - PPM. Mai multe detalii, de exemplu).

„Protocol” este un cuvânt puternic: pentru a comanda motorului să se rotească la viteză maximă, controlerul trebuie să trimită impulsuri cu durata de 2 milisecunde, intercalate cu un zero logic care durează 10 - 20 milisecunde. O durată a impulsului de 1 milisecundă corespunde opririi motorului, 1,1 ms - 10% din viteza maxima, 1,2 ms - 20% etc. În practică, durata zero nu joacă niciun rol importantă doar durata pulsului.

În ciuda simplității aparente, există o ambuscadă aici: controlorii de zbor vin în diferite variante setări diferite, regulatoarele sunt diferite, iar minimum (1 ms) și maxim (2 ms) nu sunt universale. În funcție de mulți factori, intervalul de 1-2 ms se poate dovedi a fi de fapt 1,1 - 1,9 ms. Pentru ca regulatorul și controlorul să vorbească absolut aceeași limbă, există o procedură calibrarea regulatorului. În timpul acestei proceduri, intervalele de control sunt modificate și devin egale cu domeniul controlerului. Procedura este conectată în programul fiecărui controler și include mai multe pași simpli(pașii pot varia în funcție de producător - citiți instrucțiunile!):

  • Opriți alimentarea cu energie a regulatorului.
  • Scoateți elicea din motor.
  • Aplicați un semnal corespunzător vitezei maxime de rotație la intrarea controlerului.
  • Aplicați puterea regulatorului. Motorul trebuie să rămână nemișcat fără ajutor extern.
  • Aplicați un semnal corespunzător vitezei minime de rotație la intrarea controlerului.
  • Opriți 1-2 secunde, așteptați scârțâitul caracteristic.
  • Opriți alimentarea cu energie a regulatorului.

După aceasta, limitele de interval corespunzătoare vor fi introduse în controler. Când încercați să decolați cu regulatoare necalibrate, consecințele pot fi neașteptate: de la o smucitură bruscă a quadcopterului în cel mai apropiat arbore până la imobilitatea completă a motoarelor la orice valoare a accelerației.

PWM folosește exact același principiu receptor la bord. Acest dispozitiv mic, primind semnale de radiocomandă de la sol și transmitându-le controlorului de zbor. Cel mai adesea, controlerul de zbor pentru fiecare canal de control (accelerare, pitch, rulare etc.) are propria sa intrare la care este furnizat PWM. Logica interacțiunii este simplă: o comandă, de exemplu, „70% accelerație” merge continuu de la sol la receptor, unde este convertită în PWM și trimisă controlorului de zbor printr-un fir separat. Același lucru cu pitch, roll, yaw.

Deoarece receptorul și controlerul au propria lor relație prietenoasă PWM, vor trebui, de asemenea, calibrate: telecomenzile cu receptoare sunt diferite cu propriile lor domenii de operare. Controlerul trebuie să se poată adapta. Procedură calibrare radio, spre deosebire de calibrarea regulatoarelor, va trebui să o creăm noi înșine ca parte a programului de zbor. Planul general de calibrare este următorul:

  • Scoateți elicele de la motoare pentru orice eventualitate.
  • Pune cumva controlerul în modul de calibrare radio.
  • Controlerul începe calibrarea radio timp de câteva zeci de secunde.
  • În timpul alocat, mișcați toate stick-urile telecomenzii în toate direcțiile până când se opresc.
  • Controlerul își amintește maximele și minimele pentru toate canalele de control în timpul memorie internă de secole.

Deci: în timpul calibrării radio, controlerul de zbor își amintește intervalele receptorului pentru toate canalele de control; În timpul calibrării ESC, intervalul controlerului de zbor este introdus în toate ESC-urile.

Pe lângă programul pentru controlorul de zbor, este nevoie de încă un program: interfață de configurare a controlerului de zbor. Cel mai adesea, este un program pentru PC care se conectează la controlerul de zbor prin USB și permite utilizatorului să configureze și să verifice programul de zbor, de exemplu: rulați calibrarea radio, configurați parametrii de stabilizare, verificați funcționarea senzorilor, setați o rută de zbor pe harta, determinați comportamentul multicopterului atunci când semnalul este pierdut și multe altele. Vom scrie interfața noastră de configurare în C++ și Qt sub forma unui utilitar de consolă. Iată-l, dacă te uiți în viitor:


Nimeni nu este imun la accidente. Chiar și elicele din plastic de zece inci pe motoare mici pot lăsa vânătăi sângeroase pe piele care vor răni încă o săptămână (testat personal). Este ușor să-ți oferi un nou machiaj și o coafură dacă cuplați tija de pe telecomandă în timp ce purtați quadcopterul pornit. Prin urmare, controlorul de zbor trebuie să ofere măcar o oarecare siguranță: mecanismul înarmat/dezarmat. Starea „dezarmată” a quadcopterului înseamnă că motoarele sunt oprite și chiar și o comandă de accelerație maximă de la telecomandă nu are efect, deși este furnizată energie. Starea „înarmată” a quadcopterului înseamnă că comenzile de la telecomandă sunt efectuate de controlerul de zbor. În această stare, quadcopterele decolează, zboară și aterizează. Quadcopterul pornește și ar trebui să intre imediat în starea dezarmată în cazul în care un pilot neatent îl pornește atunci când maneta de accelerație de pe telecomandă nu este la zero. Pentru a pune elicotterul în starea „înarmată”, pilotul trebuie să facă un gest pre-acordat cu telecomandele. Adesea, acest gest este să țineți stick-ul din stânga în colțul din dreapta jos (accelerare = 0%, yaw = 100%) pentru câteva secunde. După aceasta, controlorul de zbor efectuează cel puțin un autotest minim și dacă trece cu succes, " înarmandu-se„(gata să zboare!) Cu un alt gest (accelerare = 0%, yaw = 0%) quadcopter” devine dezarmat„O altă măsură bună de securitate este autodezarmare, dacă gazul a fost la zero timp de 2-3 secunde.

Despre motoare, baterii, regulatoare, elice

Alegerea componentelor pentru un multicopter este un subiect pentru o serie întreagă de articole. Dacă ai de gând să-ți faci primul quadcopter, formulează pentru ce ai nevoie de el și folosește sfaturile celor cu experiență sau ia o listă de componente pe care altcineva le-a compilat și zboară cu succes pe el.

Totuși, pentru o înțelegere generală, este util să cunoașteți punctele principale.

baterii

Printre amatorii și profesioniștii sistemelor multi-rotoare, bateriile cu litiu-polimer sunt cele mai comune ca surse principale de alimentare pentru electronicele și motoarele de bord. Ele se disting prin capacitate, tensiune și curent maxim de ieșire. Capacitatea, ca de obicei, este măsurată în amperi-ore sau miliamperi-oră. Tensiunea este măsurată în numărul de „celule” ale bateriei. O „cutie” este o medie de 3,7 volți. O „cutie” complet încărcată este de 4,2 volți. Cele mai comune baterii sunt cele cu trei până la șase celule. Curentul maxim de ieșire este măsurat în amperi și este marcat, de exemplu, astfel: 25C. C este capacitatea bateriei, 25 este multiplicatorul. Dacă capacitatea este de 5 amperi, atunci o astfel de baterie poate furniza 25 * 5 = 125 de amperi. Desigur, este mai bine să luați parametrul de ieșire curent cu o rezervă, dar, practic, cu cât este mai mare, cu atât bateria este mai scumpă. Exemplu de etichetare: 25C 3S 4500mah.

Fiecare bancă este o baterie separată. Toate sunt lipite în serie. Pentru a încărca toate băncile în mod egal, este prevăzut un conector de echilibrare cu acces la fiecare bancă separat și special încărcătoare.

Motoare, elice, regulatoare

Parametrul principal al unui motor fără perii este kv-ul său. Acesta este numărul de rotații pe minut pentru fiecare volt de tensiune aplicat. Cele mai comune motoare sunt cu kv de la 300 la 1100. Kv mai aproape de 1000 este de obicei ales pentru quadcopterele mici (1-2 kilograme plus 500 de grame de sarcină utilă) și sunt echipate cu elice din plastic de până la 12 inci în diametru. Multicopterele mari (pentru ridicarea echipamentelor foto-video bune și grele) sau aeronavele cu zbor lung (pentru înregistrări de timp de zbor) au de obicei motoare cu kv scăzut (300-500) și elice uriașe de carbon (15 - 20 inci în diametru). Kv nu este singurul parametru important motor: puteți găsi adesea tabele întregi cu dependența puterii și a forței motorului de tensiunea furnizată și de tipul de elice instalat. În plus, fiecare motor este proiectat pentru propriul său domeniu de tensiune (număr de celule baterie) și propriul său curent maxim. Dacă producătorul scrie 3-4S, nu ar trebui să îl utilizați cu baterii 5S. Același lucru este valabil și pentru autoritățile de reglementare.

Dacă motorul este proiectat pentru un curent de până la 30 A, atunci regulatorul trebuie proiectat pentru un curent de până la 30 + 10 A pentru a preveni supraîncălzirea. Calitatea proastă sau regulatoarele neadecvate pot provoca așa-numitele „alunecări de sincronizare” și pot bloca motorul în zbor și veți recunoaște un alt termen multi-rotor: „ a prins planeta„Încă una punct important- grosimea si calitatea firelor. Un fir dimensionat incorect sau un conector prost poate duce la un incendiu în aer.

După cum puteți vedea, există o mulțime de nuanțe. Nici măcar nu am enumerat jumătate dintre ele, așa că este destul de dificil să alegi singur componentele pentru primul tău multicopter.

Matematică de stabilizare, controlere PID (PID)

Dacă decideți să intrați în multicoptere, atunci mai devreme sau mai târziu va trebui să vă ocupați de setarea controlerului PID, deoarece acest aparat matematic este utilizat în aproape toate sarcinile de stabilizare: stabilizarea unghiurilor unui quadcopter în aer, zborul și menținerea unei poziții. folosind GPS, mentinerea altitudinii cu ajutorul unui barometru, mecanisme brushless stabilizare a camerei video in zbor (gimbal camera).

Cumperi un gimbal de cameră cu două axe, pui acolo, de exemplu, un GoPro, îl pornești și în loc de stabilizare primești convulsii, vibrații și zvâcniri, deși toți senzorii sunt calibrați și problemele mecanice sunt eliminate. Motivul este parametrii incorecți ai regulatoarelor PID.

Asamblezi un multicopter, calibrezi senzori, regulatoare, radio, verifici totul, încerci să decolezi și este atât de plictisitor în aer, încât chiar și o adiere ușoară îl răstoarnă. Sau invers: este atât de ascuțit încât decolează brusc și face o triplă capotaie fără voie. Motivul este în continuare același: parametrii controlerelor PID.

Pentru multe dispozitive care folosesc controlere PID, există instrucțiuni de configurare și chiar mai multe în plus față de numeroasele instrucțiuni video de la utilizatorii înșiși. Dar pentru a facilita navigarea în această diversitate, este util să înțelegem cum funcționează aceste autorități de reglementare în interior. În plus, vom scrie propriul nostru sistem de stabilizare cu quadcopter! Propun să „reinventăm” și „pe degete” pentru a înțelege Formula controlerului PID. Pentru cei care preferă limbajul matematic uscat, recomand Wikipedia, pentru că... în limba rusă materialul nu este încă prezentat atât de detaliat.

Vom lua în considerare un quadcopter în spațiu bidimensional, unde are un singur unghi - unghiul de rulare și două motoare: stânga și dreapta.


Controlerul de zbor primește continuu comenzi de la sol: „rulați 30 de grade”, „rulați -10 grade”, „rulați 0 grade (ține orizontul)”; sarcina sa este de a le executa cât mai rapid și precis cu ajutorul motoarelor, ținând cont de: vânt, distribuția neuniformă a greutății quadcopterului, uzura neuniformă a motoarelor, inerția quadcopterului etc. Astfel, controlerul de zbor trebuie să rezolve în mod continuu problema ce viteză de rotație să aplice fiecărui motor, ținând cont de valoarea actuală a unghiului de înclinare și de cea necesară. Continuu este, desigur, un cuvânt puternic. Totul depinde de capacitățile de calcul ale unui anumit hardware. Pe Adruino, este foarte posibil să se încadreze o iterație a ciclului de procesare și control în 10 milisecunde. Aceasta înseamnă că o dată la 10 milisecunde vor fi citite unghiurile quadcopterului și, pe baza acestora, vor fi trimise semnale de control către motoare. Aceste 10 milisecunde sunt numite perioada de reglementare. Este clar că cu cât este mai mic, cu atât mai des și mai precis are loc reglementarea.

Nivelul gazului curge de la receptor la controler. Să o notăm. Permiteți-mi să vă reamintesc că aceasta este media aritmetică dintre vitezele de rotație ale tuturor motoarelor, exprimată ca procent din viteza maximă de rotație. Dacă și sunt vitezele de rotație ale motoarelor stânga și dreapta, atunci:

unde este răspunsul quadcopterului (forța), care creează un cuplu datorită faptului că motorul din stânga se rotește mai repede decât gazul, iar motorul din dreapta se rotește la fel de mult mai lent. poate lua și valori negative, atunci motorul potrivit se va învârti mai repede. Dacă învățăm să calculăm această valoare la fiecare iterație a ciclului de procesare, atunci vom putea controla quadcopterul. Este clar că ar trebui să depindă cel puțin de unghiul de rulare curent () și unghiul de rulare dorit (), care vine de la panoul de control.

Să ne imaginăm o situație: este primită comanda „păstrați orizontul” ( = 0), iar quadcopterul are o rolă la stânga:


Diferența (eroarea) dintre și , pe care controlerul încearcă să o minimizeze.

Cu cât diferența dintre unghiul de rulare dorit și cel actual este mai mare, cu atât reacția ar trebui să fie mai puternică, cu atât motorul din stânga ar trebui să se rotească mai repede față de cel drept. Dacă scriem asta folosind notația noastră:

Aici P este coeficientul de proporționalitate. Cu cât este mai mare, cu atât reacția va fi mai puternică, cu atât quadcopterul va reacționa mai ascuțit la abaterile de la unghiul de rulare necesar. Această formulă intuitivă și simplă descrie munca controler proporțional. Ideea este simplă: cu cât quadcopterul se abate mai mult de la poziția cerută, cu atât mai greu trebuie să încerci să-l returnezi. Din păcate, această formulă va trebui să fie complicată. Motivul principal este depășirea.

În câteva zeci de milisecunde (mai multe iterații ale ciclului de procesare), sub influența controlerului proporțional, quadcopterul va reveni la poziția necesară (în acest caz orizontală). În tot acest timp, eroarea și efortul vor avea același semn, deși vor deveni din ce în ce mai puțin în amploare. După ce a atins o anumită viteză de viraj (viteză unghiulară), quadcopterul se va întoarce pur și simplu pe cealaltă parte, deoarece nimeni nu îl va opri în poziția dorită. Este ca un arc care se străduiește întotdeauna să revină în poziția inițială, dar dacă îl trageți înapoi și îl eliberați, acesta va oscila până când frecarea preia controlul. Desigur, quadcopterul va fi afectat și de frecare, dar practica arată că nu este suficient.

Din acest motiv, la controlerul proporțional trebuie adăugat încă un termen, care va încetini rotația quadcopterului și va preveni depășirea (rularea în direcția opusă) - un fel de imitație a frecării într-un mediu vâscos: cu atât este mai rapid. quadcopterul se întoarce, cu atât mai greu trebuie să încerci să-l oprești, desigur, în limite rezonabile. Notăm viteza de rotație (rata de modificare a erorii) ca , atunci:

unde D este un coeficient reglabil: cu cât este mai mare, cu atât forța de oprire este mai puternică. Dintr-un curs de fizică la școală, apar amintiri vagi că rata de modificare a oricărei mărimi este derivata acestei mărimi în raport cu timpul:

.

Și acum controlerul proporțional se transformă într-unul proporțional-diferențial (termen proporțional și diferențial):

Eroarea este ușor de calculat, deoarece la fiecare iterație cunoaștem și ; P și D sunt parametri care pot fi configurați înainte de lansare. Pentru a calcula derivata (rata de schimbare), este necesar să se memoreze valoarea anterioară, să se cunoască valoarea curentă și să se cunoască timpul care a trecut între măsurători (perioada de control). Și iată - fizică în clasa a șasea (viteză = distanță / timp):

Perioada de reglementare; - valoarea de eroare din iterația anterioară a ciclului de reglare. Apropo, această formulă este cel mai simplu mod diferențierea numerică și este destul de potrivită pentru noi aici.

Acum avem un controler diferenţial proporţional într-un bicopter plat, dar mai există încă o problemă. Lăsați marginea stângă să cântărească puțin mai mult decât dreapta sau, ceea ce este același lucru, lăsați motorul stâng să funcționeze puțin mai rău decât cel drept. Quadcopterul este ușor înclinat spre stânga și nu se întoarce: termenul diferențial este zero, iar termenul proporțional, deși are o valoare pozitivă, nu este suficient pentru a readuce quadcopterul în poziție orizontală, deoarece marginea stângă cântărește puțin. mai mult decât dreptul. Drept urmare, quadcopterul va trage întotdeauna spre stânga.

Este necesar un mecanism care să monitorizeze astfel de abateri și să le corecteze. O trăsătură caracteristică a unor astfel de erori este că ele se corectează în timp. Termenul integral vine în ajutor. Stochează suma tuturor erorilor din toate iterațiile buclei de procesare. Cum va ajuta acest lucru? Dacă termenul proporțional nu este suficient pentru a corecta o mică eroare, dar încă există, treptat, în timp, termenul integral capătă putere, crescând răspunsul și quadcopterul ia unghiul de rulare necesar.

Există o nuanță aici. Să presupunem că este de 1 grad, ciclul de control este de 0,1 s. Apoi, într-o secundă, suma erorilor va lua valoarea de 10 grade. Și dacă ciclul de procesare este de 0,01 s, atunci cantitatea va câștiga până la 100 de grade. Pentru ca în același timp termenul integral să câștige aceeași valoare pentru diferite perioade de reglementare, vom înmulți suma rezultată cu perioada de reglementare în sine. Este ușor de calculat că în ambele cazuri se obține din exemplu suma de 1 grad. Iată-l - termenul integral (fără un coeficient ajustabil deocamdată):

unde este unul dintre parametrii configurabili, dintre care acum sunt trei: . Această formulă este ușor de utilizat codul programului, și iată formula care este dată în manuale:

Există mai multe variante ale acestuia, de exemplu, puteți limita modulul termenului integral astfel încât să nu depășească un anumit prag admisibil (vom face acest lucru).

Practica

Ei bine, acum este timpul să exersăm selectarea coeficienților. Cititorilor li se oferă o pagină JavaScript cu un quadcopter virtual, pe care l-au văzut deja în imagini: selectarea parametrilor controlerului PID pentru un quadcopter(JSFiddle). La prima pornire, depășirea este imediat vizibilă - oscilații în jurul poziției necesare. Când oscilațiile se opresc, puteți observa efectul că coeficientul proporțional nu poate face față erorii din cauza quadcopterului „asimetric” (setat de caseta de selectare „Asimetrie”). Parametrii disponibili pentru configurare sunt P, I, D. Acum știi ce să faci cu ei. „Scrollul” de sub quadcopter poate fi controlat de valoarea de rulare necesară. „Interval (ms):” - interval de reglare. Reducerea acestuia este o înșelăciune, dar este foarte util să vezi cum afectează calitatea stabilizării.

Pentru iubitorii de matematică „pură”, le putem oferi configurați controlerul PID abstract

Parametrii introduși nu sunt aplicați automat: trebuie să faceți clic pe „Aplicați”. Câteva sfaturi mici: dacă simțiți că quadcopterul este prea lent pentru a răspunde la control, puteți crește P, dar prea mult P poate duce la depășire. Parametrul D va ajuta să faceți față depășirii, dar valorile prea mari vor duce la oscilații frecvente sau, din nou, la depășiri. Parametrul I este de obicei de 10 - 100 de ori mai mic decât parametrul P deoarece puterea sa constă în acumularea în timp, nu în răspunsul rapid.

Reglarea manuală a parametrilor PID necesită practică. Există metode analitice pentru calcularea acestora, dar ele necesită o bună pregătire și cunoașterea exactă a multor parametri ai sistemului specific care este personalizat. Ca o cale de mijloc între selecția manuală și calculul analitic, există o gamă largă de metode empirice propuse de diverși cercetători.

În quadcopterul nostru 2D, un singur unghi se schimbă - unghiul de rulare. La reglarea unui quadcopter 3D, vor fi necesare trei controlere PID independente pentru fiecare dintre unghiuri, iar controlul unui motor specific va reprezenta suma eforturilor de la toate controlerele.

Concluzia primei părți

În acest articol, ne-am familiarizat cu conceptele de bază: quadcopter și principiul zborului, înclinare, rostogolire, rotiță, accelerație, accelerație hover, modul de stabilizare a zborului, controler de zbor, giroscop, accelerometru, regulator de viteză, PWM, calibrare controler, calibrare radio, receptor de bord, interfață pentru setarea controlerului de zbor, stări armate/dezarmate, autodezarmare.

După aceea am reinventat formula Controler PID atingand putin diferențierea și integrarea numericăși a experimentat modul greu de configurare a parametrilor P, I, D pe quadcopter virtual .

Acum, dacă sunteți priceput în programarea cu sabie laser, puteți începe programul de stabilizare a quadcopterului sau, mai bine, vă puteți alătura proiectelor open source existente cu idei noi. Ei bine, peste o săptămână sau două voi continua povestea despre cum totul a fost programat, testat, prăbușit, mi-a tăiat degetele și a zburat complet într-o direcție necunoscută.

În încheierea acestei părți, trebuie pur și simplu să menționez persoana care m-a ajutat în alegerea componentelor și în configurarea celui mai complex (primul!) quadcopter de pe firmware-ul MegapirateNG și a răspuns cu răbdare la sute de întrebări despre acestea. concepte de bază: SovGVD, mulțumesc! :-)

Ca o recompensă pentru cei care au reușit să risipească toată această foaie, postez micul videoclip promis despre modul în care quadcopterul nostru cu controlerele PID „inventate” zboară în programul nostru pentru Arduino Mega 2560:

Bineînțeles, îi lipsește GPS-ul, ca și în produsele comerciale și produse în masă, îi lipsește puțin stabilitatea, dar este a NOSTRU și îl știm pe dinăuntru și pe dinafară până la ultimul factor al coeficientului integral! Și este foarte bine că astfel de tehnologii ne sunt disponibile astăzi.



Bună, locuitorii Habro!
În această serie de articole vom deschide capacul quadcopterului puțin mai mult decât ne cere hobby-ul și, de asemenea, vom scrie, configura și lansa propriul program pentru controlerul de zbor, care va fi o placă obișnuită Arduino Mega 2560.

Avem in fata:

  1. Concepte de bază (pentru piloții de elicopter începători).
  2. Controlere PID cu o demonstrație web interactivă a funcționării pe un quadcopter virtual.
  3. Programul propriu-zis pentru Arduino și programul de configurare pentru Qt.
  4. Teste periculoase ale unui quadcopter pe o frânghie. Primele zboruri.
  5. Accident și pierdere în teren. Căutare automată din aer folosind Qt și OpenCV.
  6. Teste finale de succes. Rezumând. Unde urmează?

Materialul este voluminos, dar voi încerca să îl încadrez în 2-3 articole.
Astăzi ne așteptăm: un spoiler cu un videoclip despre cum a zburat quadcopterul nostru; concepte de bază; Controlere PID și practică de selectare a coeficienților acestora.

De ce toate astea?

Interes academic, care, de altfel, nu mă urmărește doar pe mine (,). Și, desigur, pentru suflet. M-am distrat de minune în timp ce lucram și am simțit o fericire reală, de nedescris, când „IT” a zburat cu programul meu :-)

Pentru cine?

Acest material poate fi, de asemenea, de interes pentru persoanele care sunt departe sau care doar plănuiesc să se implice în sisteme cu mai multe rotoare. Acum să vorbim despre scopul principalelor componente ale quadcopterului, cum interacționează între ele, despre conceptele și principiile de bază ale zborului. Desigur, toate cunoștințele de care avem nevoie pot fi găsite pe Internet, dar nu putem fi obligați să le căutăm pe vastul Internet.

Fără a compromite înțelegerea conceptelor de bază, nu ezitați să omiteți tot ce știți până la următorul termen necunoscut, evidențiate cu caractere aldine, sau la o ilustrare de neînțeles.

NU #1!

Nu începeți să scrieți propriul program pentru un controlor de zbor până nu încercați soluții gata făcute, dintre care acum există destul de multe (Ardupilot, MegapirateNG, MiltiWii, AeroQuad etc.). În primul rând, este periculos! Este nevoie de practică pentru a controla un quadcopter fără GPS și un barometru, și cu atât mai mult atunci când se defectează, se răstoarnă sau nu zboară exact unde ar trebui - și acest lucru este aproape inevitabil în timpul primelor teste. În al doilea rând, îți va fi de multe ori mai ușor să programezi înțelegând ce trebuie programat și cum ar trebui să funcționeze în cele din urmă. Crede-ma: matematica zborului este doar o mică parte din codul programului.

NU #2!

Nu vă angajați să vă scrieți propriul program pentru un controlor de zbor dacă nu urmăriți un interes academic și aveți nevoie doar de ceea ce soluții gata făcute au putut face de mult timp (zburați, faceți fotografii, filmați videoclipuri, zburați la misiune , etc.) În timp ce scrii totul singur, va dura mult timp, chiar dacă nu ești singur.

Concepte de bază


Quadcopterele vin în diferite soiuri, dar toate sunt unite de patru rotoare principale:
În ciuda simetriei aparente, este foarte important ca pilotul să distingă unde este partea din față a quadcopterului (indicată de săgeată). Aici, la fel ca în modelele de mașini controlate radio: atunci când este dată comanda „înainte”, quadcopterul zboară nu unde se uită pilotul, ci unde îndreaptă nasul imaginar al quadcopterului. Acest lucru este plin de pericol: poate fi dificil pentru începători să se întoarcă la ei înșiși un dispozitiv care a fost prins de vânt și întors în lateral (noi, desigur, nu vorbim despre zborul cu o cameră la persoana întâi și despre „inteligentă” moduri de zbor folosind o busolă și GPS.) Soluție Această problemă poate fi parțial ajutată de șuruburi frontale sau grinzi de altă culoare, un fel de minge pe față sau LED-uri de diferite culori. Dar toate acestea se dovedesc a fi inutile atunci când pepelatele se transformă rapid într-un punct deasupra orizontului.

Vom zbura pe un cadru de quadcopter în formă de „X” pentru că îmi place mai mult aspectul. Fiecare design are propriile sale avantaje și scop. Pe lângă quadcoptere, există și alte multicoptere. Chiar dacă nu numărați opțiunile exotice, există totuși o mulțime de ele!



Să ne dăm seama cum este structurat în interior quadcopterul nostru și ce ar trebui să facă controlerul de zbor pe care intenționăm să-l programăm.




Unghiuri înclinare, rostogolire și rotire (pitch, roll, yaw)- unghiuri după care se obișnuiește să se determine și să se stabilească orientarea quadcopterului în spațiu.


Uneori, cuvântul „unghi” este omis și pur și simplu spun: pitch, roll, yaw. Dar, conform Wikipedia, acest lucru nu este complet corect. Zborul quadcopterului în direcția necesară se realizează prin schimbarea acestor trei unghiuri. De exemplu, pentru a zbura înainte, quadcopterul trebuie să se încline din cauza faptului că motoarele din spate se rotesc puțin mai puternic decât cele din față:

Quadcopter pe gaz- media aritmetică între vitezele de rotație ale tuturor motoarelor. Cu cât mai mult gaz, cu atât este mai mare forța totală a motoarelor, cu atât mai mult trag quadcopterul Sus(NU ÎNAINTE!!! „Papuci pe podea” înseamnă aici cea mai rapidă ascensiune). De obicei, măsurat ca procent: 0% - motoarele sunt oprite, 100% - se rotesc la viteza maximă. Gaz plutind- nivelul minim de gaz care este necesar pentru ca quadcopterul să nu piardă altitudine.

Accelerare, pitch, roll, yaw - dacă puteți controla acești patru parametri, atunci puteți controla quadcopterul. Ele sunt uneori numite și canale de control. Dacă ați achiziționat o telecomandă cu două canale, nu veți putea controla quadcopterul. Cel cu trei canale este mai potrivit pentru elicopterele mici: puteți zbura fără control de rulare, dar nu este convenabil pe un quadcopter. Dacă doriți să schimbați modurile de zbor, va trebui să plătiți pentru o telecomandă cu cinci canale. Dacă doriți să controlați înclinarea și panoul camerei de la bord, există încă două canale, deși profesioniștii folosesc o telecomandă separată pentru aceasta.

Există multe moduri de zbor. Se utilizează GPS, barometru și telemetru. Dar vrem să implementăm cel de bază - modul de stabilizare ( înjunghie, stabiliza, zboară într-un „stub”), în care quadcopterul menține unghiurile care îi sunt date de la telecomandă, indiferent de factorii externi. În acest mod, în absența vântului, quadcopterul poate atârna aproape pe loc. Pilotul va trebui să compenseze vântul.

Direcția de rotație a șuruburilor nu este aleasă aleatoriu. Dacă toate motoarele s-ar roti într-o direcție, quadcopterul s-ar roti în direcția opusă din cauza cuplurilor create. Prin urmare, o pereche de motoare opuse se rotește întotdeauna într-o direcție, iar cealaltă pereche se rotește întotdeauna în cealaltă. Efectul apariției cuplurilor de rotație este folosit pentru a schimba unghiul de rotire: o pereche de motoare începe să se rotească puțin mai repede decât cealaltă, iar acum quadcopterul se întoarce încet spre noi (ce groază):



  • LFW - rotație în sensul acelor de ceasornic față stânga (față stânga, rotație în sensul acelor de ceasornic)
  • RFC - rotație în sens invers acelor de ceasornic în față dreapta (față în dreapta, rotație în sens invers acelor de ceasornic)
  • LBC - spate stânga rotație în sens invers acelor de ceasornic (spate stânga, rotație în sens invers acelor de ceasornic)
  • RBW - rotație dreapta spate în sensul acelor de ceasornic (dreapta spate, rotație în sensul acelor de ceasornic)

Controlează viteza de rotație a motoarelor controler de zbor (controller, creier). De obicei, aceasta este o placă mică sau o cutie cu multe intrări și ieșiri. Există un număr mare de controlere diferite cu seturi diferite de capabilități, firmware diferit și sarcini diferite. Iată doar câteva:




Sarcina generală a controlorului de zbor este de a efectua un ciclu de control de câteva zeci de ori pe secundă, care include: citirea citirilor senzorilor, citirea canalelor de control, procesarea informațiilor și emiterea de semnale de control către motoare pentru a executa comenzile pilotului. Acesta este ceea ce vom programa.

Există multe tipuri diferite de senzori care pot fi utilizați. Le vom folosi pe cele care au devenit deja aproape obligatorii în toate quadcopterele giroscop cu trei axe și accelerometru cu trei axe. Accelerometrul măsoară accelerația, giroscopul măsoară viteza unghiulară. Datorită acestora, controlorul de zbor cunoaște unghiurile curente de înclinare, rulare și rotire. Acești senzori pot fi încorporați în controlerul de zbor sau externi. Procesul de calcul a trei unghiuri pe baza citirilor senzorului este un subiect pentru un articol separat. Dar nu trebuie să știm acest lucru aici: MPU-6050 va face totul pentru noi. Aceasta este o placă mică care efectuează calculele și filtrarea necesare intern și produce unghiuri aproape gata făcute folosind protocolul i2c. Tot ce trebuie să facem este să le numărăm, să le procesăm cu restul datelor și să emitem semnale de control către motoare.

Motoarele de pe multicoptere consumă curenți mari, astfel încât controlerul de zbor le controlează nu direct, ci prin drivere hardware speciale numite regulatoare de viteza (ESC, regulator, eska). Aceste regulatoare sunt alimentate de bateria principală de bord, semnalul de control este primit de la controler, iar la ieșire au trei fire (A, B, C), care merg direct la motoare (fiecare motor are propriul regulator). !)




„Protocolul” de comunicare între regulator și motor nu este la fel de important pentru noi precum „protocolul” de comunicare între controlerul de zbor și regulator, deoarece trebuie să controlăm programatic regulatorul de la controler. Există regulatoare controlate prin i2c, dar cele mai comune sunt controlate de un semnal de undă pătrată cu minim 0 volți și maxim 3-5 volți (se numește PWM sau PWM, iar unii susțin că este mai corect - PPM. Mai multe detalii, de exemplu).

„Protocol” este un cuvânt puternic: pentru a comanda motorului să se rotească la viteză maximă, controlerul trebuie să trimită impulsuri cu durata de 2 milisecunde, intercalate cu un zero logic care durează 10 - 20 milisecunde. O durată a impulsului de 1 milisecundă corespunde opririi motorului, 1,1 ms - 10% din viteza maximă, 1,2 ms - 20% etc. În practică, durata zero nu joacă niciun rol importantă doar durata pulsului.

În ciuda simplității aparente, există o ambuscadă aici: controlerele de zbor sunt diferite cu setări diferite, regulatoarele sunt diferite, iar minimul (1 ms) și maximul (2 ms) nu sunt universale. În funcție de mulți factori, intervalul de 1-2 ms se poate dovedi a fi de fapt 1,1 - 1,9 ms. Pentru ca regulatorul și controlorul să vorbească absolut aceeași limbă, există o procedură calibrarea regulatorului. În timpul acestei proceduri, intervalele de control sunt modificate și devin egale cu domeniul controlerului. Procedura este inclusă în programul fiecărui regulator și include câțiva pași simpli (pașii pot varia în funcție de producător - citiți instrucțiunile!):

  • Opriți alimentarea cu energie a regulatorului.
  • Scoateți elicea din motor.
  • Aplicați un semnal corespunzător vitezei maxime de rotație la intrarea controlerului.
  • Aplicați puterea regulatorului. Motorul trebuie să rămână nemișcat fără ajutor extern.
  • Aplicați un semnal corespunzător vitezei minime de rotație la intrarea controlerului.
  • Opriți 1-2 secunde, așteptați scârțâitul caracteristic.
  • Opriți alimentarea cu energie a regulatorului.

După aceasta, limitele de interval corespunzătoare vor fi introduse în controler. Când încercați să decolați cu regulatoare necalibrate, consecințele pot fi neașteptate: de la o smucitură bruscă a quadcopterului în cel mai apropiat arbore până la imobilitatea completă a motoarelor la orice valoare a accelerației.

PWM folosește exact același principiu receptor la bord. Acesta este un dispozitiv mic care primește semnale de control radio de la sol și le transmite controlorului de zbor. Cel mai adesea, controlerul de zbor pentru fiecare canal de control (accelerare, pitch, rulare etc.) are propria sa intrare la care este furnizat PWM. Logica interacțiunii este simplă: o comandă, de exemplu, „70% accelerație” merge continuu de la sol la receptor, unde este convertită în PWM și trimisă controlorului de zbor printr-un fir separat. Același lucru cu pitch, roll, yaw.

Deoarece receptorul și controlerul au propria lor relație prietenoasă PWM, vor trebui, de asemenea, calibrate: telecomenzile cu receptoare sunt diferite cu propriile lor domenii de operare. Controlerul trebuie să se poată adapta. Procedură calibrare radio, spre deosebire de calibrarea regulatoarelor, va trebui să o creăm noi înșine ca parte a programului de zbor. Planul general de calibrare este următorul:

  • Scoateți elicele de la motoare pentru orice eventualitate.
  • Pune cumva controlerul în modul de calibrare radio.
  • Controlerul începe calibrarea radio timp de câteva zeci de secunde.
  • În timpul alocat, mișcați toate stick-urile telecomenzii în toate direcțiile până când se opresc.
  • Controlerul stochează maximele și minimele pentru toate canalele de control în memoria internă timp de secole.
Deci: în timpul calibrării radio, controlerul de zbor își amintește intervalele receptorului pentru toate canalele de control; În timpul calibrării ESC, intervalul controlerului de zbor este introdus în toate ESC-urile.

Pe lângă programul pentru controlorul de zbor, este nevoie de încă un program: interfață de configurare a controlerului de zbor. Cel mai adesea, este un program pentru PC care se conectează la controlerul de zbor prin USB și permite utilizatorului să configureze și să verifice programul de zbor, de exemplu: rulați calibrarea radio, configurați parametrii de stabilizare, verificați funcționarea senzorilor, setați o rută de zbor pe harta, determinați comportamentul multicopterului atunci când semnalul este pierdut și multe altele. Vom scrie interfața noastră de configurare în C++ și Qt sub forma unui utilitar de consolă. Iată-l, dacă te uiți în viitor:




Nimeni nu este imun la accidente. Chiar și elicele din plastic de zece inci pe motoare mici pot lăsa vânătăi sângeroase pe piele care vor răni încă o săptămână (testat personal). Este ușor să-ți oferi un nou machiaj și o coafură dacă cuplați tija de pe telecomandă în timp ce purtați quadcopterul pornit. Prin urmare, controlorul de zbor trebuie să ofere măcar o oarecare siguranță: mecanismul înarmat/dezarmat. Starea „dezarmată” a quadcopterului înseamnă că motoarele sunt oprite și chiar și o comandă de accelerație maximă de la telecomandă nu are efect, deși este furnizată energie. Starea „înarmată” a quadcopterului înseamnă că comenzile de la telecomandă sunt efectuate de controlerul de zbor. În această stare, quadcopterele decolează, zboară și aterizează. Quadcopterul pornește și ar trebui să intre imediat în starea dezarmată în cazul în care un pilot neatent îl pornește atunci când maneta de accelerație de pe telecomandă nu este la zero. Pentru a pune elicotterul în starea „înarmată”, pilotul trebuie să facă un gest pre-acordat cu telecomandele. Adesea, acest gest este să țineți stick-ul din stânga în colțul din dreapta jos (accelerare = 0%, yaw = 100%) pentru câteva secunde. După aceasta, controlorul de zbor efectuează cel puțin un autotest minim și dacă trece cu succes, " înarmandu-se„(gata să zboare!) Cu un alt gest (accelerare = 0%, yaw = 0%) quadcopter” devine dezarmat„O altă măsură bună de securitate este autodezarmare, dacă gazul a fost la zero timp de 2-3 secunde.

Despre motoare, baterii, regulatoare, elice

Alegerea componentelor pentru un multicopter este un subiect pentru o serie întreagă de articole. Dacă ai de gând să-ți faci primul quadcopter, formulează pentru ce ai nevoie de el și folosește sfaturile celor cu experiență sau ia o listă de componente pe care altcineva le-a compilat și zboară cu succes pe el.

Totuși, pentru o înțelegere generală, este util să cunoașteți punctele principale.

baterii


Printre amatorii și profesioniștii sistemelor multi-rotoare, bateriile cu litiu-polimer sunt cele mai comune ca surse principale de alimentare pentru electronicele și motoarele de bord. Ele se disting prin capacitate, tensiune și curent maxim de ieșire. Capacitatea, ca de obicei, este măsurată în amperi-ore sau miliamperi-oră. Tensiunea este măsurată în numărul de „celule” ale bateriei. O „cutie” este o medie de 3,7 volți. O „cutie” complet încărcată este de 4,2 volți. Cele mai comune baterii sunt cele cu trei până la șase celule. Curentul maxim de ieșire este măsurat în amperi și este marcat, de exemplu, astfel: 25C. C este capacitatea bateriei, 25 este multiplicatorul. Dacă capacitatea este de 5 amperi, atunci o astfel de baterie poate furniza 25 * 5 = 125 de amperi. Desigur, este mai bine să luați parametrul de ieșire curent cu o rezervă, dar, practic, cu cât este mai mare, cu atât bateria este mai scumpă. Exemplu de etichetare: 25C 3S 4500mah.

Fiecare bancă este o baterie separată. Toate sunt lipite în serie. Pentru a încărca toate băncile în mod egal, este prevăzut un conector de echilibrare cu acces la fiecare bancă separat și sunt utilizate încărcătoare speciale.

Motoare, elice, regulatoare


Parametrul principal al unui motor fără perii este kv-ul său. Acesta este numărul de rotații pe minut pentru fiecare volt de tensiune aplicat. Cele mai comune motoare sunt cu kv de la 300 la 1100. Kv mai aproape de 1000 este de obicei ales pentru quadcopterele mici (1-2 kilograme plus 500 de grame de sarcină utilă) și sunt echipate cu elice din plastic de până la 12 inci în diametru. Multicopterele mari (pentru ridicarea echipamentelor foto-video bune și grele) sau aeronavele cu zbor lung (pentru înregistrări de timp de zbor) au de obicei motoare cu kv scăzut (300-500) și elice uriașe de carbon (15 - 20 inci în diametru). Kv nu este singurul parametru important al motorului: puteți găsi adesea tabele întregi cu dependența puterii și a forței motorului de tensiunea furnizată și de tipul de elice instalat. În plus, fiecare motor este proiectat pentru propriul său domeniu de tensiune (număr de celule baterie) și propriul său curent maxim. Dacă producătorul scrie 3-4S, nu ar trebui să îl utilizați cu baterii 5S. Același lucru este valabil și pentru autoritățile de reglementare.

Dacă motorul este proiectat pentru un curent de până la 30 A, atunci regulatorul trebuie proiectat pentru un curent de până la 30 + 10 A pentru a preveni supraîncălzirea. Calitatea proastă sau regulatoarele neadecvate pot provoca așa-numitele „alunecări de sincronizare” și pot bloca motorul în zbor și veți recunoaște un alt termen multi-rotor: „ a prins planeta„Un alt punct important este grosimea și calitatea firelor. O secțiune transversală a firului calculată incorect sau un conector prost poate duce la un incendiu în aer.

După cum puteți vedea, există o mulțime de nuanțe. Nici măcar nu am enumerat jumătate dintre ele, așa că este destul de dificil să alegi singur componentele pentru primul tău multicopter.

Matematică de stabilizare, controlere PID (PID)


Dacă decideți să intrați în multicoptere, atunci mai devreme sau mai târziu va trebui să vă ocupați de setarea controlerului PID, deoarece acest aparat matematic este utilizat în aproape toate sarcinile de stabilizare: stabilizarea unghiurilor unui quadcopter în aer, zborul și menținerea unei poziții. folosind GPS, mentinerea altitudinii cu ajutorul unui barometru, mecanisme brushless stabilizare a camerei video in zbor (gimbal camera).

Cumperi un gimbal de cameră cu două axe, pui acolo, de exemplu, un GoPro, îl pornești și în loc de stabilizare primești convulsii, vibrații și zvâcniri, deși toți senzorii sunt calibrați și problemele mecanice sunt eliminate. Motivul este parametrii incorecți ai regulatoarelor PID.

Asamblezi un multicopter, calibrezi senzori, regulatoare, radio, verifici totul, încerci să decolezi și este atât de plictisitor în aer, încât chiar și o adiere ușoară îl răstoarnă. Sau invers: este atât de ascuțit încât decolează brusc și face o triplă capotaie fără voie. Motivul este în continuare același: parametrii controlerelor PID.

Pentru multe dispozitive care folosesc controlere PID, există instrucțiuni de configurare și chiar mai multe în plus față de numeroasele instrucțiuni video de la utilizatorii înșiși. Dar pentru a facilita navigarea în această diversitate, este util să înțelegem cum funcționează aceste autorități de reglementare în interior. În plus, vom scrie propriul nostru sistem de stabilizare cu quadcopter! Propun să „reinventăm” și „pe degete” pentru a înțelege Formula controlerului PID. Pentru cei care preferă limbajul matematic uscat, recomand Wikipedia, pentru că... în limba rusă materialul nu este încă prezentat atât de detaliat.

Vom lua în considerare un quadcopter în spațiu bidimensional, unde are un singur unghi - unghiul de rulare și două motoare: stânga și dreapta.




Controlerul de zbor primește continuu comenzi de la sol: „rulați 30 de grade”, „rulați -10 grade”, „rulați 0 grade (ține orizontul)”; sarcina sa este de a le executa cât mai rapid și precis cu ajutorul motoarelor, ținând cont de: vânt, distribuția neuniformă a greutății quadcopterului, uzura neuniformă a motoarelor, inerția quadcopterului etc. Astfel, controlerul de zbor trebuie să rezolve în mod continuu problema ce viteză de rotație să aplice fiecărui motor, ținând cont de valoarea actuală a unghiului de înclinare și de cea necesară. Continuu este, desigur, un cuvânt puternic. Totul depinde de capacitățile de calcul ale unui anumit hardware. Pe Adruino, este foarte posibil să se încadreze o iterație a ciclului de procesare și control în 10 milisecunde. Aceasta înseamnă că o dată la 10 milisecunde vor fi citite unghiurile quadcopterului și, pe baza acestora, vor fi trimise semnale de control către motoare. Aceste 10 milisecunde sunt numite perioada de reglementare. Este clar că cu cât este mai mic, cu atât mai des și mai precis are loc reglementarea.

Nivelul gazului curge de la receptor la controler. Să o notăm. Permiteți-mi să vă reamintesc că aceasta este media aritmetică dintre vitezele de rotație ale tuturor motoarelor, exprimată ca procent din viteza maximă de rotație. Dacă și sunt vitezele de rotație ale motoarelor stânga și dreapta, atunci:




unde este răspunsul quadcopterului (forța), care creează un cuplu datorită faptului că motorul din stânga se rotește mai repede decât gazul, iar motorul din dreapta se rotește la fel de mult mai lent. poate lua și valori negative, atunci motorul potrivit se va învârti mai repede. Dacă învățăm să calculăm această valoare la fiecare iterație a ciclului de procesare, atunci vom putea controla quadcopterul. Este clar că ar trebui să depindă cel puțin de unghiul de rulare curent () și unghiul de rulare dorit (), care vine de la panoul de control.

Să ne imaginăm o situație: este primită comanda „păstrați orizontul” ( = 0), iar quadcopterul are o rolă la stânga:




- diferența (eroarea) dintre și , pe care controlerul încearcă să o minimizeze.

Cu cât diferența dintre unghiul de rulare dorit și cel actual este mai mare, cu atât reacția ar trebui să fie mai puternică, cu atât motorul din stânga ar trebui să se rotească mai repede față de cel drept. Dacă scriem asta folosind notația noastră:



Aici P este coeficientul de proporționalitate. Cu cât este mai mare, cu atât reacția va fi mai puternică, cu atât quadcopterul va reacționa mai ascuțit la abaterile de la unghiul de rulare necesar. Această formulă intuitivă și simplă descrie munca controler proporțional. Ideea este simplă: cu cât quadcopterul se abate mai mult de la poziția cerută, cu atât mai greu trebuie să încerci să-l returnezi. Din păcate, această formulă va trebui să fie complicată. Motivul principal este depășirea.

În câteva zeci de milisecunde (mai multe iterații ale ciclului de procesare), sub influența controlerului proporțional, quadcopterul va reveni la poziția necesară (în acest caz orizontală). În tot acest timp, eroarea și efortul vor avea același semn, deși vor deveni din ce în ce mai puțin în amploare. După ce a atins o anumită viteză de viraj (viteză unghiulară), quadcopterul se va întoarce pur și simplu pe cealaltă parte, deoarece nimeni nu îl va opri în poziția dorită. Este ca un arc care se străduiește întotdeauna să revină în poziția inițială, dar dacă îl trageți înapoi și îl eliberați, acesta va oscila până când frecarea preia controlul. Desigur, quadcopterul va fi afectat și de frecare, dar practica arată că nu este suficient.

Din acest motiv, la controlerul proporțional trebuie adăugat încă un termen, care va încetini rotația quadcopterului și va preveni depășirea (rularea în direcția opusă) - un fel de imitație a frecării într-un mediu vâscos: cu atât este mai rapid. quadcopterul se întoarce, cu atât mai greu trebuie să încerci să-l oprești, desigur, în limite rezonabile. Notăm viteza de rotație (rata de modificare a erorii) ca , atunci:



unde D este un coeficient reglabil: cu cât este mai mare, cu atât forța de oprire este mai puternică. Dintr-un curs de fizică la școală, apar amintiri vagi că rata de modificare a oricărei mărimi este derivata acestei mărimi în raport cu timpul:

.

Și acum controlerul proporțional se transformă într-unul proporțional-diferențial (termen proporțional și diferențial):

.

Eroarea este ușor de calculat, deoarece la fiecare iterație cunoaștem și ; P și D sunt parametri care pot fi configurați înainte de lansare. Pentru a calcula derivata (rata de schimbare), este necesar să se memoreze valoarea anterioară, să se cunoască valoarea curentă și să se cunoască timpul care a trecut între măsurători (perioada de control). Și iată - fizică în clasa a șasea (viteză = distanță / timp):

.

- perioada de reglementare; - valoarea de eroare din iterația anterioară a ciclului de reglare. Apropo, această formulă este cea mai simplă modalitate de diferențiere numerică și este destul de potrivită pentru noi aici.

Acum avem un controler diferenţial proporţional într-un bicopter plat, dar mai există încă o problemă. Lăsați marginea stângă să cântărească puțin mai mult decât dreapta sau, ceea ce este același lucru, lăsați motorul stâng să funcționeze puțin mai rău decât cel drept. Quadcopterul este ușor înclinat spre stânga și nu se întoarce: termenul diferențial este zero, iar termenul proporțional, deși are o valoare pozitivă, nu este suficient pentru a readuce quadcopterul în poziție orizontală, deoarece marginea stângă cântărește puțin. mai mult decât dreptul. Drept urmare, quadcopterul va trage întotdeauna spre stânga.

Este necesar un mecanism care să monitorizeze astfel de abateri și să le corecteze. O trăsătură caracteristică a unor astfel de erori este că ele se corectează în timp. Termenul integral vine în ajutor. Stochează suma tuturor erorilor din toate iterațiile buclei de procesare. Cum va ajuta acest lucru? Dacă termenul proporțional nu este suficient pentru a corecta o mică eroare, dar încă există, treptat, în timp, termenul integral capătă putere, crescând răspunsul și quadcopterul ia unghiul de rulare necesar.

Există o nuanță aici. Să presupunem că este de 1 grad, ciclul de control este de 0,1 s. Apoi, într-o secundă, suma erorilor va lua valoarea de 10 grade. Și dacă ciclul de procesare este de 0,01 s, atunci cantitatea va câștiga până la 100 de grade. Pentru ca în același timp termenul integral să câștige aceeași valoare pentru diferite perioade de reglementare, vom înmulți suma rezultată cu perioada de reglementare în sine. Este ușor de calculat că în ambele cazuri se obține din exemplu suma de 1 grad. Iată-l - termenul integral (fără un coeficient ajustabil deocamdată):

.

Această formulă nu este altceva decât o integrală numerică în timp a unei funcții în intervalul de la zero până la momentul curent. De aceea termenul se numește integrală:

,

unde T este momentul curent în timp.
Este timpul să scrieți formula finală pentru controlerul proporțional-integral-derivat:

,

unde este unul dintre parametrii configurabili, dintre care acum sunt trei: . Această formulă este convenabilă de utilizat din codul programului, dar iată formula care este dată în manuale:

.

Există mai multe variante ale acestuia, de exemplu, puteți limita modulul termenului integral astfel încât să nu depășească un anumit prag admisibil (vom face acest lucru).

Practica

Ei bine, acum este timpul să exersăm selectarea coeficienților. Cititorilor li se oferă o pagină JavaScript cu un quadcopter virtual, pe care l-au văzut deja în imagini: selectarea parametrilor controlerului PID pentru un quadcopter(JSFiddle). La prima pornire, depășirea este imediat vizibilă - oscilații în jurul poziției necesare. Când oscilațiile se opresc, puteți observa efectul că coeficientul proporțional nu poate face față erorii din cauza quadcopterului „asimetric” (setat de caseta de selectare „Asimetrie”). Parametrii disponibili pentru configurare sunt P, I, D. Acum știi ce să faci cu ei. „Scrollul” de sub quadcopter poate fi controlat de valoarea de rulare necesară. „Interval (ms):” - interval de reglare. Reducerea acestuia este o înșelăciune, dar este foarte util să vezi cum afectează calitatea stabilizării.

Pentru iubitorii de matematică „pură”, le putem oferi configurați controlerul PID abstract

Parametrii introduși nu sunt aplicați automat: trebuie să faceți clic pe „Aplicați”. Câteva sfaturi mici: dacă simțiți că quadcopterul este prea lent pentru a răspunde la control, puteți crește P, dar prea mult P poate duce la depășire. Parametrul D va ajuta să faceți față depășirii, dar valorile prea mari vor duce la oscilații frecvente sau, din nou, la depășiri. Parametrul I este de obicei de 10 - 100 de ori mai mic decât parametrul P deoarece puterea sa constă în acumularea în timp, nu în răspunsul rapid.

Reglarea manuală a parametrilor PID necesită practică. Există metode analitice pentru calcularea acestora, dar ele necesită o bună pregătire și cunoașterea exactă a multor parametri ai sistemului specific care este personalizat. Ca o cale de mijloc între selecția manuală și calculul analitic, există o gamă largă de metode empirice propuse de diverși cercetători.

În quadcopterul nostru 2D, un singur unghi se schimbă - unghiul de rulare. La reglarea unui quadcopter 3D, vor fi necesare trei controlere PID independente pentru fiecare dintre unghiuri, iar controlul unui motor specific va reprezenta suma eforturilor de la toate controlerele.

Concluzia primei părți

În acest articol, ne-am familiarizat cu conceptele de bază: quadcopter și principiul zborului, înclinare, rostogolire, rotiță, accelerație, accelerație hover, modul de stabilizare a zborului, controler de zbor, giroscop, accelerometru, regulator de viteză, PWM, calibrare controler, calibrare radio, receptor de bord, interfață pentru setarea controlerului de zbor, stări armate/dezarmate, autodezarmare.

După aceea am reinventat formula Controler PID atingand putin diferențierea și integrarea numericăși a experimentat modul greu de configurare a parametrilor P, I, D pe quadcopter virtual .

Acum, dacă sunteți priceput în programarea cu sabie laser, puteți începe programul de stabilizare a quadcopterului sau, mai bine, vă puteți alătura proiectelor open source existente cu idei noi. Ei bine, peste o săptămână sau două, când voi avea puterea și timpul să potrivesc calitatea, voi continua povestea despre cum totul a fost programat, testat, prăbușit, mi-a tăiat degetele și a zburat complet într-o direcție necunoscută. Dacă chiar vrei să continui, mă poți contacta aici sau, de exemplu, pe Vkontakte: oferă un mic stimulent.

În încheierea acestei părți, trebuie pur și simplu să menționez persoana care m-a ajutat în alegerea componentelor și configurarea celui mai complex (primul!) quadcopter de pe firmware-ul MegapirateNG și a răspuns cu răbdare la sute de întrebări despre aceste concepte foarte de bază: mulțumesc! :-)

Ca o recompensă pentru cei care au reușit să risipească toată această foaie, postez micul videoclip promis despre modul în care quadcopterul nostru cu controlerele PID „inventate” zboară în programul nostru pentru Arduino Mega 2560:



Bineînțeles, îi lipsește GPS-ul, ca și în produsele comerciale și produse în masă, îi lipsește puțin stabilitatea, dar este a NOSTRU și îl știm pe dinăuntru și pe dinafară până la ultimul factor al coeficientului integral! Și este foarte bine că astfel de tehnologii ne sunt disponibile astăzi.

ATENTIE, articolul este invechit, dar poate fi folosit in continuare in scop informativ
După cum am promis, de îndată ce voi zbura, voi scrie o postare completă despre asamblarea unității mele de zbor. Cu siguranță mulți au văzut de mult cum un lucrător de birou „obișnuit” asamblează asta în 2 ore. Voi observa imediat că nu sunt un lucrător de birou „obișnuit”, așa că nu sunt încă un pilot, dar este important că. quadcopterul zboară și răspunde în mod adecvat la comenzi. În primul rând și cel mai important, dacă decideți să colectați, nu economisiți bani și nu credeți că sunteți mai deștepți decât cei care zboară deja, rețineți că teoria este oarecum în contradicție cu practica.
Există un număr mare de firmware, controlere gata făcute, opțiuni de senzori, motoare etc. etc. - există o mulțime de alegere, dar în articol mă voi concentra doar pe o singură opțiune, bazată pe Arduino Mega, firmware MegaPirate și senzori relativ ieftini.

Rezultat

Ca să nu te chinui, %username%, așa zboară fără setări speciale, calibrări și echilibrare în mâini inepte:

Acum ce ne trebuie pentru asta...

Continuare
PS: Sper ca oamenii din subiectul RC să mă ierte pentru inexactități și să mă corecteze acolo unde este cazul.



 


Citire:



Ce să faci dacă evoluezi offline

Ce să faci dacă evoluezi offline

În cele din urmă, ea a vizitat piața de jocuri pe computer, luminând-o cu lumina monștrilor extratereștri și a armelor high-tech. Desigur, un astfel de neobișnuit...

Testarea procesorului pentru supraîncălzire

Testarea procesorului pentru supraîncălzire

Trebuie să monitorizați în mod constant temperatura procesorului sau a plăcii video, deoarece dacă se supraîncălzi, computerul pur și simplu nu va porni. Pe aceasta...

Ce sunt serviciile publice Yesia

Ce sunt serviciile publice Yesia

Au dispărut vremurile în care primirea serviciilor de stat sau municipale nu era posibilă fără o vizită personală la executiv...

Poziția capetelor pe antenă

Poziția capetelor pe antenă

Articolul dezvăluie principalele metode de determinare a azimutului folosind o busolă magnetică și locurile de utilizare posibilă a acestuia. Utilizare...

imagine-alimentare RSS