上一节说到使用GA370的编码直流减速电机作为机器人智能车的驱动能源具有很大的优势。那究竟什么样子的呢?从下图可以看到减速电机有6根线芯。 分别是电机电源M+,编码器的电源vcc,A和B线,编码器电源地,电机电源GND. 来自淘宝的截图 具体的参数看下边,信号线6个,电机一圈11个脉冲,减速比35.
我们在实际使用中STM32f103RC单片机的定时器捕获来编程实现, stm32要设计成上升沿raise和下降沿edge有效触发计数。这样的话,可以增加计数精度。
(1)编码器是什么? 编码器是一种将角位移或者角速度转换成一串电数字脉冲的旋转式传感器。编码器又分为光电编码器和霍尔编码器。 (2)编码器工作原理是什么? 霍尔编码器是有霍尔马盘和霍尔元件组成。霍尔马盘是在一定直径的圆板上等分的布置有不同的磁极。霍尔马盘与电动机同轴,电动机旋转时,霍尔元件检测输出若干脉冲信号,为判断转向,一般输出A/B两组存在一定相位差的方波信号。可以看到在A和B 相上都存在上升沿和下降沿,比如上升沿为第一个触发,哪个的先来就可以判断方向。示意图如下:
这里经常看到有些文章说倍频,其实是一个周期内捕获的次数,在单片机STM32的捕获TIMX->CNT 的计数的时候,是2*2=4的倍频。 第一个2是A相和B 相,第2个2是 上升沿和下降沿都有效。 由于我们程序中采集的是TIMX->CNT的计数值,所以我们最好计算出1个TIMX-CNT 走了多少m? //电机一个计数常量走的距离是多少m? 假设电机输出脉冲 p =11;单位时间t=0.01 s,减速比ratio=35,轮子直径为d=0.1m,倍频数 Mul=4;
//电机AB 相是2线,上升沿下降沿都检测所以是2倍频 ,一圈11个脉冲, 一圈的计数为
TIMX->CNT = p*Mul =11 *2 *2 =44个计数。 减速比为ratio =35 ,也就是轮子主轴输出 1/35圈此时为44个计数。同时我们知道一圈的距离为 S = Π*d = 3.1415*0.1 =0.31415
这样, 得出一个计数的距离是 s1 = πd*1/35 /44 = 0.000203 m 这是一个计数的距离。 速度v = s/t = (Π*d /35/TIMX->CNT)/t 验证: 假设单位时间t采集10个计数。 v = 0.31415/35/10 / 0.01 = 0.0897 m/s 来源出处(更多):http://blog.cvosrobot.com/?post=596
|