基于AT89C52的汽车驾驶模拟器单片机系统设计
汽车驾驶模拟器具有安全性高、再现性好的特点。利用驾驶模拟器来进行研究和训练,可方便地模拟各种道路环境、天气状况,分析汽车的技术性能指标,从而可以节省大量的自然资源,具有很高的经济价值[2]。 在汽车驾驶模拟器中,传感控制系统的性能直接影响到整个汽车驾驶模拟系统的交互性和实时性,是衡量汽车驾驶模拟器实用性能的重要指标。传感控制系统主要由各种传感器、数据采集和处理系统、以及接口电路等组成。其中,数据采集和处理系统是整个传感控制系统的核心。目前,很多汽车驾驶模拟器采用数据采集卡实现操纵数据的采集,这种基于数据采集卡的数据采集和处理系统成本相对较高,采集模拟量时不是很稳定,必须在仿真程序中采用专门的算法对模拟量进行处理,同时接口的数量也很有限,这为后续的开发带来了一些困难。而基于单片机的数据采集系统虽然开发周期较长,但成本相对较低,接口的可扩展性好,同时,模拟量和开关量的预处理工作也可以由单片机来完成,完全可以满足模拟器系统的交互性和实时性要求。下面介绍汽车驾驶模拟器单片机系统的设计思路。 1系统的工作原理 在模拟汽车运动时,传感器采集驾驶员的操纵数据,通过接口电路对这些信号进行放大和滤波,并对其中的模拟信号进行A/D转换,最后单片机系统将控制信号通过RS-232接口传送给主控计算机。在仿真程序中,计算机根据控制信号、汽车的运动状态、驾驶操作规则等来控制视景系统、音响系统、仪表系统、评价系统。利用单片机系统驱动程序中相应的功能函数,可以将单片机系统采集的信号转换为控制汽车运动状态和位置的参数。当驾驶员进行模拟驾驶时,单片机系统采集的数据会根据驾驶员的驾驶操作实时地发生变化,从而实现对驾驶模拟器视景系统中汽车运动状态和位置的控制,控制系统的精度由仿真程序内部的算法保证。
图1 系统的工作流程 汽车驾驶过程的基本操纵部件是方向盘、油门、离合器、刹车和档位,另外还有点火开关、转向指示灯等辅助性操纵部件。与实车驾驶相同,这些操纵部件的协同工作可以对虚拟视景中的汽车模型进行控制,驾驶训练者与视景的变化是实时的、交互的。驾驶训练者对操纵部件的操作通过传感器被系统感知后,系统经过处理和运算得到汽车模型的控制参数,最后根据这些参数控制视景系统的渲染输出,驾驶训练者就在虚拟视景中实时地观察到所驾驶车辆的运行情况。系统的工作流程如图1所示。 2 单片机系统的设计 2.1 传感器的选择 汽车驾驶模拟器主要的控制信号如表1所示。
汽车驾驶模拟器主要有方向盘、离合器、制动器、油门、6个挡位、手刹等信号需要采集,使用的传感器包括开关传感器、位移传感器、角位移传感器三类[3]。方向盘采用角位移传感器;离合器、刹车、油门采用位移传感器;点火、手刹、换档等采用开关传感器。 经过综合考察与比较后,选用TWZ型直流位移传感器、QXJ-BZ-V型角位移传感器、ITR8102型对射式光电开关分别作为线位移量、角位移量以及开关量传感器。其中,TWZ型直流位移传感器的分辨率为10μm,QXJ-BZ-V型角位移传感器的分辨率为0.01o,ITR8102型对射式光电开关的响应时间为20μs。实践证明,所选的传感器完全满足了汽车驾驶模拟器的控制要求,取得了较好的效果。 2.2硬件电路的设计 汽车驾驶模拟器传感控制系统需要完成开关量和模拟量的采集与处理,指示灯与仪表的显示控制,以及与主控计算机之间进行数据传输等功能。根据以上要求,主控芯片选用Atmel公司生产的AT89C52, AT89C52是一种低电压,高性能的CMOS 8位单片机,与标准MCS-51产品的引脚和指令系统完全兼容[4]。 AT89C52片内含8K的闪烁可编程可擦除只读存储器(FPEROM),256 B的内部随机数据存储器(RAM),已经可以满足本系统程序设计的需要,因此不需要进行外部程序存储器和数据存储器的扩展。 由于本系统中需要处理的开关量和模拟量较多,因此选用8255对输入输出接口进行了扩展。将AT89C52的P1口作为A/D、D/A转换接口,用于模拟量的输入和输出,A/D、D/A转换芯片分别选用ADC0809和DAC0832,片选信号由高位地址线P2口提供。8255的扩展接口用作开关量的输入和输出,8255的端口选择和片选信号由经74LS373锁存后的低位地址线提供。 另外,AT89C52还提供了一个具有多级 通讯功能的全双工串行接口,可以用作与主控计算机之间进行通讯。由于RS-232串行通信端口是PC机的标准接口,而且RS-232用作双向数据通信时接线十分简洁,因此选用RS-232作为通讯接口[4]。但是,RS-232的输出信号不但有正电压,还有负电压,所以选用半导体公司的RS-232接口芯片MAX232实现信号转换。图2为汽车驾驶模拟器单片机系统硬件电路简图。
图2 系统硬件电路简图 2.3软件系统的设计 汽车驾驶模拟器单片机软件系统需要完成模拟量和开关量的采集和处理、串行数据的发送与接收、控制信号的输出与显示、故障的监控与保护等功能。软件采用模块化设计思想,通过汇编语言编制而成,主要由主程序、定时器中断服务程序、串行口中断服务程序、数据采集和处理程序、信号的输出与显示程序等几部分构成。
图3 软件系统程序流程图 主程序主要完成系统的初始化工作;定时器中断服务程序主要完成看门狗功能,在单片机发生异常情况时,能使程序及时复位,保证单片机系统能够正常工作;串行口中断服务程序主要实现单片机与主控计算机之间的通讯;数据采集和处理程序主要完成模拟量和开关量的采集,获取驾驶员的操控数据;信号的输出与显示程序将主控计算机的控制信息传送给单片机,用于控制指示灯和仪表的显示输出。图3为汽车驾驶模拟器单片机软件系统的程序流程图。 3结论 基于单片机的数据采集系统成本相对较低,接口的可扩展性好,同时,模拟量和开关量的预处理工作也可以由单片机来完成。系统完全可以满足汽车驾驶模拟器的交互性和实时性要求,已在所开发的汽车驾驶模拟器中得到了应用,取得了较好的效果。 |