This is an old revision of the document!
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:
Laboratoare folosite: UART (Lab 1), Intreruperi (Lab 2), Timere/PWM (Lab 3), SPI (Lab 5 - NRF24), I2C (Lab 6 - MPU).
Module si interactiuni:
Drona:
Telecomanda:
| Componenta | Descriere | Protocol / Pinout |
|---|---|---|
| Arduino Nano v3 (ATmega328P) | Microcontroller principal (Flight Controller) | - |
| Modul GY-521 (MPU6050) | Giroscop și accelerometru pe 3 axe | I2C: SDA, SCL |
| 2x Driver DRV8833 | Punte H dublă pentru controlul celor 4 motoare | PWM (4 pini de control) |
| 4x Motoare 820 Brushed | Motoare de propulsie de mare viteză | Conectate la DRV8833 |
| Modul NRF24L01 | Transreceptor wireless 2.4GHz | SPI: SCK, MISO, MOSI, CE, CSN |
| Modul Ridicător Tensiune 5V | Stabilizare alimentare pentru partea logică | USB Output / Vin |
| Baterie LiPo 500mAh 95C | Sursă principală de energie | Conector PH2.0 |
| Breadboard 400 puncte | Suport pentru prototipare rapidă | - |
| Fire Dupont | Conexiuni între module | - |
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.
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