在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

血氧飽和度傳感器MAX30102模塊的原理及參數

CHANBAEK ? 來源:CSDN-_會飛_的魚 ? 作者:CSDN-_會飛_的魚 ? 2023-03-07 14:51 ? 次閱讀

一. 簡介

MAX30102是一個集成的脈搏血氧儀和心率監測儀生物傳感器的模塊(芯片)。 它集成了一個660nm紅光LED、880nm紅外光LED、光電檢測器、光器件,以及帶環境光抑制的低噪聲電子電路。 可通過軟件關斷模塊,待機電流為零,實現電源始終維持供電狀態,可運用于低功耗產品中。

MAX30102采用一個1.8V電源和一個獨立的3.3V用于內部LED的電源,標準的I2C兼容的通信接口。 市面很多都將MAX30102芯片集成在一個PCB模塊上,內部增加一個1.8V和3.3V LDO穩壓電路,可對模塊單獨供5.0V電源,方便開發者進行開發。

二. MAX30102原理及參數

1. 芯片內部框圖

截圖20230301181839.png

從框圖看,芯片可分為兩部分,一部分為模擬信號采集電路,通過RED和IR燈發出特定波長的光,采集人體反射回來的光,經過PD管將光信號轉化為電信號,最終通過18bit ADC轉換器轉化為數字信號

第二部分為數字處理電路,將ADC轉換出來的原始數據進行濾波處理后放置于緩沖區內; 單片機通過IIC接口讀寫芯片內部寄存器,讀取出相應的數據;

2. 模塊電路

截圖20230301181839.png

芯片內部有3.3V-5.0V的LED電源和1.8V的邏輯電源,所以模塊帶有兩路穩壓電路,將5V電源分別轉化為3.3V和1.8V;由于LED驅動電源的供電范圍為3.3V-5.0V,3.3V穩壓電路可省去。

由于MAX30102的邏輯電路的IIC通信電平為1.8V,這與我們常用的51單片機STM32單片機的引腳電平不匹配。

這里有個解決方法,因為MAX30102的SDA、SCL、INT引腳為開漏,

截圖20230301181839.png

可以將模塊上的R1、R2、R3電阻去掉,對于51單片機來說,在SDA、SCL、INT引腳上分別加一個4.7-10k電阻上拉至5V;對于STM32單片機,只需要將相應的控制引腳配置為上拉模式即可。

模塊只需要接上5V電源,SDA、SCL、INT引腳與單片機連接即可; IRD、RD一般不接,以STM32單片機接線為例(單片機采用模擬IIC的控制方式),如圖:

截圖20230301181839.png

三. MAX30102編程

MAX30102內部集成了一整套完整信號采集電路,包括光信號發射及接收、AD轉換、環境光干擾消除及數字濾波部分,只將數字接口留給用戶。 用戶只需通過單片機的IIC接口(可用模擬IIC),對MAX30102內部的寄存器進行讀寫操作,就可以得到轉換后的光強度數值。 最后需要通過相應的處理算法計算出心率值和血氧飽和度。

對于MAX30102的驅動程序,將其拆分出來,可分為標準IIC程序和MAX30102寄存器的讀寫操作,實現這兩部分的編程,便完成MAX30102的驅動; 由于IIC程序比較常用,這里就不例舉出來。 在完成IIC的通信程序后,實現以下程序;

(1)MAX30102寫寄存器函數

u8 max30102_Bus_Write(u8 Register_Address, u8 Word_Data)
{
  /* 采用串行EEPROM隨即讀取指令序列,連續讀取若干字節 */
  /* 第1步:發起I2C總線啟動信號 */
  i2c_Start();
  /* 第2步:發起控制字節,高7bit是地址,bit0是讀寫控制位,0表示寫,1表示讀 */
  i2c_SendByte(max30102_WR_address | I2C_WR);/* 此處是寫指令 */
  /* 第3步:發送ACK */
  if (i2c_WaitAck() != 0)
  {
    goto cmd_fail;/* EEPROM器件無應答 */
  }
/* 第4步:發送字節地址 */
  i2c_SendByte(Register_Address);
  if (i2c_WaitAck() != 0)
  {
    goto cmd_fail;/* EEPROM器件無應答 */
  }
/* 第5步:開始寫入數據 */
  i2c_SendByte(Word_Data);
/* 第6步:發送ACK */
  if (i2c_WaitAck() != 0)
  {
    goto cmd_fail;/* EEPROM器件無應答 */
  }
/* 發送I2C總線停止信號 */
  i2c_Stop();
  return 1;/* 執行成功 */
   cmd_fail: /* 命令執行失敗后,切記發送停止信號,避免影響I2C總線上其他設備 */
/* 發送I2C總線停止信號 */
  i2c_Stop();
  return 0;
}

(2)MAX30102讀寄存器函數

u8 max30102_Bus_Read(u8 Register_Address)
{
  u8  data;
/* 第1步:發起I2C總線啟動信號 */
  i2c_Start();
/* 第2步:發起控制字節,高7bit是地址,bit0是讀寫控制位,0表示寫,1表示讀 */
  i2c_SendByte(max30102_WR_address | I2C_WR);/* 此處是寫指令 */
/* 第3步:發送ACK */
  if (i2c_WaitAck() != 0)
  {
    goto cmd_fail;/* EEPROM器件無應答 */
  }
/* 第4步:發送字節地址, */
  i2c_SendByte((uint8_t)Register_Address);
  if (i2c_WaitAck() != 0)
  {
    goto cmd_fail;/* EEPROM器件無應答 */
  }
/* 第6步:重新啟動I2C總線。下面開始讀取數據 */
  i2c_Start();
/* 第7步:發起控制字節,高7bit是地址,bit0是讀寫控制位,0表示寫,1表示讀 */
  i2c_SendByte(max30102_WR_address | I2C_RD);/* 此處是讀指令 */
/* 第8步:發送ACK */
  if (i2c_WaitAck() != 0)
  {
    goto cmd_fail;/* EEPROM器件無應答 */
  }
/* 第9步:讀取數據 */
  {
    data = i2c_ReadByte();/* 讀1個字節 */
    i2c_NAck();/* 最后1個字節讀完后,CPU產生NACK信號(驅動SDA = 1) */
  }
/* 發送I2C總線停止信號 */
  i2c_Stop();
  return data;/* 執行成功 返回data值 */
  cmd_fail: /* 命令執行失敗后,切記發送停止信號,避免影響I2C總線上其他設備 */
/* 發送I2C總線停止信號 */
  i2c_Stop();
  return 0;
}

(3)MAX30102讀緩沖器FIFO

void max30102_FIFO_Read(u8 Register_Address,u16  Word_Data[][2],u8 count)
{
  u8 i=0;
  u8 no = count;
  u8 data1, data2;
/* 第1步:發起I2C總線啟動信號 */
  i2c_Start();
/* 第2步:發起控制字節,高7bit是地址,bit0是讀寫控制位,0表示寫,1表示讀 */
  i2c_SendByte(max30102_WR_address | I2C_WR);/* 此處是寫指令 */
/* 第3步:發送ACK */
  if (i2c_WaitAck() != 0)
  {
    goto cmd_fail;/* EEPROM器件無應答 */
  }
/* 第4步:發送字節地址, */
  i2c_SendByte((uint8_t)Register_Address);
  if (i2c_WaitAck() != 0)
  {
    goto cmd_fail;/* EEPROM器件無應答 */
  }
/* 第6步:重新啟動I2C總線。下面開始讀取數據 */
  i2c_Start();
/* 第7步:發起控制字節,高7bit是地址,bit0是讀寫控制位,0表示寫,1表示讀 */
  i2c_SendByte(max30102_WR_address | I2C_RD);/* 此處是讀指令 */
/* 第8步:發送ACK */
  if (i2c_WaitAck() != 0)
  {
    goto cmd_fail;/* EEPROM器件無應答 */
  }
/* 第9步:讀取數據 */
  while (no)
  {  
    data1 = i2c_ReadByte();
    i2c_Ack();
    data2 = i2c_ReadByte();
    i2c_Ack();
    Word_Data[i][0] = (((u16)data1 << 8) | data2);  //
    data1 = i2c_ReadByte();
    i2c_Ack();
    data2 = i2c_ReadByte();
    if(1==no)
      i2c_NAck();/* 最后1個字節讀完后,CPU產生NACK信號(驅動SDA = 1) */
    else
      i2c_Ack();
     Word_Data[i][1] = (((u16)data1 << 8) | data2);
    no--;
    i++;
  }
/* 發送I2C總線停止信號 */
  i2c_Stop();
  cmd_fail: /* 命令執行失敗后,切記發送停止信號,避免影響I2C總線上其他設備 */
/* 發送I2C總線停止信號 */
  i2c_Stop();
}

(4)MAX30102初始化(可根據自己的實際情況更改相應的配置)

void max30102_init()
{
  max30102_Bus_Write(0x09, 0x0b);  //mode configuration : temp_en[3]      MODE[2:0]=010 HR only enabled    011 SP02 enabled
  max30102_Bus_Write(0x01, 0xF0); //open all of interrupt
  max30102_Bus_Write(INTERRUPT_REG, 0x00); //all interrupt clear
  max30102_Bus_Write(0x03, 0x02); //DIE_TEMP_RDY_EN
  max30102_Bus_Write(0x21, 0x01); //SET   TEMP_EN
  max30102_Bus_Write(0x0a, 0x47); //SPO2_SR[4:2]=001  100 per second    LED_PW[1:0]=11  16BITS
  max30102_Bus_Write(0x0c, 0x47);
  max30102_Bus_Write(0x0d, 0x47);
}

(5)數據采集

此程序只演示讀取出溫度,讀取血氧數據需要通過max30102_FIFO_Read函數讀出;

int main(void)
{
  u8 temp_num=0;
  main_init();
  max30102_init();
  printf("\\r\\n MAX30102  init  \\r\\n");
  while(1)
  {
    delay_ms(1000);            
    max30102_init();
    temp_num = max30102_Bus_Read(0x1f);
    printf("當前溫度 = %d\\r\\n",temp_num);
  }
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2551

    文章

    51097

    瀏覽量

    753529
  • 芯片
    +關注

    關注

    455

    文章

    50812

    瀏覽量

    423583
  • 模塊
    +關注

    關注

    7

    文章

    2706

    瀏覽量

    47468
  • pcb
    pcb
    +關注

    關注

    4319

    文章

    23099

    瀏覽量

    397853
  • MAX30102
    +關注

    關注

    4

    文章

    13

    瀏覽量

    2602
收藏 人收藏

    評論

    相關推薦

    MAX30102心律脈搏傳感器的原理及使用說明

    MAX30102 是一個集成的脈搏儀和心率監測儀生物傳感器模塊。它集成了一個紅光 LED和一個紅外光 LED、光電檢測
    發表于 10-18 11:03 ?3.2w次閱讀

    利用CMOS影像傳感器飽和度監測系統

    利用CMOS影像傳感器飽和度監測系統動脈飽和度
    發表于 11-30 10:55

    max30102、心率傳感器

    請問有人用過max30102傳感器么? 手冊里面有個Proximity Function 功能。大概意思就是 設置完
    發表于 07-24 15:42

    MAX30102 濃度+心率傳感器

    淘寶上雖然都賣MAX30102傳感器模塊,但是帶的資料里面都沒有相關程序。下面是STM32F103的使用程序,大家參考下
    發表于 07-28 18:24

    MAX30102脈搏模塊AT指令串口輸出

    `MAX30102脈搏模塊AT指令串口輸出芯片說明MAX30102是一個集成的脈搏
    發表于 03-10 17:14

    MAX30102模塊的原理及編程 精選資料分享

    一.簡介MAX30102是一個集成的脈搏儀和心率監測儀生物傳感器模塊(芯片)。它集成了一個660nm紅光LED、880nm紅外光LED
    發表于 07-19 09:15

    STM32是如何去MAX30102心率傳感器

    STM32F103單片機通過IIC控制MAX30102心率傳感器MAX30102的VCC引腳連接STM32F103mini單片機的5伏引
    發表于 08-19 08:33

    基于MAX30100/MAX30102傳感器設計的和心率檢測相關資料分享

    基于美信MAX30100/MAX30102傳感器設計的和心率檢測,以單片機STM32F103CBT6為主控核心,其中涉及電源
    發表于 11-10 07:27

    心率MAX30102模塊資料分享

    心率MAX30102模塊資料話不多說,
    發表于 01-07 08:02

    基于MAX30102的心率傳感器設計

    最近的一個項目需要用到一款心率傳感器,選型選擇了MAX30102,可以在ArduinoIDE中搜到MAX3010X庫,包含了簡單讀取、心
    發表于 01-13 06:24

    MAX30102模塊的原理及編程

    一.簡介MAX30102是一個集成的脈搏儀和心率監測儀生物傳感器模塊(芯片)。它集成了一個660nm紅光LED、880nm紅外光LED
    發表于 11-11 15:51 ?93次下載
    <b class='flag-5'>MAX30102</b><b class='flag-5'>血</b><b class='flag-5'>氧</b><b class='flag-5'>模塊</b>的原理及編程

    高靈敏脈搏儀和心率傳感器max30102說明書

    高靈敏脈搏儀和心率傳感器max30102說明書
    發表于 11-16 17:05 ?74次下載

    DFRobot心率傳感器有哪些,心率傳感器的原理

    DFRobot Gravity: MAX30102 心率傳感器模塊搭載了美信(maxim)的MAX3
    的頭像 發表于 02-22 16:27 ?5600次閱讀
    DFRobot心率<b class='flag-5'>血</b><b class='flag-5'>氧</b><b class='flag-5'>傳感器</b>有哪些,心率<b class='flag-5'>血</b><b class='flag-5'>氧</b><b class='flag-5'>傳感器</b>的原理

    如何使用MAX30102心律脈搏傳感器量測心跳和

    MAX30102 是一個集成的脈搏儀和心率監測儀生物傳感器模塊。它集成了一個紅光 LED和一個紅外光 LED、光電檢測
    的頭像 發表于 11-16 16:18 ?6933次閱讀

    max30100和max30102的區別

    30100和MAX30102都是用于非侵入性測量的傳感器,可以通過脈搏波檢測和光電測量來監測心率和飽和度。它們采用的技術原理是脈搏
    的頭像 發表于 12-28 16:54 ?5368次閱讀
    主站蜘蛛池模板: 色香欲亚洲天天综合网| 狠狠色噜噜狠狠狠狠97不卡 | 污污视频在线免费看| 日本欧洲亚洲一区在线观看| 午夜色大片| 免费看18污黄| 亚洲高清免费观看| 欧美一级视频在线| 国产精品免费观看网站| 天天干夜夜爽| 亚洲欧美卡通 动漫 丝袜| 欧美一卡二卡科技有限公司| 午夜理伦| 国产成人综合一区人人| 日韩亚色| 亚洲一区二区中文字5566| 亚洲欧美成人综合久久久| 日本黄色大片免费观看| 国产精品视频你懂的| 国产成人毛片视频不卡在线 | 国产精选经典三级小泽玛利亚| 第四色成人网| 亚洲天堂h| 国产激爽大片在线播放| 亚洲成成品网站有线| 四虎国产精品影库永久免费| 狠狠做深爱婷婷综合一区| 天天色天天综合| 久久精品国产精品亚洲婷婷| 日本a级影院| 免费又爽又黄的禁片1000部 | 日韩亚洲欧洲在线com91tv| 国产一二三区在线观看| 狼人射综合| 国产热re99久久6国产精品| 日本动漫天堂| 男子扒开美女尿口做羞羞的事| 在线播放 你懂的| 久久99免费| 免费理论片在线观看播放| 亚洲jizzjizz在线播放久|