This is an old revision of the document!
Autor: Voinea Andreea, Grupa: 333CB
Proiectul consta intr-o inima formata din LED-uri RGB pe breadboard care pulseaza in ritmul batailor reale ale utilizatorului. Utilizatorul isi pune degetul pe senzorul de puls, care masoara BPM-ul in timp real. LED-urile pulseaza in ritmul detectat, iar display-ul OLED afiseaza valoarea BPM. Culoarea LED-urilor indica starea: verde pentru BPM normal (60-100 BPM), rosu pentru BPM in afara intervalului. La apasarea butonului masurarea porneste, la o noua apasare se opreste. La fiecare bataie detectata, buzzerul reda un sunet scurt de tip lub-dub.
Modulele proiectului si modul in care interactioneaza:
LED-uri RGB (11 bucati, anod comun)
LED-urile RGB folosite sunt de tip anod comun. Pinul comun al fiecarui LED este conectat la +5V. Pinii R, G si B ai fiecarui LED sunt conectati prin rezistente individuale la cate un canal comun pentru fiecare culoare.
Fiecare canal comun este comandat printr-un tranzistor NPN BD139:
Pentru fiecare tranzistor BD139:
Tranzistoarele sunt necesare deoarece 11 LED-uri aprinse simultan pe acelasi canal pot depasi curentul maxim suportat de un pin al microcontrollerului. Astfel, pinii microcontrollerului comanda doar baza tranzistoarelor, iar curentul pentru LED-uri trece prin tranzistoare.
Pinii PWM folositi pentru LED-uri sunt:
Pinii PWM au fost alesi pentru a permite efectul de fade (puls) al LED-urilor.
Schema logica pentru un canal de culoare este:
Senzor puls cardiac (Pulse Sensor)
Pinul ADC0 a fost ales deoarece senzorul ofera un semnal analogic citit prin convertorul analog-digital.
Display OLED 0.96” SSD1306
Pinii PC4 si PC5 sunt pinii hardware dedicati protocolului I2C (TWI) pe ATmega328P.
Buzzer pasiv
Pinul PB1 suporta PWM pe Timer1, necesar pentru generarea frecventelor sonore lub-dub.
Buton tactil
Pinul PD2 suporta intrerupere externa INT0 pentru detectarea apasarii cu debouncing.
Pentru LED-urile RGB se foloseste cate o rezistenta pentru fiecare pin de culoare. Curentul depinde de valoarea rezistentei folosite.
Pentru o rezistenta de 220 ohm, curentul aproximativ printr-un LED rosu este:
I = (5V - 2V) / 220 ohm I = 3V / 220 ohm I = 13.6mA
Pentru 11 LED-uri aprinse pe acelasi canal:
11 x 13.6mA = 149.6mA
Deci un canal LED cu rezistente de 220 ohm consuma aproximativ 150mA.
Pentru o rezistenta de 1K ohm, curentul aproximativ printr-un LED rosu este:
I = (5V - 2V) / 1000 ohm I = 3V / 1000 ohm I = 3mA
Pentru 11 LED-uri aprinse pe acelasi canal:
11 x 3mA = 33mA
Estimare consum total, cu un canal LED activ:
Alimentarea prin USB 5V / 500mA este suficienta pentru aceasta configuratie, mai ales deoarece proiectul nu aprinde toate cele trei culori la intensitate maxima in acelasi timp.
Mediu de dezvoltare: PlatformIO + VSCode, framework AVR, cod C cu avr-gcc.
Algoritmi si structuri planificate:
In starea IDLE, masurarea este oprita. La apasarea butonului, sistemul intra in starea MEASURING. In aceasta stare, senzorul citeste pulsul, LED-urile pulseaza, buzzerul reda sunetul la fiecare bataie detectata, iar OLED-ul afiseaza BPM. La o noua apasare a butonului, sistemul revine in IDLE.
Librarii 3rd-party planificate:
Pana in acest moment au fost testate individual componentele principale ale proiectului. LED-urile RGB au fost montate pe breadboard si testate pe canalul rosu, folosind rezistente de limitare a curentului. A fost verificata functionarea simultana a LED-urilor si a fost stabilita schema corecta pentru LED-uri RGB de tip anod comun.
A fost testata si ideea de comanda prin tranzistor BD139, unde tranzistorul functioneaza ca un switch pe partea de GND. In aceasta configuratie, pinul comun al LED-ului este conectat la +5V, pinul de culoare trece printr-o rezistenta catre colectorul tranzistorului, emitorul este conectat la GND, iar baza este comandata printr-o rezistenta de 1K ohm.
Proiectul combina citirea unui semnal biologic simplu cu feedback vizual si sonor. Folosirea LED-urilor RGB permite reprezentarea intuitiva a starii pulsului, iar display-ul OLED ofera afisarea valorii BPM in timp real. Tranzistoarele BD139 sunt necesare pentru comanda simultana a mai multor LED-uri, deoarece pinii microcontrollerului nu pot furniza direct curentul necesar pentru toate LED-urile.
O dificultate importanta a fost montarea LED-urilor RGB pe breadboard, deoarece fiecare LED are patru pini si trebuie respectata orientarea corecta a pinilor. De asemenea, a fost necesara conectarea corecta a liniilor de alimentare intre cele doua breadboard-uri.
Resurse Hardware: