Email: dianacretu2806@gmail.com
Monitorizarea pulsului este una din investigatiile fundamentale in descoperirea unei afectiuni cardiace. Cresterea anormala a valorii pulsului peste o anumita valoare poate fi semnul unei fibrilatii atriale, depistarea acesteia fiind vitala, deoarece duce, inevitabil, la aparitia unor probleme ce pun în pericol viata. Astfel, proiectul consta in implementarea unui aparat ce masoara pulsul unei persoane. La depistarea unei valori anormale este programat sa porneasca un sunet de atentionare.
In implementarea proiectului voi folosi un senzor XD-58C ce masoara pulsul cand intra in contact cu incheietura mainii. Atunci cand valoarea pulsului depaseste 220 minus varsta persoanei, ceea ce reprezinta valoarea maxima a pulsului pentru o persoana, voi folosi un buzzer pentru a produce un sunet de atentionare.
Pentru realizarea proiectului am folosit mai multe resurse software:
Am folosit urmatoarele biblioteci in cod:
#include <avr/io.h> #include <util/delay.h> #include <stdlib.h> #include <avr/interrupt.h> #include "usart.h" #include "lcd.h"
In main au loc initializarile si o bucla infinita ce printeaza valoarea pulsului in momentul in care este detectat.
Senzorul de puls pe care il folosesc este un photoplethysmograph, cunoscut mai bine ca un dispozitiv medical folosit pentru a monitoriza pulsul neinvaziv. Senzorul de puls raspunde la schimbarile de intensitate luminoasa. Daca lumina ramane constanta, vloarea semnalului va fi 512. Daca va fi mai multa lumina, semnalul va creste.
Pentru conversia datelor am setat TIMER2 pentru a se declansa la 2ms si sa citeasca o valoare de la ADC, care va fi trimisa prin USART, catre calculator. Activez intreruperile globale.
void interruptSetup() {
TCCR2A = 0x02; TCCR2B = 0x06; OCR2A = 0X7C; TIMSK2 = 0x02; sei();
}
In rutina intreurperii, se calculeaza numarul de batai pe minut (BPM) ce este afisat ulterior si pe LCD. Prima bataie simtitia de senzor nu este luata in considerare din cauza zgomotului, de aceea ne folosim de variabilele firstBeat setata pe true initial si secondBeat setata pe false. Abia de la a doua bataie a inimii simtita, putem calcula pulsul.
Pentru a calcula pulsul (BPM) ne folosim de ultimele zece valori ale IBI (Inter Beat Interval) pentru a obtine un rezultat cat mai aproape de adevar.
int runningTotal = 0; for(int i = 0; i < 9; i ++){
rate[i] = rate[i + 1]; runningTotal += rate[i];
} rate[9] = IBI; runningTotal += rate[9]; runningTotal /= 10; BPM = 60000/runningTotal; QS = true;
In momentul in care BPM este peste 100 (am ales o valoare cu care pot testa daca buzzerul functioneaza), buzzerul va incepe sa sune pentru a anunta ca este o problema.
if (BPM > 100) {
PORTB &= ~(1 << PB7);
} else {
PORTB |= (1 << PB7);
}
Realizarea unui proiect in care a trebuit personal sa fac si software-ul si hardware-ul mi s-a parut dificila, insa in acelasi timp si interesanta.
Se plaseaza degetul pe senzor si asteapta cateva secunde pentru a se calibra, Astfel, valoarea pulsului va aparea pe LCD, iar in cazul in care este peste o anumita valoare, va scoate un sunet buzzerul.