Horia-Paul ION (87586) - Quadcopter

Adresă contact: horiapaulion@gmail.com

Introducere

Proiectul presupune dezvoltare unui controller de zbor pentru o dronă de tip quadcopter. Am construit si zburat deja propria dronă folosind un controller off-the-shelf. Scopul proiectului este de a descoperi ce presupune programarea unui astfel de dispozitiv și de a vedea cât de mult mă pot apropia de performanțele și funcționalitatea unui produs comercial.

Descriere generală

Controllerul de zbor va fi capabil de următoarele operațiuni (listate în ordinea priorității de implementare):

  1. Comandarea motoarelor prin intermediul ESC (Electronic Speed Control).
  2. Preluarea datelor unei telecomenzi radio prin intermediul unui receptor 2.4GHz conectat prin SPI.
  3. Echilibrarea în zbor folosind un algoritm PID cu date de la senzori de accelerație (accelerometru) și orientare (giroscop).

Schemă bloc

Proiectare hardware

Schemă electrică

Descrierea circuitului

Receptorul RF 2.4Ghz este legat la o interfață USART a micro-controller-ului. Transmisia de date se poate realiza într-un singur sens (de la receptor către controller).
Senzorul IMU (accelerometru + giroscop) este legat la interfața I2C a micro-controllerului.
Controlul motoarelor se realizează prin intermediul a 4 module ESC. Acestea sunt legate în paralel la bateriei LiPOo, circuitul BEC integrat furnizând tensiunea de alimentare (5V) necesară funcționării controllerului de zbor. ESC-urile sunt comandate folosind pulsuri PWM distincte generate de controller.

Listă componente hardware

DenumireCod
Kit dronă F450 (cadru, 4x ESC, 4x motor A2212 1000KV, elice)
Telecomadă RF 2.4GHzFlySky FS-i6X
Receptor RF 2.4Ghz (interfață USART)FlySky FS-X6B
Senzor accelerometru și giroscopGY-521 (MPU6050)
Baterie LiPo 3S 4200mAh

Proiectare software

Setup

Setarea micro-controller-ului pentru funcționarea în mod controller de zbor presupune:

  • Inițializare USART - 115200 8N1. Receptorul transmite noi valori primite de la transmițătorul RF la fiecare 7ms. Timpul lung de așteptare între mesaje (raportat la durata execuției unei iterații din bucla de control - 4ms) a condus la folosirea întreruperilor USART pentru semnalarea începutului unui mesaj (în defavoarea polling).
  • Inițializarea I2C în mod master (senzorul IMU funcționează în modul slave) și setarea parametrilor de funcționare (plaja de valori pentru măsuratori) în regiștrii senzorului.
  • Inițializarea PWM. Numărul mic de canale PWM și rezoluția limitată a timerelor 8bit a condus la implemetarea obligatorie a unei soluții de PWM software folosind timerul 16bit (250Hz). Soluția implementată se bazează pe întreruperi de ceas și ridică sau coboară pinii de output în regim round-robin la fiecare 16ms (75Hz) pentru generarea semnalului.
  • Calibrarea senzorului IMU. Calibrarea constă în măsurarea unui număr de sampleuri (2000) în stare de rapus și utilizarea mediei acestora pentru corectarea deviației senzorului.

Control

Fiecare iterație a algoritmului de control durează 4ms (bucla de control la 250Hz) și parcurge următorii pași:

  1. Citirea valorilor de accelerație și viteză angulară măsurați de senzorului IMU și filtrarea acestora.
  2. Stabilirea valorilor țintă de poziție sau viteză angulară (inputul pilotului).
  3. Rularea algoritmului PID pentru determinarea valorilor de corecție (diferența de viteză a motoarelor).
  4. Setarea noilor valori pentru viteza motoarelor.

Rezultate obținute

Proiectul a avut ca rezultat o dronă quadcopter radio-comandată capabilă de echilibrare în zbor (corectarea perturbațiilor externe și executarea comenzilor operatorului).
În viitor, dezvoltarea va urmări tunarea parametrilor PID și optimizarea secvențelor de cod pentru reducerea duratei unei iterații a buclei de control și, implicit, creșterea frecvenței algoritmului de control.

Bibliografie

Această pagină în format PDF

pm/prj2019/mandrei/quad.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0