4.3 智能车行驶控制
这里简单阐述一下麦克纳姆轮的全向移动原理。
麦克纳姆轮受力分析
图中实线为车轮转动产生的摩擦力,虚线是分力,合成后可知左侧智能车向前移动,右侧智能车向右移动。其他的移动操作,如自转、平移等原理与之相同,就不再赘述。下面列一下不同行驶状态下,各个电机的旋转状态
运动状态与电机转向对应表
下面是控制程序
- // 差值决定快慢,差值越大越快
- // 1、2差值代表左后轮和右前轮的速度;3、4差值代表左前轮和右后轮的速度
- // 1-2为正代表正转,为负代表反转,差值代表速度
- /*
- *==============================================================================
- *函数名称:Med_Motor_CarGo
- *函数功能:智能车前进
- *输入参数:无
- *返回值:无
- *备 注:无
- *==============================================================================
- */
- void Med_Motor_CarGo (void)
- {
- TIM_SetCompare1(TIM2 , 899);
- TIM_SetCompare2(TIM2 , 300);
- TIM_SetCompare3(TIM2 , 899);
- TIM_SetCompare4(TIM2 , 300);
- TIM_SetCompare1(TIM3 , 899);
- TIM_SetCompare2(TIM3 , 300);
- TIM_SetCompare3(TIM3 , 899);
- TIM_SetCompare4(TIM3 , 300);
- }
- /*
- *==============================================================================
- *函数名称:Med_Motor_CarStop
- *函数功能:智能车停止
- *输入参数:无
- *返回值:无
- *备 注:无
- *==============================================================================
- */
- void Med_Motor_CarStop (void)
- {
- TIM_SetCompare1(TIM2 , 0);
- TIM_SetCompare2(TIM2 , 0);
- TIM_SetCompare3(TIM2 , 0);
- TIM_SetCompare4(TIM2 , 0);
- TIM_SetCompare1(TIM3 , 0);
- TIM_SetCompare2(TIM3 , 0);
- TIM_SetCompare3(TIM3 , 0);
- TIM_SetCompare4(TIM3 , 0);
- }
- /*
- *==============================================================================
- *函数名称:Med_Motor_CarBack
- *函数功能:智能车后退
- *输入参数:无
- *返回值:无
- *备 注:无
- *==============================================================================
- */
- void Med_Motor_CarBack (void)
- {
- TIM_SetCompare1(TIM2 , 300);
- TIM_SetCompare2(TIM2 , 899);
- TIM_SetCompare3(TIM2 , 300);
- TIM_SetCompare4(TIM2 , 899);
- TIM_SetCompare1(TIM3 , 300);
- TIM_SetCompare2(TIM3 , 899);
- TIM_SetCompare3(TIM3 , 300);
- TIM_SetCompare4(TIM3 , 899);
- }
- /*
- *==============================================================================
- *函数名称:Med_Motor_CarLe
- *函数功能:智能车向左平移
- *输入参数:无
- *返回值:无
- *备 注:无
- *==============================================================================
- */
- void Med_Motor_CarLeft (void)
- {
- TIM_SetCompare1(TIM2 , 899);
- TIM_SetCompare2(TIM2 , 300);
- TIM_SetCompare3(TIM2 , 899);
- TIM_SetCompare4(TIM2 , 300);
- TIM_SetCompare1(TIM3 , 300);
- TIM_SetCompare2(TIM3 , 899);
- TIM_SetCompare3(TIM3 , 300);
- TIM_SetCompare4(TIM3 , 899);
- }
- /*
- *==============================================================================
- *函数名称:Med_Motor_CarRight
- *函数功能:智能车向右平移
- *输入参数:无
- *返回值:无
- *备 注:无
- *==============================================================================
- */
- void Med_Motor_CarRight (void)
- {
- TIM_SetCompare1(TIM2 , 300);
- TIM_SetCompare2(TIM2 , 899);
- TIM_SetCompare3(TIM2 , 300);
- TIM_SetCompare4(TIM2 , 899);
- TIM_SetCompare1(TIM3 , 899);
- TIM_SetCompare2(TIM3 , 300);
- TIM_SetCompare3(TIM3 , 899);
- TIM_SetCompare4(TIM3 , 300);
- }
- /*
- *==============================================================================
- *函数名称:Med_Motor_ClockwiseRotate
- *函数功能:智能车顺时针自转
- *输入参数:无
- *返回值:无
- *备 注:无
- *==============================================================================
- */
- void Med_Motor_ClockwiseRotate (void)
- {
- TIM_SetCompare1(TIM2 , 300);
- TIM_SetCompare2(TIM2 , 899);
- TIM_SetCompare3(TIM2 , 899);
- TIM_SetCompare4(TIM2 , 300);
- TIM_SetCompare1(TIM3 , 300);
- TIM_SetCompare2(TIM3 , 899);
- TIM_SetCompare3(TIM3 , 899);
- TIM_SetCompare4(TIM3 , 300);
- }
- /*
- *==============================================================================
- *函数名称:Med_Motor_CounterClockwiseRotate
- *函数功能:智能车逆时针自转
- *输入参数:无
- *返回值:无
- *备 注:无
- *==============================================================================
- */
- void Med_Motor_CounterClockwiseRotate (void)
- {
- TIM_SetCompare1(TIM2 , 899);
- TIM_SetCompare2(TIM2 , 300);
- TIM_SetCompare3(TIM2 , 300);
- TIM_SetCompare4(TIM2 , 899);
- TIM_SetCompare1(TIM3 , 899);
- TIM_SetCompare2(TIM3 , 300);
- TIM_SetCompare3(TIM3 , 300);
- TIM_SetCompare4(TIM3 , 899);
- }
复制代码
五、拓展应用
知道了L298N的控制和调速方法,我们就能做许多事情。比如利用蓝牙来调整智能车行驶速度。实际原理就是通过蓝牙给配置占空比的函数传入数值,改变占空比,从而达到遥控调节车速的目的。这个在后续的实战项目系列中会有相
|