智能车:普通直流有刷电机通过编码器计算路程

        大家在接触智能车的过程中应该都会想过怎么用编码器来计算车行驶的距离,方法估计五花八门,我自己也用过很多种方法来计算车行走的距离,在长时间的试错和积累中我总结出了一个可能稍微巧妙一点的方案,下面我就用过英飞凌的TC-264这款芯片来做演示。

        首先大家应该理解这一概念:s=v\ast t(单位路程 = 速度 * 单位时间),那么v=s\div t,

理解这一概念那么将他转换到编码器计算路程也是一样的,接下来我将用实际来解释我的结论,先进行编码器的采集,

void encoder_get(void)
{
    motor.encoder_l = -1*(encoder_get_count(TIM2_ENCODER));//左边编码器采集
    motor.encoder_r = encoder_get_count(TIM6_ENCODER);//右边编码器采集
    encoder_clear_count(TIM2_ENCODER);
    encoder_clear_count(TIM6_ENCODER);
}

将编码器采集到的脉冲打印到我们的显示屏上,或者调试的时候显示这个变量,随后我们对两个编码器相加除二:

  motor.Distance += (motor.encoder_l + motor.encoder_r)/2;

这样我们就得到了两个编码器的中心脉冲数,这样不管车子在拐弯或者其他情况下都能得到一个平均脉冲,接着我们就在赛道上找出一个大于一米的直道,我取的是两米直道(S),然后用手推车记脉冲(M),这样我们就得到了车走两米的脉冲,然后我们用路程除于脉冲数,这样就得到了一个单位距离的脉冲(m):m=S\div M,到此问题就基本被解决了,我们得到了这个单位距离的脉冲数之后在后面计算路程的过程中就变得相对容易的多了(S=m\ast M),这个原理和开头所说的相类似。

motor.Real_Distance = (0.0352*motor.Distance);

用这个方法会很大程度上接近车子行走的距离,从而减少了用其他方法计算出来路程的不准确因素,这个方法我屡试不爽,要是大家还有什么更加巧妙的用编码器记路程的方法也可以来相互探讨分享一下QAQ.

  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值