Kā izveidot savu kvadrokopteru. Kā izveidot kvadrokopteru uz arduino bāzes Mēs rakstām programmu kvadrokopterim uz arduino

Sveiki, mūsu dārgie lasītāji. Šajā rakstā mēs runāsim par to, kā salikt kvadrokopteri, izmantojot Arduino. Šis nav vieglākais, lai arī ļoti aizraujošs uzdevums, kura rezultātā parādīsies mazs drons, kas izstrādāts, salikts un konfigurēts ar savām rokām. Nekavējoties izdarīsim atrunu, ka mēs runājam par lētāko iespējamo dronu no lētākajām sastāvdaļām.

Pirms sākat montēt kvadrokopteru ar savām rokām, jums jāiegādājas visas nepieciešamās detaļas. Mūsu paštaisītā produkta smadzenes būs lidojuma kontrolieris Arduino Uno. Tās iespējas ir vairāk nekā pietiekamas, lai vadītu dronu.

Papildus mikrokontrolleram mums būs nepieciešams:

  • Akumulators (vēlams vairākas) 3,7V
  • MPU-6050 plate (uz tā uzstādīts žiroskops un akselerometrs)
  • Tranzistors ULN2003A
  • Komutatoru motori ar dobu rotoru 0820
  • Vadi

Jāpiemin daži punkti. Tā kā mēs savācam, mūsu izvēle krita uz kolektoru motoriem ar dobu rotoru (tā sauktajiem bezkodolu motoriem). Tie nav ne tuvu tik uzticami kā bezsuku motori, taču tie ir daudz lētāki. Turklāt jūs varat iztikt bez papildu ātruma regulatoriem.

Bet bez žiroskopa un akselerometra iztikt nav iespējams. Žiroskops ir nepieciešams, lai nodrošinātu, ka kvadrokopteris var uzturēt noteiktu kustības virzienu, savukārt akselerometru izmanto paātrinājuma mērīšanai. Bez šīm ierīcēm koptera vadība būtu daudz grūtāka (ja ne neiespējama), jo tās sniedz datus signālam, kas regulē dzenskrūves griešanās ātrumu.

Mēs neiekļāvām rāmi nepieciešamo detaļu sarakstā. Varat to iegādāties vai arī 3D izdrukāt dzinēju rāmi, sijas un stiprinājumus. Otrais variants mums šķiet labāks, jo īpaši tāpēc, ka internetā varat viegli atrast kvadrokopteru projektus.

Uz printera uzdrukātais rāmis būs ne tikai viegls, bet arī izturīgs. Bet, ja jums nav piekļuves 3D printerim, varat pasūtīt rāmi.

Soli pa solim montāžas instrukcijas

Kā apdrukāt rāmi un stiprinājumus

3D printerus var atrast daudzās universitātēs, laboratorijās un kopstrādes telpās. Bieži vien piekļuve tiem ir bez maksas. Varat izveidot modeļus drukāšanai pats, izmantojot, piemēram, Solidworks. Vai arī varat izmantot gatavus risinājumus, vajadzības gadījumā mainot parametrus.

Kā iestatīt žiroskopa akselerometru

Lai konfigurētu akselerometru-žiroskopu (I2C), iesakām izmantot tālāk norādīto bibliotēku. Nekādā gadījumā nepievienojiet plati 5V spriegumam, pretējā gadījumā jūs to uzreiz sabojāsit.


Īsi pastāstīsim, kāpēc I2C plate ar sensoriem ir interesanta. Tas ievērojami atšķiras no parastās akselerometra plates ar trim analogajām izejām X, Y, Z asīm. I2C ir interfeisa kopne, kas ļauj pārsūtīt ievērojamus datu apjomus, izmantojot loģiskus ciparu impulsus.

Uz tāfeles nav daudz analogo izeju, un tas ir liels I2C pluss, jo pretējā gadījumā mums būtu jāizmanto visi Arduino porti, lai saņemtu datus no žiroskopa un akselerometra.

Savienojuma shēma ar Arduino

Lai I2C plate varētu sazināties ar Arduino, tai ir jābūt savienotai ar kontrolieri.

Mūs interesē I2C skenera koda skice vai drīzāk tā kods.

Nokopējiet programmas kodu, ielīmējiet to tukšā skicē un pēc tam palaidiet to. Pārliecinieties, vai savienojums ir izveidots ar 9600 (lai to izdarītu, palaidiet Arduino IDE izmantojot Tools-Serial Monitor). Ir jāparādās I2C ierīcei ar adresi 0x68 vai 0x69. Pierakstiet vai atcerieties adresi. Ja adrese nav piešķirta, visticamāk, problēma ir savienojumā ar Arduino elektroniku.

Tālāk mums ir vajadzīga skice, kas var apstrādāt žiroskopa un akselerometra datus. Internetā ir daudz iespēju, un atrast īsto nav problēma. Visticamāk, tas būs arhivētā formā. Izsaiņojiet lejupielādēto arhīvu, atveriet Arduino IDE un pievienojiet bibliotēku (skicēt-importēt bibliotēku-pievienot bibliotēku). Mums būs nepieciešamas mapes MPU6050 un I2Cdev.

Atveriet MPU6050_DMP6 un rūpīgi pārskatiet kodu. Jums nav jāveic nekādas sarežģītas darbības, bet, ja tika piešķirta adrese 0x60, tad augšpusē ir jāizņem komentārs (to var atrast sadaļā #includes) un jāieraksta pareizā adrese. Sākotnēji tav ir norādīts kā 0 × 68.

Mēs lejupielādējam programmu, atveram monitora logu caur numuru 115200 un vienkārši izpildām norādījumus. Pēc dažiem mirkļiem jūs saņemsiet datus no žiroskopa/akselerometra. Pēc tam sensori ir jākalibrē.

Novietojiet dēli uz līdzenas virsmas un palaidiet skici MPU6050_calibration.ino (viegli atrodama internetā). Pārskatiet kodu, noklusējuma adrese ir 0x68. Pēc programmas palaišanas jums būs informācija par novirzēm (nobīdi). Pierakstiet to, mums tas būs nepieciešams MPU6050_DMP6 skicē.

Tas ir viss, jums ir funkcionējošs žiroskops un akselerometrs.

Programma Arduino

Programma palīdzēs jums kontrolēt dronu. Stabilizācijai izmantotais algoritms ir balstīts uz diviem PID regulatoriem. Viens ir paredzēts ripināšanai, otrs ir paredzēts piķim.

1. un 2. dzenskrūves pāru griešanās ātrumu atšķirība ir vienāda ar 3. un 4. dzenskrūves pāru ātrumu starpību. Tas pats attiecas uz pāriem 1, 3 un 2, 4. PID regulators maina atšķirību ātrums, pēc kura ripas un piķis kļūst par nulli .

Pievērsiet uzmanību Arduino digitālajām tapām motoriem un neaizmirstiet mainīt skici.

Savienojums ar kontrolieri

Lai vadītu kopteri, mums ir jāiegūst kontrole pār motoriem, savienojot tos ar Arduino. Kontrolieris izvada tikai nelielu spriegumu un strāvu, tāpēc nav jēgas tieši savienot motorus. Tā vietā varat uzstādīt vairākus tranzistorus, lai palielinātu spriegumu.


Lai izveidotu diagrammu, mums ir nepieciešams:

  • Arduino
  • Dzinēji
  • Tranzistori

Tas viss ir samontēts uz shēmas plates un savienots ar savienotājiem.

Pirmais solis ir pievienot tranzistoram 4 PWM izejas (apzīmētas ~). Pēc tam pievienojiet savienotājus motoriem, kas pievienoti barošanas avotam. Mūsu gadījumā izmantojam 5V akumulatoru, bet derēs arī 3-5V akumulators.

Tranzistoriem jābūt iezemētiem, un Arduino plates zemei ​​jābūt savienotai ar akumulatora zemējumu. Motoriem jāgriežas pareizajā virzienā, tas ir, tiem jāstrādā, lai kopteri paceltu, nevis ripotu.

Pārslēdzot motora kontaktu no 5V uz tranzistoru, jūs redzēsiet, ka rotors mainīs griešanās virzienu. Kad esat veicis regulēšanu, jums vairs nebūs jāatgriežas pie rotora griešanās virziena maiņas. Tagad mūs interesē ātrums.

Pēc akselerometra palaišanas un pārbaudes mēs uzstādām ķēdi uz ProtoBoard. Ja tā nav, varat izmantot parasto shēmas plati, iepriekš pielodējot uz tās kontrollera sliedes.

Pirms akselerometra pielodēšanas pie dēļa tas ir jākalibrē uz horizontālas virsmas. Tas palīdzēs sasniegt vairāk precīzs darbs sensors nākotnē.

Kā vēl jūs varat uzlabot savu kvadraciklu?

Koptera vājā vieta ir tā kolektoru dzinēji. Ja meklējat, jūs varat atrast nedaudz lielākus un jaudīgākus motorus nekā tie, kas piedāvāti mūsu rakstā, taču tie būtiski nepalielināsies.


Taču mūsu mērķis bija ar savām rokām samontēt lētu kvadrokopteru, un tāpēc tika izmantoti lēti motori. Bezsuku motori ir ievērojami dārgāki, taču tie nodrošinās ievērojami lielāku jaudu un uzticamību. Tie būs jāiegādājas arī ar ātruma regulatoriem, taču tas ir patiesi efektīvs jauninājums.

Arduino Uno plates izvēle ir saistīta ar to, ka no tās var diezgan viegli izņemt mikroshēmu un uzlikt uz ProtoBoard. Tas ļauj samazināt drona svaru par 30 gramiem, taču ķēdē būs jāiekļauj papildu kondensatori. Piemērots Arduino dēlis Pro Mini.

Kas attiecas uz Arduino programmas, tad to var salīdzinoši viegli mainīt un papildināt ar jaunām funkcijām. Galvenais, lai ar tā palīdzību drons būtu spējīgs automātiskais režīms stabilizējiet savu stāvokli.

Projekta galvenā ideja ir izveidot lētu kvadrokopteru ar autonomu barošanu un lidojuma stabilizācijas algoritmu, izmantojot Arduino.

Papildus Arduino mums būs nepieciešams žiroskops / akselerometrs un suku motori. Iepriekš minētajā projektā nav aplūkotas metodes kvadrokoptera lidojuma vadīšanai, taču tās noteikti var pievienot. Šī kvadrokoptera izmaksas ir aptuveni 60 USD.

Kas ir kvadrokopteris?

Esmu pārliecināts, ka lielākā daļa no tiem, kas lasa šo rakstu, jau zina, kas ir kvadrokopteris. Ja nē, šeit ir īss šo brīnišķīgo ierīču apraksts.

Kvadrokopteris ir lidojoša ierīce ar četrām “kājām”, no kurām katrai ir motors ar dzenskrūvi. Kvadrokopteri būtībā ir līdzīgi helikopteriem, taču to kustību, rotāciju un sasvēršanos nodrošina četru dzenskrūvju sinhronā darbība. Turklāt kvadrokopteriem ir tāds jēdziens kā “piķis” - rotācija ap garenisko asi. Lai stabilizētu kvadrokoptera lidojumu, divi propelleri griežas vienā virzienā (pulksteņrādītāja virzienā), bet divi dzenskrūves griežas pretējā virzienā (pretēji pulksteņrādītāja virzienam). Pateicoties šai spējai lidināties vienā pozīcijā gaisā, kvadrokopteri galvenokārt tiek izmantoti aerofotografēšanai un video filmēšanai. Protams, kvadrokopteri un citas līdzīgas ierīces ar vairākiem dzinējiem tiek izmantotas glābšanas darbos, policijā, militārajā u.c. IN Nesen kvadrokopteru ražošanas komponentu izmaksas ir ievērojami samazinājušās, un daudzi uzņēmumi ir sākuši tos ražot. Gatavā produkta iegāde šodien nebūs problēma.

Tātad, jūs jau esat mazliet sapratis, kas ir kvadrokopters, tagad pāriesim pie īss apraksts tā ražošanas process.

Pirmā lieta, ko mēs izdarījām, bija Google iepirkšanās, meklējot komponentus, kas mums būtu nepieciešami, lai to izveidotu.

Vairumā gadījumu tiek izmantoti mikrokontrolleri un bezsuku (vārstu) motori. Tika nolemts kā kontrolieri izmantot Arduino, jo tā ir ideāla platforma cenas ziņā. Pirmā problēma, kas radās, bija bezsuku motori. Atcerieties, ka mēs koncentrējamies uz budžetu 60 ASV dolāru apmērā. Un viena bezsuku motora izmaksas, ko var izmantot mūsu kvadrokoptera konstrukcijā, svārstās no 20 līdz 60 USD! Turklāt šo motoru izmantošanai ir jāuzstāda papildu kontrolieri - ātruma regulatori. Tāpēc tika nolemts izmantot suku motorus. Mūsu kvadrokoptera izmēri ir mazi, tāpēc iegādājāmies motorus ar salīdzinoši zemu griezes momentu. Google ierosināja, ka pastāv kvadrokopteri ar līdzīgiem diskdziņiem. Atrastie motori spēj pacelt līdz 55 gramiem smagumu, kas mums der gana labi. Nākamais solis ir atrisināt motoru stabilizācijas problēmas, izmantojot žiroskopus un akselerometrus. Žiroskops ir ierīce, kas izmanto Zemes gravitācijas spēku, lai noteiktu slīpuma (orientācijas) leņķi kosmosā. Žiroskopa klasiskais dizains sastāv no brīvi rotējoša diska, ko sauc par rotoru. Rotors ir uzstādīts uz ass, kas atrodas lielāka, stabilāka riteņa centrā. Kad ass griežas, rotors paliek statiskā stāvoklī, kas atbilst smaguma centram. Akselerometrs ir kompakta ierīce, ko izmanto paātrinājuma mērīšanai. Kad objekts atstāj miera stāvokli (sāk kustēties), akselerometrs reģistrē vibrācijas, kas rodas šīs kustības laikā. Akselerometros tiek izmantoti mikroskopiski kristāli, kas trieciena laikā rada spriegumu. Šis spriegums tiek noņemts un veidojas paātrinājuma vērtība. Šie divi sensori ir nepieciešami kvadrokopteram. Pamatojoties uz to rādījumiem, tiek ģenerēts vadības signāls, kas regulē motoru griešanās ātrumu, lai nodrošinātu mūsu kvadrokoptera ripošanos, kustību vai stabilizāciju.

Nepieciešamās sastāvdaļas, detaļas un aprīkojums

Arduino kontrolētam kvadrokoptera projektam mums būs nepieciešams:

  • - vadi;
  • - litija baterijas pie 3,7 V;
  • - tranzistors: ULN2003A Darlington Transistor (varat ņemt tranzistoru, kas atbalsta lielākas slodzes);
  • - motori: 0820 Coreless Motors;
  • - mikrokontrolleris: Arduino Uno;
  • - akselerometrs/žiroskops: MPU-6050 plāksne (lēta un jautra "viss vienā" iespēja);
  • - 3D printeris vai piekļuve tam kvadrokoptera dizaina daļu drukāšanai;
  • - instrumenti (ieskaitot lodāmuru un spēju to lietot!).
  • PĒRC 3,7 V litija akumulatorus (Esi uzmanīgs, starp piedāvātajām precēm jāatrod tieši sev atbilstošā!);

Kvadrokopteru detaļu 3-D druka

Viens no pirmajiem soļiem ir mūsu kvadrokoptera rāmja izveide. Tika nolemts izvēlēties mazākās pretestības ceļu un izdrukāt rāmi uz 3D printera. Papildus ražošanas vienkāršībai, rāmis, kas drukāts uz 3D printera, ir diezgan viegls, pateicoties šūnveida drukāšanai. Detaļas tika izstrādātas Solidworks. Zemāk ir visi cietie modeļi. Jūs varat tos viegli lejupielādēt un nosūtīt drukāšanai. Sīkāka informācija tiek saglabāta .stl formātā. Ja vēlaties, varat tos droši modificēt un mainīt, izmantojot to pašu Solidworks. Modeļi ir parametriski, tādēļ, ja nolemjat izmantot citus motorus, jums vienkārši ir jāmaina daži parametri modelī un jūs iegūsit gatavu rāmi jūsu kvadrokoptera izmēriem.


Rezultātā jūs iegūsit kaut ko līdzīgu:



Akselerometra žiroskopa (I2C) iestatīšana


Šajā piemērā tika izmantota SparkFun MPU6050 plate. Amazon maksā apmēram 10 USD un darbojas labi. Līdzīga Ķīna vietnē Aliexpress vai Ebay piedāvā līdzīgas plates līdz pat 5 USD. Darbojas arī lieliski.

Kas ir I2C?

Ieslēgts vienkārši dēļi akselerometrs, viss ir loģiski un skaidri: tam ir atsevišķas analogās izejas X, Y un Z asīm.Katra izeja atbilst atsevišķai akselerometra asij. Ja tagad paskatās uz I2C plati, jūs sapratīsit, ka viss ir nedaudz mulsinošāks. I2C ir sakaru standarts, kurā liels informācijas apjoms tiek pārsūtīts, izmantojot digitālos loģiskos impulsus, nevis analogās izejas. MPU6050 nodrošina 6 kontrolētas asis (3 žiroskopam un 3 akselerometram). Ja tie visi būtu analogi, mums būtu jāizmanto visi Arduino Uno analogie porti. Izmantojot I2C protokolu, savienojuma izveidei izmantojam daudz mazāk tapu.

Arduino savienojuma shēma

MPU6050 plates savienojuma shēma ir parādīta zemāk. Lūdzu, ņemiet vērā, ka Arduino bibliotēka uzņemas šo tapu izmantošanu. Parasti, pat ja jums ir cita ražotāja dēlis, tapas ir marķētas vienādi, tāpēc savienojuma shēma paliek nemainīga.

Ja barojat to ar 5V, plate var tikt bojāta, tāpēc esiet uzmanīgi un izmantojiet 3,3 V. Dažām MPU6050 plāksnēm ir sprieguma regulators, kas darbojas kā drošinātājs, taču tas joprojām nav riska vērts. Ja jūsu platei ir AD0 tapa, tai jābūt savienotai ar zemējumu (GND). Mūsu gadījumā VIO kontakts ir savienots ar AD0 uz pašas plates, tāpēc nav nepieciešams savienot AD0 tapu.

Skice priekš Arduino

Šajā brīdī jums būs nepieciešamas zināšanas par Arduino programmēšanu. Ja kaut ko nesaprotat, apstājieties un mēģiniet to izdomāt. Tālāk sniegtie paskaidrojumi palīdzēs atrisināt daudzus jautājumus, taču nav iespējams aprakstīt visas iespējamās nianses.

Kad esat pievienojis MPU-6050 savam Arduino, ieslēdziet to un lejupielādējiet I2C skenera koda skici.

Nokopējiet programmas kodu, ielīmējiet to tukšā skicē un palaidiet to. Atvērt seriālu Arduino monitors IDE (Rīki-> Seriālais monitors) un pārliecinieties, vai ir izveidots savienojums ar 9600 (apakšējā kreisajā stūrī).

Ja visu izdarījāt pareizi, I2C ierīce ir jāatrod un jāpiešķir adrese 0x68 vai 0x69. Pierakstīt. Ja parādās kļūdas, pārbaudiet savienojumu.

Tagad jums ir jāaugšupielādē skice, kas apstrādā informāciju no akselerometra/žiroskopa. Internetā ir vairāk nekā viena līdzīgu skiču versija, mēs iesakām izmantot šo. Pēc tam, kad sekojat saitei, noklikšķiniet uz “Lejupielādēt ZIP kodu”. Pēc lejupielādes izpakojiet arhīvu. Pēc tam atveriet Arduino IDE. Dodieties uz skice->importēt bibliotēku -> pievienot bibliotēku. Jums būs jāpievieno abas mapes: I2Cdev un MPU6050.

Kad esat instalējis bibliotēkas, atveriet failu MPU6050_DMP6 (MPU6050 -> Piemēri). Iesaku to noskatīties pat tad, ja neko īpaši nepārzini. Ja esat piešķīris adresi 0x69, koda augšpusē ir jāatsauc viena rindiņa (pēc #includes), jo noklusējuma vērtība ir 0x68. Tagad programmai vajadzētu kompilēt.

Lejupielādējiet programmu, atveriet seriālā monitora logu (šoreiz ar 115200) un izpildiet norādījumus. Apsveicam, jo ​​tagad jums vajadzētu būt iespējai iegūt vērtības no akselerometra / žiroskopa, izmantojot Arduino!

Tagad palaidiet kalibrēšanas skici, kuru var lejupielādēt šeit: MPU6050_calibration.ino (atkal noklusējuma ports ir 0x68, bet jūs varat to mainīt). Ierakstiet saņemtos nobīdes datus. Jūs izmantosit šos datus MPU6050_DMP6 skicē (un turpmākajā kvadrokoptera programmā).

Tagad jums ir darbojošs, noteikti noderīgs akselerometrs/žiroskops.

Savienojuma izveide ar Arduino

Mēs apskatījām akselerometra pievienošanu. Nākamais solis ir panākt, lai Arduino vadītu motorus. Arduino plate nenodrošina izvadi liela nozīme strāva un spriegums, tāpēc tā vietā, lai savienotu motorus tieši ar plates digitālajām izejām, mēs izmantojam tranzistorus, lai "pastiprinātu" spriegumu.

Sāksim elektriskās ķēdes montāžu. Šajā posmā mums būs nepieciešams Arduino, motori, tranzistori (shēmas plate un savienotāji). Savienojuma shēma ir dota zemāk, zem nepieciešamajiem teksta paskaidrojumiem. Pievienojiet četras PWM izejas (uz Arduino atzīmētas ar ~) ar tranzistoru, kā parādīts attēlos. Pēc tam pievienojiet savienotājus motoriem, kas ir pievienoti strāvas avotam. Iepriekš minētajā kvadrokoptera projektā tika izmantots 5V barošanas avots, taču vajadzētu darboties arī 3-5V akumulatoram.

Pārliecinieties, vai tranzistori ir iezemēti un Arduino zemējums ir savienots ar zemi no barošanas avota. Pārliecinieties, vai motora rotori griežas pareizajā virzienā (tiem jāspēj pacelt kvadrokopteri, nevis ripot). Ja pārslēdzat motora tapu no 5V uz tranzistoru, motora rotors sāks griezties pretējā virzienā. Pēc konfigurēšanas jums vairs nebūs jāmaina motoru griešanās virziens. Mēs mainīsim tikai ātrumu.

Pēc akselerometra palaišanas un testēšanas viss ir jāinstalē uz ProtoBoard (varat izmantot shēmas plati, uz kuras jūs lodējat sliedes uzstādīšanai Arduino. Varat iet pa elegantāko ceļu un iegādāties Proto Shield). Nevajadzētu pielodēt tranzistoru uz prototipēšanas dēļa. Tam labāk izmantot ligzdu ar kontaktiem, lai jebkurā brīdī varētu to nomainīt.

Mūsu gadījumā mēs pielodējām akselerometru pie tāfeles un tikai pēc tam veicām kalibrēšanu. Bet prakse rāda, ka tas nav pilnīgi pareizi. Lai palielinātu žiroskopa/akselerometra rādījumu precizitāti, labāk vispirms to kalibrēt uz līdzenas virsmas un tikai tad lodēt.










Ja neesat pazīstams ar šiem kontrolieriem, varat lasīt par PID vadību vietnē Wiki. Arduino PID klase izmanto trīs ievades: uzdoto vērtību, mērījumu un izvadi. Izvade ir atkarīga no pašreizējās pozīcijas un mērījumiem. PID regulators mēģina mainīt izvadi tā, lai mērījumi atbilstu mērķa pozīcijai. Algoritmā tiek izmantota interesanta matemātika. PID kontroles algoritms mēģina darboties tā, lai vērtības paliktu pēc iespējas stabilākas.

Mūsu algoritms stabilizēšanai izmanto divus PID regulatorus: vienu piķim un otru ripināšanai. 1. un 2. dzenskrūves griešanās ātruma atšķirība būs tāda pati kā 3. un 4. dzenskrūves ātruma atšķirība. Tāpat arī pāriem 1,3 un 2,4. Pēc tam PID regulators maina ātruma starpību, panākot piķi un ripošanu līdz nullei.

Neaizmirstiet pārbaudīt, kuras Arduino digitālās tapas nonāk motoros, un attiecīgi mainiet skici.

Turpmāka kvadrokoptera modernizācija, izmantojot Arduino


Galvenās problēmas ar nelielu kvadrokopteru ir tā izmaksas un svars. Var meklēt lielākus un jaudīgākus motorus, taču tas tā veiktspēju īpaši neuzlabos. Tas, kas jums patiešām palīdzēs (ja esat gatavs atdot vairāk naudas), ir bezsuku (vārstu) motori. Pēc raksturlielumiem tie ir par kārtu labāki, bet papildus tiem jāizmanto ātruma regulatori, kas padarīs kvadrokopteri dārgāku.

Lai samazinātu dizaina svaru, vislabāk ir izmantot Arduino Uno, jo šim kontroliera modelim varat noņemt “sašūto” mikroprocesora mikroshēmu un instalēt to tieši savā ProtoBoard. Rezultātā jūs pieņemsiet svaru par aptuveni 30 gramiem, kas šādā mērogā ir diezgan daudz. Turklāt jums būs jāizmanto vēl vairāki kondensatori utt. Vai kā Alternatīva iespēja, varat izmantot Arduino Pro Mini.

Arduino programmu, kas tika uzrakstīta un prezentēta iepriekšējā sadaļā, var viegli paplašināt un bagātināt ar papildu funkcionalitāti. Vissvarīgākais ir tas, ka šajā posmā kvadrokopteris jau var automātiski stabilizēt lidojumu. Ja vēlaties iestatīt tālvadības pulti, varat skatīties uz raidītājiem/uztvērējiem vai Bluetooth moduļiem. Kopumā jums tagad ir pamats, un ir vēl vairāk vietas turpmākai modernizācijai.

Atstājiet savus komentārus, jautājumus un dalieties Personīgā pieredze zemāk. Diskusijās bieži dzimst jaunas idejas un projekti!

Kvadrokopterim ir arī autonoma barošanas padeve. Šāda pašmāju izstrādājuma kopējās izmaksas ir aptuveni 60 USD.

Ja jums ir pamatīgāks daudzums, tad perspektīvāk ir aprīkot savu paštaisīto produktu ar motoriem bez birstēm ar atbilstošiem kontrolieriem.

Lidojuma stabilizēšanai tiek izmantots žiroskops un akselerometrs. Žiroskops ir nepieciešams, lai noteiktu kvadrokoptera slīpuma leņķi attiecībā pret zemes gravitāciju. Lai aprēķinātu paātrinājumu, ir nepieciešams akselerometrs.

Materiāli un instrumenti:
- litija baterijas (3,7 V);
- vadi;
- tranzistors ULN2003A Darlington Transistor (var izmantot jaudīgākus tranzistorus);
- dzinēju tips 0820 Coreless Motors;
- Arduino Uno mikrokontrolleris;
- MPU-6050 plate (tas ir gan žiroskops, gan akselerometrs);
- 3D printera pieejamība vai piekļuve tam;
- nepieciešamie instrumenti.

Ražošanas process:

Pirmais solis. Kvadrokoptera korpusa izveide
Korpuss tiek izgatavots ļoti ātri un vienkārši. Tas tiek drukāts, izmantojot 3D printeri. Šādā veidā izveidot rāmi ir labi, jo tas iznāk gaišs, tas viss pateicoties šūnveida apdrukai. Detaļu projektēšana notika Solidworks programmā. Izmantojot šo programmu, varat rediģēt korpusa parametrus un, ja nepieciešams, veikt tajā savas izmaiņas.




Pēc kvadrokoptera rāmja izdrukāšanas varat tiem uzstādīt motorus un lodēšanas vadus.




Otrais solis. Arduino savienošana
Kā pievienot MPU6050 plati, var redzēt zemāk esošajā diagrammā. Ir svarīgi to saprast Arduino bibliotēka nozīmē savienojumu caur šiem kontaktiem. Ja tiek izmantota cita ražotāja ķēde, ir svarīgi nodrošināt, lai kontakti būtu sakārtoti tādā pašā secībā.


Plates barošanai tiek izmantots tikai 3,3 V; ja barosiet to ar 5 V, tas tiks bojāts. Dažām MPU6050 platēm ir drošinātājs, kas pasargā sistēmu no augstsprieguma, bet labāk neriskēt. Ja platei ir AD0 tapa, tai jābūt savienotai ar zemējumu (GND). Šajā gadījumā VIO ir savienots ar AD0 tapu tieši uz plates, tāpēc nav nepieciešams pievienot AD0 tapu.












Lai Arduino vadītu motorus, būs nepieciešami tranzistori, pateicoties kuriem būs iespējams pievadīt motoriem augstu spriegumu. Sīkāk diagrammā varat redzēt, kā visi elementi ir savienoti.

Trešais solis. Skice priekš Arduino
Kad MPU-6050 ir savienots ar Arduino, tas ir jāieslēdz un jālejupielādē I2C skenera koda skice. Tālāk jums ir jākopē programmas kods un jāielīmē tas tukšā skicē. Pēc tam jums ir jāatver Arduino IDE seriālais monitors (Rīki-> Seriālais monitors) un jāpārliecinās, vai 9600 ir pievienots.
Ja viss ir izdarīts pareizi, I2C ierīce tiks noteikta, tai tiks piešķirta adrese 0x68 vai 0x69, tā ir jāpieraksta.
Pēc tam tiek ielādēta skice, kas apstrādā informāciju no žiroskopa un akselerometra. Internetā to ir daudz, taču vislabāk to izmantot.


Pēdējā posmā jums būs jākalibrē žiroskopa un akselerometra vērtības. Lai to izdarītu, jums jāatrod līdzena virsma un jānovieto uz tās MPU6050. Pēc tam tiek palaists kalibrēšanas skice, iegūtie noviržu dati tiek reģistrēti un pēc tam izmantoti MPU6050_DMP6 skicē.

Ceturtais solis. Programma Arduino
Pateicoties ievietotajai programmai, kvadrokopteris stabilizējas un karājas stabilā stāvoklī. Tālāk, izmantojot šo programmu, tiek vadīts kvadrokopteris.


Kvadrokoptera stabilizēšanai tiek izmantoti divi PID kontrolieri. Viens ir vajadzīgs piķim, bet otrs ripināšanai. Kontrolieris mēra dzenskrūvju griešanās ātrumu un, pamatojoties uz to, tiek vadīts kvadrokopteris.

Piektais solis. Kvadrakoptera modifikācija

Galvenā problēma ar mazu un lētu kvadrokopteru ir tā svars. Lai atrisinātu šo problēmu, jums jāinstalē jaudīgāki un vieglāki motori, vislabāk piemēroti bezsuku motori, tos sauc arī par vārstu motoriem. Tie ir daudz labāki par otām, taču tiem ir jāiegādājas arī ātruma regulatori, tāpēc pašmāju izstrādājumu izmaksas strauji pieaug.

Šajā rakstā mēs runāsim par kvadrokopteriem, kuru pamatā ir Arduino, to priekšrocībām un cenu kategorijām.

Kvadrakopteris ar datorierīces funkcijām.


IN mūsdienu pasaule Ir daudz dažādu kvadrokopteru modeļu, kas paredzēti izmantošanai dažādiem mērķiem. Tās nav tikai rotaļlietas, par kurām tās tika uzskatītas jau no paša sākuma, kad tās parādījās vietējā tirgū. Tagad tās ir ierīces, kas paredzētas dažādu veidu uzdevumu veikšanai. Tos daudzos gadījumos izmanto profesionālai radošai darbībai. Lai kvadrokopteris darbotos pareizi, tam ražošanā papildus pamatnei jābūt aprīkotam ar papildu detaļām. Lai ierīci varētu vadīt, izmantojot tālvadības pulti tālvadība uz tā ir nepieciešams uzstādīt procesoru un daudzas citas elektronikas sistēmas daļas. Mūsdienās ir liels skaits procesoru, kas tiek izmantoti, lai izveidotu augstas kvalitātes un funkcionālus kvadrokopterus. Starp tiem izceļas Arduino. Tas ir diezgan jaudīgs procesors, kas ļauj kvadrokopterim veikt dažas no datora ierīces funkcijām.

Mūsdienās kvadrokopteri, kas izmanto Arduino, var viegli iegādāties jebkurā tiešsaistes veikalā, kas specializējas šādu ierīču ražošanā. Pateicoties šim procesoram, tiek radītas vislielākās un jaudīgākās ierīces pēc tehniskajiem parametriem. Tie ir piemēroti visdažādākajiem uzdevumiem. Tie ir paredzēti gan regulāriem lidojumiem, gan profesionālai filmēšanai. Pateicoties jaudīgs procesors tie viegli izpilda visus lietotāju uzticētos uzdevumus. Datu apmaiņas ātrums ar tālvadības pulti ievērojami palielinās. Turklāt reāllaikā uzņemtie video tiek nekavējoties pārsūtīti uz mobilās ierīces, kas ir savienoti ar kvadrokopteru Šis brīdis. Jāpiebilst, ka daudzi lietotāji paši montē ierīces, kuru pamatā ir Arduino procesors. Tas ir pieejams gandrīz katrā specializētajā veikalā.

Uz Adruino bāzes veidota kvadrokoptera īpašības.


Arduino ierīces ir ļoti populāras, jo tās ir ļoti ērtas lietošanā. Šāda veida kvadrokopteri ātri veic visus lietotāju uzticētos uzdevumus. Ar šo procesoru iespējams iegūt kvalitatīvu ierīci, kas ļaus izbaudīt neierobežotas iespējas gan parasta lidojuma laikā, gan pat filmēšanas procesā. Attēli tiek iegūti ar augstu izšķirtspējas līmeni. Ierīces, kuru pamatā ir Arduino, darbojas nevainojami. Pateicoties šim procesoram, pati ierīce spēj veikt savu darbu ilgu laiku, un tās sistēma neizdosies. Ierīces ieslēgtas jaunākās versijas Arduinos nav budžeta. Taču tas ļauj lietotājiem iegūt profesionāla līmeņa kvadrokopterus, kas ātri un bez pārtraukuma veiks visus patērētāju uzticētos uzdevumus. Tas nodrošina drošu kvadrokoptera darbību.



Sveiki, Habro iedzīvotāji!
Šajā rakstu sērijā atvērsim kvadrokoptera vāku nedaudz vairāk, nekā to prasa hobijs, kā arī rakstīsim, konfigurēsim un palaidīsim savu programmu lidojuma kontrolierim, kas būs parasta Arduino Mega 2560 plate.

Mums priekšā:

  1. Pamatjēdzieni (kopteru pilotiem iesācējiem).
  2. PID kontrolieri ar interaktīvu tīmekļa demonstrāciju par darbību virtuālajā kvadrokopterā.
  3. Faktiskā programma Arduino un konfigurācijas programma Qt.
  4. Bīstami kvadrokoptera testi uz virves. Pirmie lidojumi.
  5. Avārija un zaudējums laukumā. Automātiskā meklēšana no gaisa, izmantojot Qt un OpenCV.
  6. Pēdējie veiksmīgie testi. Apkopojot. Kur doties?

Materiāls ir apjomīgs, bet mēģināšu ietilpt 2-3 rakstos.
Šodien gaidām: spoileris ar video, kā mūsu kvadrokopters lidoja; pamatjēdzieni; PID regulatori un to koeficientu izvēles prakse.

Priekš kam tas viss?

Akadēmiskā interese, kas, starp citu, vajā ne tikai mani (, ,). Un, protams, dvēselei. Man bija ļoti jautri strādājot un jutos patiesa, neaprakstāma laime, kad "IT" lidoja ar manu programmu :-)

Priekš kura?

Šis materiāls var interesēt arī cilvēkus, kuri atrodas tālu vai tikai plāno iesaistīties vairāku rotoru sistēmās. Tagad parunāsim par kvadrokoptera galveno sastāvdaļu mērķi, to mijiedarbību savā starpā, par lidojuma pamatjēdzieniem un principiem. Protams, visas mums nepieciešamās zināšanas ir atrodamas internetā, taču nevar piespiest tās meklēt plašajā internetā.

Neapdraudot izpratni par pamatjēdzieniem, varat izlaist visu, ko zināt, līdz nākamajam nepazīstamajam terminam, izcelts treknrakstā, vai uz nesaprotamu ilustrāciju.

NĒ #1!

Nesāciet rakstīt savu programmu lidojuma kontrolierim, kamēr neesat izmēģinājis gatavus risinājumus, kuru šobrīd ir diezgan daudz (Ardupilot, MegapirateNG, MiltiWii, AeroQuad utt.). Pirmkārt, tas ir bīstami! Ir nepieciešama prakse, lai vadītu kvadrokopteru bez GPS un barometra, un vēl jo vairāk tad, kad tas satricina, apgāžas vai nelido tieši tur, kur vajadzētu – un tas ir gandrīz neizbēgami pirmo testu laikā. Otrkārt, jums būs daudzkārt vieglāk programmēt, saprotot, kas ir jāprogrammē un kā tam galu galā vajadzētu darboties. Tici man: lidojuma matemātika ir tikai neliela daļa no programmas koda.

NĒ #2!

Neuzņemieties rakstīt savu programmu lidojuma dispečeram, ja netiecaties pēc akadēmiskām interesēm un jums ir nepieciešams tikai tas, ko jau sen ir spējuši jau gatavi risinājumi (lidot, fotografēt, filmēt, lidot tālāk). uzdevums utt.) Kamēr pats visu rakstīsi, tas prasīs ilgu laiku, pat ja neesi viens.

Pamatjēdzieni


Kvadrokopteri ir dažādu veidu, taču tos visus apvieno četri galvenie rotori:
Neskatoties uz šķietamo simetriju, pilotam ir ļoti svarīgi atšķirt, kur atrodas kvadrokoptera priekšpuse (apzīmēta ar bultiņu). Šeit, kā jau radiovadāmajos auto modeļos: kad tiek dota komanda “uz priekšu”, kvadrokopteris lido nevis tur, kur skatās pilots, bet gan tur, kur rāda kvadrokoptera iedomātais deguns. Tas ir pilns ar briesmām: iesācējiem var būt grūti atgriezt sev ierīci, kuru vējš ir satvēris, kaut kā pagriezts uz sāniem (mēs, protams, nerunājam par lidošanu pirmās personas kamerā un par "gudru". ” lidojuma režīmi, izmantojot kompasu un GPS.) Risinājums Šo problēmu daļēji var atrisināt ar priekšējās skrūves vai citas krāsas sijas, kaut kāda bumbiņa priekšā vai dažādu krāsu gaismas diodes. Bet tas viss izrādās bezjēdzīgi, kad pepelats strauji pārvēršas par punktu virs horizonta.

Mēs lidosim uz “X” formas kvadrokoptera rāmja, jo man labāk patīk tā izskats. Katram dizainam ir savas priekšrocības un mērķis. Papildus kvadrokopteriem ir arī citi multikopteri. Pat ja neskaita eksotiskas iespējas, to joprojām ir daudz!



Izdomāsim, kā mūsu kvadrokopters ir strukturēts iekšā un kas jādara lidojuma kontrolierim, kuru plānojam ieprogrammēt.




Leņķi gājiens, sānsvere un sānsvere (slīpums, gājiens, leņķis)- leņķi, pēc kuriem ir ierasts noteikt un iestatīt kvadrokoptera orientāciju telpā.


Dažreiz vārds "leņķis" tiek izlaists un viņi vienkārši saka: pitch, roll, yaw. Bet saskaņā ar Wikipedia tas nav pilnīgi precīzs. Kvadrokoptera lidojums vajadzīgajā virzienā tiek panākts, mainot šos trīs leņķus. Piemēram, lai lidotu uz priekšu, kvadrokopterim ir jāsasveras tāpēc, ka aizmugurējie motori griežas nedaudz spēcīgāk nekā priekšējie:

Gāzes kvadrokopters- vidējais aritmētiskais starp visu motoru griešanās ātrumiem. Jo vairāk gāzes, jo lielāka ir motoru kopējā vilce, jo vairāk tie velk kvadrokopteri uz augšu(NEDRĪKST UZ PRIEKŠU!!! “Čības grīdā” šeit nozīmē ātrāko kāpumu). Parasti mēra procentos: 0% - motori ir apturēti, 100% - griežas ar maksimālo ātrumu. Gāze lidinās- minimālais gāzes līmenis, kas nepieciešams, lai kvadrokopters nezaudētu augstumu.

Droseļvārsts, slīpums, gājiens, slīpums - ja jūs varat kontrolēt šos četrus parametrus, tad jūs varat kontrolēt kvadrokopteri. Tos dažreiz sauc arī par vadības kanāliem. Ja iegādājāties divu kanālu tālvadības pulti, jūs nevarēsit vadīt kvadrokopteri. Trīs kanālu ir vairāk piemērots maziem helikopteriem: jūs varat lidot bez sānsveres kontroles, bet tas nav ērti ar kvadrokopteru. Ja vēlaties mainīt lidojuma režīmus, jums būs jāpērk piecu kanālu tālvadības pults. Ja vēlaties kontrolēt kameras slīpumu un panoramēšanu, ir vēl divi kanāli, lai gan profesionāļi šim nolūkam izmanto atsevišķu tālvadības pulti.

Ir daudz lidojuma režīmu. Tiek izmantots GPS, barometrs un tālmērs. Bet mēs vēlamies ieviest pamata - stabilizācijas režīmu ( durt, stabilizēt, lidot “stubā”), kurā kvadrokopteris neatkarīgi no ārējiem faktoriem saglabā leņķus, kas tam tiek doti no tālvadības pults. Šajā režīmā, ja nav vēja, kvadrokopteris var karāties gandrīz savā vietā. Pilotam būs jākompensē vējš.

Skrūvju griešanās virziens nav izvēlēts nejauši. Ja visi motori grieztos vienā virzienā, radīto griezes momentu dēļ kvadrokopteris grieztos pretējā virzienā. Tāpēc viens pretējo motoru pāris vienmēr griežas vienā virzienā, bet otrs pāris otrā. Rotācijas griezes momentu rašanās efekts tiek izmantots, lai mainītu leņķa leņķi: viens motoru pāris sāk griezties nedaudz ātrāk nekā otrs, un tagad kvadrokopteris lēnām pagriežas pret mums (kādas šausmas):



  • LFW — griešanās pa kreisi pulksteņrādītāja virzienā (priekšējais pa kreisi, pulksteņrādītāja virzienā)
  • RFC — labā priekšējā griešanās pretēji pulksteņrādītāja virzienam (pa labi priekšā, pretēji pulksteņrādītāja virzienam)
  • LBC — griešanās pa kreisi pretēji pulksteņrādītāja virzienam (pa kreisi atpakaļ, pretēji pulksteņrādītāja virzienam)
  • RBW - pa labi atpakaļ pulksteņrādītāja virzienā (pa labi aizmugure, griešanās pulksteņrādītāja virzienā)

Kontrolē motoru griešanās ātrumu lidojuma kontrolieris (kontrolieris, smadzenes). Parasti tas ir mazs dēlis vai kaste ar daudzām ieejām un izvadēm. Ir milzīgs skaits dažādu kontrolieru ar dažādām iespējām, dažādu programmaparatūru un dažādiem uzdevumiem. Šeit ir tikai daži:




Lidojuma dispečera vispārējais uzdevums ir veikt vairākus desmitus reižu sekundē vadības ciklu, kas ietver: sensoru rādījumu nolasīšanu, vadības kanālu nolasīšanu, informācijas apstrādi un vadības signālu izsniegšanu dzinējiem, lai izpildītu pilota komandas. Tas ir tas, ko mēs plānojam.

Var izmantot daudz dažādu veidu sensorus. Visos kvadrokopteros izmantosim tos, kas jau kļuvuši gandrīz obligāti trīs asu žiroskops un trīs asu akselerometrs. Akselerometrs mēra paātrinājumu, žiroskops mēra leņķisko ātrumu. Pateicoties tiem, lidojuma kontrolieris zina pašreizējos slīpuma, sānsveres un leņķa leņķus. Šos sensorus var iebūvēt lidojuma kontrolierī vai ārējos. Trīs leņķu aprēķināšanas process, pamatojoties uz sensoru rādījumiem, ir atsevišķa raksta tēma. Bet mums tas šeit nav jāzina: MPU-6050 darīs visu mūsu vietā. Šī ir neliela tāfele, kas iekšēji veic nepieciešamos aprēķinus un filtrēšanu un rada gandrīz gatavus leņķus, izmantojot i2c protokolu. Mums atliek tikai tos saskaitīt, apstrādāt ar pārējiem datiem un dot motoriem vadības signālus.

Daudzkopteru motori patērē lielas strāvas, tāpēc lidojuma kontrolieris tos kontrolē nevis tieši, bet ar īpašu aparatūras draiveru palīdzību, ko sauc par ātruma regulatori (ESC, regulators, eska). Šos regulatorus darbina galvenais borta akumulators, vadības signāls tiek saņemts no kontrollera, un izejā tiem ir trīs vadi (A, B, C), kas iet tieši uz motoriem (katram motoram ir savs regulators !)




Komunikācijas “protokols” starp regulatoru un motoru mums nav tik svarīgs kā komunikācijas “protokols” starp lidojuma kontrolieri un regulatoru, jo mums ir programmatiski jāvada regulators no kontrollera. Ir regulatori, kurus vada caur i2c, bet visizplatītākie tiek vadīti ar kvadrātviļņu signālu, kura spriegums ir vismaz 0 volti un maksimums 3-5 volti (to sauc PWM vai PWM, un daži apgalvo, ka tas ir pareizāk - PPM. Sīkāka informācija, piemēram).

“Protokols” ir spēcīgs vārds: lai pavēlētu motoram griezties ar maksimālo ātrumu, kontrollerim ir jānosūta impulsi, kas ilgst 2 milisekundes, mijas ar loģisku nulli, kas ilgst 10–20 milisekundes. Impulsa ilgums 1 milisekunde atbilst motora apturēšanai, 1,1 ms - 10% no maksimālais ātrums, 1,2 ms - 20% utt. Praksē nulles ilgums nespēlē nekādu lomu, svarīgs ir tikai paša impulsa ilgums.

Neskatoties uz visu šķietamo vienkāršību, šeit notiek slazds: lidojumu kontrolieri ir dažādi dažādi iestatījumi, regulatori ir dažādi, un minimālais (1 ms) un maksimālais (2 ms) nav universāls. Atkarībā no daudziem faktoriem 1–2 ms diapazons faktiski var izrādīties 1,1–1,9 ms. Lai regulators un kontrolieris runātu absolūti vienā valodā, ir noteikta procedūra regulatora kalibrēšana. Šīs procedūras laikā vadības ierīču diapazoni tiek mainīti un kļūst vienādi ar kontrollera diapazonu. Procedūra ir iestrādāta katra kontrollera programmā un ietver vairākas vienkāršas darbības(soļi var atšķirties atkarībā no ražotāja — izlasiet instrukcijas!):

  • Izslēdziet strāvas padevi regulatoram.
  • Noņemiet dzenskrūvi no motora.
  • Ievadiet kontrollera ieejai signālu, kas atbilst maksimālajam griešanās ātrumam.
  • Pieslēdziet regulatoram strāvu. Motoram jāpaliek nekustīgam bez ārējas palīdzības.
  • Ievadiet kontroliera ieejai signālu, kas atbilst minimālajam griešanās ātrumam.
  • Apturiet 1-2 sekundes, pagaidiet raksturīgo čīkstēšanu.
  • Izslēdziet strāvas padevi regulatoram.

Pēc tam kontrollerī tiks ievadītas atbilstošās intervālu robežas. Mēģinot pacelties ar nekalibrētiem regulatoriem, sekas var būt negaidītas: no pēkšņas kvadrokoptera raustīšanās tuvākajā kokā līdz pilnīgai motoru nekustīgumam pie jebkuras droseļvārsta vērtības.

PWM izmanto tieši tādu pašu principu borta uztvērējs. Šis maza ierīce, saņemot radio vadības signālus no zemes un pārraidot tos uz lidojuma kontrolieri. Visbiežāk lidojuma kontrolierim katram vadības kanālam (droselei, solim, gājienam utt.) ir sava ieeja, kurai tiek piegādāts PWM. Mijiedarbības loģika ir vienkārša: komanda, piemēram, “70% droseļvārsts”, nepārtraukti iet no zemes uz uztvērēju, kur tā tiek pārveidota par PWM un, izmantojot atsevišķu vadu, tiek nosūtīta uz lidojuma kontrolieri. Tas pats ar piķi, ripošanu, griešanos.

Tā kā uztvērējam un kontrolierim ir savas draudzīgas PWM attiecības, tie arī būs jākalibrē: tālvadības pultis ar uztvērējiem atšķiras ar saviem darbības diapazoniem. Kontrolierim jāspēj pielāgoties. Procedūra radio kalibrēšana, atšķirībā no regulatoru kalibrēšanas, mums tas būs jāizveido pašiem kā daļa no lidojuma programmas. Vispārējais kalibrēšanas plāns ir šāds:

  • Katram gadījumam noņemiet dzenskrūves no motoriem.
  • Kaut kā ieslēdziet kontrolieri radio kalibrēšanas režīmā.
  • Kontrolieris sāk radio kalibrēšanu uz vairākiem desmitiem sekunžu.
  • Noteiktajā laikā pārvietojiet visas tālvadības pults sviras visos virzienos, līdz tās apstājas.
  • Kontrolieris atceras maksimumu un minimumu visiem kontroles kanāliem laikā iekšējā atmiņa gadsimtiem.
Tātad: radio kalibrēšanas laikā lidojuma kontrolieris atceras uztvērēja diapazonus visiem vadības kanāliem; ESC kalibrēšanas laikā lidojuma kontroliera diapazons tiek ievadīts visos ESC.

Papildus programmai lidojuma kontrolierim ir nepieciešama vēl viena programma: lidojuma kontroliera iestatīšanas saskarne. Visbiežāk tā ir datora programma, kas savienojas ar lidojuma kontrolieri caur USB un ļauj lietotājam konfigurēt un pārbaudīt lidojuma programmu, piemēram: palaist radio kalibrēšanu, konfigurēt stabilizācijas parametrus, pārbaudīt sensoru darbību, iestatīt lidojuma maršrutu. karti, noteikt multikoptera uzvedību signāla zuduma gadījumā un daudz ko citu. Mēs rakstīsim savu konfigurācijas interfeisu C++ un Qt valodās konsoles utilīta veidā. Lūk, ja paskatās nākotnē:




Neviens nav pasargāts no negadījumiem. Pat desmit collu plastmasas propelleri uz maziem motoriem var atstāt uz ādas asiņainus zilumus, kas sāpēs vēl nedēļu (pārbaudīts personīgi). Ir viegli izveidot sev jaunu grimu un frizūru, ja nospiežat tālvadības pults gāzes sviru, kamēr nēsājat ieslēgtu kvadrokopteri. Tāpēc lidojuma kontrolierim ir jānodrošina vismaz zināma drošība: mehānisms bruņots/atbruņots. Kvadrakoptera "atbruņots" stāvoklis nozīmē, ka motori ir izslēgti un pat pilna droseles komanda no tālvadības pults nedod nekādu efektu, lai gan tiek piegādāta jauda. Kvadrokoptera “bruņotais” stāvoklis nozīmē, ka komandas no tālvadības pults izpilda lidojuma kontrolieris. Šādā stāvoklī kvadrokopteri paceļas, lido un nolaižas. Kvadrokopteris ieslēdzas un nekavējoties jāpāriet atbruņotajā stāvoklī, ja neuzmanīgs pilots to ieslēdz, kad tālvadības pults droseles svira nav uz nulles. Lai pārslēgtu kopteri “bruņotā” stāvoklī, pilotam ir jāveic iepriekš saskaņots žests ar tālvadības pults svirām. Bieži vien šis žests ir dažas sekundes turēt kreiso nūju apakšējā labajā stūrī (drosele = 0%, leņķis = 100%). Pēc tam lidojuma kontrolieris veic vismaz minimālu pašpārbaudi un, ja tas sekmīgi iztur, " apbruņojas"(gatavs lidojumam!) Ar citu žestu (drosele = 0%, leņķis = 0%) kvadrokopters" kļūst atbruņots“Vēl viens labs drošības līdzeklis ir automātiskā atbruņošana, ja 2-3 sekundes gāze bija uz nulles.

Par motoriem, akumulatoriem, regulatoriem, propelleriem

Daudzkopteru komponentu izvēle ir tēma veselai rakstu sērijai. Ja gatavojaties taisīt savu pirmo kvadrokopteru, formulējiet, kam tas jums nepieciešams, un izmantojiet pieredzējušo padomus vai paņemiet sarakstu ar komponentiem, ko kāds cits ir sastādījis un veiksmīgi ar to lido.

Tomēr vispārējai izpratnei ir lietderīgi zināt galvenos punktus.

Baterijas


Amatieru un profesionāļu vidū visizplatītākās ir vairāku rotoru sistēmas litija polimēru baterijas, kā galvenie barošanas avoti borta elektronikai un motoriem. Tie atšķiras ar jaudu, spriegumu un maksimālo strāvas izvadi. Jauda, ​​kā parasti, tiek mērīta ampērstundās vai miliampērstundās. Spriegumu mēra akumulatora “šūnu” skaitā. Viena "kanna" ir vidēji 3,7 volti. Pilnībā uzlādēta "kanna" ir 4,2 volti. Visizplatītākās baterijas ir ar trīs līdz sešām šūnām. Maksimālo strāvas izvadi mēra ampēros un apzīmē, piemēram, šādi: 25C. C ir akumulatora ietilpība, 25 ir reizinātājs. Ja jauda ir 5 ampēri, tad šāds akumulators var piegādāt 25 * 5 = 125 ampērus. Protams, labāk ir ņemt pašreizējo izejas parametru ar rezervi, bet būtībā, jo lielāks tas ir, jo dārgāks ir akumulators. Marķējuma piemērs: 25C 3S 4500mah.

Katra banka ir atsevišķa baterija. Tie visi ir lodēti sērijveidā. Lai visas bankas uzlādētu vienmērīgi, tiek nodrošināts balansēšanas savienotājs ar pieeju katrai bankai atsevišķi, un īpašs uzlādes ierīce.

Motori, propelleri, regulatori


Bezsuku motora galvenais parametrs ir tā kv. Tas ir apgriezienu skaits minūtē katram pielietotā sprieguma voltam. Visizplatītākie motori ir ar kv no 300 līdz 1100. Kv tuvāk 1000 parasti izvēlas mazajiem kvadrokopteriem (1-2 kilogrami plus 500 grami kravnesības) un tie ir aprīkoti ar plastmasas dzenskrūvēm līdz 12 collu diametrā. Lielajiem multikopteriem (labas un smagas foto-video tehnikas celšanai) vai ilgi lidojošām lidmašīnām (lidojuma laika rekordiem) parasti ir dzinēji ar zemu kv (300-500) un milzīgiem oglekļa dzenskrūvēm (15 - 20 collu diametrā). Kv nav vienīgais svarīgs parametrs motors: bieži var atrast veselas tabulas par motora jaudas un vilces atkarību no piegādātā sprieguma un uzstādītā dzenskrūves veida. Turklāt katrs motors ir paredzēts savam sprieguma diapazonam (akumulatora elementu skaitam) un savai maksimālajai strāvai. Ja ražotājs raksta 3-4S, to nevajadzētu lietot ar 5S baterijām. Tas pats attiecas uz regulatoriem.

Ja motors ir paredzēts strāvai līdz 30A, tad regulatoram jābūt paredzētam strāvai līdz 30 + 10A, lai novērstu pārkaršanu. Sliktas kvalitātes vai nepiemēroti regulatori var izraisīt tā sauktās "sinhronizācijas izslīdēšanas" un motora apstāšanos lidojuma laikā, un jūs atpazīsit citu vairāku rotoru terminu: " noķēra planētu"Cits svarīgs punkts- vadu biezums un kvalitāte. Nepareiza izmēra vads vai slikts savienotājs var izraisīt ugunsgrēku gaisā.

Kā redzat, ir daudz nianšu. Es pat neesmu uzskaitījis pusi no tiem, tāpēc ir diezgan grūti pašam izvēlēties komponentus savam pirmajam multikopterim.

Stabilizācijas matemātika, PID kontrolieri (PID)


Ja jūs nolemjat iekļūt multikopteros, tad agrāk vai vēlāk jums būs jātiek galā ar PID regulatora iestatīšanu, jo šis matemātiskais aparāts tiek izmantots gandrīz visos stabilizācijas uzdevumos: kvadrokoptera leņķu stabilizēšanai gaisā, lidojumam un pozīcijas turēšanai. izmantojot GPS, augstuma turēšana ar barometru, bezsuku mehānismi videokameras stabilizācija lidojuma laikā (kameras kardāna).

Nopērc divu asu kameras kardānu, ieliec tur, piemēram, GoPro, ieslēdz, un stabilizācijas vietā sanāk krampji, vibrācijas un raustīšanās, lai gan visi sensori ir kalibrēti un mehāniskās problēmas novērstas. Iemesls ir nepareizi PID regulatoru parametri.

Saliek multikopteri, kalibrē sensorus, regulatorus, radio, visu pārbauda, ​​mēģini pacelties, un gaisā ir tik blāvi, ka pat viegls vējiņš to apgriež. Vai arī otrādi: viņš ir tik ass, ka pēkšņi paceļas un bez atļaujas veic trīskāršu salto. Iemesls joprojām ir tas pats: PID regulatoru parametri.

Daudzām ierīcēm, kurās tiek izmantoti PID kontrolleri, ir iestatīšanas instrukcijas un pat vairākas papildus daudzām pašu lietotāju video instrukcijām. Bet, lai būtu vieglāk orientēties šajā daudzveidībā, ir lietderīgi saprast, kā šie regulatori darbojas iekšā. Turklāt mēs rakstīsim paši savu kvadrokopteru stabilizācijas sistēmu! Es ierosinu “izgudrot no jauna” un "uz pirkstiem", lai saprastu PID regulatora formula. Tiem, kas dod priekšroku sausai matemātiskajai valodai, iesaku Vikipēdiju, jo... krievu valodā materiāls vēl nav tik detalizēti izklāstīts.

Mēs apsvērsim kvadrokopteru divdimensiju telpā, kur tam ir tikai viens leņķis - apgāšanās leņķis un divi motori: pa kreisi un pa labi.




Lidojuma dispečers nepārtraukti saņem komandas no zemes: “ripināt 30 grādus”, “ripot -10 grādus”, “ripot 0 grādus (turiet horizontu)”; tā uzdevums ir pēc iespējas ātrāk un precīzāk tos veikt, izmantojot motorus, ņemot vērā: vēju, nevienmērīgu kvadrokoptera svara sadalījumu, nevienmērīgu dzinēju nodilumu, kvadrokoptera inerci u.c. Tādējādi lidojuma kontrolierim nepārtraukti jārisina problēma, kādu griešanās ātrumu piemērot katram motoram, ņemot vērā pašreizējo sānsveres leņķa vērtību un nepieciešamo. Nepārtraukti, protams, ir spēcīgs vārds. Tas viss ir atkarīgs no konkrētās aparatūras skaitļošanas iespējām. Uz Adruino ir pilnīgi iespējams iekļaut vienu apstrādes un vadības cikla atkārtojumu 10 milisekundēs. Tas nozīmē, ka reizi 10 milisekundēs tiks nolasīti kvadrokoptera leņķi, un, pamatojoties uz tiem, uz motoriem tiks nosūtīti vadības signāli. Šīs 10 milisekundes tiek sauktas regulēšanas periods. Skaidrs, ka jo mazāks, jo biežāk un precīzāk notiek regulējums.

Gāzes līmenis plūst no uztvērēja uz kontrolieri. Apzīmēsim to. Atgādināšu, ka šis ir vidējais aritmētiskais starp visu motoru griešanās ātrumiem, kas izteikts procentos no maksimālā griešanās ātruma. Ja un ir kreisā un labā motora griešanās ātrums, tad:




kur ir kvadrokoptera reakcija (spēks), kas rada griezes momentu sakarā ar to, ka kreisais motors griežas ātrāk nekā gāze, bet labais motors griežas tikpat lēnāk. var ņemt arī negatīvas vērtības, tad pareizais motors griezīsies ātrāk. Ja mēs iemācīsimies aprēķināt šo vērtību katrā apstrādes cikla atkārtojumā, tad mēs varēsim vadīt kvadrokopteri. Ir skaidrs, ka vismaz tam vajadzētu būt atkarīgam no pašreizējā gājiena leņķa () un vēlamā sānsveres leņķa (), kas nāk no vadības paneļa.

Iedomāsimies situāciju: tiek saņemta komanda “saglabāt horizontu” (= 0), un kvadrokopterim ir ritiens pa kreisi:




- atšķirība (kļūda) starp un , kuru kontrolieris cenšas samazināt.

Jo lielāka ir atšķirība starp vēlamo ripošanas leņķi un pašreizējo, jo spēcīgākai jābūt reakcijai, jo ātrāk jāgriežas kreisajam motoram attiecībā pret labo. Ja mēs to rakstām, izmantojot mūsu apzīmējumu:



Šeit P ir proporcionalitātes koeficients. Jo lielāks tas ir, jo spēcīgāka būs reakcija, jo asāk kvadrokopteris reaģēs uz novirzēm no vajadzīgā sānsveres leņķa. Šī intuitīvā un vienkāršā formula apraksta darbu proporcionālais kontrolieris. Lieta vienkārša: jo vairāk kvadrokopteris novirzās no vajadzīgās pozīcijas, jo grūtāk jāmēģina to atgriezt. Diemžēl šai formulai būs jābūt sarežģītai. Galvenais iemesls ir pārsniegums.

Dažu desmitu milisekunžu laikā (vairākas apstrādes cikla iterācijas) proporcionālā kontrollera ietekmē kvadrokopteris atgriezīsies vajadzīgajā (šajā gadījumā horizontālā) pozīcijā. Visu šo laiku kļūdai un pūlēm būs viena un tā pati zīme, lai gan to apjoms kļūs arvien mazāks. Ieguvis noteiktu pagrieziena ātrumu (leņķisko ātrumu), kvadrokopters vienkārši apgāzīsies uz otru pusi, jo neviens to neapturēs vajadzīgajā pozīcijā. Tā ir kā atspere, kas vienmēr vēlas atgriezties sākotnējā stāvoklī, bet, ja to atvelk un atlaidīsi, tā svārstīsies, līdz pārņems berzi. Protams, kvadrokopteri ietekmēs arī berze, taču prakse rāda, ka ar to ir par maz.

Šī iemesla dēļ proporcionālajam kontrollerim ir jāpievieno vēl viens termins, kas palēninās kvadrokoptera griešanos un novērsīs pārtēriņu (ripošanu pretējā virzienā) - sava veida berzes imitāciju viskozā vidē: jo ātrāk. kvadrokopters pagriežas, jo vairāk jāmēģina to apturēt, protams, saprātīgās robežās. Mēs apzīmējam griešanās ātrumu (kļūdas izmaiņu ātrumu) kā , tad:



kur D ir regulējams koeficients: jo lielāks tas ir, jo spēcīgāks ir apturēšanas spēks. No skolas fizikas kursa izriet neskaidras atmiņas, ka jebkura lieluma izmaiņu ātrums ir šī daudzuma atvasinājums attiecībā pret laiku:

.

Un tagad proporcionālais kontrolieris pārvēršas par proporcionāli diferenciālu (proporcionālais termins un diferenciālis):

.

Kļūdu ir viegli aprēķināt, jo katrā iterācijā mēs zinām un ; P un D ir parametri, kurus var konfigurēt pirms palaišanas. Lai aprēķinātu atvasinājumu (izmaiņu ātrumu), ir jāsaglabā iepriekšējā vērtība, jāzina pašreizējā vērtība un jāzina laiks, kas pagājis starp mērījumiem (kontroles periods). Un šeit tas ir - sestās klases skolas fizika (ātrums = attālums / laiks):

.

- regulēšanas periods; - kļūdas vērtība no iepriekšējās regulēšanas cikla iterācijas. Starp citu, šī formula ir vienkāršākais veids skaitliskā diferenciācija, un tā mums šeit ir diezgan piemērota.

Tagad mums ir proporcionāls diferenciālais kontrolieris plakanā bikopterā, taču joprojām ir vēl viena problēma. Ļaujiet kreisajai malai svērt nedaudz vairāk nekā labā, vai, kas ir tas pats, kreisais motors darbojas nedaudz sliktāk nekā labais. Kvadrokopters ir nedaudz sasvērts pa kreisi un negriežas atpakaļ: diferenciāļa loceklis ir nulle, un ar proporcionālo daļu, lai arī tam ir pozitīva vērtība, nepietiek, lai atgrieztu kvadrokopteru horizontālā stāvoklī, jo kreisā mala nedaudz sver. vairāk nekā labējie. Rezultātā kvadrokopteris vienmēr vilksies pa kreisi.

Ir nepieciešams mehānisms, lai uzraudzītu šādas novirzes un tās labotu. Šādu kļūdu raksturīga iezīme ir tā, ka tās laika gaitā izlabojas. Neatņemams termins nāk palīgā. Tas saglabā visu kļūdu summu visās apstrādes cilpas iterācijās. Kā tas palīdzēs? Ja nelielas kļūdas labošanai ar proporcionālo termiņu nepietiek, bet tā tomēr pastāv, pakāpeniski, laika gaitā integrāļa loceklis iegūst spēku, palielinot reakciju un kvadrokopteris uzņem nepieciešamo sānsveres leņķi.

Šeit ir kāda nianse. Pieņemsim, ka tas ir 1 grāds, kontroles cikls ir 0,1 s. Tad vienā sekundē kļūdu summa būs 10 grādi. Un, ja apstrādes cikls ir 0,01 s, tad apjoms palielināsies pat par 100 grādiem. Lai vienā un tajā pašā laikā integrāļa loceklis iegūtu vienādu vērtību dažādiem regulēšanas periodiem, mēs reizinām iegūto summu ar pašu regulēšanas periodu. Ir viegli aprēķināt, ka abos gadījumos no piemēra tiek iegūta 1 grāda summa. Šeit tas ir - integrālais termins (pagaidām bez regulējama koeficienta):

.

Šī formula ir nekas cits kā funkcijas skaitlisks integrālis laika gaitā intervālā no nulles līdz pašreizējam brīdim. Tāpēc terminu sauc par integrālu:

,

kur T ir pašreizējais laika moments.
Ir pienācis laiks pierakstīt galīgo formulu proporcionālā-integrālā-atvasinājuma kontrollerim:

,

kur ir viens no konfigurējamiem parametriem, no kuriem tagad ir trīs: . Šo formulu ir ērti izmantot no programmas koda, bet šeit ir formula, kas dota mācību grāmatās:

.

Tam ir vairākas variācijas, piemēram, jūs varat ierobežot integrāļa termina moduli, lai tas nepārsniegtu noteiktu pieļaujamo slieksni (mēs to darīsim).

Prakse

Nu, tagad ir laiks praktizēt koeficientu atlasi. Lasītājiem tiek piedāvāta JavaScript lapa ar virtuālo kvadrokopteri, ko viņi jau redzējuši attēlos: PID regulatora parametru izvēle kvadrokopterim(JSFiddle). Pirmajā startā uzreiz redzama pārtēriņa – svārstības ap vajadzīgo pozīciju. Kad svārstības apstājas, var novērot efektu, ka proporcionālais koeficients nevar tikt galā ar kļūdu “asimetriskā” kvadrokoptera dēļ (noteikts ar izvēles rūtiņu “Asimetrija”). Pielāgošanai pieejamie parametri ir P, I, D. Tagad jūs zināt, ko ar tiem darīt. “Ritināšanu” zem kvadrokoptera var kontrolēt ar nepieciešamo ripojuma vērtību. “Intervāls (ms):” - regulēšanas intervāls. Tās samazināšana ir krāpšanās, bet redzēt, kā tas ietekmē stabilizācijas kvalitāti, ir ļoti noderīgi.

“Tīras” matemātikas cienītājiem mēs varam piedāvāt konfigurēt abstraktu PID kontrolieri

Ievadītie parametri netiek lietoti automātiski: jānoklikšķina uz “Lietot”. Pāris nelieli padomi: ja jums šķiet, ka kvadrokopters ir pārāk lēns, lai reaģētu uz vadību, varat palielināt P, bet pārāk liela P vērtība var izraisīt pārtēriņu. Parametrs D palīdzēs tikt galā ar pārsniegumu, bet pārāk lielas vērtības izraisīs biežas svārstības vai atkal pārsniegšanu. I parametrs parasti ir 10 - 100 reizes mazāks par parametru P, jo tā spēks slēpjas uzkrāšanā laika gaitā, nevis ātrā reaģēšanā.

Manuāla PID parametru regulēšana prasa praksi. To aprēķināšanai ir analītiskas metodes, taču tām ir nepieciešama laba sagatavošanās un precīzas zināšanas par daudziem konkrētās pielāgojamās sistēmas parametriem. Kā vidusceļš starp manuālo atlasi un analītisko aprēķinu ir plašs empīrisko metožu klāsts, ko piedāvā dažādi pētnieki.

Mūsu 2D kvadrokopterā mainās tikai viens leņķis – gājiena leņķis. Noskaņojot 3D kvadrokopteri, katram leņķim būs nepieciešami trīs neatkarīgi PID kontrolieri, un konkrēta motora vadība būs visu kontrolieru pūļu summa.

Pirmās daļas noslēgums

Šajā rakstā mēs iepazināmies ar pamatjēdzieniem: kvadrokopters un lidojuma princips, piķis, gājiens, pagrieziens, droseļvārsts, droseļvārsts, stabilizējiet lidojuma režīmu, lidojuma kontrolieris, žiroskops, akselerometrs, ātruma regulators, PWM, kontroliera kalibrēšana, radio kalibrēšana, borta uztvērējs, interfeiss lidojuma kontroliera iestatīšanai, bruņoti/izslēgti stāvokļi, automātiskā atbruņošana.

Pēc tam mēs no jauna izgudrojām formulu PID kontrolieris nedaudz pieskaroties skaitliskā diferenciācija un integrācija, un pieredzējis smags veids, kā konfigurēt parametrus P, es, D ieslēgts virtuālais kvadrokopteris .

Tagad, ja jums ir prasme programmēt gaismas zobenus, varat sākt savu kvadrakoptera stabilizācijas programmu vai, vēl labāk, pievienot jaunas idejas esošajām. atvērtais avots projektus. Nu pēc nedēļas vai divām, kad būs spēks un laiks pielīdzināt kvalitāti, turpināšu stāstu par to, kā tas viss tika ieprogrammēts, pārbaudīts, avarēja, sagrieza pirkstus un pilnībā aizlidoja nezināmā virzienā. Ja jūs patiešām vēlaties turpināt, varat sazināties ar mani šeit vai, piemēram, Vkontakte: tas dod nelielu stimulu.

Šīs daļas noslēgumā man vienkārši jāpiemin cilvēks, kurš man palīdzēja izvēlēties komponentus un iestatīt vissarežģītāko (pirmo!) kvadrokopteri MegapirateNG programmaparatūrai un pacietīgi atbildēja uz simtiem jautājumu par šiem ļoti pamatjēdzieniem: SovGVD, paldies! :-)

Kā atlīdzību tiem, kas varēja izšķērdēt visu šo lapu, es ievietoju apsolīto mazo video par to, kā mūsu kvadrokopteris ar mūsu “izgudrotajiem” PID kontrolieriem lido mūsu programmā Arduino Mega 2560:



Protams, ka trūkst GPS, kā jau komerciālajos un sērijveida produktos, nedaudz pietrūkst stabilitātes, bet tas ir MŪSU, un mēs to zinām no iekšpuses un ārpuses līdz pat pēdējam integrāļa koeficienta faktoram! Un tas ir patiešām forši, ka šādas tehnoloģijas mums ir pieejamas šodien.