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