周洪亮
(江蘇電子信息職業(yè)學(xué)院素質(zhì)教育部,江蘇 淮安 223003)
單擺測重力加速度是物理實(shí)驗(yàn)中的常規(guī)項(xiàng)目。一根不可伸縮的細(xì)線,上端固定,下端懸掛一個(gè)重球。當(dāng)細(xì)線質(zhì)量比重球質(zhì)量小很多,球的直徑比細(xì)線長度短很多時(shí),可以把重球看作是一個(gè)不計(jì)細(xì)線質(zhì)量的質(zhì)點(diǎn)[1]。將擺球自平衡位置拉至一邊(保持?jǐn)[角θ<5°)然后釋放,擺球?qū)⒃谄胶馕恢米笥易髦芷谛詳[動,即做簡諧振動,這種裝置稱為單擺(如圖1 所示)。
圖1 單擺受力分析圖
分析擺球受力情況,θ為擺角,l為擺長,T為擺動周期,x為擺球到轉(zhuǎn)動平衡位置的距離。根據(jù)平衡條件有ma=-mgsinθ,a=-gsinθ取一階泰勒展開,a=-g(θ-o(θ)),在擺角很小時(shí),忽略高階無窮小余項(xiàng)此時(shí)符合簡諧運(yùn)動特征,解得利用周期T和擺長l可以測量重力加速度:
單擺是一種簡化模型,擺角過大、擺長改變和阻尼導(dǎo)致力學(xué)模型的近似條件破壞產(chǎn)生誤差,但這個(gè)誤差可以忽略。主要影響來自擺長l和時(shí)間T的誤差。g的相對不確定度擺長l的相對不確定度影響小,并且可以修正,周期T的不確定度影響更大,總測量不確定度主要來自周期T,應(yīng)盡量減小周期測量的誤差。
單擺實(shí)驗(yàn)傳統(tǒng)上使用商品數(shù)字計(jì)時(shí)器,采用光電門和擋光桿計(jì)時(shí)。商品計(jì)時(shí)器功能固化在CPU,只能按設(shè)定功能進(jìn)行實(shí)驗(yàn),難以拓展用途,儀器僅能顯示數(shù)據(jù)而無法處理,也不符合數(shù)據(jù)可視化、信息化教學(xué)的要求,另外價(jià)格高,體積大。商品計(jì)時(shí)器還有一個(gè)缺陷,光電門會受到自然光干擾,并且擋光桿容易無效動作,產(chǎn)生重復(fù)計(jì)數(shù)或者漏計(jì)數(shù),導(dǎo)致測量錯誤。設(shè)想對該實(shí)驗(yàn)在數(shù)據(jù)采集、數(shù)據(jù)傳輸和數(shù)據(jù)處理幾個(gè)方面進(jìn)行改進(jìn),設(shè)計(jì)一種體積小巧、使用方便、高精度、低成本的數(shù)字計(jì)時(shí)器,利用霍爾傳感器產(chǎn)生脈沖信號并發(fā)送給單片機(jī),單片機(jī)接收信號并計(jì)時(shí),利用藍(lán)牙串口通信將數(shù)據(jù)傳輸給電腦和手機(jī),實(shí)時(shí)顯示測量結(jié)果并分析處理和存儲數(shù)據(jù)。
主要包括硬件設(shè)計(jì):霍爾元件、單片機(jī)、藍(lán)牙、電腦、手機(jī)設(shè)備的連接,單片機(jī)的中斷和串口,藍(lán)牙的無線通信。軟件設(shè)計(jì):單片機(jī)的中斷處理和計(jì)時(shí)、串口通信、電腦和手機(jī)的數(shù)據(jù)記錄和處理(如圖2 所示)。
圖2 實(shí)現(xiàn)思路
1.1.1 A3144型霍爾開關(guān)傳感器模塊
霍爾效應(yīng),在垂直磁場的方向通電流,因洛倫茲力產(chǎn)生的電荷積累,形成與電流和磁場方向相互垂直的霍爾電壓。A3144 是利用硅集成電路工藝將霍爾元件和測量線路集成在一起的一種傳感器。集成了電平處理,實(shí)現(xiàn)了材料、元件、電路三位一體。集成霍爾傳感器與分立相比,由于減少了焊點(diǎn),因此顯著地提高了可靠性。此外,它具有體積小、重量輕、功耗低、成本低等優(yōu)點(diǎn)。該模塊有三個(gè)腳,接單片機(jī)的VCC、GND 和外部中斷(如圖3、圖4 所示)。
圖3 霍爾開關(guān)模塊
圖4 霍爾模塊、單擺示意圖
按圖4 方式將霍爾元件置于磁性擺球下方,并連接到單片機(jī)的外部中斷接口,當(dāng)傳感器切割磁場時(shí),輸出單片機(jī)可識別的低電平信號。
1.1.2 STC89C52RC單片機(jī)
由宏晶公司推出的一種小型51 系列單片機(jī),具有8 位并行I/O 和8 位處理器,帶兩個(gè)十六位定時(shí)/計(jì)數(shù)器、五個(gè)中斷源,兩級中斷優(yōu)先級;帶片內(nèi)存儲RAM、32 位雙向輸入輸出線;可進(jìn)行串口通信的單片機(jī);片內(nèi)有4k 字節(jié)在線可重復(fù)編程快擦寫程序存儲器;工作范圍0 Hz~24 MHz;一個(gè)全雙工的異步串行口;優(yōu)點(diǎn)是抗干擾、超低功耗,價(jià)格低,在線通過USB 下載調(diào)試程序非常方便(如圖5、圖6 所示)。
圖5 STC 單片機(jī)
圖6 藍(lán)牙模塊示意圖
本裝置主要使用的是定時(shí)器、外部中斷源、串口輸出幾個(gè)功能。除單片機(jī)最小系統(tǒng)之外,外圍線路比較簡潔,安裝數(shù)碼管和鎖存器用于板上顯示,通過UBS 轉(zhuǎn)TTL 串口連接電腦,連接上藍(lán)牙串口模塊實(shí)現(xiàn)無線通信。
1.2.1 HC06藍(lán)牙從機(jī)和HC05藍(lán)牙主機(jī)
藍(lán)牙HC05 是主從一體的藍(lán)牙串口模塊,與HC06 從機(jī)模塊對應(yīng),功能類似。簡單地說,當(dāng)藍(lán)牙設(shè)備與藍(lán)牙設(shè)備配對連接成功后,我們可以忽視藍(lán)牙內(nèi)部的通信協(xié)議,直接將藍(lán)牙當(dāng)作串口用。建立連接時(shí),兩設(shè)備共同使用一通道也就是同一個(gè)串口,一個(gè)設(shè)備發(fā)送數(shù)據(jù)到通道中,另外一個(gè)設(shè)備便可以接收通道中的數(shù)據(jù)。當(dāng)然,對于建立這種通道連接是有一定條件,那就是對藍(lán)牙設(shè)置好能進(jìn)行配對連接的AT 模式。
藍(lán)牙串口模塊引腳主要有:RX——接收端;TX——發(fā)送端;VCC——模塊供電正極(5V);GND——模塊接地。
HC05、HC06 藍(lán)牙模塊使用AT 指令修改名稱、密碼、波特率等參數(shù)。HC05 的設(shè)置稍復(fù)雜,并且與HC06的AT 命令格式不同,HC05 的AT 句尾要加上 不然不識別。HC06 不需要 。二者的波特率也有區(qū)別。
當(dāng)HC05 主機(jī)與HC06 從機(jī)相連時(shí),HC05 要設(shè)置為主機(jī)。如果密碼都是默認(rèn)的1234,則可自動連接。連接成功后藍(lán)牙信號指示燈紅色常亮。
1.2.2 藍(lán)牙串口模塊與電腦的連接
藍(lán)牙通信方便可靠,只需將主機(jī)與電腦相連、從機(jī)與單片機(jī)相連,相當(dāng)于用一根導(dǎo)線將電腦和單片機(jī)對接,但這種連接是無線的,可以擺脫導(dǎo)線的束縛,更加方便,在近距離內(nèi)利用電腦軟件觀測實(shí)驗(yàn)數(shù)據(jù)(如圖7、圖8 所示)。
圖7 藍(lán)牙與電腦連接示意圖
圖8 手機(jī)藍(lán)牙連接示意圖
1.2.3 單片機(jī)與手機(jī)的無線連接
將HC06 藍(lán)牙串口模塊的RX、TX 連接到單片機(jī)的TX 和RX,以及電源正VCC 和接地GND,僅需4 根線,就能將單片機(jī)測量的信號發(fā)送到手機(jī)藍(lán)牙,采用無線信號連接單片機(jī)和手機(jī),這種方式更加靈活,利用手機(jī)強(qiáng)大的數(shù)據(jù)處理功能,有效地管理實(shí)驗(yàn)數(shù)據(jù)。將測量和數(shù)據(jù)處理分開,可以設(shè)計(jì)更豐富的拓展功能,避免了單一產(chǎn)品功能固化在設(shè)備中,無法升級的缺點(diǎn)。
主要功能為單片機(jī)讀取中斷和串口通信,存儲數(shù)據(jù),電腦端或手機(jī)端與單片機(jī)的藍(lán)牙通信(如圖9 所示)。
圖9 程序流程簡概
單片機(jī)程序分為主程序和定時(shí)器初始化、定時(shí)器中斷,外部中斷、延時(shí)、數(shù)值轉(zhuǎn)換、數(shù)碼管顯示、串口發(fā)送等子程序。
中斷寄存器的設(shè)置非常重要。中斷允許控制寄存器(IE)——控制各中斷的開放和屏蔽,定時(shí)器/計(jì)數(shù)器控制寄存器(TCON)——定時(shí)器和外部中斷的控制,中斷TMOD 寄存器——定時(shí)器和中斷工作方式,串行口控制寄存器(SCON)——串行中斷的控制。
定時(shí)器的操作是一個(gè)關(guān)鍵。定時(shí)器高位寄存器TH0和低位TL0,由于單片機(jī)的晶振為11.0592 Mhz,取12 分頻,所以一個(gè)時(shí)鐘周期t=120/110592=5/4608≈0.001085 069444ms,約為1μs,即低位增加1 的時(shí)間,當(dāng)時(shí)間t=(256-TH0_SET)*(256-TL0_SET)*120/110592 ms 發(fā)生一次定時(shí)器中斷,例如取高位預(yù)設(shè)TH0_SET=22,低位預(yù)設(shè)TL0_SET=0,高位增加1 的時(shí)間為256 個(gè)時(shí)鐘周期,t=5/18≈0.28 ms,計(jì)算得每65 ms 發(fā)生一次定時(shí)中斷。
單片機(jī)選擇11.0592 Mhz 外置晶振的原因跟時(shí)鐘周期有關(guān),采用11.0592 Mhz 晶振,能被1024 整除,在時(shí)間計(jì)算上是整數(shù)運(yùn)算,不產(chǎn)生截?cái)嗾`差。同時(shí),整數(shù)的運(yùn)算效率更高。若使用12 Mhz 晶振,時(shí)間計(jì)算將出現(xiàn)浮點(diǎn)數(shù),產(chǎn)生累積誤差,并且工作效率下降。在編程時(shí)也應(yīng)考慮整除的問題,例如1/3*3 就出現(xiàn)了誤差,調(diào)整乘除計(jì)算順序,改成1*3/3,避免出現(xiàn)不能整除的結(jié)果。
在外部中斷1接上霍爾元件的信號輸出端,設(shè)置寄存器IT1=1,外部中斷1觸發(fā)方式設(shè)為電平下降沿觸發(fā),霍爾元件每次接近磁鐵產(chǎn)生低電平時(shí),單片機(jī)發(fā)生外部中斷,記錄定時(shí)器中斷次數(shù)并計(jì)算兩次外部中斷的時(shí)間間隔,存入數(shù)組中。
數(shù)據(jù)經(jīng)串口發(fā)送的寄存器設(shè)置較復(fù)雜,包括TH1、TL1——設(shè)置計(jì)時(shí)器1 的重載值并決定波特率大小,PCON——波特率倍增模式,SCON——設(shè)置工作方式,ES——開啟串口接收中斷等等。串口發(fā)送程序示例:
串口通信設(shè)置,若選擇常用的串口波特率9600 bps,寄存器SMOD=0 時(shí),需將定時(shí)器重載設(shè)置為256-11059200/12/32/9600=256-3=0xfd,這也是選11.0592 Mhz 晶振的原因。若選擇12M 晶振,在設(shè)置定時(shí)器重載值時(shí)256-12000000/12/32/9600=252.7488……,無法取得整數(shù),取整的截?cái)嗾`差將產(chǎn)生累積誤差,使得時(shí)間總誤差可能超過1%。
在數(shù)字轉(zhuǎn)化為字符部分使用一個(gè)循環(huán),利用整除和余數(shù)來將要顯示的數(shù)值轉(zhuǎn)化為單個(gè)字符,
數(shù)碼管的顯示用段碼和位碼設(shè)置,先定義段碼和位碼的數(shù)組,用查表法計(jì)算出數(shù)值,控制各二極管的亮滅,來達(dá)到顯示數(shù)字的功能,例如0x06=0b00000110,即顯示字符“1”。
可見單片機(jī)的編程需熟悉進(jìn)制、整除、求余、邏輯與、邏輯或、邏輯非、位與、位或、異或、按位取反等等運(yùn)算。
將c 語言源程序編譯成hex 文件,用stcisp 下載到單片機(jī)上,安裝好霍爾模塊,將磁鐵靠近霍爾模塊,每當(dāng)霍爾模塊切割磁場時(shí),模塊上指示燈亮起,數(shù)碼管顯示時(shí)間,發(fā)送數(shù)據(jù)。
在電腦開發(fā)圖形界面,用Visual Studio 集成平臺,開發(fā)串口通訊圖形界面,使用HC05 藍(lán)牙主機(jī)模塊,通過CH340 轉(zhuǎn)接口(USB 轉(zhuǎn)TTL)連接電腦USB,構(gòu)成無線串口通信,接收數(shù)據(jù),保存歷史數(shù)據(jù)方便統(tǒng)計(jì)分析(如圖10 所示)。
圖10 電腦調(diào)試界面
手機(jī)App 用Android Studio 平臺采用java 語言設(shè)計(jì)圖形界面,編寫運(yùn)算邏輯,下載安裝程序后,手機(jī)開啟藍(lán)牙,連接單片機(jī)的HC06 藍(lán)牙從機(jī)模塊,無線接收數(shù)據(jù),顯示和計(jì)算結(jié)果。這樣將測量和處理分開,復(fù)雜的數(shù)據(jù)運(yùn)算使用手機(jī)完成,功能可以設(shè)計(jì)的更豐富,歷史數(shù)據(jù)、可視化、誤差分析等等都可以寫進(jìn)程序,具備一定編程基礎(chǔ)就可自主更新軟件功能(如圖11 所示)。
圖11 手機(jī)界面
單擺測重力加速度的測量誤差主要來源之一是時(shí)間。單片機(jī)的晶振頻率和精度決定了時(shí)鐘周期的精度。隨著溫度變化和時(shí)間,晶振的頻率會產(chǎn)生誤差,一般在ppm 級別,即使達(dá)到200 ppm,這個(gè)誤差對單擺實(shí)驗(yàn)忽略不計(jì)。單片機(jī)的時(shí)鐘周期非常短,執(zhí)行指令、讀寫寄存器或者其他動作耗時(shí)產(chǎn)生的計(jì)時(shí)誤差忽略不計(jì)。
經(jīng)測試,一組測量時(shí)間的35 個(gè)數(shù)據(jù),t=[1.415,1.415,1.416,1.416,1.415,1.415,1.416,1.415,1.416,1.415,1.415,1.415,1.416,1.415,1.415,1.415,1.415,1.415,1.415,1.415,1.414,1.416,1.414,1.415,1.414,1.416,1.415,1.414,1.415,1.414,1.415,1.414,1.415,1.414,1.414],樣本均值=1.4 15s,樣本均值的標(biāo)準(zhǔn)誤差SET=0.001s,相對不確定度
這個(gè)結(jié)論證明時(shí)間測量的標(biāo)準(zhǔn)差很小,數(shù)據(jù)在平均值附近高度集中。另一組數(shù)據(jù)采用手機(jī)App 直接計(jì)算得重力加速度為g=9.859m/s2,當(dāng)?shù)貥?biāo)準(zhǔn)值為g0=9.798m/s2,絕對誤差Δg=0.061m/s2,相對誤差
說明在時(shí)間測量誤差小時(shí),測量結(jié)果良好。因擺長為轉(zhuǎn)軸到擺球質(zhì)心的距離,測量擺長也會造成誤差,為了減小擺長測量的誤差,還可以改進(jìn)實(shí)驗(yàn)方法。等間距取不同擺長l1、l2...ln進(jìn)行n次測量,得周期T1、T2...Tn,利用對T2和l利用線性回歸,算出系數(shù)K即可求出g。
這些復(fù)雜的數(shù)據(jù)處理單片機(jī)難以完成,需要在電腦或者手機(jī)開發(fā)程序進(jìn)行運(yùn)算。
該裝置使用STC89C52 單片機(jī)系統(tǒng),運(yùn)用霍爾模塊A3144 輸出信號,用藍(lán)牙串口傳輸數(shù)據(jù),將數(shù)據(jù)無線傳輸?shù)绞謾C(jī)和電腦并進(jìn)行處理,體積小,結(jié)構(gòu)簡單,成本低,使用方便。用5V 電源供電,耗電很低,發(fā)熱少,可長期穩(wěn)定工作。
使用霍爾元件和單片機(jī)進(jìn)行計(jì)時(shí),動作可靠,響應(yīng)時(shí)間短,抗干擾能力強(qiáng),測量精度高,相對誤差小于1%。
隨著物聯(lián)網(wǎng)、大數(shù)據(jù)、云計(jì)算技術(shù)的發(fā)展,以及實(shí)驗(yàn)教學(xué)的數(shù)字化轉(zhuǎn)型,更多地?cái)?shù)據(jù)需要在云服務(wù)器存儲、運(yùn)算和展示,使用單機(jī)版已經(jīng)不能滿足要求,更合理的方式是建立云服務(wù)器,實(shí)驗(yàn)數(shù)據(jù)直接發(fā)送到數(shù)據(jù)庫存儲,手機(jī)、電腦從云服務(wù)器讀取不同學(xué)生的實(shí)驗(yàn)數(shù)據(jù),進(jìn)行運(yùn)算、可視化,利用大數(shù)據(jù)分析和改進(jìn)實(shí)驗(yàn)教學(xué)。一種設(shè)想是建立服務(wù)器,利用物聯(lián)網(wǎng)協(xié)議傳送數(shù)據(jù),Mysql 數(shù)據(jù)庫存儲數(shù)據(jù),Python 腳本做后臺數(shù)據(jù)處理,利用Python 強(qiáng)大的數(shù)據(jù)功能,充分發(fā)掘數(shù)據(jù)價(jià)值。