单片机超声波测距的工作原理与烧录程序

上传人:夏** 文档编号:547698753 上传时间:2023-01-22 格式:DOCX 页数:7 大小:124.80KB
返回 下载 相关 举报
单片机超声波测距的工作原理与烧录程序_第1页
第1页 / 共7页
单片机超声波测距的工作原理与烧录程序_第2页
第2页 / 共7页
单片机超声波测距的工作原理与烧录程序_第3页
第3页 / 共7页
单片机超声波测距的工作原理与烧录程序_第4页
第4页 / 共7页
单片机超声波测距的工作原理与烧录程序_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《单片机超声波测距的工作原理与烧录程序》由会员分享,可在线阅读,更多相关《单片机超声波测距的工作原理与烧录程序(7页珍藏版)》请在金锄头文库上搜索。

1、单片机超声波测距的工作原理 超声波测距学习板,可应用于汽车倒车、建筑施工工地以及一些工业现场的位置监控,也可用于如液位、井 深、管道长度的测量等场合。要求测量范围在0.274.00m,测量精度1cm,测量时与被测物体无直接接触, 能够清晰稳定地显示测量结果。超声波测距原理超声波发生器内部结构有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶片 的固有振荡频时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。反之,如果两电极间未外加 电压,当共振板接收到超声波本时,将压迫压电晶片作振动,将机械能转换为电信号,就成为超声波接收器 在超声探测电路中,发射端得到输出脉冲为一系列

2、方波,其宽度为发射超声的时间间隔,被测物距离越大, 脉冲宽度越大,输出脉冲个数与被测距离成正比。超声测距大致有以下方法:取输出脉冲的平均值电压, 该电压(其幅值基本固定)与距离成正比,测量电压即可测得距离;测量输出脉冲的宽度,即发射超声波 与接收超声波的时间间隔t,故被测距离为S=l/2vt。本测量电路采用第二种方案。由于超声波的声速与 温度有关,如果温度变化不大,则可认为声速基本不变。如果测距精度要求很高,则应通 过温度补偿 的方 法加以校正。超声波测距适用于高精度的中长距离测量。因为超声波在标准空气中的传播速度为 331.45 米/ 秒,由单片机负责计时,单片机使用12.0M晶振,所以此系

3、统的测量精度理论上可以达到毫米级。采用AT89C51或AT89S51单片机,晶振:12M,单片机用P1.0 口输出超声波换能器所需的40K方波信号,利 用外中断0 口监测超声波接收电路输出的返回信号,显示电路采用简单的4位共阳LED数码管,断码用74LS244, 位码用 8550 驱动.超声波测距的算法设计:超声波在空气中传播速度为每秒钟340米(15C时)。X2是声波返回的时刻, X1是声波发声的时刻,X2-X1得出的是一个时间差的绝对值,假定X2-X1=0.03S,则有340mX0.03S=10.2m。 由于在这10.2m的时间里,超声波发出到遇到返射物返回的距离,硬件部分采用AT89C5

4、1或AT89S51单片机,晶振:12M,单片机用P1.0 口输出超声波换能器所需的40K方波信号,利 用外中断0 口监测超声波接收电路输出的返回信号,显示电路采用简单的4位共阳LED数码管,断码用74LS244, 位码用 8550驱动. 主要由单片机系统及显示电路、超声波发射电路和超声波检测接收电路三部分组成。采用 AT89S51来实现对CX20106A红外接收芯片和TCT40-10系列超声波转换模块的控制。单片机通过P1.0引脚 经反相器来控制超声波的发送,然后单片机不停的检测INT0引脚,当INT0引脚的电平由高电平变为低电平 时就认为超声波已经返回。计数器所计的数据就是超声波所经历的时间

5、,通过换算就可以得到传感器与障碍 物之间的距离。单片机采用89S51或其兼容系列。采用12MHz高精度的晶振,以获得较稳定的时钟频率,减小测量误差。单片机用P1.0端口输出超声波转化器所需的40KHZ方波信号,利用外中断0 口检测超声波接受电路输出的 返回信号。显示电路采用简单实用的4位共阳LED数码管,段码用74LS244驱动,位码用PNP三极管驱动。 单片机系统及显示电路如下图所示.超声波发射电路原理图U4IJ:工超声波接收电路:115LHCIAI ITY柬收捋A窘m理讥使用CX20106A集成电路对接收探头受到的信号进行放大、滤波。其总放大增益80db。以下是CX20106A的 引脚注释

6、。1脚:超声信号输入端,该脚的输入阻抗约为40k Qo2 脚:该脚与地之间连接 RC 串联网络,它们是负反馈串联网络的一个组成部分,改变它们的数值能改变前置 放大器的增益和频率特性。增大电阻R1或减小C1,将使负反馈量增大,放大倍数下降,反之则放大倍数增大。 但C1的改变会影响到频率特性,一般在实际使用中不必改动,推荐选用参数为R1=4.7Q, C1=1uFo3 脚:该脚与地之间连接检波电容,电容量大为平均值检波,瞬间相应灵敏度低;若容量小,则为峰值检波 瞬间相应灵敏度高,但检波输出的脉冲宽度变动大,易造成误动作,推荐参数为3.3 ufo4 脚:接地端。5脚:该脚与电源间接入一个电阻,用以设置

7、带通滤波器的中心频率f0,阻值越大,中心频率越低。例如, 取 R=200kQ 时,f042kHz,若取 R=220kQ,则中心频率 f038kHz。6脚:该脚与地之间接一个积分电容,标准值为330pF,如果该电容取得太大,会使探测距离变短。7 脚:遥控命令输出端,它是集电极开路输出方式,因此该引脚必须接上一个上拉电阻到电源端,推荐阻值 为22kQ,没有接受信号是该端输出为高电平,有信号时则产生下降。8脚:电源正极,4.55V。软硬件调试及性能超声波测距仪的制作和调试,其中超声波发射和接收采用16的超声波换能器TCT40-16F1 (T发射)和TCT40-16S1 (R接收),中心频率为40kH

8、z,安装时应保持两换能器中心轴线平行并相距48cm,其余元件无特殊要求。若能将超声波接收电路用金属壳屏蔽起来,则可提高抗干扰能力。根据测量范围要求不同,可 适当调整与接收换能器并接的滤波电容C4的大小,以获得合适的接收灵敏度和抗干扰能力。硬件电路制作完成并调试好后,便可将程序编译好下载到单片机试运行。根据实际情况可以修改超声波 发生子程序每次发送的脉冲宽度和两次测量的间隔时间,以适应不同距离的测量需要。根据所设计的电路参 数和程序,测距仪能测的范围为0.075.5m,测距仪最大误差不超过1cm。系统调试完后应对测量误差和重 复一致性进行多次实验分析,不断优化系统使其达到实际使用的测量要求。后续

9、工作需实验后才能验证 根据参考电路和集成的电路器件测距范围有限10m以内为好。AT89C2051做的超声波测距源程序#include #define k1 P3_4#define csboutP3_5/超声波发送#define csbintP3_7/超声波接收#define csbc=0.034#define bg P3_3unsigned char csbds,opto,digit,buffer3,xml,xm2,xm0,key,jpjs;/显示标识unsigned char convert10=0x3F,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6

10、f;/09 段码 unsigned int s,t,i, xx,j,sj1,sj2,sj3,mqs,sx1;bit cl;void csbcj();void delay(j);void scanLED();void timeToBuffer();void keyscan();void k1cl();void k2cl();void k3cl();void k4cl();void offmsd();/延时函数/显示函数/显示转换函数/主函数/开中断/设定时器0为计数,设定时器1定时/定时器 0 中断允许/定时器 1 中断允许void main()EA=1;TMOD=0x11;ET0=1;ET1=

11、1;TH0=0x00;TL0=0x00;TH1=0x9E;TL1=0x57; csbds=0; csbint=1; csbout=1;cl=0;Opto=0xff;jpjs=0; sj1=45;sj2=200; sj3=400;k4cl();TR1=1; while(1) keyscan(); if(jpjssj3) buffer2=0x76; buffer1=0x76; buffer0=0x76; else if(ssj1) buffer2=0x40; buffer1=0x40; buffer0=0x40;else timeToBuffer();/将值转换成 LED 段码/显示函数else

12、timeToBuffer(); offmsd(); scanLED();if(ssj2) bg=0; bg=1;void scanLED() digit=0x04; for( i=0; i=1;/循环右移 1 位void timeToBuffer()/转换段码功能模块xm0=s/100; xm1=(s-100*xm0)/10; xm2=s-100*xm0-10*xm1; buffer2=convertxm2; buffer1=convertxm1; buffer0=convertxm0;void delay(i)while(-i);void timer1int (void) interrupt

13、 3 using 2 TH1=0x9E; TL1=0x57; csbds+; if(csbds=40)csbds=0; cl=1;void csbcj() if(cl=1) TR1=0; TH0=0x00; TL0=0x00; i=10; while(i-) csbout=!csbout;/盲区TR0=1;i=mqs; while(i-) i=0; while(csbint)i+;if(i=2450)/上限值csbint=0;TR0=0;TH1=0x9E;TL1=0x57;t=TH0; t=t*256+TL0; s=t*csbc/2;TR1=1;cl=0;void keyscan()xx=0;

14、if(k1!=1)delay(400); if(k1!=1) while(!k1)delay(30); xx+; if(xx2000) jpjs+; if(jpjs4) jpjs=0; xx=0; switch(jpjs) case 1: k1cl();break; case 2: k2cl();break; case 3: k3cl();break; case 4: k4cl();break;/健盘处理函数/ 判断开关是否按下/延时去抖动/ 判断开关是否按下void k1cl()sj1=sj1+5;if(sj1100)sj1=30;s=sj1;void k2cl()sj2=sj2+5;if(sj2500)sj2=40;s=sj2;void k3cl()sj3=sj3+10;if(sj3500)sj3=100;s=sj3;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号