DIY编程器网

标题: 基于S12的光电式自动寻迹车的设计 [打印本页]

作者: admin    时间: 2015-4-27 20:03
标题: 基于S12的光电式自动寻迹车的设计
引言

自动寻迹车是一种具备自主判断、决策能力的综合智能系统。它的设计集机械、电子、检测技术与智能控制于一体,在社会生活中有着广泛的应用,例如自动化生产线的物料配送机器人,医院的机器人护士,商场的导游机器人等。

全国“飞思卡尔”智能模型车大赛在这样的背景下产生,智能模型车比赛要求利用车上的视觉装置,使智能小车在给定的区域内沿着轨迹自动行进,在确保稳定性的情况下,速度最快者获胜,根据路径判别的原理不同,分为光电组、电磁组和摄像头组三种类型。本文所述智能车为光电组设计,采用与白色地面颜色有较大差别的黑色线条引导和反射式激光管识别路径,通过舵机驱动前轮转向,采用直流电机驱动后轮前进,并采用PWM实现电机的调速,使智能车快速、平稳地行驶。

总体设计思想

为了能够自主寻迹行驶,智能车应具有路径识别、方向控制、速度检测、驱动控制等功能,根据比赛规定,本设计以飞思卡尔公司提供的比赛专用车模为载体,以飞思卡尔16位微控制器MC9S12XS128单片机作为控制核心,用激光传感器来进行路径识别,采用前轴转向后轴驱动方式。为了精确的控制赛车速度,在智能车后轴上安装光电编码器,采集车轮转速的脉冲信号,由主控制器进行PID自动控制,完成智能车速度的闭环控制。整个智能车的设计可分为硬件设计与软件设计两部分。

硬件设计

硬件系统应包括主控制器选择、电源管理模块、寻迹传感器模块、测速传感器模块、舵机控制模块以及电机驱动模块。

主控制器模块

本设计以16位微处理器MC9S12XS128为控制核心,最高总线速度40MHz,模数转换器(ADC)转换时间3μs,具有出色的EMC功能。主要I/O口的分配如下:PA0~PA7共8位用于小车前面路径识别的输入口,PT7用于速度传感器检测的输入口;PWM1用于伺服舵机的PWM控制信号输出;PWM3、PWM5用于驱动电机的PWM控制信号输出。

电源管理模块

电源管理模块为各部分提供动力,全部硬件电路的电源由7.2V镍镉蓄电池提供,由于系统各模块所需电压和电流容量不同,采用芯片LM2940将7.2V蓄电池转换为5V电源给单片机系统、路径识别的光电传感器、光电编码器等供电,由芯片LM2941提供6V为舵机提供电源,而为了提高伺服电机响应速度,电机模块直接由7.2V蓄电池提供电源。

路径检测模块

图1 总体结构

图2 车体结构和传感器布局及编码
由于红外光电传感器价格便宜,电路设计简单,所以被经常采用。RPR220是一种一体化的反射型光电探测器,可进行反光性差别较大的两种颜色(如黑白两色)的识别,从而判别赛道的方向。

本设计共采用8个RPR220型红外传感器,水平均布在赛车前部的传感器板上,由于其前瞻性较差,通常只有3cm~5cm,所以将传感器板悬伸在车头前方,采用垂直检测的方法,如图2所示。传感器间距为12mm,小于赛道黑线宽度,保证当赛车在赛道上行驶时始终有传感器能检测到黑线。赛车8个传感器可以检测到8个精确的位置,加上相邻两个传感器同时检测到黑线和没有传感器检测到黑线的情况,一共有16种检测状态,这样的横向检测精度可以达到6mm,基本满足寻迹要求。

速度检测模块

测速模块硬件的主要功能是将频率随转速变化的模拟信号送入信号处理电路,最终转换成数字脉冲信号。为了精确控制车模运动,我们采用的是单片机控制编码器的方法来检测小车的电机转速。编码器我们选用OMRON公司生产的一款100线旋转编码器OME-100-1N型光电编码器,按1:1传动比用一对齿轮与驱动轴连接,驱动轴旋转一周,编码器可获得100个脉冲,单片机通过对脉冲计数就可以得到转速的具体数值。

驱动电机与舵机模块

本设计驱动电机选用直流电机,其控制效果直接影响小车的速度以及前行的稳定性。为了得到较大的驱动能力,最初选用两片MC33886驱动芯片构成H桥驱动电路,单片机的PP3和PP5引脚输出的PWM脉冲经6N137光耦隔离后,接入MC33886 H桥输入端,但由于比赛电机内阻仅为430毫欧,而该集成芯片内部的每个MOSFET导通电阻在120毫欧以上,大大增加了电枢回路总电阻,驱动电路效率较低。后改为两片BTS7960构成全桥驱动电路,内部MOSFET导通电阻为7+9毫欧,直接与单片机相连,提高了驱动效率。

舵机采用的S3010型电机实质是一个位置随动系统,由舵盘、减速齿轮组、位置反馈电位计、直流电机和控制电路组成,通过内部位置反馈,可使它的舵盘输出转角正比于单片机PWM1通道给定控制信号。

软件设计

智能车比赛最终以速度作为评判依据,智能车路径识别算法、转向控制、速度控制算法是研究的重点。智能车的运行控制是根据路径识别和车速检测所获得的当前路径和车速信息,控制舵机和直流驱动电机动作,从而调整智能车的行驶方向和速度。控制算法相当于人的思维,是其最核心的部分,负责按预定的流程处理传感器所采集的数据。软件流程图如图3所示。其中,FOR循环包含了检测黑线位置,更新舵机输出等子程序,如图4所示。

图3 控制主程序

图4 FOR循环子程序

路径识别算法

小车自主寻迹过程中,光电传感器会受外界光线、车体抖动、交叉线、上下坡、路径黑斑等环境因素的干扰,会使传感器检测路径信息存在偏差而影响小车寻迹的稳定性。为此,我们采用连续检测滤波处理的方式消除干扰:即传感器对路径连续检测5次并将采集到的信息存于数组Line[5][8],检测到黑线存值1,否则存值0。若 ,则Line[5][8]的第n列检测到黑线,Line[n]=1;否则为干扰,Line[n]=0,将数组Line[5][8]转为数组Line[8]。由于传感器间距略小于黑线线宽,Line[8]一般有16种状态:多余两个为1(检测到路径交叉线),一个或两个为1(检测到黑线),全为0(没有检测到黑线)。
如图2所示,赛车的偏距大小为e,当检测到黑线点数0<Point≤2时,如式1所示:
式1
智能车的方向控制

智能车的前进方向主要取决于赛道与赛车的偏距大小e,由图2可知,为前轮转角;y为传感器距赛车前轴间距。则赛车的前进方向转角应为 。舵机安装在前轴中心上方,通过转向连杆带动前轮转向。由于舵机采用位置伺服电动机,其输出转角与给定的PWM脉宽成线性关系,PWM控制信号高电平的宽度决定舵机输出舵盘的角度。

由于舵机是一个大的延迟环节,不需要加控制算法。为了提高响应速度,采用直接查表法控制转角,即对应不同偏距e按比例关系设定一个舵机转向表,行驶中直接查表得到需要的转角值,尽量消除了舵机执行延迟造成的影响。当Point>2时(路径交叉线),保持原有转角值。

速度控制

智能车的速度控制比较复杂,在行驶中,不仅要求驱动车轮有合理的瞬时速度,还要求速度变化细致平滑,“出弯立刻加速,入弯立刻减速”。即赛车位于直道时设置较高的车速,保证赛车有充足的加速空间;赛车在弯道时,应该随着赛道曲率半径的不同改变车速,避免冲出赛道。车速控制一般采用PID闭环控制,输出量u(t)和偏差 e(t)如式2所示:
式2

其中kp,ki ,kd 分别称为比例系数、积分系数、微分系数。 kp的作用是对偏差做出的影响,使系统向减少偏差的方向变化。 ki的作用是消除系统静差,但ki 增加太大不利于减少超调、减少震荡,使系统不稳定,系统静差的消除反而减慢。 kd的作用是加快系统的响应,但是对扰动的抑制能力减弱。

运用PID控制的关键是调整三个比例系数,即参数整定。PID控制器参数整定的方法很多,概括起来有两大类:一是理论计算整定法,它主要是依据系统的数学模型,经过理论计算确定控制器参数。二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。
为使问题简化,根据齐格勒—尼柯尔斯经验公式,可将PID控制算法简化为关于kp的归一参数公式。所以赛车车速计算公式设计如式3所示:

Sst_speed=high_speed-e×kp式3
式3中:Set_speed——赛车车速,high_speed——直道设定最高车速, kp——比例系数。考虑到赛场环境的不同,在单片机中预存一组实验数据kp,通过拨码开关进行选择。

结束语

本文提出了一种基于红外线光电传感器寻迹的智能车系统设计方法,系统采用MC9S12XSl28单片机做主控制器,直流电机作执行元件,对智能车进行了关键设计与分析,提出了连续检测滤波处理的消除干扰方式。通过编写程序先对所用到的模块进行初始化,并通过对相应数据寄存器或状态寄存器的读写,实现期望的功能。
完成后在中间粘贴黑色引导线的白色KT板制成的车道上对智能车进行了测试,表明智能车在直道上可以达到很高的速度和稳定性,在弯道上控制好车速,智能车也能平稳地运行。




欢迎光临 DIY编程器网 (http://diybcq.com/) Powered by Discuz! X3.2