OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 7011|回复: 164

移植Arduino的max30100心率传感器模块函数

[复制链接]

  离线 

12

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2016-7-20
在线时间
33 小时
发表于 2016-10-20 18:56:57 | 显示全部楼层 |阅读模式
5金钱
我从网上找了Arduino的max30100模块的程序,想一直过来用STM32来做,结果卡在了millis函数这里,求助各位有过经验的大哥

最佳答案

查看完整内容[请看2#楼]

[mw_shl_code=c,true]uint8_t MAX30102_WriteI2C(uint8_t REG_Address,uint8_t REG_data) { IIC_Start(); IIC_Send_Byte(0xAE); //·¢ËíÆ÷¼tμØÖ·+D′Ãüáî if(IIC_Wait_Ack()) //μè′yó|′e { goto RESTATE; } IIC_Send_Byte(REG_Address); //D′¼Ä′æÆ÷μØÖ· if(IIC_Wait_Ack()) ...
回复

使用道具 举报

  离线 

7

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2015-11-2
在线时间
50 小时
发表于 2016-10-20 18:56:58 | 显示全部楼层
[C] 纯文本查看 复制代码
uint8_t MAX30102_WriteI2C(uint8_t REG_Address,uint8_t REG_data)
{

    IIC_Start();
    IIC_Send_Byte(0xAE); //·¢ËíÆ÷¼tμØÖ·+D′Ãüáî
    if(IIC_Wait_Ack())          //μè′yó|′e
    {
        goto RESTATE;
    }
    IIC_Send_Byte(REG_Address);         //D′¼Ä′æÆ÷μØÖ·
    if(IIC_Wait_Ack())          //μè′yó|′e
    {
        goto RESTATE;
    }
    IIC_Send_Byte(REG_data);        //·¢Ëíêy¾Y
    if(IIC_Wait_Ack())          //μè′yACK
    {
        goto RESTATE;;
    }

    IIC_Stop();
    return 1;
		
RESTATE:		
    IIC_Stop();
    return 0;
}


uint8_t MAX30102_ReadI2C(uint8_t REG_Address)
{
    uint8_t res;
    IIC_Start();
    IIC_Send_Byte(0xAE); //·¢ËíÆ÷¼tμØÖ·+D′Ãüáî
    if(IIC_Wait_Ack())          //μè′yó|′e
    {
        goto RESTATE;
    }
    IIC_Send_Byte(REG_Address);         //D′¼Ä′æÆ÷μØÖ·
    if(IIC_Wait_Ack())          //μè′yó|′e
    {
        goto RESTATE;
    }
	  IIC_Start();   
    IIC_Send_Byte(0xAF); //·¢ËíÆ÷¼tμØÖ·+¶á
    if(IIC_Wait_Ack())          //μè′yó|′e
    {
        goto RESTATE;
    }
    res=IIC_Read_Byte(0);		//¶áêy¾Y,·¢ËínACK  
    IIC_Stop();                 //2úéúò»¸öí£Ö1ìõ¼t
    return res; 
	
RESTATE:		
    IIC_Stop();
    return 0;
}


代码读写程序,IIC时序可参看原子哥的模拟IIC
回复

使用道具 举报

  离线 

478

主题

8万

帖子

30

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
113801
金钱
113801
注册时间
2010-12-1
在线时间
842 小时
发表于 2016-10-20 20:35:59 | 显示全部楼层
帮顶
回复

使用道具 举报

  离线 

2

主题

61

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
404
金钱
404
注册时间
2016-5-6
在线时间
109 小时
发表于 2016-10-20 21:43:56 | 显示全部楼层
millis函數是利用一個為1ms為基準的定時器,mcu
上電時會開始計算時間,寫個定時器就可以取代了
回复

使用道具 举报

  离线 

3

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
477
金钱
477
注册时间
2014-2-24
在线时间
179 小时
发表于 2016-10-21 18:05:14 | 显示全部楼层
我也正在弄这个,SpO2出不来....
回复

使用道具 举报

  离线 

7

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2015-11-2
在线时间
50 小时
发表于 2016-10-24 10:48:26 | 显示全部楼层
顶!d=====( ̄▽ ̄*)b,我也在做这个的血氧。可以互相交流交流
回复

使用道具 举报

  离线 

12

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2016-7-20
在线时间
33 小时
 楼主| 发表于 2016-10-25 13:10:34 | 显示全部楼层
過路人一號 发表于 2016-10-20 21:43
millis函數是利用一個為1ms為基準的定時器,mcu
上電時會開始計算時間,寫個定時器就可以取代了

哈哈,这个我查了一下,现在用定时器解决了这个milliis了
回复

使用道具 举报

  离线 

12

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2016-7-20
在线时间
33 小时
 楼主| 发表于 2016-10-25 13:10:55 | 显示全部楼层
现在的问题就是都出来的都是零,很伤
回复

使用道具 举报

  离线 

7

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2015-11-2
在线时间
50 小时
发表于 2016-10-25 18:36:11 | 显示全部楼层
空心杯 发表于 2016-10-25 13:10
现在的问题就是都出来的都是零,很伤

Arduino程序要用什么软件打开工程啊?
回复

使用道具 举报

  离线 

12

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2016-7-20
在线时间
33 小时
 楼主| 发表于 2016-10-27 20:59:17 | 显示全部楼层
a514582920 发表于 2016-10-25 18:36
Arduino程序要用什么软件打开工程啊?

我用的MDK,是想把代码移植成STM32的
回复

使用道具 举报

  离线 

12

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2016-7-20
在线时间
33 小时
 楼主| 发表于 2016-10-27 21:00:24 | 显示全部楼层
各位你们的读写时序解决了吗??求助,我弄了两星期了,〒_〒
回复

使用道具 举报

  离线 

12

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2016-7-20
在线时间
33 小时
 楼主| 发表于 2016-10-30 14:21:09 | 显示全部楼层
小小怪 发表于 2016-10-21 18:05
我也正在弄这个,SpO2出不来....

哥们你的读写解决了吗,我模拟的读写都是0和255,硬件读写的通不过,这搞得好郁闷啊
回复

使用道具 举报

  离线 

12

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2016-7-20
在线时间
33 小时
 楼主| 发表于 2016-10-30 14:22:04 | 显示全部楼层
小小怪 发表于 2016-10-21 18:05
我也正在弄这个,SpO2出不来....

整个Ardunio的代码模块都移植完成了,发现基本的读写无法完成
回复

使用道具 举报

  离线 

12

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2016-7-20
在线时间
33 小时
 楼主| 发表于 2016-10-30 14:22:31 | 显示全部楼层
a514582920 发表于 2016-10-24 10:48
顶!d=====( ̄▽ ̄*)b,我也在做这个的血氧。可以互相交流交流

哥们你的读写操作是怎么解决的?
回复

使用道具 举报

  离线 

2

主题

61

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
404
金钱
404
注册时间
2016-5-6
在线时间
109 小时
发表于 2016-10-31 00:29:52 | 显示全部楼层
查一下手冊,調整一下iic讀寫時序吧,不然在sda和scl分別加個4.7k上拉電阻試試
回复

使用道具 举报

  离线 

12

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2016-7-20
在线时间
33 小时
 楼主| 发表于 2016-10-31 10:28:57 | 显示全部楼层
過路人一號 发表于 2016-10-31 00:29
查一下手冊,調整一下iic讀寫時序吧,不然在sda和scl分別加個4.7k上拉電阻試試

现在找到了一个网友写的Arduino的Wire代码,正在根据他的时序来改
回复

使用道具 举报

  离线 

7

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2015-11-2
在线时间
50 小时
发表于 2016-10-31 12:02:32 | 显示全部楼层
芯片工作电压是1.8V,VDD是3.3v,我这样转换电路应该可以把?
QQ截图20161031113252.png
回复

使用道具 举报

  离线 

7

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2015-11-2
在线时间
50 小时
发表于 2016-10-31 14:07:24 | 显示全部楼层
空心杯 发表于 2016-10-30 14:22
哥们你的读写操作是怎么解决的?

我现在测试读写温度是可以了,但是感觉数据不太对。怀疑电平转换那有问题
回复

使用道具 举报

  离线 

12

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2016-7-20
在线时间
33 小时
 楼主| 发表于 2016-10-31 17:46:32 | 显示全部楼层
a514582920 发表于 2016-10-31 14:07
我现在测试读写温度是可以了,但是感觉数据不太对。怀疑电平转换那有问题

哥们能给看看你代码的读写时序吗??这里我一直没解决掉
回复

使用道具 举报

  离线 

12

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2016-7-20
在线时间
33 小时
 楼主| 发表于 2016-10-31 17:47:00 | 显示全部楼层
a514582920 发表于 2016-10-31 12:02
芯片工作电压是1.8V,VDD是3.3v,我这样转换电路应该可以把?

这个ANT应该是INT把?
回复

使用道具 举报

  离线 

7

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2015-11-2
在线时间
50 小时
发表于 2016-11-1 09:08:21 | 显示全部楼层
之前温度不对的问题已经解决了,是iic时序不对;现在的主要问题是如何设置红灯和红外灯控制寄存器,采集血氧数据。还有我用的是max30102,不过这两款芯片应该差不多
回复

使用道具 举报

  离线 

12

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2016-7-20
在线时间
33 小时
 楼主| 发表于 2016-11-2 21:20:24 | 显示全部楼层
a514582920 发表于 2016-11-1 09:08
之前温度不对的问题已经解决了,是iic时序不对;现在的主要问题是如何设置红灯和红外灯控制寄存器,采集血 ...

确实这芯片的采集时序跟整点原子的不太一样,我的之前直接用,根本什么都读不到
回复

使用道具 举报

  离线 

12

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2016-7-20
在线时间
33 小时
 楼主| 发表于 2016-11-2 21:20:51 | 显示全部楼层
a514582920 发表于 2016-11-1 09:08
之前温度不对的问题已经解决了,是iic时序不对;现在的主要问题是如何设置红灯和红外灯控制寄存器,采集血 ...

你现在操作改成什么样的时序合适呢?
回复

使用道具 举报

  离线 

12

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2016-7-20
在线时间
33 小时
 楼主| 发表于 2016-11-2 21:25:19 | 显示全部楼层
a514582920 发表于 2016-11-1 09:04
[mw_shl_code=c,true]uint8_t MAX30102_WriteI2C(uint8_t REG_Address,uint8_t REG_data)
{

看那芯片的时序图是真心麻烦
回复

使用道具 举报

  离线 

7

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2015-11-2
在线时间
50 小时
发表于 2016-11-3 09:31:02 | 显示全部楼层
空心杯 发表于 2016-11-2 21:20
你现在操作改成什么样的时序合适呢?

[C] 纯文本查看 复制代码
int maxim_MAX30102_ReadI2C_FIFO(uint8_t REG_Address,uint8_t  *Word_Data,uint8_t count)
{
		uint8_t i=0;
		uint8_t no=count;
		uint8_t data1, data2;
	
    IIC_Start();
    IIC_Send_Byte(I2C_WRITE_ADDR); //·¢ËíÆ÷¼tμØÖ·+D′Ãüáî
    if(IIC_Wait_Ack())          //μè′yó|′e
    {
        goto RESTATE;
    }
    IIC_Send_Byte(REG_Address);         //D′¼Ä′æÆ÷μØÖ·
    if(IIC_Wait_Ack())          //μè′yó|′e
    {
        goto RESTATE;
    }
	  IIC_Start();   
    IIC_Send_Byte(I2C_READ_ADDR); //·¢ËíÆ÷¼tμØÖ·+¶á
    if(IIC_Wait_Ack())          //μè′yó|′e
    {
        goto RESTATE;
    }
		while(no)
		{
			if(1==no)		
			Word_Data[i]=IIC_Read_Byte(0);
			else
			Word_Data[i]=IIC_Read_Byte(1);
		
			no--;
			i++;
		}
		IIC_Stop();
		return 1;
RESTATE:		
    IIC_Stop();
		return 0;
}
int maxim_max30102_read_fifo(uint32_t *un_red_led, uint32_t *un_ir_led)
/**
* \brief        Read a set of samples from the MAX30102 FIFO register
* \par          Details
*               This function reads a set of samples from the MAX30102 FIFO register
*
* \param[out]   *un_red_led   - pointer that stores the red LED reading data
* \param[out]   *un_ir_led    - pointer that stores the IR LED reading data
*
* \retval       true on success
*/
{
  uint32_t un_temp;
  unsigned char uch_temp;
  *un_red_led=0;
  *un_ir_led=0;
  unsigned char ch_i2c_data[6];
  
  //read and clear status register
  un_temp=MAX30102_ReadI2C(REG_INTR_STATUS_1);
  un_temp=MAX30102_ReadI2C(REG_INTR_STATUS_2);
  un_temp=0;
  if(maxim_MAX30102_ReadI2C_FIFO(REG_FIFO_DATA, ch_i2c_data, 6)!=1)
  {
    return false;
  }
  un_temp =(unsigned char) ch_i2c_data[0];
  un_temp<<=16;
  *un_red_led+=un_temp;
  un_temp =(unsigned char) ch_i2c_data[1];
  un_temp<<=8;
  *un_red_led+=un_temp;
  un_temp =(unsigned char) ch_i2c_data[2];
  *un_red_led+=un_temp;
  
	un_temp=0;
  un_temp=(unsigned char) ch_i2c_data[3];
  un_temp<<=16;
  *un_ir_led+=un_temp;
  un_temp=(unsigned char) ch_i2c_data[4];
  un_temp<<=8;
  *un_ir_led+=un_temp;
  un_temp=(unsigned char) ch_i2c_data[5];
  *un_ir_led+=un_temp;
  *un_red_led&=0x03FFFF;  //Mask MSB [23:18]
  *un_ir_led&=0x03FFFF;  //Mask MSB [23:18]
  
  return true;
}
回复

使用道具 举报

  离线 

7

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2015-11-2
在线时间
50 小时
发表于 2016-11-3 09:33:07 | 显示全部楼层
上面那个是连续读写FIFO程序,后面就是研究算法的问题了
回复

使用道具 举报

  离线 

12

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2016-7-20
在线时间
33 小时
 楼主| 发表于 2016-11-3 11:46:05 | 显示全部楼层
真是感叹这个论坛的方便
回复

使用道具 举报

  离线 

12

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2016-7-20
在线时间
33 小时
 楼主| 发表于 2016-11-3 11:46:35 | 显示全部楼层

谢谢原子哥帮顶
回复

使用道具 举报

  离线 

3

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
477
金钱
477
注册时间
2014-2-24
在线时间
179 小时
发表于 2016-11-6 11:49:14 | 显示全部楼层
空心杯 发表于 2016-10-30 14:21
哥们你的读写解决了吗,我模拟的读写都是0和255,硬件读写的通不过,这搞得好郁闷啊

你的时序没有弄好吧,注意标准IIC的地址哦。我的脉搏和血氧都出来了。
回复

使用道具 举报

  离线 

3

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
477
金钱
477
注册时间
2014-2-24
在线时间
179 小时
发表于 2016-11-6 11:50:46 | 显示全部楼层
空心杯 发表于 2016-10-30 14:22
整个Ardunio的代码模块都移植完成了,发现基本的读写无法完成

我之前也是移植Ardunio的,后来测试不对头,现在我把底层驱动剥离出来自己写脉搏和血氧的部分。
回复

使用道具 举报

  离线 

12

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2016-7-20
在线时间
33 小时
 楼主| 发表于 2016-11-6 18:13:41 | 显示全部楼层
小小怪 发表于 2016-11-6 11:50
我之前也是移植Ardunio的,后来测试不对头,现在我把底层驱动剥离出来自己写脉搏和血氧的部分。

求工程文件我得冷静冷静
回复

使用道具 举报

  离线 

3

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
477
金钱
477
注册时间
2014-2-24
在线时间
179 小时
发表于 2016-11-6 20:21:37 | 显示全部楼层
空心杯 发表于 2016-11-6 18:13
求工程文件我得冷静冷静

我的平台不是在STM32上的,工程附上太繁琐。把IIC和MAX30100的驱动加载到你的工程里就行了。
while(MAX30100_ReadID()){
     //wait for....
    ;
}
IIC.zip (2.25 KB, 下载次数: 447)
回复

使用道具 举报

  离线 

12

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2016-7-20
在线时间
33 小时
 楼主| 发表于 2016-11-6 20:21:57 | 显示全部楼层
小小怪 发表于 2016-11-6 11:49
你的时序没有弄好吧,注意标准IIC的地址哦。我的脉搏和血氧都出来了。

可以啊兄弟,我的加了4.7K,3.3V上拉电阻,现在心率读出来了,SpO2总是100和0,不知道是不是时序的问题
回复

使用道具 举报

  离线 

12

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2016-7-20
在线时间
33 小时
 楼主| 发表于 2016-11-6 20:24:39 | 显示全部楼层
過路人一號 发表于 2016-10-31 00:29
查一下手冊,調整一下iic讀寫時序吧,不然在sda和scl分別加個4.7k上拉電阻試試

恩恩,管用,之前一是我的模块本身问题,二是时序有问题,三。。。还差了上拉电阻
回复

使用道具 举报

  离线 

3

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
477
金钱
477
注册时间
2014-2-24
在线时间
179 小时
发表于 2016-11-6 20:28:39 | 显示全部楼层
空心杯 发表于 2016-11-6 20:21
可以啊兄弟,我的加了4.7K,3.3V上拉电阻,现在心率读出来了,SpO2总是100和0,不知道是不是时序的问题

应该是测试的问题,经常是改变采样后出来有问题
回复

使用道具 举报

  离线 

12

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2016-7-20
在线时间
33 小时
 楼主| 发表于 2016-11-6 20:53:59 | 显示全部楼层
小小怪 发表于 2016-11-6 20:21
我的平台不是在STM32上的,工程附上太繁琐。把IIC和MAX30100的驱动加载到你的工程里就行了。
while(MAX3 ...

多谢多谢
回复

使用道具 举报

  离线 

12

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2016-7-20
在线时间
33 小时
 楼主| 发表于 2016-11-6 20:54:31 | 显示全部楼层
小小怪 发表于 2016-11-6 20:21
我的平台不是在STM32上的,工程附上太繁琐。把IIC和MAX30100的驱动加载到你的工程里就行了。
while(MAX3 ...

网友学习精神可嘉啊,跨平台寻找资料
回复

使用道具 举报

  离线 

7

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2015-11-2
在线时间
50 小时
发表于 2016-11-7 17:39:02 | 显示全部楼层
小小怪 发表于 2016-11-6 20:28
应该是测试的问题,经常是改变采样后出来有问题

哥们,你的算法呢?数据处理的怎么样
回复

使用道具 举报

  离线 

0

主题

3

帖子

0

精华

新手上路

Rank: 1

积分
19
金钱
19
注册时间
2016-11-8
在线时间
6 小时
发表于 2016-11-8 11:45:33 | 显示全部楼层
有遇过读写寄存器正常,但fifo数据都是0的情况吗?
回复

使用道具 举报

  离线 

12

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2016-7-20
在线时间
33 小时
 楼主| 发表于 2016-11-8 15:47:18 | 显示全部楼层
还没呢,FIFO读写不正常就GG了
回复

使用道具 举报

  离线 

0

主题

3

帖子

0

精华

新手上路

Rank: 1

积分
19
金钱
19
注册时间
2016-11-8
在线时间
6 小时
发表于 2016-11-8 16:35:28 | 显示全部楼层
死活读不出来,工程如下,望高手赐教啊,十分感谢!

fw.zip

461.99 KB, 下载次数: 227

回复

使用道具 举报

  离线 

12

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2016-7-20
在线时间
33 小时
 楼主| 发表于 2016-11-11 13:28:18 | 显示全部楼层
ouxinhi 发表于 2016-11-8 16:35
死活读不出来,工程如下,望高手赐教啊,十分感谢!

首先,MAX30100它的pdf里面有说,SCL SDA都要4.7K上拉电阻,我用的是3.3的上拉,然后这个模块好像非常脆弱,千万小心,烧了芯片你会怀疑人生的
回复

使用道具 举报

  离线 

3

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
477
金钱
477
注册时间
2014-2-24
在线时间
179 小时
发表于 2016-11-11 13:41:09 | 显示全部楼层
本帖最后由 小小怪 于 2016-11-11 13:43 编辑
a514582920 发表于 2016-11-7 17:39
哥们,你的算法呢?数据处理的怎么样

测脉搏3跳、5跳.....越大  测出的脉搏数/分钟  越准,3跳误差±3内;
血氧只是理 论 的 公式上得出了,没有经过大量实验建模,连续几天测都在97/98之间。
最近在弄其他项目没整理资料,这个先放一段时间...

算法也简单:
做一下滤波{ --->提取交流信号和直流信号--->血氧就出来了..
                          ->交流信号--->峰值检测--->脉搏就出来了..

回复

使用道具 举报

  离线 

7

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2015-11-2
在线时间
50 小时
发表于 2016-11-11 14:04:37 | 显示全部楼层
小小怪 发表于 2016-11-11 13:41
测脉搏3跳、5跳.....越大  测出的脉搏数/分钟  越准,3跳误差±3内;
血氧只是理 论 的 公式上得出了, ...

我得到的血氧数据总是在99/100之间,感觉不太准;你的算法能不能借我参考参考,谢谢!我邮箱是514582920@qq.com
回复

使用道具 举报

  离线 

0

主题

3

帖子

0

精华

新手上路

Rank: 1

积分
19
金钱
19
注册时间
2016-11-8
在线时间
6 小时
发表于 2016-11-15 20:46:07 | 显示全部楼层
小小怪 发表于 2016-11-11 13:41
测脉搏3跳、5跳.....越大  测出的脉搏数/分钟  越准,3跳误差±3内;
血氧只是理 论 的 公式上得出了, ...

上拉电阻模块自带的,阻值4.7k。
回复

使用道具 举报

  离线 

1

主题

6

帖子

0

精华

新手上路

Rank: 1

积分
31
金钱
31
注册时间
2016-11-30
在线时间
3 小时
发表于 2016-12-1 10:07:45 | 显示全部楼层
温度读取正常,是不是就说明时序没问题了,然后心率和血氧怎么读取,请指教
回复

使用道具 举报

  离线 

1

主题

11

帖子

0

精华

新手上路

Rank: 1

积分
48
金钱
48
注册时间
2016-12-1
在线时间
4 小时
发表于 2016-12-1 18:39:17 | 显示全部楼层
ouxinhi 发表于 2016-11-8 16:35
死活读不出来,工程如下,望高手赐教啊,十分感谢!

请问你的工程搞出来了吗,
回复

使用道具 举报

  离线 

1

主题

11

帖子

0

精华

新手上路

Rank: 1

积分
48
金钱
48
注册时间
2016-12-1
在线时间
4 小时
发表于 2016-12-1 18:40:02 | 显示全部楼层
小小怪 发表于 2016-11-6 20:21
我的平台不是在STM32上的,工程附上太繁琐。把IIC和MAX30100的驱动加载到你的工程里就行了。
while(MAX3 ...

你好,好人一生平安,谢谢 正需要呢
回复

使用道具 举报

  离线 

1

主题

11

帖子

0

精华

新手上路

Rank: 1

积分
48
金钱
48
注册时间
2016-12-1
在线时间
4 小时
发表于 2016-12-1 18:55:06 | 显示全部楼层
小小怪 发表于 2016-11-11 13:41
测脉搏3跳、5跳.....越大  测出的脉搏数/分钟  越准,3跳误差±3内;
血氧只是理 论 的 公式上得出了, ...

你好,从传感器中读出的心率、脉搏值实际上都是电流值,怎么转为心率和血氧值啊;
高手 我是菜鸟 望指教
心率:其实就是看电流的频率 是不?那血氧呢
回复

使用道具 举报

  离线 

1

主题

11

帖子

0

精华

新手上路

Rank: 1

积分
48
金钱
48
注册时间
2016-12-1
在线时间
4 小时
发表于 2016-12-1 19:08:30 | 显示全部楼层
小小怪 发表于 2016-11-6 20:21
我的平台不是在STM32上的,工程附上太繁琐。把IIC和MAX30100的驱动加载到你的工程里就行了。
while(MAX3 ...

你好 ,应该还有两个数据处理文件啊 能不能也让学习一下?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则





QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2017-9-21 21:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表
/* */