打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
车距自动测试系统设计

车距自动测试系统设计

摘要

为减少汽车碰撞事故的发生,汽车碰撞技术在近年发展很快。汽车避撞技术首先需要解决的问题是汽车之间的安全距离,当汽车与汽车之间的距离小于安全距离时,就应该能够自动报警。本文给出了高速防撞器的核心部分:车距报警器的设计方法。我设计了一款安装于车前/车尾的便携式系统,能在汽车停车、倒车以及行使过程中自动监控汽车与其它汽车、人和障碍物之间的距离,如果距离小于规定的1.5米安全距离则报警,防止恶性事故的发生。

1.设计要求

设计一个车距自动测距器,要求测量范围在0.10-3.00m,测量精度1cm,测量时与被测物体无直接接触,能够清晰稳定地显示测量结果。

2. 总体方案设计

总体设计方案见图2.1

SHAPE \* MERGEFORMAT

图 2.1 工作原理图

设计工作原理:由微机编程送出40 kHz 频率的方波信号至信号处理器,信号处理器通过两级放大,再经过压电换能器将信号发射出去,该信号遇到障碍物反射回来在此称为回波。同时,压电换能器将接收的回波,通过信号处理的检波放大、积分整形及一系列处理,送至微处理器。处理器利用声波的传播速度和发射脉冲到接收反射脉冲的时间间隔计算出障碍物的距离,并由单片机控制显示出来。该测距装置是由超声波传感器,CPU 显示电路,发射接收电路组成。传感器输入端与发射接收电路相连,接收电路输出端与单片机相连接,处理器的输出端与显示电路输入端相连接。其时序图如图2.2

40KHz/P1.0 SHAPE \* MERGEFORMAT

P3.3 SHAPE \* MERGEFORMAT

SYNC SHAPE \* MERGEFORMAT

图 2.2 时序波形

传感器接收到由单片机 P1. 0 发出的0. 5 毫秒宽,重复周期为50 毫秒的40 kHz调制信号。当车有效区域内有障碍物时,即对发射的信号产生反射,传感器接收到反射信号,送入接收电路,转换成接收信号处理器,处理器优先处理先得到的信号对应反射波上每个周期中第一个有效的下降沿,通过单片机计算从发射到接收的反复延迟时间来算出障碍物体离传感器的距离。

由于汽车工作环境恶劣,各种干扰,嘈声都会进入,所以微处理器中设计有控制软件,进行滤波,有效滤除过宽过窄的反射脉冲并通过计算反射脉冲的次数及比较相邻两周期的位置变化识别出有效反射波脉冲,计算出距离值;由此距离值用LED 进行显示。距离值与反射脉冲没有关系只与反射延迟长短有关,因此,只要电路中信号放大部分信噪比足够大,增益大,整个电路系统测量准确性与传感器污染情况没有直接关系,也正是整个测距电路系统在污染严重的环境中能正常工作的原因。

2.1超声波传感器及其测距原理

超声波是指频率高于20KHz的机械波。为了以超声波作为检测手段,必须产生超生波和接收超声波。完成这种功能的装置就是超声波传感器,习惯上称为超声波换能器或超声波探头。超声波传感器有发送器和接收器,但一个超声波传感器也可具有发送和接收声波的双重作用。超声波传感器是利用压电效应的原理将电能和超声波相互转化,即在发射超声波的时候,将电能转换,发射超声波;而在收到回波的时候,则将超声振动转换成电信号。

超声波测距的原理一般采用渡越时间法TOF(timeofflight)。首先测出超声波从发射到遇到障碍物返回所经历的时间,再乘以超声波的速度就得到二倍的声源与障碍物之间的距离

测量距离的方法有很多种,短距离的可以用尺,远距离的有激光测距等,超声波测距适用于高精度的中长距离测量。因为超声波在标准空气中的传播速度为331.45米/秒,由单片机负责计时,单片机使用12.0M晶振,所以此系统的测量精度理论上可以达到毫米级。由于超声波指向性强,能量消耗缓慢,在介质中传播距离远,因而超声波可以用于距离的测量。利用超声波检测距离,设计比较方便,计算处理也较简单,并且在测量精度方面也能达到要求。

超声波发生器可以分为两类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。本课题属于近距离测量,可以采用常用的压电式超声波换能器来实现。

根据设计要求并综合各方面因素,可以采用AT89S51单片机作为主控制器,用动态扫描法实现LED数字显示,超声波驱动信号用单片机的定时器完成,超声波测距器的系统框图如下图所示:

图2.1 超声波测距器系统设计框图

3.系统组成 3.1硬件部分

主要由单片机系统及显示电路、超声波发射电路和超声波检测接收电路三部分组成。采用AT89S51来实现对CX20106A红外接收芯片和TCT40-10系列超声波转换模块的控制。单片机通过P1.0引脚经反相器来控制超声波的发送,然后单片机不停的检测INT0引脚,当INT0引脚的电平由高电平变为低电平时就认为超声波已经返回。计数器所计的数据就是超声波所经历的时间,通过换算就可以得到传感器与障碍物之间的距离。

3.2软件部分

主要由主程序、超声波发生子程序、超声波接收中断程序及显示子程序等部分。

4.系统硬件电路设计

单片机采用89S51或其兼容系列。采用12MHz高精度的晶振,以获得较稳定的时钟频率,减小测量误差。单片机用P1.0端口输出超声波转化器所需的40KHz方波信号,利用外中断0口检测超声波接受电路输出的返回信号。显示电路采用简单实用的4位共阳LED数码管,段码用74LS244驱动,位码用PNP三极管驱动。单片机系统及显示电路如下图所示

图4.1单片机及显示电路原理图

超声波发射电路原理图如图所示:

图4.2 超声波发射电路原理图

压电超声波转换器的功能:利用压电晶体谐振工作。内部结构上图所示,它有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动产生超声波,这时它就是一超声波发生器;如没加电压,当共振板接受到超声波时,将压迫压电振荡器作振动,将机械能转换为电信号,这时它就成为超声波接受转换器。超声波发射转换器与接受转换器其结构稍有不同。

4.1超声波检测接受电路

红外转化接收的电路采用集成电路CX20106A,这是一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。考虑到红外遥控常用的载波频率38KHz与测距超声波频率40KHz较为接近,可以利用它作为超声波检测电路。实验证明其具有很高的灵敏度和较强的抗干扰能力。适当改变C4的大小,可改变接受电路的灵敏度和抗干扰能力。

图4.3超声波接收电路图

5 软件设计 5.1 超声波测距仪的软件规划

超声波测距仪的程序主要包括以下功能模块:

(1)DSl8B20温度传感器接口模块,分为初始化子程序、写入子程序及读取子程序等部

(2)基于MC14499的显示模块,分为MC14499初始化子程序、写入子程序及显示子程序等部分;

(3)温度补偿与距离计算模块,分为超声波发射控制程序、接收处理子程序、温度补偿子程序及距离计算子程序等部分;

(4)主模块,分为系统的初始化、按键处理及各于程序的调度管理等部分。图5.1.1形象地描述了各模块功能及相互之间的关系。

图5.1.1 各程序模块功能及相互关系

SHAPE \* MERGEFORMAT

图5.1.1 各程序功能模块


软件分为两部分主程序和中断服务程序如图5.1.2所示,主程序完成初始化工作,各路超声波发射和接收控制。

图5.1.2(a)主程序流程图


图5.1.2(b)定时中断服务子程序 图5.1.2(c)外部中断程序

定时中断服务子程序完成三方向超声波的轮流发射,外部中断服务子程序主要完成时间值的读取、距离计算、结果的输出等工作。

5.2 温度传感器的程序设计

DSl8B20的一线工作协议流程是,初始化→ROM操作指令→存储器操作指令→数据传输。入图5.2.1对DS18B20操作流程图。其工作时序包括:初始化时序、写时序和读时序。每种工作时序都有相应的要求,这在进行DSl8B20接口程序设计时必须足够重视。

SHAPE \* MERGEFORMAT

图 5.2.1 对DS18B20操作流程图

1.DSl8B20的初始化

DSl8B20初始化的实质是使DSl8B20复位,主要是通过判断存在脉冲的形式来实现的。首先,主机发复位脉冲,即宽度范围为480μs≤t≤ 960μs的负脉冲,拉高15—90μ以延时等待,然后通过输入/输出线读存在脉冲,为低则说明存在,复位成功;否,则说明不存在,复位失败,必须对DSl8B20重新初始化。

2.字节写DSl8B20程序

字节写的时序是拉低输入/输出线至少15μs以作为起始信号,按从低位到高位顺序取出欲写字节中的1位数据,写入输入/输出线,延时等待15μs后将输入输出线拉高作为停止信号,以等待下—位的写入。字节写DSl8B20的程序设计只要严格按照上述时序即可,程序如

DS18B20_WRITE:

CLR C

MOV R7, #8 ;1字节8位

DS18B20_WR_1:

CLR WDIO ;产生写信号

MOV R7, #1

LCALL DELAY15US

RRC A ;取出待写位

MOV WDIO, C ;写入DS18B20

MOV R7, #1

LCALL DELAY15US

SET WDIO ;停止

NOP

DJNZ R1, DS18B20_WR_1 ;1字节写完否

SETB WDIO ;写完后恢复返回

RET

3.字读DSl8B20程序

字读DSl8B20的程序设计思想结合程序代码进行阐述,以下为字读DSl8B20的接口程序:

DS18B20_READ:

CLR C

MOV R1, #2 ;连读2字节

MOV R0, #TEMO ;读数据存储区首址

DS18B20_RD_1:

MOV R2, #8 ;1字节8位

DS18B20_RD_2:

SETB WDIO

NOP

NOP

CLR WDIO ;产生读信号

NOP

NOP

SETB WDIO ;准备读入数据

MOV R7, #1 ;等待15us

LCALL DELAY15US

MOV C, WDIO ;读入数据

RRC A ;右移以拼装数据字节

DJNZ R2, DS18B20_RD_2

MOV @R0,A ;1字节读完后存入相应单元

INC R0 ;指向下一存储单元

DJNZ R1, DS18B20_RD_1

RET ;2字节读完后返回

在上述程序中可以看出,16位数据同样也是从低位到高位被逐一读出并存储的。而且由于读出的温度位是补码形式,在使用前必须进行补码转换。

5.3 显示程序设计

基于的MC14499数码管显示程序实际上包含以下几个部分:

(1)对MC14499的初始化部分;

(2)对MC14499的字写入操作部分;

(3)显示子程序部分(也即写MC14499的显示RAM的部分)。

前两个为低层接口子程序,后一个为应用层于程序。

显示子程序

显示子程序的作用是将非压缩BCD码形式的显示代码写入对应的数码管显示RAM寄存器,常用的0—9和A—F的显示代码对应为00H-09H和0AH-0FH。如要在对应位上显示小数点,只要将对应的显示代码的最高位置为1即可。例如,要显示“0.”,其显示代码应80H。

DISPLY: MOV R0, #DISPBUF ;指向显示缓冲区

MOV R1, #08H ;显示8位

MOV R3, # MC14499TA ;显示低位地址

DISPLY_1: MOV A, @R0

DISPLY_1: MOV R4, A

LCALL WRITE14499 ;调用写14499程序写入14499

INC R0 ;指向下个显示数据

INC R3 ;指向14499下个显示RAM

DJNZ R1, DISPLAY1

RET

5.4 距离计算程序设计

距离计算程序设计中涉及到温度补偿问题、声速计算问题、数制转换(十六进制数转换为BCD码)与数据标定问题,以及多字节十六进制数大小比较问题。

1.温度补偿

温度补偿是在求取声速过程中的一个必要环节,因此将它结合在声速求取子程序设计中加以阐述。为简化程序设计,本测距仪采用查表法进行温度补偿,其主要目的是为了避开复杂的浮点数运算及浮点结果中各字节的提取操作。这样.既保证了一定的精度要求,又可以避免浮点运算,在基于微处理器的系统中通常可将浮点运算改为定点运算。

计算得到的温度进行取整处理,然后判断所在区间,这里提供的程序没有进行插值计算,只简单地取温度区间内温度值对应的声速值。为距离计算方便起见,在表格中的声速值乘以机器周期0.2713再乘以100得到折合后的声速值。因为机器周期为常数,因此将乘法运算直接设计在表格中,避免了程序中的乘法运算。这里乘以100是从精度和计算复杂性两者结合起来考虑,既保证2位精度,同时又能进行2字节与2字节的乘法运算(由MULD子程序实现)。这样,虽然引入了一定的误差,但大大简化了程序的复杂程度,在微处理器汇编语言程序设计中,不失为一种解决此类问题的有效途径。

2.距离计算

距离计算程序设计的关键在于根据温度值进行声速的温度补偿,得到声速,以及超声波的发送与接收的时间差的获取。温度补偿及声速计算已在上面进行了介绍,时间差的获取则是通过定时器1的计数来实现的,即在发射后启动该定时器计数,得到第1回波信号停止计数。假设时间值为2字节(单位:微秒),高字节在JSH中,低字节在JSH中,则距离计算的程序设计如下。

COMPUTER:

MOV A, TEMP ;通过判断温度值高字节是否〉=080H,得正负温度值

CLR C

CLR FUHAO ;符号初始化

SUBB A, #80H ;通过减法后的借位标志判断大小关系

JC COMPUTER_1 ;<80H,为正温度,则跳转处理

SETB FUHAO ;为负温度,则置位符号标志

LCALL BM ;对负的温度值求补码得到原码

COMPUTER_1:

LCALL GETSPEED ;根据环境温度求取声速并存入声速单元

MOV R2, SPEED

MOV R3, SPEED+1

MOV R6, JSH

MOV R7, JSL

LCALL MULD

CLR C ;对乘积除以2即为距离,除以2可通过右移一位实现

MOV A, R2

RRC A

MOV R2, A

MOV A, R3

RRC A

MOV R3, A

RRC A

MOV R4, A

MOV A, R5

RRC A

MOV R5, A

MOV R0, #DISTA

MOV A, R2

MOV @R0, A

INC R0

MOV R3, A

MOV @R0, A

INC R0

MOV A, R4

MOV @R0, A

INC R0

MOV A, R5

MOV @R0, A

计数值为两字节整数值,由于定时器的计数对象为机器周期,其折合为时间还必须乘以机器周期,考虑运算的复杂性和为常数的特点,该乘法运算己在声速的温度补偿过程中事先进行,不需要在程序中进行处理了。

3.数制转换与数据标定处理

数制转换的原因在于:经过求补得到的16位的原码为十六进制数,无法直接进行显示,必须转换为能为MC14499所接受的BCD显示代码。数据标定的原因在于:在温度补偿和距离计算过程中汉有考虑小数的存在,而实际显示结果必须考虑小数和有效位,这样势必要对计算得到的结果进行取舍,取舍的过程就是标定的过程。

5.对温度值求补(得到原码)

如果为负温度,则必须对从DSl8B20读取的温度值求补得到原码,才能进行判断和计算处理。两字节数据的求补于程序如下:

COMPARE:

CLR C

MOV A

MOV B

SUBB A, B

MOV A, R2

MOV B, R4

SUBB A, B

RET

5.5 主程序设计

1.AT89C51的程序设计

就测距仪而言,由于使用了AT89C51的若干个端口,以及使用片内复位电路、时钟电路,因此对它的初始化包含两个方面:

(1)编程时的配置;

(2)程序中对微处理器的初始化。

2.主程序设计

按照自上而下的设计理念,主程序设计是整个软件的关键。主程序设计的过程实际上包含着软件规划的过程、功能划分及其细化的过程、程序运行方式选型的过程,以及系统资源分配的过程。在这个意义上说,构建主程序框架是一个反反复复的过程。不同的系统有不同的构建要求,也就会出现不同的构建过程和构建结果。

系统主程序:ORG 0000H

LJMP MAIN

ORG 000BH

LJMP TIMER0 ;10ms中断,每中断1次计数单元加1

ORG 0030H

MAIN: MOV R5, #0FFH

MAIN_0: LCALL DELAY1MS

LCALL DELAY1MS

LCALL DELAY1MS

DJNZ R5,MAIN_0 ;延时以等待系统外围复位完成

LCALL SYS_INIT ;系统初始化

LCALL INIT_14499 ;MC14499初始化

LCALL DISPLAY ;显示初始画面

CLR STA_FLAG ;10ms到了标志清0

CLR S1_FLAG ;S1按键状态标志(奇次或偶次)

WAITFORSTARTING:

JB ENTER ,$ ;等待确认健开始检测

MOV R5,#20

MAIN_1: LCALL DELAY1MS

DJNZ R5,MAIN_1

JB ENTER, WAITFORSTARTING

CPL S1_FLAG ;按键标志求反

JB S1_FLAG,MAIN_10

CLR TR0 ;偶数次按键

CLR ET0 ;关定时器

SJMP WAITFORSTARTING ;等待按键

MAIN_10:

SETB TR0 ;按奇数次按键,则启动定时器0开始测距

SETB ET0 ;允许T0中断

LCALL DS1820_START ;首次启动转换

MAIN_2:

JNB STA_FLAG,MAIN_2

JB CSBIN ,$ ;等待超声波反射回来

CLR TR1 ;停止计数

MOV JSH,TH1 ;将当前计数值存入技术单元

MOV JSL,TL1

MOV A,COUNT

XRL A,#10

JNZ MAIN_21

LCALL DA1820_GET ;如果1s到了,则检测当前温度

MOV COUNT,#0 ;清计数单元,为下一个周期作准备

LCALL DA1820_START ;再次启动转换,为下一次读取做准备

MAIN_21:

LCALL COMPUTER ;根据温度等参数计算距离

LCALL HEX2BCD ;将转换结果为BCD码送存显示缓冲区

LCALL DISPLAY ;显示刷新

CLR STA_FLAG ;清10ms标志,为下一个周期做准备

GOTO WAITFORSTARTING


6附录

AT98C51的主机电路

7参考文献

《智能仪器》,程德福,北京:机械工业出版社,2005

《智能仪器原理及应用》,赵茂泰,北京:电子工业出版社,2004

《单片机应用系统开发实例导航》,靳达,北京:人民邮电出版社,2004

《基于单片机的智能系统设计与实现》,沈红卫,北京:电子工业出版社,2005

目录

TOC \o "1-3" \h \z \u 摘要. PAGEREF _Toc187737978 \h 1 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100380037003700330037003900370038000000

1.设计要求. PAGEREF _Toc187737979 \h 1 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100380037003700330037003900370039000000

2. 总体方案设计. PAGEREF _Toc187737980 \h 1 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100380037003700330037003900380030000000

2.1超声波传感器及其测距原理. PAGEREF _Toc187737981 \h 3 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100380037003700330037003900380031000000

3.系统组成. PAGEREF _Toc187737982 \h 4 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100380037003700330037003900380032000000

3.1硬件部分. PAGEREF _Toc187737983 \h 4 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100380037003700330037003900380033000000

3.2软件部分. PAGEREF _Toc187737984 \h 5 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100380037003700330037003900380034000000

4.系统硬件电路设计. PAGEREF _Toc187737985 \h 5 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100380037003700330037003900380035000000

4.1超声波检测接受电路. PAGEREF _Toc187737986 \h 7 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100380037003700330037003900380036000000

5 软件设计. PAGEREF _Toc187737987 \h 8 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100380037003700330037003900380037000000

5.1 超声波测距仪的软件规划. PAGEREF _Toc187737988 \h 8 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100380037003700330037003900380038000000

5.2 温度传感器的程序设计. PAGEREF _Toc187737989 \h 10 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100380037003700330037003900380039000000

5.3 显示程序设计. PAGEREF _Toc187737990 \h 12 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100380037003700330037003900390030000000

5.4 距离计算程序设计. PAGEREF _Toc187737991 \h 12 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100380037003700330037003900390031000000

5.5 主程序设计. PAGEREF _Toc187737992 \h 15 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100380037003700330037003900390032000000

6附录. PAGEREF _Toc187737993 \h 18 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100380037003700330037003900390033000000

7参考文献. PAGEREF _Toc187737994 \h 19 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100380037003700330037003900390034000000

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
我把单片机玩死了...
电话遥控器
七十空个性论今诠.doc 文档全文预览
51单片机的4*4键盘程序
LCD12864(不带字库)
红外线遥控器解码程序_网络小屋
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服