Kako dizajnirati vlastiti kvadrokopter. Kako napraviti kvadrokopter baziran na arduinu Pišemo program za kvadrokopter na arduinu

Zdravo, dragi naši čitaoci. U ovom članku ćemo govoriti o tome kako sastaviti kvadrokopter koristeći Arduino. Ovo nije najlakši, iako vrlo uzbudljiv zadatak, čiji će rezultat biti pojava malog drona, dizajniranog, sastavljenog i konfiguriranog vlastitim rukama. Odmah da rezervišemo da je reč o najjeftinijem mogućem dronu od najpovoljnijih komponenti.

Prije nego što počnete sastavljati kvadrokopter vlastitim rukama, morate nabaviti sve potrebne dijelove. Mozak našeg domaćeg proizvoda bit će kontrolor leta Arduino Uno. Njegove mogućnosti su više nego dovoljne za upravljanje dronom.

Pored mikrokontrolera, trebat će nam:

  • Baterija (poželjno nekoliko) 3.7V
  • MPU-6050 ploča (žiroskop i akcelerometar instaliran na njoj)
  • Tranzistor ULN2003A
  • Komutatorski motori sa šupljim rotorom 0820
  • Žice

Treba naglasiti nekoliko tačaka. Pošto prikupljamo, naš izbor je pao na komutatorske motore sa šupljim rotorom (tzv. motori bez jezgra). Nisu ni približno tako pouzdani kao motori bez četkica, ali su mnogo jeftiniji. Osim toga, možete bez dodatnih regulatora brzine.

Ali to je nemoguće bez žiroskopa i akcelerometra. Žiroskop je neophodan kako bi se osiguralo da kvadrokopter može zadržati zadani smjer kretanja, dok se akcelerometar koristi za mjerenje ubrzanja. Bez ovih uređaja, upravljanje helikopterom bi bilo mnogo teže (ako ne i nemoguće), jer oni daju podatke za signal koji reguliše brzinu rotacije propelera.

Nismo uključili okvir u listu potrebnih dijelova. Možete ga kupiti ili možete 3D odštampati okvir, grede i nosače za motore. Druga opcija nam se čini poželjnija, pogotovo jer možete lako pronaći projekte kvadrokoptera na internetu.

Okvir odštampan na štampaču biće ne samo lagan, već i izdržljiv. Ali ako nemate pristup 3D štampaču, možete naručiti okvir.

Upute za sastavljanje korak po korak

Kako štampati okvir i pričvršćivače

3D štampači se mogu naći na mnogim univerzitetima, laboratorijama i coworking prostorima. Često im je pristup besplatan. Možete sami kreirati modele za štampanje koristeći, na primjer, Solidworks. Ili možete koristiti gotova rješenja, mijenjajući parametre ako je potrebno.

Kako podesiti akcelerometar žiroskopa

Za konfiguraciju žiroskopa akcelerometra (I2C), preporučujemo korištenje sljedeće biblioteke. Ni u kom slučaju ne spajajte ploču na 5V napon, inače ćete je odmah oštetiti.


Recimo vam ukratko zašto je I2C ploča sa senzorima zanimljiva. Primjetno se razlikuje od konvencionalne ploče akcelerometra sa tri analogna izlaza za osi X, Y, Z. I2C je sabirnica interfejsa koja omogućava prijenos značajnih količina podataka putem logičkih digitalnih impulsa.

Na ploči nema mnogo analognih izlaza, a to je veliki plus I2C, jer bismo inače morali koristiti sve portove na Arduinu za primanje podataka sa žiroskopa i akcelerometra.

Dijagram povezivanja na Arduino

Prije nego što I2C ploča može komunicirati s Arduinom, mora biti povezana s kontrolerom.

Zanima nas skica koda I2C skenera, odnosno njegov kod.

Kopirajte programski kod, zalijepite ga u praznu skicu, a zatim ga pokrenite. Uvjerite se da je veza uspostavljena na 9600 (da biste to učinili, pokrenite Arduino IDE preko Tools-Serial Monitor). Trebalo bi da se pojavi I2C uređaj sa adresom 0x68 ili 0x69. Zapišite ili zapamtite adresu. Ako adresa nije dodijeljena, najvjerovatnije je problem u povezivanju s Arduino elektronikom.

Zatim nam je potrebna skica koja može obraditi podatke žiroskopa i akcelerometra. Na internetu postoji mnogo opcija, a pronalaženje prave nije problem. Najvjerovatnije će biti u arhiviranom obliku. Raspakujte preuzetu arhivu, otvorite Arduino IDE i dodajte biblioteku (sketch-import library-add library). Trebat će nam fascikle MPU6050 i I2Cdev.

Otvorite MPU6050_DMP6 i pažljivo pregledajte kod. Nećete morati izvoditi nikakve komplicirane radnje, ali ako je dodijeljena adresa 0x60, onda morate ukloniti komentar na red na vrhu (može se naći pod #includes) i napisati ispravnu adresu. U početku je tav specificiran kao 0×68.

Preuzimamo program, otvaramo prozor monitora kroz 115200 i jednostavno slijedimo upute. Za nekoliko trenutaka dobit ćete podatke sa žiroskopa/akcelerometra. Zatim senzore treba kalibrirati.

Postavite ploču na ravnu površinu i pokrenite skicu MPU6050_calibration.ino (lako pronaći na Internetu). Pregledajte kod, zadana adresa je 0x68. Nakon pokretanja programa, imat ćete informacije o odstupanjima (offset). Zapišite, trebat će nam u skici MPU6050_DMP6.

To je to, imate funkcionalni žiroskop i akcelerometar.

Program za Arduino

Program će vam pomoći da kontrolišete dron. Algoritam koji se koristi za stabilizaciju zasniva se na dva PID regulatora. Jedan je za roll, drugi je za pitch.

Razlika u brzinama rotacije parova propelera 1 i 2 jednaka je razlici u brzinama parova propelera 3 i 4. Isto vrijedi i za parove 1, 3 i 2, 4. PID regulator mijenja razliku u brzina, nakon čega roll i pitch postaju nula.

Obratite pažnju na Arduino digitalne pinove za motore i ne zaboravite promijeniti skicu.

Povezivanje sa kontrolerom

Da bismo kontrolisali helikopter, moramo da dobijemo kontrolu nad motorima tako što ćemo ih povezati na Arduino. Regulator daje samo mali napon i struju, tako da direktno povezivanje motora nema smisla. Umjesto toga, možete instalirati nekoliko tranzistora za povećanje napona.


Za kreiranje dijagrama potrebno nam je:

  • Arduino
  • Motori
  • Tranzistori

Sve je to sastavljeno na pločici i spojeno konektorima.

Prvi korak je povezivanje 4 PWM izlaza (označeno ~) na tranzistor. Zatim spojite konektore na motore spojene na napajanje. U našem slučaju koristimo bateriju od 5V, ali će raditi i baterija od 3-5V.

Tranzistori moraju biti uzemljeni i uzemljenje na Arduino ploči mora biti spojeno na uzemljenje baterije. Motori se moraju okretati u ispravnom smjeru, odnosno moraju raditi da podignu helikopter, a ne da ga kotrljaju.

Prebacivanjem kontakta motora sa 5V na tranzistor, vidjet ćete da će rotor promijeniti smjer rotacije. Nakon što izvršite podešavanje, više se nećete morati vraćati na promjenu smjera rotacije rotora. Sada nas zanima brzina.

Nakon pokretanja i testiranja akcelerometra, instaliramo naše kolo na ProtoBoard. U nedostatku, možete koristiti običnu ploču, prethodno zalemivši šine za kontroler na njoj.

Prije lemljenja akcelerometra na ploču, potrebno ga je kalibrirati na vodoravnoj površini. Ovo će pomoći da se postigne više precizan rad senzor u budućnosti.

Kako drugačije možete nadograditi svoj quad?

Usko grlo helikoptera su njegovi kolektorski motori. Ako tražite, možete pronaći nešto veće i snažnije motore od onih predloženih u našem članku, ali neće biti značajnijeg povećanja u performansama.


Međutim, naš cilj je bio vlastitim rukama sastaviti jeftin kvadrokopter i zato su korišteni jeftini motori. Motori bez četkica su znatno skuplji, ali će vam dati znatno više snage i pouzdanosti. Morat će se kupiti i sa regulatorima brzine, ali ovo je zaista efikasna nadogradnja.

Izbor Arduino Uno ploče je zbog činjenice da možete prilično lako ukloniti čip s nje i staviti ga na ProtoBoard. To vam omogućava da smanjite težinu drona za 30 grama, ali ćete morati uključiti dodatne kondenzatore u krug. Pogodno Arduino ploča Pro Mini.

U vezi Arduino programi, onda se može relativno lako mijenjati i dopunjavati novim funkcijama. Glavna stvar je da je uz njegovu pomoć dron sposoban automatski način rada stabilizujte svoj položaj.

Glavna ideja projekta je stvaranje jeftinog kvadrokoptera koji ima autonomno napajanje i algoritam stabilizacije leta koristeći Arduino.

Pored Arduina, trebat će nam žiroskop/akcelerometar i motori četkica. Gore navedeni projekat ne razmatra metode za kontrolu leta kvadrokoptera, ali se one svakako mogu dodati. Cijena ovog kvadrokoptera je oko 60 dolara.

Šta je kvadrokopter?

Siguran sam da većina onih koji čitaju ovaj članak već zna šta je kvadrokopter. Ako ne, evo kratkog opisa ovih divnih uređaja.

Kvadrokopter je leteći uređaj sa četiri "noge", od kojih svaka ima motor sa propelerom. Kvadrokopteri su u suštini slični helikopterima, ali njihovo kretanje, rotaciju i nagib osigurava sinhroni rad četiri propelera. Osim toga, kvadrokopteri imaju koncept kao što je "pitch" - rotacija oko uzdužne ose. Kako bi se stabilizirao let kvadrokoptera, dva propelera se okreću u jednom smjeru (u smjeru kazaljke na satu), a dva propelera u suprotnom smjeru (u suprotnom smjeru). Zahvaljujući ovoj sposobnosti da lebde u jednom položaju u vazduhu, kvadrokopteri se prvenstveno koriste za snimanje iz vazduha i video snimanje. Naravno, kvadrokopteri i drugi slični uređaji sa više motora koriste se u spasilačkim akcijama, policiji, vojsci itd. IN U poslednje vreme cijena komponenti za proizvodnju kvadrokoptera značajno je smanjena i mnoge kompanije su počele da ih proizvode. Kupovina gotovog proizvoda danas neće biti problem.

Dakle, već ste malo shvatili šta je kvadrokopter, idemo sada na kratak opis proces njegove proizvodnje.

Prva stvar koju smo uradili bila je kupovina na Google-u u potrazi za komponentama koje će nam trebati da ga napravimo.

U većini slučajeva koriste se mikrokontroleri i motori bez četkica (ventila). Odlučeno je da se kao kontroler koristi Arduino, jer je cjenovno idealna platforma. Prvi problem koji se pojavio bili su motori bez četkica. Zapamtite, fokusiramo se na budžet od 60 USD. A cijena jednog motora bez četkica, koji se može koristiti u našem dizajnu kvadrokoptera, kreće se od 20 do 60 dolara! Osim toga, upotreba ovih motora zahtijeva ugradnju dodatnih regulatora - regulatora brzine. Stoga je odlučeno da se koriste brušeni motori. Dimenzije našeg kvadrokoptera su male, pa smo nabavili motore sa relativno malim obrtnim momentom. Google je predložio da postoje kvadrokopteri sa sličnim pogonima. Pronađeni motori mogu podići i do 55 grama težine, što nam sasvim odgovara. Sljedeći korak je rješavanje problema stabilizacije motora pomoću žiroskopa i akcelerometara. Žiroskop je uređaj koji koristi Zemljinu gravitaciju za određivanje ugla nagiba (orijentacije) u svemiru. Klasični dizajn žiroskopa sastoji se od slobodno rotirajućeg diska koji se naziva rotor. Rotor je postavljen na osovinu koja se nalazi u središtu većeg, stabilnijeg točka. Kada se os rotira, rotor ostaje u statičkom stanju, što odgovara centru gravitacije. Akcelerometar je kompaktan uređaj koji se koristi za mjerenje ubrzanja. Kada objekt napusti stanje mirovanja (počne da se kreće), akcelerometar bilježi vibracije koje nastaju tokom ovog kretanja. Akcelerometri koriste mikroskopske kristale koji stvaraju napon kada su udareni. Ovaj napon se uklanja i formira se vrijednost ubrzanja. Ova dva senzora su neophodna u kvadrokopteru. Na osnovu njihovih očitavanja generira se kontrolni signal koji regulira brzinu rotacije motora kako bi se osiguralo kotrljanje, kretanje ili stabilizacija našeg kvadrokoptera.

Potrebne komponente, dijelovi i oprema

Za projekat kvadrokoptera kojim upravlja Arduino trebat će nam:

  • - žice;
  • - litijumske baterije na 3,7 V;
  • - tranzistor: ULN2003A Darlington tranzistor (možete uzeti tranzistor koji podržava veća opterećenja);
  • - motori: 0820 Motori bez jezgre;
  • - mikrokontroler: Arduino Uno;
  • - akcelerometar/žiroskop: MPU-6050 ploča (jeftina i vesela sve-u-jednom opcija);
  • - 3D štampač ili pristup njemu za štampanje delova dizajna kvadrokoptera;
  • - alati (uključujući lemilicu i mogućnost korištenja!).
  • KUPITE litijumske baterije od 3,7 V (Budite oprezni, među ponuđenim proizvodima morate pronaći upravo onaj koji vam odgovara!);

3-D štampa delova kvadrokoptera

Jedan od prvih koraka je kreiranje okvira našeg kvadrokoptera. Odlučeno je krenuti putem manjeg otpora i odštampati okvir na 3D štampaču. Pored lakoće izrade, okvir štampan na 3D štampaču je prilično lagan zahvaljujući štampi u obliku saća. Dijelovi su dizajnirani u Solidworksu. Ispod su svi solidni modeli. Možete ih jednostavno preuzeti i poslati na štampanje. Detalji se čuvaju u .stl formatu. Ako želite, možete ih sigurno modificirati i mijenjati koristeći isti Solidworks. Modeli su parametarski, pa ako se odlučite za druge motore, potrebno je samo promijeniti nekoliko parametara u modelu i dobićete gotov okvir za vaše dimenzije kvadrokoptera.


Kao rezultat ćete dobiti nešto ovako:



Postavljanje akcelerometra-žiroskopa (I2C)


Ovaj primjer koristi ploču MPU6050 iz SparkFuna. Na Amazonu košta oko 10 dolara i dobro funkcionira. Slična Kina na Aliexpressu ili Ebayu nudi slične ploče po cijeni do 5 dolara. Također odlično radi.

Šta je I2C?

On jednostavne ploče akcelerometar, sve je logično i jasno: ima odvojene analogne izlaze za ose X, Y i Z. Svaki izlaz odgovara zasebnoj osi akcelerometra. Ako sada pogledate I2C ploču, shvatit ćete da je sve nešto zbunjujuće. I2C je komunikacijski standard u kojem se velike količine informacija prenose korištenjem digitalnih logičkih impulsa umjesto analognih izlaza. MPU6050 vam daje 6 kontroliranih osa (3 za žiroskop i 3 za akcelerometar). Da su svi analogni, morali bismo koristiti sve analogne portove na Arduino Uno. Sa I2C protokolom koristimo mnogo manje pinova za povezivanje.

Arduino dijagram povezivanja

Dijagram povezivanja za MPU6050 ploču je prikazan ispod. Imajte na umu da Arduino biblioteka pretpostavlja korištenje ovih pinova. U pravilu, čak i ako imate ploču drugog proizvođača, pinovi su označeni isto, stoga dijagram povezivanja ostaje isti.

Ako ga napajate na 5 V, ploča se može oštetiti, stoga budite oprezni i koristite 3,3 V. Neke MPU6050 ploče imaju regulator napona koji djeluje kao osigurač, ali ipak nije vrijedan rizika. Ako vaša ploča ima AD0 pin, ona mora biti spojena na masu (GND). U našem slučaju, VIO pin je spojen na AD0 na samoj ploči, tako da nema potrebe za povezivanjem AD0 pina.

Skica za Arduino

U ovom trenutku će vam trebati neko znanje o Arduino programiranju. Ako nešto ne razumijete, zaustavite se i pokušajte to shvatiti. Objašnjenja u nastavku pomoći će vam u mnogim pitanjima, ali nemoguće je opisati sve moguće nijanse.

Nakon što povežete MPU-6050 sa svojim Arduinom, uključite ga i preuzmite skicu koda I2C skenera.

Kopirajte programski kod, zalijepite ga u praznu skicu i pokrenite. Otvorena serija Arduino monitor IDE (Alati->Serijski monitor) i provjerite jeste li povezani na 9600 (dolje lijevo).

Ako ste sve uradili ispravno, I2C uređaj bi trebao biti otkriven i dodijeljena mu adresa 0x68 ili 0x69. Zapisati. Ako se pojave greške, provjerite svoju vezu.

Sada morate učitati skicu koja obrađuje informacije sa akcelerometra/žiroskopa. Postoji više verzija sličnih skica koje plutaju internetom, preporučujemo da koristite ovu. Nakon što slijedite vezu, kliknite na "Preuzmi zip". Nakon preuzimanja, raspakirajte arhivu. Zatim otvorite Arduino IDE. Idite na skica->uvezi biblioteku ->dodaj biblioteku. Morat ćete dodati oba foldera: I2Cdev i MPU6050.

Nakon što instalirate biblioteke, otvorite datoteku MPU6050_DMP6 (MPU6050 -> Primjeri). Preporučujem da ga pogledate, čak i ako niste posebno upućeni u kod. Ako ste dodijelili adresu 0x69, morate dekomentirati jedan red na vrhu koda (nakon #includes), pošto je zadana vrijednost 0x68. Program bi sada trebao kompajlirati.

Preuzmite program, otvorite prozor serijskog monitora (ovaj put sa 115200) i slijedite upute. Čestitamo, jer bi sada trebali biti u mogućnosti da dobijete vrijednosti sa akcelerometra/žiroskopa preko Arduina!

Sada pokrenite skicu kalibracije, koju možete preuzeti ovdje: MPU6050_calibration.ino (opet, default port je 0x68, ali ga možete promijeniti). Snimite podatke o ofsetu koje dobijete. Ove podatke ćete koristiti u skici MPU6050_DMP6 (i u narednom programu za kvadrokopter).

Sada imate ispravan, svakako koristan, akcelerometar/žiroskop.

Povezivanje na Arduino

Pogledali smo povezivanje akcelerometra. Sljedeći korak je da Arduino kontrolira motore. Arduino ploča ne daje izlaz veliki značaj struja i napon, tako da umjesto direktnog povezivanja motora na digitalne izlaze ploče, koristimo tranzistore za "pojačavanje" napona.

Počnimo sa sastavljanjem električnog kola. U ovoj fazi će nam trebati Arduino, motori, tranzistori (ploča i konektori). Dijagram povezivanja je dat ispod, ispod potrebnih tekstualnih objašnjenja. Povežite četiri PWM izlaza (označena sa ~ na Arduinu) na tranzistor kao što je prikazano na slikama. Nakon toga spojite konektore na motore koji su spojeni na izvor napajanja. Gore navedeni projekat kvadrokoptera koristio je napajanje od 5V, ali bi trebala raditi i baterija od 3-5V.

Uvjerite se da su tranzistori uzemljeni i da je uzemljenje na Arduinu povezano s uzemljenjem iz izvora napajanja. Uvjerite se da se rotori motora okreću u ispravnom smjeru (trebali bi moći podići kvadrokopter, a ne da se kotrljaju). Ako prebacite pin motora sa 5V na tranzistor, rotor motora će se početi okretati u suprotnom smjeru. Jednom konfigurisan, više nećete morati mijenjati smjer rotacije motora. Promenićemo samo brzinu.

Nakon što pokrenete akcelerometar i testirate ga, morate sve instalirati na ProtoBoard (možete koristiti ploču na kojoj lemite šine za instalaciju na Arduino. Možete ići elegantnijim putem i kupiti Proto Shield). Ne biste trebali lemiti tranzistor na ploču za izradu prototipa. Za to je bolje koristiti utičnicu sa kontaktima tako da je možete zamijeniti u bilo kojem trenutku.

U našem slučaju smo akcelerometar zalemili na ploču i tek nakon toga izvršili kalibraciju. Ali praksa pokazuje da to nije sasvim tačno. Da bi se povećala tačnost očitavanja žiroskopa/akcelerometra, bolje je prvo kalibrirati na ravnoj površini, a tek onda lemiti.










Možete pročitati o PID kontroli na Wiki ako niste upoznati s ovim kontrolerima. PID klasa za Arduino koristi tri ulaza: zadanu vrijednost, mjerenje i izlaz. Izlaz zavisi od trenutnog položaja i merenja. PID kontroler pokušava promijeniti izlaz tako da mjerenja odgovaraju ciljnoj poziciji. Algoritam koristi zanimljivu matematiku. PID kontrolni algoritam pokušava raditi na takav način da vrijednosti ostanu što stabilnije.

Naš algoritam koristi dva PID kontrolera za stabilizaciju: jedan za pitch i jedan za roll. Razlika u brzini rotacije propelera 1 i 2 će biti ista kao i razlika u brzini propelera 3 i 4. Isto tako i za parove 1,3 i 2,4. Nakon toga, PID kontroler mijenja razliku u brzini, dovodeći pitch and roll na nulu.

Ne zaboravite provjeriti koji digitalni pinovi sa Arduina idu na motore i u skladu s tim promijenite skicu.

Dalja modernizacija kvadrokoptera koristeći Arduino


Glavni problemi s malim kvadrokopterom su njegova cijena i težina. Možete tražiti veće i snažnije motore, ali to neće posebno poboljšati njegove performanse. Ono što će vam zaista pomoći (ako ste voljni izdvojiti više novca) su motori bez četkica (ventila). Što se tiče karakteristika, oni su za red veličine bolji, ali pored njih morate koristiti i regulatore brzine, što će poskupiti kvadrokopter.

Da biste smanjili težinu dizajna, najbolje je koristiti Arduino Uno, jer za ovaj model kontrolera možete ukloniti "prošiveni" mikroprocesorski čip i instalirati ga direktno na vašu ProtoBoard. Kao rezultat toga, udebljat ćete se oko 30 grama na težini, što je dosta na ovakvoj skali. Osim toga, morat ćete koristiti još nekoliko kondenzatora, itd. Ili kako Alternativna opcija, možete koristiti Arduino Pro Mini.

Arduino program, koji je napisan i predstavljen u prethodnom dijelu, može se lako proširiti i obogatiti dodatnim funkcionalnostima. Najvažnije je da u ovoj fazi kvadrokopter već može automatski stabilizirati let. Ako želite podesiti daljinsko upravljanje, možete pogledati prema predajnicima/prijemnicima ili bluetooth modulima. Generalno, sada imate osnovu, a ima još više prostora za dalju modernizaciju.

Ostavite svoje komentare, pitanja i podijelite lično iskustvo ispod. Nove ideje i projekti se često rađaju u diskusijama!

Kvadrokopter takođe ima autonomno napajanje. Ukupna cijena takvog domaćeg proizvoda je oko 60 dolara.

Ako imate veću količinu, onda je obećavajuće opremiti svoj domaći proizvod motorima bez četkica s odgovarajućim kontrolerima.

Za stabilizaciju leta koriste se žiroskop i akcelerometar. Žiroskop je potreban za određivanje ugla nagiba kvadrokoptera u odnosu na zemljinu gravitaciju. Za izračunavanje ubrzanja potreban je akcelerometar.

Materijali i alati:
- litijumske baterije (3,7 V);
- žice;
- tranzistor ULN2003A Darlington tranzistor (mogu se koristiti snažniji tranzistori);
- motori tipa 0820 Motori bez jezgre;
- Arduino Uno mikrokontroler;
- MPU-6050 ploča (ovo je i žiroskop i akcelerometar);
- dostupnost 3D štampača ili pristup njemu;
- potrebni alati.

Proces proizvodnje:

Prvi korak. Izrada tijela kvadrokoptera
Tijelo se pravi vrlo brzo i jednostavno. Štampa se pomoću 3D štampača. Izrada okvira na ovaj način je dobra jer izlazi lagano, a sve to zahvaljujući štampi u obliku saća. Dizajn delova odvijao se u Solidworks programu. Koristeći ovaj program, možete urediti parametre kućišta i napraviti vlastite izmjene u njemu, ako je potrebno.




Nakon što se okvir kvadrokoptera odštampa, na njih možete instalirati motore i lemiti žice.




Drugi korak. Povezivanje Arduina
Kako spojiti MPU6050 ploču možete vidjeti na dijagramu ispod. Važno je to shvatiti Arduino biblioteka podrazumijeva vezu preko ovih kontakata. Ako se koristi kolo drugog proizvođača, važno je osigurati da su kontakti raspoređeni u istom redoslijedu.


Za napajanje ploče koristi se samo 3,3 V; ako je napajate sa 5 V, ona će se oštetiti. Neke MPU6050 ploče imaju osigurač koji štiti sistem od visokog napona, ali bolje je ne riskirati. Ako ploča ima AD0 pin, ona mora biti spojena na masu (GND). U ovom slučaju, VIO je spojen na AD0 pin direktno na ploči, tako da nema potrebe za povezivanjem AD0 pina.












Da bi Arduino mogao kontrolirati motore, bit će potrebni tranzistori, zahvaljujući kojima će biti moguće opskrbiti motore visokim naponom. Detaljnije kako su svi elementi povezani možete vidjeti na dijagramu.

Treći korak. Skica za Arduino
Kada se MPU-6050 poveže na Arduino, morate ga uključiti i preuzeti skicu koda I2C skenera. Zatim morate kopirati programski kod i zalijepiti ga u praznu skicu. Nakon ovoga, morate otvoriti Arduino IDE serijski monitor (Alati->Serial Monitor) i provjeriti je li 9600 povezan.
Ako je sve urađeno ispravno, I2C uređaj će biti otkriven, dodijelit će mu se adresa 0x68 ili 0x69, potrebno ga je zapisati.
Zatim se učitava skica koja obrađuje informacije sa žiroskopa i akcelerometra. Ima ih mnogo na internetu, ali najbolje ih je koristiti.


U završnoj fazi, morat ćete kalibrirati vrijednosti žiroskopa i akcelerometra. Da biste to učinili, morate pronaći ravnu površinu i na nju postaviti MPU6050. Zatim se pokreće kalibracijska skica, rezultujući podaci o odstupanju se snimaju i zatim koriste u skici MPU6050_DMP6.

Četvrti korak. Program za Arduino
Zahvaljujući objavljenom programu, kvadrokopter se stabilizuje i visi u stabilnom stanju. Zatim se pomoću ovog programa upravlja kvadrokopterom.


Za stabilizaciju kvadrokoptera koriste se dva PID kontrolera. Jedan je potreban za pitch, a drugi za roll. Kontroler mjeri brzinu rotacije propelera i na osnovu toga se upravlja kvadrokopterom.

Korak peti. Modifikacija kvadrokoptera

Glavni problem kod malog i jeftinog kvadrokoptera je njegova težina. Da biste riješili ovaj problem, morate instalirati snažnije i lakše motore; motori bez četkica su najprikladniji, nazivaju se i motori ventila. Mnogo su bolji od onih s četkom, ali za njih morate kupiti i regulatore brzine, tako da se cijena domaćih proizvoda naglo povećava.

U ovom članku ćemo govoriti o kvadrokopterima baziranim na Arduinu, njihovim prednostima i cjenovnim kategorijama.

Kvadrokopter sa funkcijama kompjuterskog uređaja.


IN savremeni svet Postoji širok izbor modela kvadrokoptera koji su dizajnirani da se koriste u različite svrhe. To nisu samo igračke, kao što se percipiralo od samog početka njihovog pojavljivanja na domaćem tržištu. Oni su sada uređaji dizajnirani za obavljanje mnogo različitih vrsta zadataka. Koriste se u mnogim slučajevima za profesionalne kreativne aktivnosti. Da bi kvadrokopter ispravno radio, mora biti u proizvodnji opremljen dodatnim dijelovima pored baze. Da bi se uređajem upravljalo pomoću daljinskog upravljača daljinski upravljač na njega je potrebno ugraditi procesor i mnoge druge dijelove elektronskog sistema. Danas postoji veliki broj procesora koji se koriste za stvaranje kvalitetnih i funkcionalnih kvadrokoptera. Među njima se ističe Arduino. To je prilično moćan procesor koji omogućava kvadrokopteru da ima neke od funkcija kompjuterskog uređaja.

Danas se kvadrokopter koji koristi Arduino lako može kupiti u bilo kojoj internetskoj trgovini koja je specijalizirana za proizvodnju takvih uređaja. Zahvaljujući ovom procesoru nastaju najveći i najmoćniji uređaji u pogledu tehničkih parametara. Pogodni su za širok spektar zadataka. Namijenjeni su kako za redovne letove tako i za profesionalno snimanje. Hvala za moćan procesor lako obavljaju sve zadatke koje im korisnici zadaju. Brzina razmjene podataka sa daljinskim upravljačem značajno se povećava. Osim toga, video zapisi snimljeni u realnom vremenu se trenutno prenose na mobilnih uređaja, koji su povezani na kvadrokopter uključen ovog trenutka. Treba napomenuti da mnogi korisnici sami sklapaju uređaje bazirane na Arduino procesoru. Dostupan je u gotovo svakoj specijaliziranoj trgovini.

Karakteristike kvadrokoptera zasnovanog na Adruinu.


Arduino uređaji su vrlo popularni jer su vrlo praktični za korištenje. Kvadrokopteri ovog tipa brzo izvršavaju sve zadatke koje zadaju korisnici. Sa ovim procesorom moguće je dobiti uređaj visokog kvaliteta koji će vam omogućiti da uživate u neograničenim mogućnostima tokom normalnog leta, pa čak i tokom procesa snimanja. Slike se dobijaju sa visokim nivoom rezolucije. Uređaji bazirani na Arduinu rade bez problema. Zahvaljujući ovom procesoru, sam uređaj je u stanju da obavlja svoj posao tokom dužeg vremenskog perioda, a njegov sistem neće otkazati. Uređaji uključeni najnovije verzije Arduino nisu jeftini. Međutim, to omogućava korisnicima da dobiju kvadrokoptere profesionalnog nivoa koji će brzo i bez prekida obavljati sve zadatke koje im zadaju potrošači. Osigurava pouzdan rad kvadrokoptera.



Zdravo, stanovnici Habra!
U ovoj seriji članaka otvorit ćemo poklopac kvadrokoptera malo više nego što to hobi zahtijeva, a također ćemo napisati, konfigurirati i pokrenuti vlastiti program za kontroler leta, koji će biti obična Arduino Mega 2560 ploča.

Pred nama je:

  1. Osnovni koncepti (za pilote helikoptera početnike).
  2. PID kontroleri sa interaktivnom web demonstracijom rada na virtuelnom kvadrokopteru.
  3. Stvarni program za Arduino i konfiguracijski program za Qt.
  4. Opasni testovi kvadrokoptera na užetu. Prvi letovi.
  5. Slom i gubitak na terenu. Automatska pretraga iz zraka koristeći Qt i OpenCV.
  6. Konačni uspješni testovi. Rezimirajući. Gdje ići?

Materijal je obiman, ali pokušat ću ga uklopiti u 2-3 članka.
Danas nas očekuje: spojler sa snimkom kako je leteo naš kvadrokopter; osnovni koncepti; PID regulatori i praksa odabira njihovih koeficijenata.

čemu sve ovo?

Akademski interes, koji, inače, ne prati samo mene (, ,). I, naravno, za dušu. Odlično sam se zabavljala radeći i osjećala pravu, neopisivu sreću kada je “IT” proletio sa mojim programom :-)

Za koga?

Ovaj materijal takođe može biti od interesa za ljude koji su daleko ili koji tek planiraju da se uključe u sisteme sa više rotora. Sada razgovarajmo o svrsi glavnih komponenti kvadrokoptera, kako one međusobno djeluju, o osnovnim konceptima i principima leta. Naravno, svo znanje koje nam je potrebno može se pronaći na Internetu, ali ne možemo biti prisiljeni da ga tražimo na ogromnom Internetu.

Bez ugrožavanja vašeg razumijevanja osnovnih pojmova, slobodno preskočite sve što znate do sljedećeg nepoznatog termina, podebljano, ili na nerazumljivu ilustraciju.

NE #1!

Nemojte početi pisati vlastiti program za kontroler leta dok ne isprobate gotova rješenja kojih sada ima dosta (Ardupilot, MegapirateNG, MiltiWii, AeroQuad, itd.). Prije svega, opasno je! Za upravljanje kvadrokopterom bez GPS-a i barometra potrebna je vježba, a još više kada se kvari, prevrne ili ne leti točno tamo gdje bi trebao - a to je gotovo neizbježno tijekom prvih testova. Drugo, biće vam mnogo puta lakše da programirate tako što ćete razumeti šta treba programirati i kako bi na kraju trebalo da funkcioniše. Vjeruj mi: matematika letenja je samo mali dio programskog koda.

NE #2!

Nemojte se upuštati u pisanje vlastitog programa za kontrolora leta ako se ne bavite akademskim interesom i trebate samo ono što gotova rješenja već dugo mogu (letjeti, fotografirati, snimati, letjeti dalje zadatak, itd.) Dok sami sve napišete, dugo će potrajati, čak i ako niste sami.

Osnovni koncepti


Kvadrokopteri dolaze u različitim varijantama, ali sve ih ujedinjuju četiri glavna rotora:
Uprkos prividnoj simetriji, za pilota je veoma važno da razlikuje gdje se nalazi prednji dio kvadrokoptera (prikazano strelicom). Ovdje, kao u modelima automobila s radio upravljanjem: kada je data komanda "naprijed", kvadrokopter ne leti tamo gdje pilot gleda, već tamo gdje je usmjeren zamišljeni nos kvadrokoptera. Ovo je ispunjeno opasnošću: početnicima može biti teško da sebi vrate uređaj koji je vjetar uhvatio, okrenut nekako na stranu (mi, naravno, ne govorimo o letenju u kameri iz prvog lica i o „pametnom ” režimi letenja pomoću kompasa i GPS-a.) Rješenje Ovom problemu mogu djelomično pomoći prednji zavrtnji ili snopovi druge boje, neka vrsta lopte ispred ili LED diode različitih boja. Ali sve se to ispostavilo beskorisno kada se pepelat brzo pretvori u tačku iznad horizonta.

Letjet ćemo na okviru kvadrokoptera u obliku slova „X“ jer mi se više sviđa kako izgleda. Svaki dizajn ima svoje prednosti i svrhu. Osim kvadrokoptera, postoje i drugi multikopteri. Čak i ako ne računate egzotične opcije, još uvijek ih postoji čitava gomila!



Hajde da shvatimo kako je naš kvadrokopter strukturiran iznutra i šta treba da radi kontroler leta koji planiramo da programiramo.




Uglovi pitch, roll and yaw (pitch, roll, yaw)- uglovi po kojima je uobičajeno odrediti i postaviti orijentaciju kvadrokoptera u prostoru.


Ponekad se izostavi riječ "ugao" i jednostavno kažu: pitch, roll, yaw. Ali prema Wikipediji ovo nije sasvim tačno. Let kvadrokoptera u traženom pravcu postiže se promenom ova tri ugla. Na primjer, da bi letio naprijed, kvadrokopter se mora nagnuti zbog činjenice da se stražnji motori okreću malo jače od prednjih:

Plinski kvadrokopter- aritmetički prosjek između brzina rotacije svih motora. Što je više gasa, veći je ukupni potisak motora, to više vuku kvadrokopter gore(NEMOJTE NAPRIJED!!! “Papuče na podu” ovdje znači najbrži uspon). Obično se mjeri u postocima: 0% - motori su zaustavljeni, 100% - rotiraju maksimalnom brzinom. Gas lebdi- minimalni nivo gasa koji je neophodan da kvadrokopter ne izgubi visinu.

Gas, pitch, roll, yaw - ako možete kontrolirati ova četiri parametra, onda možete kontrolirati kvadrokopter. Ponekad se nazivaju i kontrolnim kanalima. Ako ste kupili dvokanalni daljinski upravljač, nećete moći upravljati kvadrokopterom. Trokanalni je pogodniji za male helikoptere: možete letjeti bez kontrole kotrljanja, ali nije zgodno na kvadrokopteru. Ako želite promijeniti režime leta, morat ćete izdvojiti petokanalni daljinski upravljač. Ako želite kontrolirati nagib i pomicanje kamere na ploči, postoje još dva kanala, iako profesionalci za to koriste poseban daljinski upravljač.

Postoji mnogo načina letenja. Koriste se GPS, barometar i daljinomjer. Ali želimo da implementiramo osnovni - režim stabilizacije ( ubodi, stabiliziraj, letjeti u “stub”), u kojem kvadrokopter održava uglove koji mu se daju daljinskim upravljačem, bez obzira na vanjske faktore. U ovom načinu rada, u nedostatku vjetra, kvadrokopter može visiti gotovo na mjestu. Pilot će morati da kompenzuje vetar.

Smjer rotacije vijaka se ne bira slučajno. Kada bi se svi motori rotirali u jednom smjeru, kvadrokopter bi se rotirao u suprotnom smjeru zbog stvorenog momenta. Stoga se jedan par suprotstavljenih motora uvijek okreće u jednom smjeru, a drugi par u drugom. Efekat pojave rotacijskih momenta koristi se za promjenu kuta skretanja: jedan par motora počinje da se okreće malo brže od drugog, a sada se kvadrokopter polako okreće prema nama (kakav užas):



  • LFW - rotacija lijevo naprijed u smjeru kazaljke na satu (lijevo naprijed, rotacija u smjeru kazaljke na satu)
  • RFC - desna prednja rotacija u smjeru kazaljke na satu (prednja desna, rotacija u smjeru suprotnom od kazaljke na satu)
  • LBC - rotacija lijevog leđa u smjeru kazaljke na satu (lijevo nazad, rotacija u smjeru suprotnom od kazaljke na satu)
  • RBW - desno nazad rotacija u smjeru kazaljke na satu (desno pozadi, rotacija u smjeru kazaljke na satu)

Kontrolira brzinu rotacije motora kontrolor leta (kontroler, mozak). Obično je ovo mala ploča ili kutija s mnogo ulaza i izlaza. Postoji ogroman broj različitih kontrolera sa različitim skupovima mogućnosti, različitim firmverima i različitim zadacima. Evo samo nekoliko:




Opšti zadatak kontrolora leta je da izvrši kontrolni ciklus nekoliko desetina puta u sekundi, koji uključuje: očitavanje očitavanja senzora, čitanje kontrolnih kanala, obradu informacija i izdavanje upravljačkih signala motorima kako bi se izvršile komande pilota. Ovo je ono što ćemo programirati.

Postoji mnogo različitih tipova senzora koji se mogu koristiti. Koristit ćemo one koji su već postali gotovo obavezni u svim kvadrokopterima troosni žiroskop i troosni akcelerometar. Akcelerometar mjeri ubrzanje, žiroskop mjeri ugaonu brzinu. Zahvaljujući njima, kontrolor leta zna trenutne uglove nagiba, nagiba i skretanja. Ovi senzori mogu biti ugrađeni u kontroler leta ili eksterni. Proces izračunavanja tri ugla na osnovu očitavanja senzora je tema za poseban članak. Ali ovo ovdje ne moramo znati: MPU-6050 će učiniti sve umjesto nas. Ovo je mala ploča koja interno izvodi potrebne proračune i filtriranje i proizvodi gotovo gotove uglove koristeći i2c protokol. Sve što treba da uradimo je da ih prebrojimo, obradimo sa ostatkom podataka i damo upravljačke signale motorima.

Motori na multikopterima troše velike struje, pa ih kontroler leta ne upravlja direktno, već preko posebnih hardverskih drajvera tzv. regulatori brzine (ESC, regulator, eska). Ovi regulatori se napajaju iz glavne ugrađene baterije, kontrolni signal se prima od kontrolera, a na izlazu imaju tri žice (A, B, C) koje idu direktno do motora (svaki motor ima svoj regulator !)




“Protokol” komunikacije između regulatora i motora nam nije toliko važan koliko “protokol” komunikacije između kontrolora leta i regulatora, jer moramo programski kontrolirati regulator iz kontrolera. Postoje regulatori kojima se upravlja preko i2c, ali najčešće se upravlja signalom pravokutnog talasa sa minimalno 0 volti i maksimalno 3-5 volti (tzv. PWM ili PWM, a neki tvrde da je ispravnije - PPM. Više detalja, na primjer).

“Protokol” je jaka riječ: da bi naredio motoru da se rotira maksimalnom brzinom, kontroler mora poslati impulse u trajanju od 2 milisekundi, isprepletene logičkom nulom u trajanju od 10 - 20 milisekundi. Trajanje impulsa od 1 milisekunde odgovara zaustavljanju motora, 1,1 ms - 10% maksimalna brzina, 1,2 ms - 20% itd. U praksi, trajanje nule ne igra nikakvu ulogu, važno je samo trajanje samog pulsa.

Unatoč svoj prividnoj jednostavnosti, ovdje postoji zasjeda: kontrolori leta dolaze u različitim različite postavke, regulatori su različiti, a minimum (1 ms) i maksimum (2 ms) nisu univerzalni. U zavisnosti od mnogih faktora, raspon od 1-2 ms može zapravo biti 1,1 - 1,9 ms. Da bi regulator i kontrolor pričali apsolutno isti jezik, postoji procedura kalibracija regulatora. Tokom ove procedure, rasponi kontrola se mijenjaju i postaju jednaki rasponu kontrolera. Procedura je ugrađena u program svakog kontrolera i uključuje nekoliko jednostavnim koracima(koraci se mogu razlikovati ovisno o proizvođaču - pročitajte upute!):

  • Isključite napajanje regulatora.
  • Skinite propeler sa motora.
  • Primijenite signal koji odgovara maksimalnoj brzini rotacije na ulaz kontrolera.
  • Priključite struju na regulator. Motor mora ostati nepokretan bez vanjske pomoći.
  • Primijenite signal koji odgovara minimalnoj brzini rotacije na ulaz kontrolera.
  • Pauzirajte 1-2 sekunde, sačekajte karakterističnu škripu.
  • Isključite napajanje regulatora.

Nakon toga, odgovarajuće granice intervala će biti unesene u kontroler. Prilikom pokušaja poletanja s nekalibriranim regulatorima, posljedice mogu biti neočekivane: od naglog trzaja kvadrokoptera u najbliže drvo do potpune nepokretnosti motora pri bilo kojoj vrijednosti gasa.

PWM koristi potpuno isti princip onboard receiver. Ovo mali uređaj, koji prima radio-kontrolne signale sa zemlje i prenosi ih na kontrolor leta. Najčešće, kontroler leta za svaki kontrolni kanal (prigušivač, pitch, roll, itd.) ima svoj ulaz na koji se dovodi PWM. Logika interakcije je jednostavna: komanda, na primjer, „70% gasa“, kontinuirano ide od zemlje do prijemnika, gdje se pretvara u PWM i šalje kontroloru leta preko posebne žice. Isto je sa pitch, roll, yaw.

Pošto prijemnik i kontroler imaju svoj prijateljski PWM odnos, oni će takođe morati da budu kalibrisani: daljinski upravljači sa prijemnicima su različiti sa sopstvenim radnim dometima. Kontroler mora biti u stanju da se prilagodi. Procedura radio kalibracija, za razliku od kalibracije regulatora, morat ćemo ga sami kreirati kao dio letačkog programa. Opšti plan kalibracije je sljedeći:

  • Skinite propelere s motora za svaki slučaj.
  • Nekako stavite kontroler u režim radio kalibracije.
  • Kontroler započinje radio kalibraciju na nekoliko desetina sekundi.
  • U predviđenom vremenu, pomaknite sve palice daljinskog upravljača u svim smjerovima dok se ne zaustave.
  • Kontroler pamti maksimume i minimume za sve kontrolne kanale tokom interna memorija vijekovima.
Dakle: tokom radio kalibracije, kontrolor leta pamti domete prijemnika za sve kontrolne kanale; Tokom ESC kalibracije, domet kontrolora leta se unosi u sve ESC.

Pored programa za kontrolor leta potreban je još jedan program: interfejs za podešavanje kontrolera leta. Najčešće je to PC program koji se povezuje na kontroler leta preko USB-a i omogućava korisniku da konfiguriše i provjeri program leta, na primjer: pokrene radio kalibraciju, konfigurira parametre stabilizacije, provjeri rad senzora, postavi rutu leta na mapu, odrediti ponašanje multikoptera kada se signal izgubi i još mnogo toga. Napisaćemo naše konfiguraciono sučelje u C++ i Qt u obliku uslužnog programa za konzolu. Evo ga, ako pogledate u budućnost:




Niko nije imun od nezgoda. Čak i plastični propeleri od deset inča na malim motorima mogu ostaviti krvave modrice na koži koje će boljeti još nedelju dana (lično testirano). Lako je napraviti sebi novu šminku i frizuru ako pritisnete gas na daljinskom upravljaču dok nosite uključen kvadrokopter. Stoga, kontrolor leta mora osigurati barem malo sigurnosti: mehanizam naoružan/razoružan. Stanje "deaktiviranog" kvadrokoptera znači da su motori isključeni, a čak ni komanda za puni gas sa daljinskog upravljača nema efekta, iako se napajanje isporučuje. „Naoružano“ stanje kvadrokoptera znači da komande sa daljinskog upravljača izvršava kontrolor leta. U ovom stanju, kvadrokopteri polijeću, lete i slijeću. Kvadrokopter se uključuje i odmah bi trebao preći u deaktivirano stanje u slučaju da ga nepažljiv pilot uključi kada palica za gas na daljinskom upravljaču nije na nuli. Da bi helikopter stavio u "naoružano" stanje, pilot treba da napravi neki unaprijed dogovoreni gest sa palicama daljinskog upravljača. Često je ovaj gest držanje lijevog štapa u donjem desnom uglu (gaz = 0%, skretanje = 100%) nekoliko sekundi. Nakon toga, kontrolor leta obavlja barem minimalno samotestiranje i ako uspješno prođe, " naoružavajući se"(spreman za let!) Sa još jednom gestom (gaz = 0%, skretanje = 0%) kvadrokopter" postaje razoružan“Još jedna dobra mjera sigurnosti je autorazoružati, ako je gas bio na nuli 2-3 sekunde.

O motorima, baterijama, regulatorima, propelerima

Izbor komponenti za multikopter tema je za čitav niz članaka. Ako ćete praviti svoj prvi kvadrokopter, formulirajte za šta vam je potreban i koristite savjete iskusnih ili uzmite listu komponenti koje je neko drugi sastavio i na njemu uspješno leti.

Ipak, za opšte razumevanje, korisno je znati glavne tačke.

Baterije


Među amaterima i profesionalcima, sistemi sa više rotora su najčešći litijum-polimerske baterije, kao glavni izvori napajanja za elektroniku i motore na vozilu. Odlikuju se kapacitetom, naponom i maksimalnom izlaznom strujom. Kapacitet se, kao i obično, mjeri u amper-satima ili miliamper-satima. Napon se mjeri brojem "ćelija" baterije. Jedna "kantica" je u prosjeku 3,7 volti. Potpuno napunjena "kantica" je 4,2 volta. Najčešće baterije su one sa tri do šest ćelija. Maksimalna izlazna struja se mjeri u amperima i označava se, na primjer, ovako: 25C. C je kapacitet baterije, 25 je množitelj. Ako je kapacitet 5 ampera, onda takva baterija može isporučiti 25 * 5 = 125 ampera. Naravno, bolje je uzeti trenutni izlazni parametar s rezervom, ali, u osnovi, što je veći, to je baterija skuplja. Primjer označavanja: 25C 3S 4500mah.

Svaka banka je zasebna baterija. Svi su zalemljeni u seriji. Kako bi se sve banke ravnomjerno punile, osiguran je balansni konektor sa pristupom svakoj banci posebno, a poseban uređaj za punjenje.

Motori, propeleri, regulatori


Glavni parametar motora bez četkica je njegov kv. Ovo je broj okretaja u minuti za svaki volt primijenjenog napona. Najčešći motori su sa kv od 300 do 1100. Kv bliži 1000 obično se bira za male kvadrokoptere (1-2 kilograma plus 500 grama nosivosti) i opremljeni su plastičnim propelerima do 12 inča u prečniku. Veliki multikopteri (za podizanje dobre i teške foto-video opreme) ili avioni koji lete dugo (za evidenciju vremena letenja) obično imaju motore niskog kv (300-500) i ogromne karbonske propelere (15 - 20 inča u prečniku). Kv nije jedini važan parametar motor: često možete pronaći cijele tablice ovisnosti snage motora i potiska o dovedenom naponu i vrsti ugrađenog propelera. Osim toga, svaki motor je dizajniran za vlastiti raspon napona (broj ćelija baterije) i vlastitu maksimalnu struju. Ako proizvođač piše 3-4S, ne biste ga trebali koristiti sa 5S baterijama. Isto važi i za regulatore.

Ako je motor dizajniran za struju do 30A, tada bi regulator trebao biti dizajniran za struju do 30 + 10A kako bi se spriječilo pregrijavanje. Nekvalitetni ili neodgovarajući regulatori mogu uzrokovati takozvana "sinhronizacija" i zaustaviti motor u letu, a prepoznat ćete još jedan izraz s više rotora: " uhvatio planetu.” Drugi važna tačka- debljina i kvalitet žica. Žica pogrešne veličine ili loš konektor mogu dovesti do požara u zraku.

Kao što vidite, postoji mnogo nijansi. Nisam ni nabrojao pola, tako da je prilično teško sami odabrati komponente za svoj prvi multikopter.

Stabilizacijska matematika, PID regulatori (PID)


Ako se odlučite za multikoptere, prije ili kasnije ćete se morati pozabaviti podešavanjem PID kontrolera, jer se ovaj matematički aparat koristi u gotovo svim zadacima stabilizacije: stabilizacija uglova kvadrokoptera u zraku, letenje i zadržavanje položaja korištenjem GPS-a, zadržavanjem visine pomoću barometra, mehanizmima bez četkica stabilizacijom video kamere u letu (kamera gimbal).

Kupiš dvoosni kardan kamere, staviš na primjer GoPro, upališ ga i umjesto stabilizacije dobiješ grčeve, vibracije i trzaje, iako su svi senzori kalibrirani i mehanički problemi su otklonjeni. Razlog su neispravni parametri PID regulatora.

Sastaviš multikopter, kalibrišeš senzore, regulatore, radio, sve provjeriš, pokušaš poletjeti, a toliko je dosadno u zraku da ga čak i lagani povjetarac prevrne. Ili obrnuto: toliko je oštar da iznenada poleti i izvede trostruki salto bez dozvole. Razlog je i dalje isti: parametri PID regulatora.

Za mnoge uređaje koji koriste PID kontrolere postoje upute za postavljanje, pa čak i nekoliko uz brojne video upute samih korisnika. Ali da bismo lakše snašli u ovoj raznolikosti, korisno je razumjeti kako ti regulatori rade unutra. Osim toga, mi ćemo napisati svoj vlastiti sistem stabilizacije kvadrokoptera! Predlažem da se “ponovno izmisli” i "na prste" da razumem Formula PID regulatora. Za one koji više vole suvi matematički jezik, preporučujem Wikipediju, jer... na ruskom materijal još nije predstavljen tako detaljno.

Razmotrićemo kvadrokopter u dvodimenzionalnom prostoru, gde ima samo jedan ugao - ugao kotrljanja, i dva motora: levi i desni.




Kontrolor leta kontinuirano prima komande sa zemlje: „okreni se za 30 stepeni“, „kotrljaj -10 stepeni“, „okreni se za 0 stepeni (drži horizont)“; njegov zadatak je da ih izvede što brže i preciznije pomoću motora, uzimajući u obzir: vjetar, neravnomjernu raspodjelu težine kvadrokoptera, neravnomjerno trošenje motora, inerciju kvadrokoptera itd. Dakle, kontrolor leta mora kontinuirano rješavati problem koju brzinu rotacije primijeniti na svaki motor, uzimajući u obzir trenutnu vrijednost ugla nagiba i potrebnu. Kontinuirano je, naravno, jaka riječ. Sve zavisi od računarskih mogućnosti određenog hardvera. Na Adruinu je sasvim moguće uklopiti jednu iteraciju ciklusa obrade i upravljanja u 10 milisekundi. To znači da će se svakih 10 milisekundi očitati uglovi kvadrokoptera, a na osnovu njih će se motorima slati kontrolni signali. Ovih 10 milisekundi se zove regulacioni period. Jasno je da što je manji, to se regulacija češće i tačnije javlja.

Nivo plina teče od prijemnika do regulatora. Označimo ga. Da vas podsjetim da je ovo aritmetički prosjek između brzina rotacije svih motora, izražen kao postotak maksimalne brzine rotacije. Ako su i brzine rotacije lijevog i desnog motora, tada:




gdje je odziv kvadrokoptera (sila), koji stvara obrtni moment zbog činjenice da se lijevi motor okreće brže od gasa, a desni motor isto toliko sporije. također može imati negativne vrijednosti, tada će se desni motor brže okretati. Ako naučimo da izračunamo ovu vrijednost u svakoj iteraciji ciklusa obrade, tada ćemo moći kontrolirati kvadrokopter. Jasno je da u najmanju ruku treba ovisiti o trenutnom kutu kotrljanja () i željenom kutu kotrljanja (), koji dolazi iz kontrolne ploče.

Zamislimo situaciju: primljena je naredba "drži horizont" ( = 0), a kvadrokopter se okreće ulijevo:




- razlika (greška) između i , koju kontrolor nastoji minimizirati.

Što je veća razlika između željenog ugla nagiba i trenutnog, to bi reakcija trebala biti jača, to bi se lijevi motor trebao okretati brže u odnosu na desni. Ako ovo zapišemo koristeći našu notaciju:



Ovdje je P koeficijent proporcionalnosti. Što je veći, to će reakcija biti jača, kvadrokopter će oštrije reagirati na odstupanja od potrebnog kuta nagiba. Ova intuitivna i jednostavna formula opisuje rad proporcionalni kontroler. Poenta je jednostavna: što više kvadrokopter odstupa od tražene pozicije, to ćete teže morati pokušati da ga vratite. Nažalost, ova formula će morati biti komplikovana. Glavni razlog je prekoračenje.

Za nekoliko desetina milisekundi (nekoliko iteracija ciklusa obrade), pod uticajem proporcionalnog kontrolera, kvadrokopter će se vratiti u traženi (u ovom slučaju horizontalni) položaj. Sve ovo vrijeme, greška i trud će imati isti predznak, iako će postajati sve manji po veličini. Postigavši ​​određenu brzinu okretanja (kutnu brzinu), kvadrokopter će se jednostavno prevrnuti na drugu stranu, jer ga niko neće zaustaviti u potrebnom položaju. To je poput opruge koja se uvijek želi vratiti u prvobitni položaj, ali ako je povučete i otpustite, osciliraće sve dok trenje ne preuzme. Naravno, i kvadrokopter će biti pogođen trenjem, ali praksa pokazuje da to nije dovoljno.

Iz tog razloga potrebno je proporcionalnom kontroleru dodati još jedan termin koji će usporiti rotaciju kvadrokoptera i spriječiti prekoračenje (kotrljanje u suprotnom smjeru) – svojevrsna imitacija trenja u viskoznom mediju: što je brža kvadrokopter se okreće, to je teže da pokušate da ga zaustavite, naravno, u razumnim granicama. Brzinu rotacije (stopu promjene greške) označavamo kao , tada:



gdje je D podesivi koeficijent: što je veći, to je jača sila zaustavljanja. Iz školskog predmeta fizike pojavljuju se nejasna sjećanja da je brzina promjene bilo koje veličine derivat ove veličine u odnosu na vrijeme:

.

I sada se proporcionalni regulator pretvara u proporcionalno-diferencijalni (proporcionalni član i diferencijal):

.

Grešku je lako izračunati, jer na svakoj iteraciji znamo i ; P i D su parametri koji se mogu konfigurirati prije pokretanja. Za izračunavanje derivacije (stope promjene) potrebno je pohraniti prethodnu vrijednost, znati trenutnu vrijednost i znati vrijeme koje je prošlo između mjerenja (kontrolni period). I evo ga - fizika šestog razreda (brzina = udaljenost / vrijeme):

.

- regulacioni period; - vrijednost greške iz prethodne iteracije ciklusa regulacije. Usput, ova formula je najjednostavniji način numerička diferencijacija, i to je sasvim prikladno za nas ovdje.

Sada imamo proporcionalni diferencijalni kontroler u ravnom bikopteru, ali postoji još jedan problem. Neka lijeva ivica teži malo više od desne, ili, što je isto, lijevi motor radi malo lošije od desnog. Kvadrokopter je blago nagnut ulijevo i ne okreće se unazad: diferencijalni član je nula, a proporcionalni član, iako ima pozitivnu vrijednost, nije dovoljan da se kvadrokopter vrati u horizontalni položaj, jer lijeva ivica malo teži. više nego desno. Kao rezultat toga, kvadrokopter će uvijek povući ulijevo.

Potreban je mehanizam za praćenje takvih odstupanja i njihovo ispravljanje. Karakteristična karakteristika takvih grešaka je da se vremenom ispravljaju. Integralni pojam dolazi u pomoć. Pohranjuje zbir svih grešaka u svim iteracijama ciklusa obrade. Kako će ovo pomoći? Ako proporcionalni član nije dovoljan da ispravi malu grešku, ali ona i dalje postoji, postepeno, tokom vremena, integralni član postaje jači, povećavajući odziv i kvadrokopter uzima traženi ugao prevrtanja.

Ovdje postoji nijansa. Pretpostavimo da je 1 stepen, kontrolni ciklus je 0,1s. Tada će u jednoj sekundi zbir grešaka poprimiti vrijednost od 10 stepeni. A ako je ciklus obrade 0,01s, tada će količina dobiti čak 100 stepeni. Tako da u isto vrijeme integralni pojam dobije istu vrijednost za različite periode regulacije, pomnožićemo dobijeni iznos sa samim periodom regulacije. Lako je izračunati da se u oba slučaja iz primjera dobije zbir od 1 stepena. Evo ga - integralni član (za sada bez podesivog koeficijenta):

.

Ova formula nije ništa drugo do numerički integral tokom vremena funkcije u intervalu od nule do trenutnog trenutka. Zato se pojam naziva integralnim:

,

gdje je T trenutni trenutak u vremenu.
Vrijeme je da zapišemo konačnu formulu za proporcionalno-integralno-derivatni kontroler:

,

gdje je jedan od konfigurabilnih parametara, kojih sada postoje tri: . Ovu formulu je zgodno koristiti iz programskog koda, ali evo formule koja je data u udžbenicima:

.

Postoji nekoliko njegovih varijacija, na primjer, možete ograničiti modul integralnog člana tako da ne prelazi određeni dopušteni prag (to ćemo učiniti).

Vježbajte

Pa, sada je vrijeme da vježbamo odabir koeficijenata. Čitaocima se nudi JavaScript stranica sa virtuelnim kvadrokopterom, koji su već vidjeli na slikama: izbor parametara PID kontrolera za kvadrokopter(JSFiddle). Pri prvom startu odmah je vidljivo prekoračenje - oscilacije oko tražene pozicije. Kada oscilacije prestanu, možete uočiti efekat da se proporcionalni koeficijent ne može nositi s greškom zbog "asimetričnog" kvadrokoptera (podešenog potvrdnim okvirom "Asimetrija"). Parametri dostupni za konfiguraciju su P, I, D. Sada znate što s njima raditi. "Scroll" ispod kvadrokoptera može se kontrolisati potrebnom vrijednošću kotrljanja. “Interval (ms):” - interval regulacije. Smanjivanje je varanje, ali vidjeti kako to utiče na kvalitet stabilizacije je vrlo korisno.

Za ljubitelje “čiste” matematike možemo ponuditi konfigurirati apstraktni PID kontroler

Uneseni parametri se ne primjenjuju automatski: potrebno je kliknuti na “Primijeni”. Nekoliko malih savjeta: ako vam se čini da je kvadrokopter prespor da reagira na kontrolu, možete povećati P, ali prevelika vrijednost P može dovesti do prekoračenja. Parametar D će pomoći da se nosi sa prekoračenjem, ali prevelike vrijednosti će dovesti do čestih oscilacija ili opet do prekoračenja. I parametar je obično 10 - 100 puta manji od P parametra jer njegova snaga leži u akumulaciji tokom vremena, a ne u brzom odgovoru.

Ručno podešavanje PID parametara zahtijeva vježbu. Postoje analitičke metode za njihovo izračunavanje, ali one zahtijevaju dobru pripremu i precizno poznavanje mnogih parametara specifičnog sistema koji se prilagođava. Kao središte između ručnog odabira i analitičkog proračuna, postoji širok spektar empirijskih metoda koje predlažu različiti istraživači.

U našem 2D kvadrokopteru se mijenja samo jedan ugao - ugao prevrtanja. U podešavanju 3D kvadrokoptera bit će potrebna tri nezavisna PID kontrolera za svaki od uglova, a kontrola određenog motora će predstavljati zbir napora svih kontrolera.

Zaključak prvog dijela

U ovom članku smo se upoznali sa osnovnim konceptima: kvadrokopter i princip leta, pitch, roll, yaw, gas, lebdeći gas, stabilizirajući režim leta, kontroler leta, žiroskop, akcelerometar, regulator brzine, PWM, kalibracija kontrolera, radio kalibracija, on-board prijemnik, interfejs za podešavanje kontrolora leta, stanje naoružanja/razoružanja, automatsko deaktiviranje.

Nakon toga smo ponovo izmislili formulu PID kontroler dodirujući malo numerička diferencijacija i integracija, i iskusio na teži način kako konfigurirati parametre P, I, D on virtuelni kvadrokopter .

Sada, ako ste vješti u programiranju svjetlosnih mačeva, možete započeti svoj program stabilizacije kvadrokoptera, ili još bolje, dodati nove ideje postojećim. open source projekti. Eto, za nedelju-dve, kada budem imao snage i vremena da pariram kvalitetom, nastaviću priču kako je sve isprogramirano, testirano, palo, poseklo prste i potpuno odletelo u nepoznatom pravcu. Ako zaista želite da nastavite, možete me kontaktirati ovdje ili, na primjer, na Vkontakte: to daje mali poticaj.

U zaključku ovog dijela jednostavno moram spomenuti osobu koja mi je pomogla u odabiru komponenti i postavljanju najkompleksnijeg (prvog!) kvadrokoptera na MegapirateNG firmware-u i strpljivo odgovorila na stotine pitanja o ovim vrlo osnovnim konceptima: SovGVD, hvala ! :-)

Kao nagradu za one koji su uspjeli da protrate sav ovaj list, objavljujem obećani mali video kako naš kvadrokopter sa našim „izmišljenim“ PID kontrolerima leti na našem programu za Arduino Mega 2560:



Naravno, nedostaje mu GPS, kao u komercijalnim i masovnim proizvodima, malo mu nedostaje stabilnost, ali je NAŠ, i znamo ga iznutra i izvana do posljednjeg faktora integralnog koeficijenta! I zaista je super što su nam takve tehnologije dostupne danas.