超声波测距课程设计报告书

  • 格式:doc
  • 大小:456.00 KB
  • 文档页数:13

下载文档原格式

  / 13
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

河北联合大学2009级本科课程设计

超声波测距仪

姓名:任燕凯

学院:电气工程学院

专业:电气(1)

学号: 10

指导教师:刘丽萍

2011年 12月

电气工程学院课程设计评审表

目录

1 设计任务与要求 (2)

1.1 基本功能 (2)

1.2 扩展功能 (2)

2 超声波测距设计原理 (2)

3 电路设计 (2)

3.1 显示部分设计 (2)

3.2 发射部分设计 (3)

3.3 接收部分设计 (5)

3.4单片机最小系统 (5)

4 程序设计 (6)

参考资料 (7)

超声波测距仪的设计

1 设计任务与要求

1.1 基本功能

完成2米以内的距离测量并通过数码管显示

1.2 扩展功能

接收部分采用CX20106A红外接收芯片,使回波更容易被接收,使实验省去了繁琐的调试。

2 超声波测距仪设计原理

超声波测距仪的总体框图如图1所示,主体电路完成超声波(40KHZ)的发射,接收及距离的显示。

图1 超声波测距仪总体框图

3各部分的电路设计

3.1显示部分

3.1.1 74HC138译码器的工作原理(如真值表所示)

表1 译码器器的真值表

3.1.2 译码电路与显示电路的工作原理

单片机控制段选,译码器控制位选,来完成显示部分

3.2 发射部分

3.2.1 波形的产生

利用单片机的T2定时中断产生40KHZ的脉冲,通过软件产生的脉冲,频率比较准确,易于驱动超生波的发出。

3.2.2发射部分

输出的 40kHz方波信号一路经一级反向器后送到超声波换能器的一个电极。另一路经两级反向器后送到超声波换能器的另一个电极。用这种推挽形式将方波信号加到超声波换能器两端。可以提高超声波的发射强度。输出端采用两个反向器并联。用以提高驱动能力。上拉电阻 R10、R20一方面可以提高反向器74LS04输出高电平的驱动能力。另一方面可以增加超声波换能器的阻尼效果,缩短其自由振荡的时间。

3.3 接收部分

使用CX20106A集成电路对接收探头受到的信号进行放大、滤波。其总放大增益80db。

电路如下图所示

CX20106A的引脚注释。

1管脚:遥控信号输入端,该脚和地之间连接PIN光电二极管,该脚的输入阻抗约为40kΩ。

2管脚:该脚与地之间连接 RC串联网络,它们是负反馈串联网络的一个组成部分,改变它们的数值能改变前置放大器的增益和频率特性。增大电阻R1或减小C1,将使负反馈量增大,放大倍数下降,反之则放大倍数增大。但C1的改变会影响到频率特性,一般在实际使用中不必改动,推荐选用参数为R1=4.7Ω,C1=1μF。

3管脚:该脚与地之间连接检波电容,电容量大为平均值检波,瞬间相应灵敏度低;若容量小,则为峰值检波,瞬间相应灵敏度高,但检波输出的脉冲宽度变动大,易造成误动作,推荐参数为3.3μf。

4管脚:接地端。

5管脚:该脚与电源间接入一个电阻,用以设置带通滤波器的中心频率f0,阻值越大,中心频率越低。例如,取R=200kΩ时,f0≈42kHz,若取R=220kΩ,则中心频率f0≈38kHz。6管脚:该脚与地之间接一个积分电容,标准值为330pF,如果该电容取得太大,会使探测距离变短。

7管脚:遥控命令输出端,它是集电极开路输出方式,因此该引脚必须接上一个上拉电阻到电源端,推荐阻值为22kΩ,没有接受信号是该端输出为高电平,有信号时则产生下降。

8脚:电源正极,4.5~5V。最初,我们直接用7脚输出,但用示波器发现无信号是其输出高电平的同时夹杂这少量的低电平。因此,我们在此处再加一个旁通电容,平均华其电压输出,以去除低电平信。

3.4 单片机最小系统

最小系统由复位部分和晶振部分组成,原理图如下所示。

4 程序设计

本设计采用T0定时器控制20条脉冲的输出,用T2的捕获功能来完成回波信号的接收和时间的计算。

程序流程图如下所示: N Y

Y

N N

程序初始化 按键是

否按下

T0开始计时 开始发超声波 T2开始计时 判断是不是20条波 检测回拨信号

Y

5参考资料

数字电路第五版;

单片机及应用系统设计;

程序如下:

#include

#define uchar unsigned char #define uint unsigned int

uchar code duma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; sbit a=P3^0; sbit b=P3^1; sbit c=P3^2; sbit fa=P1^0; sbit z=P1^4;

uchar sign_failure; uchar sign_success; uchar qian,bai,shi,ge; uint s,t,count;

void delay(uchar x); void init(); void measure(); void display(); void main() {

init(); //程序初始化

while(1)

{

measure(); //测量函数

qian=s/1000; //为显示计算数值

bai=(s/100)%10;

shi=(s/10)%10;

ge=s%10;

display(); //显示函数

}

}

void delay(uchar x) //延时函数{

uchar i,j;

for(i=x;i>0;i--)

for(j=110;j>0;j--);

}

void init()

{

fa=0;

count=0;

z=1; //指示灯亮

s=0;

t=0;

EA=1;

TMOD=0x02; //T0工作在方式1

T2CON=0x09; //T2工作在捕获模式

ET0=1;

ET2=1;