Differences

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

Link to this comparison view

pm:prj2025:ajipa:jamal_samir.pirvu [2025/05/13 10:43]
jamal_samir.pirvu [Componente Principale]
pm:prj2025:ajipa:jamal_samir.pirvu [2025/05/30 09:30] (current)
jamal_samir.pirvu [Conexiuni Principale]
Line 8: Line 8:
   * Mișcare pe teren variat   * Mișcare pe teren variat
   * Controlul turetei pe două axe   * Controlul turetei pe două axe
-  * Mecanism de tragere activat de la distanță 
 Toate acestea sunt comandate printr-o interfață mobilă sau web. Toate acestea sunt comandate printr-o interfață mobilă sau web.
  
Line 15: Line 14:
   - Utilizatorul trimite comenzi pentru:   - Utilizatorul trimite comenzi pentru:
     * deplasare (W, A, S, D)     * deplasare (W, A, S, D)
-    * rotirea turetei (stânga/dreapta+    * rotirea turetei (J/L
-    * înclinarea turetei (sus/jos)+    * înclinarea turetei (I/K)
     * tragere (SPACE)     * tragere (SPACE)
 +    * frana (X)
   - Microcontrollerul interpretează comenzile și controlează motoarele și servomotoarele.   - Microcontrollerul interpretează comenzile și controlează motoarele și servomotoarele.
-  - Mecanismul de tragere este activat la comandă. 
  
 ===== Descriere Generală ===== ===== Descriere Generală =====
Line 40: Line 39:
   * **Șasiu imprimat 3D**   * **Șasiu imprimat 3D**
   * **Senile și roți pentru șasiu**   * **Senile și roți pentru șasiu**
-  * **Aplicație mobilă (MIT App Inventor) / Interfață Web** – control tanc. 
- 
 ===== Hardware Design ===== ===== Hardware Design =====
  
 ==== Conexiuni Principale ==== ==== Conexiuni Principale ====
-  ​* Motoare DC → Driver L298N → Arduino ​D3D6 + 
-  * Servomotor Pan → D9 +  ​* Motoare DC → Driver L298N → Arduino ​D2D5 
-  * Servomotor Tilt → D10 +      - IN1 → D2 (PD2) — Motor stânga înainte 
-  * Servomotor Tragere → D11 +      - IN2 → D3 (PD3) — Motor stânga înapoi 
-  * Bluetooth HC-05 → RX/TX sau SoftwareSerial +      - IN3 → D4 (PD4) — Motor dreapta înainte 
-  * ESP32/ESP8266 ​→ GPIO configurabil +      - IN4 → D5 (PD5) — Motor dreapta înapoi 
-  * Baterie ​→ Motoare & Microcontroller ​(cu regulator ​5V dacă este necesar)+      - PWM Motor Stânga → D9 (PB1 / OC1A) 
 +      - PWM Motor Dreapta → D10 (PB2 / OC1B) 
 + 
 +  * Servomotor Pan (Rotație turetă) ​→ D13 (PB5) 
 + 
 +  * Servomotor Tilt (Înclinare turetă) ​→ D12 (PB4) 
 + 
 +  * Servomotor Tragere ​(opțional, partajează pin cu PWM) → D9 (PB1) 
 + 
 +  * Bluetooth HC-05 → SoftwareSerial(D8,​ D7) 
 +      - TX HC-05 → D8 (PB0) — RX software 
 +      - RX HC-05 → D7 (PD7) — TX software 
 + 
 +==== Alimentare Sistem ==== 
 + 
 +  * 2x Baterii Li-Ion 3.7V (tip 18650) conectate în serie → tensiune totală: 7.4V – 8.4V 
 +  * Baterii → BMS 2S (protecție la supra-descărcare,​ supra-încărcare și scurtcircuit) 
 +  * BMS OUT+ și OUT− → Întrerupător principal (ON/OFF) 
 +  * Întrerupător ​→ Modul coborâtor de tensiune LM2596 / LM2598 
 +      - LM2598 reglează tensiunea la 5V stabil 
 +  * LM2598 ​ 
 +      - Arduino ​(prin pin Vin sau direct ​5V
 +      - Servomotoare (alimentare externă pentru a evita suprasarcina pe Arduino) 
 + 
 +==== Observații ==== 
 +  * Este important ca servomotoarele să fie alimentate direct din LM2598, nu prin 5V de pe Arduino, din cauza curentului mare necesar ​în sarcină. 
 +  * Dacă se folosește servomotorul de tragere pe pinul D9, acesta nu mai poate fi folosit simultan cu PWM pentru motorul stânga (OC1A)
 +  * BMS-ul 2S este esențial pentru siguranță și durata de viață a bateriilor Li-Ion. 
 + 
 + 
 +{{:​pm:​prj2025:​ajipa:​circuit_image.png?​600|}}
  
 ===== Software Design ===== ===== Software Design =====
  
 ==== Funcționalități Principale ==== ==== Funcționalități Principale ====
-  * Inițializare module: motoare, servo, comunicare serială/WiFi+  * Inițializare module: motoare, servo, comunicare serială/Bluetooth
   * Recepționare comenzi:   * Recepționare comenzi:
-    - `W`, `A`, `S`, `D` → direcție+    - `W`, `A`, `S`, `D` → deplasare înainte/​înapoi/​stânga/​dreapta 
 +    - `Q`, `E` → scade/​crește viteza 
 +    - `X` → frână de urgență
     - `I`, `K` → turetă sus/jos     - `I`, `K` → turetă sus/jos
     - `J`, `L` → turetă stânga/​dreapta     - `J`, `L` → turetă stânga/​dreapta
-    - `space` → tragere +  ​* Control motoare DC prin DRV8833 cu semnal PWM (Timer1) 
-  ​* Control motoare DC prin L298N +  * Control ​servomotoare ​(pan/tilt) cu bibliotecă ​Servo.h 
-  * Control ​servo (pan/tilt) cu funcții ​Servo.h +  * Comenzi transmise prin modul Bluetooth ​(HC-05) ​sau consolă serială 
-  * Comenzi transmise prin Bluetooth sau interfață web+  * Oprire automată la timeout dacă nu se mai primesc comenzi (siguranță
 + 
 +==== Module Software Implementate ==== 
 +  * Modul PWM: 
 +    - Inițializare Timer1 pentru generarea semnalului PWM către motoare 
 +    - Timer0 utilizat pentru buzzer 
 +  * Modul Bluetooth/​Serial:​ 
 +    - Comunicare bidirecțională cu dispozitive externe 
 +    - Interpretare comenzi primite și trimitere mesaje debug 
 +  * Modul de control turelă: 
 +    - Control fin al unghiului de înclinare și rotație 
 +    - Timeout după ultima comandă pentru evitarea mișcărilor continue 
 +  * Modul de siguranță:​ 
 +    - Timeout motoare (200 ms) 
 +    - Timeout servo (200 ms) 
 +    - Funcție `brakeMotors()` pentru frânare activă 
 + 
 + 
 +===== Laboratoare Folosite ===== 
 + 
 +Laboratorul 0 – GPIO → folosit pentru configurarea pinilor motoarelor, buzzerului și controlul servomotoarelor (setare ieșiri digitale cu DDR și PORT). 
 + 
 +Laboratorul 1 – UART → folosit pentru comunicarea serială prin USB (`Serial`) și Bluetooth (`SoftwareSerial`) pentru recepția comenzilor și debug. 
 + 
 +Laboratorul 3 – Timere / PWM → 
 +- Timer1 (mod Fast PWM) este folosit pentru generarea semnalului PWM pentru motoarele DC, controlând viteza acestora prin pinii OCR1A (D9) și OCR1B (D10). 
 +- Timer0 (mod Fast PWM) este folosit pentru activarea buzzerului prin OC0A (pinul D6), generând un semnal sonor temporizat. 
 + 
 +===== Implementarea Logicii ===== 
 + 
 +După pornirea sistemului, se realizează următoarele inițializări:​ 
 +- Se configurează pinii pentru motoare, buzzer și PWM (`setupPWM()`). 
 +- Se atașează servomotoarele la pinii 12 și 13 și se setează poziția inițială (90°). 
 +- Se initializează comunicația serială cu PC-ul și Bluetooth. 
 + 
 +===== Funcționare în bucla principală ===== 
 + 
 +1. **Recepție Comenzi:​** 
 +   ​Comenzile sunt primite de la utilizator prin Bluetooth sau consolă serială. Funcția `handleCommand()` interpretează literele primite (`W`, `A`, etc.) și activează comportamentul asociat. 
 + 
 +2. **Control Motoare DC:** 
 +   - Se folosesc 4 pini digitali (IN1–IN4) pentru sensul de rotație. 
 +   - Semnalul PWM este aplicat pe OCR1A și OCR1B pentru controlul vitezei. 
 +   - Se suportă control de direcție, frânare activă (`brakeMotors()`),​ diagonală și timeout automat. 
 + 
 +3. **Control Turelă Servo:** 
 +   - La primirea comenzilor `I`, `K`, `J`, `L`, turelă se mișcă incremental (1°/pas) timp de 200ms. 
 +   - Servomotoarele sunt controlate cu funcții `Servo.write()`. 
 + 
 +4. **Siguranță (Timeout):​** 
 +   - Dacă nu se primesc comenzi de motor timp de 200 ms, acestea sunt oprite automat (`stopMotors()`). 
 +   - La fel, comenzile de servomotoare sunt valabile doar timp de 200 ms. 
 + 
 +===== Funcții Auxiliare ===== 
 + 
 +- `setupPWM()`:​ configurează Timer1 în mod Fast PWM pentru controlul motoarelor pe OCR1A (D9) și OCR1B (D10). 
 + 
 +- `beepBuzzer(uint8_t durationMs)`:​ pornește buzzerul folosind Timer0 pentru o durată specificată,​ pentru feedback sonor (ex: confirmare frână). 
 + 
 +- `handleCommand(char cmd)`: interpretează comenzile primite de la utilizator și apelează funcțiile corespunzătoare (motor, servo, buzzer). 
 + 
 +- `stopMotors()`:​ dezactivează toți pinii de control motor și oprește PWM. 
 + 
 +- `brakeMotors()`:​ activează frâna motoarelor (toți pinii HIGH) și declanșează buzzerul pentru 100 ms. 
 + 
 +- `moveDiagonal(char a, char b)`: gestionează combinațiile de taste pentru mișcare diagonală (`WA`, `WD`, `SA`, `SD`), activând doar motoarele necesare. 
 + 
  
 ===== Rezultate Obținute ===== ===== Rezultate Obținute =====
   * Control complet al vehiculului prin aplicație.   * Control complet al vehiculului prin aplicație.
   * Rotație și înclinare turetă funcțională.   * Rotație și înclinare turetă funcțională.
-  * Tragere fiabilă activată la distanță. 
   * Sistem stabil și extensibil (ex: cu streaming video sau senzori).   * Sistem stabil și extensibil (ex: cu streaming video sau senzori).
  
Line 76: Line 171:
  
 ===== Resurse Suplimentare ===== ===== Resurse Suplimentare =====
-  * [[https://​github.com/​Destroyer6969123/​Proiect_PM]] – Exemplu cod pe GitHub+  * [[https://​github.com/​Destroyer6969123/​Proiect_PM]] – Cod
   * Poze și video demonstrativ (de adăugat după construcție)   * Poze și video demonstrativ (de adăugat după construcție)
  
pm/prj2025/ajipa/jamal_samir.pirvu.1747122188.txt.gz · Last modified: 2025/05/13 10:43 by jamal_samir.pirvu
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