第十二章 智能车的调试及人机交互模块
推荐给好友
打印
加入收藏
更新于2008-08-01 20:54:56

        本章主要讲述小车的调试过程,以及人机交互模块的使用。小车的调试是一个很重要的过程,有了理论的支撑,我们还必须用大量的实践去验证。小车的调试涉及到很多内容,比如机械性能的调整、舵机转角的确定,速度闭环控制性能的测试,赛道的制作等等。人机交互模块也是非常重要的,由于比赛过程中不允许修改任何硬件和软件,所以用人机交互模块进行参数的设置和模式的选择是很必要的。
12.1 智能车的调试
12.1.1 车速闭环调试 
        为了获得快速的加减速特性,小车的速度控制采用BangBang调节方法。调试方法:程序给定小车某速度在路面上行驶,将小车在路面上由静止加速 到稳定状态的速度值记录到S12的RAM中,然后通过串口将数据输入到PC上,然后用Matlab绘图,观察曲线的特性。经实验比较,通过BangBang闭环控制后,小车的加减速特性有了很大的提高,反应更加的灵敏,从而为小车赢得了时间。
12.1.2 舵机转角调试 
        该实验的目的是使小车对于不同的路线能给出合适的转角,比如在直道小车要避免振荡,弯道能平滑地跟踪黑线等等。调试方法:小车舵机的转角是由公式给出的,但实际转角往往和理论值略有差别。我们需要通过实验予以校正。调试方法可以借鉴第一届上海交通大学技术报告,即在小车前轮上固定一个激光发射电筒,通过“放大”后,依据三角函数关系,计算转角与PWM脉冲的关系。
12.1.3 机械性能调试 
        经过几个月的制作,可以发现机械性能对小车整体的稳定性有很大的影响。小车的重心与摄像头支架选用的材料、安装位置,电路板的安装、电池的安装有直接的关系。小车的重心不应过高,不应太靠前,最佳位置应该在电池附近。重 心过高过前,会导致小车高速运行时,后轮驱动力不足,舵机转向吃力,甚至左右“抬脚”或者“翻车”。调试方法:用物理学的里面的“悬线法”,然后观察小车的稳定效果,若不满足要求,则不要不断地修正。
12.1.4 赛道的制作 
        赛道的制作也很关键,主要把握两个原则:“规范性”和“完整性”。制作的赛道必须包括本次大赛要求的所有特征,直道,弯道(包括不同曲率半径,不同角度的),S道,坡道等。赛道制作由易到难进行,和算法的逐步优化同步,这样符合人们认识事物的规律。图12.1,图12.2是我们制作的部分赛道。



12.2 人机交互模块

12.2.1 LCD显示模块与4*4矩阵键盘模块 
        设计LCD显示模块与4*4矩阵键盘模块,是为了方便调试过程中进行参数的设定和模式的选择。 
        (1)键盘模块 
        键盘示意图如图12.3所示:


        键盘为系统的输入设备,通过H口与S12相连,一共设置了4个功能键,其中duty为电机最高占空比设置,center为当前检测的黑线斜率,Num为起跑线和“十”字线个数,C_duty为舵机中心占空比设置。 
        (2)LCD显示模块 
        LCD作为系统的显示模块,是人机交互界面的主要组成部分,考虑到小车的整车重量,本设计最终选用了一款较为轻质的LCD,型号为:DM1260B,如图12.4 所示。该液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形(内含英文字母和数字),不带中文字库。



        本模块电路如图12.5所示:

        DM1602采用16脚接口,其中VSS接地,VDD接5V正电源,VO为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个20K的电位器调整对比度。RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 D0~D7为8位双向数据线。LCD的驱动程序涉及到以下函数,详细代码请参考附录。 

        //函数声明 
        voiddelay_us(unsignedcharus); //延时微秒 
        voiddelay_ms(unsignedlongms); //延时毫秒 
        voidchk_busy(void); //忙检测状态 
        voidWrite_command(unsignedcharcommand); 
        voidWrite_data(unsignedchardata); 
        voidInit_lcd(void); //LCD初始化 
        voidInit_PORTAB(void); //初始化AB口 
        void Write_String(unsigned char *p,unsigned char address,unsigned chardata);

12.2.2 串口与PC机的通讯 

        小车在赛道上运动的时候,有很多数据是实时的,这些数据是调试的基础, 如果通过LCD来显示这些数据是不太现实的。由于开发板已有串行通信接口,已经通过MAX232电平转换,因此可以直接和计算机通讯。首先把得到的数据以数组的形式记录到S12的RAM中,然后通过串口将数据输入到PC上,这里使用了一个常用的软件“串口调试助手”(如图12.6所示)来接收来自S12传过来的数据。通过串口调试,极大的方便了调试的过程,特别对速度闭环调试有很大的帮助。


        串口与PC机通讯,本设计编写了以下函数,具体代码请参考附录。 

        //函数申明 

        voidInit_SCI(void) //初始化串口 
        voidInit_SCI(void) //实现S12向PC发送字符串,数字或字母 

        voidSend_SCI(unsignedchar*Dpoint,unsignedintcounter) 
        //入口参数:一个是数组指针,一个是数组的大小 
        //功能描述:发送一个数组并显示,用于显示数值  

 

第十一章 软件系统与控制策略        第十三章 结论




 
关于我们 | 诚邀加盟 | 客户服务 | 相关法律 | 网站地图 | 友情链接 | 服务信箱:service@eefocus.com
© 2006 与非门科技信息咨询(北京)有限公司 All Rights Reserved.