单片机学习小组
直播中

遇鱼余的小白

12年用户 522经验值
私信 关注

如何实现超声波检测的总体设计?

如何实现超声波检测的总体设计?

回帖(1)

吴民峰

2022-1-24 14:15:26
超声波的定义

波是由某一点开始的扰动所引起的,并按预定的方式传播或传输到其他点上。声波是一种弹性机械波。人们所感觉到的声音是机械波传到人耳引起耳膜振动的反应,能引起人们听觉机械波频率在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判断某一个条件是否达到,并且根据这一判断结果执行相应的程序。
   


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函数中的逻辑判断,观察实验结果。


整体威廉希尔官方网站 调试

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




举报

更多回帖

发帖
×
20
完善资料,
赚取积分