陆孟雄,吕成绪
(1.常州信息职业技术学院电子与电气工程学院,江苏 常州213164;2.南京农业大学工学院,江苏 南京210031)
智能车也叫 “自动汽车”,是一种集成了多种高新技术的车辆,是组成智能交通系统的一种重要车辆产品,也是极具信息化的汽车产品.普通车辆需要部分或完全靠驾驶员操纵车辆行驶,智能车辆则可以通过应用现代科技技术,不需要人工即可实现车辆行驶.目前通信技术得到了很大的发展,上位机技术也逐渐成熟,通过无线通信实现上位机对智能车辆的控制,也是现在科技发展的一个新兴热点.
智能车可以完成多项任务操作,其中包括在提前指定的路线上行驶在正确的车道位置,和其他的车辆保持安全距离;正确地根据现场情况选择停车位置及相应的停车操作;在智能交通网络环境下,车载辅助驾驶系统可以在到达目的地的多个路径中选择最佳路径,并能及时应对多种突发情况.在传统的汽车基础上,智能车辆的开发很大程度依赖于增加新设备,如车载计算机及数据库、机动车IC卡、车载通信装置、多媒体情报输入输出装置等,来适应各种复杂的道路环境,增强车辆的机动性,把发生事故的概率降到最低,减少乘客在道路上的行驶时间,最大程度地节能减排.同时,通过监测控制行驶路线来提高运输效率,改善商务车和工业用车在固定路线行驶的道路状况,综合辅助驾驶系统以及动态车辆驾驶系统将会大大减少制造和运行成本[1].
本系统是一个对智能小车行驶的实时监测、控制系统.整个系统分为上位机系统和下位机系统两部分.上位机系统用Matlab的界面设计工程完成,由单片机作为控制芯片的智能小车作为下位机系统主体.通过红外测速把小车的行进速度测量出来,而后通过无线通信和串口通信把数据传递给上位机.上位机根据小车的行进情况和需要,通过无线通信和串口通信发送指令给小车.
系统通过红外光电管测速传感器,每隔0.5s对智能小车的车速检测一次.检测数据在两个单片机之间通过NRF905无线传感器进行传递,之后通过串口传输从单片机2传递给Matlab_GUI设计的上位机界面.之后根据检测结果在上位机进行操作,通过串口及无线传感器反向调整小车的行驶情况,手动通过发送方向指令改变小车的运行方向,发送调速指令改变PWM的占空比调节车速.其中方向指令分为前后左右四个方向和停止,调速指令分为高速、中速、低速共三档.系统整体结构框图见图1.
硬件电路主要分为以下4个模块:电源管理模块,L298电机驱动模块,红外光电管测速模块,NRF905无线通信模块.系统硬件组成如图2.
电源模块为智能车系统的其他电路模块提供稳定的直流电源,关系到整个系统是否能够正常工作,因此电源模块的设计十分重要.系统采用12.6V1800mAh CS-168电池进行供电,用5V供电给红外光电管测速模块,5V供电给L298电机驱动模块,3.3V供电给NRF905无线模块.故需将12.6V电压转换成5V和3.3V.系统选用7805稳压芯片将电压转换成5V给红外光电管测速模块、L298电机驱动模块和STC89C51单片机模块供电,NRF905无线模块的电源由LM1117稳压芯片串联提供,直流电机直接由CS-168 12.6V电池供电[2].
在本系统设计中,L298驱动模块VSS端直接连接CS-168(12.6V/1800mA)电池的正极,L298驱动模块的VC引脚连接L7805稳压电路的输出的5V段,GND与整个电路的接地端相连接,IN1、IN2分别与单片机P0口P0.0、P0.1相连,IN3、IN4分别与单片机P0口P0.2、P0.3相连,ENA、ENB置于高电平的情况下,IN1、IN2、IN3、IN4才可以由单片机设置电平的高低.所以在本系统中,把ENA、ENB直接与VCC端连接.OUT1、OUT2分别与直流电机1的两端相连接,OUT3、OUT4分别与直流电机2的两端相连接.当IN口置高或置低时,对应的OUT口会置高或置低.4个OUT口与4个IN口的电平同步变化,电机根据两端是否有压差转动或者不转动.
在系统中,每隔0.5s测量一次小车速度.当码盘跟着小车的轮子一起转动时,光电管的接受端会依次收到、收不到光电管发射端发射的光,光电管的输出脉冲也呈现周期性变化.光电管的输出端连接STC89C51单片机的外部中断接口,单片机中下载的程序可以捕捉该端口连接的光电管输出端产生的电脉冲的升降变化.在一个速度测量周期内,单片机会记录电脉冲变化的次数,可以得到小车行驶的距离,进而得到小车在本周期内行驶的平均速度[3].
在本设计中,NRF905无线模块VCC端连接串联LM1117稳压模块的输出端.经测量和稳压,第一块7805输出端的输出电压为5V,第二块LM1117输出端的输出电压为3.3V左右,正好给NRF905供电.NRF905无线模块GND端与系统的地线相连接.
系统软件设计分两部分:第一部分是对控制电机工作的单片机编程;第二部分是使用Matlab_GUI在上位机进行界面设计.使用C语言编写单片机内部程序,使小车正常运行,使各个传感器正常工作.使用Matlab语言进行上位机界面的程序编写,主要工作是编写callback函数,使上位机很好地完成显示和与下位机之间的通信工作.
小车速度的调节,系统采用的是调节PWM脉冲宽度的方法.把每一脉冲宽度均相等的脉冲列做成PWM波形,通过改变脉冲列的周期可以调频,改变脉冲的宽度或占空比可以调压,采用适当控制方法即可使电压与频率协调变化.使用PWM控制电压的方式主要有两种,包括调整PWM脉冲的周期和占空比[4].
用STC系列51单片机产生占空比可变的矩形波.当产生此矩形波的I/O与电机驱动电路相连接后,由于程序一个周期内不断改变输出矩形波的占空比,有一部分时间电机驱动电路导通,其余时间不导通,从整体来看有一个平均电压,因为PWM信号频率周期很高,因此通过平均电压的方式来决定小车速度的快慢.随着波形占空比的变化,小车的速度也产生快慢改变.如图3是单片机通过PWM调节小车速度的基本原理图.
基本思想:
(1)启动小车后,红外对管测速传感器开始采集小车的车速.
(2)单片机1通过NRF905无线传感器将小车车速数据传递给单片机2.
(3)运用串口通信,另一块单片机将小车速度传送给GUI界面.
(4)根据需要及小车车速数据,用上位机发送指令,调节小车的运行方向及速度.
算法流程图见图4.
该项目使用单片机制作下位机,使用Matlab_GUI设计上位机,在上位机手动控制智能车的工作.系统联机调试顺利,下位机系统响应快,上位机与下位机协同工作良好.友好的上位机操作界面非常适合初学者学习控制智能车.系统扩展性好,可进一步增加位置感知传感器,实现方向自动控制.