直流无刷电机速度检测采用什么方式采集脉冲数更好?

2019-07-20 19:46发布

本帖最后由 特朗姆斯 于 2016-8-24 15:12 编辑

直流无刷电机控制方式比较简单,直接用PWM控制速度即可。

目前碰到的问题是在相同的PWM占空比下,两个相同的电机真实呈现的速度不一样,因此我想到了利用速度检测功能来对其进行校准。但是速度检测功能令我很头疼,目前采用的是把速度检测引脚连接到I/O引脚,用外部中断的方式采集一秒钟内的脉冲数来进行判断。按原子哥的说法是这种方式会使ARM频繁进入中断,不是理想的实现方式。

想到过用定时器捕获输入的方式,看完datasheet中关于定时器捕获输入的内容,似乎也是要通过中断来实现脉冲捕获,那和我使用的外部中断采集没有区别。

另外还有看到定时器外部时钟模式2,可以通过TIMx_CHx引脚触发开始计数,通过TIMx_ETR引脚来对脉冲进行计数。使用这种模式虽然可以不使用中断,但是要占用两个定时器,这两个定时器还必须是有TIMx_ETR引脚的高级定时器,加上额外的I/O资源开销似乎也是得不偿失。


目前研究下来差不多是上述情况,希望有大神给予指引。


ps:我用的直流无刷电机有配套的控制器,ARM采集的脉冲数由控制器发出。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
22条回答
特朗姆斯
1楼-- · 2019-07-22 09:43
 精彩回答 2  元偷偷看……
正点原子
2楼-- · 2019-07-22 12:20
 精彩回答 2  元偷偷看……
特朗姆斯
3楼-- · 2019-07-22 13:51
本帖最后由 特朗姆斯 于 2016-8-25 16:34 编辑
正点原子 发表于 2016-8-24 19:49
用外部脉冲计数,溢出时才进入一次中断。
这样65536个脉冲才进入一次中断,可以去到很高的计数频率,而 ...


感谢原子哥晚上来回复!

这个外部脉冲计数模式是指定时器的从模式里的外部计数模式2吗 ?我看到datasheet里写的是要用到定时期通道引脚来触发外部脉冲计数开始,然后用定时器ETR引脚来进行脉冲计数。这样是不是相当于用硬件I/O资源和定时期资源来换取程序的稳定性。
特朗姆斯
4楼-- · 2019-07-22 16:52
yyx112358 发表于 2016-8-24 15:52
我以前试过,这个方法至少可以测到5Hz~25MHz的频率,精度0.03%以下
[mw_shl_code=c,true]//TIM7->100ms
...

MARK~非常感谢

但是这个方案耗费2个定时器,目前没有这么多资源可用。
Sun_Fly
5楼-- · 2019-07-22 22:29
中断
yyx112358
6楼-- · 2019-07-23 00:16
 精彩回答 2  元偷偷看……

一周热门 更多>