一、简介
如图所示超声波传感器实物图和测距原理,HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测距精度可达3mm,包括发射器、接收器与控制电路,它是一种压电式传感器,利用电致伸缩现象而制成。
电气参数:
电气参数 | HCSR04超声波模块 |
VCC | DC 5V |
工作电流 | 15mA |
工作频率 | 40KHz |
最远射程 | 4m |
最近射程 | 2cm |
测量角度 | 15° |
输入触发信号 | 10us的TTL脉冲 |
输出回响信号 | 输出TTL电平信号,与射程成比例 |
工作原理
物理原理就是发出超声波,遇到物体后反射到接收端子,接收端子接收信号后测量出距离值
对应到超声波模块的工作原理如下,可以先看下超声波的时序图
图中我们可以大致看出,要使用HCSR04这个超声波模组,我们必须先给超声波发送一个触发信号,引导超声波内部循环发出8个40Khz的脉冲然后输出回响信号引脚上拉为高电平,然后我们利用超声波回响信号引脚的高电平所得计数时间经过相关运算就可以得到对应的距离,具体公式如下:
测试距离 = (高电平时间声速(340M/S)/2)= ((float)t/58.0)
这个公式的具体换算过程,大家可以用以前学过的知识进行还算下,最后得到的距离单位是厘米。
下面放一张超声波的引脚功能示意图,能更好的理解HCSR04的具体使用和接线在代码中
二、接线
本文是以Arduino UNO为示例进行演示,对应接线如下:
HCSR04超声波传感器 | Arduino UNO |
工作电压 | 5V |
GND | GND |
Echo | 8 |
Trig | 9 |
三、程序
const int EchoPin = 8; //超声波信号输入
const int TrigPin = 9; //超声波控制信号输出
int currDist = 0; // 距离
void setup() {
pinMode(EchoPin, INPUT); //声明各引脚模式
pinMode(TrigPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
currDist = MeasuringDistance(); //读取前端距离
Serial.println(currDist);
}
//测量距离 单位厘米
long MeasuringDistance(){
long duration;
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH); //输出高电平,延时10ms
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
duration = pulseIn(EchoPin, HIGH); //接受返回信号
return duration /58; //计算距离
}