This shows you the differences between two versions of the page.
|
pm:prj2026:atoader:theodor.mitrofan [2026/05/22 18:33] theodor.mitrofan [Software Design] |
pm:prj2026:atoader:theodor.mitrofan [2026/05/25 12:03] (current) theodor.mitrofan [Introducere] |
||
|---|---|---|---|
| Line 10: | Line 10: | ||
| Pentru mine, utilitatea este didactica si practica: invat sa stapanesc interactiunea dintre senzori asincroni (RFID, Ultrasonic) si actuatoare (Servomotor) folosind o arhitectura de tip Finite State Machine (FSM), eliminand total functiile blocante de tip delay(). Pentru un utilizator real, sistemul ofera un feedback clar (pe ecranul LCD) si un acces fluid. | Pentru mine, utilitatea este didactica si practica: invat sa stapanesc interactiunea dintre senzori asincroni (RFID, Ultrasonic) si actuatoare (Servomotor) folosind o arhitectura de tip Finite State Machine (FSM), eliminand total functiile blocante de tip delay(). Pentru un utilizator real, sistemul ofera un feedback clar (pe ecranul LCD) si un acces fluid. | ||
| - | Laboratoarele folosite au fost 3-timere, 5-spi si 6-i2c | + | Laboratoarele folosite au fost 3-timere, PWM, 5-spi si 6-i2c |
| ===== Descriere generala ===== | ===== Descriere generala ===== | ||
| Line 131: | Line 131: | ||
| ==== Controlul barierei ==== | ==== Controlul barierei ==== | ||
| - | Servomotorul este controlat prin PWM la 50 Hz generat de Timer1 in mod Fast PWM cu ICR1 = 39999 (TOP) si prescaler /8. Latimea pulsului este setata prin OCR1A: | + | Bariera este actionata de un servomotor cu rotatie continua (CR), controlat prin PWM la 50 Hz generat de Timer1 in mod Fast PWM cu ICR1 = 40000 (TOP) si prescaler /8. Pentru acest tip de servomotor, latimea pulsului setata prin OCR1A nu dicteaza o pozitie fixa a bratului, ci directia si viteza de rotatie a motorului: |
| - | * pozitia inchis: OCR1A = 2700 (~1.35 ms) | + | * stare de STOP (rotor oprit): OCR1A = 3000 (~1.5 ms) |
| - | * pozitia deschis: OCR1A = 3300 (~1.65 ms) | + | * miscare sens deschidere: OCR1A = 2400 (~1.2 ms) |
| - | + | * miscare sens inchidere: OCR1A = 3600 (~1.8 ms) | |
| - | Pentru a asigura o miscare fiabila a servoului, functia servo_set_position() trimite intai o valoare de "pre-pas" exagerata (2300 pentru inchis, 3700 pentru deschis), urmata de un delay de 200 ms, dupa care se aseaza pe valoarea finala. Acest pre-pas forteaza servoul sa porneasca miscarea chiar daca era deja aproape de pozitia target. | + | |
| + | Pentru a asigura o cursa corecta a barierei, functia servo_set_position() activeaza miscarea in directia dorita (deschis sau inchis) pentru un timp prestabilit (ROT_TIME_MS, calibrat pentru unghiul de ~90 de grade). Dupa expirarea acestui delay generat de _delay_ms(), semnalul PWM revine automat la valoarea de STOP (3000) pentru a frana si opri rotorul in noua pozitie. Aceasta calibrare inlocuieste controlul clasic in bucla inchisa al servomotoarelor standard. | ||
| ==== Validarea functionalitatilor ==== | ==== Validarea functionalitatilor ==== | ||
| Line 169: | Line 169: | ||
| ===== Rezultate Obtinute ===== | ===== Rezultate Obtinute ===== | ||
| - | ===== Concluzii ===== | + | [[https://github.com/TheodorMitrofan/Smart-parking-system|Link github]] |
| - | ===== Download ===== | + | |
| + | [[https://youtube.com/shorts/nlaD8SWR9kA?feature=share|Link video demo]] | ||