Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2026:atoader:stefan.oprea1711 [2026/05/16 23:57]
stefan.oprea1711 [Descriere generală]
pm:prj2026:atoader:stefan.oprea1711 [2026/05/17 01:04] (current)
stefan.oprea1711 [Jurnal]
Line 41: Line 41:
 ===== Hardware Design ===== ===== Hardware Design =====
  
-Sistemul este alimentat de o baterie LiPo de 500mAh (95C), capabilă să furnizeze curentul ridicat necesar motoarelor. Un modul ridicător de tensiune (step-up) asigură o alimentare constantă de 5V pentru Arduino și senzori. 
  
 ==== Lista de piese ==== ==== Lista de piese ====
  
-Componenta ​Descriere ​Protocol / Pinout ​+Nr. Componentă ​Cantitate ^ Rol în proiect ​
-Arduino Nano v3 (ATmega328P) ​Microcontroller principal (Flight Controller) | - +1 | **ATmega328PB** | x1 | Flight Controller ​— unitatea centrală de procesare ​
-Modul GY-521 ​(MPU6050) ​Giroscop ​și accelerometru pe 3 axe | I2C: SDA, SCL +2 | **MPU6050 — GY-521** | x1 IMU cu giroscop ​și accelerometru pe 3 axe | 
-2x Driver ​DRV8833 | Punte dublă pentru ​controlul ​celor 4 motoare ​PWM (pini de control) ​| +3 | **MX1616H** | x2 | Driver ​punte — controlul ​motoarelor brushed | 
-| 4x Motoare ​820 Brushed ​Motoare de propulsie de mare viteză ​Conectate la DRV8833 ​+| 4 | **Motor brushed ​820** x4 Propulsie — configurație quad 
-Modul NRF24L01 ​| Transreceptor wireless 2.4GHz ​| SPI: SCK, MISO, MOSI, CECSN +5 | **NRF24** | x2 | Transreceptor wireless 2.4GHz ​— primiretransmitere comenzi ​
-Modul Ridicător ​Tensiune ​5V | Stabilizare alimentare ​pentru partea logică ​| USB Output / Vin +6 | **Buck converter** | x1 | Ridicător ​tensiune 3.7V → 5V pentru partea logică | 
-Baterie ​LiPo 500mAh 95C | Sursă principală de energie ​| Conector PH2.0 +7 | **LiPo 1S 3.7V 500mAh 95C** | x1 | Sursă principală de energie | 
-Breadboard 400 puncte ​Suport pentru prototipare rapidă ​+**Arduino Uno NANO** ​x1 | Remote controller ​
-| Fire Dupont | Conexiuni între module | - |+==== Schema electrica ====
  
-==== Schema ​bloc ====+{{:​pm:​prj2026:​atoader/​schema_electrica_drona.png?​600|Schema ​electrica a dronei}}
  
-{{:​pm:​prj2026:​student:​nanodrone_schema_electrica.png?​600|Schema electrica a dronei}}+=== Pini folositi ===
  
-==== Detalii ====+^ Componentă ^ Pin componentă ^ Pin ATmega328PB ^ Explicație ^ 
 +| MPU6050 | VCC | 5V | Modulul este alimentat la 5V | 
 +| MPU6050 | GND | GND | Masă comună | 
 +| MPU6050 | SDA | PC4 / SDA | Pin standard pentru date I2C | 
 +| MPU6050 | SCL | PC5 / SCL | Pin standard pentru clock I2C | 
 +| NRF24 | VCC | 3.3V | Modulul necesită alimentare la 3.3V | 
 +| NRF24 | GND | GND | Masă comună | 
 +| NRF24 | CE | PD3 | Chip Enable — activare modul RX/TX | 
 +| NRF24 | CSN | PD7 | Chip Select — selecție SPI | 
 +| NRF24 | SCK | PB5 / SCK | Clock SPI | 
 +| NRF24 | MOSI | PB3 / MOSI | Date SPI master → slave | 
 +| NRF24 | MISO | PB4 / MISO | Date SPI slave → master | 
 +| Motor față-stânga (CCW) | IN1 | PD2 | Control direcție — Driver MX1616H | 
 +| Motor față-stânga (CCW) | IN2 / PWM | PD5 | Semnal PWM — viteză motor | 
 +| Motor față-dreapta (CW) | IN1 | PC0 | Control direcție — Driver MX1616H | 
 +| Motor față-dreapta (CW) | IN2 / PWM | PB1 | Semnal PWM — viteză motor | 
 +| Motor spate-stânga (CW) | IN1 | PD4 | Control direcție — Driver MX1616H | 
 +| Motor spate-stânga (CW) | IN2 / PWM | PD6 | Semnal PWM — viteză motor | 
 +| Motor spate-dreapta (CCW) | IN1 | PC1 | Control direcție — Driver MX1616H | 
 +| Motor spate-dreapta (CCW) | IN2 / PWM | PB2 | Semnal PWM — viteză motor | 
 +| Buck converter | VIN | VBAT (LiPo) | Intrare 3.7V de la baterie | 
 +| Buck converter | VOUT | VCC placă | Ieșire 5V pentru partea logică | 
 +Pinii PC4 și PC5 au fost aleși pentru MPU6050 deoarece sunt pinii dedicați pentru I2C pe ATmega328PB. Comunicarea se face la 400kHz (fast mode) pentru a minimiza latența citirii datelor IMU.
  
-Deoarece motoarele brushed pot genera zgomot electric semnificativalimentarea ​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ă.+Pentru NRF24L01+ am folosit pinii hardware SPI (PB3PB4, PB5) deoarece SPI hardware ​este semnificativ mai rapid decât bit-banging. CE pe PD3 și CSN pe PD7 sunt pini digitali obișnuiți, aleși să nu intre în conflict cu timerele folosite pentru motoare.
  
-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.+Timer2 este configurat ​în mod CTC cu un prescaler de 64 și OCR2A = 249, ceea ce generează o întrerupere la fiecare 1ms. În ISR-ul acestui timer se incrementează contorul checkMpu. În bucla principală,​ la fiecare 50 de incrementări (adică la fiecare 50msse citesc datele de la MPU6050se calculează unghiurile prin filtrul complementar și se rulează cei 3 controlleri PID. Timer2 a fost ales pentru ​această sarcină tocmai pentru că Timer0 și Timer1 sunt ocupați cu PWM-ul motoarelor.
  
-===== Software Design =====+Timer0 este configurat în mod Fast PWM cu prescaler 8, generând semnal PWM pe OC0A (PD6) și OC0B (PD5) — folosiți pentru motoarele din stânga. Registrele OCR0A și OCR0B controlează direct ciclul de lucru, adică viteza fiecărui motor.
  
-Mediu de dezvoltare: **PlatformIO** / **Arduino IDE**.+Timer1 este configurat similar în mod Fast PWM pe 8 biți cu prescaler 64, generând semnal PWM pe OC1A (PB1) și OC1B (PB2) — folosiți pentru motoarele din dreapta. Registrele OCR1AL și OCR1BL sunt cele scrise ​de algoritmul de stabilizare la fiecare iterație PID.
  
-Librării și surse 3rd-party planificate:​+Direcția de rotație a fiecărui motor este setată o singură dată la inițializare prin pinii de direcție ai driverelor MX1616H, nu prin PWM. Algoritmul PID modifică doar viteza (registrele OCR), nu și direcția — motoarele brushed pe o dronă nu își inversează sensul în zbor normal.
  
-* **RF24** - pentru gestionarea comunicației cu modulul NRF24L01 +===== Software Design =====
-* **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 scurtcu cele de la accelerometru ​(precis pe termen lung) pentru a obține unghiul real de înclinație. +<note tip> 
-* **Bucle PID**: Trei instanțe separate de PID (pentru RollPitch și Yaw). +Descrierea codului aplicaţiei (firmware):​ 
-**Mixer de Motoare**: Algoritm care combină output-ul de Throttle ​(comanda utilizatoruluicu corecțiile PID pentru a seta valorile finale PWM pe fiecare motor. +  ​mediu de dezvoltare ​(if any) (e.g. AVR StudioCodeVisionAVR
- +  librării şi surse 3rd-party (e.g. Procyon AVRlib
-Functii principale planificate:​ +  algoritmi şstructuri pe care plănuiţi să le implementaţi 
- +  * (etapa 3surse şi funcţii implementate 
-''​readIMU()''​ - citește șfiltrează datele de orientare +</​note>​
-* ''​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 ===== ===== Rezultate Obţinute =====
 +
 +<note tip>
 +Care au fost rezultatele obţinute în urma realizării proiectului vostru.
 +</​note>​
  
 ===== Concluzii ===== ===== Concluzii =====
  
 ===== Download ===== ===== Download =====
 +
 +<note warning>
 +O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).
 +
 +Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:​pm:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul). **Exemplu:​** Dumitru Alin, 331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**.
 +</​note>​
  
 ===== Jurnal ===== ===== Jurnal =====
  
-===== Bibliografie/​Resurse =====+==Etapa 1 de Hardware== 
 +  * Am lipit pe o placa de prototipare buck converterul si driverele ca sa aibe gnd si vcc comun de la baterie. 
 +  * Am lipit pini pe o placa de prototipare pe care am bagat-o in placuta pentru a putea lipi in continuare fire. 
 +  * Am terminat de lipit tot ce era acolo dupa aproximativ 30 ore oneste de munca. 
 +  * Am reusit sa ansamblez drona si sa cuprind tot inauntrul ei. 
 +  * Momentan am reusit sa setez elicele in sensurile bune, deci se ridica de la sol, dar nu pentru mult timp, trebuie reglata software mult.
  
-==== Resurse Hardware ====+{{:​pm:​prj2026:​atoader:​da.jpeg?​500|}} 
 +{{:​pm:​prj2026:​atoader:​smek.jpeg?​500|}}
  
-* [[[https://​www.ti.com/​lit/​ds/​symlink/​drv8833.pdf](https://​www.ti.com/​lit/​ds/​symlink/​drv8833.pdf)|Datasheet DRV8833]] 
-* [[[https://​invensense.tdk.com/​wp-content/​uploads/​2015/​02/​MPU-6000-Datasheet1.pdf](https://​invensense.tdk.com/​wp-content/​uploads/​2015/​02/​MPU-6000-Datasheet1.pdf)|Datasheet MPU6050]] 
-* [[[https://​www.nordicsemi.com/​products/​nrf24l01](https://​www.google.com/​search?​q=https://​www.nordicsemi.com/​products/​nrf24l01)|Info NRF24L01]] 
  
-==== Resurse Software ==== 
  
-[[[https://github.com/nRF24/RF24](https://github.com/nRF24/​RF24)|Biblioteca RF24]] +===== Bibliografie/​Resurse ===== 
-[[[https://ocw.cs.pub.ro/courses/​pm/​lab/lab3-2023-2024](https://ocw.cs.pub.ro/courses/pm/lab/lab3-2023-2024)|PM Lab 3 PWM pentru control motoare]] + 
-[[[https://ocw.cs.pub.ro/courses/pm/lab/lab4-2023-2024](https://ocw.cs.pub.ro/courses/pm/lab/lab4-2023-2024)|PM Lab 4 I2C pentru IMU]]+==== Resurse hardware ==== 
 + 
 +  ​**ATmega328PB Xplained Mini** documentatie Microchip: ​https://www.microchip.com/en-us/development-tool/​ATMEGA328PB-XMINI 
 +  * **Modul GY-521 ​(MPU6050)**: ​https://sigmanortec.ro/Modul-giroscopic-si-accelerometru-3-axe-GY-521-p126016326 
 +  **Driver MX1616H**: De la Victor din laborator 
 +  * **Motor coreless 8x20mm 3.7V**: ​https://sigmanortec.ro/en/mini-coreless-motor-20x85-1mm-shaft-50000rpm-37v 
 +  * **Modul NRF24**: ​https://www.sigmanortec.ro/en/nrf24l01-24ghz-wireless-transceiver-module 
 +  **Modul ridicător tensiune 3.7V → 5V**: https://sigmanortec.ro/​en/​step-up-modules 
 +  * **Baterie LiPo 3.7V 95C 500mah**: https://​www.emag.ro/baterie-r-line-gens-ace-tattu-500-mah-3-7-v-95-c-multicolor-taa5001s95jsl/pd/DP84FRMBM/ 
 +==== Resurse software / scheme ==== 
 + 
 +  * EasyEDA ​realizare schema electrica: ​https://easyeda.com/ 
 +  * Arduino - citire accurate a sezorilor: https://forum.arduino.cc/​t/mpu6050-gyroscope-readings-are-drifting/​1113217/​10
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
 +
pm/prj2026/atoader/stefan.oprea1711.1778965038.txt.gz · Last modified: 2026/05/16 23:57 by stefan.oprea1711
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