求用STM32单片机测频率的方法

2020-01-01 17:55发布

最近在做一个测频计用STM32,我目前最大只能测到50KHz,最小只到100HZ,但是题目要求10Hz~100kHz,相对误差≤0.1%,请问下通过对STM32的内部设置可以达到题目要求吗?求教求教
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
25条回答
fnems
1楼-- · 2020-01-01 20:57
TIM 可以设置时钟来源为外部输入的
10192201
2楼-- · 2020-01-02 01:00
fnems 发表于 2012-4-22 11:52
TIM 可以设置时钟来源为外部输入的

是的,我就是用TIM1为外部输入进行脉冲计数然后测频的,可是我的频率范围不够,没能达到题目要求啊,题目要求10Hz~100kHz,相对误差≤0.1%
fnems
3楼-- · 2020-01-02 04:04
10192201 发表于 2012-4-22 11:57
是的,我就是用TIM1为外部输入进行脉冲计数然后测频的,可是我的频率范围不够,没能达到题目要求啊,题目 ...


自己也是看手册知道能这样用,至于具体为什么测不到100kHz能说一下吗?

嗯,既然有了相对误差≤0.1%这样的精度要求,就要考虑舍入误差了。

如果在基准时间段内测脉冲数的话,脉冲计数小于500~1000这个量级就不能满足要求。所以有下限。

当频率太低的时候就必须换别的计算方法,比如测脉冲长度/周期。
这时候也要注意被测信号一个周期内,基准时钟脉冲数量大于1000才准确。
10192201
4楼-- · 2020-01-02 10:00
 精彩回答 2  元偷偷看……
fnems
5楼-- · 2020-01-02 12:55
本帖最后由 fnems 于 2012-4-22 12:57 编辑
10192201 发表于 2012-4-22 12:35
哎,我也不知道为什么,不过后来好点了,我把定时的时间缩短之后,高频的脉冲计数就精确多了,但是低频还 ...


“把定时的时间缩短之后,高频的脉冲计数就精确多了”,
难道说之前有溢出?

程序上是怎样的思路?

测周期法的话,比如说一个周期内测量到基准10kHz的计数480个吧。
你自己没法判断到底是480.1个还是480.9个对不。这就是传说中的舍入误差。

所以当测量值是取整得到的a的时候,不确定度就是 1/a
如果精度要求0.1%,就是说 1/a < 0.1%,须有a>1000

当这个测量值是四舍五入得到的r,那么不确定度就是0.5/r
要求精度0.1%则 r>500

- - - - - - - 华丽的分割线 - - - - - - - - -

直观的举个例子,取整计数,测出来只有一个脉冲,那么可能正好有一个,也可能差一点就两个脉冲。
这时候误差就是100%了

所以定性来讲,计数值越大越精确,越小越容易受到舍入误差的干扰
lllaaa
6楼-- · 2020-01-02 16:35
tim对外部频率源计数的时候,输入频率最高频率能到多少啊

一周热门 更多>