17届智能车:使用编码器计算实际路程

系列文章目录

17届智能车:浅析总转风摄像头的图像处理_ssfight1的博客-CSDN博客_智能车摄像头图像处理



前言

能够很好地运用编码器对于智能车而言是如虎添翼的,编码器读取的脉冲数不仅可以用于速度环的输入输出,还可根据单位路程读取的脉冲数计算出行驶的总路程。下面我们简单介绍怎样利用编码器对路程进行换算。


一、编码器脉冲数获取

我们以英飞凌芯片为例,编码器脉冲数获取代码如下:

//-------------------------------------------------------------------------------------------------------------------
//  @brief      GPT12计数读取(编码器采集)
//  @param      gptn         	选择所使用的GPT12定时器
//  @return     void
//  Sample usage:           	speed = gpt12_get(GPT12_T2);//使用T2定时器
//-------------------------------------------------------------------------------------------------------------------
int16 gpt12_get(GPTN_enum gptn)
{
	switch(gptn)
	{
		case GPT12_T2: return (int16)IfxGpt12_T2_getTimerValue(&MODULE_GPT120);
		case GPT12_T3: return (int16)IfxGpt12_T3_getTimerValue(&MODULE_GPT120);
		case GPT12_T4: return (int16)IfxGpt12_T4_getTimerValue(&MODULE_GPT120);
		case GPT12_T5: return (int16)IfxGpt12_T5_getTimerValue(&MODULE_GPT120);
		case GPT12_T6: return (int16)IfxGpt12_T6_getTimerValue(&MODULE_GPT120);
		default: return 0;
	}
}

IFX_INLINE uint16 IfxGpt12_T2_getTimerValue(Ifx_GPT12 *gpt12)
{
    return (uint16)gpt12->T2.U;
}

二、路程换算

1.测量并计算单位路程的脉冲数(pulse/m)

#define DISTANDE_RATIO (11400.0f)//1M记到的路程,用于换算成实际的路程,5ms记录一次

下面给出两种测量方法:

1.首先以正常速度将车推出大于1米的距离,然后测量出实际距离以及编码器脉冲积分,最后根据单位距离的脉冲数=实际距离 / 脉冲积分从而计算出单位距离的脉冲数。

2.开电机,利用定时器通过测量一定时间内车跑出的实际距离,然后根据单位距离的脉冲数=实际距离 / 脉冲积分从而计算出单位距离的脉冲数。

 

Distance_Integral +=  gpt12_get(GPT12_T2);

 

2.计算瞬时路程

 我们知道单片机每1ms进入一次中断

这里我们每隔5ms读取一次编码器脉冲

IFX_INTERRUPT(cc60_pit_ch0_isr, 0, CCU6_0_CH0_ISR_PRIORITY)
{
	enableInterrupts();//开启中断嵌套
	control_flag++;
	if (control_flag == 5) //每5ms控制一次电机,编码器,陀螺仪
	{
		Speed_Get();
		control_flag = 0;
	}
	PIT_CLEAR_FLAG(CCU6_0, PIT_CH0);

}

然后根据脉冲数积分推算出总的脉冲数

 Distance_Integral +=  gpt12_get(GPT12_T2);

通过我们得到的单位路程的脉冲数,根据瞬时路程=瞬时脉冲积分 / 单位路程脉冲数

得出瞬时路程

代码如下:

   Real_Distance = (float)Distance_Integral / DISTANDE_RATIO; 


  • 8
    点赞
  • 181
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值