許琴
摘 要:超聲波模塊HC-SR04在MCS51單片機(jī)測試中,利用超聲波模塊返回的高電平來控制計數(shù)器的運行控制位TR,使能計數(shù)器進(jìn)行計數(shù),再通過公式運算得到距離。此方法會因其它中斷影響計數(shù)器的計數(shù)準(zhǔn)確性,導(dǎo)致測距的精度降低。因此本文提出利用計數(shù)器的門控方式解決其它中斷對計數(shù)器影響,提高測距精度,并利用外部中斷源判斷計數(shù)完成并啟動測距運算。
關(guān)鍵詞:超聲波模塊 測距 計數(shù)器 精度 外部中斷
中圖分類號:TP273 文獻(xiàn)標(biāo)識碼:A 文章編號:1672-3791(2018)04(b)-0092-03
Abstract: In the distance measurement of MCS51 with ultrasonic module HC-SR04, we use ultrasonic back signal to control the counter to count by the TR control bit, and obtain the distance by the formula calculation. This method can reduce the accuracy of the distance measurement because of the influence of other interrupt. Therefore, this paper puts forward the use of counter gating method to solve the influence of other interrupts in MCS51 system, improve the distance measurement accuracy, and use the external interrupt source to start the count of the distance calculation.
Key Words: Ultrasonic module;Distance measurement;Counter;precision;External interrupt
在MCS51單片機(jī)利用超聲波模塊進(jìn)行測距,由于超聲波模塊使用簡單方便,測距精度相對較高,所以一直受到電路設(shè)計師的青睞。利用超聲波模塊返回的高電平來控制計數(shù)器的運行控制位TR,使能計數(shù)器進(jìn)行計數(shù),再通過公式運算得到距離。電路中其它中斷的產(chǎn)生會影響計數(shù)器計數(shù)值的準(zhǔn)確,從而導(dǎo)致測距的精度降低。
為此,本文以MCS51和超聲波模塊HC-SR04為例,利用計數(shù)器的門控方式解決其它中斷對計數(shù)器影響,提高測距精度,并利用外部中斷源判斷計數(shù)完成并啟動測距運算。
1 超聲波測距原理及實現(xiàn)
1.1 超聲波模塊HC-SR04測距原理
超聲波模塊HC-SR04聲波模塊可提供2~400cm的非接觸式距離感測功能,測距精度可達(dá)3mm;模塊包括超聲波發(fā)射器、接收器與控制電路。外形圖如圖1所示。
1.2 基本工作原理
(1)采用I/O口TRIG觸發(fā)測距,給至少10us的高電平信號。
(2)模塊自動發(fā)送8個40kHz的方波,自動檢測是否有信號返回。
(3)若有信號返回,通過I/O口ECHO輸出一個高電平,高電平持續(xù)時間就是超聲波從發(fā)射到返回的時間。距離計算公式如下:
1.3 超聲波時序
超聲波時序圖如圖2所示,時序圖表明只需提供一個10us以上的脈沖觸n發(fā)信號,模塊內(nèi)部將發(fā)送8個40kHz電平并檢測回波,一旦檢測到回波信號則輸出回響信號?;仨懶盘柕拿}沖寬帶與所測的距離成正比。因此通過發(fā)射信號到收到的回響信號時間間隔可以計算得到距離。
1.4 超聲波模塊HC-SR04測距常用實現(xiàn)方法
此種設(shè)計思路中,影響測距精度主要是由于等待回響信號后去開啟和停止定時器計算,由于CPU執(zhí)行程序需要時間,當(dāng)啟動和停定時器0時,會影響計數(shù)時間的準(zhǔn)確性。同時此設(shè)計方法在測距時,CPU一直處于等待狀態(tài),影響CPU執(zhí)行的效率。為此本文提出利用定時的門控信號來控制定時器啟動和停止,提高定時器對回響信號的計數(shù)精度,即提高了測量距離的精度。
2 改進(jìn)方法設(shè)計
2.1 硬件設(shè)計
51單片機(jī)定時器內(nèi)部結(jié)構(gòu)如圖4所示,當(dāng)C/T=0時,定時器工作在定時狀態(tài)下,通過GATE、TR0和INT0信號可以控制定時器的啟動和停止。由于信號是內(nèi)部控制信號,INT0是外部信號,可以將ECHO回響信號加在INT0引腳,在GATE 、TR0都為高電平1時,當(dāng)INT0=1時定時器開時定時計數(shù)工作,當(dāng)INT0=0時,定時器停止工作。而ECHO信號剛好是滿足此要求的控制信號。這樣提高了定時器的計數(shù)精度,提高測距精度。電路連接如圖5所示。
按此思想改進(jìn)后,程序的框架變化較大,主程序主要負(fù)責(zé)按一定時間啟動超聲波電路,定時器計數(shù)的啟動和停止完全由ECHO信號在硬件上直接控制。同時當(dāng)ECHO信號從高變低時表示定時器停止計數(shù),同時也利用這個下降沿信號產(chǎn)生中斷,在中斷服務(wù)中讀取定時器的計數(shù)值并進(jìn)行距離計數(shù)。
2.2 程序?qū)崿F(xiàn)
3 結(jié)語
利用此程序方法不僅提高了超聲波測量距離的精度,同時還提高了CPU執(zhí)行其它程序的效率,如果把環(huán)境溫度都考慮進(jìn)來,加入溫度修正公式,可進(jìn)一步提高超聲波測距的精度。
參考文獻(xiàn)
[1] 趙建領(lǐng).51系列單片機(jī)開發(fā)寶典[M].北京:電子工業(yè)出版社,2007.
[2] 求是科技.51單片機(jī)典型模塊設(shè)計實例[M].北京:人民郵電出版社,2004.
[3] 戴佳,戴衛(wèi)恒.51單片機(jī)C語言應(yīng)用程序設(shè)計實例精講[M].北京:電子工業(yè)出版社,2006.
[4] 徐愛鈞,彭秀華.單片機(jī)高級語言C51Windows 環(huán)境編程與應(yīng)用[M].北京:電子工業(yè)出版社,2003.
[5] Elecfreaks.Ultrasonic Ranging Module HC - SR04[EB/OL].(2010-03-11).https://www.electroschematics.com/wp-content/uploads/2013/07/HCSR04-datasheet-version-1.pdf.