最近,在做智能小车,用
STM32+定时器+编码器来铺货方波,但是考虑到软件程序抓取的方波老是和示波器上的方波不一样,因为定时器频率的因素吧!
我老大给我提了一个这样的思路,不用定时器来测小车两轮的速度。因为示波器捕获的方波(光栅格)是一个个,很有规律的形状,那么用GPIO(应该是外设中断)进入中断后,判断上升/下降沿来记录方波的个数
举个例子:
进入中断,然后上升沿触发-(延时2.5ms)-下降沿触发,计数+1,就这样。比如1S内,左轮子计了100个,而右轮子计了96个,那么左边的轮子就比右边的轮子速度快。从而来调节两轮速度,使之平衡走直线。我感觉,很简单,非常好,但是就是心里面不不踏实,因为好像没有网友这样做的,这样的话,后面算法好用吗?
再说下我的思路(就是在网上找的),你们看看对不对。
①分别配置两个
tiM(也可以是一个)对应两个直流电机,配置什么的就不说了,这样的帖子很多。
②然后就是①对应的定时器中断,TIM时钟频率都设置成一样的,10ms一次。那么在中断里每隔10ms TIM_GetCounter(TIMx)捕获一次方波的个数,然后根据这个,应用程序轮询来获取速度。
③一种思路是可以和②一样,另一种是用同一个定时器,在中断里加限制条件来TIM_GetCounter(TIMx)获一次方波的个数,然后求出速度。
④最后用相关的算法,来实时调节两轮子,使之速度相等,此为后话。
现在我不确定的是TIM_GetCounter(TIMx),一次是不是捕获的方波个数,也就是说10ms内捕获这么多方波。
没搞过硬件的人,真的不懂。
x谢谢,我先看看
一周热门 更多>