Nabız oksimetresi ile kalp atış hızı izleme için Arduino kütüphanesi

Nabız oksimetresi ile kalp atış hızı izleme için Arduino kütüphanesi

Nabız oksimetresi ile kalp atış hızı izleme için Arduino kütüphanesi

Uyku yönetimi projemde izlenen parametrelerden biri

Bu nabız. ölçmek için Hemoglobin ve oksihemoglobinin farklı dalga boylarındaki ışığa karşı davranışını temel alan bir cihaz geliştirdim. Temel olarak belirli bir türdeki ışığın ne kadarının vücudun iyi sulanan bir bölgesinden geçebildiğini veya yansıtabildiğini ölçmekle ilgilidir. Bu olgunun tam bir döngüsünün meydana gelme sıklığı, ölçümün yapılmasına olanak sağlar. nabız.

İçindekiler

    Projenin tasarım ve test aşamasında nabız ölçüm cihazı Montajın doğru olduğunu doğrulamama yardımcı olacak bazı küçük programlar geliştirdim. Öncelikle zaman zaman (en azından her seferinde) ölçülen değerleri alan aşağıdaki kodu yazdım. MAXIMUM_MEASUREMENT_TIME ve en fazla her biri MINIMUM_MEASUREMENT_TIME) biri ile bir önceki arasında minimum değişiklik gösterdiğinde (karşılık gelen değer) EN KÜÇÜK BEDEN) ve Python uygulamasıyla bir bilgisayardan izleniyor bunları daha sonra analiz edebilmek için.

    Değerler ayarlandıktan sonra (çok yoğun ölçümlerden başlayarak) nabız oksimetresi zamanla bir e-tablo kullanarak grafik çizebildim, LibreOffice Calc de LibreOffice, özel.

    nabız oksimetresi ölçümlerinin grafiği

    Yukarıdaki resimde temsil edildiği gibi toplanan verilerle, bir sonraki işlem, değer yoğunluğunun, değeri güvenilir ancak "ekonomik" bir şekilde (gerekli verilerden daha fazlasını örneklemeden) hesaplamamıza izin verip vermediğini belirlemekti. nabız; Aşağıdaki grafikte de görüldüğü gibi, alınan önlemler beklenebilecek sonuçların alınmasına hizmet ediyor gibi görünüyordu.

    .

    nabız oksimetresi ile zaman içinde oksihemoglobin varlığının ölçümü

    Daha sonra veri örneklemesinden elde edilen bilgilerle nabız hızını ölçecek bir algoritmanın geliştirilmesi gerekiyordu. Grafiğe sadık kalarak, basitlik açısından, aşağıdakine benzer bir düzeni temsil ettiği varsayılmaktadır. QRS kompleksi, en basit şey, en belirgin kısımlar arasındaki süreyi daha yüksek değerlerle (ventriküllerin depolarizasyon qRs bölgesine karşılık gelir) ölçmek, daha düz ve "gürültülü" bölgeyi atmak gibi görünüyor, bu nedenle daha zor ölçmek. Aşağıdaki test koduna karşılık gelen benimsenen çözüm, aşağıdaki prosedüre göre çalışır:

    • Yalnızca değer zirvelerine dikkat etmek için her durumda ölçülen alanı tespit edin qR'ler ve vadiyi atın. Bunu yapmak için belirli bir sabitin üzerindeki değerler ölçülebilir, ancak bireyin ve/veya koşulların orantılı da olsa değerleri yükseltmesi veya düşürmesi riski vardır. Bunu önlemek için alandaki bir değer, ortalama değeri belirli bir katsayı kadar aşan değerden büyük kabul edilir. Bu şekilde ölçüm hassas bir şekilde kendi kendine kalibre edilir ve katsayıya ince ayar yapılarak daha da ayarlanabilir; benim durumumda bunu testler sırasında deneysel olarak elde ettim.

      Ölçüm için azalan bölgenin değerlerini seçin (Rs) zirvenin qR'lerEğrinin maksimumuna mümkün olduğu kadar yakın. Yükselen bölgenin terk edildiğini bilmek için, yeni bir değerin öncekinden daha küçük olduğunu doğrulamak ve genel olarak azalan bölgede birkaç değer olduğundan aranan değerin henüz bulunamadığını doğrulamak yeterlidir. bölgesi qR'ler örnekleme yoğunluğuna bağlıdır. Darbeyi zamanlamak için, noktanın bulunduğu anın değeri (tarafından döndürülen milisaniye) saklanır. milis ()) ve onu bir sonrakiyle karşılaştırır.

      Ölçülen değerin en yüksek eğrinin azalan bölgesindeki en büyük değer olmasını sağlamak için bir değişken kullanılır boolean (tedbir_pulse bu örnekte ve active_pulse_measurement Ana eğrinin artan bölgesine girildiğinde etkinleştirilen ve zamanlanmış olan ilk azalan değer bulunduğunda devre dışı bırakılan.

      Nabız süresinin dakika başına atım (ppm) olarak temsil edilmesi olağan olduğundan, elde edilen atımlar arasındaki sürenin değeri, temsilin toplam süresinin (bir dakika, 60000 milisaniye) elde edilen aralığa bölünmesiyle hesaplanarak düzeltilir. Geçerli milisaniyeyi (geçerli değerden) önceden zamanlanmış olanlar arasından çıkararak.

      Yanlış ölçümlerden kaçınmak için (örneğin vakumda ölçüm yapan cihaz gibi), kesin olarak kabul edilmeden önce sonucun maksimum ve minimum değerler arasında olduğu doğrulanır. İstirahat halindeki sağlıklı bir yetişkin için normal değerin 60 ila 100 ppm arasında olduğu ortalama olarak kabul edilse de aşağıda kabul edilebilir değerler bulunmaktadır, istirahat halindeki bir sporcuda 40 ppm'i, egzersiz sırasında 200 ppm'e kadar bulmak kolaydır. yoğun egzersiz ve heyecan halindeki hareketsiz yetişkinlerde 100 ppm'den fazlası, uyku yönetimi projesi için kesinlikle ilginç bir faktör bu da beni bunu geliştirmeye yönlendiriyor nabız ölçüm cihazı. Bu nedenle ilgili yönleri tam olarak gösterebilecek aşırılıkların kaybolmaması için bu değerlerin çok gevşetilmesi tavsiye edilir.

      Yeni ortalama değer, örneklenen değer sayısına göre mevcut ortalamanın alaka düzeyi azaltılarak hesaplanır ve son değer eklenir, ayrıca o ana kadar ölçülen değer sayısı arttıkça onu daha da azaltan bir katsayı ile ağırlıklandırılır. .

    Son olarak, daha önce anlatılan algoritmayı kullanarak, nabzın varlığını tespit ederek nabzı hesaplayacak kütüphaneyi geliştirdim. hemoglobin o oksihemoglobin (kullanılan ışığın dalga boyuna bağlı olarak) aşağıdaki koddan.

    Kütüphane örnekleme fonksiyonunun periyodik olarak çağrılmasını beklemektedir. monitör_pulse() fonksiyonla başvurulabilecek nabzı hesaplamak için last_pulse() veya fonksiyonla ortalama_pulse() ortalama nabız. Sınırlı bir kaynak olmasının yanı sıra, kesintileri kullanmayı reddettim çünkü anlık değerlere değil, daha ziyade zaman içinde sürdürülebilir olanlara ihtiyacım vardı. nabız uyku yönetimi projemde

    . Her durumda, yaptığım testlere göre buna gerek yok gibi görünüyor; cihazdan veya davranışından dolayı nabızBelirli bir frekansta örnekleme yeterli bilgi sağlar ve bu bilginin arttırılmasıyla daha fazlası (ilgili) elde edilmez ve hesaplama için ilgili verileri kaybetmeden çok fazla azaltılması da mümkün değildir; kodun ilk sürümlerinde okunuşunu izlemek için nabız oksimetresi Maksimum ölçüm süresine bağlı kalmanın gerekli olmadığını keşfettim çünkü ardışık değerlerin değişimleri doğru bir şekilde dikkate alınırsa minimuma çok yakındı.

    Aşağıdaki örnek program, önceki kitaplığın ölçüm için nasıl kullanılacağını gösterir. nabız ile nabız oksimetresi. Sınıfı başlatmanın yanı sıra Pulso seviyesinin izlenmesi oksihemoglobin/hemoglobin ve daha küçük bir periyodiklikle değeri nabız hesaplanmış ve ortalama.

    Ölçümlerin ilgili olduğundan emin olmak için herhangi bir değer görüntülenmeden önce bir bekleme programlanır. Değer yanlış olabileceğinden (örneğin kullanıcının cihazı çıkarması durumunda), değerler yalnızca geçerli olduğu düşünülen aralıktaysa gösterilir.

    Yorum Ekle

    Kaçırmış Olabilirsiniz