您好,欢迎访问三七文档
------11引言汽车的安全性一直都是消费者所关注的,其实在发生交通事故时,对人们安全起最主要保障作用的却是我们最常见的安全装置——安全带。经过40多年的发展,安全带逐渐走向成熟,现在欧美的安全带均由强度极大的合成纤维制成,带有自锁功能的卷收器,采用对驾、乘人员的肩部和腰部同时实现约束的三点式设计。系上安全带后,卷收器自动将其拉紧,当车辆万一出现紧急制动、正面碰撞或发生翻滚时,乘员会使安全带受到快速而猛烈的拉伸,此刻卷收器的自锁功能可在瞬间卡住安全带,使乘员紧贴座椅,避免摔出车外或碰撞受伤。但是当高速前进的汽车突然停车时,要将车中人前冲的身体维持在座位上,必须有很大的力量,因此安全带一定要强力,必须满足一定的质量标准才能投入使用。根据有关机构统计,在所有可能致命的车祸中,如果正确使用性能良好的安全带,可以挽救约45%的生命。所有这些都说明,随着汽车工业的飞速发展和汽车的普及,为了减少交通事故的发生,保护人身的安全,汽车安全带的实际应用确实非常必要,而保证安全带的良好性能则是更实质的部分。而我国目前还没有能检测安全带质量性能的装置和系统,目前天津大学从国外引进一台设备,正投入研究。本系统就是针对这些而开发的,成功后能起到实际作用,对社会具有一定的推广意义。2.系统设计本系统设计内容既涉及到微机并行接口的开发知识,又有DEPHI软件编程。主要是软件的开发与应用研究。安全带的性能有两项技术指标:(1)在加速度达到最大时,位移必须在5cm之内。------2(2)刹车期间平均加速度变化率20。系统中的性能测试都是围绕这两项指标的。2.1硬件设计根据预定要求,先将两路模拟信号或脉冲信号经过多路开关MUX选择,然后经过放大器将信号放大到0~10V,再送到A/D板;A/D板将这些模拟信号或脉冲信号转换成12位数字量,送到ISA总线,然后进行校正,转换成参数数值。其中为实现高速采集,使用了8255A作ADC的接口进行查询式采集。经测试,采集一个数据大约要50us左右。采集板的布局如下所示:图1.采集板卡2.1.1主要芯片介绍(1).AD574AD574是具有三态输出锁存器的逐次逼近型A/D转换芯片,可以作12位转换,也可作8位转换。转换速度较快,为25us,内部含有与微型计算机连接的逻辑控制电路,使用起来非常方便。若转换成12位二进制数,可以一次读出,也可分成两次输出,即先读出高8位后读出低4位。本系统采用12位转换。AD574外部设置5跟控制线(CE、CS、R/C、12/8、0A)和一根状态线(STS)。5个控制信号的功能定义如下:------3CE:片允许信号,高电平允许工作。简单应用中可固定接高电平。CS:片选中,低电平有效。R/C:双功能引脚,作为读数据或启动转换的控制信号。R/C=1,用于读数据;R/C=0,用于启动转换。12/8:数字量输出位数控制,12/8=1,1次输出12位数据;12/8=0,1次输出8位数据。0A:双功能引脚,用于分辨率和字节选择。在转换启动时,若0A=0,则AD574作12位转换器用;若0A=1,作8位转换器用。在读数据时,若0A=0,则读高字节;若0A=1,则读低字节。以上信号线中,CS、CE、和R/C三个信号组合起来实现启动转换和读数据。当CS=0、CE=1和R/C=0时,启动A/D进行转换;当CS=0、CE=1和R/C=1时,读取数据。这5个控制信号的电平状态与AD574所产生的操作对应关系如表1所示:CECSR/C12/80AAD574A的功能操作0XXXX不允许转换X1XXX未接同芯片100X0启动一次12位转换100X1启动一次8位转换101高电平(+5V)X一次输出12位101低电平(数字地)0输出高位字节101低电平(数字地)1输出低位字节表1:AD574的控制信号的作用STS:状态线,表示转换器状态,在转换期间,STS为高;当转换结束时,STS变低。可用此信号来查询转换是否结束。(2).8255A可编程并行接口------48255A是一个具有两个8位(A口和B口)和两个4位(C口高/低4位)并行I/O端口接口芯片,能适应CPU与I/O接口之间的多种数据传送方式的要求。如无条件传送、应答(查询)传送和中断方式传送,与此相应,8255A设置了0方式、1方式以及2方式(双向传送)。8255A可执行功能很强,内容丰富的两条命令(方式字和控制字)为用户如何根据外界条件(I/O设备需要哪些信号线以及它能提供哪些状态线)来使用8255A构成多种接口电路,组建微机应用系统提供了灵活方便的编程环境。8255A在执行命令过程中和执行命令完毕之后,它所产生的状态保留在状态字中,以供查询。本系统用的是8255的0方式。0方式是一种基本输入/输出工作方式。通常不用联络信号,或不使用固定的联络信号,因此,所谓基本I/O方式是指查询方式传送,也包括无条件传送。在0方式下不设置专用联络信号线,需要联络时,可由用户任意指定C口中的哪根线完成某种联络功能,本系统是指定的PC7口作为联络信号的。由于无固定的专用联络信号,因此也就在端口与I/O设备之间无固定的时序关系,由用户根据数据传送的要求决定输入/输出的操作过程。2.1.2硬件结构简单框图CD4067是一个16路的多路转换开关。由于AD574是单通道模拟量输入,每次只能转换一路数据信号,因此要通过CD4067进行通道选择。这个系统用到了CD4067的两个通道。通道0接位移信号,通道1接加速度信号。CPU发出选通道信号命令,驱动器传送到74LS138译码器,输出地址锁存器,打开通道开关,准备接受模拟信号。接口处信号经信号放大器放大到0~10v,输入到AD574模数转换器,将模拟信号转换成数字信号,通过ISA总线输入电脑。------5放大器IN0IN1ABCDpc7图2.采集电路简图采用8255A作ADC的接口,这种接口电路设计方便,尤其在与CPU连接时的信号线及其时序配合中不需作什么工作。加上是可编程,使用灵活。本系统中用的是8255A的PC7口作联络信号,接AD574的STS状态线,通过简单编程就可方便查询数据是否转换完毕,然后再将查询结果传送到CPU,以便做下一步的处理。2.2软件设计系统启动时,先要进行设备自检,看两路通道是否都能正常采集。采集底值是在没加任何信号时采集的一个基准值,以后采集的数据都要减去这个基准值。采集完后,将数据存入文件。可以直接查看测试结果,该部分给出了所需要的主要参数值。也可以进行曲线绘制查看采集时段数据的详细分布情况,此部分能绘制三个量程的参数—时间图,曲线分六屏显示,默认采集4000次。用户也可自己输入采集次数。可用光标任选曲线段进行评估。之后,能连接打印机将图形打印出来。软件部分的主要模块结构如下图所示:ISA总线AD574(12位)STSCD4067MUX8255A------6图3.软件部分总体结构图2.2.1所用编程语言简介本系统是在Delphi5.0环境下开发的。Delphi是由Inprise公司(前Borland公司)推出的可视化编程环境,它提供了一种方便、快捷的Windows应用程序开发工具。Delphi使用了MicrosoftWindows图形用户界面的许多先进特性和设计思想,采用了可重复利用的完整的面向对象程序语言(Object-OrientedLanguage)。Delphi使用“可视化”的编程方法。程序员不必自己建立对象,利用Delphi所提供的可视“控件”,只要在提供的程序框架中加入完成功能的代码,如选择命令、移动鼠标等,而不必考虑按精确次序执行的每个步骤。在这种机制下,不必编写一个大型的程序,而是建立一个由若干微小程序组成的应用程序,这些微小程序可由用户启动的事件来激发。这样就可以快速创建强大的应用程序而勿需涉及不必要的细节。另外,在Delphi中能方便的嵌套使用汇编语言。本系统中与硬件接口的地方全部是用汇编编写的。这样既方便对底层硬件的访问,又能提高代码的执行效率。所以Delphi环境非常有利于软硬件的结合。设备自检数据采集查看测试结果绘制曲线打印------72.2.2设备自检模块设计设备自检原理就是从所选通道读出的电压值必须要与所加的电压值相当,所以核心就是从端口读出多组数据值并显示出来。各端口地址分别为:选通道----228H;启动转换----221H;读高8位数据----221H;读低8位数据----220H。此单元定义了一个计时器(Timer)控件Timer1,Timer控件可以在应用中以重复的时间间隔产生一个事件,由于属于非可视化控件,在运行时不可见,常用来做一些后台处理。该控件只有一个事件OnTimer,将需要循环执行的程序段放在这个事件里,计时器的Interval属性指定了两个Timer事件之间的毫秒数。缺省值为1000(1秒),计时器将每秒(近似等间隔)激发一次Timer事件。本模块将核心部分(读通道电压值)放在Timer1的OnTimer事件里,输出多组值到列表框Listbox1内。这是通过语句listbox1.Items.add(s)来实现的,这里调用了Tstrings类的相应方法来处理Items中的数据。事件由Timer控件的enabled属性来启动,该属性为True时,定时器开始工作,为False时暂停。开始时令其为false,当选定通道后开始工作。由于只有两路通道,在单元中添加了两个单选按扭RadioButton,按扭组放在一个GroupBox控件里。另外还定义一个字节型变量tdhao,用来保存所选通道序号0或1,0通道是用来采集位移信号的,1通道采集加速度信号。由以下语句来给tdhao赋值:ifradiobutton1.checked=truethentdhao:=0elseifradiobutton2.checked=truethentdhao:=1;OnTimer事件的程序流程图如下页图所示:------8Timer1.enabled=true为0或1否则图4.设备自检流程图Ontimer事件每次开始时都会检测是否tdhao为0或1,只有满足时,才会继续往下执行。当然最初会给tdhao赋个初值。后面汇编语句的选通道部分直接将tdhao变量值读入端口。汇编采集部分的核心程序如下:movdx,228h//选通道moval,tdhaooutdx,almovdx,221h//启动转换outdx,almovbx,20h//延时,等待转换结束@b:movcx,0e000h@c:loop@cdecbxjnz@b选通道启动转换延时读高8位读低4位数据处理并显示判断tdhao的值------9movdx,221h//读高8位inal,dxmovx1,almovdx,220h//读低4位inal,dxmovx2,al其中x1和x2是定义的全局整型变量,存储读取的高低位二进制值,以作进一步转换。这里的数据要进行处理主要是由于AD574的12条输出数据线的高8位接到系统总线的D0----D7,而把低4位接到数据总线的高4位,低4位补0,以实现左对齐。所以读出数据后高8位应该乘以16,而低4位则要除以16,再相加即可。这一点由语句x2:=(x2div16)+x1*16;来实现。此外,还必须转换为电压值。AD574的精度为12位,最高量程为10V。所以应该由公式x2*10/4096来转换。但是由于汇编语句的需要,x1和x2都设置成为整型变量,为保证精度,可以先乘以一个放大几倍的数,得出结果后再相除和取余。这样得到的商就是结果的整数部分,而余数则是小数部分,在输出时再一起输出,见如下语句所示:x1:=(x2*10000)div(4095);x3:=x1mod1000;x1:=x1div1000;s1:=inttoStr(x1)+'.'+inttoStr(x3)+'V';listbox1.Items.add(s1);其中s1为字符型变量,这是listbox输出的格式需要。S1也将数据的整数和小数部分连接了起来,起到中介
本文标题:汽车安全性设计
链接地址:https://www.777doc.com/doc-300829 .html