Arduino UNO控制HC-SR04超声波实现(测距)及对超声波的认识

一、奇葩的开始(如有不适,自觉跳过)

最近,我们学校开设了一门关于传感器的课程,这门课程虽然时间紧凑,但它的内容丰富而精彩。老师从物联网的基础概念讲起,延伸到传感器的广泛应用,以及它们之间的紧密联系。这些内容让我感到既新奇又兴奋,仿佛揭开了科技世界的神秘面纱。

尽管课程时间有限,但我在课余时间也一直在自学传感器相关的知识,主要是一些开源硬件。我意识到,学习这些技术不仅是为了激发我对嵌入式单片机的兴趣,更是为了我未来的职业发展打下坚实的基础。虽然我没有深入研究传感器的原理,但我一直保持着对它们的好奇和探索。

最近,老师提议我们班分成几个小组,各自介绍不同类型的传感器。我准备了一晚上,选择了“超声波传感器”作为我的介绍主题。在搜集资料的过程中,我深感自己之前对硬件的了解太过肤浅,错过了许多深入探索的机会。直到我真正开始深入了解,才发现传感器的世界是如此的丰富多彩。

第二天,由于时间限制,我的介绍并没有达到预期的效果。但这次经历让我意识到,只有全面地分享自己的认识,才能真正地传达知识。因此,我决定利用CSDN这个平台,分享我对超声波传感器的初步理解。如果大家有任何建议或补充,欢迎在评论区留下你的想法,或者通过私信与我交流。我期待与大家一起学习,共同进步。
自己做的超声波测距

二、发现超声波(历史)

还记得初中物理课本上讲关于声音的产生及传播吗?

声音是由物体振动产生的声波,振动停止发声也停止,发声的物体叫声源。声音可以通过固体、液体、气体这些介质传播。但是声音不能在真空中传播,因为真空中没有声音传播所需用的介质。

有种回到了初中物理课堂的感觉!

声音是由物体振动产生的声波,声波的计量单位为频率,是指声波每秒钟振动的次数,称为赫兹(Hz)。
听觉频率与发声频率
人耳所能听到的声波频率为20Hz~20000Hz之间,
次声波与超声波
小于20Hz,称之为“次声波”,大于20000Hz,称之为超声波,人耳均无法听见。

而我今天要给大家讲的就是我们所听不见的超声波,讲到超声波,就不得不提到一位著名的科学家,他就是拉扎罗·斯帕拉捷(下图)

拉扎罗·斯帕拉捷
斯帕拉捷是意大利著名的博物学家、生理学家和实验生理学家,他最卓越的贡献就是蝙蝠实验
*
*
*

1、蝙蝠实验《夜晚的实验》

《夜晚的实验》

1793年夏天,一个晴朗的夜晚,喧腾热闹的城市渐渐平静下来。斯帕拉捷匆匆吃完饭,便走出街口,把笼子里的蝙蝠放了出去。当他看到放出去的几只蝙蝠轻盈敏捷地来回飞翔时,不由得尖叫起来。因为那几只蝙蝠,眼睛全被他蒙上了,都是“瞎子”。
斯帕拉捷为什么要把蝙蝠的眼睛蒙上呢?原来,每当他看到蝙蝠在夜晚自由自在的飞翔时,总认为这些小精灵一定长着一双特别敏锐的眼睛,假如他们的眼睛瞎了,就不可能在黑夜中灵巧的躲过各种障碍物,并且敏捷的捕捉飞蛾了。然而事实完全出乎他的意料。斯帕拉捷很奇怪:不用眼睛,蝙蝠凭什么来辨别前方的物体,捕捉灵活的飞蛾呢?
于是,他把蝙蝠的鼻子堵住。结果,蝙蝠在空中还是飞的那么敏捷、轻松。“难道他薄膜似的翅膀,不仅能够飞翔,而且能在夜间洞察一切吗?”斯帕拉捷这样猜想。他又捉来几只蝙蝠,用油漆涂满它们的全身,然而还是没有影响到它们飞行。
最后,斯帕拉捷堵住蝙蝠的耳朵,把他们放到夜空中。这次,蝙蝠可没有了先前的神气。他们像无头苍蝇一样在空中东碰西撞,很快就跌落在地。
啊!蝙蝠在夜间飞行,捕捉食物,原来是靠听觉来辨别方向、确认目标的!
斯帕拉捷的实验,揭开了蝙蝠飞行的秘密,促使很多人进一步思考:蝙蝠的耳朵又怎么能“穿透”黑夜,“听”没有声音的物体呢?
蝙蝠依靠喉咙发出**超声波**

后来人们继续研究,终于弄清了其中的奥秘。原来,蝙蝠靠喉咙发出人耳听不到的“超声波”,这种声音沿着直线传播,一碰到物体就像光照到镜子上那样反射回来。蝙蝠用耳朵接受到这种“超声波”,就能迅速做出判断,灵巧的自由飞翔,捕捉食物。

到19世纪末20世纪初,居里兄弟(下图)发现了晶体正压电效应与逆压电效应,由此才造出了属于人类自己的超声波
居里兄弟
机械能与电能之间的相互转换
机械能与电能之间的相互转换(上图)
正压电效应:某些晶体材料在交变拉压应力作用下,产生交变电场的效应称 之为正压电效应。(就是机械能转换成电能
逆压电效应:当晶体材料在交变电场作用下,产生伸缩变形的效应称为逆压电效应。(就是电能转换成机械能
当然,这两者都可以称之为“压电效应”。

三、HC-SR04超声波传感器

在这里插入图片描述

硬件名称HC-SR04超声波传感器
工作电压直流(DC):5V
工作电流15mA
工作频率40HZ
射程范围2厘米(cm)~4米(m)
测量角度<=15度
输入触发信号10微妙(uS)的TTL脉冲
输出回响信号输出TTL电平信号与射程成正比
(下图)是超声波传感器的“探头”结构:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
超声波传感器就是由这两个超声波探头和放大电路(放大电信号)等组成的。

1、原理

那么HC-SR04超声波传感器是如何实现测量距离的功能的呢?
在这里插入图片描述
当有脉冲电压触发时(就是控制板给Trig引脚发送高电频),探头里的晶片就会振动,继而产生超声波。超声波在空气中传播,当超声波遇到物体后就会返回,被超声波传感器的接收探头接收到(反射的超声波使压电晶片振动,继而在压电晶片两端产生电压。)随后这种电压经过超声波内部的信号放大电路,将电压信号放大,此时Echo引脚给控制板发送高电频信号。
这样一个由发送到接受的过程,经过计算就可以得出距离。
根据声音在空气中传播的速度:340m/s,可以得出
公式:距离=(时间*340m/s)➗2
(÷2,是因为往返的原因)
在这里插入图片描述

四、实物搭建

了解了上面的原理我们开始制作吧!!!

1、材料:

1、面包板

2、Arduino UNO板(含USB连接线)

3、HC-SR04超声波传感器

4、杜邦线(若干)

I/O表:

HC-SR04超声波传感器Arduino UNO板
GNDGND
VCC5v
TrigD2
EchoD3

接线图:
在这里插入图片描述

五、测距(代码部分)

在这里插入图片描述

#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");
}

效果是这样的在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值