最新消息:

【用Arduino做科学实验】用Arduino研究自由落体运动

Arduino 少儿编程 3776浏览 0评论
在研究自由落体运动时,经典的试验方法是利用打点计时器在随重物下落的纸带上打点,通过分析纸带上点的间距来研究自由落体运动的规律。这样的实验能够培养学生搜集数据、分析数据的能力。在信息时代,我们可以进一步鼓励有兴趣的学生大胆创新,利用Arduino自主设计实验装置,借助传感器快速获取实验数据,最后借助现代化的数据处理软件进行数据分析,以培养学生的创新能力与借助现代化工具进行数据处理的能力。本文提供一种利用Arduino与传感器模块研究自由落体运动的方法,作为对利用打点计时器研究自由落体运动实验方法的补充和拓展,为广大读者提供思路。

一、实验材料

表 1材料清单

Arduino UNO

IO扩展板

HC-SR04超声波测距模块

按键模块

蜂鸣器

铁架台

重物

二、实验方案

超声波测距传感器能够发出超声波并接收超声波,发出的超声波遇到障碍物反射回来,通过测量超声波从发出到接收经历的时间来测算障碍物到超声波传感器之间的距离。测算公式是S=vt/2,其中S是被测物到超声波传感器的距离,v是声波在空气中的传播速度,在一个标准大气压下15℃时是340m/s,t是超声波在空气中往返的时间。

图1所示的HC-SR04超声波测距模块的理论探测距离是 2cm~450cm,在实际使用过程中探测距离越大时越容易受到干扰。

【用Arduino做科学实验】用Arduino研究自由落体运动

1HC-SR04超声波测距模块

在Mixly中已经将超声波测距程序封装成了程序模块,我们只需根据超声波模块引脚与Arduino的实际连接情况在程序模块上进行相应的选择。你可以编写图2所示的程序将超声波传感器测得的距离在串口监视器中打印出来。

【用Arduino做科学实验】用Arduino研究自由落体运动

2超声波测距程序

将超声波测距模块对准不同的物体测量距离,再用卷尺或软尺测量相应物体到超声波传感器的距离,将通过两种不同方式测得的数据进行比较,确认超声波传感器测得的数据基本准确。

再在Arduino上连接一只蜂鸣器和一个按键模块。按钮模块用于启动测量程序,蜂鸣器用于产生正式测量前的预备提示音。将装置固定在铁架台上,注意所有模块的焊点不能与铁架台直接接触,避免短路。实验装置如图3所示。

【用Arduino做科学实验】用Arduino研究自由落体运动

3实验装置图

超声波传感器距离地面的高度在120cm左右,保证物体有足够的运动距离以获得足够的数据。将超声波传感器面向地面并尽可能地伸出桌面,还可以适当调整传感器距离桌面的高度,以避免发出的超声波被桌沿反射造成干扰。为确保超声波在整个反射路径中不被环境中的障碍物干扰,实验前需利用超声波传感器测量其到地面的距离,并与用卷尺测得的数据进行比对,二者需基本一致。

三、程序编写

图4的程序将实现:当我们按下按键后,装置开始发出倒计时提示音,实验操作者在第4声提示音时迅速松手,让物体自由下落,同时超声波传感器开始检测物体到其自身的距离,Arduino利用通过超声波传感器获得的数据计算出物体的位移并在串口监视器上打印出来,当物体的位移大于100cm时停止测量。

【用Arduino做科学实验】用Arduino研究自由落体运动

4完整程序

四、实验操作

实验操作者需准备一个重量较大、形状较规则且体积不至于太小的物体,较大的重量与较小的体积可以减小空气阻力的影响,但体积过小会增加超声波传感器的检测难度;规则的形状可以增加反射效果,特别是当反射面为平面时。综合考虑各方面因素,笔者准备了一个尺寸是9.8cm*7.7cm*3.6cm的木块,实验效果良好。

将程序上传至Arduino,打开串口监视器。实验操作者手握重物,让该物体位于超声波测距模块正下方略大于2cm处,如图5所示。准备就绪后,按下与3号口相连的按键,蜂鸣器开始播放提示音,操作者需掌握提示音的节奏,在第四声时松手让物体自由下落。实验过程中操作者的身体应尽可能远离超声波传感器避免造成干扰。

【用Arduino做科学实验】用Arduino研究自由落体运动

5实验操作图

物体在下落过程中,可能由于环境干扰、物体未被超声波传感器检测到等原因导致传感器采集到错误的数据。显然,一次成功的自由落体实验,在实验者操作正确的前提下串口监视器中会打印出足够数量的递增的数据,反复实验,筛选出一组有效实验数据进行分析。

五、数据分析

将串口监视器中打印的物体下落时间与运动距离的数据如图6所示。

【用Arduino做科学实验】用Arduino研究自由落体运动

6串口监视器中的数据

将串口监视器中的数据导入到Excel中。需要注意的是,串口中打印的时间单位是“毫秒”,距离单位是“厘米”。在进行数据分析之前,我们需要将其转化为国际标准单位,分别是“秒”与“米”。换算关系为:1s=1000ms,1m=100cm。根据换算关系我们可以一一对数据进行换算,但是由于数据量较大,怎样快速进行换算处理呢?

我们在表格的空白处分别输入1000与100两个数据备用。我们首先对时间进行换算,选中录入数据1000的单元格,复制。选中所有的时间数据,点击鼠标右键,在弹出的右键菜单中找到“选择性粘贴”并点击,如图7。

【用Arduino做科学实验】用Arduino研究自由落体运动

7选择性粘贴

在“运算”中选择“除”,如图8,点击确定。

【用Arduino做科学实验】用Arduino研究自由落体运动

8选择除运算

这时,所有的时间数据都已换算完成。用同样的方法对距离进行换算,换算完成之后如图9所示。

【用Arduino做科学实验】用Arduino研究自由落体运动

9换算完成的数据

将时间和距离数据全部选中,插入散点图,在Excel中生成的散点图如图10所示。

【用Arduino做科学实验】用Arduino研究自由落体运动

10散点图

添加趋势线,当我们在曲线趋势线选项中选择多项式阶数为2时,曲线拟合得较好。 

此时,生成的趋势线及函数关系式如图11,我们可以看到R平方值为0.9999。R平方值是趋势线拟合程度的指标,取值范围在0~1之间,它的数值大小可以反映趋势线的估计值与对应的实际数据之间的拟合程度,R平方值越接近1,拟合程度就越高,趋势线的可靠性也就越高。此处,R平方值为0.9999,说明曲线的拟合程度是相当高的。

【用Arduino做科学实验】用Arduino研究自由落体运动

11添加趋势线

由于释放时间、测量误差等多种原因影响,我们通过曲线拟合得到的位移-时间函数关系与自由落体运动规律的理论公式的形式不完全一致,但这并不影响我们从曲线与函数关系式中获得关于自由落体运动的重要信息——自由落体的位移是运动时间的二次函数。

我们对通过拟合得到的函数关系式S=4.7541t2+0.0136t-0.0007求导,得到自由落体运动的速度(v)-时间(t)关系式:v=9.5082t+0.0136,我们发现自由落体运动的速度是时间的一次函数,说明自由落体运动是匀变速直线运动。继续对速度-时间函数v=9.5082t+0.0136求导,我们可以得到本次实验中物体下落的加速度a=9.5082,这与实验地点成都当地的重力加速度值9.7913较为接近,出现偏差的原因在于空气阻力的影响与实验本身的测量误差。

六、总结讨论

本实验装置拓展了自由落体运动的研究方法,成本低廉。在使用此装置时,有诸多地方值得实验操作者留心,如实验之前的调试、重物的选择、重物的释放时机、避免外物对超声波传感器的干扰等。

关于重物的选择,笔者曾用柠檬、纸盒等充当重物进行实验。柠檬能够较好地克服空气阻力,但由于体积较小,往往当它下落到50cm左右时便不能被超声波传感器良好地检测到,导致获得的数据较少。15cm*15cm*5cm的纸盒体积较大,反射超声波的能力较强,但其自身重量太轻,受空气阻力影响较大,但可以在其中填充重物以增加重量。故在本实验中选择重物时,要综合考虑多方面因素,物体要既能够较好地克服空气阻力,又容易被超声波传感器检测到。

虽然利用本装置研究自由落体运动的实验操作难度较大,但为我们自己动手设计实验放置进行科学研究提供了思路,收集数据、处理数据、分析数据的过程也体现了使用技术的优越性。

 

原刊于《无线电》杂志

转自公众号:
皓云工作室

您必须 登录 才能发表评论!