问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Arduino UNO控制HC-SR04超声波传感器实现测距

创作时间:
作者:
@小白创作中心

Arduino UNO控制HC-SR04超声波传感器实现测距

引用
CSDN
1.
https://blog.csdn.net/weixin_45344328/article/details/123449535

超声波传感器是一种能够检测物体距离的传感器,广泛应用于机器人避障、液位测量等领域。本文将详细介绍如何使用Arduino UNO控制HC-SR04超声波传感器进行测距。

超声波的历史

超声波是指频率高于20000Hz的声波,人耳无法听到。1793年,意大利科学家斯帕拉捷通过蝙蝠实验首次揭示了超声波的存在。他发现蝙蝠即使在完全黑暗的环境中也能准确捕捉飞蛾,这启发了人们对超声波的研究。

HC-SR04超声波传感器

技术参数

  • 工作电压:直流(DC)5V
  • 工作电流:15mA
  • 工作频率:40Hz
  • 测量范围:2cm~4m
  • 测量角度:≤15度
  • 触发信号:10微秒(μs)的TTL脉冲
  • 输出信号:与射程成正比的TTL电平信号

工作原理

当传感器接收到触发信号时,会发出超声波脉冲。脉冲遇到障碍物后反射回来,被传感器接收。通过计算发射和接收之间的时间差,可以计算出距离。具体公式为:
[ \text{距离} = \frac{\text{时间} \times 340 \text{m/s}}{2} ]

实物搭建

所需材料

  • 面包板
  • Arduino UNO板(含USB连接线)
  • HC-SR04超声波传感器
  • 杜邦线若干

接线方式

HC-SR04超声波传感器
Arduino UNO板
GND
GND
VCC
5V
Trig
D2
Echo
D3

代码实现

#define Trig 2 //引脚Tring 连接 IO D2
#define Echo 3 //引脚Echo 连接 IO D3 
float cm; //距离变量
float temp; //存储回波

void setup() 
{
  Serial.begin(9600);
  pinMode(Trig, OUTPUT);
  pinMode(Echo, INPUT);
  pinMode(8,OUTPUT);
}

void loop() 
{
  //给Trig发送一个低高低的短时间脉冲
  digitalWrite(Trig, LOW); //给Trig发送一个低电平(初始化)
  delayMicroseconds(2);    //等待 2微妙
  digitalWrite(Trig,HIGH); //给Trig发送一个高电平
  delayMicroseconds(10);    //等待 10微妙
  digitalWrite(Trig, LOW); //给Trig发送一个低电平
  
  temp = float(pulseIn(Echo, HIGH)); //存储回波等待时间,
  //pulseIn函数会等待引脚变为HIGH,开始计算时间,再等待变为LOW并停止计时
  //返回脉冲的长度
  
  //声速是:340m/1s 换算成 34000cm / 1000000μs = 34 / 1000
  //因为发送到接收,是一来一回,我们只要单程就好了,所以➗2
  //距离(厘米)  =  (回波时间 * (34 / 1000)) / 2
  //简化后的计算公式为 (回波时间 * 17)/ 1000
  
  cm = (temp * 17 )/1000; //把回波时间换算成cm
 
  Serial.print("Echo =");
  Serial.print(temp);//串口输出等待时间的原始数据
  Serial.print(" | | Distance = ");
  Serial.print(cm);//串口输出距离换算成cm的结果
  Serial.println("cm");
}

通过以上步骤,你就可以使用Arduino UNO控制HC-SR04超声波传感器进行距离测量了。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号