This shows you the differences between two versions of the page.
pm:prj2025:vstoica:popapeter [2025/05/18 20:27] peter.popa [Hardware Design] |
pm:prj2025:vstoica:popapeter [2025/05/28 00:37] (current) peter.popa [Bibliografie/Resurse] |
||
---|---|---|---|
Line 48: | Line 48: | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | * ** Mediu de dezvoltare:** Codul a fost scris în limbajul C, utilizând extensia PlatformIO din Visual Studio Code, folosind toolchain-ul AVR GCC pentru microcontrolerul ATmega328P. | ||
+ | * ** Librării și surse externe utilizate: ** | ||
+ | * twi.h și twi.cpp – implementare low-level pentru comunicația I2C | ||
+ | * lcd.h și lcd.cpp – implementare pentru afișarea pe LCD 16x2 I2C | ||
+ | * ** Algoritmi și structuri implementate: **Aplicația implementează o interfață de control pentru un piston acționat electric, cu control direcție și stare ON/OFF, citind în același timp valoarea de curent consumat și calculând puterea livrată. | ||
+ | * ** Debounce pentru butoane: **Implementat software folosind Timer1 în CTC mode, cu întrerupere la 1ms. Fiecare buton este filtrat prin contorizarea stării stabile timp de 20ms pentru a elimina bouncing-ul mecanic. | ||
+ | * ** Controlul motorului: **Două ieșiri digitale (D2, D3) comandă un driver L298N pentru controlul direcției pistonului. Un buton comută între ON/OFF, iar altul între sensul de deplasare. LED-urile indică starea (roșu = oprit, verde = activ). | ||
+ | * ** Citire senzor ACS712 (20A): ** Se utilizează ADC-ul intern pentru a citi tensiunea analogică proporțională cu curentul. | ||
+ | * ** Calcul putere: **Puterea activă este calculată ca produs între curent și tensiunea de alimentare fixă a pistonului (10.65V). Aceasta se actualizează la fiecare 500ms folosind același timer ca și pentru debounce, dar cu un contor separat în ISR. | ||
+ | * ** Afișare pe LCD I2C: **Pe LCD-ul 16x2 sunt afișate: | ||
+ | * Linia 1: curentul (A) și puterea (W) | ||
+ | * Linia 2: starea curentă a sistemului (ACTIV/OPRIT) | ||
- | ===== Rezultate Obţinute ===== | + | ** Elementul de noutate **constă în integrarea controlului hardware de motor, monitorizarea consumului electric printr-un senzor de curent și afișarea în timp real a acestor valori pe un LCD I2C. |
+ | Proiectul valorifică **funcționalități studiate în laborator** precum: temporizare prin **Timer1 în CTC**, utilizarea **întreruperilor** pentru debounce, citire **ADC** pentru senzori analogici și comunicație **I2C** pentru afișaj. | ||
- | ===== Concluzii ===== | + | **Senzorul ACS712** a fost **calibrat** pe baza valorii de referință (**2.5V la 0A**) și a sensibilității declarate de producător (**100 mV/A**). Calibrarea s-a verificat cu un multimetru în serie pe o sarcină de test cunoscută (ex: rezistor de putere), iar valoarea de **10.65V** a fost măsurată pe sursa de alimentare a pistonului. |
+ | | ||
+ | ** Optimizările** au fost realizate în principal în ceea ce privește utilizarea memoriei și resurselor hardware. **Timerul 1** a fost utilizat pentru **debounce** și pentru **sampling periodic** (calculul curentului și al puterii, urmate de afișarea pe LCD), economisind un timer suplimentar. | ||
- | ===== Download ===== | + | **Videoclip:** [[https://youtu.be/CnxCBeDxjME|https://youtu.be/CnxCBeDxjME]] |
- | ===== Jurnal ===== | + | ===== Download ===== |
+ | * ** Link GitHub: **[[https://github.com/PopaPeter/PM_fair|https://github.com/PopaPeter/PM_fair]] | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
+ | * **Fisa tehnica ATmega328P:** [[https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf|ATmega328P]] | ||
+ | * **Librarie LCD I2C (LiquidCrystal_I2C):** [[https://github.com/johnrickman/LiquidCrystal_I2C|LCD_I2C]] | ||
+ | * **Fisa tehnica ACS712:**[[https://www.sparkfun.com/datasheets/BreakoutBoards/0712.pdf|ACS712]] | ||
+ | * **Informatii lucru registrii:** [[https://www.youtube.com/watch?v=dQw4w9WgXcQ&ab_channel=RickAstley|OCW]] |