打印
[STM32F2]

正弦信号输入到ADC引脚,如何测量信号频率

[复制链接]
1050|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
正弦信号输入到ADC引脚,主要用于测量有效值,但是频率是变化的(50-400Hz),怎么测量频率比较准确。本来想软件检测过零点计算,但按照一个周期128点,误差1/128为0.78%也比较大,有没有更好的计算频率的方法。

使用特权

评论回复
沙发
sonicll| | 2022-8-30 17:29 | 只看该作者
如果对测量耗时没有要求的话,可以考虑做FFT

使用特权

评论回复
评论
情感天下 2022-8-30 19:33 回复TA
FFT能实现,总共6路,耗时有点多,其他任务可能响应慢。 
板凳
xch| | 2022-8-30 18:08 | 只看该作者
要测多准?

ADC 采集速度能到多少SPS?

使用特权

评论回复
地板
yjmwxwx| | 2022-8-30 19:32 | 只看该作者
https://bbs.21ic.com/icview-3245662-1-1.html


我前些日子学单片机搞的小试验,两个运放一路进ADC一路进定时器捕获,再根据捕获到的时间更新用来触发ADC采样的定时器,方法比较简单,就是定时器捕获+可变采样率

捕获的时间就是频率,可变采样率采集到的电压序列乘相同点数的COS和SIN表累加就出来实部虚部了(DFT)

使用特权

评论回复
5
情感天下|  楼主 | 2022-8-30 19:36 | 只看该作者
xch 发表于 2022-8-30 18:08
要测多准?

ADC 采集速度能到多少SPS?

ADC速度问题不大,单通道单次转换时间为0.5us,要是采集太频繁,数据量太大,计算有效太费时间了,忘记说了系统这样的ADC总共有6路。希望频率误差为0.1Hz。

使用特权

评论回复
6
xch| | 2022-8-30 20:58 | 只看该作者
情感天下 发表于 2022-8-30 19:36
ADC速度问题不大,单通道单次转换时间为0.5us,要是采集太频繁,数据量太大,计算有效太费时间了,忘记说 ...

使用定时器触发ADC采样,采样频率1600Hz。最多保存32个ADC数据。‘然后 使用递归算法得到正弦波幅度和频率。
16位的ADC 可以达到0.1hz分辨率。 要不然,增加采样频率,如12位ADC ,就用 25600采样。

还有一种方法就是使用DPLL,更改触发频率,来趋近所要求的精度。只是测量一次需要好几个轮回,慢了。

使用特权

评论回复
7
lijun1981xd| | 2022-8-30 23:11 | 只看该作者
你测试的信号频率短时间变化不大,可以采用你软件过零点计算频率,所得软件频率在进行软件递归滤波,滤波越强,得到信号频率精度越高。以前用STM8S003采样频率1K采样50HZ交流,频率精度差不多能做到0.1HZ

使用特权

评论回复
8
laocuo1142| | 2022-8-31 08:20 | 只看该作者
0.1hz精度太高,需要的数据太大,MCU主频够高可以

使用特权

评论回复
9
ayl439| | 2022-8-31 08:38 | 只看该作者
MARK

使用特权

评论回复
10
伏尔加的鱼| | 2022-8-31 09:32 | 只看该作者
时间上允许的话可以做每个采样点处理软件过零

使用特权

评论回复
11
manbo789| | 2022-8-31 12:10 | 只看该作者
会有一些方法比FFT更快的,

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

25

帖子

2

粉丝