APP下载

基于STM32智能小车集成控制系统设计与实验研究

2019-01-02阚亚雄邢一龙

镇江高专学报 2018年4期
关键词:上位障碍物小车

阚亚雄,邢一龙

(1. 镇江高等专科学校 现代装备制造学院,江苏 镇江 212028; 2. 中国民用航空飞行学院 航空工程学院,四川 广汉 618307)

智能小车是通过车载传感器实时采集外部信息并上传自身状态,自主或人工遥控完成工作任务的机器人系统。智能小车可自主避障、规划路径,独立采集信息,高效利用空间,能搭载不同的作业工具,在灾难搜救、生活服务等领域应用前景广阔[1-2]。

国内关于智能小车的研究初步展开。文献[2]研究了基于双层模糊控制算法的小车轨迹跟踪控制系统,进行了相关的运动分析仿真。文献[3]中的小车控制系统通过超声波传感器和红外避障传感器辅助操纵者人工避让障碍物的形式实现小车的障碍物躲避。文献[4]中的智能小车检测到障碍物后简单绕离,没有实现自主驾驶或自主巡航功能。文献[5]研究了基于STM32控制芯片的智能探测小车控制系统,介绍了系统上-下位机的结构,运动控制、环境避障、与上位机通讯等控制功能。文献中的智能小车控制系统的集成度不高,关于上位机PC软件界面的设计较少,缺少运动控制算法的仿真实验和样车集成控制系统的避障实验。因此,新型智能小车集成控制系统的软硬件集成研究尤为必要。

1 控制系统总体框架

1.1 某小型智能小车集成控制系统结构

以STM32F103ZET6嵌入式芯片为智能小车集成控制系统的核心芯片。STM32F103ZET6是STM32系列微处理器的增强型,工作在72MHz,使用最新的ARM Cortex-M3内核。处理器性能高,能耗低,仅消耗27mA电流,适用于小型化智能车辆的控制系统[6-7]。集成控制系统还包含电源、红外探测、超声波探测、通讯、电机驱动等子模块,智能小车在硬件架构上具备车辆实时定位、自主红外/声波避障、2.4GHz无线数传通讯、电源信息检测等功能。系统结构如图1所示。

图1 智能小车集成控制系统硬件结构

1.2 主控制器控制电路设计

图2是控制系统设计选用的STM32F103ZET6的最小系统图。该芯片共有64个引脚。时钟、电源电路的引脚分别为OSC1,OSC2和VBAT。时钟采用8MHz的外部时钟,系统更加稳定。RESET为复位引脚。最小系统电路图给出了其他引脚定义,如PB12,PB13,PB14,PB15是4路电机的PWM控制信号输出引脚,PC6,PC7,PC8,PC9是4路电机转速反馈输入引脚。系统通过USART1串口引脚PA0,PA1与上位机通讯,通过PB0,PB1接收超声波传感器数据,通过PB8,PB9接收红外传感器1数据,通过PC0,PC1接收红外传感器2数据,通过PC13,PC14接收电源电压、电流数据等。

图2 智能小车集成控制系统STM32F103ZET6最小系统图

1.3 避障模块电路设计

避障模块组合使用超声波传感器HC-SR04和红外光传感器HJ-IR2实现智能小车在不同距离上的自主避障功能,检测距离为30~100cm。超声波传感器HC-SR04工作时,STM32芯片通过PB0端口输出1个高电平脉冲信号给超声波探测模块,后者向外界连续发出检测声波信号。如果有信号返回就通过PB1端口输出1个高电平脉冲信号给STM32芯片,通过计算声波信号从发射到返回的时间得出前方障碍物的距离。智能小车工作时,车载舵机带动超声波传感器定时朝3个方向摆动,实时检测3个方向上障碍物的距离,并根据避障算法,提前转向,避开障碍物。

1.4 直流电机及舵机驱动电路设计

本系统采用两个L298D专用电机驱动芯片驱动电机正反转,驱动电路图详见图3。由图3可知,L298D为四通道输出,可同时控制两部电机,实际使用中VCC,VCC2两个端口为电源输入端,IN1和IN2引脚与主控制器STM32的PWM输出信号端口PC10,PC11相连,当EN1端口收到高电平脉冲信号时,其控制的两部直流电机处于运行状态,反之处于停止状态。引脚PWM1,PWM2,PWM3,PWM4为电机控制的输出端,两路输出端通过高低电平的变化控制电机的工作状态,如正传、反转、刹车等。输出电流与电机的转速成正比。模块采用两个编码器检测左前轮和右前轮电机的转速,编码器的输入信号引脚分别与STM32的PC6,PC7,PC8,PC9相连,实现小车电机转速的闭环控制,提供小车的实际车速。

图3 智能小车集成控制系统驱动电路图

2 集成控制系统软件设计

2.1 软件工作流程

图4为智能小车集成控制系统软件流程图。首先,系统初始化,获取各传感器数据,上位PC机通过无线通讯模块发送目标位置坐标给智能小车车载STM32控制器,主控制器芯片接收任务目标坐标数据后,调用运动控制函数MotorInit(),驱动每部电机,使小车的航向对准目标坐标。然后,小车在运动中开启红外探测模块和超声波探测模块,分别调用函数RedRayInit()和UltraSoundInit(),发送所获得的障碍物信息(距离、方位等)给避障算法计算函数Voidbarrier(),从而调用避障算法,给出小车躲避障碍物的转向角和速度。最后,小车平稳到达目标位置时,通过无线通讯模块发送到达信息给上位PC机。

图4 智能小车集成控制系统软件流程图

2.2 系统初始化

控制系统上电后,主要任务是完成系统初始化,包括时钟初始化函数GPIOCLKInit(),LED初始化函数LCD1602Init(),无线通讯模块初始化函数IRCtrolInit(),定时器初始化函数TIM2_Init(),小车运动控制函数MotorInit(),超声波探测模块初始化函数UltraSoundInit()。

2.3 电机驱动和调速模块软件设计

集成控制系统中的电机驱动及调速模块程序使用5个基本运动函数实现小车基本的运动动作,如直行(CarGo(void))、左转(CarLeft(void))、右转(CarRight(void))、停止(CarStop(void))、后退(CarBack(void))。采用定时器TIM1对外部脉冲输入计数,使用STM32主控制器中的PC6,PC7引脚接收左前轮速度编码盘脉冲,PC8,PC9引脚接受右前轮速度编码盘脉冲。TIM1接收编码盘脉冲计数程序如下:

TIM_Delinit(TIM1);

TIM_TimeBaseStructure.TIM_Period=0xFFFF;

TIM_TimeBaseStructure.TIM_Prescaler=0x00;

TIM_TimeBaseStructure.TIM_ClockDivision=0x0;

TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;

TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);

TIM_Cmd(TIM1,ENABLE);

TIM1采集的编码盘脉冲为直流电机增加了速度闭环检测功能,调速模块采用串级PID算法,将控制器分为内、外环控制,外环控制为小车行驶方向的PID调速,内环控制为小车速度的PID调速。这种串级PID算法增加了控制系统的工作频率,减少了时间常数。电机驱动和调速模块中的部分PID参数计算程序如下:

Float q0,q1,q2,Kp,Ts,Ti,Td;

Void PID_Init(void)

{ Kp=0.1;

Ts=0.1;

Ti=3.5;

Td=0;

Q0=Kp*(1+Ts/Ti+Td/Ts);

Q1=Kp*(1+2*Td/Ts);

Q2=Kp*Td/Ts;}

Float PID_Algo(float ek2,float ek1,float ek, float uk)

{Float uk1;

Uk1=uk+q0*ek2+q1*ek1+q2*ek;

Return uk1;}

2.4 障碍物探测模块及转向算法设计

控制系统的障碍物探测模块由超声波传感器和红外传感器组成。超声波传感器安装在一部舵机上,通过DuojiLeft(),DuojiMid(),DuojiRight()3个函数调整舵机的转向,进而调整其发射声波的方位,得到左、中、右3个方向障碍物的距离。程序如下:

void GetAllDistance(unsigned int *dis_left,unsigned int *dis_right,unsigned int *dis_direct)

{

CarStop();

GetDistanceDelay();

*dis_direct = distance_cm;

DuojiRight();

Delayms(100);

GetDistanceDelay();//获取右边障碍物距离

*dis_right = distance_cm;

DuojiMid();

DuojiLeft();

Delayms(100);

GetDistanceDelay();//获取左边障碍物距离

*dis_left = distance_cm;

DuojiMid();//归位

}

通过避障算法模块BarrierProc()计算一个运动控制量angle,控制小车的4部直流电机,根据不同电机间的差速原理实现小车转向,从而实现避障。

2.5 上位机控制程序设计

本系统的上位PC机软件图使用Labview 2014编写。系统运行时,下位机小车集成控制系统通过无线通讯模块将采集的小车运动控制参数,如运动速度、转向角、运动轨迹等,传输给上位PC机,并显示在图5所示的面板中。界面中还有手/自动切换按钮,选择手动遥控控制时,通过界面上的按钮便可实现改变运动方向、加减速度、急停等动作。

图5 智能小车集成控制系统上位机PC软件图

3 仿真与实物实验结果分析

3.1 运动控制仿真实验

本文研究的对象是某型智能小车,车长30cm,宽15cm,总高15cm,动力方式为4电机驱动,输出功率10W,最大航速0.5m/s。根据以上参数,智能小车的数学模型可简化为二阶传递函数

为验证智能小车集成控制器对小车行驶方向、速度控制的有效性和鲁棒性,利用Matlab R2014b/Simulink进行仿真研究。仿真系统向智能小车下达“车速2.5cm/s和航向角前25秒25°后25秒-25°”的阶跃控制指令,采样时间为50s。从图6和图7可以看出,智能小车纵向速度控制信号上升时间为5s,超调量为12%,航向角控制信号上升时间为8s,超调量为40%。串级PID算法对智能小车直流电机调速和转向调节的控制效果明显。

图6 智能小车纵向速度控制仿真曲线图

图7 智能小车航向角仿真曲线图

3.2 实物实验

智能小车控制系统研制成功后,对智能小车集成控制系统的运行控制进行验收,智能小车完成了自主或人工遥控方式的直线运动、转弯、轨迹跟踪。此后进行了多次障碍物躲避实验,如图8所示。采用4个规格为250mm×150mm×150mm的障碍物交错布置,纵向间距为800mm,横向间距为300mm,要求小车直线通过并绕开4个障碍物。实验中,智能小车集成控制系统实时采集不同方位障碍物的距离信息并不断变换小车运行方向,依据避障算法使智能小车绕过障碍物到达指定目标位置。

图8 智能小车避障实验图

4 结束语

针对智能小车开发了集成控制系统,并研究了系统的硬件布局、传感器及动力部分的电路设计、系统软件设计等。该集成控制系统具备包括小车直线运动、转向、躲避障碍物在内的运动控制能力,车载传感器实时与上位PC机通讯的综合控制能力。

猜你喜欢

上位障碍物小车
大车拉小车
自制小车来比赛
高低翻越
SelTrac®CBTC系统中非通信障碍物的设计和处理
赶飞机
刘老师想开小车
特斯拉 风云之老阿姨上位
两轮自平衡小车的设计与实现
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统