C中微控制器峰值检测的斜率

时间:2012-06-13 19:05:53

标签: c detection microcontroller

我正在使用LED和接收器制作手指体积描记器(FP)。传感器产生模拟脉冲波形,经过滤波,放大并馈入3.3-0V范围的微控制器输入。此信号将转换为数字形式。

Smapling率为​​8MHz,处理器频率为26MHz,Precision为10或8位。

我遇到问题,想出一种强大的峰值检测方法。我希望能够从手指体积描记器中检测心脏脉冲。我已设法使用阈值方法生成准确的心率测量。然而,FP对移动非常敏感,并且信号的偏移可以基于移动而改变。但是,信号的峰值仍然会出现,但电压偏移会有所不同。

因此,我提出了一种使用斜率检测峰值的峰值检测方法。例如,如果产生峰值,则最大点之前和之后的斜率将分别为正和负。

您认为这种方法有多可行?是否有更简单的方法使用微控制器执行峰值检测?

3 个答案:

答案 0 :(得分:0)

移动设备时,您仍然可以检测到错误的峰值。无论您是时间平均峰值持续时间还是应用FFT(快速傅里叶变换),都会出现这种情况。

使用FFT,你应该能够忽略你正在考虑的频率范围之外的峰值(即那些<30 bpm和> 300 bpm,比如说)。

正如Kenny所说,8MHz可能会压倒26MHz的芯片。如此高采样率的任何特殊原因?

答案 1 :(得分:0)

与某些评论一样,我也建议降低您的采样率,因为您现在只关心脉搏(即心率)。因此,假设您将关注静息心率,您将处于亚1Hz至2Hz范围(60 BPM = 1Hz),具体取决于受试者的健康状况,年龄等。

为了隔离感兴趣的频率范围,我还建议使用简单的低阶数字滤波器。如果您可以访问Matlab,则可以使用其过滤器设计和分析工具(Introduction to the FDATool)来使用数字滤波器设计。正如您所知,数字过滤(wiki)的计算成本并不高,因为它是乘法和加法的问题。

要回答问题的检测部分,是的,在微控制器内的体积描记器波形上实现峰值检测当然是可行的。以您的为例,基于斜率的峰值检测算法将对您的波形数据进行操作,搜索斜率变化,基本上是斜率波形过零的位置。

以下是您应用程序需要考虑的其他一些事项:

  • 计算斜率可以有“扩散”(即您是否找到相邻样本之间的斜率,或者相隔几个样本的样本?)
  • 如果您的峰值检测算法在生理意义上定位太靠近或太远的峰值会怎样?
  • 脉搏血氧仪(wiki)经常使用发射红光和红外光的LED。 LED的频率如何影响体积描记器? (提示:它可能不重要,但我相信你会发现一个波长可以在你感兴趣的频率范围内产生更大的振幅。)

当然,如果您进行文献检索,您会发现各种潜在的算法,但我认为基于斜率的检测非常简单。希望它有所帮助。

答案 2 :(得分:0)

如果你可以使用零交叉来检测周期,即使在10倍的10倍过采样时,也可以使用快速n边缘线的拟合来找到确切的周期,然后减去新波的样本。那个时期跟上一个,并得到一个DC偏移。周期测量将具有采样率的精度。对时间和幅度标准化数据进行操作将更加容易。

与FFT相比,这种想法在计算上很轻,而FFT仍然需要额外的数据处理。