1#
发表于 2015-12-10 15:46:59
一、器件介绍
(1)器件名称:
HC-SR04超声波测距模块
(2)主要技术参数:
1、使用电压:DC5V;
2、静态电流:小于2mA;
3、电平输出:高5V;
4、电平输出:底0V;
5、感应角度:不大于15度;
6、探测距离:2cm-450cm 7:高精度可达0.2cm;
7、接线方式,VCC、trig(控制端)、echo(接收端)、GND。
(3)工作原理:
1、采用IO触发测距,给至少10us的高电平信号;
2、模块自动发送8个40khz的方波,自动检测是否有信号返回;
3、有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时
间。测试距离=(高电平时间*声速(340M/S))/2。
超声波传感器主要利用多普勒原理,通过晶振向外发射超过人体能感知的高频超声波,
一般典型的选用25~40kHz波,然后控制模块检测反射回来波的频率,如果区域内有物体运动,反射波频率就会有轻微的波动,即多普勒效应,以此来判断照明区域的物体移动,从而达到控制开关的目的。
超
声波的纵向振荡特性,可以在气体、液体及固体中传播且其传播速度不同;它还有折射和反射现象,在空气中传播其频率较低,衰减较快,而在固体、液体中则衰减
较小,传播较远。超声波传感器正是利用超声波的这些特性。超声波传感器有敏感范围大,无视觉盲区,不受障碍物干扰等特点,这项技术已经在商业和安全领域被
使用25年多了,已经被证明是检测小物体运动最有效的方法。 ULTD5N-350超声波测距模块,可提供3cm--3.5m的非接触式距离感测功能,该模块包括了超声波发射器、接收器与控制电路。其基本工作原理为给予此超声波测距模块一触发信号后发射超声波,当超声波投射到物体而反射回来时,模块输出一回响信号,以触发信号和回响信号间的时间差,来判定物体的距离。[size=+0]
(4)应用产品领域:
飞行器测距、机器人避障、公共安防、停车场检测等。
(5)管脚图:
(4)运行代码:
const int echopin=5; // echo接5端口
const int trigpin=4; // trig接4端口 左侧超声波测距器
const int echopin2=3;
const int trigpin2=2;// 右侧超声波测距器
const int echopin3=6;
const int trigpin3=7;// 前方超声波测距器
void setup()
{
Serial.begin(9600);
pinMode(echopin,INPUT); //设定echo为输入模式
pinMode(trigpin,OUTPUT);//设定trig为输出模式
pinMode(echopin2,INPUT);
pinMode(trigpin2,OUTPUT);
pinMode(echopin3,INPUT);
pinMode(trigpin3,OUTPUT);
}
void loop()
{
// *********************************** 左方测距******/
digitalWrite(trigpin,LOW);
delayMicroseconds(2);
digitalWrite(trigpin,HIGH);
delayMicroseconds(10);
digitalWrite(trigpin,LOW); //发一个10ms的高脉冲去触发TrigPin
float distanceL = pulseIn(echopin,HIGH);//接收高电平时间
distanceL = distanceL/58.0;//计算距离
Serial.print("distanceL : "); //输出距离
Serial.print(distanceL);
Serial.println("cm"); //输出单位
delay(100); //间隔100uS
/*******************右方测距******************************************/
digitalWrite(trigpin2,LOW);
delayMicroseconds(2);
digitalWrite(trigpin2,HIGH);
delayMicroseconds(10);
digitalWrite(trigpin2,LOW); //发一个10ms的高脉冲去触发TrigPin
float distanceR = pulseIn(echopin2,HIGH);//接收高电平时间
distanceR = distanceR/58.0;//计算距离
Serial.print("distanceR : ");
Serial.print(distanceR);
Serial.println("cm");
// *******************前方测距********************************************/
digitalWrite(trigpin3,LOW);
delayMicroseconds(2);
digitalWrite(trigpin3,HIGH);
delayMicroseconds(10);
digitalWrite(trigpin3,LOW); //发一个10ms的高脉冲去触发TrigPin
float distanceF = pulseIn(echopin3,HIGH);//接收高电平时间
distanceF = distanceF/58.0;//计算距离
Serial.print("distance3 : ");
Serial.print(distanceF);
Serial.println("cm");
delay(100); //循环间隔100uS
}
(7)时序波形图:
从上面的模块时序图可以看出,只需要提供一个短期的10uS脉冲触发信号,超声波即可进行距离测量工作。
该模块被触发后,超声波发射头将发出8个40kHz周期电平,同时检测回波。一旦检测到有回波信号则输出回响信号。
回响信号是一个脉冲的宽度成正比的距离对象。可通过发射信号到收到的回响信号时间间隔可以计算得到距离。
公式: uS/58=厘米;或者uS/148=英寸。
建议测量周期为60ms 以上,以防止发射信号对回响信号的影响。
|