一、简介

如图所示超声波传感器实物图和测距原理,HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测距精度可达3mm,包括发射器、接收器与控制电路,它是一种压电式传感器,利用电致伸缩现象而制成。

mPython超声波代码 超声波arduino_Arduino

电气参数:

电气参数

HCSR04超声波模块

VCC

DC 5V

工作电流

15mA

工作频率

40KHz

最远射程

4m

最近射程

2cm

测量角度

15°

输入触发信号

10us的TTL脉冲

输出回响信号

输出TTL电平信号,与射程成比例

工作原理

物理原理就是发出超声波,遇到物体后反射到接收端子,接收端子接收信号后测量出距离值

mPython超声波代码 超声波arduino_mPython超声波代码_02


对应到超声波模块的工作原理如下,可以先看下超声波的时序图

mPython超声波代码 超声波arduino_超声波测距_03


图中我们可以大致看出,要使用HCSR04这个超声波模组,我们必须先给超声波发送一个触发信号,引导超声波内部循环发出8个40Khz的脉冲然后输出回响信号引脚上拉为高电平,然后我们利用超声波回响信号引脚的高电平所得计数时间经过相关运算就可以得到对应的距离,具体公式如下:

测试距离 = (高电平时间声速(340M/S)/2)= ((float)t/58.0)

这个公式的具体换算过程,大家可以用以前学过的知识进行还算下,最后得到的距离单位是厘米。

下面放一张超声波的引脚功能示意图,能更好的理解HCSR04的具体使用和接线在代码中

mPython超声波代码 超声波arduino_Arduino_04

二、接线

本文是以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; //计算距离
}