<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 物聯網與傳感器 > 設計應用 > 基礎知識之心率傳感器

          基礎知識之心率傳感器

          作者:時間:2024-03-12來源:電子森林收藏

          是一種用于測量人體心跳率的傳感器。它可以通過監測心臟的電活動或血流來提供實時的心率數據,并將心率數據轉換為電信號或數字信號。心率是指心臟每分鐘跳動的次數,通常以“bpm”(每分鐘跳動次數)為單位。

          本文引用地址:http://www.ex-cimer.com/article/202403/456220.htm

          圖1:max30102光電式心率血氧傳感器、XD-58C Pulse Sensor脈沖傳感器

          心率傳感器的工作原理可以分為兩種常見的方法:光電傳感和電生理傳感。

          光學心率傳感器

          光電傳感:這是最常見的心率傳感器工作原理。它使用了光敏元件(例如光電二極管或光敏電阻)來測量皮膚上的血流變化,從而推導出心率數據。有些設備也可以估計血液中的氧氣水平。

          光學心率傳感器是是智能穿戴設備中最為普及的用于心率檢測的傳感器之一。它采用電光溶劑脈搏波描記法(PPG)來測量心率及其他生物計量指標。

          PPG測量原理:通過電容燈光射向皮膚,透過皮膚組織反射回的光被光敏傳感器接受并轉換成電信號,再經過電信號轉換成數字信號,再根據血液的吸光率算出心率。簡化測量過程就是:發射光——轉換成電信號——轉換成數字信號。

          圖2:光學心率傳感器的基本結構與運行

          光學心率傳感器使用四個主要技術元件來測量心率:

          • 光發射器 - 通常至少由兩個光發射二極管(LED)構成,它們會將光波照進皮膚內部。
          • 光電二極管和模擬前端(AFE) - 這些元件捕獲穿戴者折射的光,并將這些模擬信號轉換成數字信號用于計算可實際應用的心率數據。
          • 加速計 - 加速計可測量運動,與光信號結合運用,作為PPG算法的輸入。
          • 算法 - 算法能夠處理來自AFE和加速計的信號,然后將處理后的信號疊加到PPG波形上,由此可生成持續的、運動容錯心率數據和其他生物計量數據。

          光學心率傳感器可生成測量心率的PPG波形并將該心率數據作為基礎生物計量值,但是利用PPG波形可以測量的對象遠不止于此。圖3是經過簡化的PPG信號,該信號代表了多個生物計量的測量結果。

          圖 3:典型的PPG波形

          下面我們進一步詳細解讀某些光學心率傳感器可以測得的結果:

          • 呼吸率 - 休息時的呼吸率越低,通常這表明身體狀況越好。
          • 最大攝氧量(VO2max)– VO2測量人體可以攝入的最大氧氣量,是人們廣泛使用的有氧耐力指標。
          • 血氧水平(SpO2) - 是指血液中的氧氣濃度。
          • R-R間期(心率變異率)- R-R間期是血脈沖的間隔時間;一般而言,心跳間隔時間越長越好。R-R間期分析,可用作壓力水平和不同心臟問題的指標。
          • 血壓 - 通過PPG傳感器信號,無需使用血壓計即可測量血壓。
          • 血液灌注 - 灌注是指人體推動血液流經循環系統的能力,特別是在瀕于死亡時流經全身毛細血管床的能力。因為PPG傳感器可跟蹤血液流動,所以可以測量血流相對灌注率及血液灌注水平的變化。
          • 心效率 - 這是心腦血管健康和身體狀況的另一個指標,一般來說,它測量的是心臟每搏的做功效率。
          光學心率傳感器選擇綠光作為光源的原因

          圖 4:光譜

          選擇綠光作為測量光源是考慮到以下幾個特點:

          1. 皮膚的黑色素會吸收大量波長較短的波
          2. 皮膚上的水份也會吸收大量的UV(紫外)和IR(紅外)部分的光
          3. 進入皮膚組織的綠光(500nm)– 黃光(600nm)大部分會被紅細胞吸收
          4. 紅光和接近IR的光相比其他波長的光更容易穿過皮膚組織
          5. 血液要比其他組織吸收更多的光
          6. 相比紅光,綠(綠-黃)光能被氧合血紅蛋白和脫氧血紅蛋白吸收
          7. 雖然現在大部分智能穿戴設備采用綠光作為光源,但是字考慮到皮膚情況的不同(膚色、汗水),高端產品會根據情況自動使用綠光、紅光和紅外光等多種光源進行心率測量。

          圖 5: 光電式心率傳感電路

          電極式心率傳感器

          電生理傳感:這種傳感器利用人體的生物電活動來測量心率。即心臟在每次心跳時都會產生一個小電流,具有電檢測功能的心率監測器通過檢測和跟蹤該電流,實現心率的測量。 常用的電生理傳感器是心電圖(ECG)傳感器,通過測量心臟產生的電信號來確定心率。

          工作過程如下:

          1. 心電圖(ECG)測量:電生理心率傳感器通過皮膚表面的電極與人體接觸,檢測和記錄心臟的電信號。這些電信號反映了心臟在每個心搏周期中的電活動,可以用于分析心臟的功能狀態和心率。
          2. 電極配置:電生理心率傳感器通常采用多個電極,例如,常見的配置是將一個電極放置在胸前、另一個電極放置在手腕或手指上。這樣的配置可以捕捉到心臟電活動的變化并生成心電圖。
          3. 感應電位差:當心臟肌肉收縮和放松時,產生的電勢差會在身體表面生成微弱的電流。電生理心率傳感器的電極通過接觸皮膚,能夠感知和測量這些微弱的電勢差,形成心電圖信號。
          4. 信號放大和處理:電生理心率傳感器會將感測到的微弱電信號放大,以便進行準確的記錄和測量。信號處理器會對心電圖信號進行濾波、放大和去除干擾等操作,以獲取清晰的心電圖波形數據。
          5. 心率計算:通過分析心電圖信號中的R波,電生理心率傳感器能夠確定心臟每分鐘跳動的次數,從而計算出心率值。
          電極式心率傳感器與傳統醫院獲取心電圖儀器的區別
          • 測量原理:電極式心率傳感器使用表面電極與皮膚接觸,通過檢測心臟電活動來獲取心率信息。它主要測量心電圖中的R波峰值,并根據R-R間期計算心率。而傳統醫院使用的心電圖儀器則是通過多個電極貼附在身體不同的位置,記錄心臟電信號在不同導聯下的變化,以獲取更為詳細和全面的心電圖。
          • 使用場景:電極式心率傳感器通常用于便攜式設備和可穿戴設備中,如智能手環、智能手表等。它主要用于日常健康監測和運動追蹤,提供用戶的即時心率信息。傳統醫院使用的心電圖儀器通常用于醫療機構,由專業醫務人員操作,用于臨床診斷和監測心臟疾病,可以提供更全面的心電圖分析。
          • 數據輸出:電極式心率傳感器通常以數字形式輸出心率數據,可以通過無線連接或數據線與手機、電腦等設備進行數據傳輸和分析。傳統醫院使用的心電圖儀器可以輸出心電圖波形,通常以打印紙或數字文件的形式提供。
          • 精確度和準確性:傳統醫院使用的心電圖儀器通常具有更高的精確度和準確性,能夠提供更細致的心臟電信號分析。而電極式心率傳感器由于采用簡化的測量原理和設計,相對較低的成本和尺寸限制,可能在某些情況下存在一定的誤差。

          無論是光電傳感還是電生理傳感,心率傳感器通常會將采集到的數據發送給處理器或設備進行分析和顯示。這樣,用戶就可以實時了解自己的心率情況。

          需要注意的是,不同型號的心率傳感器可能采用不同的工作原理和技術細節,但基本原理是類似的:通過測量血流變化或心臟電信號來推導心率數據。

          • 胸帶裝置。這些設備使用電檢測來跟蹤您的心率。它們通過纏繞在胸部的帶子檢測電活動。為了使大多數這些設備按設計工作,表帶必須是濕的,或者您需要在傳感器接觸皮膚的地方使用導電凝膠。水或導電凝膠可改善導電,因此設備更容易檢測心臟的電流。
          • 腕部或前臂佩戴的可穿戴設備:前臂和手腕有兩條主要動脈。橈動脈向拇指延伸,尺動脈向小指和無名指延伸。這兩條動脈為手腕和前臂表面的皮膚提供充足的血液流動。這些可穿戴設備具有發光二極管(LED)和傳感器,它們靠在該區域的皮膚上。該傳感器使用LED光來檢測皮膚表面下血管的微小擴張。
          • 智能戒指:這些是您像珠寶一樣戴在一根手指上的設備。他們還使用光學檢測來跟蹤您的心率和其他生命體征。這些設備仍然非常新,關于其準確性的數據有限。
          • 脈搏血氧儀。這些設備,其中許多夾在手指上,也使用光學檢測方法。這些跟蹤脈搏率和血氧水平。它們在醫院環境中很常見,但您也可以獲得這些設備的便攜式電池供電版本供個人使用。
          • 智能手機:跨不同平臺的各種智能手機應用程序提供了測量脈搏率的能力。其中一些使用光學檢測,通過將手指放在相機鏡頭上來找到您的脈搏率,相機的閃光燈用于照亮皮膚下的血管。其他人使用相機本身,對準你的臉,根據你皮膚的可見變化來檢測你的脈搏率,但你的眼睛無法檢測到。
          • Maxim Integrated:Maxim Integrated是一家知名的集成電路設計和生產公司,提供多種心率傳感器芯片和模塊。其中,MAX30102是一款常見的心率傳感器模塊,集成了紅外LED、紅光LED和光電傳感器,適用于便攜設備和健康監測設備等應用。
          • Texas Instruments(TI):TI是一家全球領先的半導體公司,提供多款生物傳感器芯片和模塊。AFE4404是TI的一款心率監測芯片,集成了紅外LED、綠光LED、光電傳感器和ADC等功能,可實現高精度的心率和血氧濃度測量。
          • ROHM Semiconductor:ROHM Semiconductor是一家領先的半導體制造商,其心率傳感器芯片和模塊在市場上得到廣泛應用。BH1790GLC是ROHM的一款紅外心率傳感器芯片,具備運動偽影抑制和高精度測量特性。
          • Analog Devices(ADI):Analog Devices(ADI)是一家知名的模擬與數字混合信號處理技術供應商,提供多種生物傳感器芯片和模塊。AD8232是ADI的一款心率傳感器芯片,專為心電圖(ECG)采集設計,具備高性能和低功耗特點。
          • PixArt Imaging:PixArt Imaging是一家專注于光學傳感器和圖像處理技術的公司,其產品被廣泛應用于健康監測和運動追蹤等領域。PAH8011是PixArt的一款生物傳感器模塊,集成了紅外和綠光LED、光電傳感器以及信號處理電路,適用于心率和血氧濃度等生物參數測量。

          深入:使用脈沖傳感器和Arduino檢測,測量和繪制心率 (lastminuteengineers.com)

          MAX30102脈搏血氧儀和心率傳感器與Arduino接口 (lastminuteengineers.com)

          AD8232 ECG模塊引腳排列,與Arduino接口,應用 (microcontrollerslab.com)

          下面是個人案例,使用Mircopython編寫程序驅動RP2040讀取Max30102的數據。

          電路連接

          程序代碼

          驅動文件包含三個.py文件。

          • init.py
          • circular_buffer.py
          • 檢測心率.py

          前面兩個文件可在后面鏈接中下載:https://github.com/n-elia/MAX30102-MicroPython-driver/tree/main/max30102

          檢測心率.py程序如下

          from machine import SoftI2C, Pin, Timer
          from utime import ticks_diff, ticks_us
          from max30102 import MAX30102, MAX30105_PULSE_AMP_MEDIUM

          BEATS = 0  # 存儲心率
          FINGER_FLAG = False  # 默認表示未檢測到手指


          def display_info(t):
             # 如果沒有檢測到手指,那么就不顯示
             if FINGER_FLAG is False:
                 return

             print('心率: ', BEATS)


          def main():
             global BEATS, FINGER_FLAG  # 如果需要對全局變量修改,則需要global聲明
             
             # 創建I2C對象(檢測MAX30102)
             i2c = SoftI2C(sda=Pin(16), scl=Pin(17), freq=400000)  # Fast: 400kHz, slow: 100kHz

             # 創建傳感器對象
             sensor = MAX30102(i2c=i2c)

             # 檢測是否有傳感器
             if sensor.i2c_address not in i2c.scan():
                 print("沒有找到傳感器")
                 return
             elif not (sensor.check_part_id()):
                 # 檢查傳感器是否兼容
                 print("檢測到的I2C設備不是MAX30102或者MAX30105")
                 return
             else:
                 print("傳感器已識別到")

             print("使用默認配置設置傳感器")
             sensor.setup_sensor()

             # 對傳感器進行設定
             sensor.set_sample_rate(400)
             sensor.set_fifo_average(8)
             sensor.set_active_leds_amplitude(MAX30105_PULSE_AMP_MEDIUM)

             t_start = ticks_us()  # Starting time of the acquisition

             MAX_HISTORY = 32
             history = []
             beats_history = []
             beat = False

             while True:
                 sensor.check()
                 if sensor.available():
                     # FIFO 先進先出,從隊列中取數據。都是整形int
                     red_reading = sensor.pop_red_from_storage()
                     ir_reading = sensor.pop_ir_from_storage()
                     
                     if red_reading < 1000:
                         print('No finger')
                         FINGER_FLAG = False  # 表示沒有放手指
                         continue
                     else:
                         FINGER_FLAG = True  # 表示手指已放

                     # 計算心率
                     history.append(red_reading)
                     
                     # 為了防止列表過大,這里取列表的后32個元素
                     history = history[-MAX_HISTORY:]
                     
                     # 提取必要數據
                     minima, maxima = min(history), max(history)
                     threshold_on = (minima + maxima * 3) // 4   # 3/4
                     threshold_off = (minima + maxima) // 2      # 1/2
                     
                     if not beat and red_reading > threshold_on:
                         beat = True                    
                         t_us = ticks_diff(ticks_us(), t_start)
                         t_s = t_us/1000000
                         f = 1/t_s
                         bpm = f * 60
                         if bpm < 500:
                             t_start = ticks_us()
                             beats_history.append(bpm)                    
                             beats_history = beats_history[-MAX_HISTORY:]   # 只保留最大30個元素數據
                             BEATS = round(sum(beats_history)/len(beats_history), 2)  # 四舍五入
                     if beat and red_reading < threshold_off:
                         beat = False


          if __name__ == '__main__':

             tim = Timer(period=1000, mode=Timer.PERIODIC, callback=display_info)
             
             main()

          運行效果



          關鍵詞: 心率傳感器

          評論


          技術專區

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();