为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

超声波

2011-05-27 11页 doc 216KB 30阅读

用户头像

is_784874

暂无简介

举报
超声波同类宝贝推荐 同类宝贝推荐 ¥2.00元 超声波升压中周 雷达测距中周 升压变压器 升压中周 ¥2.80元 12mm分体超声波收发器 传感器 超声波探头 T发 R收 成对卖 ¥1.75元 16mm分体超声波收发器 超声波传感器超声波探头 4元一对 ¥10.00元 18mm超声波传感器 防水型 收发一体化 直径18MM ¥35.00元 超声波传感器/超声波测距/超声波模块/带温度补偿 Arduino 小车 ¥48.00元 超声波模块 测距模块/传感器/双接口 UART模式|IO接口 ¥98.00元 5合1超声波模块/带温度补偿/...
超声波
同类宝贝推荐 同类宝贝推荐 ¥2.00元 超声波升压中周 雷达测距中周 升压变压器 升压中周 ¥2.80元 12mm分体超声波收发器 传感器 超声波探头 T发 R收 成对卖 ¥1.75元 16mm分体超声波收发器 超声波传感器超声波探头 4元一对 ¥10.00元 18mm超声波传感器 防水型 收发一体化 直径18MM ¥35.00元 超声波传感器/超声波测距/超声波模块/带温度补偿 Arduino 小车 ¥48.00元 超声波模块 测距模块/传感器/双接口 UART模式|IO接口 ¥98.00元 5合1超声波模块/带温度补偿/51系统板/供程序/原理图 皇冠 ¥2.00元 CX20106A 红外遥控接收,超声波传感器接收用芯片 本链接的模块是0-1500mm测量范围,测量周期10ms, 电路板尺寸 26.6*20.6MM     如果需要更远距离的模块请看: http://item.taobao.com/item.htm?id=6327465889   1、本模块性能稳定,测度距离精确。能和国外的SRF05,SRF02等超声波测距模块相媲美。模块高精度,首创无盲区(0cm开始测量),稳定的测距是此产品成功走向市场的有力保障 2 主要技术参数:    1:使用电压:DC3.8-5.5V      2:静态电流:小于8mA        3:输出TTL电平                        4:感应角度:不大于15度    5:探测距离:0cm-1500mm     6:高精度:3mm 接线方式,VCC、trig(控制端)、echo(接收端)、GND 本产品使用:TRIG端口发一个10US以上的0,当TRIG变成1时,超声波模块开始发射超声波,主控制板就可以在ECHO等待0输出.一有150us输出就示收到反射波,从TRIG=1到ECHO=0的时间就为此次测距的时间,可算出距离.如此不断的周期测,就可以达到你移动测量的值了~~  模块工作原理:  (1)采用IO触发测距,给TRIG至少10us的0信号;     (2)模块自动发送8个40khz的方波,自动检测是否有信号返回;  (3)有信号返回,通过ECHO输出一0信号,TRIG=1到ECHO持续的时间就是超声波从发射到返回的时间.测试距离=(高电平时间*声速(340M/S))/2;       (4)当TRIG从0->1时,主控制板启动一10ms定时器控制本次测量的超时控制,当超时10ms时ECHO仍然没有出现150us的0信号,表示没有障碍. 模块主要特点:   (1)超微型,只相当于两个发射,接收头的面积,已经没法再小了.        (2)无盲区(8mm内成三角形误差稍大).        (3)反应速度快,10ms的测量周期,不容易丢失高速目标.        (4)发射头,接收头紧靠,和被测目标基本成直线关系(8mm内还是大三角形,这个是发射,接收头的物理形状决定了).        (5)模块上有LED指示,方便观察和测试! 3:时序图(示波器截取) 计算方法:设Trig=1的时刻为t1(单位为ms),Echo=0的时刻为t2(单位为ms),超声波发射头和接收头的内部晶体和外体有一个固定距离,电路也有固定延迟,总延迟时间为250us,目标的距离=340*(t2-t2-0.25)/2,单位为毫米(mm),当目标距离在10mm范围内,发射头,接收头,和目标形成大三角形,测量误差大,因此10mm范围内可以当作0距离处理,>10mm范围时,基本是线性关系,按上述公式处理. 近距离时序图如下: 当距离较远时时序图如下: 1:超声波测距原理 超声波是一种频率比较高的声音,指向性强.超声波测距的原理是利用超声波在空气中的传播速度为已知,测量声波在发射后遇到障碍物反射回来的时间,根据发射和接收的时间差计算出发射点到障碍物的实际距离。由此可见,超声波测距原理与雷达原理是一样的。 测距的公式表示为:L=C×T 式中L为测量的距离长度;C为超声波在空气中的传播速度;T为测量距离传播的时间差(T为发射到接收时间数值的一半)。 已知超声波速度C=344m/s (20℃室温) 超声波传播速度误差 超声波的传播速度受空气的密度所影响,空气的密度越高则超声波的传播速度就越快,而空气的密度又与温度有着密切的关系,近似公式为:C=C0+0.607×T℃ 式中:C0为零度时的声波速度332m/s; T为实际温度(℃)。 对于超声波测距精度要求达到1mm时,就必须把超声波传播的环境温度考虑进去。 2:超声波模块使用方法 使TRIG=0,最少延迟10us的时间,然后TRIG=1,超声波模块此时开始启动一个测量周期,发射若干个40khz的声波,然后启动10ms的定时器等待反射波,如果收到反射波,模块的ECHO输出一个宽度为150us的负脉冲,从TRIG=1到ECHO=0的时间即为从发射到收到发射波的时间. 3:为什么距离最远只有1500mm? 本传感器专为智能小车等微型设备而设计,适合小范围,小空间,封闭空间的场合,大家知道,超声波传输速度低,衰减时间长,如果一味追求距离,就会导致响应时间长,丢失目标,在室内等封闭场合会形成多次发射震荡,传感器就无法正常工作了. 下面从传感器的反应时间来距离的问: 超声波空气中速度每秒约340米,折算成毫秒,就是340mm/ms,探测距离为1500mm的话,探测到回波的距离就是3000mm,超声波的传输时间是9ms,加上电路延迟,传感器的能量延迟,再预留一些保护时间(让上次超声波能量消失),每次测量时间就是10ms.10ms的反应速度对于智能小车来说是合适的,高速运动时不会丢失目标. 现在市面有一种传感器是5米,这个5米是最大距离,探测目标一般是墙面等大发射面,对于小目标是不可能达到的,先不管这个小目标到底是多少距离了,我们从传感器的反应时间来分析.这种传感器的时序跟我们的不同,它是先收到反馈然后再从Echo的脉宽上反馈出来的,而不是从echo和trig的时差来反馈的,这样传感器的反应时间又增加了一倍!这样5米传感器的反应时间最少是(上面计算1米的最少时间是6ms):5*6*2=60ms!就算最快60ms的测量周期,对于智能小车能应用已经太迟钝了!当主控CPU探测到目标时,小车恐怕已经撞上去了! 4:你的超声波发射和接收头靠的很近,为什么? 大家看到的超声波传感器一般发射和接收头分得比较开,是因为靠的越近发射头的横向波能量传递给接收头的越高,导致盲区变得很大,甚至无法正常工作,让发射头和接收头分开点是不得以而为之,这样带为的坏处是发射头,接收头和测量物体之间是三角形连接!很明显距离越近,三角形的角度就越大,这样就带来误差了.而本店传感器的发射头和接收头是紧密挨在一起的,和探测目标就是平行关系,而不是三角关系. 5:你的超声波模块真的无盲区? 千真万确!商品图片里带有示波器的截图,大家可以看到发射波和反射波的时间关系,反射波只有一个!本超声波传感器独创性的消除了横向干扰波,最小测量距离从0开始. 6:计算距离为什么要减去固定延迟? 超声波发射头和接收头的内部晶体和外体有一个固定距离,电路也有固定延迟,总延迟时间为250us,当减去这个250us延迟时程序要做一些容错判断,因为近距离(10mm内)误差较大(距离在10mm范围内,发射头,接收头,和目标形成大三角形,测量误差大),t2-t1非常接近250us时当作0距离处理,当t2-t1>250us时可线性处理. 7:不同物体测量距离不同? 对!因为超声波就是频率高些的声音,不同材料,形状的物体对声音的吸收率不同,反射角度不同,只有反射到接收头(也就是超声波发射的方向)的能量才会被探测到,所以不同物体测量的有效测量距离不同.一般来说,平面光滑的物体(如镜面)反射距离最远,通常说的最大探测距离指的就是这类物体,细小的物体探测距离很近很多,如细棉线,面积小,而且吸收声音,就探测不到. 下面列举实际物体的最大探测距离: 1.圆珠笔,200mm 2.手,400mm 3.1mm粗带塑料套的电线,30mm 4.游标卡尺,450mm 5.人体(穿厚衣服),400mm 6.墙面,1200mm(最大1500mm左右,需要垂直测量) 7.1mm粗细棉线,探测不到 8.竹牙签,40mm 8:有应用例程吗? 有,下面引用一个位网友的程序,用51单片机做的控制,功能是每隔12ms重复测量,并把测量结果发送到串口,在PC上用sscom32程序观察.在这个例子中,用到了两个IO,一个做输入,一个做输出,如果IO紧张,能不能用更少的IO呢?可以的,具体见下一个问答. #include "reg51.h" #include "sio.h" sbit TRIG = P2^7; sbit ECHO = P2^6; #define XTAL 19660800L #define PERIOD12MS (12L * XTAL / 12L / 256L / 1000L) #define DISTANCE_PARAM (XTAL / 10000L) void delay(unsigned int t) {     while(t--) ; } void main (void) {        EA = 0;     TMOD &= ~0x0F;      // clear timer 0 mode bits     TMOD |= 0x01;       // put timer 0 into MODE 1, 16bit     com_initialize ();    /* initialize interrupt driven serial I/O */     com_baudrate (14400); /* setup for 14400 baud */     EA = 1;                         // Enable Interrupts     while (1)     {         unsigned int distance;         unsigned char dh, dl; START:         TR0 = 0;         TH0 = 0;         TL0 = 0;         TRIG = 0;    //发出一个负脉冲,启动一个测量周期         delay(100);         TRIG = 1;    //开始测量         TR0 = 1;     //同时启动定时器0         while (ECHO) //监视ECHO信号         {             if (TH0 >= PERIOD12MS)  //一个测量周期超时                  goto START;          }         TR0 = 0;    //停止计时          //计算距离:为了提高精度,分母分子取合适的数值,定时器计数换算成时间*声速(340),得到以mm为单位         distance = ((TH1 * 256 + TL1) * 12L * 34L) / DISTANCE_PARAM / 2;         if (distance >= 30)             distance -= 30;         else             distance = 0;                         dh = distance >> 8;         dl = distance;         com_putchar(dh);         com_putchar(dl);         TR0 = 1;         while (TH0 < PERIOD12MS) ;  //保持大约12ms的测量周期     } } 9:IO紧张,可以用更少的IO吗? 可以,但需要理解,这一个IO是半双工操作的,也就是说,主控CPU输出的时候,模块只能输入,模块输出的时候,CPU只能输入,为了避免出错导致主控和模块同时输出,主控CPU的IO和模块的TRIG,ECHO之间串联一个合适的电阻保护,如1k,这样即使程序出错,硬件也不会损坏. 主控CPU----[1k电阻]-----TRIG,ECHO连接在一起. #include "reg51.h" #include "sio.h" sbit TRIG = P2^0;   //主控单片机的P2.0同时连接模块的TRIG,ECHO,中间串1k电阻 sbit ECHO = P2^0; #define XTAL 19660800L #define PERIOD12MS (12L * XTAL / 12L / 256L / 1000L) #define DISTANCE_PARAM (XTAL / 10000L) void delay(unsigned int t) {     while(t--) ; } void main (void) {        EA = 0;     TMOD &= ~0x0F;      // clear timer 0 mode bits     TMOD |= 0x01;       // put timer 0 into MODE 1, 16bit     com_initialize ();    /* initialize interrupt driven serial I/O */     com_baudrate (14400); /* setup for 14400 baud */     EA = 1;                         // Enable Interrupts     while (1)     {         unsigned int distance;         unsigned char dh, dl; START:         TR0 = 0;         TH0 = 0;         TL0 = 0;         TRIG = 0;    //发出一个负脉冲,启动一个测量周期         delay(100);         TRIG = 1;    //开始测量         TR0 = 1;     //同时启动定时器0         while (ECHO) //监视ECHO信号         {             if (TH0 >= PERIOD12MS)  //一个测量周期超时                  goto START;          }         TR0 = 0;    //停止计时          //计算距离:为了提高精度,分母分子取合适的数值,定时器计数换算成时间*声速(340),得到以mm为单位         distance = ((TH1 * 256 + TL1) * 12L * 34L) / DISTANCE_PARAM / 2;         if (distance >= 30)             distance -= 30;         else             distance = 0;                         dh = distance >> 8;         dl = distance;         com_putchar(dh);         com_putchar(dl);         TR0 = 1;         while (TH0 < PERIOD12MS) ;  //保持大约12ms的测量周期     } } 10:需要更短周期的测量,可以吗? 可以,模块只捕获第一个反射信号,ECHO输出(150us脉冲)后马上等待下一个测量命令(TRIG上的脉冲),如果主控CPU监控ECHO的电平信号,在ECHO从0变到1后马上就可以进行下一轮测量了,而不必等到10ms后再进行测量.但需要注意:超声波有可能多次来回发射(在被测物体距离很近或很封闭的空间),连续测量如果碰到这种场合就有可能收到错误的信号,导致测得的距离不准确了. 11:抗干扰性如何? 抗干扰性能比较强.设计上有几个措施:1.尽量降低输入阻抗,阻抗越高越容易引入干扰;2.模块设计的距离比较近,信号放大倍数只满足此距离;3.一般干扰源离模块越近,越容易干扰,模块对近距离的信号进行了衰减.经实际测试,模块对近距离的噪音(击掌,口哨,音频喇叭)干扰不产生动作,但较强机械震动有时会产生干扰(有较强谐波,含40khz成分),因此超声波模块避免跟可能产生振动的物体硬连接,中间可以用橡胶等减震,这样就能可靠工作了. 12:探测角度? 近距离探测角度比较大,约60度,越远距离,探测角度越小,最远处接近0度. 13:模块有其他接口方式吗? 有.另有TTL串口模式,其他如IIC、SPI可以定做,但最常用的是IO和TTL接口方式,具体咨询店主
/
本文档为【超声波】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索