許琴
摘 要:超聲波模塊HC-SR04在MCS51單片機(jī)測試中,利用超聲波模塊返回的高電平來控制計(jì)數(shù)器的運(yùn)行控制位TR,使能計(jì)數(shù)器進(jìn)行計(jì)數(shù),再通過公式運(yùn)算得到距離。此方法會因其它中斷影響計(jì)數(shù)器的計(jì)數(shù)準(zhǔn)確性,導(dǎo)致測距的精度降低。因此本文提出利用計(jì)數(shù)器的門控方式解決其它中斷對計(jì)數(shù)器影響,提高測距精度,并利用外部中斷源判斷計(jì)數(shù)完成并啟動測距運(yùn)算。
關(guān)鍵詞:超聲波模塊 測距 計(jì)數(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è)計(jì)師的青睞。利用超聲波模塊返回的高電平來控制計(jì)數(shù)器的運(yùn)行控制位TR,使能計(jì)數(shù)器進(jìn)行計(jì)數(shù),再通過公式運(yùn)算得到距離。電路中其它中斷的產(chǎn)生會影響計(jì)數(shù)器計(jì)數(shù)值的準(zhǔn)確,從而導(dǎo)致測距的精度降低。
為此,本文以MCS51和超聲波模塊HC-SR04為例,利用計(jì)數(shù)器的門控方式解決其它中斷對計(jì)數(shù)器影響,提高測距精度,并利用外部中斷源判斷計(jì)數(shù)完成并啟動測距運(yùn)算。
1 超聲波測距原理及實(shí)現(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個(gè)40kHz的方波,自動檢測是否有信號返回。
(3)若有信號返回,通過I/O口ECHO輸出一個(gè)高電平,高電平持續(xù)時(shí)間就是超聲波從發(fā)射到返回的時(shí)間。距離計(jì)算公式如下:
1.3 超聲波時(shí)序
超聲波時(shí)序圖如圖2所示,時(shí)序圖表明只需提供一個(gè)10us以上的脈沖觸n發(fā)信號,模塊內(nèi)部將發(fā)送8個(gè)40kHz電平并檢測回波,一旦檢測到回波信號則輸出回響信號?;仨懶盘柕拿}沖寬帶與所測的距離成正比。因此通過發(fā)射信號到收到的回響信號時(shí)間間隔可以計(jì)算得到距離。
1.4 超聲波模塊HC-SR04測距常用實(shí)現(xiàn)方法
此種設(shè)計(jì)思路中,影響測距精度主要是由于等待回響信號后去開啟和停止定時(shí)器計(jì)算,由于CPU執(zhí)行程序需要時(shí)間,當(dāng)啟動和停定時(shí)器0時(shí),會影響計(jì)數(shù)時(shí)間的準(zhǔn)確性。同時(shí)此設(shè)計(jì)方法在測距時(shí),CPU一直處于等待狀態(tài),影響CPU執(zhí)行的效率。為此本文提出利用定時(shí)的門控信號來控制定時(shí)器啟動和停止,提高定時(shí)器對回響信號的計(jì)數(shù)精度,即提高了測量距離的精度。
2 改進(jìn)方法設(shè)計(jì)
2.1 硬件設(shè)計(jì)
51單片機(jī)定時(shí)器內(nèi)部結(jié)構(gòu)如圖4所示,當(dāng)C/T=0時(shí),定時(shí)器工作在定時(shí)狀態(tài)下,通過GATE、TR0和INT0信號可以控制定時(shí)器的啟動和停止。由于信號是內(nèi)部控制信號,INT0是外部信號,可以將ECHO回響信號加在INT0引腳,在GATE 、TR0都為高電平1時(shí),當(dāng)INT0=1時(shí)定時(shí)器開時(shí)定時(shí)計(jì)數(shù)工作,當(dāng)INT0=0時(shí),定時(shí)器停止工作。而ECHO信號剛好是滿足此要求的控制信號。這樣提高了定時(shí)器的計(jì)數(shù)精度,提高測距精度。電路連接如圖5所示。
按此思想改進(jìn)后,程序的框架變化較大,主程序主要負(fù)責(zé)按一定時(shí)間啟動超聲波電路,定時(shí)器計(jì)數(shù)的啟動和停止完全由ECHO信號在硬件上直接控制。同時(shí)當(dāng)ECHO信號從高變低時(shí)表示定時(shí)器停止計(jì)數(shù),同時(shí)也利用這個(gè)下降沿信號產(chǎn)生中斷,在中斷服務(wù)中讀取定時(shí)器的計(jì)數(shù)值并進(jìn)行距離計(jì)數(shù)。
2.2 程序?qū)崿F(xiàn)
3 結(jié)語
利用此程序方法不僅提高了超聲波測量距離的精度,同時(shí)還提高了CPU執(zhí)行其它程序的效率,如果把環(huán)境溫度都考慮進(jìn)來,加入溫度修正公式,可進(jìn)一步提高超聲波測距的精度。
參考文獻(xiàn)
[1] 趙建領(lǐng).51系列單片機(jī)開發(fā)寶典[M].北京:電子工業(yè)出版社,2007.
[2] 求是科技.51單片機(jī)典型模塊設(shè)計(jì)實(shí)例[M].北京:人民郵電出版社,2004.
[3] 戴佳,戴衛(wèi)恒.51單片機(jī)C語言應(yīng)用程序設(shè)計(jì)實(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.