· 少兒編程-用Arduino測聲音速度教程-求學指南

消息學校入駐客服中心微信我們網站導航

手機版登錄注冊
互動社區電腦IT其他少兒編程-用Arduino測聲音速度教程
少兒編程-用Arduino測聲音速度教程
時間:2019/6/13 16:26:51

摘要:Arduino是一款開源的電子原型制作平臺,借助Arduino與相應的傳感器,我們可以設計實驗裝置用于科學探究。本文以聲速測量裝置的設計、制作和操作為例,介紹了Arduino與聲音傳感器在聲速測量實驗中的應用,為我們自己動手設計實驗裝置進行科學探究提供思路。

關鍵詞:Arduino 聲速測量 聲音傳感器 科學探究

Arduino控制板是一款開源的硬件電路制作平臺,如果說它是一臺計算機,一點都不夸張,不過我們平時使用的計算機性能要強大得多,畢竟一塊Arduino UNO板只有一張信用卡般大小,也沒有顯示器,而且價格低廉,Arduino就如同一臺微型計算機。

Arduino板雖小,其功能卻不容小覷。Arduino板上包含了微控制器和相關電路,微控制器在我們的生活中幾乎無處不在,它讓我們周圍的設備更加智能,小區的門禁系統以及家里的冰箱、洗衣機、空調等設備的自動化控制都用到了微控制器。如今,越來越多的人用Arduino制作機器人、創作交互藝術、控制3D打印機。不僅如此,我們還可以借助Arduino設計實驗裝置用于科學探究。

測量聲音在空氣中傳播速度的方法有很多,在實驗室中常用的有駐波法、相位法等,但這些方法對實驗操作者的理論要求和實驗操作要求均較高,借助Arduino與聲音傳感器,我們可以自制實驗裝置測量聲音在空氣中的傳播速度

1. 實驗材料

實驗材料如下表,需要特別說明的是,所使用的聲音傳感器模塊是能夠檢測模擬量的聲音傳感器模塊。

表 1材料清單

器材 數量
Arduino UNO 1
IO擴展板 1
模擬聲音傳感器 2
觸摸傳感器 1

2. 實驗方案

將兩個聲音傳感器模塊通過IO擴展板分別連接到Arduino UNO的模擬輸入引腳A1腳與A2腳上,為便于區分,我們將連接在A1腳的聲音傳感器稱之為聲音傳感器1,將連接在A2腳的聲音傳感器稱之為聲音傳感器2;將觸摸傳感器模塊連接在數字輸入引腳3號腳上,用于對程序進行控制,之所以選擇觸摸傳感器而不是按鍵,是為了避免操作按鍵時發出的聲音對測量產生干擾。裝置如圖1所示。

用Arduino測聲音速度

圖1聲速測量裝置圖

聲音傳感器1與聲音傳感器2相距d同向放置在一條直線上,聲音傳感器1離聲源較近,聲音傳感器2離聲源較遠。在聲音傳感器1的正前方制造一聲音,當發出的聲音被聲音傳感器1接收到時,Arduino記錄下此時的系統運行時間t1,當聲音被聲音傳感器2接收到時,Arduino記錄下此時的系統運行時間t2,那么聲音從聲音傳感器1處傳播到聲音傳感器2處所用的時間t=t2-t1,由v=d/t即可計算出聲音在空氣中的傳播速度。

聲音傳感器1與聲音傳感器2之間的距離d由實際測量所得,我們可以通過串口將d的測量值發送給Arduino,在Mixly編程軟件中編寫函數模塊get_distance如圖2所示。

用Arduino測聲音速度

圖2get_distance函數模塊

我們實驗的環境中難免存在一些環境噪音,為了避免環境噪音對測量的影響,我們需要確定Arduino接收到多大的音量值才算檢測到被測聲音而不是環境噪音。因此,我們需要采集環境中的噪聲音量大值,多次測量,分別獲得聲音傳感器1與聲音傳感器2采集到的環境噪聲音量大值max1、max2。若實驗時聲音傳感器1與聲音傳感器2分別采集到的音量值大于max1、max2,則表示被測聲音已到達相應的聲音傳感器所處的位置。編寫背景噪聲音量測試函數volume_test如圖3所示。

用Arduino測聲音速度

圖3volume_test函數模塊

變量聲明如圖4所示,其中變量state用來儲存檢測狀態,值為0表示“聲音檢測中”,值為1表示“檢測結束”。

用Arduino測聲音速度

圖4變量聲明

編寫主程序如圖5所示。程序將實現:Arduino啟動時,操作者可向Arduino發送兩聲音傳感器間的距離數據,單位為“米”;接下來裝置會檢測環境噪聲大音量值;環境噪聲檢測結束后,操作者在聲音傳感器1的正前方制造聲音,Arduino根據測量到的數據計算出聲速并在串口監視器中打印出來。測量完成之后,輕觸觸摸傳感器,系統再次進入測量狀態。若需更改聲音傳感器間的距離值,重啟Arduino即可再次上傳距離d的值。

用Arduino測聲音速度

5聲速測量主程序

3. 測量聲音速度

當Arduino啟動時,串口監視器中顯示“Please input the distance:”,實際測得兩聲音傳感器之間的距離為0.90米,將距離數據0.90通過串口監視器發送給Arduino,如圖6所示。

用Arduino測聲音速度

圖6向Arduino發送距離數據

串口監視器中顯示“Testing……”時,表示正在進行環境噪聲大值的檢測。

用Arduino測聲音速度

圖7檢測環境噪聲大值

當串口監視器中顯示“Measuring……”時,聲速測量開始,在聲音傳感器1的正前方通過拍手制造一短促的聲音,串口監視器中隨即打印出聲音在聲音傳感器1與聲音傳感器2之間傳播的時間t與計算所得的聲速數據,然后顯示“Done!”表示測量完成。本次測得的聲音在空氣中的傳播速度是349.38m/s,如圖8所示。

用Arduino測聲音速度

圖8串口監視器中的聲速數據

4. 總結討論

該實驗應在安靜的環境條件下進行,以減小環境噪聲的干擾。由于聲音在空氣中的傳播速度受氣溫、濕度、氣壓影響較大,故測得的數據是特定環境條件下的聲速數據,那么環境條件的記錄是很重要的,下一步的改進中還可以為裝置添加監測環境條件的相關傳感器。由于聲音在傳播過程中音量會發聲衰減,實際上被測聲音到達不同聲音傳感器處時對程序的促發能力是不同的,為了減小因此而造成的系統誤差,一是制造的被測聲音要盡可能地短促響亮,二是在保證較遠的聲音傳感器能接收到聲音的前提下,兩個聲音傳感器之間的距離應適當遠一些,當然還可以考慮從程序算法上進行優化。

該裝置簡化了聲速測量的過程,為聲速的測量在方法上提供了更多的可能,同時也體現了Arduino與聲音傳感器在科學探究實驗中的應用價值。

友情鏈接
學校排行榜

品牌:近5000家優秀培訓機構行業:覆蓋十大類200個行業學員:為學員提供求學服務

找學:選擇離您較近的學校選課:對比選擇適合您的課程咨詢:7×24小服務

課程:精選優質課程保障:人工實名認證評價:學員真實評價

省時:提交求學需求;學校主動聯系你;省心:學校全正規辦學;誠信經營!省錢:享受滿意的課程單價;

關于我們 招生信息 新聞中心 網站地圖 互動問答

版權所有:求學指南(www.bxlypl.live) 備案號: 豫ICP備12008957號-9

技術支持:易科互聯

排列三走势图预测号码