1

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

采样率为 8MHz,处理器频率为 26MHz,精度为 10 或 8 位。

我在提出一种强大的峰值检测方法时遇到了问题。我希望能够从手指体积描记器中检测到心脏脉搏。我已经设法使用阈值方法准确测量心率。然而,FP 对运动极为敏感,信号的偏移量会随着运动而变化。然而,信号的峰值仍然会出现,但电压偏移会发生变化。

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

您认为这种方法的可行性如何?有没有更简单的方法来使用微控制器执行峰值检测?

4

3 回答 3

0

您仍然可以在设备移动时引入虚假峰值检测。无论您是计时平均峰值持续时间还是应用 FFT(快速傅立叶变换),都会出现这种情况。

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

正如 Kenny 所说,8MHz 可能会压倒 26MHz 芯片。如此高的采样率有什么特别的原因吗?

于 2012-06-13T19:12:54.190 回答
0

如果您可以使用过零检测周期,即使在 10 Hz 的 10 倍过采样下,您也可以使用 quick-n-dirty-edge 的线拟合来找到确切的周期,然后减去该周期中的新波样本前一个,并获得一个直流偏移。周期测量将具有您的采样率的精度。对时间和幅度归一化数据进行操作会容易得多。

与仍需要额外数据处理的 FFT 相比,这个想法在计算上是轻量级的。

于 2012-07-03T18:24:20.467 回答
0

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

为了隔离感兴趣的频率范围,我还推荐一个简单的低阶数字滤波器。如果您可以访问 Matlab,您可以使用其滤波器设计和分析工具(FDATool 简介)来玩转数字滤波器设计。您会发现,数字滤波 ( wiki ) 在计算上并不昂贵,因为它是乘法和加法的问题。

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

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

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

当然,如果您进行文献搜索,您会发现各种潜在的算法,但我认为基于斜率的检测因其简单性而非常有用。希望能帮助到你。

于 2012-06-20T00:59:10.690 回答