Yazılardaki ürünleri komponentci.net'te inceleyebilir, hemen sipariş verebilirsiniz.komponentci.net →
KomponentciBlog Mağaza
Blog  ›  Projeler

Nabız Sensörü Projesi: Arduino ile BPM Ölçümü

Nabız Sensörü Projesi: Arduino ile BPM Ölçümü
Kısa cevap

Nabız sensörü projesi, parmağa takılan optik bir nabız sensörü ve Arduino Uno ile yapılır. Sensör her kalp atışında parmaktaki kan miktarının değişimini ışıkla algılar. Arduino iki atış arasındaki süreyi ölçer ve 60.000'i bu milisaniye değerine bölerek dakikadaki atım sayısını (BPM) bulur. Proje eğitim amaçlıdır, tıbbi cihaz değildir.

Kendi nabzınızı ekranda dalga olarak görmek, biyoloji ile elektroniği birleştiren etkileyici bir projedir. Bu yazıda Arduino Uno ve optik bir nabız sensörüyle kalp atış hızını ölçüyoruz. Sensörün çalışma ilkesini, bağlantıyı, BPM hesabını ve Seri Çizici kullanımını anlatıyoruz. Sonda egzersiz deneyiyle ödevinizi nasıl sunacağınızı bulacaksınız.

Önemli: Bu proje eğitim amaçlıdır, tıbbi cihaz değildir. Ölçtüğünüz değerlerle sağlık kararı vermeyin. Sağlığınızla ilgili bir şüpheniz varsa bir doktora danışın.

Nabız sensörü nedir?

Nabız sensörü, kalbin her atışında deri altındaki kan miktarındaki küçük değişimi ışıkla algılayan optik bir sensördür. Bu yönteme fotopletismografi (PPG) denir. Sensördeki LED parmağa ışık gönderir, yanındaki ışık sensörü geri dönen ışığı ölçer.

Kalp kanı pompaladığında parmak ucundaki damarlarda kan artar ve daha fazla ışık emilir. Kalp gevşediğinde kan azalır ve sensöre daha çok ışık döner. Bu iniş çıkışlar, ekranda düzenli bir dalga olarak görünür.

Hangi nabız sensörü seçilmeli?

Öğrenci projesi için en kolay seçenek, tek analog çıkışlı pulse sensördür, çünkü kütüphane gerektirmez ve üç kabloyla bağlanır. MAX30102 daha gelişmiştir, ama I2C ile bağlanır ve kütüphane ister.

SensörBağlantıÖlçtüğüZorluk
Pulse sensor (analog)3 kablo, A0Nabız dalgası, BPMKolay
MAX30102I2C (SDA, SCL)Nabız; kırmızı ve kızılötesi ışık verisiOrta, kütüphane gerekir
KY-0393 kablo, analogZayıf nabız sinyaliKolay ama sinyal gürültülü

MAX30102 iki farklı ışıkla ölçüm yaptığı için oksijen doygunluğu tahmininde de kullanılır; ancak bu ölçüm hassas kalibrasyon ister ve öğrenci projesinde güvenilir değildir. I2C bağlantı mantığını I2C nedir yazısında anlattık.

Hangi malzemeler gerekir?

Nabız ölçümü için bir Arduino Uno, bir pulse sensör ve üç jumper kablo yeterlidir. Göstergeyi Arduino üzerindeki dahili LED ve bilgisayardaki Seri Çizici üstlenir.

Malzeme listesi

MalzemeAdetNe işe yarar?
Arduino Uno R3 (CH340)1Sinyali okur, BPM'i hesaplar
Kalp atışı ölçme sensörü (pulse sensor)1Parmaktaki kan akışını ışıkla algılar
Erkek-dişi jumper kablo3Sensörü karta bağlar
MAX30102 nabız sensörü modülü1 (isteğe bağlı)İleri seviye karşılaştırma için
Cırt cırtlı bant ya da parmak klipsi1Sensörü parmağa sabit bastırır

Nabız sensörü nasıl bağlanır?

Pulse sensörün kırmızı kablosu 5V'a, siyah kablosu GND'ye, mor ya da sinyal kablosu A0'a bağlanır. Bağlantı yaparken USB kablosu takılı olmasın.

  1. Sensörün artı (+) kablosunu Arduino'nun 5V pinine takın.
  2. Eksi (−) kablosunu GND pinine takın.
  3. Sinyal (S) kablosunu A0 pinine takın.
  4. Sensörün ışık çıkan yüzünü parmak ucunuza yerleştirip bantla hafifçe sabitleyin.
  5. Arduino'yu USB ile bağlayın ve aşağıdaki kodu yükleyin.
const int SENSOR = A0, LED = 13;
int esik = 550;            // Seri Çizici'ye bakarak ayarlayın
bool ustte = false;
unsigned long sonVurus = 0;
int bpm = 0;

void setup() {
  Serial.begin(9600);
  pinMode(LED, OUTPUT);
}

void loop() {
  int sinyal = analogRead(SENSOR);
  unsigned long simdi = millis();
  if (sinyal > esik && !ustte) {      // dalga eşiği yukarı geçti
    ustte = true;
    unsigned long aralik = simdi - sonVurus;
    if (aralik > 300) {                 // 200 BPM'den hızlıysa gürültüdür
      if (aralik < 2000) bpm = 60000 / aralik;
      sonVurus = simdi;
    }
    digitalWrite(LED, HIGH);
  }
  if (sinyal < esik - 20) {            // dalga eşiğin altına indi
    ustte = false;
    digitalWrite(LED, LOW);
  }
  Serial.print("Sinyal:");
  Serial.print(sinyal);
  Serial.print(",BPM:");
  Serial.println(bpm);
  delay(10);
}

BPM nasıl hesaplanır?

BPM, iki kalp atışı arasındaki süre milisaniye olarak ölçülüp 60.000'e bölünerek hesaplanır. BPM, "beats per minute" yani dakikadaki atım sayısıdır. Bir dakikada 60.000 milisaniye vardır.

  • İki atış arası 1.000 ms ise: 60.000 / 1.000 = 60 BPM.
  • İki atış arası 800 ms ise: 60.000 / 800 = 75 BPM.
  • İki atış arası 500 ms ise: 60.000 / 500 = 120 BPM.
Nabız dalgası grafiği: Seri Çizici'de nabız sensörünün analog sinyali yaklaşık 500 ile 640 arasında dalgalanıyor; dalga 550 eşiğini her 800 milisaniyede bir yukarı geçiyor ve her geçiş bir atış sayılıyor; eşik − 20 = 530 çizgisi histerezisi gösteriyor; 60.000 / 800 = 75 BPM; 1.000 ms 60 BPM, 500 ms 120 BPM eder
Dalga 550 eşiğini her yukarı geçtiğinde bir atış sayılır; atışlar arası 800 ms ise nabız 60.000 / 800 = 75 BPM'dir.

Kod, sinyal eşiği aşağıdan yukarı geçtiği anı bir atış sayar. Eşiğin 20 altına inmeden yeni atış saymaz; buna histerezis denir ve tek atışın iki kez sayılmasını önler. 300 ms'den kısa aralıklar gürültü kabul edilir.

Seri Çizici ile nabız dalgası nasıl görülür?

Nabız dalgası, Arduino IDE'de Araçlar menüsünden Seri Çizici açılıp hız 9600 baud seçilerek görülür. Ekranda iki çizgi belirir: dalgalanan "Sinyal" ve düz bir çizgi gibi duran "BPM".

Parmağınızı kıpırdatmadan 10-15 saniye bekleyin. Dalganın tepeleri eşik değerinizin üstüne çıkmalı, çukurları altına inmelidir. Tepeler 550'ye ulaşmıyorsa eşiği düşürün; dalga hep 550'nin üstündeyse yükseltin. Sensöre çok sert bastırmak kan akışını azaltır ve dalgayı küçültür. Parmak hareket ederse sinyal bozulur ve BPM yanlış çıkar.

Hangi güvenlik kurallarına dikkat edilmeli?

Bu proje vücuda dokunan bir sensör kullandığı için şu kurallara uyun:

  • Devreyi yalnızca USB'den ya da powerbank'tan besleyin. 220V şebeke elektriğiyle hiçbir bağlantı yapmayın.
  • Ölçüm sırasında dizüstü bilgisayarı mümkünse şarj adaptörüne takılı olmadan, pille kullanın.
  • Sensörü yalnızca parmak ucuna ya da kulak memesine takın; göğse ya da yaralı deriye takmayın.
  • Egzersiz deneyini bir öğretmen ya da veli gözetiminde yapın. Sağlık sorunu olan arkadaşlarınız egzersize katılmasın.
  • Pil kullanırsanız kısa devre etmeyin; ısınan pili hemen çıkarın.
  • Bu cihaz tıbbi değildir; ölçüme göre ilaç ya da tedavi kararı verilmez.

Ödevinizi nasıl sunarsınız?

Ödevinizi, dinlenme ve hafif egzersiz sonrası nabız değişimini ölçtüğünüz bir deneyle sunabilirsiniz. Bu deney, kalbin vücudun ihtiyacına göre hızlandığını sayılarla gösterir.

  • Dinlenme ölçümü: 2 dakika oturduktan sonra BPM'i kaydedin.
  • Egzersiz: 1 dakika yerinde yürüyün, sonra hemen ölçün.
  • Toparlanma: 5 dakika boyunca her dakika BPM'i yazın.
  • Doğrulama: Bilek nabzınızı 15 saniye sayıp 4 ile çarparak sensörle karşılaştırın.

Örnek hipotez: "Egzersizden sonra nabız yükselir ve birkaç dakikada dinlenme değerine yaklaşır." Değerleri zaman-BPM grafiğine dökün. Proje fikirleri için TÜBİTAK 4006 proje fikirleri yazısına bakabilirsiniz. Diğer sensörler Arduino sensör ve modüller kategorisinde bulunur.

Sık sorulan sorular

Normal nabız kaç BPM olmalıdır?

Dinlenme halindeki yetişkinlerde nabız genellikle dakikada 60 ile 100 atım arasındadır. Çocuklarda bu değer biraz daha yüksek olabilir; düzenli spor yapanlarda ise daha düşük olabilir. Bu projede ölçtüğünüz değer yalnızca eğitim amaçlıdır. Değerleriniz size garip geliyorsa sonuca güvenmeyin ve gerekirse bir sağlık uzmanına danışın.

BPM neden sürekli değişiyor?

Kalp atışları arasındaki süre doğal olarak biraz değişir; nefes alıp verirken bile nabız hafifçe artar ve azalır. Ayrıca parmak hareketi, ortam ışığı ve sensörün bastırılma şiddeti sinyali etkiler. Daha kararlı sonuç için son beş BPM değerinin ortalamasını alabilir, parmağınızı sabit tutabilir ve sensörün üstünü kapatabilirsiniz.

Seri Çizici'de düz çizgi görüyorsam ne yapmalıyım?

Düz çizgi, sensörün sinyal üretmediğini gösterir. Önce sinyal kablosunun A0'a takılı olduğunu kontrol edin. Sensörün yeşil ışığı yanmıyorsa 5V ve GND kablolarını kontrol edin. Seri Çizici'nin hızı 9600 baud olmalıdır. Sinyal var ama BPM sıfırsa eşik değeriniz dalganın tepelerinden yüksektir; eşiği düşürün.

MAX30102 ile oksijen ölçebilir miyim?

MAX30102 oksijen doygunluğu tahmini için gereken kırmızı ve kızılötesi ışık verisini üretir. Ancak bu veriden güvenilir bir yüzde hesaplamak, tıbbi cihazlarda yapılan kalibrasyonu gerektirir. Öğrenci projesinde çıkan değer yalnızca deneme amaçlıdır. Oksijen ölçümüne güvenilmesi gereken durumlarda onaylı bir tıbbi oksimetre kullanılmalıdır.

Ortam ışığı ölçümü etkiler mi?

Evet, güçlü ortam ışığı sensöre karışarak dalgayı bozabilir. Güneş ışığı ve floresan lambalar bunun yaygın nedenleridir. Sensörü parmağınıza bir bant ya da siyah kumaşla sararak dış ışığı engelleyin. Ölçümü güneşe karşı yapmayın. Böylece sinyal daha temiz olur ve eşik ayarı kolaylaşır.

Özet

  • Nabız sensörü, kan miktarındaki değişimi ışıkla algılar; bu yönteme fotopletismografi denir.
  • Pulse sensör 5V, GND ve A0 ile üç kabloyla bağlanır; kütüphane gerekmez.
  • BPM = 60.000 / iki atış arası süre (ms); 800 ms 75 BPM eder.
  • Seri Çizici'de dalgaya bakarak eşik değerini ayarlayın.
  • Ödev için dinlenme, egzersiz ve toparlanma nabzını ölçüp grafik çizin.
  • Proje eğitim amaçlıdır, tıbbi cihaz değildir.

Bu yazıdaki ürünler

Diğer yazılar