文档库 最新最全的文档下载
当前位置:文档库 › 超声波传感器程序

超声波传感器程序

超声波传感器程序
超声波传感器程序

/*=========HC-SR04超声波传感器========*/

#include "intrins.h"

#define uint unsigned int

#define uchar unsigned char

sbit trig=P2^0;

sbit echo=P3^3;

bit receive_flag; //信号接收标志位

uint distance,time,outH,outL;

void delay_20us(); //20us延时函数

void hcsr04_init(); //超声波传感器初始化函数

void distance_count(); //距离检测函数(单位cm)void delay_20us()

{

uchar k;

for(k=13;k>0;k--)

{_nop_();}

}

void distance_count()

{

time=outH*256+outL;

distance=(uint)(time*1.7/100);

if(distance>=300||receive_flag==1)

receive_flag=0;

}

void hcsr04_init()

{

EA=0; //关中断总允许位

trig=1; //给trig引脚20us的脉冲,发射信号delay_20us();

trig=0;

receive_flag=0; //接收标志位清零

TH1=TL1=0; //T1赋初值

TR1=1; //启动T1

ET1=1; //允许T1中断

EX1=1; //允许INT1中断

EA=1; //打开中断总允许位

while(echo==0); //等待接收信号,周期65.536ms }

void timer1() interrupt 3

{

TH1=0;

TL1=0;

TF1=0;

}

void exter1() interrupt 2 {

outH=TH1;

outL=TL1;

receive_flag=1;

EX1=0;

}

超声波传感器测距原理

芀一、超声波测距原理 肅超声波测距原理是通过超声波发射器向某一方向发射超声波,在发射时刻的 同时开始计时,超声波在空气中传播时碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为v ,而根据计时器记录的测出发射和接收回波的时间差△t ,就可以计算出发射点距障碍物的距离S , 即: 膂S = v·△t /2 ① 芀这就是所谓的时间差测距法。 蝿由于超声波也是一种声波, 其声速C与温度有关,表1列出了几种不同温度下的声速。在使用时,如果温度变化不大, 则可认为声速是基本不变的。常温下超声波的传播速度是334 米/秒,但其传播速度V 易受空气中温度、湿度、压强等因素的影响,其中受温度的影响较大,如温度每升高1 ℃, 声速增加约0. 6 米/ 秒。如果测距精度要求很高, 则应通过温度补偿的方法加以校正(本系统正是采用了温度补偿的方法)。已知现场环境温度T 时, 超声波传播速度V 的计算公式为: 螅V = 331.45 + 0.607T ② 芄 声 速 确 定

后, 只要测得超声波往返的时间,即可求得距离。这就是超声波测距仪的机理。 薂二、系统硬件电路设计 腿图2 超声波测距仪系统框图 蒆基于单片机的超声波测距仪框图如图 2 所示。该系统由单片机定时器产生 40KHZ 的频率信号、超声波传感器、接收处理电路和显示电路等构成。单片机 是整个系统的核心部件,它协调和控制各部分电路的工作。工作过程:开机,单 片机复位,然后控制程序使单片机输出载波为40kHz 的10 个脉冲信号加到超声 波传感器上,使超声波发射器发射超声波。当第一个超声波脉冲群发射结束后, 单片机片内计数器开始计数,在检测到第一个回波脉冲的瞬间,计数器停止计数, 这样就得到了从发射到接收的时间差△t;根据公式①、②计算出被测距离,由显示装置显示出来。下面分别介绍各部分电路: 莅1 、超声波发射电路 螀超声波发射电路如图3所示,89C51 通过外部引脚P1.0 输出脉冲宽度为250 μ s , 40kHz 的10 个脉冲串通过超声波驱动电路以推挽方式加到超声波传感器而发 射出超声波。由于超声波的传播距离与它的振幅成正比,为了使测距范围足够远, 可对振荡信号进行功率放大后再加在超声波传感器上。 薈图3中T为超声波传感器,是超声波测距系统中的重要器件。利用逆压电效应 将加在其上的电信号转换为超声机械波向外辐射; 利用压电效应可以将作用在它 上面的机械振动转换为相应的电信号, 从而起到能量转换的作用。市售的超声 波传感器有专用型和兼用型,专用型就是发送器用作发送超声波,接收器用作接

51单片机超声波测距程序

//晶振:11.0592 //TRIG:P1.2 ECH0:P1.1 //波特率:9600 #include #include #include #define uchar unsigned char #define uint unsigned int sbit RX=P0^2; sbit TX=P0^3; unsigned int time=0; unsigned int timer=0; float S=0; bit flag =0; void Conut(void) { time=TH0*256+TL0; TH0=0; TL0=0; S=(time*1.87)/100; //算出来是CM if(flag==1) //超出测量 { flag=0; printf("-----\n"); } printf("S=%f\n",S); } void delayms(unsigned int ms) { unsigned char i=100,j; for(;ms;ms--) { while(--i)

{ j=10; while(--j); } } } void zd0() interrupt 1 //T0中断用来计数器溢出,超出测距范围{ flag=1; //中断溢出标志 } void StartModule() //T1中断用来扫描数码管和计800ms启动模块{ TX=1; //800MS启动一次模块 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); TX=0; } void main(void) { TMOD=0x21; //设T0为方式1,GATE=1; SCON=0x50; TH1=0xFD; TL1=0xFD; TH0=0; TL0=0;

超声波传感器的使用注意事项

探测范围和大小 要探测的物体大小直接影响超声波传感器的检测范围。传感器必须探测到一定声级的声音才可以进行输出。大部件能将大部分声音反射给超声波传感器,这样传感器即可在其最远传感距离检测到此部件。小部件仅能反射较少的一部分声音,从而导致传感范围大大缩小。 探测物体的特点 使用超声波传感器探测的理想物体应体积大、平整且密度高,并与变换器正面垂直。最难探测的物体是体积小且由吸音材料制成的物体,或者与变换器呈一定角度的物体。 如果液面静止且与传感器表面垂直,探测液体就很容易。如果液面波动大,可延长传感器的响应时间,从而取波动变化的平均值以获得更一致的读数。但是,超声波传感器还不能精确探测表面为泡沫状的液体,因为泡沫会使声音的传播方向发生偏离。这时可以使用超声波传感器的反向超声模式,探测形状不规则的物体。在反向超声模式下,超声波传感器会探测一个平整背景,如墙壁。任何穿过传感器和墙壁之间的物体都会阻断声波。传感器即可通过探测该干扰来识别物体的存在。 温度导致的衰减 传感器还设计了温度补偿功能,以调节环境温度的缓慢改变。但是,它不能调节温度梯度或环境温度的快速变化。 周围是否有振动 无论是传感器本身的振动还是附近机器的振动,都可能会影响测量距离时的精确度。可在安装传感器时用橡胶防振装置来减少这类问题。有时也可使用导轨来消除或降低部件振动。 环境导致的误测 附近的物体可能会反射声波。要准确探测目标物体,必须降低或消除附近声音反射表面的影响。为了避免误测附近物体,许多超声波传感器都装有LED指示灯,用于在安装时指示操作人员,以确保正确安装传感器并降低误测风险。 艾驰商城是国内最专业的MRO工业品网购平台,正品现货、优势价格、迅捷配送,是一站式采购的工业品商城!具有 10年工业用品电子商务领域研究,以强大的信息通道建设的优势,以及依托线下贸易交易市场在工业用品行业上游供应链的整合能力,为广大的用户提供了传感器、图尔克传感器、变频器、断路

超声波测距程序(详细C语言数码管显示)

超声波测距程序(详细C语言数码管显示) #include //头文件 #include// _nop_() 函数延时1US用 #include #include #define uchar unsigned char #define uint unsigned int #define nop _nop_() sbit csb=P1^0;//超声波发送端口为P1.0 sbit bai=P2^2;//数码管百位 sbit shi=P2^1;//数码管十位 sbit ge=P2^0;//数码管个位 uchar flag;//超声波接收标志 float juli1;//距离变量,用来数码管显示用 int juli; uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管0到9的代码 int xianshi[3]; void delayshow(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void ledshow(void) { xianshi[0]=juli/100; xianshi[1]=((juli%100)/10); xianshi[2]=juli%10; bai=0; P0=table[xianshi[0]]; delayshow(2); bai=1; delayshow(2); shi=0; P0=table[xianshi[1]]; delayshow(2); shi=1;

超声波传感器及其测距原理

安全避障是移动机器人研究的一个基本问题。障碍物与机器人之间距离的获得是研究安全避障的前提,超声波传感器以其信息处理简单、价格低廉、硬件容易实现等优点,被广泛用作测距传感器。本超声波测距系统选用了SensComp公司生产的Polaroid 6500系列超声波距离模块和600系列传感器,微处理器采用了ATMEL公司的AT89C51。本文对此超声波测距系统进行了详细的分析与介绍。 1、超声波传感器及其测距原理 超声波是指频率高于20KHz的机械波[1]。为了以超声波作为检测手段,必须产生超生波和接收超声波。完成这种功能的装置就是超声波传感器,习惯上称为超声波换能器或超声波探头。超声波传感器有发送器和接收器,但一个超声波传感器也可具有发送和接收声波的双重作用。超声波传感器是利用压电效应[1]的原理将电能和超声波相互转 化,即在发射超声波的时候,将电能转换,发射超声波;而在收到回波的时候,则将超声振动转换成电信号。 超声波测距的原理一般采用渡越时间法TOF(time of flight)[2]。首先测出超声波从发射到遇到障碍物返回所经历的时间,再乘以超声波的速度就得到二倍的

声源与障碍物之间的距离,即 1、硬件电路设计 我们设计的超声波测距系统由Polaroid 600系列传感器、Polaroid 6500系列超声波距离模块和AT89C51单片机构成。 2.1 Polaroid 600系列传感器 此超声波传感器是集发送与接收一体的一种传感器。传感器里面有一个圆形的薄片,薄片的材料是塑料,在其正面涂了一层金属薄膜,在其背面有一个铝制的后板。薄片和后板构成了一个电容器,当给薄片加上频率为49.4kHz、电压为300VAC pk-pk的方波电压时,薄片以同样的频率震动,从而产生频率为49.4kHz的超声波。当接收回波时,Polaroid 6500内有一个调谐电路,使得只有频率接近49.4kHz的信号才能被接收,而其它频率的信号则被过滤。 Polaroid 600超声传感器发送的超声波具有角度为30度的波束角[3],如图1所示:

单片机应用_超声波测距器

单片机课程设计 一、需求分析: 超声波测距器,可以应用于汽车倒车、建筑施工工地以及一些工业现场的位置监控,也可用于如液位、井深、管道长度的测量等场合。要求测量围在1m,测量精度1cm,测量时与被测物体无直接接触,能够清晰稳定地显示测量结果。由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人的研制上也得到了广泛的应用。 本文旨在设计一种能对中近距离障碍物进行实时测量的测距装置,它能对障碍物进行适时、适量的测量,起到智能操作,实时监控的作用。 关键词单片机AT82S51 超声波传感器测量距离 二、硬件设计方案 设计思路 超声波传感器及其测距原理 超声波是指频率高于20KHz的机械波。为了以超声波作为检测手段,必须产生超生波和接收超声波。完成这种功能的装置就是超声波传感器,习惯上称为超声波换能器或超声波探头。超声波传感器有发送器和接收器,但一个超声波传感器也可具有发送和接收声波的双重作用。超声波传感器是利用压电效应的原理将电能和超声波相互转化,即在发射超声波的时候,将电能转换,发射超声波;而在收到回波的时候,则将超声振动转换成电信号。

超声波测距的原理一般采用渡越时间法TOF(time of flight)。首先测出超声波从发射到遇到障碍物返回所经历的时间,再乘以超声波的速度就得到二倍的声源与障碍物之间的距离 测量距离的方法有很多种,短距离的可以用尺,远距离的有激光测距等,超声波测距适用于高精度的中长距离测量。因为超声波在标准空气中的传播速度为340米/秒,由单片机负责计时,单片机使用12.0M晶振,所以此系统的测量精度理论上可以达到毫米级。 由于超声波指向性强,能量消耗缓慢,在介质中传播距离远,因而超声波可以用于距离的测量。利用超声波检测距离,设计比较方便,计算处理也较简单,并且在测量精度方面也能达到要求。 超声波发生器可以分为两类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。本课题属于近距离测量,可以采用常用的压电式超声波换能器来实现。 根据设计要求并综合各方面因素,可以采用AT89S51单片机作为主控制器,用动态扫描法实现LED数字显示,超声波驱动信号用单片机的定时器完成,超声波测距器的系统框图如下图所示: 超声波测距器系统设计框图 主要由单片机系统及显示电路、超声波发射电路和超声波检测接收电路三部分组成。采用AT89S51来实现对CX20106A红外接收芯片和TCT40-10系列超声波转换模块的控制。单片机通过P1.0引脚经反相器来控制超声波的发送,然后单片机不停的检测INT0引脚,当INT0引脚的电平由高电平变为低电平时就认为超声波已经返回。计数器所计的数据就是超声波所经历的时间,通过换算就可以得到传感器与障碍物之间的距离。

高精度超声波测距系统设计

高精度超声波测距系统设计。 引言 利用超声波测量距离的原理可简单描述为:超声波定期发送超声波,遭遇障碍物时发生反射,发射波经由接收器接收并转化为电信号,这样测距技术只要测出发送和接收的时间差, 然后按照下式计算,即可求出距离: 由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求, 因此,广泛应用于倒车提醒、建筑工地、工业现场等的距离测量。目前的测距量程上能达到百米数量级,测量的精度往往能达到厘米数量级。本文在分析现有超声波测距技术基础之上, 给出了一种改进方案,测量精度可达毫米级。 2 系统方案分析与论证 2.1 影响精度的因素分析 根据超声波测距式(1)可知测距的误差主要是由超声波的传播速度误差和测量距离传播 的时间误差引起的。 对于时间误差主要由发送计时点和接收计时点准确性确定,为了能够提高计时点选择的准确性,本文提出了对发射信号和加收信号通过校正的方式来实现准确计时。此外,当要求测距误差小于 1 mm时,假定超声波速度C=344 m/s(20℃室温),忽略声速的传播误差。则测距误差s△t<0.000 002 907 s,即2.907 ms。根据以上过计算可知,在超声波的传播速度是准确的前提下,测量距离的传播时间差值精度只要在达到微秒级,就能保证测距误差小于1 mm的误差。使用的12 MHz晶体作时钟基准的89C51单片机定时器能方便的计数到1μs的精度,因此系统采用AT89S51的定一时器能保证时间误差在 1 mm的测量范围内。

超声波测距仪的设计说明

题目:超声波测距仪的设计 超声波测距仪的设计 一、设计目的: 以51单片机为主控制器,利用超声波模块HC-SR04,设计出一套可在数码管上实时显示障碍物距离的超声波测距仪。 通过该设计的制作,更为深入的了解51的工作原理,特别是51的中断系统及定时器/计数器的应用;掌握数码管动态扫描显示的方法和超声波传感器测距的原理及方法,学会搭建51的最小系统及一些简单外围电路(LED显示电路)。从中提高电路的实际设计、焊接、检错、排错能力,并学会仿真及软件调试的基本方法。 二、设计要求: 设计一个超声波测距仪。要求: 1.能在数码管上实时显示障碍物的实际距离; 2.所测距离大于2cm小于300cm,精度2mm。 三、设计器材: STC89C52RC单片机 HC-SR04超声波模块 SM410561D3B四位的共阳数码管 9014三极管(4) 按键(1) 电容(30PF2,10UF1) 排阻(10K),万用板,电烙铁,万用表,5V直流稳压电源,镊子,钳子,

导线及焊锡若干,电阻(200欧5)。 四、设计原理及设计方案: (一)超声波测距原理 超声测距仪是根据超声波遇到障碍物反射回来的特性进行测量的。超声波发射器向某一方向发射超声波,在发射同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即中断停止计时。通过不断检测产生波发射后遇到障碍物所反射的回波,从而测出发射超声波和接收到回波的时间差T,然后求出距离L。基本的测距公式为:L=(△t/2)*C 式中 L——要测的距离 T——发射波和反射波之间的时间间隔 C——超声波在空气中的声速,常温下取为344m/s 声速确定后,只要测出超声波往返的时间,即可求得L。 根据本次设计所要求的测量距离的围及测量精度,我们选用的是HC-SR04超声波测距模块。(如下图所示)。此模块已将发射电路和接收电路集成好了,硬件上不必再自行设计繁复的发射及接收电路,软件上也无需再通过定时器产生40Khz的方波引起压电陶瓷共振从而产生超声波。在使用时,只要在控制端‘Trig’发一个大于15us宽度的高电平,就可以在接收端‘Echo’等待高电平输出。单片机一旦检测到有输出就打开定时器开始计时。 当此口变为低电平时就停止计时并读出定时器的值,此值就为此次测距的时间,再根据传播速度方可算出障碍物的距离。 (二)超声波测距模块HC-SR04简要介绍 HC-SR04超声波测距模块的主要技术参数使用方法如下所述: 1. 主要技术参数: ①使用电压:DC5V ②静态电流:小于2mA ③电平输出:高5V

超声波传感器在使用中的常见问题及处理方法

超声波传感器应用起来原理简单,也很方便,成本也很低。但是目前的超声波传感器都有一些缺点,比如,反射问题,噪音,交叉问题。 反射问题 如果被探测物体始终在合适的角度,那超声波传感器将会获得正确的角度。但是不幸的是,在实际使用中,很少被探测物体是能被正确的检测的。其中可能会出现几种误差:三角误差、镜面反射、多次反射。 噪音 虽然多数超声波传感器的工作频率为40-45Khz,远远高于人类能够听到的频率。但是周围环境也会产生类似频率的噪音。比如,电机在转动过程会产生一定的高频,轮子在比较硬的地面上的摩擦所产生的高频噪音,机器人本身的抖动,甚至当有多个机器人的时候,其它机器人超声波传感器发出的声波,这些都会引起传感器接收到错误的信号。这个问题可以通过对发射的超声波进行编码来解决,比如发射一组长短不同的音波,只有当探测头检测到相同组合的音波的时候,才进行距离计算。这样可以有效的避免由于环境噪音所引起的误读。 交叉问题 交叉问题是当多个超声波传感器按照一定角度被安装在机器人上的时候所引起的。超声波X发出的声波,经过镜面反射,被传感器Z和Y获得,这时Z 和Y会根据这个信号来计算距离值,从而无法获得正确的测量。 艾驰商城是国内最专业的MRO工业品网购平台,正品现货、优势价格、迅捷配送,是一站式采购的工业品商城!具有10年工业用品电子商务领域研究,以强大的信息通道建设的优势,以及依托线下贸易交易市场在工业用品行业上游供应链的整合能力,为广大的用户提供了传感器、图尔克传感器、变频器、断路器、继电器、PLC、工控机、仪器仪表、气缸、五金工具、伺服电机、劳保用品等一系列自动化的工控产品。 如需进一步了解相关传感器产品的选型,报价,采购,参数,图片,批发等信息,请关注艾驰商城https://www.wendangku.net/doc/ec12576992.html,。

超声波测距C语言源程序代码

超声波测距C语言源程 序代码 文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]

/*{HZ即单位s的倒数}本晶振为12MHZ,因此外部的时钟频率为12MHZ,所以内部的时钟频率为(12M H Z)/12=1M H 即1000000HZ,而机械频率为1/(1MHZ),即每完成一次计算(即定时器的值加一)用时, 即1us(微秒).*/ /*************************************************************************** ********/ #include<> #define UC unsigned char #define UI unsigned int void delay(UI); sbit BX = P3^0;void TimeConfiguration(); a = 0; b = 0; c = 0; P2 =~ 0x00; goto loop; } time = TL0 + TH0*256; juli = ( int )( (time*/2 ); BAI = ( (juli%1000)/100 ); SHI = ( (juli%100)/10 ); GE = ( juli%10 ); /******************************************两种模式的距离显示 ********************************************/ if(juli > MAX) { Hong = 0; Lv = 1; while( t1-- ) { a = 0; b = 1; c = 1; P2 =~ CharacterCode[BAI]; delay(400); a = 1; b = 0; c = 1; P2 =~ CharacterCode[SHI]; delay(400); a = 1; b = 1; c = 0; P2 =~ CharacterCode[GE]; delay(390);

超声波传感器测量距离

一、超声波测距原理 超声波测距原理是通过超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播时碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为v ,而根据计时器记录的测出发射和接收回波的时间差△t ,就可以计算出发射点距障碍物的距离S ,即: S = v·△t /2 ① 这就是所谓的时间差测距法。 由于超声波也是一种声波, 其声速C与温度有关,表1列出了几种不同温度下的声速。在使用时,如果温度变化不大, 则可认为声速是基本不变的。常温下超声波的传播速度是334 米/秒,但其传播速度V 易受空气中温度、湿度、压强等因素的影响,其中受温度的影响较大,如温度每升高1 ℃, 声速增加约0. 6 米/ 秒。如果测距精度要求很高, 则应通过温度补偿的方法加以校正(本系统正是采用了温度补偿的方法)。已知现场环境温度T 时, 超声波传播速度V 的计算公式为: V = 331.45 + 0.607T ② 声 速 确 定 后, 只 要测得超声波往返的时间,即可求得距离。这就是超声波测距仪的机理。 二、系统硬件电路设计

图2 超声波测距仪系统框图 基于单片机的超声波测距仪框图如图2所示。该系统由单片机定时器产生40KHZ的频率信号、超声波传感器、接收处理电路和显示电路等构成。单片机是整个系统的核心部件,它协调和控制各部分电路的工作。工作过程:开机,单片机复位,然后控制程序使单片机输出载波为40kHz的10个脉冲信号加到超声波传感器上,使超声波发射器发射超声波。当第一个超声波脉冲群发射结束后,单片机片内计数器开始计数,在检测到第一个回波脉冲的瞬间,计数器停止计数,这样就得到了从发射到接收的时间差△t;根据公式①、②计算出被测距离,由显示装置显示出来。下面分别介绍各部分电路: 1 、超声波发射电路 超声波发射电路如图3所示,89C51通过外部引脚P1.0 输出脉冲宽度为250μs , 40kHz的10个脉冲串通过超声波驱动电路以推挽方式加到超声波传感器而发射出超声波。由于超声波的传播距离与它的振幅成正比,为了使测距范围足够远,可对振荡信号进行功率放大后再加在超声波传感器上。 图3中T为超声波传感器,是超声波测距系统中的重要器件。利用逆压电效应将加在其上的电信号转换为超声机械波向外辐射; 利用压电效应可以将作用在它上面的机械振动转换为相应的电信号, 从而起到能量转换的作用。市售的超声

用51单片机实现HC-SR04超声波测距程序

#include //包括一个52标准内核的头文件 #define uchar unsigned char //定义一下方便使用 #define uint unsigned int #define ulong unsigned long sbit Trig = P1^0; //产生脉冲引脚 sbit Echo = P3^2; //回波引脚 sbit test = P1^1; //测试用引脚 uchar code SEG7[10]={~0xC0,~0xF9,~0xA4,~0xB0,~0x99,~0x92,~0x82,~0xF8,~0x80,~0x90};//数码管0-9 uint distance[4]; //测距接收缓冲区 uchar ge,shi,bai,temp,flag,outcomeH,outcomeL,i; //自定义寄存器 bit succeed_flag; //测量成功标志 //********函数声明 void conversion(uint temp_data); void delay_20us(); void main(void) // 主程序 { uint distance_data,a,b; uchar CONT_1; i=0; flag=0; test =0; Trig=0; //首先拉低脉冲输入引脚 TMOD=0x11; //定时器0,定时器1,16位工作方式 TR0=1; //启动定时器0 IT0=0; //由高电平变低电平,触发外部中断 ET0=1; //打开定时器0中断 EX0=0; //关闭外部中断 EA=1; //打开总中断0 while(1) //程序循环 { EA=0; Trig=1; delay_20us(); Trig=0; //产生一个20us的脉冲,在Trig引脚 while(Echo==0); //等待Echo回波引脚变高电平 succeed_flag=0; //清测量成功标志 EX0=1; //打开外部中断 TH1=0; //定时器1清零 TL1=0; //定时器1清零 TF1=0; //

超声波传感器的设计与应用

传感器课程设计 (2010级) 题目:超声波传感器的设计与应用

学员:xxx 学号:201003011020 学员:xxx 学号:201003011027 学员:xxx 学号:201003011003

xxx 二〇一三年九月

目录 ...............................................................................................................................................第一章超声波传感器简介..................................................................................... 1.1超声波传感器是什么 (2) 1.2超声波传感器应用前景 (2) 第二章超声波传感器设计 (3) 2.1 设计目标描述 (3) 2.2 设计指标 (3) 2.3 传感器结构概述 (4) 2.4 传感器设计原理 (4) 2.4.1 物理部分设计 (4) 2.4.2 电路部分设计 (7)

第三章硬件设计 (8) 3.1 单片机设计 (8) 3.2 传感器设计 (11) 3.3 单片机与传感器连接 (12) 第四章软件设计 (13) 4.1 总体设计思路 (13) 4.2 软件程序 (13) 第五章测试结果与分析 (21) 第六章结论 (22) 参考文献 (24)

第一章超声波传感器的设计 1.1超声波传感器是什么 超声波传感器是利用超声波的特性研制而成的传感器。超声波是一种振动频率高于声波的机械波,由换能晶片在电压的激励下发生振动产生的,它具有频率高、波长短、绕射现象小,特别是方向性好、能够成为射线而定向传播等特点。超声波对液体、固体的穿透本领很大,尤其是在不透明的固体中,它可穿透几十米的深度。 超声波碰到杂质或分界面会产生显著反射形成反射成回波,碰到活动物体能产生多普勒效应。因此超声波检测广泛应用在工业、国防、生物医学等方面。 1.2超声波传感器应用前景 随着科学技术的快速发展,超声波将在传感器中的应用越来越广。 在人类文明的历次产业革命中,传感技术一直扮演着先行官的重要角色,它是贯穿各个技术和应用领域的关键技术,在人们可以想象的所

高精度超声波测距系统设计

高精度超声波测距系统设计 引言 利用超声波测量距离的原理可简单描述为:超声波定期发送超声波,遭遇障碍物时发生反射,发射波经由接收器接收并转化为电信号,这样测距技术只要测出发送和接收的时间差,然后按照下式计算,即可求出距离: 由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此,广泛应用于倒车提醒、建筑工地、工业现场等的距离测量。目前的测距量程上能达到百米数量级,测量的精度往往能达到厘米数量级。本文在分析现有超声波测距技术基础之上,给出了一种改进方案,测量精度可达毫米级。 2 系统方案分析与论证 2.1 影响精度的因素分析 根据超声波测距式(1)可知测距的误差主要是由超声波的传播速度误差和测量距离传播的时间误差引起的。 对于时间误差主要由发送计时点和接收计时点准确性确定,为了能够提高计时点选择的准确性,本文提出了对发射信号和加收信号通过校正的方式来实现准确计时。此外,当要求测距误差小于1 mm时,假定超声波速度C=344 m/s(20℃室温),忽略声速的传播误差。则测距误差s△t<0.000 002 907 s,即2.907 ms。根据以上过计算可知,在超声波的传播速度是准确的前提下,测量距离的传播时间差值精度只要在达到微秒级,就能保证测距误差小于1 mm的误差。使用的12 MHz晶体作时钟基准的89C51单片机定时器能方便的计数到1μs的精度,因此系统采用AT89S51的定一时器能保证时间误差在1 mm的测量范围内。

带温度补偿的超声波测距程序

/**程序:基于HC-SR04得超声波测距系统 *单片机型号:STC90C51612MHz *说明:开始连续进行7次超声波测距,每次测距间隔80ms, *完成后对7次结果排序并将最大得2个数值与最小得2个数值去除,对剩余得 *3个数值取平均值。完成后指示灯灭,输出结果到LCD1602上。测量超出范围则发出报警声、 *使用两个IO端口控制HC-SR04触发信号输入与回响信号输出, *以及一个T0定时器用于时间计数。 * 使用DS18B20测量环境温度,声速公式:V=334。1m/s+Temperature*0、61, *单片机晶振为12Mhz(11、953M),计数时为T=1us *计算公式:S=(334。1m/s+Temperature*0。61)*N*T/2,N为计数值=TH0*256+TL0*/ /*包含头文件*/ #include 〈reg51。h> #include 〈intrins。h> #define Delay4us(){_nop_();_nop_();_nop_();_nop_();} /*宏定义*/ #define uchar unsignedchar?//无符号8位 #define uint?unsigned int//无符号16位 #define ulongunsigned long ?//无符号32位 /*全局变量定义*/ sbit BEEP=P1^5;??//报警测量超出范围 sbit Trig=P3^4; //HC-SR04触发信号输入 sbitEcho=P3^2;?//HC—SR04回响信号输出 float xdataDistanceValue=0。0;?//测量得距离值 float xdata SPEEDSOUND; ??//声速 float xdataXTALTIME; ?//单片机计数周期 uchar xdata stringBuf[6];??//数值转字符串缓冲 //LCD1602提示信息 uchar codePrompts[][16]= { ?{"Measure Distance"}, //测量距离 {"-Out of Range -"}, //超出测量范围 ?{"MAX range400cm "}, //测距最大值400cm {”MIN range 2cm"},?//测距最小值2cm {”"},?//清屏 }; uchar xdata DistanceText[]="Range: ";//测量结果字符串 uchar xdata TemperatureText[]="Temperature:";//测量温度值 /*外部函数声明*/ extern voidLCD_Initialize(); //LCD初始化 extern void LCD_Display_String(uchar*, uchar); externvoid ReadTemperatureFromDS18B20(); extern int xdataCurTempInteger; void DelayMS(uint ms);?//毫秒延时函数 voidDelay20us(); //20微秒延时函数 voidHCSR04_Initialize();//HCSR04初始化 float MeasuringDistance();?//测量距离

超声波传感器原理

超声波传感器原理 [日期:2007-06-05]来源:作者:[字体:大中小]超声波发射原理是把铁磁材料置于交变磁场中,产生机械振动,发射出超声波。 接收原理是当超声波作用在磁致材料上时,使磁滞材料磁场变化,使线圈产生感应电势输出。 超声波传感器原理与应用 2008-04-1802:40

polaroid6500系列超声波距离模块的硬件电路如图2所示: tl851是一个经济的数字12步测距控制集成电路。内部有一个420khz的陶瓷晶振,6500系列超声波距离模块开始工作时,在发送的前16个周期,陶瓷晶振被8.5分频,形成49.4khz的超声波信号,然后通过三极管q1和变压器t1输送至超声波传感器。发送之后陶瓷晶振被4.5分频,以供单片机定时用。tl852是专门为接收超声波而设计的芯片。因为返回的超声波信号比较微弱,需要进行放大才能被单片机接收,tl852主要提供了放大电路,当tl852接收到4个脉冲信号时,就通过rec 给tl851发送高电平表明超声波已经接收。 2.3at89c51单片机 本系统采用at89c51来实现对polaroid600系列传感器和polaroid6500系列超声波距离模块的控制。单片机通过p1.0引脚经反相器来控制超声波的发送,然后单片机不停的检测int0引脚,当int0引脚的电平由高电平变为低电平时就认为超声波已经返回。计数器所计的数据就是超声波所经历的时间,通过换算就可以得到传感器与障碍物之间的距离。超声波测距的硬件示意图如图3所示:

3、系统软件设计 系统程序流程图如图4所示: 工作时,微处理器at89c51先把p1.0置0,启动超声波传感器发射超声波,同时启动内部定时器t0开始计时。由于我们采用的超声波传感器是收发一体的,所以在发送完16个脉冲后超声波传感器还有余震,为了从返回信号识别消除超声波传感器的发送信号,要检测返回信号必须在启动发射信号后2.38ms才可以检测,这样就可以抑制输出得干扰。当超声波信号碰到障碍物时信号立刻返回,微处理器不停的扫描int0引脚,如果int0接收的信号由高电平变为低电平,此时表明信号已经返回,微处理器进入中断关闭定时器。再把定时器中的数据经过换算就可以得出超声

超声波测距原理概述

基于51单片机的超声波测距系统 贾源 完成日期:2011年2月22日

目录 一、设计任务和性能指标 (2) 1.1设计任务 (2) 1.2性能指标 (2) 二、超声波测距原理概述 (3) 2.1超声波传感器 (4) 2.1.1超声波发生器 (4) 2.1.2压电式超声波发生器原理 (4) 2.1.3单片机超声波测距系统构成 (4) 三、设计方案 (5) 3.1AT89C2051单片机 (6) 3.2超声波测距系统构成 (7) 3.2.1超声波测距单片机系统 (8) 图3-1:超声波测距单片机系统 (8) 3.2.2超声波发射、接收电路 (8) 图3-1:超声波测距发送接收单元 (9) 3.2.3显示电路 (9) 四.系统软件设计 (10) 4.1主程序设计 (10) 4.2超声波测距子程序 (11) 4.3超声波测距程序流程图 (12) 4.4超声波测距程子序流程图 (13) 五.调试及性能分析 (13) 5.1调试步骤 (13) 5.2性能分析 (14) 六.心得体会 (14) 参考文献 (15) 附录一超声波测系统原理图 (17) 附录二超声波测系统原理图安装图 (18) 附录三超声波测系统原理图PCB图 (19) 附录四超声波测系统原理图C语言原程序 (20) 参考文献 (25)

一、设计任务和性能指标 1.1设计任务 利用单片机及外围接口电路(键盘接口和显示接口电路)设计制作一个超声波测距仪器,用LED数码管把测距仪距测出的距离显示出来。 要求用Protel 画出系统的电路原理图,印刷电路板,绘出程序流程图,并给出程序清单。 1.2性能指标 距离显示:用三位LED数码管进行显示(单位是CM)。 测距范围:25CM到 250CM之间。误差:1%。

超声波传感器选型要点与典型的应用举例

超声波传感器的基本原则 超声波传感器是利用传感器头部的压振陶瓷的振动,产生高频人耳听不见的声波来进行感应的,如果这声波碰到了某个物体,传感器就能接收到返回波。传感器通过声波的波长和发射声波以及接收到返回声波的时间差就能确定物体的距离,比较具有代表性的,一个传感器可以通过按钮的设定来拥有近距离和远距离两种设定,无论物体在那一种界限里,传感器都可以检测到。例如:超声波传感器可以安装在一个装液体的池子上,或者是一个装小球的箱子上,向这个容器发出声波,通过接收到返回波的时间长短就能确定这个容器是满的、空的或者是部分满的。 超声波传感器还有使用的是独立的发射器和接收器的型号,当检测缓慢移动的物体,或者需要快速响应或者在潮湿环境中应用时,这种对射示或者叫分离式的超声波传感器就非常适用。在检测透明物体、液体,检测光滑、粗糙和有光泽的,半透明材料的物体表面,和检测不规则物体时,超声波传感器都是首选。超声波传感器不适用的情况有:户外,极热的环境,有压力的容器内,同样不能检测有泡沫的物体。 超声波传感器选型要点: 范围和尺寸:被检测的物体的尺寸大小会影响超声波传感器的最大有效范围,传感器必须探测到一定级别的声波才能被激励输出信号https://www.wendangku.net/doc/ec12576992.html,,一个较大的物体可以将大部分声波反射给传感器,所以传感器可以在它的最大限度内对此物体进行感应,而一个小物体只能反射很少的声波,这样就明显地减小了感应的范围。 被测物:能运用超声波传感器进行检测的最理想的物体应该是大型、平坦、高密度的物体,垂直放置面对着传感器感应面。最难检测的是那些面积非常小,或者是可以吸收声波的材料制作的,比如泡沫塑料,或者是角面对着传感器的。一些比较困难被检测的物体可以先对物体的背景表面进行示教,再对放在传感器和背景之间的物体作出反应。 用于液体测量时需要要液体的表面垂直面对超声波传感器,如果液体的表面非常不平整,那么传感器的响应时间要调的更长一些,它会将这些变化做个平均,可以比较固定的读取。 在Retrosonic模式下使用超声波传感器,使得探测不规则物体也成为可能,在retrosonic模式下,超声波传感器可以先探测一个平整的背景,如一面墙,当任何物体通过传感器和墙之间的时候,就会阻碍声波,传感器感应到了中断,便会意识到出现了物体。 振动:无论是传感器本身还是周围机械的振动,都会影响距离测量的精确度,这时可以考虑采取一些减震措施,例如:用橡胶的抗震设备给传感器做一个底座,可以减少振动,用固定杆也可以消除或者最大程度的减少振动。 衰减:当周围环境温度缓慢变化的时候,有温度补偿的超声波传感器可以做出调整,但是如果温度变化过快,传感器将无法做出调整。 误判:声波可能会被附近的一些物体反射,比如导轨或者固定夹具,为了确保检测的可靠性,必须减少或者

stm32超声波测距程序

stm32超声波测距程序 单片机用的是STM32F103VC系列,超声波是淘宝买的一个模块,只有5个引脚,用起来很方便。 用的时候只需要其中4个脚,VCC,GND,TRIG,ECHO。 TRIG接PA8,OUT_PP模式;ECHO接PA9,IN_FLOATING模式。 #include "stm32f10x_heads.h" #include "HelloRobot.h" #include "display.h" void Tim2_Init(void); void TIM2_IRQHandler(void) { if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_12)==0) GPIO_SetBits(GPIOE,GPIO_Pin_12); else GPIO_ResetBits(GPIOE,GPIO_Pin_12); TIM_ClearFlag(TIM2, TIM_FLAG_Update); } int main(void) { u16 count; float length; BSP_Init(); Tim2_Init();//定时器初始化函数 LCM_Init(); delay_nms(5);

GPIO_ResetBits(GPIOA,GPIO_Pin_8); Display_List_Char(1,0,"distance:"); //PA8:Trig PA0:Echo while (1) { GPIO_SetBits(GPIOA,GPIO_Pin_8); delay_nus(20);//拉高超过10us,发射超声波 GPIO_ResetBits(GPIOA,GPIO_Pin_8); TIM2->CNT=0;//计数器清0 while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_9)==0);//等待ECHO脚高电平 TIM_Cmd(TIM2, ENABLE);// TIM2 enable counter [允许tim2计数] while((GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_9)==1)&&(TIM2->CNTARR-10)); TIM_Cmd(TIM2, DISABLE); count=TIM2->CNT;//ECHO脚低电平后读取计数器的值,从而算出往返时间 length=count/58.0; Display_List_Char(1,9," "); Display_List_Float(1,9,length); delay_nms(200); } } void Tim2_Init(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_DeInit(TIM2);//复位TIM2定时器

相关文档
相关文档 最新文档