This is an old revision of the document!
Drona cu sistem de echilibrare automat
Introducere
Proiectul Drone Stabilizer reprezintă construcția unei drone (quadcopter), bazată pe motoare cu perii (brushed), capabilă să își mențină echilibrul în aer în mod autonom. Nucleul proiectului din punct de vedere software este implementarea unui algoritm de control de tip PID (Proportional-Integral-Derivative) care procesează datele de la un senzor inerțial pentru a ajusta viteza motoarelor în timp real.
Functionalități principale:
stabilizarea automată pe axele Pitch, Roll și Yaw folosind giroscopul și accelerometrul
recepția comenzilor de zbor (throttle, direcție) prin protocol wireless de 2.4GHz
controlul turației celor 4 motoare prin semnale PWM transmise către punțile H
monitorizarea orientării dronei în timp real
gestionarea energiei pentru a asigura stabilitatea electronicii în timpul căderilor de tensiune ale motoarelor
Laboratoare folosite: UART (Lab 1), Intreruperi (Lab 2), Timere/PWM (Lab 3), SPI (Lab 5 - NRF24), I2C (Lab 6 - MPU).
Descriere generală
Schema Bloc
Module si interactiuni:
Drona:
ATmega328PB: unitatea centrală de procesare. Citește datele de orientare de la MPU6050, calculează unghiurile de înclinare, rulează algoritmii PID de stabilizare și ajustează viteza motoarelor în timp real prin semnale PWM. Primește comenzi de la distanță prin modulul NRF24 și gestionează comenziile primite de la remote controller.
MPU6050: senzorul IMU (Inertial Measurement Unit) care combină un giroscop pe 3 axe cu un accelerometru pe 3 axe. Giroscopul măsoară viteza unghiulară (grade/secundă), iar accelerometrul măsoară forțele liniare, inclusiv gravitația. La pornire, MCU-ul efectuează o calibrare pe 1000 de eșantioane pentru a elimina offset-urile statice. În zbor, datele brute sunt combinate printr-un filtru complementar: 96% giroscop (precizie pe termen scurt) și 4% accelerometru (corecție drift pe termen lung), rezultând unghiurile de roll, pitch și yaw. Comunicare prin I2C. Timer2 genereaza intreruperi o data la o milisecunda, cand se ruleaza PID-ul pentru a se corecta directia dronei.
NRF24: modulul de comunicație wireless care operează pe banda de 2.4GHz. Drona funcționează în modul receptor (listening), așteptând comenzi de la un remote controller. Prima comandă obligatorie este m — aceasta declanșează calibrarea MPU și permite pornirea motoarelor. Ulterior, avem comenzi de urcare, coborare, stanga, dreapta, fata si spate, dar si o comanda pentru oprire instanta a elicelor. Comunicare cu MCU-ul prin SPI.
Drivere MX1616H (x2): drivere de motor cu punte H dublă, fiecare controlând câte două motoare brushed. Primesc semnalul PWM de la MCU prin registrele OCR (Output Compare Register) ale timerelor hardware (Timer0 pentru motoarele stânga, Timer1 pentru motoarele dreapta) și translatează comenzile digitale în tensiune aplicată direct pe bobinele motoarelor. Direcția de rotație (CW/CCW) este setată la inițializare prin pinii de direcție ai porturilor C și D.
4 motoare brushed: dispuse în configurație quad — față-stânga (CCW), față-dreapta (CW), spate-stânga (CW), spate-dreapta (CCW). Sensurile alternante de rotație sunt esențiale pentru anularea momentului girroscopic și controlul yaw-ului. Viteza fiecărui motor este ajustată independent de algoritmul de stabilizare, câte 15 unități PWM per pas, clamped între 0 și 255.
Telecomanda:
Hardware Design
Lista de piese
| Nr. | Componentă | Cantitate | Rol în proiect |
| 1 | ATmega328PB | x1 | Flight Controller — unitatea centrală de procesare |
| 2 | MPU6050 — GY-521 | x1 | IMU cu giroscop și accelerometru pe 3 axe |
| 3 | MX1616H | x2 | Driver punte H — controlul motoarelor brushed |
| 4 | Motor brushed 820 | x4 | Propulsie — configurație quad |
| 5 | NRF24 | x2 | Transreceptor wireless 2.4GHz — primire, transmitere comenzi |
| 6 | Buck converter | x1 | Ridicător tensiune 3.7V → 5V pentru partea logică |
| 7 | LiPo 1S 3.7V 500mAh 95C | x1 | Sursă principală de energie |
| 8 | Arduino Uno NANO | x1 | Remote controller |
Schema bloc
Detalii
Deoarece motoarele brushed pot genera zgomot electric semnificativ, alimentarea este separată prin modulul step-up 5V, care protejează Arduino Nano de fluctuațiile de tensiune (voltage sags) ce apar atunci când motoarele sunt la turație maximă.
Modulele DRV8833 sunt folosite în mod PWM pentru a controla viteza motoarelor. Deși sunt punți H (capabile de inversare), în acest proiect sunt configurate pentru rotație într-un singur sens, optimizând eficiența pentru zbor.
Software Design
Mediu de dezvoltare: PlatformIO / Arduino IDE.
Librării și surse 3rd-party planificate:
* RF24 - pentru gestionarea comunicației cu modulul NRF24L01
* Wire - pentru comunicația I2C cu senzorul MPU6050
* PID_v2 (sau implementare custom) - pentru calculul buclelor de stabilizare
* MPU6050_light - pentru filtrarea datelor brute din accelerometru și giroscop
Algoritmi și structuri planificate:
* Filtru Complementar: Combină datele de la giroscop (precis pe termen scurt) cu cele de la accelerometru (precis pe termen lung) pentru a obține unghiul real de înclinație.
* Bucle PID: Trei instanțe separate de PID (pentru Roll, Pitch și Yaw).
* Mixer de Motoare: Algoritm care combină output-ul de Throttle (comanda utilizatorului) cu corecțiile PID pentru a seta valorile finale PWM pe fiecare motor.
Functii principale planificate:
* readIMU() - citește și filtrează datele de orientare
* computePID() - calculează corecția pentru fiecare axă
* updateMotors() - scrie valorile PWM către driverele DRV8833
* receiveData() - verifică dacă au sosit pachete noi de la telecomandă
* failsafeCheck() - oprește motoarele dacă nu există semnal radio
Rezultate Obţinute
Concluzii
Download
Jurnal
Bibliografie/Resurse
Resurse Hardware
Resurse Software