OpenEdv-开源电子网

标题: 移植Arduino的max30100心率传感器模块函数 [打印本页]

作者: 空心杯    时间: 2016-10-20 18:56
标题: 移植Arduino的max30100心率传感器模块函数
我从网上找了Arduino的max30100模块的程序,想一直过来用STM32来做,结果卡在了millis函数这里,求助各位有过经验的大哥

作者: a514582920    时间: 2016-10-20 18:56
[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
作者: 正点原子    时间: 2016-10-20 20:35
帮顶
作者: 過路人一號    时间: 2016-10-20 21:43
millis函數是利用一個為1ms為基準的定時器,mcu
上電時會開始計算時間,寫個定時器就可以取代了
作者: 小小怪    时间: 2016-10-21 18:05
我也正在弄这个,SpO2出不来....
作者: a514582920    时间: 2016-10-24 10:48
顶!d=====( ̄▽ ̄*)b,我也在做这个的血氧。可以互相交流交流
作者: 空心杯    时间: 2016-10-25 13:10
過路人一號 发表于 2016-10-20 21:43
millis函數是利用一個為1ms為基準的定時器,mcu
上電時會開始計算時間,寫個定時器就可以取代了

哈哈,这个我查了一下,现在用定时器解决了这个milliis了
作者: 空心杯    时间: 2016-10-25 13:10
现在的问题就是都出来的都是零,很伤
作者: a514582920    时间: 2016-10-25 18:36
空心杯 发表于 2016-10-25 13:10
现在的问题就是都出来的都是零,很伤

Arduino程序要用什么软件打开工程啊?
作者: 空心杯    时间: 2016-10-27 20:59
a514582920 发表于 2016-10-25 18:36
Arduino程序要用什么软件打开工程啊?

我用的MDK,是想把代码移植成STM32的
作者: 空心杯    时间: 2016-10-27 21:00
各位你们的读写时序解决了吗??求助,我弄了两星期了,〒_〒
作者: 空心杯    时间: 2016-10-30 14:21
小小怪 发表于 2016-10-21 18:05
我也正在弄这个,SpO2出不来....

哥们你的读写解决了吗,我模拟的读写都是0和255,硬件读写的通不过,这搞得好郁闷啊
作者: 空心杯    时间: 2016-10-30 14:22
小小怪 发表于 2016-10-21 18:05
我也正在弄这个,SpO2出不来....

整个Ardunio的代码模块都移植完成了,发现基本的读写无法完成
作者: 空心杯    时间: 2016-10-30 14:22
a514582920 发表于 2016-10-24 10:48
顶!d=====( ̄▽ ̄*)b,我也在做这个的血氧。可以互相交流交流

哥们你的读写操作是怎么解决的?
作者: 過路人一號    时间: 2016-10-31 00:29
查一下手冊,調整一下iic讀寫時序吧,不然在sda和scl分別加個4.7k上拉電阻試試

作者: 空心杯    时间: 2016-10-31 10:28
過路人一號 发表于 2016-10-31 00:29
查一下手冊,調整一下iic讀寫時序吧,不然在sda和scl分別加個4.7k上拉電阻試試

现在找到了一个网友写的Arduino的Wire代码,正在根据他的时序来改
作者: a514582920    时间: 2016-10-31 12:02
芯片工作电压是1.8V,VDD是3.3v,我这样转换电路应该可以把?

QQ截图20161031113252.png (21.34 KB, 下载次数: 7)

QQ截图20161031113252.png

作者: a514582920    时间: 2016-10-31 14:07
空心杯 发表于 2016-10-30 14:22
哥们你的读写操作是怎么解决的?

我现在测试读写温度是可以了,但是感觉数据不太对。怀疑电平转换那有问题
作者: 空心杯    时间: 2016-10-31 17:46
a514582920 发表于 2016-10-31 14:07
我现在测试读写温度是可以了,但是感觉数据不太对。怀疑电平转换那有问题

哥们能给看看你代码的读写时序吗??这里我一直没解决掉
作者: 空心杯    时间: 2016-10-31 17:47
a514582920 发表于 2016-10-31 12:02
芯片工作电压是1.8V,VDD是3.3v,我这样转换电路应该可以把?

这个ANT应该是INT把?
作者: a514582920    时间: 2016-11-1 09:08
之前温度不对的问题已经解决了,是iic时序不对;现在的主要问题是如何设置红灯和红外灯控制寄存器,采集血氧数据。还有我用的是max30102,不过这两款芯片应该差不多
作者: 空心杯    时间: 2016-11-2 21:20
a514582920 发表于 2016-11-1 09:08
之前温度不对的问题已经解决了,是iic时序不对;现在的主要问题是如何设置红灯和红外灯控制寄存器,采集血 ...

确实这芯片的采集时序跟整点原子的不太一样,我的之前直接用,根本什么都读不到
作者: 空心杯    时间: 2016-11-2 21:20
a514582920 发表于 2016-11-1 09:08
之前温度不对的问题已经解决了,是iic时序不对;现在的主要问题是如何设置红灯和红外灯控制寄存器,采集血 ...

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

作者: 空心杯    时间: 2016-11-2 21:25
a514582920 发表于 2016-11-1 09:04
[mw_shl_code=c,true]uint8_t MAX30102_WriteI2C(uint8_t REG_Address,uint8_t REG_data)
{

看那芯片的时序图是真心麻烦
作者: a514582920    时间: 2016-11-3 09:31
空心杯 发表于 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=IIC_Read_Byte(0);
                        else
                        Word_Data=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;
}

作者: a514582920    时间: 2016-11-3 09:33
上面那个是连续读写FIFO程序,后面就是研究算法的问题了
作者: 空心杯    时间: 2016-11-3 11:46
真是感叹这个论坛的方便
作者: 空心杯    时间: 2016-11-3 11:46

谢谢原子哥帮顶
作者: 小小怪    时间: 2016-11-6 11:49
空心杯 发表于 2016-10-30 14:21
哥们你的读写解决了吗,我模拟的读写都是0和255,硬件读写的通不过,这搞得好郁闷啊

你的时序没有弄好吧,注意标准IIC的地址哦。我的脉搏和血氧都出来了。
作者: 小小怪    时间: 2016-11-6 11:50
空心杯 发表于 2016-10-30 14:22
整个Ardunio的代码模块都移植完成了,发现基本的读写无法完成

我之前也是移植Ardunio的,后来测试不对头,现在我把底层驱动剥离出来自己写脉搏和血氧的部分。
作者: 空心杯    时间: 2016-11-6 18:13
小小怪 发表于 2016-11-6 11:50
我之前也是移植Ardunio的,后来测试不对头,现在我把底层驱动剥离出来自己写脉搏和血氧的部分。

求工程文件我得冷静冷静
作者: 小小怪    时间: 2016-11-6 20:21
空心杯 发表于 2016-11-6 18:13
求工程文件我得冷静冷静

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

作者: 空心杯    时间: 2016-11-6 20:21
小小怪 发表于 2016-11-6 11:49
你的时序没有弄好吧,注意标准IIC的地址哦。我的脉搏和血氧都出来了。

可以啊兄弟,我的加了4.7K,3.3V上拉电阻,现在心率读出来了,SpO2总是100和0,不知道是不是时序的问题
作者: 空心杯    时间: 2016-11-6 20:24
過路人一號 发表于 2016-10-31 00:29
查一下手冊,調整一下iic讀寫時序吧,不然在sda和scl分別加個4.7k上拉電阻試試

恩恩,管用,之前一是我的模块本身问题,二是时序有问题,三。。。还差了上拉电阻
作者: 小小怪    时间: 2016-11-6 20:28
空心杯 发表于 2016-11-6 20:21
可以啊兄弟,我的加了4.7K,3.3V上拉电阻,现在心率读出来了,SpO2总是100和0,不知道是不是时序的问题

应该是测试的问题,经常是改变采样后出来有问题
作者: 空心杯    时间: 2016-11-6 20:53
小小怪 发表于 2016-11-6 20:21
我的平台不是在STM32上的,工程附上太繁琐。把IIC和MAX30100的驱动加载到你的工程里就行了。
while(MAX3 ...

多谢多谢
作者: 空心杯    时间: 2016-11-6 20:54
小小怪 发表于 2016-11-6 20:21
我的平台不是在STM32上的,工程附上太繁琐。把IIC和MAX30100的驱动加载到你的工程里就行了。
while(MAX3 ...

网友学习精神可嘉啊,跨平台寻找资料
作者: a514582920    时间: 2016-11-7 17:39
小小怪 发表于 2016-11-6 20:28
应该是测试的问题,经常是改变采样后出来有问题

哥们,你的算法呢?数据处理的怎么样
作者: ouxinhi    时间: 2016-11-8 11:45
有遇过读写寄存器正常,但fifo数据都是0的情况吗?
作者: 空心杯    时间: 2016-11-8 15:47
还没呢,FIFO读写不正常就GG了

作者: ouxinhi    时间: 2016-11-8 16:35
死活读不出来,工程如下,望高手赐教啊,十分感谢!

fw.zip

461.99 KB, 下载次数: 668


作者: 空心杯    时间: 2016-11-11 13:28
ouxinhi 发表于 2016-11-8 16:35
死活读不出来,工程如下,望高手赐教啊,十分感谢!

首先,MAX30100它的pdf里面有说,SCL SDA都要4.7K上拉电阻,我用的是3.3的上拉,然后这个模块好像非常脆弱,千万小心,烧了芯片你会怀疑人生的
作者: 小小怪    时间: 2016-11-11 13:41
本帖最后由 小小怪 于 2016-11-11 13:43 编辑
a514582920 发表于 2016-11-7 17:39
哥们,你的算法呢?数据处理的怎么样

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

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


作者: a514582920    时间: 2016-11-11 14:04
小小怪 发表于 2016-11-11 13:41
测脉搏3跳、5跳.....越大  测出的脉搏数/分钟  越准,3跳误差±3内;
血氧只是理 论 的 公式上得出了, ...

我得到的血氧数据总是在99/100之间,感觉不太准;你的算法能不能借我参考参考,谢谢!我邮箱是514582920@qq.com
作者: ouxinhi    时间: 2016-11-15 20:46
小小怪 发表于 2016-11-11 13:41
测脉搏3跳、5跳.....越大  测出的脉搏数/分钟  越准,3跳误差±3内;
血氧只是理 论 的 公式上得出了, ...

上拉电阻模块自带的,阻值4.7k。
作者: a544161475    时间: 2016-12-1 10:07
温度读取正常,是不是就说明时序没问题了,然后心率和血氧怎么读取,请指教
作者: qingyulv    时间: 2016-12-1 18:39
ouxinhi 发表于 2016-11-8 16:35
死活读不出来,工程如下,望高手赐教啊,十分感谢!

请问你的工程搞出来了吗,
作者: qingyulv    时间: 2016-12-1 18:40
小小怪 发表于 2016-11-6 20:21
我的平台不是在STM32上的,工程附上太繁琐。把IIC和MAX30100的驱动加载到你的工程里就行了。
while(MAX3 ...

你好,好人一生平安,谢谢 正需要呢
作者: qingyulv    时间: 2016-12-1 18:55
小小怪 发表于 2016-11-11 13:41
测脉搏3跳、5跳.....越大  测出的脉搏数/分钟  越准,3跳误差±3内;
血氧只是理 论 的 公式上得出了, ...

你好,从传感器中读出的心率、脉搏值实际上都是电流值,怎么转为心率和血氧值啊;
高手 我是菜鸟 望指教
心率:其实就是看电流的频率 是不?那血氧呢
作者: qingyulv    时间: 2016-12-1 19:08
小小怪 发表于 2016-11-6 20:21
我的平台不是在STM32上的,工程附上太繁琐。把IIC和MAX30100的驱动加载到你的工程里就行了。
while(MAX3 ...

你好 ,应该还有两个数据处理文件啊 能不能也让学习一下?
作者: tlpeng    时间: 2016-12-3 10:54
楼主楼主,你上拉电阻是在模块上加的还是在max上加的呀。
模块上好像自带4.7k电阻,不过供电时1.8v的,stm32的供电是3.3v。
所以我现在很纳闷这个上拉电阻的电源到底应该是多少伏的。
现在用的模块自带的上拉电阻,1.8v供电,你们的代码都认真参考了,温度可以正常显示,但是fifo死活读不出来,读出来的都是1.
不知道是硬件问题还是时序问题。
所以想问下楼主现在的硬件是模块外又加了3.3v 4.7k的上拉电阻还是在max外加的3.3v 4.7k上拉电阻呀
作者: 空心杯    时间: 2016-12-3 16:02
我是在外部加4.7K上拉电阻3.3V电压
作者: 空心杯    时间: 2016-12-3 16:03
空心杯 发表于 2016-12-3 16:02
我是在外部加4.7K上拉电阻3.3V电压

硬件模块并没有更新,这的确,,,有点坑的感觉
作者: qingyulv    时间: 2016-12-5 16:28
谁能帮个忙啊,读出了数据后,如何计算出心率血氧呢
作者: a544161475    时间: 2016-12-12 10:01
这款芯片除了能在手指读出心率和血氧,手腕能读出来吗?
作者: HTQ    时间: 2017-1-3 14:22
小小怪 发表于 2016-11-6 20:21
我的平台不是在STM32上的,工程附上太繁琐。把IIC和MAX30100的驱动加载到你的工程里就行了。
while(MAX3 ...

你好。请问有max30100的中文手册吗?实在看英文有困难。能发我一份吗。非常感谢你。984335200@qq.com
作者: HTQ    时间: 2017-1-3 14:25
你一移植成功了吗?可不可以参考下。我买传感器自带的stm32程序,但还是不行
作者: 小小怪    时间: 2017-1-3 15:49
HTQ 发表于 2017-1-3 14:22
你好。请问有max30100的中文手册吗?实在看英文有困难。能发我一份吗。非常感谢你。

没有...
作者: HTQ    时间: 2017-1-9 21:44
空心杯 发表于 2016-11-6 20:21
可以啊兄弟,我的加了4.7K,3.3V上拉电阻,现在心率读出来了,SpO2总是100和0,不知道是不是时序的问题

您好,工程文件能不能参考一下。手册看不太懂。谢谢您啦。
作者: 空心杯    时间: 2017-1-13 21:07
HTQ 发表于 2017-1-9 21:44
您好,工程文件能不能参考一下。手册看不太懂。谢谢您啦。

不好意思最近忘了看论坛了
作者: 空心杯    时间: 2017-1-13 21:11
HTQ 发表于 2017-1-9 21:44
您好,工程文件能不能参考一下。手册看不太懂。谢谢您啦。

上了

心率.zip

4.17 MB, 下载次数: 4514


作者: 卡塔之魂    时间: 2017-1-17 09:54

你这个成功读取心率血氧数据了吗?想借鉴一下。
作者: 空心杯    时间: 2017-2-6 09:55
成功了啊
作者: 空心杯    时间: 2017-2-6 09:55
卡塔之魂 发表于 2017-1-17 09:54
你这个成功读取心率血氧数据了吗?想借鉴一下。

成功了啊,用示波器看过了的
作者: 卡塔之魂    时间: 2017-2-8 17:23
空心杯 发表于 2017-2-6 09:55
成功了啊,用示波器看过了的

好的,多谢分享,新年快乐!
作者: yutiaqnxiang618    时间: 2017-2-9 14:02

请问一下,工程中算法有关的文件是美信提供的还是自己写的,在搞max30101中,得到了red,ir,green数据,不知道怎么转换为心率血氧
作者: yutiaqnxiang618    时间: 2017-2-10 10:04
小小怪 发表于 2016-11-11 13:41
测脉搏3跳、5跳.....越大  测出的脉搏数/分钟  越准,3跳误差±3内;
血氧只是理 论 的 公式上得出了, ...

算法有代码吗,想参考一下,谢谢啦
作者: 小小怪    时间: 2017-2-10 10:25
yutiaqnxiang618 发表于 2017-2-10 10:04
算法有代码吗,想参考一下,谢谢啦

再等一个星期,把手头上其他工作弄完再整理出来
作者: 空心杯    时间: 2017-2-10 12:36
yutiaqnxiang618 发表于 2017-2-9 14:02
请问一下,工程中算法有关的文件是美信提供的还是自己写的,在搞max30101中,得到了red,ir,green数据, ...

同学,讲真的我是不懂算法的,我是达到测心率目的就行了
作者: 空心杯    时间: 2017-2-10 12:38
tlpeng 发表于 2016-12-3 10:54
楼主楼主,你上拉电阻是在模块上加的还是在max上加的呀。
模块上好像自带4.7k电阻,不过供电时1.8v的,stm ...

那个模块上面没得4.7K的好像,我之前差点把自己搞疯了,才发现没得上拉电阻,供电没问题的,模块就用3.3的供电,但是你单独搞芯片的话,就得看看模块上面那个稳压芯片的输出了,或者你直接看看MAX30100的芯片数据手册

作者: 东风不可逆    时间: 2017-2-10 14:40
提示: 作者被禁止或删除 内容自动屏蔽
作者: 东风不可逆    时间: 2017-2-10 15:01
提示: 作者被禁止或删除 内容自动屏蔽
作者: 空心杯    时间: 2017-2-12 10:23
东风不可逆 发表于 2017-2-10 14:40
请问楼主,您是怎么样用示波器验证结果的?

我用匿名的飞控上位机看的
作者: tlpeng    时间: 2017-2-12 10:27

没调通。。。
作者: XiaoMiFeng    时间: 2017-2-13 15:20
提示: 作者被禁止或删除 内容自动屏蔽
作者: lovezhang    时间: 2017-2-14 17:19
楼主,你得到的心率数值是使用串口调试助手看到的吗?我把你的工程移植过去直接printf(“%d\r\n”,HR),打印出来的一直是0
作者: 空心杯    时间: 2017-2-15 21:48
lovezhang 发表于 2017-2-14 17:19
楼主,你得到的心率数值是使用串口调试助手看到的吗?我把你的工程移植过去直接printf(“%d\r\n”,HR),打 ...

你的模块外接上拉电阻没有?

作者: lovezhang    时间: 2017-2-16 11:56
空心杯 发表于 2017-2-15 21:48
你的模块外接上拉电阻没有?

但是模块上有三个472电阻啊,断了原来的1.8v飞线之后测了那三个电阻3.3v左右
作者: yutiaqnxiang618    时间: 2017-2-17 16:21
小小怪 发表于 2016-11-11 13:41
测脉搏3跳、5跳.....越大  测出的脉搏数/分钟  越准,3跳误差±3内;
血氧只是理 论 的 公式上得出了, ...

请问交流分量和直流分量怎么得出来的,现在方便把计算心率和血氧的代码贴出来吗,谢谢!
作者: mzcry    时间: 2017-2-22 19:14
提示: 作者被禁止或删除 内容自动屏蔽
作者: mxiaotao    时间: 2017-2-26 20:41
qingyulv 发表于 2016-12-5 16:28
谁能帮个忙啊,读出了数据后,如何计算出心率血氧呢

你好,可以把读出数据的源程序发一下吗?不胜感激
作者: mxiaotao    时间: 2017-2-26 21:17
空心杯 发表于 2017-2-12 10:23
我用匿名的飞控上位机看的

请问如何设置开启转换,和关闭转换。谢谢
作者: mxiaotao    时间: 2017-2-27 18:16
小小怪 发表于 2016-11-11 13:41
测脉搏3跳、5跳.....越大  测出的脉搏数/分钟  越准,3跳误差±3内;
血氧只是理 论 的 公式上得出了, ...

你好,可以分享一下你的源程序吗?不胜感激。现在主要不知道如何控制开始转换
作者: ygxdh    时间: 2017-3-11 12:03
有人下载了,楼主分享的心率工程文件吗?为什么我点不开呢?好像是没有.uvproj 。请指教
作者: mxiaotao    时间: 2017-3-11 19:23
小小怪 发表于 2016-11-6 11:49
你的时序没有弄好吧,注意标准IIC的地址哦。我的脉搏和血氧都出来了。

请问为什么我的经过滤波器之后波形效果不好,是怎么回事

滤除高频信号脉搏波.png (47.95 KB, 下载次数: 10)

滤除高频信号脉搏波.png

作者: 小小怪    时间: 2017-3-13 00:24
mxiaotao 发表于 2017-3-11 19:23
请问为什么我的经过滤波器之后波形效果不好,是怎么回事

这很像静态噪声,估计是手指没有放在上面。
作者: mxiaotao    时间: 2017-3-13 15:05
小小怪 发表于 2017-3-13 00:24
这很像静态噪声,估计是手指没有放在上面。

这是放了手指之后,去除直流信号和滤波之后的波形
作者: 卡塔之魂    时间: 2017-3-14 08:44
本帖最后由 卡塔之魂 于 2017-3-14 08:49 编辑
mxiaotao 发表于 2017-3-11 19:23
请问为什么我的经过滤波器之后波形效果不好,是怎么回事

你这个波形是怎么显示出来的,Excel自动描点的么?
作者: 小小怪    时间: 2017-3-14 09:04
卡塔之魂 发表于 2017-3-14 08:44
你这个波形是怎么显示出来的,Excel自动描点的么?

我自己写的一个绘图窗口,传原始数据到PC,PC端做数据处理
作者: mxiaotao    时间: 2017-3-14 17:58
卡塔之魂 发表于 2017-3-14 08:44
你这个波形是怎么显示出来的,Excel自动描点的么?

对,也可以用matlab处理

作者: mxiaotao    时间: 2017-3-14 17:59
小小怪 发表于 2017-3-14 09:04
我自己写的一个绘图窗口,传原始数据到PC,PC端做数据处理

可以请教一下在PC上如何处理的吗?

作者: 小小怪    时间: 2017-3-14 18:08
mxiaotao 发表于 2017-3-14 17:59
可以请教一下在PC上如何处理的吗?

这贴有说
作者: mxiaotao    时间: 2017-3-14 20:29

可以再具体说一下吗?
步骤是了解了,但是具体如何实现确实不会弄

作者: mxiaotao    时间: 2017-3-14 20:36
还有一个问题就是波形处理不好
作者: ygxdh    时间: 2017-3-19 10:49
本帖最后由 ygxdh 于 2017-3-19 10:55 编辑
a514582920 发表于 2016-11-1 09:08
之前温度不对的问题已经解决了,是iic时序不对;现在的主要问题是如何设置红灯和红外灯控制寄存器,采集血 ...

大神。我现在也在用max30102测量心率、血氧饱和度。之前也参考了一下Aruino和楼主的程序,现在移植到stm32里面,读取值要么是0,要么是-999.能不能参考一下你的程序呢?

捕获.JPG (82.52 KB, 下载次数: 2)

捕获.JPG

作者: zach_iot    时间: 2017-3-19 15:32

楼主,我用了楼主的程序,但是数据全是0,在程序里也找不到INT  R0  IR0这三条线接哪?  楼主能告诉下吗?  谢谢你
作者: 空心杯    时间: 2017-3-22 12:47
zach_iot 发表于 2017-3-19 15:32
楼主,我用了楼主的程序,但是数据全是0,在程序里也找不到INT  R0  IR0这三条线接哪?  楼主能告诉下吗 ...

操作那个芯片用不到其他线的,如果用不到低耗电模式的话,只要SDA SCL就可以了
作者: zach_iot    时间: 2017-3-23 23:11
空心杯 发表于 2017-3-22 12:47
操作那个芯片用不到其他线的,如果用不到低耗电模式的话,只要SDA SCL就可以了

好的    谢谢你  
作者: 空心杯    时间: 2017-3-28 22:13

仔细读一读芯片的数据手册,相信会有很大的好处的
作者: ygxdh    时间: 2017-3-30 11:30
本帖最后由 ygxdh 于 2017-3-30 11:32 编辑

请问楼主大人,你分享的程序里面这3个数字2.43,55,20.576是怎么出来的呢?求解释,谢谢啦@空心杯

捕获.JPG (42.72 KB, 下载次数: 2)

捕获.JPG





欢迎光临 OpenEdv-开源电子网 (http://www.openedv.com/) Powered by Discuz! X3.2
/* */