HC-SR06超声波测距传感器付程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
超声波测距传感器SDM-IO
本模块最远测试距离是1500mm,测量周期10ms专为小车设计。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
模块主要特点:
(1)超微型,只相当于两个发射,接收头的面积,已经没法再小了.
(2)无盲区(8mm内成三角形误差稍大).
(3)反应速度快,10ms的测量周期,不容易丢失高速目标。
(4)发射头,接收头紧靠,和被测目标基本成直线关系(8mm内还是大三角形,这个是发射,接收头的物理形状决定了).
(5)模块上有LED指示,方便观察和测试!
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 XTAL19660800L
#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 timer0mode bits
TMOD|=0x01;//put timer0into MODE1,16bit
com_initialize();/*initialize interrupt driven serial I/O*/
com_baudrate(14400);/*setup for14400baud*/
EA=1;//Enable Interrupts
while(1)
{