完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
超声波的定义
波是由某一点开始的扰动所引起的,并按预定的方式传播或传输到其他点上。声波是一种弹性机械波。人们所感觉到的声音是机械波传到人耳引起耳膜振动的反应,能引起人们听觉机械波频率在20Hz-20KHz, 超声波是频率大于20KHz的机械波。在超声波测距系统中,用脉冲激励超声波探头的压电晶片,使其产生机械振动,这种振动在与其接触的介质中传播,便形成了超声波。 超声波的物理特性 (1)超声波的传播类似于光线,遵循几何光学的规律,具有反射、折射现象,也能聚焦,因此可以利用这些性质进行测量、定位、探伤和加工处理等。在传播中,超声波的速度与声波相同,通常情况下,声波在空气中的传播速度约为344m/s; (2)超声波的波长很短,与发射器、接收器的几何尺寸相当,由发射器发射出来的超声波不向四面八方发散,而成为方向性很强的波束,波长愈短方向性愈强,因此超声用于探伤、水下探测,有很高的分辨能力,能分辨出非常微小的缺陷或物体; (3)能够产生窄的脉冲,为了提高探测精度和分辨率。要求探测信号的脉冲极窄,但是一般脉冲宽度是波长的几倍(如要产生更窄的脉冲在技术上是有困难的),超声波波长短,因此可以作为窄脉冲的信号发生器。 (4)功率大,超声波能够产生并传递强大的能量。声波作用于物体时,物体的分子也要随着运动,其振动频率和作用的声波频率一样,频率越高,分子运动速度越快,物体获得的能量正比于分子运动速度的平方。超声频率高,故可以给出大的功率。 超声波探头 在超声波检测过程中发射和接收超声波的装置。探头的性能直接影响超声波的特性,影响超声波的检测性能。在超声检测中使用的探头,是利用材料的压电效应实现电能、声能转换的换能器。探头中的关键部件是晶片,晶片是一个具有压电效应的单晶或者多晶体薄片,它的作用是将电能和声能互相转换。 超声波检测硬件设计 结构硬件选材
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判断某一个条件是否达到,并且根据这一判断结果执行相应的程序。
例: 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); } 迷你超声波检测的组装与调试 电路设计 器械清单
原理图 电路连接图 硬件检测 确保线路连接正确后,上传程序,如若未能成功显示数据,查找原因是否为硬件损坏,更换装备后再次实验直到成功显示数据。对超声波检查完没有问题之后,我们通过主程序电路板来检查超声波是否能运行正常,串口监视器显示数据中没有出现乱码的现象显示出自己设定的数字,就代表没有任何异常。 超声波单元检测 检验超声波模块是否完好,实验成功后将会,在串口监视器中打印数据,通过if函数中的逻辑判断,观察实验结果。 整体电路调试 如果以上实验都成功了,可以试试搭建整体 |
|
|
|
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2951 浏览 16 评论
3455 浏览 1 评论
8984 浏览 16 评论
4045 浏览 18 评论
1096浏览 3评论
567浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
564浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2299浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1855浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-20 11:45 , Processed in 1.128927 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号