BRN 发表于 2023-12-18 12:03:41

低性能单片机如何高效检测信号波峰


请问各位大佬,电压信号如下图,

首先这个图是我测到的整个过程。 我需要在波峰发生的时候,或者过一下下就作出反应,不能等太久。

我看着这个波是先下降,后上升,然后就下降。 我想判断下降了,然后上升了,然后一旦下降就认为波峰发生。

但是,如图所示,在整体下降,上升的大趋势中,他会一些跳动,这些跳动就会影响我判断。

我的单片机性能很差,没有资源做太复杂的判断,一个是RAM不够,一个是时钟也很慢,做多久的处理,信号过去了。

还请大佬们指点一二。





autolog 发表于 2023-12-18 12:31:02

为何非要单片机来检测?
这个需求用运放搭峰值保持电路就好了,再用mcu来放电,等待下一次

kv2004 发表于 2023-12-18 12:40:57

你这波峰也太不明显了,要不是跟踪这么长时间,根本找不出波峰的特征。性能顶天的单片机也不能立刻就准确抓住吧

DoDoTech 发表于 2023-12-18 13:05:50

用电容设计个采样保持电路

1a2b3c 发表于 2023-12-18 13:09:41

你怎么知道现在的高点是最高点?完全没规律的信号,

智涅 发表于 2023-12-18 13:14:47

震惊!!电工用单片机准确预测股值最高点!!{:titter:}

PaulDE 发表于 2023-12-18 13:53:25

不知道横坐标信息,假定频率比较低的话,用ADC采集完了数字处理也可以啊。先滤波,然后做一阶差分看斜率,斜率极性由正变负的位置有个波峰,这样可以得到局部峰值

BRN 发表于 2023-12-18 15:09:52

PaulDE 发表于 2023-12-18 13:53
不知道横坐标信息,假定频率比较低的话,用ADC采集完了数字处理也可以啊。先滤波,然后做一阶差分看斜率, ...
(引用自7楼)

老哥,你好,如我图上,在整体下降或者上升的过程中,是有几种小幅度的起起伏伏,

用你说的方式,会有识别很多波峰呀。

lb0857 发表于 2023-12-18 15:14:30

滤波之后就是平滑一个上升沿波形
这样实时性来得及吗

BRN 发表于 2023-12-18 15:17:52

lb0857 发表于 2023-12-18 15:14
滤波之后就是平滑一个上升沿波形
这样实时性来得及吗
(引用自9楼)

不行,一个是时间上来不及了。再多采样平滑。

lb0857 发表于 2023-12-18 15:23:23

ad采集一个时间段并计算峰值

albert_w 发表于 2023-12-18 15:29:36

是作出反应还不是做计算, 真难。
然后这种信号,费算法, 光是平滑就够喝一壶的

下一页 发表于 2023-12-18 16:05:54

先做个划窗平滑滤波,这个波峰就明显了

Momo 发表于 2023-12-18 19:52:58

智涅 发表于 2023-12-18 13:14
震惊!!电工用单片机准确预测股值最高点!!
(引用自6楼)

最高点只能捕捉,无法预测

PaulDE 发表于 2023-12-19 08:41:47

BRN 发表于 2023-12-18 15:09
老哥,你好,如我图上,在整体下降或者上升的过程中,是有几种小幅度的起起伏伏,

用你说的方式,会有识 ...
(引用自8楼)

记录一段时间内的波峰(算法需要的话再加上波谷),取最大的,它就是这段时间内的最高点了。
也可以做二阶差分获取拐点,重点考虑凸的部分。
前面的滤波很重要,可以把不必要的起伏去掉。资源紧张的话,滤波算法需要优选一下。不过实际上简单的滑动滤波效果就挺好的了。
如果需要使用波峰去做实时控制,那可能需要加上经验判定(波峰统计设定判决阈值)。如果只作记录,那无所谓实时性了。

令狐冲 发表于 2023-12-19 08:50:42

网上有心跳波形的波峰波谷检测算法程序,可以参考一下。
页: [1]
查看完整版本: 低性能单片机如何高效检测信号波峰