MAX30102 + Arduino Uno · İlerleme Raporu 3, Bölüm 2.7–2.8

Oksimetre Tezgâh Rehberi

Montaj günü üçümüzün ihtiyaç duyacağı her şey: her parça nedir, her kablo nereye gider, sistemi hangi sırayla çalıştırırız, hangi kodu yükleriz ve bir şey çalışmazsa ne yaparız.

Kodlar pulse_oximeter klasöründe: firmware/ içinde üç Arduino sketch'i, matlab/ içinde iki MATLAB betiği. Kablolama ve test sırası raporun Şekil 5 ve Tablo 10'undan gelir; bu rehber pratik ayrıntıları ekler. İngilizce sürümle aynı içeriktedir.

English: Oximeter Bench Guide

Tek satırda gün

Pinleri lehimle → USB takılı değilken breadboard'u kur → kısa devre kontrolü → aşama aşama çalıştır (Tablo 10) → ayarla → 60 s kayıt al.

Üç rol, her saat değişin

Kurucu parçalarla uğraşır. Kontrolcü rehberi yüksek sesle okur ve her kabloyu tabloyla karşılaştırır. Operatör bilgisayarı kullanır: yükleme, Serial Monitor, MATLAB.

00Bitmiş düzen

Her şey çalıştığında görünüm: sensör bir parmak ucunun altında, referans oksimetre yanındaki parmakta, veriler dizüstü bilgisayarda.

Yandan görünüm: parmak ucu sensörün üzerindemasakablo şeridi masaya bantlı, 10 cm sonra breadboardtaban bloğuparmak ucu cam pencereye düz yaslanırcırt bant: sıkı ama sıkmadanyanlarda siyah bantmodül, pencere yukarıpinler bloğun kenarından sarkarkırmızı ve IR ışık girer ve saçılır;bir kısmı dedektöre geri döner
Yandan görünüm. Parmak ucunun yumuşak kısmı cam pencereye yaslanır. Kırmızı ve kızılötesi ışık parmağa girer, saçılır ve bir kısmı LED'lerin yanındaki dedektöre geri döner (yansımalı PPG, Bölüm 1.1). Cırt bant parmağı sabit bir basınçla tutar, siyah bant oda ışığını keser.
Üstten görünüm: test masasıt = 30 s HR 72 SpO2 96.4dizüstü pilde: Serial Plotter / MATLABArduino Unobreadboard elin hemen yanında96 72bizim sensör işaret parmağındaARTIMED referans orta parmakta10 cm kablo şeridi, bantlıel sabit, avuç içi aşağıOOperatörMATLAB'ı çalıştırır, her durumu başlatırKKaydediciARTIMED'i her 10 s'de okurLamba ve pencere gönüllünün arkasında olsun, elin üstünde değil.Sonraki gönüllü: iki parmağı yer değiştirin ya da diğer eli kullanın.Gönüllü: oturur, konuşmaz, kıpırdamaz
Test masasının üstten görünümü. İki cihaz da aynı eldedir (Bölüm 2.6), böylece aynı nabzı görürler. Sensör kabloları yalnızca 10 cm olduğu için breadboard elin hemen yanındadır.

Bir gönüllü, baştan sona

  1. Ölçümden önce: neyin ölçüleceğini ve istediği an bırakabileceğini anlatın, onay alın, bir kod verin (S01, S02…), ten rengini açık/orta/koyu ölçeğinde not edin. İki parmakta oje veya takma tırnak olmasın.
  2. Oturtun: sağ el avuç içi aşağı masada dursun. Sensör işaret parmağına, ARTIMED orta parmağa. İkisinin de oturması için 30 s bekleyin.
  3. Tablo 6'daki dört durumu kaydedin, her biri 150 s. Operatör record_session.m içindeki state değerini ayarlar ve başlatır. MATLAB her 10 s işareti bastığında Kaydedici ARTIMED'in SpO₂ ve nabız değerini yazar. Her durumun ilk okuması daha sonra atılır.
  4. Sonraki gönüllü: parmakların yerini değiştirin (ya da sol eli kullanın), böylece parmaklar arasındaki fark cihaz hatası gibi görünmez.
durum 1 · 150 sDinlenme

El düz ve hareketsiz, konuşma yok.

durum 2 · 150 sHafif aktivite sonrası

Kısa bir esneme, sonra oturup ölçüm.

durum 3 · 150 sParmak hareketi

Ölçüm sırasında parmak belirli bir düzende yavaşça oynatılır.

durum 4 · 2 × 150 sOrtam ışığı

Oda ışığı açık; bir kez siyah bant örtüsüyle, bir kez örtüsüz.

Kalibrasyon ayrımı

SpO₂ eğrisini oluşturmak için verisi kullanılan gönüllüler, doğruluğu test etmek için kullanılmaz (Bölüm 2.6). İlk testten önce hangi kodların hangi grupta olacağına karar verin.

01Günden önce

Bunların hepsini evde, yanınızda getireceğiniz bilgisayarda yapın. Her kutu işaretini kendi tarayıcınızda hatırlar.

02Parçaları tanıyın

Her parça için: neye benzer, devremizdeki görevi, nasıl kullanılır ve kaçınılması gereken tek hata.

Arduino Uno R3

1 · beyin · elimizdeki ya da CH340 klon
Görünüş
Kredi kartı boyutunda mavi (veya siyah) kart. Kare USB-B girişi, yuvarlak güç jakı ve kenarlarda iki uzun sıra siyah soket (header) var. Pin adları soketlerin yanında yazılı.
Görevi
Sensörü I²C üzerinden okur, filtreleri ve atım tespitini çalıştırır, sayıları USB ile bilgisayara gönderir.
Kullandığımız pinler
5V, 3.3V, iki GND (güç soketi, VIN'in yanında); A4 = SDA ve A5 = SCL (analog soket); D2 (dijital soket, sadece "2" yazar).
Kaçının
D0/D1'e asla bir şey bağlamayın (USB verisini taşırlar), 5V'yi asla 3.3V'ye bağlamayın. Her şeye USB kablosu güç verir; pil veya adaptör gerekmez.

MAX30102 modülü

2 · sensör · biri yedek
Görünüş
Küçük siyah kart (yaklaşık 2 × 1,5 cm). Bir yüzünde cam pencereli minik siyah bir dikdörtgen var: iki LED'i ve fotodedektörüyle MAX30102 çipi budur. Bir kenarında 7 delik: VIN GND SDA SCL INT IRD RD (geçerli olan, kartınızda yazan sıradır).
Görevi
Parmak ucuna kırmızı (660 nm) ve kızılötesi (880 nm) ışık gönderir, geri döneni ölçer ve sayıları Uno okuyana kadar saklar.
Kullanım
Pin dizisi, pinler cam pencerenin tersine, arka taraftan çıkacak şekilde lehimlenir. Parmak ucu pencerenin üzerine düz yaslanır.
Kaçının
IRD ve RD boş kalır. 1.8V / 3.3V yazan 3 pedli "pull-up" lehim köprüsünü bulun ve lehimin 3.3V tarafını birleştirdiğini kontrol edin (06. bölümün 2. adımı bunu elektriksel olarak da doğrular).

Lojik seviye dönüştürücü

1 · 4 kanallı, çift yönlü · tercüman
Görünüş
İki sıra hâlinde 6'şar delikli, 12 delikli küçük kart. Üzerinde dört minik 3 bacaklı siyah parça (BSS138 transistör) ve birkaç direnç var. Bir sıra yüksek taraf: HV HV1 HV2 HV3 HV4 GND; diğeri alçak taraf: LV LV1 LV2 LV3 LV4 GND.
Görevi
Uno bir I²C hattını ancak 3,5 V'un üstünde "yüksek" okur; sensörün hatları ise yalnızca 3,3 V'a çıkar. Dönüştürücü her sinyali karşıya geçirir: Uno tarafı 5 V, sensör tarafı 3,3 V görür. Kanal 1 = SDA, 2 = SCL, 3 = INT, 4 boş.
Kullanım
Üç güç bağlantısı olmadan hiçbir şey yapmaz: HV 5 V'a, LV 3,3 V'a, GND toprağa (her iki GND pinini de bağlıyoruz).
Kaçının
Tarafları karıştırmak. Bazı kartlarda VA/VB veya A/B yazar: besleme pinini 3,3 V'a bağladığınız taraf alçak taraftır ve sensör oraya bağlanır.

Breadboard, 830 delik

1 · lehimsiz devre tahtası
Görünüş
Delik dolu beyaz plastik blok. Ortasında boydan boya bir oluk var. İki kenarında uzun kırmızı ve mavi çizgiler var.
Görevi
Kabloları ve parçaları lehimsiz birleştirir. İçindeki gizli metal klipsler belirli delikleri birbirine bağlar (03. bölüm).
Kaçının
Kenardaki rayların boydan boya devam ettiğini varsaymak: bazı tahtalarda ortadan kesiktir. Kullanmadan önce multimetrenin bip moduyla kontrol edin.

140 parça jumper seti

1 kutu · sert, hazır kesilmiş ve bükülmüş
Görünüş
Uçları açık, U şeklinde kısa kablolar; uzunluğa göre ayrılmış. Renk işlevi değil, uzunluğu gösterir.
Görevi
Breadboard üzerindeki tüm bağlantılar ve breadboard'dan Uno soketlerine giden kablolar (Uno için en uzunları seçin ve Uno'yu breadboard'un hemen yanına koyun).
Kullanım
İki delik arasında düz yatan uzunluğu seçin; uçları durana kadar (yaklaşık 5 mm) dik bastırın.

Dişi-erkek kablolar, 10 cm

40'lık 1 paket · sensör kablosu
Görünüş
40 kablodan oluşan yassı, gökkuşağı renkli şerit. Her kablonun bir ucunda soket (dişi), diğerinde pin (erkek) var.
Görevi
Modülü (dişi uç modülün pinlerine) breadboard'a (erkek uç bir deliğe) bağlar.
Kullanım
Birbirine yapışık kalan 5 kabloluk bir şerit ayırın; masaya bantlaması çok daha kolay olur. Yalnızca breadboard ucundaki son birkaç cm'yi ayırın. Hangi rengin VIN, GND, SDA, SCL, INT olduğunu not edin.

10 µF kondansatör (C1)

1 · elektrolitik, 25 V · kutuplu
Görünüş
İki bacaklı küçük silindir (çoğunlukla siyah veya mavi). Bir yanında "–" işaretli açık renkli bir şerit var.
Görevi
Sensörün güç kablolarının indiği yerde küçük bir enerji deposu; LED darbeleri besleme gerilimini düşürmesin diye.
Kaçının
Yönü vardır. "–" şeridinin altındaki bacak (aynı zamanda kısa bacak) GND'ye, diğer bacak VIN'e gider.

100 nF kondansatör (C2)

10'lu paket · seramik · 1 tane kullanılır
Görünüş
İki bacaklı minik sarı, mavi veya turuncu damla/disk; üzerinde 104 yazar (10 × 10⁴ pF = 100 nF).
Görevi
C1 ile birlikte çalışır, C1'in yetişemediği hızlı dalgalanmaları süzer.
Kullanım
Yönü yoktur: C1 ile aynı iki şeride, istediğiniz yönde.

4,7 kΩ dirençler (R1, R2)

10'lu paket · yalnızca yedek
Görünüş
Renkli bantlı minik bej veya mavi tüp: sarı, mor, kırmızı, altın (4 bant) ya da sarı, mor, siyah, kahverengi, kahverengi (5 bant).
Görevi
Sensör tarafında SDA ve SCL için ek pull-up. Yalnızca 06. bölümün 2. veya 3. adımı modülün kendi pull-up'larının olmadığını gösterirse kullanılır. Normalde poşette kalırlar.
Kullanım
Yönü yoktur. Bir bacak SDA şeridine (sensör tarafı), diğeri 3,3 V rayına; SCL için de aynı.

Multimetre

1 · elimizde var · elektriği gören gözümüz
Görevi
Hassas bir şey bağlanmadan önce gerilimleri kontrol eder; kısa devreleri ve kopuk kabloları bulur.
Kullanım
03. bölüme bakın. Siyah prob COM'a, kırmızı prob V yazan sokete (çoğunlukla VΩmA). Asla 10A soketine değil.

Bant, cırt bant, piller

parmak tutucu + referans
Siyah elektrik bandı
Parmak ucunun etrafından oda ışığını keser, modülü ve kablolarını sabit tutar.
Cırt bant, 10 mm
Bir yüzü kanca, diğer yüzü ilmek; kendi üstüne yapışır. Yaklaşık 15 cm kesin. Parmağı sensörün üzerinde sabit ve hafif bir basınçla tutar.
AAA piller
ARTIMED referans oksimetre için, kendi pilleri bitmişse.

03Temel beceriler

Breadboard bağlantıları nasıl kurar

Multimetre kullanımı

Gerilim ölçmek (devre enerjili)

  1. Kadranı V⎓ konumuna getirin (DC volt; yanında düz çizgi olan V). Kademe varsa 20 V seçin.
  2. Siyah prob herhangi bir GND noktasına, kırmızı prob ölçmek istediğiniz noktaya.
  3. Değeri okuyun. Eksi işareti probların ters olduğunu gösterir; bir şey bozulmaz.

Bağlantı kontrolü (devre fişten çekili)

  1. Kadranı bip moduna getirin (hoparlör ya da ))) simgesi, çoğunlukla diyot simgesiyle aynı yerde).
  2. İki probu birbirine değdirin: öter. Bu "bağlı" demektir.
  3. İki noktaya dokunun. Öterse bağlı, sessizse bağlı değil.
Asla

Enerjili bir devrede bip veya direnç modunu kullanmayın ve bu ölçümlerde kırmızı probu 10A ya da mA soketine takmayın: multimetre kısa devreye dönüşür.

Pin dizilerini lehimlemek (okulda)

  1. Modül için 7 pinlik (kendi pini yoksa), dönüştürücü için iki tane 6 pinlik dizi koparın. Pense ile ya da çentikten bükerek ayırın.
  2. Breadboard'u kalıp olarak kullanın. Pinlerin uzun uçlarını breadboard'a batırın, kartı kısa uçlar deliklerinden yukarı çıkacak şekilde üstüne oturtun.
    • Modül: cam pencere yukarı bakacak, böylece lehimden sonra uzun pinler parmaktan uzakta, arkadan çıkar.
    • Seviye dönüştürücü: parçalar yukarı bakacak. İki pin sırası oluğun iki yanına girer, kart düz durur.
  3. Havyayı ısıtın (yaklaşık 330–350 °C). Ucunu ıslak süngere ya da pirinç teline silin ve uca biraz lehim değdirin.
  4. Önce bir köşe pinini lehimleyin: havya ucunu pine ve bakır halkaya 1–2 saniye tutun, lehimi bağlantıya (havyaya değil) verin, önce lehimi sonra havyayı çekin. Kartın düz olduğunu kontrol edin; değilse yalnızca o lehimi eritip düzeltin.
  5. Karşı köşeyi, sonra kalanları yapın. Her lehim, pini saran küçük, parlak bir koni olmalı. Üstte duran bir top ya da mat gri bir yığın yeniden ısıtılmalı.
  6. Köprü arayın: komşu iki pini birleştiren lehim. Komşu her çifti bip moduyla kontrol edin; hiçbiri ötmemeli. Köprüyü temiz, sıcak bir uçla pinlerin arasından çekerek kaldırın.
Pull-up pedi

Modül lehim istasyonundayken 3 pedli köprüye bakın. Lehim orta pedi 1.8V tarafına bağlıyorsa eritip kaldırın ve orta pedi 3.3V'ye bağlayın. 1,8 V'ta da devre dönüştürücü sayesinde genellikle çalışır, ama raporda anlatılan 3,3 V'tur.

04Kablolama planı

Bu, Şekil 5'in delik delik yerleşimidir. Diyagram neyin nereye gittiğini, tablo ise kontrol listesini gösterir. Her şeyi USB kablosu takılı değilken kurun.

Breadboard kablolama planı +5V GND +3V3 GND a b c d e f g h i j 1 1 5 5 10 10 15 15 20 20 Arduino Uno (pinler konuma göre değil, işleve göre çizildi) 5V GND 3.3V GND A4 / SDA A5 / SCL D2 USB → bilgisayar seviye dönüştürücü HV üstte · LV altta HV1 LV1 HV2 LV2 HV LV GND GND HV3 LV3 HV4 LV4 C1 10 µF, + bacak 20 C2 100 nF parmak tutucu sensör MAX30102 VIN GND SDA SCL INT IRD RD IRD, RD: boş bırakın kesikli: 10 cm dişi-erkek kablolar (dişi uç modülde)
Şerit numaraları ve harfler çoğu 830 delikli tahtadaki gibidir. Kablonun doğru şeride ve doğru yarıya düşmesi yeterli; tam delik önemli değil. Seviye dönüştürücünün pin sırası yaygın olanıdır; kartınızdaki etiketleri esas alın.

Bağlantı tablosu

#NeredenNereyeİşlevi
1Uno 5Vüst + ray (5V)5 V besleme hattı
2Uno GNDüst – raytoprak, üst
3Uno 3.3Valt + ray (3V3)3,3 V besleme hattı
4Uno ikinci GNDalt – raytoprak, alt (iki toprak rayını Uno'da birleştirir)
5Seviye dönüştürücüoluğun üstünde, şerit 6–11HV sırası üst yarıda, LV sırası alt yarıda
6şerit 8 üst (HV)üst + ray (5V)Uno tarafını besler
7şerit 9 üst (GND)üst – ray
8şerit 8 alt (LV)alt + ray (3V3)sensör tarafını besler
9şerit 9 alt (GND)alt – ray
10Uno A4şerit 6 üst (HV1)SDA, Uno tarafı
11Uno A5şerit 7 üst (HV2)SCL, Uno tarafı
12Uno D2şerit 10 üst (HV3)INT, Uno tarafı
13şerit 20 altalt + ray (3V3)sensör güç girişi (VIN). 5 V testi için bu kablonun ray ucunu üst + raya taşıyın.
14şerit 21 altalt – raysensör toprak girişi
15C1 10 µF+ bacak şerit 20, – bacak (şeritli) şerit 21dekuplaj
16C2 100 nFşerit 20 ve şerit 21dekuplaj
17modül VIN (D-E)şerit 20 alt
18modül GND (D-E)şerit 21 alt
19modül SDA (D-E)şerit 6 alt (LV1)SDA, sensör tarafı
20modül SCL (D-E)şerit 7 alt (LV2)SCL, sensör tarafı
21modül INT (D-E)şerit 10 alt (LV3)INT, sensör tarafı
–modül IRD, RDhiçbir yereboş bırakın
ops.R1 4,7 kΩ / R2 4,7 kΩşerit 6 alt → 3V3 ray / şerit 7 alt → 3V3 rayyalnızca 06. bölüm gerekli derse

D-E: 10 cm dişi-erkek kablo, dişi ucu modülde.

Kurulum sırası

  1. Raylar ve Uno beslemesi (1–4. satırlar). Durun ve aşağıdaki kısa devre kontrolünü yapın.
  2. Seviye dönüştürücü ve beslemesi (5–9).
  3. C1 ve C2 ile sensör güç girişi (13–16). C1'in şeridinin 21. şeritte olduğunu kontrol edin.
  4. Uno tarafındaki sinyal kabloları (10–12).
  5. Yalnızca modülün güç kabloları (17–18). SDA, SCL ve INT şimdilik breadboard'a takılmaz: 06. bölüm onları aşama aşama bağlar.
İlk çalıştırmadan önce kısa devre kontrolü

USB çekili, multimetre bip modunda: üst + ray ile üst – raya dokunun; sonra alt + ile alt –; sonra üst + ile alt +. Bunların hiçbiri ötmemeli. Öterse bir kablo yanlış yerdedir. Fişe takmadan önce bulun.

05Parmak tutucu

İki görevi var (Bölüm 2.8): parmağı sabit bir basınçla hareketsiz tutmak ve oda ışığını dışarıda bırakmak.

  1. Modülü taban bloğuna cam pencere yukarı bakacak şekilde koyun; pinlerin olduğu kenar bloğun kenarından biraz taşsın. Böylece kablo soketleri bloğun yanından aşağı sarkar ve modül düz yatar.
  2. Modülü iki yanından bloğa bantlayın. Bandı cam pencereden uzak tutun; pencereye bulaşan yapışkan sinyali bozar.
  3. 5 kabloluk şeridi bloğa ve masaya bantlayın; parmağı çekince kablolar asılmasın.
  4. Bloğu breadboard'un hemen yanına koyun (kablolar yalnızca 10 cm).
  5. Cırt bant: bir ucunu bloğun altına bantlayın; şerit parmak ucunun üstünden dolanıp kendi üstüne kapansın.
  6. Parmağı yerleştirin: parmak ucunun yumuşak kısmı pencerenin ortasında, bant sıkı ama sıkmadan. Sonra kısa bir siyah bant parçasını parmak ucuyla bloğun etrafına gevşekçe sararak yanları ışığa kapatın.
Basınç

Fazla sıkmak parmak ucundaki kanı dışarı iter ve nabız neredeyse kaybolur. Fazla gevşek olursa her hareket sinyale yansır. Parmak kaymayana kadar sıkın, sonra biraz gevşetin. Her gönüllü için aynı bant gerginliğini kullanın.

06İlk çalıştırma, aşama aşama

Bu, raporun Tablo 10'unun adım adım uygulamasıdır. Aşamaları sırayla yapın; biri başarısız olursa devam etmeden düzeltin (09. bölüm). Her kablo değişikliğinde USB'yi çekin.

Uno ve raylarTablo 10 · 1

USB kablosunu takın. Uno'nun yeşil ON LED'i yanar. Multimetre V⎓ konumunda, siyah prob bir GND rayında:

BeklenenÜst + ray yaklaşık 5,0 V (4,7–5,2), alt + ray yaklaşık 3,3 V (3,2–3,4). Dönüştürücünün HV şeridi 5 V, LV şeridi 3,3 V. Şerit 20 alt (VIN girişi) 3,3 V.

Sensör beslemede, sinyaller bağlı değilTablo 10 · 2

USB'yi çekin. Yalnızca modülün VIN ve GND kablolarını takın (17–18). USB'yi takın. Modülün kendi SDA ve SCL pinlerinde ölçün (kırmızı probu pine ya da boştaki kablonun soketine değdirin).

BeklenenSDA ve SCL'de yaklaşık 3,3 V: pull-up pedi 3,3 V'ta. 1,8 V ped 1,8 V tarafında demektir (okulda düzeltin ya da devam edin; genellikle yine çalışır). 0 V modülde pull-up olmadığını gösterir: R1 ve R2 gerekir.

I²C tarayıcıTablo 10 · 3

USB'yi çekin. Modülün SDA, SCL ve INT kablolarını bağlayın (19–21). USB'yi takın. step1_i2c_scanner'ı açın, yükleyin, Serial Monitor'ü açın (sağ üstteki büyüteç), hızı 115200 baud yapın.

I2C scanner - looking for the MAX30102 at 0x57
  device at 0x57  <- MAX30102
Done, 1 device(s) found.
Beklenen0x57'de tek cihaz, her 3 s'de tekrar. Çalışırken sensör kablolarını hafifçe oynatın: sonuç değişmemeli.

Sensör kontrolüTablo 10 · 4

step2_sensor_check'i yükleyin. Serial Monitor 115200'de.

Part ID: 0x15  OK (MAX30102)
Revision ID: 0x03
Die temperature: 27.31 C
INT on D2: idle HIGH, data waiting LOW  -> INT wire OK
BeklenenPart ID 0x15, oda sıcaklığına yakın bir sıcaklık (çip birkaç derece sıcak çalışır; üstüne parmak koymak yükseltir) ve "INT wire OK". Revizyon numarası farklı olabilir.

Parmakla ham sinyalTablo 10 · 5

oximeter_main'i yükleyin. Sensörün kırmızı LED'i artık hafifçe yanmalı (IR LED görünmez; telefonun ön kamerası bazen mor gösterir). Serial Monitor'ü kapatın, Tools → Serial Plotter'ı açın, 115200 seçin, mesaj kutusuna w yazıp Enter'a basın. Parmağı sensöre koyun, bandı sarın, kıpırdamayın.

BeklenenParmak yokken iki çizgi de düşük. Parmakla ikisi de yükselir ve oturur, sonra küçük düzenli bir dalgalanma görünür: nabzınız. Yalnızca dalgalanmayı (AC) görmek için p yazın; okumak çok daha kolay. Hiçbir çizgi 262143'te düz kalmamalı (doyum).

LED akımı ve ADC aralığını ayarlamaTablo 10 · 6

Serial Monitor'de (ya da Plotter'ın mesaj kutusunda) ayarları ve DC seviyelerini görmek için s yazın. Sonra ayarlayın:

  • I / i: IR LED akımını 1 mA artır / azalt. R / r: kırmızı için aynısı. Her değişiklik filtreleri yeniden başlatır.
  • a: sonraki ADC aralığı (2048 → 4096 → 8192 → 16384 nA). Büyük aralık, doyuma ulaşmadan daha fazla ışık kaldırır.
Beklenenİki DC değerini de yaklaşık 50.000 ile 200.000 arasına (0–262.143'ün ortası civarı), kırmızı ve IR'yi birbirine yakın ve plot modunda belirgin bir dalgalanmayla hedefleyin. Son akımları not edin; kalıcı olması için sketch'in başındaki redCurrent, irCurrent ve adcRange değerlerine yazıp yeniden yükleyin. Uno'nun reset düğmesi koddaki değerlere geri döndürür.

Kırmızı/IR kontrolü (bir kez): kırmızı akım 0.0 mA olana kadar r yazın. red sütunu neredeyse sıfıra düşmeli. Onun yerine ir düşerse sketch'te SWAP_RED_IR = true yapın.

Parmak eşiği (bir kez): parmak yokken ve parmakla IR DC değerini (s) not edin. FINGER_DC_MIN'i ikisinin yaklaşık ortasına ayarlayın (koddaki 30.000 yalnızca başlangıç tahmini).

60 s dinlenme kaydı, sonra 5 VTablo 10 · 7

CSV'ye dönmek için c yazın. Arduino Serial Monitor ve Plotter'ı kapatın. MATLAB'da durationS = 60 ile record_session.m'yi, sonra dosya üzerinde analyze_recording.m'yi çalıştırın (08. bölüm).

Ardından USB'yi çekin, 13. kablonun ray ucunu 3V3 rayından 5V rayına taşıyın (VIN = 5 V), takın, VIN şeridinin 5 V gösterdiğini kontrol edin, yeniden ayarlayın, tekrar kayıt alın ve SNR'yi karşılaştırın.

BeklenenAnalizde nabız frekansınızda net bir tepe, her besleme için bir SNR değeri ve spektrumdan bulunan nabzın yazılımınkine birkaç bpm yakın olması.

07Yazılımı kullanma

Üç sketch

SketchNe zamanSize söylediği
step1_i2c_scannerSensör ilk kez bağlandığındaI²C kablolarında yanıt veren bir şey var mı, hangi adreste
step2_sensor_checkTarayıcı 0x57'yi bulduktan sonraDoğru çip mi (ID 0x15), sıcaklık, INT kablosu çalışıyor mu
oximeter_mainSonraki her şeyBölüm 2.7.3'teki asıl program: veri akışı, nabız, SpO₂ ve kalite bayrakları

Herhangi bir sketch'i yüklemek

  1. File → Open → .ino dosyası (klasör adı dosya adıyla aynı olmalı; olduğu gibi bırakın).
  2. Tools → Board → Arduino AVR Boards → Arduino Uno. Tools → Port → COM portunuz.
  3. Upload (→) tıklayın. Uno'nun TX/RX LED'leri yanıp söner; IDE "Done uploading" der.
  4. Serial Monitor ya da Serial Plotter'ı 115200 baud ile açın. İkisinden birini açmak Uno'yu yeniden başlatır; bu normaldir.

oximeter_main ne gönderir

Her örnek için bir satır, saniyede 100 satır. # ile başlayan satırlar mesajdır.

t_ms,red,ir,red_ac,ir_ac,hr,spo2,flags
24130,88412,119634,-41,-312,72,95.8,0
SütunAnlamı
t_msSensörün kendi saatine göre zaman: örnek numarası × 10 ms. 10'dan büyük bir atlama örnek kaybı demektir.
red, irHam 18 bit okumalar, 0–262.143. Dedektöre daha çok ışık = daha büyük sayı.
red_ac, ir_acİki filtreden sonraki nabız kısmı (yaklaşık 0,5–4,6 Hz). 0 etrafında salınır.
hrSon 4 atım aralığından nabız, bpm. 0 = henüz yeterli temiz atım yok.
spo2104 − 17·R, son 4 atımın medyanı. 0 = henüz değer yok. Bölüm 2.6 tamamlanana kadar kalibre değil; birkaç % sapma beklenir.
flagsToplamı: 1 parmak yok, 2 doyum, 4 düşük perfüzyon, 8 ortam ışığı. 0 = temiz. Örnek: 9 = parmak yok + ortam ışığı.

Komutlar

Serial Monitor'ün giriş kutusuna (ya da Plotter'ın mesaj kutusuna) tek bir harf yazıp Enter'a basın.

TuşEtkisi
cCSV çıktısı (varsayılan; MATLAB için)
pPlot modu: yalnızca kırmızı ve IR AC, etiketli, Serial Plotter için
wPlot modu: ham kırmızı ve IR
R r · I iKırmızı · IR LED akımını 1 mA artır / azalt (0–51 mA)
aSonraki ADC aralığı
tÇip sıcaklığı
sAyarlar, parmak var/yok, DC seviyeleri, kayıp örnekler, I²C hataları
?Kısa yardım satırı

Yanlış görünen ama normal olan şeyler

Sketch'in başındaki ayarlar

redCurrent, irCurrent, adcRange (başlangıç değerleri), FINGER_DC_MIN ve PI_MIN (raporun "ilk kayıtlardan belirlenecek" dediği iki eşik), CAL_A ve CAL_B (kalibrasyon doğrusu) ve SWAP_RED_IR. Değiştirin, yükleyin, bitti.

08MATLAB ile kayıt

  1. oximeter_main'i yükleyin, ayarlayın, sonra Serial Monitor ve Plotter'ı kapatın. COM portunu aynı anda yalnızca bir program kullanabilir.
  2. record_session.m içinde port (ör. "COM5"), durationS, subject (S01 gibi bir kod, asla isim) ve state değerlerini ayarlayıp çalıştırın.
  3. Her 10 s'de Uno zamanını içeren bir satır basar. İkinci kişi o anda ARTIMED ekranını okur ve SpO₂ ile nabzı kâğıda o zamanın yanına yazar.
  4. MATLAB'ın geçerli klasörüne ör. S01_rest_20261112_101500.csv kaydeder.
  5. Bu adı analyze_recording.m'ye yazıp çalıştırın: kayıp örnekleri, her kalite bayrağının oranını, SNR'yi, spektrumdan ve yazılımdan bulunan nabzı ve kâğıttaki okumaların yanına koymak için her 10 s penceresinin R değerini yazar.
MATLAB hata verip durursa

Yeniden çalıştırmadan ya da Arduino Serial Monitor'ü açmadan önce COM portunu serbest bırakmak için Command Window'a clear s yazın.

09Sorun giderme

Belirtiyi bulun, nedenleri sırayla deneyin. Takılırsanız: fişi çekin, Kontrolcü bağlantı tablosunu satır satır yüksek sesle okurken tekrar kontrol edin, sonra yeniden deneyin. İlk kurulumdaki sorunların çoğu yanlış şeride takılmış tek bir kablodur.

Bir şey ısınıyor, koku geliyor ya da devre bağlanınca Uno'nun ON LED'i sönüyorgüç · dur

USB kablosunu hemen çekin. Bu bir kısa devre: bir besleme doğrudan toprağa bağlanmış.

  1. 04. bölümdeki kısa devre kontrolünü tekrarlayın (bip modu, USB çekili).
  2. Sık nedenler: yanlış raya takılmış bir ray kablosu, modülde VIN ve GND'nin ters olması, C1'in ters takılması, bir şerit kaymış bir kablo yüzünden 5V ile GND'nin aynı şeritte olması.
  3. Hangi parçanın ısındığına bakın; hata onun çevresindedir. Modül ısındıysa kabloyu düzelttikten sonra yedeği kullanın.
Uno takıldığında COM portu görünmüyorbilgisayar
  1. Başka bir USB kablosu deneyin. Birçok kablo yalnızca şarj eder, veri taşımaz.
  2. Başka bir USB girişi deneyin, doğrudan bilgisayara (çoklayıcı olmadan).
  3. CH340'lı klon: Windows 10/11 sürücüyü genellikle bir dakika içinde kendisi kurar. Kurmazsa çip üreticisi WCH'nin sitesinden CH340 sürücüsünü (CH341SER) kurup kartı yeniden takın.
  4. Aygıt Yöneticisi → Bağlantı noktaları (COM ve LPT): sarı uyarı işareti sürücünün eksik olduğunu gösterir.
Yükleme başarısız: "programmer is not responding", "not in sync" ya da zaman aşımıbilgisayar
  1. Yanlış port seçili: Tools → Port; kartı çıkarıp takarak hangisinin kaybolduğuna bakın.
  2. Yanlış kart: Arduino Uno olmalı.
  3. MATLAB ya da başka bir program portu açık tutuyor: kapatın (MATLAB'da clear s).
  4. D0 veya D1'e bir şey takılı: çıkarın.
  5. "Uploading..." yazısı göründüğü anda Uno'nun reset düğmesine basın ve tekrar deneyin.
"Access denied" ya da "port busy"bilgisayar

Portu başka bir pencere tutuyor: Serial Monitor'ü, Serial Plotter'ı, MATLAB'daki serialport'u (clear s) ya da ikinci bir Arduino IDE penceresini kapatın.

Serial Monitor anlamsız karakterler gösteriyorbilgisayar

Serial Monitor'ün sağ altındaki hız menüsünü 115200 baud yapın.

IDE'de Verify/derleme hatasıbilgisayar
  1. Kart Arduino Uno olmalı (sketch'ler Uno'nun Wire kütüphanesini kullanır).
  2. Sketch klasörünün adı .ino dosyasının adıyla aynı olmalı.
  3. Bir ayarı değiştirdiyseniz satır sonundaki ; işaretini silmediğinizi kontrol edin.
  4. İlk kırmızı hata satırını kopyalayıp arayın / bize gönderin.
3,3 V ya da 5 V rayı 0 V veya yanlış değer gösteriyorgüç
  1. Uno'nun ON LED'i yanıyor mu? Yanmıyorsa USB kablosu/girişi güç vermiyor.
  2. Doğrudan Uno'nun 3.3V ve 5V soketlerinde ölçün. Orada doğru ama rayda yanlışsa: ray kablosu gevşek, yanlış rayda ya da ray ortadan kesik (boyunca bip ile kontrol edin).
  3. Yük altında birkaç onda bir volt düşük olması normal (USB'den gelen 5 V çoğunlukla 4,7–5,0 V'tur).
Tarayıcı hiç cihaz bulamıyorsensör bağlantısı
  1. Modül besleniyor mu? Modülün pinlerinde VIN–GND ölçün: 3,3 V (ya da 5 V).
  2. Dönüştürücü iki tarafta da besleniyor mu? HV şeridi 5 V, LV şeridi 3,3 V, GND bağlı. HV ya da LV olmadan hiçbir şey geçirmez.
  3. HV ve LV tarafları ters mi? Uno'nun kabloları HV sırasında olmalı.
  4. Bir yerde SDA ve SCL yer değiştirmiş mi? A4 → HV1 → LV1 → modül SDA, A5 → HV2 → LV2 → modül SCL yolunu takip edin.
  5. Pin dizisinde kötü lehim: USB çekiliyken her pinin modüldeki bakır ped tarafından, ulaşması gereken breadboard şeridine bip ile bakın.
  6. Pull-up yok: 06. bölümün 2. adımında SDA/SCL'de 0 V mu ölçtünüz? R1 ve R2'yi ekleyin.
  7. Hâlâ yoksa: yedek modülü takın.
Tarayıcı "Bus timeout: SDA or SCL is held low" diyorsensör bağlantısı
  1. Bir sinyal kablosu toprağa değiyor: 6. ve 7. şeritte kaçak bir GND kablosu ya da C1/C2 bacağı arayın.
  2. Modülün ya da dönüştürücünün LV tarafının beslemesi yok, bu yüzden hattı aşağı çekiyor.
  3. Modülün SDA/SCL kablolarını çıkarın: zaman aşımı biterse sorun sensör tarafındadır.
Tarayıcı bir cihaz buluyor ama 0x57'de değilsensör bağlantısı

Hatta başka bir şey var ya da çip MAX30102 değil. step2_sensor_check'i yalnızca 0x57 listelenirse çalıştırın. Yalnızca farklı bir adres varsa çip farklıdır: yedeği kullanın ve satıcıya bildirin.

Part ID 0x15 yerine 0x11sensör bağlantısı

Kartta eski çip MAX30100 var (Robotistan'da kaçındığımız karışıklığın aynısı). Yazmaçları farklı, ayarlarımız çalışmaz. Yedeği kontrol edin; ikisi de 0x11 okuyorsa satıcıyla iletişime geçin.

"INT wire" kontrolü başarısızsensör bağlantısı

Yalnızca kesme (interrupt) yöntemi için önemli; yazılımımız her 40 ms'de sorgular ve INT olmadan da çalışır. Yine de düzeltmeye değer: modül INT → LV3 → HV3 → D2 yolunu kontrol edin. "Stuck LOW" INT'in toprağa değdiğini ya da dönüştürücünün HV tarafının beslenmediğini gösterir.

Çalışırken "# I2C error" mesajları, ya da tarayıcı sonucu gelip gidiyorsensör bağlantısı
  1. Gevşek kablo: her dişi soketi pine sonuna kadar, her erkek ucu breadboard'a sonuna kadar bastırın.
  2. Parmak hareketi kabloları çekmesin diye şeridi bantlayın.
  3. Yıpranmış breadboard deliği: kabloyu aynı şeritte başka bir deliğe taşıyın.
  4. Modülde çatlak lehim: okulda yeniden ısıtın.
oximeter_main sürekli "sensor not ready ... retrying" yazıyorsensör bağlantısı

Uno part ID'yi okuyamıyor. step1_i2c_scanner'a dönüp önce bağlantıyı düzeltin.

Sensörün kırmızı LED'i yanmıyorsinyal
  1. Yalnızca oximeter_main çalışırken (ya da step2'de her döngüde 50 ms) yanar. Programın çalıştığını kontrol edin: Serial Monitor veri gösteriyor mu?
  2. Kırmızı akım r ile 0'a mı indi? Uno'nun reset düğmesine basın.
  3. VIN gerilimi çok düşük (LED tarafında 3,1 V'un altında): VIN'i 5 V ile deneyin.
Parmak varken bile okumalar düşük kalıyorsinyal
  1. Parmak ters yüzde: cam pencere parmağa bakmalı.
  2. LED akımlarını I ve R ile artırın.
  3. ADC aralığını düşürün: 2048 nA olana kadar a (aynı ışık için daha çok sayım).
  4. Pencerede bant mı var? Çıkarın; pencereyi kuru bir mendille silin.
Bir çizgi 262143'te düz duruyor (bayrak 2, doyum)sinyal
  1. Çok fazla ışık: o LED'in akımını düşürün (i ya da r).
  2. Ya da a ile ADC aralığını büyütün.
  3. Parmağı oda ışığına karşı kapatın; güçlü ışık da doyuma sokabilir.
DC iyi ama nabız görünmüyorsinyal
  1. Plot modunu p kullanın; ham modda nabız DC'nin yanında çok küçük kalır.
  2. Bant fazla sıkı: gevşetin. Fazla gevşek: biraz sıkın.
  3. Soğuk eller zayıf nabız verir: elleri ısıtın, başka bir parmak deneyin (işaret ya da orta).
  4. 10 s tamamen hareketsiz durun ve konuşmayın.
  5. LED akımını birkaç mA artırın.
Büyük sıçramalar ve sivri tepeler, bayrak 8 (ortam ışığı)sinyal

Oda ışığı dedektöre ulaşıyor. Siyah bandı parmak ucu ve bloğun etrafına sarın, pencerelere ve lambalara sırtınızı dönün. Floresan ve LED oda ışıkları 100 Hz'de titreşir; bu sinyale sızabilir.

Sinyal yalnızca bilgisayarın şarj aleti takılıyken gürültülüsinyal

Kayıtlar sırasında bilgisayarı pilde çalıştırın (Bölüm 2.8 ikisini karşılaştırmayı planlıyor). Sensör kablolarını USB kablosundan uzak tutun.

Nabız 0'da kalıyorsayılar
  1. Parmağı koyduktan sonra 7–10 s bekleyin ve kıpırdamayın.
  2. flags 0 değil mi? Bayrak atımları engeller: 1 = parmak algılanmadı (FINGER_DC_MIN'i düşürün), 2 = doyum, 4 = nabız çok zayıf, 8 = oda ışığı.
  3. Plot modunda nabız görünmüyor mu? "Nabız görünmüyor" maddesine bakın.
Nabız referansın yaklaşık iki katı (ya da yarısı)sayılar

İki kat: dedektör her atımdaki ikinci tümseği (dikrotik dalga) ya da gürültüyü de sayıyor. Yarısı: her ikinci atımı kaçırıyor. İkisi de zayıf ya da gürültülü bir nabızdan kaynaklanır. Önce teması ve ışık yalıtımını iyileştirin; AC grafiğinde her atımda tek temiz tümsek olduğunu kontrol edin. Devam ederse bir kayıt saklayın: eşik (%60) ve refrakter süre (300 ms) onun üzerinde ayarlanabilir.

Parmak üzerindeyken bayrak 1 (parmak yok)sayılar

IR DC, FINGER_DC_MIN'in altında. Parmak üzerindeyken IR DC'yi görmek için s yazın ve FINGER_DC_MIN'i bunun yaklaşık yarısına ayarlayın. Ya da IR akımını artırın.

Bayrak 4 (düşük perfüzyon) çoğu zaman açıksayılar

Nabız DC'nin %0,1'inin altında. Önce teması düzeltin (basınç, sıcak parmak). Plot modunda nabız net görünüyor ama bayrak yine geliyorsa PI_MIN'i ilk kayıtlara göre düşürün.

SpO₂ 100'ün üstünde ya da referanstan çok uzaksayılar
  1. Kalibrasyondan önce beklenir: 104 − 17·R ödünç bir başlangıç doğrusu.
  2. 06. bölümdeki kırmızı/IR kontrolünü yapın; yer değiştirmiş kanallar anlamsız R verir.
  3. Kırmızı ve IR DC seviyeleri çok farklıysa akımları dengeleyin (6. adım).
  4. Kalibrasyon için her 10 s penceresinin R değerini (analyze_recording.m) referans okumalarının yanına toplayın.
"lost samples" 0 değil (s yazın)sayılar

Uno geride kaldı. Portu yalnızca tek bir pencerenin okuduğundan emin olun ve art arda hızlı komut yazmaktan kaçının. Bir yükleme ya da reset sonrası birkaç tane zararsızdır.

Bir parça sallanıyor ya da breadboard'dan çıkıp duruyorkurulum

Pinler çok kısa ya da eğik: pense ile düzeltin. Dik bastırın. Modülün kablo şeridini bantlayın ki ağırlığı erkek uçları çekmesin.

Lehim top gibi görünüyor ya da iki pin birleşmişkurulum

Top: pini ve pedi birlikte 2 s ısıtın, biraz lehim ekleyin. Köprü: temiz, sıcak bir ucu pinlerin arasından çekin; sonra bip moduyla kontrol edin.

Bir kablonun gerçekten bağlı olduğundan emin değilimkurulum

USB çekili, bip modu: bir prob başlangıç pinine, diğeri bitiş pinine (breadboard deliğine değil). Öterse iyi. Hiçbir şey mantıklı gelmediğinde bunu her kablo için yapın.

10Güvenlik kuralları

11Duyacağınız terimler

GND (toprak)0 V referansı. Her parça bunu paylaşmalı, yoksa sinyaller anlamsız olur.
VINModülün güç girişi. Kendi regülatörleri 1,8 V'u ve LED gerilimini bundan üretir.
I²C, SDA, SCLUno ile sensör arasındaki iki telli bağlantı. SDA veriyi, SCL saati taşır. Her çipin bir adresi vardır; MAX30102'ninki 0x57.
Pull-up direnciI²C çipleri bir hattı yalnızca 0 V'a çekebilir; beslemeye bağlı bir direnç onu tekrar yukarı çeker. Modülde ve dönüştürücüde zaten var.
Seviye dönüştürücü5 V'luk bir tarafla 3,3 V'luk bir tarafın, ikisi de yanlış gerilim görmeden konuşmasını sağlar.
Dekuplaj kondansatörüBir parçanın güç pinlerinin yanında, hızlı düşüşleri yumuşatan küçük yerel enerji deposu.
Yazmaç (register)Sensörün içindeki numaralı bir bellek hücresi. Yazmaçlara değer yazmak onu ayarlar (Tablo 7).
FIFOSensörün 32 örneklik bekleme kuyruğu. Uno onu her 40 ms'de boşaltır.
DoyumIşık o kadar fazla ki okuma en büyük değerine (262.143) ulaşır ve değişimleri göstermez.
AC, DC, perfüzyon indeksiDC: sabit ışık seviyesi. AC: küçük nabız kısmı. Perfüzyon indeksi: AC bölü DC.
BaudUSB seri bağlantının hızı. Bizimki iki uçta da 115200.
Sketch, yükleme, COM portuBir Arduino programı; onu Uno'ya kopyalamak; Windows'un Uno'nun USB bağlantısına verdiği ad.