0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于STM32物聯(lián)網(wǎng)開發(fā)板(7)--心率血氧采集MAX30102

嵌入式技術(shù) ? 來源:嵌入式技術(shù) ? 作者:嵌入式技術(shù) ? 2023-05-24 11:10 ? 次閱讀

1.概述

MAX30102是一種集成的脈搏血氧計(jì)心率監(jiān)測(cè)模塊。它包括內(nèi)部LED,光電探測(cè)器、光學(xué)元件和低噪聲電子器件具有環(huán)境光抑制。MAX30102提供簡化設(shè)計(jì)過程的完整系統(tǒng)解決方案用于移動(dòng)和可穿戴設(shè)備。

MAX30102在單個(gè)1.8V電源上運(yùn)行以及用于內(nèi)部LED的單獨(dú)3.3V電源。通信通過標(biāo)準(zhǔn)I2C兼容。

MAX30102的SpO2(經(jīng)皮動(dòng)脈血氧飽和度)子系統(tǒng)包含環(huán)境光消除(ALC),連續(xù)時(shí)間∑-ΔADC和專有的離散時(shí)間濾波器。ALC有內(nèi)部跟蹤/保持電路,用于消除環(huán)境光,以及增加有效動(dòng)態(tài)范圍。SpO2 ADC具有可編程滿量程范圍從2μA到16μA。這個(gè)ALC可抵消高達(dá)200μA的環(huán)境電流。內(nèi)部ADC是連續(xù)時(shí)間過采樣∑-Δ轉(zhuǎn)換器,分辨率為18位。ADC采樣率為10.24MHz。ADC輸出數(shù)據(jù)速率可以從50sps(每秒采樣)編程到3200sps。

MAX30102具有片上溫度傳感器,用于校準(zhǔn)SpO2子系統(tǒng)的溫度依賴性。溫度傳感器的固有分辨率為0.0625°C。設(shè)備輸出數(shù)據(jù)對(duì)IR LED的波長相對(duì)不敏感,其中紅色LED的波長對(duì)于正確解釋數(shù)據(jù)至關(guān)重要。與MAX30102輸出信號(hào)一起使用的SpO2算法可以補(bǔ)償與環(huán)境溫度變化相關(guān)的SpO2誤差。

MAX30102模塊集成了紅色和紅外LED驅(qū)動(dòng)器,以調(diào)制用于SpO2和HR測(cè)量的LED脈沖。使用適當(dāng)?shù)碾娫措妷?,LED電流可以從0編程到50mA。LED脈沖寬度可從69μs編程到411μs,以允許算法根據(jù)使用情況優(yōu)化SpO2和HR精度和功耗。

應(yīng)用

pYYBAGRjOomAB14PAABglh52fT8692.pngpoYBAGRjOp-ANiqAAAUcknd1-kQ527.png

硬件接口

引腳

說明

MAX30102_INT

PC9信號(hào)檢測(cè)

MAX30102_SDA

PC7 I2C數(shù)據(jù)線

MAX30102_SCL

PC8 I2C時(shí)鐘

2.通訊協(xié)議

本模塊采用I2C通訊方式,具有I2C/SMBus兼容的2線制由串行數(shù)據(jù)線(SDA)和串行時(shí)鐘線(SCL),時(shí)鐘速率高達(dá)400kHz。

  • 設(shè)備地址:
poYBAGRtfI2APRNAAABGGNsJ_xc497.png
  • I2C接口時(shí)序:
poYBAGRtfNuADb53AAApVDPk4g4781.png

2.1 起始信號(hào)和停止信號(hào)

  • 起始信號(hào):時(shí)鐘為高電平時(shí),數(shù)據(jù)由高電平變?yōu)榈碗娖健?/li>
//產(chǎn)生IIC起始信號(hào)
void IIC_Start(void)
{
	SDA_OUT();     //sda線輸出
	IIC_SDA(1);	  	  
	IIC_SCL(1);
	Delay_Us(4);
 	IIC_SDA(0);//START:when CLK is high,DATA change form high to low 
	Delay_Us(4);
	IIC_SCL(0);//鉗住I2C總線,準(zhǔn)備發(fā)送或接收數(shù)據(jù) 
}	  
  • 停止信號(hào):時(shí)鐘線為高電平時(shí),數(shù)據(jù)線由低變高。
//產(chǎn)生IIC停止信號(hào)
void IIC_Stop(void)
{
	SDA_OUT();//sda線輸出
	IIC_SCL(0);
	IIC_SDA(0);//STOP:when CLK is high DATA change form low to high
 	Delay_Us(4);
	IIC_SCL(1); 
	IIC_SDA(1);//發(fā)送I2C總線結(jié)束信號(hào)
	Delay_Us(4);							   	
}

2.2 發(fā)送數(shù)據(jù)和發(fā)送應(yīng)答

時(shí)鐘線為低電平時(shí)發(fā)送數(shù)據(jù)。應(yīng)答信號(hào)本身就是一位數(shù)據(jù)。

//產(chǎn)生ACK應(yīng)答
void IIC_Ack(void)
{
	IIC_SCL(0);
	SDA_OUT();
	IIC_SDA(0);
	Delay_Us(2);
	IIC_SCL(1);
	Delay_Us(2);
	IIC_SCL(0);
}
//不產(chǎn)生ACK應(yīng)答		    
void IIC_NAck(void)
{
	IIC_SCL(0);
	SDA_OUT();
	IIC_SDA(1);
	Delay_Us(2);
	IIC_SCL(1);
	Delay_Us(2);
	IIC_SCL(0);
}	
//IIC發(fā)送一個(gè)字節(jié)
		  
void IIC_Send_Byte(u8 txd)
{                        
    u8 t;   
	SDA_OUT(); 	    
    IIC_SCL(0);//拉低時(shí)鐘開始數(shù)據(jù)傳輸
    for(t=0;t<8;t++)
    {   
      if(txd&0x80)IIC_SDA(1);
      else IIC_SDA(0);
      txd<<=1; 	  
      Delay_Us(2);   
      IIC_SCL(1);
      Delay_Us(2); 
      IIC_SCL(0);	
      Delay_Us(2);
    }	 
}

2.3 讀取數(shù)據(jù)和讀取應(yīng)答

時(shí)鐘線為高時(shí)讀取數(shù)據(jù)。應(yīng)答信號(hào)本身就是一位數(shù)據(jù)。

//等待應(yīng)答信號(hào)到來
//返回值:1,接收應(yīng)答失敗
//        0,接收應(yīng)答成功
u8 IIC_Wait_Ack(void)
{
	u8 ucErrTime=0;
	SDA_IN();      //SDA設(shè)置為輸入  
	IIC_SDA(1);Delay_Us(1);	   
	IIC_SCL(1);Delay_Us(1);	 
	while(READ_SDA)
	{
		ucErrTime++;
		if(ucErrTime>250)
		{
			IIC_Stop();
			return 1;
		}
	}
	IIC_SCL(0);//時(shí)鐘輸出0 	   
	return 0;  
} 
//讀1個(gè)字節(jié),ack=1時(shí),發(fā)送ACK,ack=0,發(fā)送nACK   
u8 IIC_Read_Byte(unsigned char ack)
{
  unsigned char i,receive=0;
  SDA_IN();//SDA設(shè)置為輸入
  for(i=0;i<8;i++ )
  {
    IIC_SCL(0); 
    Delay_Us(2);
    IIC_SCL(1);
    receive<<=1;
    if(READ_SDA)receive++;   
    Delay_Us(1); 
  }					 
  if (!ack)
  IIC_NAck();//發(fā)送nACK
  else
  IIC_Ack(); //發(fā)送ACK   
  return receive;
}

2.4 數(shù)據(jù)讀寫

void IIC_Read_One_Byte(u8 daddr,u8 addr,u8* data)
{				  	  	    																 
  IIC_Start();  
	IIC_Send_Byte(daddr);	   //發(fā)送寫命令
	IIC_Wait_Ack();
	IIC_Send_Byte(addr);//發(fā)送地址
	IIC_Wait_Ack();		 
	IIC_Start();  	 	   
	IIC_Send_Byte(daddr|0X01);//進(jìn)入接收模式			   
	IIC_Wait_Ack();	 
  *data = IIC_Read_Byte(0);		   
  IIC_Stop();//產(chǎn)生一個(gè)停止條件	    
}

void IIC_Write_One_Byte(u8 daddr,u8 addr,u8 data)
{				   	  	    																 
  IIC_Start();  
	IIC_Send_Byte(daddr);	    //發(fā)送寫命令
	IIC_Wait_Ack();
	IIC_Send_Byte(addr);//發(fā)送地址
	IIC_Wait_Ack();	   	 										  		   
	IIC_Send_Byte(data);     //發(fā)送字節(jié)							   
	IIC_Wait_Ack();  		    	   
  IIC_Stop();//產(chǎn)生一個(gè)停止條件 
	HAL_Delay(10);	 
}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2545

    文章

    50445

    瀏覽量

    751046
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2900

    文章

    44062

    瀏覽量

    370225
  • STM32
    +關(guān)注

    關(guān)注

    2264

    文章

    10854

    瀏覽量

    354293
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    4896

    瀏覽量

    97058
  • 血氧計(jì)
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    7661
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    有人用過MAX30102么,

    max30102的一個(gè)心率,檢測(cè)模塊,
    發(fā)表于 06-01 20:10

    max30102、心率傳感器

    請(qǐng)問有人用過max30102傳感器么? 手冊(cè)里面有個(gè)Proximity Function 功能。大概意思就是 設(shè)置完模式后,設(shè)備會(huì)
    發(fā)表于 07-24 15:42

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

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

    MAX30102調(diào)試遇到問題

    MAX30102測(cè)試手指的心率的時(shí)候,數(shù)據(jù)比較穩(wěn)定,我們想測(cè)量額頭的
    發(fā)表于 03-24 23:15

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

    一.簡介MAX30102是一個(gè)集成的脈搏儀和心率監(jiān)測(cè)儀生物傳感器的模塊(芯片)。它集成了一個(gè)660nm紅光LED、880nm紅外光LED、光電檢測(cè)器、光器件,以及帶環(huán)境光抑制的低噪
    發(fā)表于 07-19 09:15

    MAX30100和MAX30102是什么

    MAX30100和MAX30102是常用的測(cè)量心率的模塊,MAX30100是能夠讀取心率、
    發(fā)表于 08-03 06:37

    STM32是如何去MAX30102心率傳感器的

    STM32F103單片機(jī)通過IIC控制MAX30102心率傳感器MAX30102的VCC引腳
    發(fā)表于 08-19 08:33

    基于MAX30100/MAX30102傳感器設(shè)計(jì)的心率檢測(cè)相關(guān)資料分享

    基于美信MAX30100/MAX30102傳感器設(shè)計(jì)的心率檢測(cè),以單片機(jī)STM32F103
    發(fā)表于 11-10 07:27

    心率MAX30102模塊資料分享

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

    基于MAX30102心率傳感器設(shè)計(jì)

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

    MAX30102脈搏儀和心率監(jiān)測(cè)模塊的數(shù)據(jù)手冊(cè)免費(fèi)下載

    MAX30102是一個(gè)集成的脈搏儀和心率監(jiān)測(cè)模塊。它包括內(nèi)部發(fā)光二極管,光電探測(cè)器,光學(xué)元件,以及低噪音的電子設(shè)備。MAX30102提供
    發(fā)表于 04-13 08:00 ?0次下載
    <b class='flag-5'>MAX30102</b>脈搏<b class='flag-5'>血</b><b class='flag-5'>氧</b>儀和<b class='flag-5'>心率</b>監(jiān)測(cè)模塊的數(shù)據(jù)手冊(cè)免費(fèi)下載

    MAX30102脈搏儀和心率監(jiān)測(cè)模塊的中文數(shù)據(jù)手冊(cè)免費(fèi)下載

    MAX30102是一個(gè)集成的脈搏儀和心率監(jiān)測(cè)模塊。它包括內(nèi)部發(fā)光二極管,光電探測(cè)器,光學(xué)元件,以及低噪音的電子設(shè)備。MAX30102提供
    發(fā)表于 06-11 08:00 ?137次下載
    <b class='flag-5'>MAX30102</b>脈搏<b class='flag-5'>血</b><b class='flag-5'>氧</b>儀和<b class='flag-5'>心率</b>監(jiān)測(cè)模塊的中文數(shù)據(jù)手冊(cè)免費(fèi)下載

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

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

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

    DFRobot Gravity: MAX30102 心率傳感器模塊搭載了美信(maxim)的MAX30102
    的頭像 發(fā)表于 02-22 16:27 ?5436次閱讀
    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模塊的心率測(cè)量儀

    項(xiàng)目采用MAX30102心率監(jiān)視模塊、Arduino UNO、OLED顯示器和蜂鳴器,搭建了一個(gè)簡單的
    發(fā)表于 04-11 10:44 ?4740次閱讀
    基于<b class='flag-5'>MAX30102</b>模塊的<b class='flag-5'>心率</b>測(cè)量儀