甘肃快3开奖果

消息学校入驻客服中心微信我们网站导航

手机版登录注册
互动社区电脑IT其他少儿编程-用Arduino测声音速度教程
少儿编程-用Arduino测声音速度教程
时间:2019-06-13

摘要:Arduino是一款开源的电子原型制作?#25945;ǎ?#20511;助Arduino与相应的传感器,我们可以设计实验装置用于科学探究。本文以声速测量装置的设计、制作和操作为例,介绍了Arduino与声音传感器在声速测量实验中的应用,为我们自己动手设计实验装置进行科学探究提供思路。

关键词:Arduino 声速测量 声音传感器 科学探究

Arduino控制板是一款开源的硬件电?#20998;?#20316;?#25945;ǎ?#22914;果说它是一台计算机,一点都不夸张,不过我们平时使用的计算机性能要?#30475;?#24471;多,毕竟一块Arduino UNO板只有一张信用卡般大小,也没有显?#37202;鰨?#32780;且价格?#22303;珹rduino就如同一台微型计算机。

Arduino板虽小,其功能却不容小觑。Arduino板?#20064;?#21547;了微控制器和相关电路,微控制器在我们的生活中几乎无处不在,它让我们周围的设备更加智能,小区的门禁?#20302;?#20197;及家里的冰箱、洗衣机、空调等设备的自动化控制都用到了微控制器。如今,越来越多的人用Arduino制作机器人、创作交互艺术、控制3D打印机。不仅如此,我们还可以借助Arduino设计实验装置用于科学探究。

测量声音在空气中传播速度的方法有很多,在实验室中常用的有驻波法、相位法等,但这些方法对实验操作者的理论要求和实验操作要求均较高,借助Arduino与声音传感器,我们可以自制实验装置测量声音在空气中的传播速度

1. 实验材料

实验材料如下表,需要特别说明的是,所使用的声音传感器模块是能够检测模拟量的声音传感器模块。

表 1材料清单

器材 数量
Arduino UNO 1
IO扩展板 1
模拟声音传感器 2
触摸传感器 1

2. 实验方案

将两个声音传感器模块通过IO扩展板分别连接到Arduino UNO的模拟输入引脚A1脚与A2脚?#24076;?#20026;便于区分,我们将连接在A1脚的声音传感器称之为声音传感器1,将连接在A2脚的声音传感器称之为声音传感器2;将触摸传感器模块连接在数字输入引脚3号脚?#24076;?#29992;于对程序进行控制,之所以选择触摸传感器而不是按键,是为了避免操作按键时发出的声音对测量产生干扰。装置如图1所示。

用Arduino测声音速度

图1声速测量装置图

声音传感器1与声音传感器2相距d同向放置在一条?#27605;呱希?#22768;音传感器1离声源较近,声音传感器2离声源较远。在声音传感器1的正前方制造一声音,当发出的声音被声音传感器1接收到时,Arduino记录下此时?#21335;低?#36816;行时间t1,当声音被声音传感器2接收到时,Arduino记录下此时?#21335;低?#36816;行时间t2,那么声音从声音传感器1处传播到声音传感器2处所用的时间t=t2-t1,由v=d/t即可计算出声音在空气中的传播速度。

声音传感器1与声音传感器2之间的距离d由?#23548;?#27979;量所得,我们可以通过串口将d的测量值发送给Arduino,在Mixly编程软件中编写函数模块get_distance如图2所示。

用Arduino测声音速度

图2get_distance函数模块

我们实验的环境中难免存在一些环境噪音,为了避免环境噪音对测量的影响,我们需要确定Arduino接收到多大的音量值才算检测到被测声音而不是环境噪音。因此,我们需要采集环境中的噪声音?#30475;?#20540;,多次测量,分别获得声音传感器1与声音传感器2采集到的环境噪声音?#30475;?#20540;max1、max2。若实验时声音传感器1与声音传感器2分别采集到的音量值大于max1、max2,则表示被测声音已到达相应的声音传感器所处的位置。编写背景噪声音量测试函数volume_test如图3所示。

用Arduino测声音速度

图3volume_test函数模块

变量声明如图4所示,其中变量state用来储存检测状态,值为0表示“声音检测中?#20445;?#20540;为1表示“检测结束”。

用Arduino测声音速度

图4变量声明

编写主程序如图5所示。程序将实现:Arduino启动时,操作者?#19978;駻rduino发?#22303;?#22768;音传感器间的距离数据,单位为“米?#20445;?#25509;下来装置会检测环境噪声大音量值;环境噪声检测结束后,操作者在声音传感器1的正前方制造声音,Arduino根据测?#24247;?#30340;数据计算出声速并在串口监视器中打印出来。测?#23458;?#25104;之后,轻触触摸传感器,?#20302;?#20877;次进入测量状态。若需更改声音传感器间的距离值,重启Arduino即可再次上传距离d的值。

用Arduino测声音速度

5声速测量主程序

3. 测量声音速度

当Arduino启动时,串口监视器中显示“Please input the distance:?#20445;导?#27979;得两声音传感器之间的距离为0.90米,将距离数据0.90通过串口监视器发送给Arduino,如图6所示。

用Arduino测声音速度

图6向Arduino发送距离数据

串口监视器中显示“Testing……”时,表示正在进行环境噪声大值的检测。

用Arduino测声音速度

图7检测环境噪声大值

当串口监视器中显示“Measuring……”时,声速测量开始,在声音传感器1的正前方通过拍手制造一短促的声音,串口监视器中随?#21019;?#21360;出声音在声音传感器1与声音传感器2之间传播的时间t与计算所得的声速数据,然后显示“Done!?#21271;?#31034;测?#23458;?#25104;。本次测得的声音在空气中的传播速度是349.38m/s,如图8所示。

用Arduino测声音速度

图8串口监视器中的声速数据

4. 总结讨论

该实验应在安静的环?#31243;?#20214;下进?#26657;?#20197;减小环境噪声的干扰。由于声音在空气中的传播速度受气温、湿度、气压影响较大,故测得的数据是特定环?#31243;?#20214;下的声速数据,那么环?#31243;?#20214;的记录是很重要的,下一步的改进中还可以为装置添加监测环?#31243;?#20214;?#21335;?#20851;传感器。由于声音在传播过程中音量会发声衰减,?#23548;?#19978;被测声音到达不同声音传感器处时对程序的促发能力是不同的,为?#24605;?#23567;因此而造成?#21335;低?#35823;差,一是制造的被测声音要尽可能地短促响亮,二是在保证较远的声音传感器能接收到声音的前提下,两个声音传感器之间的距离应?#23454;?#36828;一些,当然还可以考虑从程序算法上进行优化。

该装置简化了声速测量的过程,为声速的测量在方法上提供了更多的可能,同时也体现了Arduino与声音传感器在科学探究实验中的应用价值。

友情链接
学校排行榜

?#25918;疲航?000家优秀培训机构行业:覆盖十大类200个行业学?#20445;?#20026;学员提供求学服务

找学:选择离您较近的学校选课:对比选择适合您的课程咨询:7×24小服务

课程:精选优质课程保?#24076;?#20154;工实名认证评价:学员真实评价

省时:提交求学需求;学校主动联系你;省心:学校全正规办学;诚信经营!省钱?#21512;?#21463;满意的课程单价;

关于我们 招生信息 新闻中心 网站地图 互动问答

版权所有:求学指南(www.injfrr.tw) 备案号: 豫ICP备12008957号-9

技术支持:易科互联

甘肃快3开奖果