Montera, använd, utforska och utveckla minidrönare med hjälp av en komplett sats
Bidraget med av DigiKeys nordamerikanska redaktörer
2019-06-04
Rotordrönare med fyra rotorer (quadcopters) fyller en allt viktigare funktion för många olika tillämpningar. De är emellertid fortfarande komplexa och svåra att konstruera på grund av deras undersystem för mekanik, elektronik och programvara. Konstruktörer har självklart den kompetens som behövs, men en utvecklingssats för drönare kan ändå vara till stor hjälp eftersom de innehåller allt som behövs för att få erfarenhet av att flyga med drönare – både i teorin och i praktiken.
I denna artikel beskriver vi en utvecklingssats från STMicroelectronics med en minidrönare (quadcopter) som är enkel att montera men som ändå klarar av att demonstrera de komplexa flygstyrsystemen som finns i alla typer av flygfarkoster med flera rotorer.
Quadcopter-dynamik
I deras mest populära form erbjuder quadcopters en mycket stabil plattform för många olika tillämpningar som till exempel flygfotografi, fältinspektion och övervakning. Till skillnad mot flygplan med fast vinge – och även helikoptrar med sina rotorer med justerbar lutningsvinkel – är multirotordrönare med fast lutningsvinkel förhållandevis enkla att konstruera och tillverka tack vare det stora utbudet av små DC-motorer med hög verkningsgrad.
Den enkla mekaniken och aerodynamiska stabiliteten hos dessa drönare är till stor del resultatet av koordinerad användning av rotorerna för manövrering. I flygplan och helikoptrar utförs detta med flygytor (flygplan) eller huvudrotor och stjärtrotor (helikopter).
I en quadcopter roterar det motorpar som är placerat diagonalt mot varandra över skrovet i samma riktning (i motsatt rotationsriktning mot de andra två motorerna). Om samtliga fyra motorer roterar med samma varvtal kan drönaren stiga, sjunka eller sväva. Om ett av de diagonala paren roterar med högre varvtal än det andra paret kommer drönaren att gira, genom att rotera runt sin tyngdpunkt samtidigt som den är kvar i samma horisontalplan (figur 1, vänster).
Figur 1: Vid manövrering av drönare används olika kombinationer av rotorvarvtal – till exempel varvtalshöjning för båda motorerna i ett diagonalt par (M2, M4) i en gir (vänster) eller varvtalshöjning för den ena av ett par diagonala motorer (M2) och varvtalssänkning för den motstående motorn (M4) för att genomföra en komplexare roll under stigning (höger). (Bildkälla: STMicroelectronics)
Om hastigheten för främre (eller akter) rotorer ändras tippar drönaren uppåt eller nedåt som ett flygplan med fasta vingar som stiger eller sjunker under flygning. En liknande justering av motorparen på babord eller styrbord gör att drönaren rollar (dvs. roterar runt sin centrumlinje). Drönare kan enkelt utföra komplexare flygattityd (kombinationer av stigning, gir och roll) genom justering av det relativa varvtalet för ett diagonalt motorpar eller för en motor (figur 1, höger).
Drönarens flygstyrsystem reglerar varvtalet för lämpliga rotorer för att uppnå den flygattityd som krävs för att genomföra önskad manöver.
I praktiken måste styrsystemet konstant justera rotorvarvtalet inte bara för att till exempel utföra en sväng utan även för att under flygning korrigera för störande krafter som vind, termik eller turbulens. Även för minidrönare som används inomhus måste flygstyrsystemet kunna mäta skillnaden mellan drönarens faktiska attityd och dess önskade attityd.
För ingenjörer är problem med korrigering av rotorvarvtal efter felsignal ett bekant problem vid återkoppling av styrkrets som man löser med hjälp av en PID-styrenhet. Den enda återstående konceptuella utmaningen är att hitta en metod för att mäta drönarens attityd, men det problemet kan man enkelt lösa med hjälp av givare med hög precision som utför beräkningar av eulervinkel.
Eulervinklar representerar orientering i XYZ-planet för ett objekt i förhållande till ett xyz-referensplan, där de två planen korsar varandra längs en linje N (figur 2). Definition för eulervinklar:
- α: vinkel mellan x-axel och N
- ß: vinkel mellan z- och Z-axel
- γ: vinkel mellan N och X-axel
Figur 2: Eulervinklar (α, ß, γ) beskriver den relativa orienteringen för en roterad referensram (XYZ) i förhållande till en fast referensram (xyz) som korsar linje N. (Bildkälla: Wikimedia Commons CC BY 3.0)
För ett flygstyrsystem överensstämmer objektplan och referensplan direkt med drönarens aktuella orientering (XYZ) och dess önskade attityd (xyz). Eulervinklarna indikerar vilken axiell rotation som krävs för att ta drönaren till önskad attityd. Mekaniska gyroskop har under många år levererat rådata som används för att fastställa aktuell orientering, men med accelerometrar och gyroskop med mikroelektromekaniskt system (MEMS) som har hög precision kan denna metod användas även i lätta minidrönare.
Nu för tiden förlitar sig drönare av alla former och storlekar på ett sensorbaserat referenssystem för attityd och kurs (AHRS) som tillhandahåller information om position till eulervinkelberäkningar. Eulervinklarna används för att generera den felsignal som den PID-styrenhet som styr motorvarvtalet behöver för att önskad flygmanöver ska kunna uppnås. Utmaningen ligger i att kunna implementera denna modell med programvara på en mobil plattform som klarar av att utföra beräkningar och motorkorrigeringar med nödvändig hastighet och precision.
STMicroelectronics minidrönarsats STEVAL-DRONE01 och tillhörande programvara är ett bra exempel på denna modell och fungerar som en utgångspunkt för utforskande av flygstyrsystem för drönare.
Flygfärdig minidrönarsats
I satsen STEVAL-DRONE01 finns alla komponenter som behövs för att bygga en liten quadcopter. Förutom plastramen innehåller satsen fyra sladdlösa DC-motorer (8520) (8,5 x 20 mm, 3,7 V) som var och en ger cirka 35 gram dragkraft när de ansluts till medföljande propellrar (65 mm). Motorer och propellrar levereras som två par, konfigurerade för respektive medurs och moturs rotation. När drönaren är komplett monterad med 3,7 V litiumjonpolymerbatteri (LiPo) har den en bruttovikt som understiger 70 gram, viket ger ett ungefärligt dragkraft-till-viktförhållande på 2:1 (detta är vad som föredras för drönare).
Förutom satsens mekaniska komponenter är dess viktigaste komponent kretskortet för flygstyrsystemet STEVAL-FCU001V1 från STMicroelectronics och associerat programvarupaket, vilka tillsammans säkerställer de egenskaper för flygstyrsystemet som vi nämnde tidigare. Flygstyrsystemets kretskort är ett sofistikerat, energieffektivt system med flera sensorer och BLE-konnektivitet (Bluetooth Low Energy) (figur 3).
Figur 3: Flygstyrsystem STEVAL-FCU001V1 från STMicroelectronics är ett komplett batteridrivet system med flera sensorer, BLE-konnektivitet och kapacitet att styra DC-motor. (Bildkälla: STMicroelectronics)
Kortet är uppbyggt kring en 32-bitars Arm® Cortex®-M4-baserad mikrostyrenhet STM32F401 från STMicroelectronics och innehåller tre olika MEMS-sensorer för mätning olika egenskaper relaterade till positionering och navigering av drönare, inklusive:
- Tröghetsmätningsenhet (IMU) LSM6DSL iNEMO från STMicroelectronics har integrerad accelerometer och gyroskop som behövs för AHRS-funktion
- Magnetometer LIS2MDL från STMicroelectronics tillhandahåller data för implementering av funktioner för riktningsdetektering
- Trycksensor LPS22HD från STMicroelectronics tillhandahåller data för fastställande av vertikal positionering (med 8 cm upplösning)
På sensoringångssidan ansluter flygstyrsystemets mikrostyrenhet STM32F401 med alla sensorer på delad SPI-buss. På motorns utgående sida ger mikrostyrenhetens generella timer TIM4 signal med pulsbreddsmodulering (PWM) som används för att styra portarna i MOSFET effekttransistorer STL6N3LLH6 från STMicroelectronics som driver drönarens DC-motorer.
Flygstyreenheten har två alternativ för mottagande av användarkontrollkommandon: du kan styra drönaren från smartphone med Bluetooth-anslutning genom att använda den inbyggda modulen SPBTLE-RF från STMicroelectronics. Denna innehåller också företagets sändtagare BlueNRG-MS med helt effektoptimerad Bluetooth-protokollstack. Du kan också använda dig av standard radiostyrning (RC) med fjärrkontroll med pulsbreddsmodulering. Slutligen har kortet en batteriladdare STC4054 (litiumjon) (IC) och LDO-regulator LD39015 från STMicroelectronics för att säkerställa bra batteri- och effekthantering.
Flygstyrsystemet stöder (som indikeras i figur 3) också anslutning till extern elektronisk varvtalsregulator (ESC) som STEVAL-ESC001V1 från STMicroelectronics. När systemet är utrustat med varvtalsregulator (ESC) kan det styra mer robusta trefasmotorer, vilket gör att flygstyrsystemet kan användas i kraftfullare quadcopters.
För att underlätta förberedelse av flygningen och själva styrningen levereras satsen förkonfigurerad för användning av Bluetooth-anslutning med mobilappen STDrone (Android) från STMicroelectronics. Appen är ett enkelt flygstyrsystem uppbyggt som en virtuell fjärrkontroll med ikoner och två virtuella joysticks (figur 4).
Figur 4: Mobilappen STDrone (Android) från STMicroelectronics är en virtuell fjärrkontroll för manövrering av minidrönare som är byggda med företagets utvecklingssats STEVAL-DRONE01. (Bildkälla: STMicroelectronics)
När drönaren är monterad kan du använda STDrone-appen för att starta och styra drönaren från din mobila enhet. Före start måste du placera drönaren på ett plant underlag och trycka på appens kalibreringsikon tills denna lyser grön (indikerar att kalibrering är slutförd). Av säkerhetsskäl är drönarens motor inledningsvis avaktiverad (via programvaran), så att du måste klicka på en annan app för att aktivera den. I detta läge fungerar appen som en fjärrkontroll på vilken du kan manövrera virtuella joysticks för att justera drönarens rotorvarvtal och flygattityd.
Även om den mycket lätta STMicroelectronics saknar den massa och effekt som behövs för frekvent utomhusanvändning måste alla som flyger med minidrönaren utomhus följa flygbegränsningar i användningsområdet. Användare av minidrönare behöver vanligtvis inte genomgå licensierande operatörsutbildning eller registrera mycket små drönare i denna klass. Detta frigör dig inte från kravet att följa gällande lagar och regler.
Dessa lagar och regler gällande flyg omfattar till exempel siktlinje, max. 400 fot flyghöjd och respekterande av flygförbudszoner (till exempel inom 5 mile från en flygplats i USA eller 1 km i Storbritannien), undvika användning i närheten av sportevenemang eller räddningstjänst i arbete. Drönaroperatörer kan använda mobilappar som B4UFLY från (Federal Aviation Administration i USA) eller Drone Assist från NATS (National Air Traffic Agency) i Storbritannien, vilka båda tillhandahåller information om lokala luftrumsbegränsningar baserade på användarens GPS-platsdata.
Programvara för flygstyrsystem
För ingenjörer är en intressant egenskap hos flygstyrsystemet för STMicroelectronics drönarsats dess associerade programvarupaket, vilket STMicroelectronics tillhandahåller i en GitHub-katalog (öppen källkod). Applikationen är uppbyggd kring STMicroelectronics ramverk STM32Cube och lagerindelad på mellanprogramvara för Bluetooth-protokollstack och underliggande drivrutinslager. Detta drivrutinslager hanterar detaljer för maskinvaruinteraktion med hjälp av STM32Cube hårdvaruabstraktionslager (HAL) och STEVAL-FCU001V1 kortsupportpaket (BSP), vilket innehåller drivrutiner för kortenheter för flygstyrsystem beskrivna tidigare.
Applikationens programvaruarkitektur är uppbyggd kring tre separata moduler, en för varje fjärrkontroll, fastställning av läge samt PID-styrning (figur 5):
- Fjärrkontrollmodulen hanterar indata från mobilappen STDrone eller från en fjärrkontrollkonsol och samlar in datavärden från appen eller omvandlar pulsbreddsmoduleringsdata för fjärrkontrollen innan den omvandlar dessa värden till eulervinklar för önskad flygattityd.
- Lägesbestämningsmodulen samlar in data från accelerometer och gyroskop från LSM6DSL IMU att använda för fastställande av AHRS-läge som behövs för att beräkna eulervinklar för drönarens aktuella flygattityd. Data från magnetometer LIS2MDL och trycksensor LPS22HD samlas in men används inte för beräkningar i drönarens flygstyrsystem i den programvaruversion som fanns tillgänglig när detta dokument upprättades.
- PID-styrmodulen avslutar beräkning av lägesfel med hjälp av skillnaden mellan eulervinklar för önskad i förhållande till aktuell attityd. Med hjälp av konventionella metoder för PID-reglering använder denna modul den felsignalen för att justera varvtalet för varje motor för att ställa in drönaren på önskad attityd.
Figur 5: Funktionen för STMicroelectronics programvara för flygstyrsystem för minidrönare är uppbyggd kring separata moduler för hantering av indata från fjärrkontroll (blå lådor, märkta (1)), lägesbestämning (röda lådor, (2)) och PID-reglering (mörkblå låda, (3)). PID-regleringen styr därefter quadcopterns fyra motorer. (Bildkälla: STMicroelectronics)
Med hjälp av denna funktionsarkitektur kombinerar drönarens applikation dessa moduler i arbetsflödet som behövs för att översätta användarkommandon för manövrar till de justeringar av motorvarvtal som behövs för att utföra dessa manövrar (figur 6). Även om den övergripande funktionen är komplex är huvudloopen för uppdatering av flygstyrsystemets parametrar ganska enkel.
Figur 6: Programvara för flygstyrsystem för minidrönare från STMicroelectronics implementerar ett arbetsflöde som kontinuerligt läser av sensordata för att uppdatera drönarens aktuella flygattityd och justera varvtalet för drönarens fyra motorer, för att på så sätt uppnå önskad kombination av dragkraft, stigning, roll och gir. (Bildkälla: STMicroelectronics)
Efter en serie anrop för att initiera system för maskinvara och programvara intar huvudapplikationens rutin (main.c) en oändlig loop (lista 1). Inom denna huvudloop använder uppdateringsprocessen en serie anrop för att utföra viktiga styralgoritmer för flygstyrsystem som beskrevs tidigare.
Kopieranär (1) { . . .
om (tim9_event_flag == 1) { // Timer9 event: frekvens 800 Hz tim9_event_flag = 0; . . .
// AHRS-uppdatering, kvaterniondata och sanna gyrodata sparas i ahrs ahrs_fusion_ag(&acc_ahrs, &gyro_ahrs, &ahrs); // Beräkna eulervinkel för drönare QuaternionToEuler(&ahrs.q, &euler_ahrs); #ifdef REMOCON_BLE gRUD = (joydata[2]-128)*(-13); gTHR = joydata[3]*13; gAIL = (joydata[4]-128)*(-13); gELE = (joydata[5]-128)*13; /* joydata[6]: sökfältdata*/ /* joydata[7]: data för första bit för extra knapp: Start (0 = Landa, 1 = Starta) andra bit: Kalibrering när den ändrar status är aktiv tredje bit: Armera (0 = Ej armerad, 1 = Armerad) */ gJoystick_status = joydata[7]; om ((gJoystick_status&0x04)==0x04){ rc_enable_motor = 1; fly_ready = 1; BSP_LED_On(LED2); } annars { rc_enable_motor = 0; fly_ready = 0; } om (ansluten){ rc_connection_flag = 1; /* BLE Remocon connected flag for enabling motor output */ SendMotionData(); SendBattEnvData(); SendArmingData(); } annars{ rc_connection_flag = 0; gTHR=0; rc_enable_motor = 0; fly_ready = 0; BSP_LED_Off(LED1); BSP_LED_Off(LED2); } om (joydata[7]&0x02){ rc_cal_flag = 1; BSP_LED_On(LED1); } #endif #ifdef REMOCON_PWM . . .
#endif // Hämta eulervinkel för mål från fjärrkontroll GetTargetEulerAngle(&euler_rc, &euler_ahrs); . . .
FlightControlPID_OuterLoop(&euler_rc_fil, &euler_ahrs, &ahrs, &pid); . . .
} . . .
}
Inom denna loop fungerar mikrostyrenhetens general purpose-timer TIM9 som en händelseflagga för styrning av uppdateringshastighet. När tidtagning av uppdatering startas anropar huvudloopen AHRS uppdateringsrutin, ahrs_fusion_ag(), vilken använder senast tillgängliga data från accelerometer (acc_ahrs) och gyroskop (gyro_ahrs) för att utföra de beräkningar av sensorfusion som ingår i uppdateringen. Resulterande data (i kvaternionformat) används sedan av rutinen QuaternionToEuler() för att beräkna eulervinklar för drönare aktuella flygattityd.
Vid detta tillfälle i huvudloopen samlar appen in data om önskad flygattityd med hjälp av Bluetooth-data, förutsatt att Bluetooth är aktiverat (#ifdef REMOCON_BLE) eller att extern fjärrkontroll är aktiverad. Här uppdaterar koden fyra variabler som speglar konventionella fjärrkontrolldata: gRUD (roderläge, eller gir), gAIL (läge för skevningsroder, eller roll), gELE (läge för höjdroder, eller stigning) och gTHR (gasreglageläge). Efter insamling av dessa data använder loopen rutinen GetTargetEulerAngle() för att beräkna eulervinklar för önskad flygattityd enligt kommando från drönarens operatör. Innan denna beräkning visar emellertid detta avsnitt av loopen en funktion med mycket stor vikt för drönarens operatör. Om Bluetooth-anslutningen av någon anledning bryts stänger koden av motorerna, vilket betyder att drönaren faller okontrollerat mot marken. Ett tydligt men icke-trivialt programvarutillägg kan använda data för magnetometer LIS2MDL och trycksensor LPS22HD för att ta drönaren tillbaka till dess startpunkt och landa den kontrollerat innan motorerna stängs av.
Huvudloopen avslutas slutligen med ett anrop till FlightControlPID_OuterLoop() vilken uppdaterar PID-styrenhetens målvärden. FlightControlPID_innerLoop() körs separat som en del av en driftsekvens som utförs vid motanrop till avbrott associerat med timerhändelse för TIM9, vilken är programmerad att köra vid 800 Hz. Vid varje avbrott läser motanropsrutinen av sensorerna, filterar rådata och uppdaterar FIFO-buffertar (först in först ut) associerade med variabler acc_ahrs and gyro_ahrs nämnda tidigare som en del av huvudloopen. Genom att använda dessa uppdaterade data om drönarens aktuella flygattityd anropar motanropsrutinen FlightControlPID_innerLoop(), vilken beräknar nya pulsbreddsmoduleringsvärden för varje motor. Motanropet slutför uppdateringsprocessen genom att anropa set_motor_pwm(), vilken ställer in mikrostyrenhetens utgång för pulsbreddsmodulering till nya värden.
Utvecklare kan enkelt undersöka alternativa flygstyrsystemscenarier genom att modifiera programvarupaketet (öppen källkod) med ett antal verktygskedjor inklusive IAR Embedded Workbench för ARM, KEIL RealView utvecklingssats för mikrostyrenhet för STM32 och STMicroelectronics egna Windows-baserade System Workbench (gratis) för STM32 integrerad utvecklingsmiljö (IDE). Efter kompilering av den modifierade koden kan utvecklare läsa in sin fasta programvara i flygstyrsystemet med en STMicroelectronics ST-LINK/V2 In-Circuit-avbuggare och programmerare eller STMicroelectronics STM32 Nucleo utvecklingskort anslutet till JTAG Serial Wire Debug (SWD) adapterkort som medföljer satsen.
Slutsatser
Tack vare deras enkla mekaniska konstruktion har multirotordrönare blivit ett populärt alternativ för flygfotografi, fältinspektion, övervakning och många andra tillämpningar. Med hjälp av styralgoritmer från smarta sensorer använder sig dessa drönare av sofistikerad programvara för flygstyrsystem som stöder stabil drift och svarar snabbt på operatörens kommandon.
Även om utvecklare kan hitta och montera nödvändiga mekaniska och elektriska komponenter samt nödvändiga programvarukomponenter själva fungerar en utvecklingssats för minidrönare från STMicroelectronics som en enkel introduktion till konstruktion och användning av minidrönare. Genom att undersöka och även modifiera associerad programvara (öppen källkod) för flygstyrsystem kan utvecklare snabbt få erfarenhet av attityd och styralgoritmer för multirotordrönare.
Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.




