PluseSensor传感器调试问题小结

大家好,今天小白给大家分享一下关于pluseSensor传感器调试过程中遇到的一些问题及解决方法,欢迎一起交流学习。

一:检测心率传感器是否可用

PluseSensor传感器的数据接口是模拟口的,有三个引脚,一个VCC,一个GND,还有一个S信号输入引脚,如下图:

首先检查传感器是否可用:

使用示波器测量,按照传感器引脚顺序接好电源引脚和地引脚。将示波器探头接到输出引脚(S),同时将示波器的时间扫描档放置到200ms 左右,电压扫描档放置到 2V 左右,示波器探头设置为直流耦合(DC)。如果档位不正确是无法看到正确的波形的,如下图,可以看出Plusesensor传感器是可用的。

二:PluseSensor调试

然后,我们将传感器接入到开发板(使用了ADC1通道),在代码中配置ADC1通道,并加入计算心率的算法。

结果无论手指是否触碰检测面,波形均是毫无规律。

紧接着,又重新查看了原理图及参考demo,可以肯定代码配置以及引脚接入均无问题。

后来咨询了相关的技术人员,发现代码配置的ADC1通道实际上并不对应开发板上的ADC1引脚,即代码中需要配置ADC0通道,开发板上接ADC1引脚。(主要是由于开发板原理图和开发板的引脚标注不明确),经过修改后,发现可以看到当手指碰触上PluseSensor检测面时,出现了脉冲波形。

 

三:使用PluseSensor传感器获得心率值

接下来,就是心率算法的一个调试过程。

基本原理:主要就是设置一个定时器,当定时时间到之后,去调用计步算法的接口函数,从而完成心率值的获取。

计步算法思路:Pulse Sensor 传感器中的光电二极管根据反射回的光强值,输出对应的电流值。此电流值被电路转换为电压并被单片机的 ADC 采集,就得到了脉搏的波形曲线,计算相邻两个脉搏波的峰值点的时间差并滤波,得到两次心跳之间的时间,即 IBI 数值。再根据转换关系就可以通过计算得出当前的心率值。

有关键的两个值:IBI 和 BPM ,IBI 是指连续的两个心拍之间的时间差(以秒为单位),而 BPM 是心率值,表示心脏每分钟跳动值,二者的转换关系为:BPM=60/IBI。这就是程序中心率的计算方法。

本次调试过程中,主要就是通过尝试修改自上次以来检测到脉冲的时间差值(主要是为了避免噪音),来尽可能的获取到合理的心率值,经过算法的一番优化之后,可以得心率值,测得的心率数据如下:

小结:

PluseSensor传感器在使用过程中,虽然出现了一些问题,但是经过一番努力,都得到了圆满的解决,欢迎一起讨论学习。

 

猜你喜欢

转载自blog.csdn.net/weixin_38498942/article/details/85321637