本帖最后由 特朗姆斯 于 2016-8-24 15:12 编辑
直流无刷电机控制方式比较简单,直接用PWM控制速度即可。
目前碰到的问题是在相同的PWM占空比下,两个相同的电机真实呈现的速度不一样,因此我想到了利用速度检测功能来对其进行校准。但是速度检测功能令我很头疼,目前采用的是把速度检测引脚连接到I/O引脚,用外部中断的方式采集一秒钟内的脉冲数来进行判断。按原子哥的说法是这种方式会使ARM频繁进入中断,不是理想的实现方式。
想到过用定时器捕获输入的方式,看完datasheet中关于定时器捕获输入的内容,似乎也是要通过中断来实现脉冲捕获,那和我使用的外部中断采集没有区别。
另外还有看到定时器外部时钟模式2,可以通过TIMx_CHx引脚触发开始计数,通过TIMx_ETR引脚来对脉冲进行计数。使用这种模式虽然可以不使用中断,但是要占用两个定时器,这两个定时器还必须是有TIMx_ETR引脚的高级定时器,加上额外的I/O资源开销似乎也是得不偿失。
目前研究下来差不多是上述情况,希望有大神给予指引。
ps:我用的直流无刷电机有配套的控制器,ARM采集的脉冲数由控制器发出。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
对,用了一个控制器
可能是我没讲清楚,我用了一个控制器控制直流无刷电机,这个控制器会返回脉冲数。
我想要统计1s内采集的脉冲数来获得速度值,目前困惑于如何去采集更佳
我觉得你方向走错了!不应该去考虑速度上的一致,首先是这种方式受电机单个特性影响,而电机随着工作时间的不同,也会表现出不同的性能,也会受电源的影响,其次你得到的速度也不一定是准确的,这要考虑到时间的问题,比较复杂。建议不采用这种方式,如果两个电机速度不一样可以考虑PID调节,这样两个电机才有可能实现一种速度同步
我知道可以用PID调节两个电机速度,从而实现同步。
问题是最基本的检测两个电机速度的功能也没有做好,何谈PID调节?
检测脉冲数无非是使用查询和中断两种方式,这就得看你用的什么编码器了,一般确实是用的中断获取这个值,但如果你不在中断里做太多的事,肯定是可以使用的!
一周热门 更多>