牟曉東
較為傳統的高中物理實驗一般是通過使用打點計時器來實現“重力加速度的測量”。或像高中物理“勻變速直線運動的研究”中“用手機測自由落體加速度”提及的“安裝能顯示加速度情況的應用程序”,借助于智能手機中的加速度傳感器進行的“直觀”測量。而在“機械振動”中“用單擺測量重力加速度”實驗,則是先測量出單擺周期及擺長再通過公式g=4π1/T計算出重力加速度的大小。除此之外,還有其他使用彈簧秤、圓錐擺、氣墊導軌等設備進行測量和計算的方法。
如果將“重力加速度的測量”這一課題拿到“編程創客”實踐活動中,我們可以通過改進版的“滴水法”、手機Phyphox雙線擺、掌控板mPython X 圖形化編程和樹莓派Python代碼編程等多種方式來進行探究。
自來水、水盆、米尺、手機的“秒表”、電子表格Excel。
首先,將水盆底部朝上,放置于自來水的水龍頭正下方;接著,輕微打開并小心調整閥門,控制水滴以“一滴、一滴”自然滴下的狀態做自由落體運動,最好是上一滴水剛滴落到盆底發出聲音的同時,下一滴水恰好從水龍頭中剛開始滴落,分別進行兩組共6次測量,使用手機的“秒表”來計時50個水滴的滴落總時長,即從第1次水滴撞擊盆底發聲至第51次“發聲”為止(如圖1)。

第一組實驗,在水盆下方水平墊入約0.1m高的木板,用米尺測得從水龍頭滴出水滴處至盆底的高度h為1.160m;三次測量出50個水滴自由落體運動的周期時長分別為24.20s、24.36s和24.74s,需要特別注意手指的觸動“秒表”動作必須迅速,將結果輸入Excel表格;
第二組實驗,撤掉水盆下方的木板,測量新的高度值h為1.255m,三次測量的周期時長分別為25.32s、25.42s和25.68s,輸入Excel表格中。
在Excel中先計算出一滴水滴的平均周期值(即除以50),接著在單元格E2根據公式g=4π1/T進行重力加速度g值大小的計算:“(2*B2)/(D2*D2)”,然后向下拖動計算出其余5個g值的大小,分別是9.903695103m/s、9.774024552m/s、9.476077479m/s、9.787827966m/s、9.710970565m/s和9.515326423m/s;另外,六次實驗測量和計算得到的重力加速度平均值是9.69465368144189m/s2,這是一個比較理想的實驗結果(如圖2)。

改進版的“滴水法”測量重力加速度借助手機的“秒表”來測量周期,可以有效替代傳統的秒表;借助Excel表格進行數據的處理,計算速度和精度均優于使用計算器,且計算的結果便于存儲。缺點是測量高度仍然使用了米尺,且手機的“秒表”受人為因素影響較大。
鐵架臺、米尺、安裝有Phyphox軟件(中文譯為“手機物理工坊”)的智能手機、鐵夾兩支、細繩、軟布(比如:擦眼鏡布)。
目前的智能手機均內置有MEMS(微電子機械系統),通常包括光線傳感器、加速度傳感器和磁力傳感器等。作為針對物理學實驗而打造的Phyphox軟件,提供了直接訪問手機傳感器測量數據的功能,并且可以對實驗數據進行即時分析計算以得出相關物理量(比如重力加速度)的數值,計算公式為:g=4π1/T。
首先用軟布包住手機中部,兩側用鐵夾固定;調整好鐵架臺的水平,用2條細繩穿過鐵夾尾部,上方系于鐵架臺橫梁,組成一個“雙線擺”;調整好平衡,讓手機能夠平穩地進行小幅度(小于5°)的擺動(如圖3)。

運行Phyphox,點擊“力學”下的“擺”項目,這樣你的手機作為擺的同時又可以確定重力常數;點擊右上角的選項設置(三個豎點),在彈出的菜單項中先將“定時運行”項勾選,其默認設置是將“啟動延遲”3秒、“實驗時長”10秒,目的是“過濾”開始3秒的不穩定時間段;然后勾選“允許遠程控制”,啟用遠程訪問功能,這樣可以通過瀏覽電腦瀏覽器的網頁(http://192.168.1.105:8080/)來即時訪問Phyphox的實驗過程(如圖4)。

點擊切換至“G”重力加速度測量項,調整擺線的長度并使用米尺測量擺長,輸入至Phyphox的“擺長”項中(cm);然后小幅度啟動雙線擺,在網頁中點擊“開始”按鈕啟動實驗,很快就顯示有周期、頻率以及計算出的重力加速度的數值。繼續調節擺線的長度,共進行六次實驗,測得擺長分別為:41.60cm、45.70cm、48.50cm、51.50cm、55.00cm和57.59cm,得到的重力加速度值分別為:9.64m/s、9.71m/s、9.52m/s、9.87m/s、9.76m/s和9.68m/s。六次平均值是9.69666666666667m/s,也是一個比較理想的實驗結果(如圖5)。

借助于手機中的MEMS加速度傳感器系統和Phyphox軟件進行重力加速度的測量實驗非常方便,只須測量出不同的擺長下的數據即可計算出接近于當地重力加速度值的數據,省去了實驗者的計算過程。
缺點是受限于智能手機內置的傳感器精度,米尺測量的擺長需要估算智能手機的中心點位置而產生的誤差,最終都會在一定程度上影響到重力加速度的測量。
掌控板、百靈鴿擴展板、數據線、mPython X編輯器。
掌控板內部集成的加速度傳感器可以通過多種軟件編程的方式進行數據的讀取,包括X、Y和Z三個軸的單向加速度值。
將百靈鴿擴展板與掌控板連接好,連接電腦的USB接口;在電腦上運行mPython X,進行圖形化編程。通過循環結構控制先后8次讀取掌控板的三軸加速度值,相鄰兩次間的時間間隔為0.01秒。
需要注意的是,要將掌控板中讀取的“X軸加速度”、“Y軸加速度”和“Z軸加速度”三個數據先求平方和再開平方根,而且再進行單位換算(乘以10),即:

單位是m/s;建立變量my_list存儲8個重力加速度的測量值,最終在掌控板的OLED顯示屏上輸出(如圖6)。

將程序刷入掌控板并運行,很快就測量得到8個重力加速度數據:9.812777、9.819073、9.806555、9.851265、9.812699、9.883816、9.845144、和9.851265,分別輸出顯示在電腦的mPython X編程界面和掌控板的OLED顯示屏上;8次的平均值是9.83532425m/s,這是一個非常理想的實驗結果(如圖7)。

使用掌控板的優點是器材簡單,連接非常方便,而且得到的實驗數據精度也比較高;缺點是實驗數據的獲取過程不太直觀,較高集成度的“智能化”剝奪了通過實驗感知重力加速度的過程。
樹莓派、古德微擴展板、鐵架臺、擺球、細繩、米尺、游標卡尺、紅外線傳感器、Python程序編輯器Spyder。
物理“機械振動”的“實驗:用單擺測量重力加速度”中,為了精確地測量出當地的g值,我們必須要盡可能地減小實驗過程和數據計算處理過程中的各種誤差。比如在使用秒表測量單擺周期T值時,通常是先記下擺球做50次全振動所用的總時長t,然后通過T=t/50取平均值。如果是在樹莓派上通過Python編程來做同樣的實驗,借助紅外線傳感器實時監測擺球每次到達平衡位置的時刻并進行記錄存儲,同樣也是記錄幾十個周期后取平均值;然后通過公式g=4π1/T計算出重力加速度的大小,同時也可以根據實驗數據做出T-l圖像并進行描點擬合。
在本次的單擺測量重力加速度實驗中,我們需要使用對環境光線適應能力較強的紅外線傳感器,其有效檢測的距離范圍為2-30cm,通過頂端的一對紅外線發射與接收管來檢測擺球是否到達平衡位置。
第1步:實驗器材的連接與調試
首先將擺球通過細繩連接至鐵架臺,使用游標卡尺測量出擺球的直徑;然后將紅外線傳感器插入樹莓派擴展板的24號插孔;接著,調節好紅外線傳感器與擺球的位置,使其頂端正對著擺球靜止時的平衡位置;最后,給樹莓派通電啟動操作系統,并且讓擺球正常擺動起來,觀察紅外線傳感器的輸出指示燈是否會在其到達平衡位置時閃亮,指示燈如果能在擺球到達平衡位置時發光,說明可以進行實驗檢測(如圖8)。

第2步:Python編程測量單擺的周期T
在電腦上通過Windows的“遠程桌面程序”登錄樹莓派,進入Python IDE編程環境,編寫程序進行單擺周期數據的采集。
第一次實驗設計采集50個周期總時長,語句“for i in range(101)”控制紅外傳感器監測擺球到達平衡位置的次數為101次,每次均使用“time.time()”記錄下該時刻的“時間戳”;語句“time.sleep(0.7)”的作用是消除擺球“途經”紅外線傳感器時的短暫停留期(可根據實際情況進行調節),防止擺球在同一次到達平衡位置時采集了多個時刻數據;最開始記錄的一次時刻t0是實驗的起始值,它與最后一個時刻間的總時長(t-t)再除以50,即得到該次實驗所測得的周期T。
按照實驗要求,控制擺球在小于5°的范圍內開始擺動后,運行Python程序進行數據的采集;結束后,程序輸出“T is: 1.4047615098953248”,單位是秒(如圖9)。

第3步:Python編程計算重力加速度g
返回Windows中啟動Spyder進行Python編程,計算重力加速度g。
語句“import math”的作用是導入數學庫,變量math.pi即為圓周期率π,值為3.141592653589793;本次實驗測量的擺長l值為0.4896m,即擺線部分與小球半徑之和;語句“g = (4*math.pi**2*l)/(T**2)”的作用是計算g的大小(“*”表示乘法運算,“T**2”表示周期的平方),這是公式g=4π1/T在Python編程中的表達式書寫方法。
運行程序,得到結果:“第一次測試的g數值為: 9.79480845649939”,單位為m/s(如圖10)。

第4步:再測量并獲取五組實驗數據
第一次實驗結束之后,繼續再做五次實驗,調節并測量擺線的長度l分別為0.6386m、0.7206m、0.7376m、0.8076m和0.9796m;在樹莓派中通過Python程序測量的對應周期T分別為1.6047531366348267 s、1.7047476148605347 s、1.7246245098114015 s、1.8050039768218995 s和1.9851537227630616 s。
將對應數據分別在Windows的Python環境中進行運算,得到五次實驗的重力加速度值分別是:9.789763143321407 m/s、9.788898187722923 m/s、
9.790199394007589m/s、9.785876280226173m/s和9.813416423616557 m/s。
第5步:Python編程作T2-l圖像
六次實驗完成之后,將測量的擺長l和周期T數據(包括通過公式計算得到的重力加速度g數據)填入右下表格。
在Python中導入numpy、matplotlib等庫模塊和進行必要的作圖設置之后,將六次實驗的擺長l和周期T數據分別存儲至列表,其中的周期T還要通過一次循環計算得到平方值,最后進行數據點顯示和擬合,得到T2-l圖像(如圖11)。

第6步:實驗數據分析
從圖像上可以看到,六次實驗的數據“散點”(以藍色*表示)在經過擬合后,非常接近于過原點(0,0)的一條直線,其擬合曲線y=kx+b表示為:y=4.028x+0.001868。由于T=4π/gl,直線在T2-l圖像中的斜率k=4π/g,所以重力加速度g=4π/k;如果忽略擬合時的“0.001868”極小誤差值,并且將k值(4.028)代入,則有g=4π2/k≈9.800997419155273m/s(同樣可在Python中編程求解),這就是六次實驗測量和計算的結果;六次實驗測量和計算得到的重力加速度值取平均值,結果是9.793826980899006m/s,一個非常理想的結果。
使用樹莓派進行Python代碼編程測量重力加速度的實驗優點是,不管是周期T的測量、圓周率π的取值及計算重力加速度g,數據均精確至小數點后15位數字,尤其是使用紅外線傳感器監測記錄擺球到達平衡位置的時刻數據,精確度要遠遠高于使用秒表來測量周期,實驗的誤差小得多。通過查詢各地的重力加速度數據,青島(北緯35°35′~37°09′)的重力加速度值約為9.7985 m/s,而筆者所在地是煙臺(北緯36°16′~38°23′),理論上的重力加速度值應該是稍大于青島地區9.7985m/s2的,與實驗結果吻合。
而且,通過Python代碼編程來進行最終實驗數據的分析及圖像擬合展示,都極具說服力。缺點是實驗較復雜,包括器材的連接以及Python代碼編程,適合高中生進行小組協作式項目探究,還需要信息技術老師的協助。
