汽车驾驶模拟器是利用计算机实时控制和计算机图形处理技术模拟汽车的实际行驶过程,用来培训驾驶员,缩短上车试车的周期,降低驾驶培训的成本。汽车驾驶模拟器包括硬件和软件两部分组成。硬件由计算机、显示设备、方向盘、仪表盘等部件构成,软件包括道路环境的计算机仿真视景系统、声响模拟、操作平台等子系统构成。本文将对硬件控制系统的设计进行研究。
一、控制系统的原理和功能
汽车驾驶模拟器系统包括机械部分、控制系统和模拟软件三大部分。机械部分的点火装置、方向盘、离合装置、脚刹装置、手刹装置、油门装置、档位装置、仪表装置均采用实物仿真;控制系统定时检测点火情况、方向盘转过的角度、旋转方向、离合器、脚刹、手刹、油门、档位的状态,并将检测的结果传送给计算机,通过模拟软件来变换驾驶的场景,同时,将当前的水温、时速、发动机转速和油量传送给控制系统,以改变仪表盘的指示。控制系统原理图如图1 所示。
nload="javascript:if(>740)=740" align=center border=0>
图1 控制系统原理图
计算机采样数据的程序是用VC++语言编写。为了数据的准确性,采集数据每20ms 刷新一次。这样每20ms 检测一次点火装置、离合装置、脚刹装置、手刹装置、油门装置、档位装置的状态,并将检测结果传送给计算机。在驾驶的过程中,由于方向盘在不停的转动,这就要求程序能够实时的检测出方向盘的方向和角度。
二、方向盘的位置检测
在实际设计过程中,要判断方向盘的转向以及转动角度,也就是说首先要判断左转还是右转,然后判断转的角度。方向盘的转动方向和转动角度示意图如图2 所示,选用两个光电感应开关JK122,安装在转盘旁边,x1 和x2 处为两个光电感应开关所放位置,当转盘转动时,有齿挡住光电感应开关,则输出为1,反之输出为0。
nload="javascript:if(>740)=740" align=center border=0>
图2 方向盘的转动方向和转动角度示意图
假设任意两齿之间距离为d,只要x1 和x2 之间距离不等于n/2.d(n 为任意整数),则转盘转动时,x1、x2 两处的输出波形就将如图3 所示。
nload="javascript:if(>740)=740" align=center border=0>
图3 x1 和x2 处的输出波形
由此可见,假设x1、x2 的初始状态都为0,则正转时其状态变化为00—01—11—10—00, 而反转时状态变化为00—10—11—01—00。只要知道x1、x2 的当前状态和下一状态,即可知道此时方向盘的转向了。我们在设计时要判断好初始状态为00 这种情况。将x1、x2 信号分别接到两个T 触发器的输入端上,并将反向后的信号作为触发器的清零信号。当初始状态为00 时,两个触发器输出都为0,如果后一状态为01,则触发器T1 输出为1,表示正转;如果后一状态为10,则触发器T2 输出为1,表示反转。由于紧接着的状态肯定是11,所以触发器清零后,等到状态为00 又可以重新开始判断。判断转向后,还要判断转动的角度。在这里我们又加入两个T 触发器T3 和T4,当输入x1、x2 的状态从11 变化到10,触发器T3 输出为1,反之,如果从11 变化到01,触发器T4 输出为1。最后,将四个触发器的输出信号相或后作为时钟信号送到计数器中,并将T1、T3 的输出信号相或后作为计数器的输入信号,于是当方向盘正转时计数器向上累加,而反转时则向下递减,最后通过读出计数器的输出数据即可得知方向盘的转动角度。本文采用CPLD 技术设计控制电路,原理图如图4 所示。
nload="javascript:if(>740)=740" align=center border=0>
图4 CPLD 设计原理图
由图可知,CPLD 技术设计一般是一种“自顶而下”的设计,其设计过程如下:
(1)行为设计;确定所设计的系统或CPLD 芯片的功能、性能及允许的芯片面积或成本。
(2)结构设计;根据该系统或CPLD 的特点,将其分解为接口清晰、相互关系明细、尽可能简单的子系统,得到1 个总体结构。这个结构可能包括算术运算单元、控制单元、数据通道、各种算术状态机等。
(3)逻辑设计;尽可能采用规则的逻辑结构或采用自己经过考验的逻辑单元或模块。
(4)电路设计;将逻辑图将转换成电路图,在很多情况下,这时需要进行硬件仿真以最终确定逻辑设计的正确性。
最后,将设计好的电路经过编译,形成熔丝文件,将该文件下载到选定的CPLD 就成为了可以完成固定功能的ASIC 了。在整个开发程序中,采用软件MAX+plusII 编程可实现,选用Altera 公司生产的芯片EPM7128SLC84-15 。
三、控制系统的软件设计
本系统软件部分由检测主程序、驱动仪表程序和方向盘等开关量输入程序组成。检测主程序包括数据采集模块、CPLD 模块,并且分配给仪表和开关量输入不同的端口。在端口的初始化中将所有初始状态设置为0,通过软件的定时器扫描,各端口的状态实时的传给主程序,其主程序流程图如图5 所示。
nload="javascript:if(>740)=740" align=center border=0>
图5 主程序流程图
采用VC++语言将硬件中的状态、角 度等数据交互信息做成一个硬件连接库,它作为桥梁,把硬件所有的操作与软件部分的视景系统紧密的结合在一起,成为一个完整的汽车驾驶模拟训练系统。
4、结束语
该系统运用CPLD技术,充分地考虑了方向盘、离合器、脚刹、手刹、油门、换档的相应时间,通过协议,与软件部分的视景系统紧密的结合在一起。并且通过本文设计的实例可以看出,合理地应用CPLD技术,大大提高了系统设计的灵活性,提高了系统的可靠性和集成度,缩短了产品研制的周期,同时还可以降低设计成本,节省PCB板的面积和布线难度。因此,在目前的电子设计中,充分利用CPLD的设计体系结构将起到事半功倍的效果。目前,控制系统已经制作出了推广应用,取得了良好的经济和社会效益,受到了学员的一致好评。本文作者创新点:整个硬件控制系统很多的研究人员主要采用单片机结合串口、并口进行通讯。由于单片机分配地址、布线较繁琐,可靠性不强,单片机与单片机之间的数据交换也存在一定的局限性。我们采用了CPLD 技术、数据采集模块能够很方便的对硬件部分的点火情况、方向盘转过的角度、旋转方向、离合器、脚刹、手刹、油门、档位的状态进行编译操作,及时进行数据交换,大大提高了控制系统的可控性和可靠性,降低了生产周期和成本。