Secțiuni de site
Alegerea editorului:
- Cea mai tare unitate de sistem pentru PC (do it yourself) Carcasă compactă pentru PC cu propriile mâini
- Cum se reinstalează Windows pe un laptop Asus?
- Antivirus gratuit Comodo securitate pe internet
- Ce să faci dacă nu există o unitate D pe computer?
- Cum să adăugați corect o nouă partiție pe un hard disk?
- O recenzie a difuzoarelor Bluetooth JBL Flip3
- Formate de carte
- Conectarea și configurarea TV interactiv de la Rostelecom
- Cum să vă ștergeți contul de Instagram
- Tabletă Android sau iPad - ce să alegi?
Publicitate
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
În total, un set de echipamente pentru asamblare va costa 20.018 ruble. Caracteristici la alegerea componentelorCaracteristicile de bază ale transmițătorului:
Instrucțiuni pas cu pas pentru asamblarea unui quadcopter cu propriile mâini
Această operațiune completează procesul de asamblare a quadcopterului. Înființat
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: Pasul unu. Crearea unui corp de quadcopter 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 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 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! Avem in fata:
Materialul este voluminos, dar voi încerca să îl încadrez în 2-3 articole. 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ță: 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ă):
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!):
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:
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. bateriiPrintre 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, regulatoareParametrul 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). PracticaEi 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.
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: 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ă):
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!):
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:
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. bateriiPrintre 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, regulatoareParametrul 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). PracticaEi 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 RezultatCa 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 |
Citire: |
---|
Popular:
Nou
- Cum se reinstalează Windows pe un laptop Asus?
- Antivirus gratuit Comodo securitate pe internet
- Ce să faci dacă nu există o unitate D pe computer?
- Cum să adăugați corect o nouă partiție pe un hard disk?
- O recenzie a difuzoarelor Bluetooth JBL Flip3
- Formate de carte
- Conectarea și configurarea TV interactiv de la Rostelecom
- Cum să vă ștergeți contul de Instagram
- Tabletă Android sau iPad - ce să alegi?
- Cum să formatați corect o continuare a tabelului în Word