全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > MEMS传感器 >

基于BH1790GLC脉搏数据采集的设计方案

时间:2022-04-24 16:39

人气:

作者:admin

标签: 数据采集  传感器 

导读:这样的程序目录,显然很不合适使用arduino IDE去查阅,这里推荐大家使用Source Insight的软件去查看代码。需要注意的是,Source Insight不支持.ino文件,为了方便,将HeartRate.ino另存为一个.c的...

硬件组成与连接

1、ROHM的传感器底板Sensor Shield

2、BH1790GLC传感器

3、ArduinoNANO电路板。

poYBAGJlDN2AcU1rAAJlhxDXa4Y115.png

连接关系如上图所示

程序解读

ROHM官方提供的BH1790GLC_HeartRate例程是基于arduino写的,文件结构如下图:

pYYBAGJlDN6ANR3LAACUYChQZ8Y247.png

这样的程序目录,显然很不合适使用arduino IDE去查阅,这里推荐大家使用Source Insight的软件去查看代码。需要注意的是,Source Insight不支持.ino文件,为了方便,将HeartRate.ino另存为一个.c的文件,方便Source Insight查看。

将程序烧录到硬件中运行如下:

poYBAGJlDN6Acqk0AACaqKxRYDA608.png

当前心率为70,反复测试几次,数值都在70-75,看来一致性还是不错。

废话不多说,先看看ROHM怎么写的,下面开始直接上代码:

poYBAGJlDOCAWAPKAAIdQhNx-SQ857.png

在setup()函数中,有两个比较关键的函数hr_bh1790_Init()和hr_bh1790_StartMeasure()函数

其中hr_bh1790_Init()并没有对bh1790硬件进行初始化,只是简单的读取了传感器的两个ID寄存器,验证了一下传感器的身份,同时让硬件进行复位。

poYBAGJlDOGAbgL4AAC-LhqG9AA808.png

其主要的工作还是去初始化程序定义的结构体,给这些结构体赋上初值。

其中pwCalc_Init(void)函数也很重要,程序中定义了两个IIR数字滤波器,这个函数是将这个数字滤波器进行初始化。

两个IIR数字滤波器是3.5HZ的高通滤波器和0.5HZ的低通滤波器。

小知识:

在律规则的情况下,心率和脉搏是一致的。如果有心律不齐的人,会测到心率和脉率不一致,脉率少于心率。正常人心率在60—100次/分钟,在此范围有波动都是正常的

所以将两个数字滤波器设置在这个这个范围是合适的。

接下来就是在setup()函数中的另外一个函数hr_bh1790_StartMeasure (void)

pYYBAGJlDOGAbi3uAACNeCsEsp8997.png

在这个函数中程序对MEAS_CTRL1、MEAS_CTRL2、MEAS_START寄存器进行了操作

接下来就是最关键的loop()函数,看看ROHM官方是怎么将波形数据进行处理的。

pYYBAGJlDOKAEXo3AAHXiY1R-dc285.png

在loop函数中,timer_flg是一个32HZ的计时标志,每隔31.25MS,就读一次传感器的数据,并进行计算。

其中hr_bh1790_Calc(s_cnt_freq)是本次分析的关键函数,在这个函数中,程序将传感器数据进行读取,滤波,判断,最后计算出心率值;而hr_bh1790_GetData()仅仅是将心率结果数据和判断读出来,方便串口打印而已。

直接查看hr_bh1790_Calc()函数:

pYYBAGJlDOWAa7NTAAJPFz7_e6E245.png

在这个函数中,程序通过pw_GetMeasureData(&s_pwData);将寄存器DATAOUT_LEDOFF和DATAOUT_LEDON的数据读出来保存到s_pwData结构体中。

pwCalc(&s_pwData,&pw);及将s_pwData数据传入到IIR滤波器中,经过高通和低通滤波器之后,得到的数据保存到PW变量中。

poYBAGJlDOaAFTtXAAFuGON9Uwk962.png

ma_AverageF()滑动求平均,

iir_Filter()即数字滤波器,先后经过s_iirPrm_hpf高通数字滤波器和s_iirPrm_lpf低通数字滤波器。

我在BH1790GLC_HeartRate例程上插入自己的代码,将s_pwData(红色DATAOUT_LEDON,蓝色DATAOUT_LEDOFF)以及经过IIR滤波之后的数据 pw(绿色)绘制出来。

pYYBAGJlDOiAFgwtAAGEbASZ3q8276.png

将绿色图形放大:

poYBAGJlDOiAcw-oAADF9ttdYWI875.png

可以看到,经过IIR滤波之后,pw几乎呈现很规律的正弦波。

并且,这个波形与s_pwData的幅值大小没太大的关系。所以,最这样的波形进行统计和判断是就比之前要容易很多了。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信