首页 > 评测 > 聆听来自心脏的信号——Heart Rate Click模块评测

聆听来自心脏的信号——Heart Rate Click模块评测

  • 作者:netlhx
  • 来源:21ic
  • [导读]
  • 心率传感器的型号颇多,目前就有如下几种常见的传感芯片或方案供选择,有ROHM的BH1790GLC脉搏波传感器,Maxim的MAX30100,艾普柯微电子的EM702及Silicon Labs的Si1143芯片等。今天就给大家来评测一下MAX30100的方案。

启动Arduino IDE,准备测试下实际效果。

Arduino-MAX30100一共包含3个测试例程,

MikroElektronika的Heart rate click模块12.jpg

分别是MAX30100_Debug,MAX30100_Mininal及MAX30100_RawData,先来看下RawData,这是读取的原始数据值,在打开SerialPlotter之前先设置串口连接及通信速率(默认为115200),下面是测试的结果。

MikroElektronika的Heart rate click模块13.jpg

其中橙色部分是原始的IR读取值,蓝色部分为Red读取值。测试图中前一部分是手指没有接触传感器的结果,看到数据稳定输出,后半部分是手指与传感器接触后的结果,可以看到有明显的脉搏效果。

原生的数据并没有处理,所以看不到脉搏的具体值。MAX30100_Mininal例程提供了一个更直观的、直接显示用户可读的测试结果

MikroElektronika的Heart rate click模块14.jpg

不过这测试结果偏差有点大。温度值及心率值明显不对。尝试调整了一下LED电流及采样频率,也没有年到明显的变化,下面是库中提供的几个可调整值

#define SAMPLING_FREQUENCY 100

#define CURRENT_ADJUSTMENT_PERIOD_MS 300 //500

#define IR_LED_CURRENT MAX30100_LED_CURR_50MA

#define RED_LED_CURRENT_START MAX30100_LED_CURR_50MA //MAX30100_LED_CURR_27_1MA

#define DC_REMOVER_ALPHA 0.45 //0.95

#define TEMPERATURE_SAMPLING_PERIOD_MS 2000

其中注释掉的部分是原来的预设值。通过反复测试,最后将采样频率提到300,得到了算是比较满意的结果,如下

MikroElektronika的Heart rate click模块15.jpg

尽管这样,中间偶尔还会看到一组另类的检测值,例如上述检测结果中的40.55bmp数据。

实际测试的结论是,检测数据还需要进一步的处理,直接得到的结果会有偏差。

实际上现在大多数的心率检测芯片,都存在不同程度的偏差,所以在实际应用中,都加入了滤波算法,去除错误的或不合格的检测结果,最后呈现给用户。

最后再说点题外话,Heart rate click使用的是click接口,专为click系列模块设计的一种接口,好处是直接可以插到click扩展接口上,click接口一共有16个PIN,去除3V3及GND接口外,还有很多可用的接口。但是对于像Heart rate click这样只使用了I2C接口的话,很多PIN都浪费了,比较而言Grove接口的利用率就高得多。

参考资源:

Heart rate click: https://shop.mikroe.com/click/sensors/heart-rate

MAX30100 for Arduino: https://github.com/oxullo/Arduino-MAX30100

  • 本文系21ic原创,未经许可禁止转载!

网友评论