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

目录:

  • 一、奇葩的开始(如有不适,自觉跳过)
  • 二、发现超声波(历史)
    • 1、蝙蝠实验《夜晚的实验》
  • 三、HC-SR04超声波传感器
    • 1、原理
  • 四、实物搭建
    • 1、材料:
  • 五、测距(代码部分)

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

最近我们学校有一个关于传感器的课程,怎么说呢,挺不错的吧,就是时间太少了,没有足够的时间去更多的了解传感器,老师从物联网讲到传感器,还有一些这两者之间的关系啊等等,感觉挺高大上的,我一直也有在课余时间学习关于传感器的相关知识,不过都是一些开源硬件吧!自我感觉也没有多么高大上,学习这些东西主要一方面是为了提高自己对嵌入式单片机的兴趣,再者就是为自己以后就业做必要的准备,也没有过深的学习传感器的原理。

不过最近这位老师说让我们班建立几个小组来介绍传感器,内容不限,种类不限,我准备了一晚上,准备介绍的是“超声波传感器”,在找资料的过程中,我真的觉得之前自己那么草率的对待所学硬件是非常可惜的,有很多好“风景”都被我错过了,我一直没有过多去深入了解传感器,直到深入去了解,才发现黄金屋。

第二天,由于时间原因没有按照预期达成想要的效果!

不过那一天过后,自己也分析了原因,还是要全讲出来才好,所以今天就准备借着CSDN这个平台来谈谈我对超声波浅薄的认识,如果有什么不对的地方或者需要补充的地方,可以留言或者私信,向大家请教问题!

二、发现超声波(历史)

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

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

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

声音是由物体振动产生的声波,声波的计量单位为频率,是指声波每秒钟振动的次数,称为赫兹(Hz)。
Arduino UNO控制HC-SR04超声波实现(测距)及对超声波的认识_第1张图片
人耳所能听到的声波频率为20Hz~20000Hz之间,
Arduino UNO控制HC-SR04超声波实现(测距)及对超声波的认识_第2张图片
小于20Hz,称之为“次声波”,大于20000Hz,称之为超声波,人耳均无法听见。

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

Arduino UNO控制HC-SR04超声波实现(测距)及对超声波的认识_第3张图片
斯帕拉捷是意大利著名的博物学家、生理学家和实验生理学家,他最卓越的贡献就是蝙蝠实验
*
*
*

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

Arduino UNO控制HC-SR04超声波实现(测距)及对超声波的认识_第4张图片

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

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

到19世纪末20世纪初,居里兄弟(下图)发现了晶体正压电效应与逆压电效应,由此才造出了属于人类自己的超声波

Arduino UNO控制HC-SR04超声波实现(测距)及对超声波的认识_第6张图片
机械能与电能之间的相互转换(上图)
正压电效应:某些晶体材料在交变拉压应力作用下,产生交变电场的效应称 之为正压电效应。(就是机械能转换成电能
逆压电效应:当晶体材料在交变电场作用下,产生伸缩变形的效应称为逆压电效应。(就是电能转换成机械能
当然,这两者都可以称之为“压电效应”。

三、HC-SR04超声波传感器

Arduino UNO控制HC-SR04超声波实现(测距)及对超声波的认识_第7张图片

硬件名称 HC-SR04超声波传感器
工作电压 直流(DC):5V
工作电流 15mA
工作频率 40HZ
射程范围 2厘米(cm)~4米(m)
测量角度 <=15度
输入触发信号 10微妙(uS)的TTL脉冲
输出回响信号 输出TTL电平信号与射程成正比

(下图)是超声波传感器的“探头”结构:
Arduino UNO控制HC-SR04超声波实现(测距)及对超声波的认识_第8张图片
Arduino UNO控制HC-SR04超声波实现(测距)及对超声波的认识_第9张图片Arduino UNO控制HC-SR04超声波实现(测距)及对超声波的认识_第10张图片
超声波传感器就是由这两个超声波探头和放大电路(放大电信号)等组成的。

1、原理

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

四、实物搭建

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

1、材料:

1、面包板

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

3、HC-SR04超声波传感器

4、杜邦线(若干)

I/O表:

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

接线图:
Arduino UNO控制HC-SR04超声波实现(测距)及对超声波的认识_第13张图片

五、测距(代码部分)

Arduino UNO控制HC-SR04超声波实现(测距)及对超声波的认识_第14张图片

#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超声波实现(测距)及对超声波的认识_第15张图片
Arduino UNO控制HC-SR04超声波实现(测距)及对超声波的认识_第16张图片

你可能感兴趣的:(单片机)