论文部分内容阅读
摘要:本文vRFreescale 16位单片机MC9S12DGl28为核心控制器,在CodeWarrior IDE开发环境中进行软件开发,要求赛车在未知道路上沿着黑线以最快的速度完成比赛,整个系统涉及车模机械结构调整、传感器电路设计及信号处理、控制算法和策略优化等多个方面。为了提高智能赛车的行驶速度和可靠性,对比了不同方案的优缺点,并结合LabVIEW仿真平台进行了大量底层和上层测试,最终确定了现有的系统结构和各项控制参数。
关键调:Freescale;智能车;摄像头;PID
赛车硬件设计概述
根据摄像头方案设计,赛车其包括六大模块:控制处理芯片MC9S12DG128。图像采样模块,速度传感模块,舵机驱动模块,电机驱动模块和辅助调试模块。其中S12单片机是系统的核心部分。它负责接收赛道图像数据、赛车速度等反馈信息,并对这些信息进行恰当的处理,形成合适的控制量来对舵机与驱动电机进行控制。
图像采样模块由S12的I/O口、供电电路、与数字摄像头组成。其功能是获取前方赛道的图像数据,以供S12作进一步分析处理。速度传感器模块由光电编码器和ECT脉冲捕捉功能构成。舵机模块和驱动模块分别用于实现赛车转向和驱动。辅助调试模块主要用于赛车系统的程序烧写、功能调试和测试、赛车状态监控、赛车系统参数和运行策略设置等方面。本赛车系统的结构示意图如图1。
赛车软件设计概述
如果说系统硬件对于赛车来说是它的骨架和躯体,那么软件算法就是它的思想。有了健壮、灵敏的躯体还需要有聪明、智慧的大脑。所以软件系统对于赛车来说至关重要。首先,赛车系统通过图像采样模块获取前方赛道的图像数据,同时通过速度传感器模块实时获取赛车的速度。然后S12利用边缘检测方法从图像数据中提取赛道黑线,求得赛车与黑线位置的偏差,接着采用PID方法对舵机进行反馈控制。最终赛车根据检测到的速度,结合我们的速度控制策略,对赛车速度不断进行恰当的控制调整,使赛车在符合比赛规则情况下沿赛道快速前进。设计赛车系统的软件结构如图2所示。
只有将上述硬件、软件部分进行有效的融合,进行充分的实验、测试和标定工作,才能使赛车具有一个相对良好的整体驾驶性能。这也就是在接下来的各个分模块中需要做的工作。
赛车系统硬件设计
驱动电路的驱动芯片采用的是英飞凌的BTS7960B半桥驱动芯片,该芯片负载电流可以达到43A,而内阻只有16mQ。BTS7960在较小的电路板空间占用的情况下为大电流保护的PWM电机驱动提供了一种成本优化的解决方案。
核心控制板是整个系统真正意义上的核心,它负责视频采集、速度获取、控制信息提取、舵机控制和电机控制。除了S12单片机以外,电路板上还包括了单片机相关的外围电路如时钟模块和复位模块,和工作所需的稳压模块、BDM调试接口,以及诸如串口、数码管、拨码开关、数码开关等调试用工具。
为了使赛车能够平稳地沿着赛道运行,需要控制车速,使赛车在急转弯时速度不至过快而冲出赛道。通过控制驱动电机上的平均电压可以控制车速,但是如果开环控制电机转速,会受很多因素影响,例如电池电压、电机传动摩擦力、道路摩擦力和前轮转向角度等。这些因素会造成赛车运行不稳定。通过速度检测,对车模速度进行闭环反馈控制,即可消除上述各种因素的影响,使车模运行得更稳定。
车速检测的方式有很多种,例如用测速发电机、转角编码盘、反射式光电检测、透射式光电检测和霍尔传感器检测。经过对08年测速方案和其它学校方案的比较,本次设计中速度传感器采用的是OMRON的E6AZ。CSl00型光电编码器。它由5-12V的直流供电,安装方式如图3所示。速度传感器用螺钉固定在塑料片上,塑料片固定在后轮支架上,这样固定好之后,就有了较高的稳定性。速度传感器通过后轮轴上的齿轮与电机相连,车轮每转一圈,速度传感器转过2.7s圈。
软件调试平台
codewarrior是由Metrowerks提供的专门面向Freescale MCU与DSP嵌入式应用开发的软件工具。在本设计方案中最为重要的部分就是集成开发环境IDE以及调试器。CodeWarriorlDE能够自动地检查代码中的明显错误,它通过一个集成的调试器和编辑器来扫描你的代码,以找到并减少明显的错误,然后编译并链接程序以便计算机能够理解并执行你的程序。每个应用程序都经过了使用像CodeWorrior这样的开发工具进行编码、编译、编辑、链接和调试的过程。具体到比赛所应用MCSl2DGIZ8B的一个显著特点就是片上外围设备众多,每个外围设备对应的寄存器也较多。有的甚至达到三十多个。Metrowerks Codewarrior IDE中的mc9s12dgl28.h文件对所有寄存器对应的存储映射地址都进行了宏定义,开发者在软件开发时直接调用这些宏就可以了。而且,这些宏的名称都与说明文档上相应寄存器的名称相同或类似,这样,很便于对MC9S12DGl28的开发。
虚拟仪器LabVIEW和串口通讯
摄像头方案相比于光电管方案,它的底层信息更为复杂,所以只有在充分了解和掌握视频信号特点的情况下,才有可能将其应用至赛车的实际控制。如果能够将s12采集到的视频信号以及中间算法处理得到的数据通过串口发送至PC,不仅能够直观地看出视频信号的特点,还能够检验算法的准确性和可靠性。虚拟仪器中对串口的配置如同超级终端一样的方便快捷,只需要选择串口号、波特率、数据位、校验位、停止位和控制位就可以了。主要的子vI就是VISA中的SERIAL。
虚拟仪器LabVIEW单行视频显示
设置好串口通讯协议之后,就可以将s12采集到的任何数据通过串口发送到PC上进行观察和测试。首先,需要测试的是摄像头信号单行的数据特点。虽然通过查阅说明书可以了解一部分信号特征,比如行同步、行消隐、场同步和场消隐。但是具体到采样以后的数据信号特点还是需要通过直接观察才能有一个比较明确的认识和了解。
通过观察图4中的数据曲线,可以很明确地看到行同步信号和行消隐所需要维持的时间。相比于示波器而言,这样不仅能看到波形,而且可以具体得到哪些点是实际上的有效点,有效数据点到底有几个等等。在得到了单行的数据信号之后,就可以将多行数据通过串口发送到PC上,然后在LabVIEW中用灰度图来显示,这样就得到了整幅图像的信号特点,如图s。
虚拟仪器除了简单的对S12发送上来的数据进行处理之外,也可以对赛车进行实时控制,这对于进行类似舵机测试和速度测试来说是非图5虚拟仪器用灰度图显示40×54视频信号
常重要的。但是由于s12控制舵机的PWMDTY01是16位的,所以需要将其转化为两个8位的整型数据,如图6。