Table of Contents

Pistol de Măsurat Viteza (Radar cu Laser)

Introducere

Ce face: Proiectul este un sistem portabil (tip pistol) capabil să măsoare și să afișeze viteza unui obiect aflat în mișcare pe o traiectorie directă spre sau dinspre dispozitiv.

Scopul lui: Scopul acestui proiect este realizarea unui aparat de măsurare a vitezei (radar) bazat pe microcontrolerul ATmega328P și un senzor de distanță Time-of-Flight (ToF) de înaltă precizie, VL53L1X.

Ideea de la care am pornit: Ideea a venit din dorința de a construi un instrument practic și educațional care să ilustreze principiile cinematicii (viteza ca variație a distanței în timp) folosind componente electronice accesibile.

De ce este util: Sistemul este util pentru aplicații educaționale și experimente practice (ex. măsurarea vitezei mașinilor de jucărie, a roboților sau a persoanelor care aleargă), demonstrând concepte fizice într-un mod interactiv.

Descriere generală

Sistemul funcționează pe principiul măsurării succesive a distanței față de un obiect. Folosind timer-ul intern al microcontrolerului, se măsoară cu precizie intervalul de timp dintre două măsurători consecutive de distanță furnizate de senzorul VL53L1X. Viteza este apoi calculată și afișată pe un ecran OLED.

Schema bloc: Microcontrolerul ATmega328P este unitatea centrală care comunică prin interfața I2C atât cu senzorul de distanță (VL53L1X), cât și cu ecranul OLED. Un buton cu rol de “trăgaci” este conectat la un pin digital al microcontrolerului pentru a iniția măsurătoarea. Alimentarea se face printr-o baterie.

Hardware Design

Lista de piese:

Microcontroler: ATmega328P (pe o placă de dezvoltare Arduino Nano/Uno).

Senzor de distanță: Modul senzor laser VL53L1X (Time-of-Flight, distanță până la 4m).

Display: Ecran OLED 0.96” sau 1.3” (I2C, SSD1306 sau SH1106).

Buton: Push-button pentru acționarea “trăgaciului”.

Alimentare: Baterie 9V sau acumulator Li-Ion 3.7V cu step-up la 5V.

Componente pasive: Rezistențe de pull-up/pull-down, fire de conexiune.

Conexiuni (Interfațare): * VL53L1X (SDA) → Pin A4 (ATmega328P) * VL53L1X (SCL) → Pin A5 (ATmega328P) * OLED (SDA) → Pin A4 (ATmega328P) * OLED (SCL) → Pin A5 (ATmega328P) * Buton Trăgaci → Pin D2 (INPUT_PULLUP, întrerupere externă)

Software Design

Mediu de dezvoltare: Arduino IDE (pentru ușurința integrării driverelor pentru senzor și display).

Librării și surse 3rd-party: * `Wire.h` (comunicare I2C) * `SparkFun_VL53L1X.h` sau `Pololu VL53L1X` (control senzor ToF) * `Adafruit_GFX.h` și `Adafruit_SSD1306.h` (control ecran OLED)

Algoritmi și structuri: 1. Inițializare: Configurare pini, inițiere comunicație I2C, pornire senzor și ecran OLED. 2. Așteptare: Sistemul stă în așteptare până la apăsarea butonului (prin întrerupere pe pinul D2). 3. Captură date: Se citește distanța curentă și se obține timpul folosind un timer. Se repetă procesul pentru a doua distanță și al doilea timp. 4. Calcul: Viteză = diferența de distanță / diferența de timp. Conversie în km/h sau m/s. 5. Filtrare: Se folosește o medie mobilă (sau filtru Low-Pass) pentru a reduce zgomotul senzorului și a obține o citire stabilă. 6. Afișare: Viteza calculată este trimisă pe ecranul OLED.

Rezultate Obţinute

Functionare Hardware: Sistemul a fost asamblat cu succes pe breadboard, realizand un prototip functional de Pistol Radar. Comunica perfect simultan cu ecranul OLED (5V) si senzorul laser VL53L1X (3.3V) pe aceeasi magistrala I2C (pinii PC4/PC5), fara conflicte de tensiune.

Procesare Software: Radarul citeste la intervale de 50ms si afiseaza datele pe ecran fara intarziere perceptibila.

Acuratete si Filtrare: S-a implementat cu succes un dublu filtru software. Primul ignora zgomotul de fond (fluctuatii de sub 25mm in stare statica), iar al doilea forteaza valoarea vitezei la 0.0 km/h pentru miscari de sub 2 km/h, oferind o afisare extrem de stabila, asemanatoare instrumentelor de bord reale.

Concluzii

Dezvoltarea acestui proiect a demonstrat cat de importanta este intelegerea arhitecturii hardware din spatele framework-urilor de tip “black-box” precum Arduino. Provocarea principala a fost scrierea logicii de calcul a vitezei pe baza citirilor extrem de rapide de distante, ceea ce a generat erori initiale de calcul din cauza zgomotului optic (“sensor jitter”).

Tranzitia catre o arhitectura hibrida, folosind manipularea directa a registrelor (DDRD, PORTD, PIND) pentru pinii de I/O, a oferit o perspectiva mult mai clara asupra functionarii reale a unui microcontroler ATmega328P. Am invatat ca in proiectele complexe, compromisul ingineresc intre utilizarea librariilor pentru periferice foarte complexe (senzorul ToF cu propriul sau firmware intern) si codul “bare-metal” pentru optimizarea resurselor placii este o abordare standard si eficienta. Sistemul final este stabil, interactiv si raspunde excelent in timp real.

Download

radar_viteza.zip

Jurnal

Saptamana 1 (Hardware si Setup): Analiza componentelor si a datasheet-urilor (VL53L1X si SSD1306). Realizarea schemei electrice si asamblarea ansamblului pe breadboard. Gestionarea corecta a alimentarilor mixte (5V si 3.3V) si testarea magistralei I2C.

Saptamana 2 (Functionalitate de Baza): Scrierea codului initial pentru comunicarea cu perifericele folosind librariile specifice. Initializarea senzorului laser si a ecranului OLED. Obtinerea primelor masuratori statice de distanta in timp real si afisarea acestora pe display.

Saptamana 3 (Algoritmul Radar): Dezvoltarea logicii matematice pentru calculul vitezei de deplasare. Utilizarea functiilor de timp pentru derivarea vitezei din diferenta de distanta si implementarea filtrelor software (“deadband” si anti-jitter) pentru stabilizarea valorilor afisate.

Saptamana 4 (Refactorizare si Finalizare): Migrarea codului spre o arhitectura de tip “bare-metal” (inlocuirea rutinelor de baza cu main(), utilizarea registrelor DDRD, PORTD, PIND pentru citirea butonului hardware). Integrarea functiei de Power Saving, testarea finala a sistemului si redactarea documentatiei pentru wiki.

Bibliografie/Resurse

* Datasheet ATmega328P - Microchip Technology. * Datasheet VL53L1X - STMicroelectronics. * Documentație protocol I2C și conectare componente. * Documentație biblioteci Adafruit și SparkFun pentru dezvoltarea software-ului.

Export to PDF