摘 要:本文设计了一种基于PIC16F877A 的超声测距报警系统,通过温度补偿、软件滤波以及提高发射驱动电压的方法,解决传统测距系统测量距离较近的问题,提高了探测距离和测量的精准度,并实现了实时报警的功能;解释了CX20106A 芯片输出信号电平变化的原因,提出了两种报警思路并对其进行了验证和实现。实验结果表明该系统能很好的满足安防监控的需求。
随着智能建筑安防系统要求的不断完善和人们安全防范意识的不断提高,室内防盗已逐渐引起人们的注意。针对这种情况,本文设计了一种可用于室内防盗的超声测距报警系统。虽然与常用于军事或特殊工业的雷达和激光相比,超声波在稳定性和精准度上存在一定差距,但它在某些方面也具有优势,如价格低廉,设计简单,受外界环境的影响较小等。近几年随着微处理器的快速发展,超声波测距装置在其检测精度、手段和应用范围上都有了很大的提高,所以超声测距的应用范围变得更加广泛,倒车雷达和自动导航、液位测量、机器人视觉识别和建筑安防等。本文设计的基于PIC16F877A 的室内安防超声测距报警系统具有设计简单,检测精度高,抗干扰能力强,隐蔽性好等特点,并且在办公室进行了初步安装调试,试验结果达到了预期的目的。
1 超声测距报警原理
超声换能器是超声测距报警系统必备的元器件之一,选择合适的超声换能器对系统的性能有着重要的意义。目前最常用的是压电式超声波传感器,它是利用电致伸缩现象制成的,在压电材料切片上施加交变电压,使它产生电致伸缩振动而产生超声波,同样,当超声波作用到压电晶片上时使晶片伸缩,在晶片的两个界面上便产生交变电荷,这种电荷被转换成电压并经过放大后送到测量电路,最终可以被记录或显示。
本系统采用的是收发分离的压电式超声传感器TX40-16 和RX40-16。
超声测距的系统原理方法一般包括三种:相位检测法,声波幅值检测法和渡越时间检测法。本系统采用渡越时间检测法,也就是我们通常所说的时间差法,即超声波从发射到接收的时间段内所走的距离为待测距离的2 倍,所以:
其中:D--待测距离(m);c--声波在该介质中的速度(m/s);t--测得的时间差(s)。
由上式我们可以看出,测量误差主要是由声速误差和测量时间误差所引起的。本系统主要是通过软件修正对测量时间误差进行改善,而声速误差则是通过温度补偿来减小的。零度下声速大约为331.48m/s,其他温度下的声速我们可以通过下式进行修正:
其中,T 为当前环境温度。
温度与声速对应表如表1 所示。
表1 温度与声速对应表
2 系统硬件设计
本设计采用Microchip 公司的PIC16F877A芯片作为超声测距系统的主控芯片,该芯片具有丰富的I/O口资源、可配置不同的时钟频率、内置A/D 转换等优点,强大的功能使设计更为简单、便捷。
图1 超声测距原理框图
温度传感器采用DS18B20 芯片,该传感器具有单总线接口,±0.5℃的测量精度,使用电压范围宽,分辨率可调,测温范围宽,负压特性,数字转换迅速等特点,应用十分简洁方便,符合设计要求。DS18B20读取温度时,要关闭中断,否则可能造成温度读取错误。系统硬件框图如图1 所示。
2.1 超声波发射电路
超声换能器外加电压的大小是决定探测距离远近的一个重要因素。外加电压能影响换能器内部压电陶瓷材料的电场强度,进而影响振膜形变量和压电转换效率。目前常用的一种方法是采用7404 系列的反相器作为超声发射换能器的电压驱动芯片,尽管这种方案设计简单,价格也很低,但它产生的驱动峰峰电压较低,最高也仅有7v 左右,大大缩短了探测距离。针对这种情况,本文决定采用MAX232 代替反相器,以推挽的方式来增大超声发射换能器的发射驱动电压,提高压电转换效率。通过实验测的,MAX232 可将5v左右的TTL 电平转换成9.2v 左右的232 电平,峰峰值可达18.5v,探测距离可达5m,占空比也近似50%,克服了探测距离近的缺点,而且其他性能指标完全符合设计要求。本方案发送的超声波以10 个周期为一个序列,两个序列之间相隔32768us,即T1 定时器溢出的时间。当T1 溢出时,系统显示错误并重新发射超声波进入到下一次测量。系统发射电路如图2 所示。
图2 系统发射电路图
2.2 超声波接收电路
超声波在空气中传播时,能量会随着距离的增加而不断衰减。通过实验测得,当探测距离为1m 左右时,信号能量已经衰减到30mv 左右,我们需要把这个接收到的微弱的超声波正弦信号进行放大、滤波等处理,输入到PIC 的外部中断口,作为接收到回波的标志。通常的设计思路是首先采用LM 系列的放大器进行放大,然后经过滤波、频率锁定等电路输入到INT0 产生中断。该方法的优点在于可以锁定所需要的频率,防止外界其他频率的超声波的干扰,但缺点在于集成度不高,设计和焊接比较繁琐。为此本文采用索尼公司的CX20106A 红外遥控接收集成芯片,该芯片可用于超声波处理电路,它集成了放大、限幅、带通滤波、峰值检测、整形和比较等功能,具有很高的灵敏度和抗干扰性[5].CX20106A 芯片的7 引脚与PIC单片机的INT0 相连接,未接收到超声波时,7 引脚输出4.1v 左右的高电平,不产生中断;当接收到与中心频率40KHz 相符或相近的超声波时,便产生低跳变。
当检测到有底跳变时,把第一个下降沿信号输入到INT0 作为外部中断信号,然后关闭定时器T1 并读取T1 的计数值,进行下一步的时间和距离计算。接收电路图如图3 所示,图4 为发射和接收时序图。
图3 系统发射电路图。
图4 发射与接收时序图
2.3 测距报警系统外围电路
系统的外围电路包括电源、复位、晶振、测温、报警、串口以及数码管显示电路等。
PIC16F877A 可采用的时钟频率为4MHz ~20MHz,在保证系统计算精准度的基础上,采用了8MHz 的晶振,这样便于设定发射超声波的数目,使超声波中心频率维持在40KHz.采用的DS18B20 芯片可对声速进行修正,使结果更加准确。系统采用蜂鸣器进行报警。串口电路可以实现和上位机通信。为了便于观察,采用数码管显示测量的距离,PIC 单片机的RD0~RD7 控制数码管的七位段选,RC1~RC3 控制位选,以动态扫描的方式显示距离。串口通信和显示电路如图5 所示,系统外围电路如图6 所示。
图5 系统显示电路和串口通信电路图
图6 超声测距报警系统外围电路
3 系统软件设计
软件设计主要包括:主程序,测温修正声速子程序,中断子程序,滤波子程序,报警子程序和显示子程序等。
系统开始工作后,首先完成系统初始化;紧接着是对声速进行修正,得到当前温度下的声速;然后对定时器T1 进行设置,并由PIC 单片机产生40KHz 的方波;接下来便是通过读取T1 定时器的数值来计算测距时间和测量距离;得到正确的测量距离便采用数组的方式进行记录,数组元素个数为11,采用冒泡法进行排序,取中间值作为最终的测量距离,以提高测距的精准度;下一步便是判定是否符合报警条件,如果符合条件便报警,然后通过数码管显示距离,不符合报警条件则直接显示距离。在程序运行过程中,如果有中断产生便跳到中断子程序。在中断程序中,首先判断该中断是外部中断还是T1 溢出中断。如果是外部中断,则关闭T1 和外部中断使能并计算时间和距离;如果是T1 溢出中断,则对T1 进行清零,系统重新发射超声波。系统主程序及中断程序流程图如图7 所示。
图7 系统主程序及中断程序流程图。
在软件设计时,要特别注意避免在DS18B20 总线读写或复位的过程中产生中断,防止温度读取错误。
系统每计算完一次时间和距离时都要对定时器T1 清零,否则下一次测量会造成数据不准确。
4 实验结果及分析
本文首先对测量距离和测量结果进行了验证和分析。发射换能器刚发射的超声波可能会直接横向发射到接收超声换能器,所以在发射完超声波后进行延时,由此产生的盲区大约为10cm.测量结果和相对误差如表2 所示。
表2 探测结果及误差分析
由表2 我们可以看出:近距离测量比较准确,但远距离测量时较容易出现测量误差。产生误差的原因有很多,如声速、空气湿度、发射角度等,而换能器振膜的位置和电-机械信号转换速率等误差也是不可忽视的原因,这些误差主要是通过多次测量不断修改测量距离公式来进行修正的。本文测距产生误差的原因主要是超声波在传播的过程中的衰减和丢失。
超声波报警方式主要有两种:一种是通过软件设置一个阈值与测的距离进行比较,如果不符合确定的定义则报警。另一种是通过多普勒效应波形检测,发射换能器发射超声波后,在没有移动物体进入被探测区域的情况下,反射回来的超声波是等幅的;当有活动的物体进入探测区域时,反射回来的超声波幅度不等,并且不断变化,当接收电路检测到变化的信号时,控制电路便驱动报警装置进行报警。
本文首先按照第一种报警思路对系统进行了设计。我们把测距报警系统安置在正对着办公室门口的桌子上,系统稳定后测的距离为188,我们设定的阈值为200,当有人进入便造成探测距离小于预设值,如果在预定的20s 内没有取消报警设置时,系统便会自动报警。试验结果表明,系统反应灵敏、精准度高,误报率低于1%,符合设计要求。下一步工作我们可以把产生的报警信号通过短信的方式发送到手机客户端或者防务人员信息端。
针对第二种报警方式,我们把CX20106A 输出电平信号变化类比为多普勒波形进行检测。通过试验得知:如果不间断的发射超声波,CX20106A 芯片7 引脚的输出并不会和预期的那样一直维持在低电平,这是由于该芯片的灵敏度不足以分辨出这么短时间的电平变化,其内部的上拉门限会很快把输出信号变为高电平,没有活动物体便一直维持在低电平。因此,本系统便采用该种方式发送超声波,图8 为稳定后的输出电平,图9 为人员进入探测区域走动造成的电平变化。
图8 接收到的电压波形图
图9 有活动物体进入时得到的电压波形图
通过长时间实验结果观察得知,在没有移动物体进入探测区时,平均每小时大约有10 次低电平跳变,误报率很低,所以采用短时间间隔取样的方式,这样出现误报为小概率事件。设定取样间隔为2s,采用外部中断计算产生低脉冲数目,如果检测到的下降沿次数超过10 次,则可以认为有移动物体,系统会进行报警,否则一直循环采样比较。
5 总结
与传统的超声报警系统相比,本文设计的超声测距报警系统不仅在精度和测量距离上有了很大的改善,而且硬件结构简单,工作稳定,可移植性好,应用在安防系统中具有很强的隐蔽性,能够较为准确的识别闯入者并报警,达到了预期结果。同时本系统也存在一些不足,譬如:没有设置手机短信报警模块,如何和其他安防设施配合使用等,在下一步的研究工作中会着重解决这些问题。(技术资料出处:任春红)