Differences

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

Link to this comparison view

pm:prj2026:theodor_ioan.buliga:costin.grasu [2026/05/22 18:51]
costin.grasu
pm:prj2026:theodor_ioan.buliga:costin.grasu [2026/05/22 18:57] (current)
costin.grasu [Download]
Line 109: Line 109:
 **Calibrarea elementelor de senzoristica:​** **Calibrarea elementelor de senzoristica:​**
 Pentru a asigura o functionare corecta, au fost realizate doua calibrari software: Pentru a asigura o functionare corecta, au fost realizate doua calibrari software:
-  ​1. **Ajustarea distantei:​** Distanta dintre cei doi senzori IR de pe macheta a fost definita ca macro (`DISTANCE_M 1`) pentru a calcula corect viteza in m/s si ulterior in km/h. Valoarea de 1 metru definita in cod este o distanta teoretica, stabilita in urma testelor pentru a facilita demonstrarea functionalitatii sistemului. Deoarece pe macheta senzorii sunt montati la doar cativa centimetri distanta, simularea manuala a diferitelor praguri de viteza la scara reala ar fi fost extrem de dificil de controlat. + 
-  2. **Calibrarea servomotorului SG90:** Deoarece motoarele difera mecanic, s-au testat mai multe latimi de puls (delay in microsecunde). S-au stabilit empiric valorile `PULS_INITIAL_US = 500` pentru pozitia ascunsa a bumperului si `PULS_RIDICAT_US = 800` pentru inaltarea corespunzatoare la detectia depasirii vitezei.+1. **Ajustarea distantei:​** Distanta dintre cei doi senzori IR de pe macheta a fost definita ca macro (`DISTANCE_M 1`) pentru a calcula corect viteza in m/s si ulterior in km/h. Valoarea de 1 metru definita in cod este o distanta teoretica, stabilita in urma testelor pentru a facilita demonstrarea functionalitatii sistemului. Deoarece pe macheta senzorii sunt montati la doar cativa centimetri distanta, simularea manuala a diferitelor praguri de viteza la scara reala ar fi fost extrem de dificil de controlat. 
 + 
 +2. **Calibrarea servomotorului SG90:** Deoarece motoarele difera mecanic, s-au testat mai multe latimi de puls (delay in microsecunde). S-au stabilit empiric valorile `PULS_INITIAL_US = 500` pentru pozitia ascunsa a bumperului si `PULS_RIDICAT_US = 800` pentru inaltarea corespunzatoare la detectia depasirii vitezei.
  
 **Optimizari:​** **Optimizari:​**
-  * **Unde:** In constructia string-ului pentru afisarea pe LCD in functia `main()`. **Cum/De ce:** Am evitat folosirea functiei complexe `sprintf` cu argumente de tip `float`. Includerea suportului float pentru `sprintf` ar fi adaugat un overhead masiv in memoria Flash. In schimb, am optimizat extragand partea intreaga (`vit_int = (int)speed_kmh`) si prima zecimala (`vit_dec = (int)((speed_kmh - vit_int) * 10)`) si folosind formatare simpla de intregi (`%d.%d`). Aceasta tactica a redus dramatic memoria ocupata. +  * **Unde:** In constructia string-ului pentru afisarea pe LCD in functia `main()`. 
-  * **Unde:** In rutinele de tratare a intreruperilor (ISR). **Cum/De ce:** Calculele matematice grele (impartiri, conversii float) au fost plasate in interiorul buclei `while(1)`, nu direct in ISR. Intreruperile realizeaza doar atribuiri simple si rapide de variabile. Optimizarea mentine timpul de executie al ISR-urilor la minimum, prevenind fenomenul de "​interrupt starvation"​ si blocarea microprocesorului.+  * **Cum/De ce:** Am evitat folosirea functiei complexe `sprintf` cu argumente de tip `float`. Includerea suportului float pentru `sprintf` ar fi adaugat un overhead masiv in memoria Flash. In schimb, am optimizat extragand partea intreaga (`vit_int = (int)speed_kmh`) si prima zecimala (`vit_dec = (int)((speed_kmh - vit_int) * 10)`) si folosind formatare simpla de intregi (`%d.%d`). Aceasta tactica a redus dramatic memoria ocupata. 
 +  * **Unde:** In rutinele de tratare a intreruperilor (ISR). 
 +  * **Cum/De ce:** Calculele matematice grele (impartiri, conversii float) au fost plasate in interiorul buclei `while(1)`, nu direct in ISR. Intreruperile realizeaza doar atribuiri simple si rapide de variabile. Optimizarea mentine timpul de executie al ISR-urilor la minimum, prevenind fenomenul de "​interrupt starvation"​ si blocarea microprocesorului.
  
 ===== Rezultate Obtinute ===== ===== Rezultate Obtinute =====
Line 132: Line 136:
 ===== Download ===== ===== Download =====
  
-Aici puteti gasi arhiva ​completa cu codul sursa:+Arhiva ​completa cu codul sursa:
  
 {{:​pm:​prj2026:​theodor_ioan.buliga:​smartbumper.zip|}} {{:​pm:​prj2026:​theodor_ioan.buliga:​smartbumper.zip|}}
  
-Sau link-ul de la repository:+Link repository: 
 [[https://​github.com/​costingrasu/​SmartBumper|SmartBumper]] [[https://​github.com/​costingrasu/​SmartBumper|SmartBumper]]
  
pm/prj2026/theodor_ioan.buliga/costin.grasu.1779465107.txt.gz · Last modified: 2026/05/22 18:51 by costin.grasu
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