基于MSP430的倒车雷达超声波测距系统设计
2021-09-13张皎姚亦桐杨小平张博奥
张皎 姚亦桐 杨小平 张博奥
摘 要:文章论述了一种利用外设HC-SR04超声波组件设计的基于MSP430G2553的超声波倒车雷达监测系统。系统能实时检测汽车尾部与障碍物的距离,并在MSP430G2553拓展板上用LCD动态显示实时距离,实现了对当前测量距离的显示,对倒车安全有着不可替代的作用。经实验验证,该系统最大测量距离为3.5 m,并且具有成本低廉、非接触性好、反应速度快、可靠性强、适应性好、操作方便的特点。
关键词:MSP430;HC-SR04;LCD;超声波测距
0 引言
据初步调查统计,75%的汽车交通事故是由汽车倒车“后视”不良造成的[1]。因此,许多非职业汽车驾驶员很希望能有一种汽车倒车报警器,在倒车时不断测量汽车尾部与其后面障碍物的距离,并随时显示其距离,在不同的距离范围内发出不同的报警信号,以提高汽车倒车时的安全性。增强汽车的后视能力,尤其是增强大型、重型车辆的后视能力,对于提高行车安全,减轻司机的劳动强度和心理压力,是十分重要的。
超声波测距的基本原理是利用超声波在空气中的传播速度来测量障碍物的实际距离。具体方法如下:先发射超声波,当声波发射后遇到障碍物并反射超声波。根据发射和接收的时间差计算出发射点到障碍物的实际距离。由于超声波拥有易于定向发射、方向性好、强度易控制、与被测量物体不需要直接接触等优点,所以超声波测距仪广泛应用于倒车雷达、建筑工地、工业现场等的距离测量[2]。本案例设计出了一款基于MSP430G2553(简称“G2”)单片机的超声波倒车雷达,主要由3部分组成:传感器(探头),主控制器,显示模块。其中:传感器采用HC-SR04型号,采用单片机MSP430 G2553 作为主控制器。单片机主要负责发射触发脉冲,用于计算开始时间及脉宽;对反射回来的超声波进行响应、测量发射至返回的时间差;控制超声波传感器(HC-SR04)产生超声波信號,并通过输出引脚输入到驱动器端口,经驱动器驱动后生成超声波。一旦探头接收到反射波,则单片机的输出引脚的电平将从“1”变为“0”,这种电平变化可以作为单片机对接收探头的接收情况进行实时监控,同时显示模块采用MSP430 G2553扩展板上LCD,实现数字实时显示。
1 原理简述
1.1 超声波简介
超声波是一种频率高于20 000 Hz的声波,它的方向性好,穿透能力强,易于获得较集中的声能,在水中传播距离远,可用于测距、测速、清洗、焊接、碎石、杀菌消毒等。在医学、军事、工业、农业上有很多的应用。超声波因其频率下限大于人的听觉上限而得名。科学家们将每秒钟振动的次数称为声音的频率,它的单位是赫兹(Hz)。人类耳朵能听到的声波频率为20~20 000 Hz。因此,把频率高于20 000 Hz的声波称为“超声波”[3]。
1.2 超声波测距原理
超声波测距是利用反射原理来测量实际距离的,当测量一端接超声波传感器,另一端为反射超声波的物体时,首先,超声波传感器对准反射物发射超声波,并依次开始计时。接下来,超声波被障碍物(被测物)反射回来。最后,超声波传感器接收到反射脉冲后立即停止计时。可以依据超声波在空气中的传播速度和往返时间计算出要测量的实际距离。测量距离D为:[3]
式中:v表示超声波的传播速度[3];1/2t表示超声波发射到接收所需时间的一半,也就是单程传播时间[3]。
1.3 HC-SR04模块工作原理
由HC-SR04的超声波时序可以看出:单片机只需要提供一个持续时间达10 us以上的脉冲信号作为触发信号(见图1)。MSP430单片机内部将发出8个周期为40 kHz的高电平用以检测反射波。一旦检测有反射信号,则单片机输出响应信号用以应答。由原理可知,响应信号的脉宽与所测的实际距离成正比。依据公式,通过计算发射信号到响应信号的时间间隔就可以计算得到距离。其公式为:us/58=厘米或者us/148=英寸;或是:距离=高电平时间×声速(340 m/s)/2;这里建议测量周期为60 ms以上,以防止发射信号和响应信号的混淆,影响测量结果[3]。
2 系统总体设计框架
本系统按硬件设计共分为3大功能模块(见图2)。其中,测距模块和警报模块体现了我们程序的主要功能,串行级联。三大模块的主要功能如下。
(1)初始化模块:蜂鸣器初始化、关闭看门狗、LCD显示初始化、配置时钟、I/O接口等参数。
(2)测距模块:捕获、中断、计数、测量PWM波宽、并凭借PWM波宽,计算出障碍物距离超声波传感器的距离,显示在LCD显示屏上。
(3)警报模块:短暂延时后,根据传入的距离数据,蜂鸣器根据距离数据判断是否开始警报,以及警报的声调高低。
下面具体介绍测距模块、报警模块以及中断测量波宽的具体实现方法。
3.1 测距模块
测量障碍物距离超声波传感器的实际距离,是本程序最基本,最重要的功能。测距模块的主要功能,就是通过测量PWM波的波宽,来计算出障碍物的实际距离。图3是测距模块的主要流程图。此模块的主要作用是测距,该功能是通过测量PWM波宽,利用时钟,间接测量出障碍物的实际距离。
首先,先进行LCD显示的初始化,SCMLK时钟初始化,然后通过捕获,使能中断,连续计数,再用PWM初始时间pwm_start,PWM终止时间pwm_end,溢出计数变量overflow计算PWM波宽。在这里,进行一次判断,如果溢出计数变量overflow为零,那么赋值PWM波宽为零(实际距离为零),控制LCD显示屏使之显示“ERROR”字样,系统报错。若溢出计数变量overflow不为零,则计算PWM波宽,计算障碍物到超声波传感器的实际距离dis。此时,只需要单片机控制LCD屏实时显示计算出的实际距离dis即可。
具体实现为:测距
CCTL1=CAP+CM_1+CCIS_0+SCS+CCIE; //捕获模式,上升沿捕获,选择CCI1A同步,捕获中断开//
TA0CTL=TASSEL_2+MC_2+TACLR+TAIE;
SMCLK=1M, //连续计数模式//
BCSCTL1=CALBC1_1MHZ;
DCOCTL=CALDCO_1MHZ; //SMCLK时钟源选择1MHZ//
3.2 报警模块
报警模块是本程序的另一重要组成部分。报警系统能够根据超声波传感器距离障碍物的距离决定是否需要报警。如果需要报警,又会根据距离,决定危险程度,然后通过蜂鸣器发出不同音调的声音来警报,在声音警报的同时,系统还会控制红色LED灯持续闪烁,直至危险解除。报警模块的流程如图4所示。
具体实现为:报警
void play_sound(int loudness,int tune,float timehold) //蜂鸣器发声函数
{unsigned int i = 0;
for(i=0;i<10000/tune*timehold;i++)
{ if(i%2)
{ write2DAC8411(0);}
else
{write2DAC8411(loudness);}
unsigned int j=0;
for( j = 0;j < tune; j++ )
{__delay_cycles(1);}
}
}
3.3 中斷测量波宽
在测距模块中,我们用PWM波的波宽pwm_wide来计算障碍物的实际距离dis。在这里,本程序是采用中断的方法来计算PWM波的波宽的。中断测量PWM波宽的程序流程如图5所示。
在使用中断测量PWM波宽中,先设置I/O接口,选择SMCLK作为时钟源,持续计数。使能中断,判断error==1? 若是,则波宽为零;若不是,则进行捕获中断,判断是上升沿还是下降沿。若为上升沿,变更为下降沿触发,并记录初始时间,溢出数复位。若为下降沿,变更为上升沿触发,记录终止时间。最后利用终止时间,初始时间和溢出数计算出PWM波宽。
4 结语
系统利用超声波在空气中的可传播性。实时测得超声波在空气中的传播时间和传播速度。在将时间和速度相乘即得距离的原理,设计了一个基于MSP430的超声波倒车雷达监测报警系统,用于实时测得汽车尾部与障碍物的距离。通过LCD显示距离值,将距离值提供给司机。该系统具有成本低、非接触、速度快、可靠性强、适应性好、操作方便,有着广泛的应用前景。
实验结果表明,该案例在生产实际和科学研究方面均具有一定的参考价值。(1)司机可直接通过LCD屏读出汽车尾部和障碍物之间的实际距离,即不需要回头就可以预知车尾的情况。这样可以有效避免倒车不慎造成的交通事故。 (2)该系统使我们在倒车时更方便快捷的同时,又为倒车提供了更为安全的保障。
[参考文献]
[1]李文辉.基于MSP430单片机的超声波倒车雷达监测报警系统[J].自动化与仪器仪表,2009(4):42-44.
[2]湿济霞,张艳兵 .基于MSP430单片机的倒车雷达设计[J].科技信息,2011(21):505-506.
[3]李家伟,王怡之.超声波检测[M].北京:机械工业出版社,2000.
(编辑 姚 鑫)