上星期和大家談及實驗的簡介、資料和硬件配備,也開始作了手作部分。今期會繼續接駁 Raspberry Pi 與 MCP3008 ,以及製作程式的部分。
承上期,連接蜂鳴片後,現在準備餘下的部分。由於 Raspberry Pi 只有數碼輸入,因此不能將震盪器的模擬訊號直接輸入 Raspberry Pi ,所以需要使用一顆模擬數碼轉換器 MCP3008 。
[row][double_paragraph]
[/double_paragraph][double_paragraph]
[/double_paragraph] [/row]
完成接駁之後,可量度一下金屬球下墜到木板時所產生的電壓。
Python 程式設計
最後的階段,在 Raspberry Pi 編寫程式讓整個實驗進行。我們將使用最新的 GPIO Zero Library ,可以更容易學習及編寫 Python 程式,如系統還未安裝 GPIO Zero Library ,可在 Terminal 中鍵入 sudo apt-get update 以更新軟件,然後再鍵入 sudo apt-get install python3-gpiozero 以下載 Library 。
有關實驗中的程式碼,當中的一些重點解釋如下:
行數 1 : 載入 GPIO Zero Library ,及加入 LED 、按鈕及擬數碼轉換
器。
行數 4 : 將按鈕設定在 2 號接口上。
行數 5 : 將繼電器設定在 17 號接口上。
行數 6 : 壓電陶瓷蜂鳴片設定在數碼轉換器 MCP3008 的第一隻腳上。
行數 7 : 要求學生輸入金屬小球下墜的距離(以米作單位)。
行數 8-10 : 當按鈕接收到按下的訊號,即連接至 GND , Raspberry Pi 便會列印出「 Button is pressed 」(行數 9 ),及輸出訊號給繼電器(行數 10 ),以供電給電磁鐵設以施產生磁力,吸著金屬小球。
行數 12-15 :當按鈕沒有被按下,系統會停止供電給電磁鐵(行數 15 ),
電磁鐵便沒有磁力,金屬小球開始下墜。這時候電腦便會記下系統時間 t1 (行數 13 ),並會列印出「 Button is released 」(行數 14 ) 。
行數 18-24 : 當金屬小球下墜到地下的木板上,便會使到壓電陶瓷蜂鳴片
產生電壓訊號。但因為這個訊號很微弱, 我們要把訊號乘上 100 倍,以放大訊號的數值。當這個數值大於 80 時(行數 18 ),我們便可確定金屬小球已經下墜至木板的位置了。這時候電腦便會記下系統時間 t2 (行數 19 ),將 t2 減去 t1 ,並捨入至一個小數位(行數 20 ),便可得出金屬小球的下墜時間( roundt )。最後用公式就可求出重力加速度。
完成以上的步驟之後,就可以進行這一個實驗活動了。首先,開啟 Raspberry pi 的 Python 程式,將以上的程式碼輸入至一個新的檔案,將檔案儲存之後,按一下 F5 ,程式便開始執行。在實驗中,金屬小球的下墜距離設定為 1.25 米,得出重力加速度的數值為 9.68ms-2 ,結果令人滿意。
如果能夠將實驗中的下墜距離設定為更大的數值,例如把金屬小球由 2 樓跌落至地下,就可以降低實驗中所量度的時間和下墜距離的誤差率,大家不妨多作嘗試。