arduino超声波基础

目录

超声波检测的总体设计... 1

超声波的定义... 1

超声波的物理特性... 1

超声波探头... 1

超声波检测硬件设计... 2

结构硬件选材... 2

HC-SR04超声波模块... 3

模块引脚... 3

模块原理图... 4

工作原理... 4

单片机主控模块... 5

超声波检测软件设计... 7

实物软件方案设计... 7

软件实施流程图:... 7

程序编写... 7

程序讲解... 8

迷你超声波检测的组装与调试... 11

电路设计... 11

器械清单... 12

原理图... 12

电路连接图... 13

硬件检测... 13

超声波单元检测... 14

整体电路调试... 14

      参考文献.... 16

 

 

 

超声波检测的总体设计

超声波的定义

波是由某一点开始的扰动所引起的,并按预定的方式传播或传输到其他点上。声波是一种弹性机械波。人们所感觉到的声音是机械波传到人耳引起耳膜振动的反应,能引起人们听觉机械波频率在20Hz-20KHz, 超声波是频率大于20KHz的机械波。在超声波测距系统中,用脉冲激励超声波探头的压电晶片,使其产生机械振动,这种振动在与其接触的介质中传播,便形成了超声波。

 

超声波的物理特性

(1)超声波的传播类似于光线,遵循几何光学的规律,具有反射、折射现象,也能聚焦,因此可以利用这些性质进行测量、定位、探伤和加工处理等。在传播中,超声波的速度与声波相同,通常情况下,声波在空气中的传播速度约为344m/s;

(2)超声波的波长很短,与发射器、接收器的几何尺寸相当,由发射器发射出来的超声波不向四面八方发散,而成为方向性很强的波束,波长愈短方向性愈强,因此超声用于探伤、水下探测,有很高的分辨能力,能分辨出非常微小的缺陷或物体;

(3)能够产生窄的脉冲,为了提高探测精度和分辨率。要求探测信号的脉冲极窄,但是一般脉冲宽度是波长的几倍(如要产生更窄的脉冲在技术上是有困难的),超声波波长短,因此可以作为窄脉冲的信号发生器。

(4)功率大,超声波能够产生并传递强大的能量。声波作用于物体时,物体的分子也要随着运动,其振动频率和作用的声波频率一样,频率越高,分子运动速度越快,物体获得的能量正比于分子运动速度的平方。超声频率高,故可以给出大的功率。

超声波探头

在超声波检测过程中发射和接收超声波的装置。探头的性能直接影响超声波的特性,影响超声波的检测性能。在超声检测中使用的探头,是利用材料的压电效应实现电能、声能转换的换能器。探头中的关键部件是晶片,晶片是一个具有压电效应的单晶或者多晶体薄片,它的作用是将电能和声能互相转换。

 

 

超声波检测硬件设计

结构硬件选材

器械

数量

Arduino Uno 板

          1个

超声波传感器

          1个

LED灯

          1个

面包板

          1个

杜邦线(公对公)

          一捆

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

HC-SR04超声波模块

HC-SR04超声波模块常用于机器人避障、物体测距、液位检测、公共安防、停车场检测等场所。HC-SR04超声波模块主要是由两个通用的压电陶瓷超声传感器,并加外围信号处理电路构成的。如图

 

模块引脚

超声波模块有4个引脚,分别为Vcc、  Trig(控制端)、  Echo(接收端)、 GND;其中VCC、GND接上5V电源, Trig(控制端)控制发出的超声波信号,Echo(接收端)接收反射回来的超声波信号。模块如图:

模块原理图

 

工作原理

1)采用IO触发测距,给至少10us的高电平信号。2)模块自动发送8个40KHz的方波,自动检测是否有信号返回。3)有信号返回,通过IO输出一高电平,高电平持续时间就是超声波从发射到返回的时间。只需要提供一个10uS以上脉冲触发信号,该模块内部将发出8个40kHz周期电平并检测回波。一旦检测到有回波信号则输出回响信号。回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。公式: uS/58=厘米或者uS/148=英寸;或是:距离=高电平时间*声速(340M/S) /2;建议测量周期为60ms以上,以防止发射信号对回响信号的影响。
注:
1、此模块不宜带电连接,若要带电连接,则先让模块的GND端先连接,否则会影响模块的正常工作。
2、测距时,被测物体的面积不少于05平方米且平面尽量要求平整,否则影响测量的结果。

 

 

 

 

 

单片机主控模块

本设计采用Atmel Atmega328微处理控制器,如图 4 其性能为: Digital I/O 数字输入/输出端共0~13。Analog I/0模拟输入/输出端共0~5。支持ISP下载功能。输入电压:接上电脑USB时无须外部供电,外部供电7V~12V直流电压输入。输出电压: 5V直流电压输出和3.3V直流电压输出。

 

Arduino实物图

 

超声波检测软件设计

实物软件方案设计

软件实施流程图:

程序编写

 

 

 

 

 

 

 

 

 

 

 

程序讲解

 

 

 

这个程序是在超声波的程序上进行了一点小的改变,首先将LED设置为8号引脚,并且使用pinMode()函数将其设置为输出,在程序中,变化的核心是程序最后的if..else函数,下面就介绍一下该函数。

 

通过if…else语句,用户可以让Arduino判断某一个条件是否达到,并且根据这一判断结果执行相应的程序。

Arduino

1

2

3

4

5

6

if( 表达式1 ) {

    语句块1

} else {

    语句块2

}

 

上述结构表示:如果 “表达式1” 的条件得到满足则执行“语句块1”。否则Arduino将执行“语句块2”。(如下图所示)

 

 

例:

 

if( a == 0 ) {

    digitalWrite(LEDpin, HIGH);

}else {

    digitalWrite(LEDpin, LOW);

}

 

在以上示例中,Arduino控制器通过判断变量a是否等于0,从而决定是否执行指令(点亮LED)

digitalWrite(LEDpin, HIGH);

假如变量a确实等于0,则执行这条指令。否则Arduino将不执行指令:(保持LED熄灭)

digitalWrite(LEDpin, LOW);

在这个示例中,if(a == 0)中的 == 是一种关系运算符号,和它相似的 = 是一种赋值符号,因此我们在使用的过程中切记不能使用错误。

除此之外//是我们常用的一种注释符号,通过这个可以让我们人为的理解但是程序不会执行出错

 

程序详解:

int trigPin = 11;    //Trig

int echoPin = 12;    //Echo

int LED = 8;         //全定义LED的数值为8


long duration, cm, inches;   //定义duration, cm, inches为长整型变量


void setup() {

  Serial.begin (9600); 

  pinMode(trigPin, OUTPUT);  //连接11引脚输出电压

  pinMode(echoPin, INPUT);   //连接12引脚输入电压

  pinMode(LED, OUTPUT);      //连接8引脚输出电压

  //Echo INPUT输入信号,Trig OUTPUT输出信号

}


void loop()

{



  // The sensor is triggered by a HIGH pulse of 10 or more microseconds.

  // Give a short LOW pulse beforehand to ensure a clean HIGH pulse:

  //这里是超声波模块的工作原理

  digitalWrite(trigPin, LOW);

  delayMicroseconds(5);     //间隔时间是可以改的,但是后文的算法你需要改变

  digitalWrite(trigPin, HIGH);

  delayMicroseconds(10);

  digitalWrite(trigPin, LOW); 


  duration = pulseIn(echoPin, HIGH);  //pulseIn是内置函数专门用来读取脉冲时间间隔


  // convert the time into a distance

  cm = (duration/2) / 29.1;           //超声波数据转换算法

  inches = (duration/2) / 74;

 

  Serial.print("inchi, ");

  Serial.print(inches);               //通过串口监视器观察inches

  Serial.print("cm");

  Serial.print(cm);

  Serial.println();

  if(cm < 10){                       //如果距离cm小于10

  digitalWrite(LED, HIGH);           //8引脚上的LED亮,注意LED要接一个电阻防止电流过大

  }

  else{

   digitalWrite(LED, LOW);           //否则输出低电压(熄灭)

  }

   delay(100);

}

 

 

 迷你超声波检测的组装与调试

电路设计

 

 

 

 

 

 

 

 

 

 

 

器械清单

器械

目录

超声波检测的总体设计

超声波的定义

超声波的物理特性

超声波探头

超声波检测硬件设计

结构硬件选材

HC-SR04超声波模块

模块引脚

模块原理图

工作原理

单片机主控模块

超声波检测软件设计

实物软件方案设计

软件实施流程图:

程序编写

程序讲解

 迷你超声波检测的组装与调试

电路设计

器械清单

原理图

电路连接图

硬件检测

超声波单元检测

整体电路调试


数量

Arduino Uno 板

          1个

超声波模块

          1个

LED灯

          1个

面包板

          1个

杜邦线(公对公)

          一捆

220Ω电阻

1个

 

 

 

 

 

 

 

 

 

 

 

 

 

原理图

 

 

 

电路连接图

 

 

硬件检测

确保线路连接正确后,上传程序,如若未能成功显示数据,查找原因是否为硬件损坏,更换装备后再次实验直到成功显示数据。对超声波检查完没有问题之后,我们通过主程序电路板来检查超声波是否能运行正常,串口监视器显示数据中没有出现乱码的现象显示出自己设定的数字,就代表没有任何异常。

 

 

 

 

超声波单元检测

 

 

检验超声波模块是否完好,实验成功后将会,在串口监视器中打印数据,通过if函数中的逻辑判断,观察实验结果。

 

 

整体电路调试

如果以上实验都成功了,可以试试搭建整体

 

 

 

 

参考文献

文中部分图片来自arduino中文社区,以下是官方地址

https://www.arduino.cn/forum.php

参考超声波模块知识借鉴于arduino中文社区

https://www.arduino.cn/thread-91829-1-1.html

  • 3
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RouDragon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值