Differences

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

Link to this comparison view

pm:prj2026:atoader:stefan.oprea1711 [2026/05/17 00:17]
stefan.oprea1711 [Schema bloc]
pm:prj2026:atoader:stefan.oprea1711 [2026/05/17 01:04] (current)
stefan.oprea1711 [Jurnal]
Line 53: Line 53:
 | 7 | **LiPo 1S 3.7V 500mAh 95C** | x1 | Sursă principală de energie | | 7 | **LiPo 1S 3.7V 500mAh 95C** | x1 | Sursă principală de energie |
 | 8 | **Arduino Uno NANO** | x1 | Remote controller | | 8 | **Arduino Uno NANO** | x1 | Remote controller |
-==== Schema ​bloc ====+==== Schema ​electrica ​====
  
 {{:​pm:​prj2026:​atoader/​schema_electrica_drona.png?​600|Schema electrica a dronei}} {{:​pm:​prj2026:​atoader/​schema_electrica_drona.png?​600|Schema electrica a dronei}}
  
-==== Detalii ====+=== Pini folositi ​===
  
-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 sagsce apar atunci când motoarele sunt la turație maximă.+^ 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.
  
-Modulele **DRV8833** sunt folosite în mod PWM pentru a controla viteza motoarelorDeș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.+Pentru NRF24L01+ am folosit pinii hardware SPI (PB3, PB4, PB5) deoarece SPI hardware este semnificativ mai rapid decât bit-bangingCE pe PD3 și CSN pe PD7 sunt pini digitali obișnuiți, aleși să nu intre în conflict cu timerele folosite ​pentru ​motoare.
  
-===== Software Design =====+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 50ms) se citesc datele de la MPU6050, se 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.
  
-Mediu de dezvoltare: **PlatformIO** / **Arduino IDE**.+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.
  
-Librării ​și surse 3rd-party planificate:​+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.
  
-* **RF24** - pentru gestionarea comunicației cu modulul NRF24L01 +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.
-* **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:​+===== Software Design =====
  
-* **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:​ +<note tip> 
- +Descrierea codului aplicaţiei ​(firmware): 
-* ''​readIMU()''​ - citește și filtrează datele de orientare +  mediu de dezvoltare ​(if any) (e.g. AVR Studio, CodeVisionAVR
-''​computePID()''​ - calculează corecția pentru fiecare axă +  librării şi surse 3rd-party ​(e.g. Procyon AVRlib
-''​updateMotors()''​ - scrie valorile PWM către driverele DRV8833 +  algoritmi şi structuri pe care plănuiţi să le implementaţi 
-''​receiveData()''​ - verifică dacă au sosit pachete noi de la telecomandă +  * (etapa 3surse şi funcţii implementate 
-''​failsafeCheck()''​ - oprește motoarele dacă nu există semnal radio+</​note>​
  
 ===== 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.1778966248.txt.gz · Last modified: 2026/05/17 00:17 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