超声波接收部分采用集成芯片CX20106A,这是一款红外线检波接收的专用芯片。内部电路由前置放大器、自动偏置电平控制电路、限幅放大器、带通滤波器、峰值检波器和整形输出电路组成。可以利用它作为超声波检测电路。
接收的回波信号先经过前置放大器和限幅放大器,将信号调整到合适的幅值;再经过带通滤波器滤波得到有用信号,滤除干扰信号;最后由峰值检波器和整形电路输出到锁相环路,实现准确的计时。CX20106A的外部接线图如图3所示。
图3中1脚是接收信号输入端,2脚是调节接收信号灵敏度,电阻越小,灵敏度越高。电容越大,灵敏度越高。电容一般取1μF,电阻50~300 Ω的,在干扰较大的场合增加电阻阻值可将灵敏度调低,干扰小的场合减小阻值将灵敏度调高。5脚主要用来调节中心频率,这里取200 kΩ,7脚接上拉电阻,这里取1 kΩ左右。
3.3 显示部分
显示部分采用共阴极数码管,由单片机实现控制,单片机的P0口输出段码,P2口用作位码,用PNP型三极管驱动(本设计采用9018),由于单片机I/O口的驱动能力非常小,P0口需外接上拉电阻来增加驱动能力,应用时要注意,在低电平时,可能由于电流直接经电阻流进I/O的灌流太大而烧毁单片机,所以提升电阻一般取600~1 000 Ω。实验证明,数码管亮度合适。其原理图如图4所示。
3.4 温度测量部分
DS18B20数字温度计是DALLAS公司生产的1Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,将其数据线与单片机的P1.3相连,就可以实现温度测量。测量的温度精度可以达到0.1℃,测量的温度的范围在-20~+100℃。电路如图5所示。
4 系统软件设计
测距系统软件采用汇编语言,由发射脉冲子程序、用中断实现回波接收子程序、计算距离子程序、数码管显示子程序和计时单元延时子程序几部分组成,采用模块化编程。其软件流程图如图6所示。
程序首先初始化需要用到的寄存器,内存单元,设置中断触发方式,并初始化DS18B20,然后控制P1.0口输出12μs的高电平,再输出13μs的低电平,循环10次便可发射10个频率为40 kHz的脉冲信号。经过一段延时后,CPU开放中断,开始计数,将计数器初值设为延时所经过的距离,计数器每过一个计时单元加一。中断产生,停止计数,最后将计数器中的值数据处理后显示到数码管上。如果计数器中的值小于预定值就由软件产生一定频率的信号到蜂鸣器报警,并启动报警灯。当需要所存数据时,由外部中断判断键盘是否按下,通过不断显示上次测量数据来锁定数据。当检测到键盘再一次按下时,按取消锁存,并继续测量距离。
5 结语
应用本系统3 mm~20 m内的目标做了多次测量,测量结果为,其最大误差为1.5 mm,且重复性好。可见基于单片机设计的超声波测距系统具有硬件结构简单、工作可靠、测量误差小等特点。因此,它可用于许多对测量要求精度高,测量范围适当的设备和各种检测系统中。