基于μCOS-Ⅱ系统的智能寻迹模型车的设计与实现
扫描二维码
随时随地手机看文章
0 引 言
智能车辆是当今车辆工程领域研究的前沿,它体现了车辆工程、人工智能、自动控制、计算机等多个学科领域理论技术的交叉和综合,是未来汽车发展的趋势。以往智能小车在软件设计上多采用单程序控制,不利于智能车在外部环境改变时做出快速反应,为使智能车系统反应更为快速,该智能车应用μC/OS-Ⅱ系统,该系统适合小型控制系统,具有执行效率高、占用空间小、实时性能优良等特点。且选用功耗较低、资源更为丰富的AVR系列ATmega16单片机作为核心控制单元。
采用红外探测法实现寻迹功能,即将红外光电传感器固定在底盘前沿,利用其在不同颜色的物体表面具有不同的反射性质的特点,在小车行驶过程中不断地向地面发射红外光,单片机就是否收到反射回来的红外光为依据来确定黑线的位置和小车的行走路线。并在后轮上粘上均匀分布的黑白条纹,根据光电反射原理,测量车速。为保证智能车在行驶过程具有良好的操稳性和平顺性,控制系统对直流电机驱动控制提出了较为理想的解决方案。
1 硬件系统的设计及实现
智能车的硬件部分以AVR系列ATmega 16单片机为核心控制器,由核心控制单元、电源管理模块、路径识别模块、转向控制模块、电机驱动模块和速度及路程检测模块等组成。智能车控制系统总体结构如图1所示。
1.1 核心控制单元
智能车采用ATmage 16型单片机作为主控CPU其主要特点为高性能、低功耗、高性价比,资源丰富,并且支持高级语言编程,在运行速度。内存容量,内部功能模块集成化等诸多方面比MCS-51系列先进。在智能车系统设计中,单片机的I/O资源分配如下:PB3,PD7为伺服电动机的PWM控制信号输出引脚;PD0~PD3为驱动电机正反转引脚;路径识别系统经排线由PA0~PA6输入至单片机。
1.2 电源管理模块
为避免电机等器件对系统产生干扰,智能车的各功能模块单独供电。采用12 V蓄电池为直流电机供电,将12 V电压降压、稳压后给单片机系统和其他芯片供电。相对于其他类型的电源,蓄电池具有较强的电流驱动能力以及稳定的电压输出性能。考虑到蓄电池的体积大,在车体设计时留出了足够的空间。
在稳压时,采用两片7812芯片将电压稳压至12 V后给直流电机供电,然后采用2576将电压稳至5 V。2576的输出电流最大可到3 A,完全满足系统要求。
1.3 路径识别模块
智能车采用红外探测法实现小车在黑色地板上循白线行走,为了提高控制精度,要求传感器排列紧密,越近越好。但传感器排列紧密,传感器发射管的光线可能会从地面反射进入临近传感器的接收管。为消除传感器之间互相干扰,传感器共分为7组,由PA0~PA6这7个I/O口直接供MCU读取传感器数据。利用红外线在不同颜色的物体表面具有不同的反射性质的特点,在智能车行驶过程中传感器不断地向地面发射红外光,当红外光遇到白色纸质地板时发生漫反射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,小车上的接收管接收不到红外光(原理图为图2所示)。单片机就是否收到反射回来的红外光为依据来确定黑线的位置和小车的行走路线。
1.4 电机驱动模块
在电机驱动方面,采用运用L298作为电机驱动芯片,A,B两个电机分别控制左面和右面各两个轮。通过调节两轮的转速来实现智能车的转向,即由单片机控制进行PWM变频调速,通过程序设计改变脉冲调宽波形的占空比,从而实现调速。转向角度不同,则两电动机的转速差异不同。当小车处于较大的偏离状态时,需把一个电机的速度调至极低,另一电机全速运行,从而在较短时间内完成路线的调整。
通过设定电机的正转和反转来控制智能车的前进和后退。这种电路设计简易高效,并能确保前后两轮同步。
1.5 车速检测模块
智能车系统通过车速检测模块来读取实时车速。采用在后轮上粘贴均匀分布有黑白条纹的方法。利用图3的检测电路来对车轮上的黑白条纹进行检测。根据光电反射原理,在车轮转动时,红外接收管接收到反射光强弱高低变化,就会产生与车轮转速相对应的脉冲信号,将该脉冲信号进行放大整形后输入单片机的输入捕获引脚PA7,记录单位时间内所得到的脉冲数,就能够表示出当前车速,同时通过累加可以计算出小车所行走的路程。
2 软件系统设计与实现
为使智能车在环境改变时做出更为及时准确的响应,在程序设计时应用μC/OS-Ⅱ系统。μC/OS-Ⅱ适合小型控制系统,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2 KB。μC/OS-Ⅱ的代码是用C语言编写,可以直接移植到有C语言编译器的处理器上。移植主要都集中在多任务切换的实现上,由于这部分代码用于保存和恢复CPU现场(即写/读相关寄存器),不能用C语言,只能使用汇编语言完成,即编写OS CPU A.S文件。另外还需要修改体系结构相关的OS CPU.H文件和用户规定任务栈初始化结构的OS CPU C.C文件。
μC/OS-Ⅱ是采用的可剥夺型实时多任务内核。可剥夺型的实时内核在任何时候都运行就绪了的最高优先级的任务。μC/OS-Ⅱ中最多可以支持64个任务,分别对应优先级0~63,其中0为最高优先级。在该系统设计中,共应用了7个优先级,其中,操作系统建立任务,即Task Start()的优先级最高。调度工作可以分为两部分:最高优先级任务的寻找和任务切换。
在该系统中,共定义了路径识别、光电转盘检测等7个任务,控制器任务划分及说明如表1所示。其调度和通信实现流程如下:系统执行Task Start(),在初始化任务执行完成后,利用μC/OS-Ⅱ的OSTaskDel()函数将这个任务返回并处于休眠状态。此时,Task Po-sition Check()成为优先级最高的任务,将会一直执行。当Task Position Check()检测到路径有所改变,通过邮箱传送数据到Task Control(),并由TaskControl()控制PWM波输出的改变。任务Task Op-tical_Wheel()的优先级稍低,同样会一直执行,即当任务Task_Optical_Wheel()检测到黑白跳变时,任务中的变量加1,Task_Optical_Wheel()每隔1 s向任务Task_Path_Calculate()和Task_Speed_Calculate()发送1次消息,分别计算速度和已走的累加路程,控制器任务关系图如图4所示。
2.1 路径黑线的识别
路径黑线的识别的准确程度决定智能车能否完成快速、稳定的寻线。识别装置由高发射功率红外光电二极管和高灵敏度光电晶体管组成,以非接触检测方式,检测距离可调整达4~20 mm。为了精确测定智能车的相对位置,将7对ST178并排安放在车底盘下部的前端,其分布垂直于智能车行走的方向。当车行走时,保持7个发光管发光,当某一个光电对管的下方为黑色轨迹时,相应的接收管输出为高电平,而下方为白色路面的接收管输出为低电平。再经数据处理后,控制系统就可以分析出当前车行走的位置,从而达到调整智能车运行状态的目的。例如,假设路面黑线的宽度为三组红外线对管的宽度,当黑线在车体中间时,7个输入引脚为28H(0011100);当车体左或右偏时,接收到的数据会改变,即“1”会相应的左移或右移,如0001110(右偏)、0111000(左偏),偏移幅度不同,“1”的移动位数便不同。
2.2 转向控制模块
采用PWM(脉冲宽度调制)控制,配用L298驱动电路实现直流电机的调速,方法简单且调速范围大,它利用的是直流斩波原理,假定高电平导通,在一个周期T内导通时间为t,那么一个周期T内的平均电压U=(t/T)VCC=qVCC,其中占空比q=t/T。
电机的转速与电机两端的电压成正比,而电机两端的电压与控制波形的占空比成正比,因此电机的速度与占空比成正比,占空比越大,电机转的越快,当占空比q=1时,电机转速达到最大。该智能车系统采用8 MHz的晶体振荡器,PWM信号引脚OCRO/2的频率为:
式中:变量N代表分频因子:1.8,32,64,128,256或1 024。占空比计算公式为:
t/T=(OCR0/1/256)
2.3 车速及路程测量模块
在智能车车后轮上粘贴均匀分布有黑白条纹。在轮转动的过程中,红外传感器会不断检测到黑、白条纹的出现。当红外传感器检测到的为黑条纹时,输入电压为高电平,当检测到的为白条纹时输入电压为低电平。若传感器检测到电平跳变,则计数变量加1。时钟每秒产生一次中断,Task_Clock()进程通过邮箱向Task Speed_Calculate()进程发送数据,由此可算出小车速度:速度=数据/每圈条纹数。如图5,图6所示。
3 结 语
本文介绍了一种智能寻迹模型车的设计与实现。实践证明,该智能车定位准确,系统响应快且稳定,具备良好的动力性能和精确的转向性能,证明了μC/OS-Ⅱ系统的有效性和稳定性。相比同类智能车,该模型车还具有高性能、低功耗的优点。