第一篇:超聲波測距總結報告
電子技術實驗課程設計
超聲波測距系統
總結報告
自03 胡效赫 2010012351
自03 胡效赫 2010012351
一、課題內容及分析
首先根據課程所給的幾個題目進行選擇,由于自己最近在做電子 設計大賽的平臺設計,希望對超聲波測距在定位方面應用有更詳盡的了解,所以選擇課題三——超聲波測距作為課程設計,內容如下:
對課題進行分析:實驗提供超聲波傳感器T40-16和R40-16,利用面包板和小規模芯片搭接電路,實現距離的測量及顯示。大致思路即驅動發射端發出超聲波,接收端收到返回的脈沖進行處理與計算得到測量距離并通過數碼管和蜂鳴器顯示。
二、方案比較與選擇
由于超聲波測距方案原理基本相同,只要能夠檢測出發射到接收的時間,并通過相應計算就可以得到所測距離。所以問題大致分為驅自03 胡效赫 2010012351 動發射端、接收端檢測、間隔時間計算與計算結果顯示四部分。具體的方案設計如下:
閘門脈沖源產生基準寬度為T 的閘門脈沖,該脈沖一方面控制計數電路的計數啟動和并產生計數器清零脈沖,使計數器從零開始對標準脈沖源輸出的時鐘脈沖(頻率為17KHz)計數。同時開啟控制門,超聲波振蕩器輸出的40kHz脈沖信號通過控制門,放大后送至超聲波換能器,由發射探頭轉換成聲波發射出去。該超聲波經過一定的傳播時間,達到目標并反射回來,被超聲波換能器的接收探頭接收變成電信號,經放大、濾波、電壓比較和電平轉換后,還原成方波。圖中的脈沖前沿檢測電路檢測出第一個脈沖的前沿,輸出控制信號關閉計數器,使計數器停止計數。則計數器的計數值反映了超聲波從發射到接收所經歷的時間(或距離)。
自03 胡效赫 2010012351
三、模塊化設計及參數估算
1、閘門控制模塊 ? 設計思路
555振蕩電路產生頻率為2Hz的脈沖,作為閘門脈沖源。RC微分電路將輸出的2Hz脈沖進行微分運算產生脈沖信號,作為計數啟動和計數清零的信號,分別控制D觸發器的置高端和74LS90的清零端。? 參數設計:
555振蕩電路T =(R1+2*R2)*C*ln2。其中R1取4.7kΩ,R2接入10kΩ滑動變阻器,最后實測7.51kΩ,C取47uF。RC微分電路R為1kΩ,C為4.7nF
2、超聲波發生模塊 ? 設計思路
555振蕩電路產生頻率為40kHz的脈沖,作為驅動超聲波發射端 自03 胡效赫 2010012351 的基礎脈沖信號。
同時由2Hz閘門信號作為門控(高電平有效)。
再利用電壓比較器,對555脈沖信號進行整形,而后輸出。? 參數設計
555振蕩電路T =(R1+2*R2)*C*ln2。其中R1取2kΩ,R2接入 1kΩ滑動變阻器,最后實測440Ω,C取10nF。
3、超聲波接收模塊 ? 設計思路
電壓放大電路,利用LF347放大超聲接收端信號
電壓比較電路,利用電阻分壓設計閾值電壓VREF,當沒有接收到信
號時V-大于V+,輸出為負,當接收到信號時V-小于V+,輸出為正。穩壓電路,電壓比較器輸出端接1kΩ電阻,反接5V穩壓管接地,自03 胡效赫 2010012351 使沒有信號即輸出為負時,輸出-0.7V電平,有信號即輸出為正時,輸出5V電平。? 參數設計
放大電路電阻值為1kΩ和750kΩ,放大倍數為750。
電壓比較器VREF由100kΩ電阻和100kΩ的滑動變阻器分壓決定,最終滑動變阻器阻值取為5.68kΩ,VREF取值大致為-0.6V。
4、計數控制模塊 ? 設計思路
計數控制模塊由,計數啟動和計數停止控制組成。由D觸發器進行實現 當計數開始時閘門信號的微分電路給出低電平脈沖將Q置高,計數信號有效。而接收到回波后,接收信號由低變自03 胡效赫 2010012351 高,CLK產生上升沿將Q置低,計數信號關閉。
5、計數模塊 ? 設計思路
555振蕩電路產生17kHz的脈沖型號用來計數 三個74LS90級聯,采用十進制接法計數,分別對應米、分米、厘米。
計數信號控制源由計數控制模塊的D觸發器的Q信號給出 計數信號清零源由閘門控制信號的微分模塊經由緩沖器后給出高脈沖清零。? 參數設計
555振蕩電路T =(R1+2*R2)*C*ln2。其中R1取5.1kΩ,R2接入
47kΩ滑動變阻器,最后實測18.98kΩ,C取2.2nF。
6、報警模塊 ? 設計思路
令A[4],B[4],C[4]分別對應米、分米、厘米,同時當模塊計數時報 警應該無效,設D觸發器輸出信號為Q,則 邏輯函數Alarm = A1’A0’B3’B2’B1’Q 自03 胡效赫 2010012351 利用與非、或非及非邏輯運算搭接電路
四、實驗電路總圖
1、電路原理圖
自03 胡效赫 2010012351
2、時序圖
3、面包板布局
五、實驗結果與實驗中出現的問題分析
1、實驗結果 結果:基本要求及提高要求全部完成。其中四個地方用到了滑動變阻器分別是三個555的脈沖源(產生2Hz、17kHz和40kHz的方波)和接收模塊的電壓比較器閾值電壓VREF的確定。調試結果的各自03 胡效赫 2010012351 阻值已在模塊設計中標明。
2、實驗中出現的問題及分析
A.微分電路輸出信號的檢查
開始分模塊調試時,不會測量微分電路輸出的脈沖信號,然后不能確定問題出現在下級還是本級。經過老師的提示,只要把示波器顯示的波形調到最粗最亮,調成相應掃描速度,可以看到面板上有亮點間歇顯示。從而驗證微分電路輸出信號無誤,并且幅值正確。
B.數碼管顯示不穩定
數碼管顯示不穩定,多數原因是由于數字電路與模擬電路相互干擾,計數器中混有雜波和高頻信號。用示波器測量計數電路的74LS90的信號,發現有17kHz的雜波。首先將模擬地和數字地分開將555振蕩電路的地直接由引線接到學習機上,而后數碼管開始顯示,但仍不太穩定。再在VCC和GND之間跨接0.1uF的電容濾掉雜波。之后數碼管穩定顯示。
C.信號輸出不正確
D觸發器輸出電平Q在未接受到信號時應該是低電平,但始終是高電平。開始時不確定前級各模塊的正確與否,有些停滯,之后確定前級信號正確,D觸發器接線正確,而輸出信號不對,則一定芯片的問題。換了芯片之后,輸出正常。
六、收獲、體會和建議
1、收獲與體會 本次實驗充分體會電路模塊設計與調試的過程,對于設計電路和自03 胡效赫 2010012351 測試電路的能力有了更一步的提升。首先,搭接與調試電路時,應該本著自頂向下逐步求精的原則,在理解原理并確定原理正確之后,先對于面包板的布局進行規劃,把相應的芯片測試后,插到相應部分,保證后面搭接時方便并且思路清晰。然后,按分模塊逐級搭接調試的原則測試電路,保證了每一級的輸入信號都是正確的后,如果輸出不正確,去檢查接線,接線正確后檢查芯片是否正常工作。最后,發現信號干擾問題,嘗試用濾波,分離數字地和模擬地,以及簡單的搭接電容的方法,解決干擾。依照上述方法調試電路,保持一顆正常心態,可以高效并且正確的完成問題。
2、建議 由于整個實驗過程中只需要,測量接收波形的上升沿,所以對于模擬電路中波形整形處理部分現對簡單。現提出以下課程建議: 建議老師將提高要求的測量距離改為高于3m,這樣同學們利用波形放大然后與閾值電壓比較的方法就不能實現了,因為相應的雜波干擾也會隨之放大,沖過閾值電壓,影響結果。所以此時同學應該使用選頻電路選出40kHz的波形,控制后面的計數模塊,對于模擬電路部分會有更高的鍛煉。
附工作日志
8月21日 自03 胡效赫 2010012351 經過周末的預習,查找了關于超聲傳感器的原理知識和超聲測距的相關內容。分析了超聲測距的實現方案,并將電路分為各個模塊實現,每個模塊進行了相應仿真(但有些仿真結果不理想,待硬件實測)。
本日上午首先針對超聲測距系統方案中的幾個模塊與同學進行了討論,包括方波頻率的選擇與實現,閘門信號的實現與清零,以及面包板的布局合理性。
而后首先搭接了三個555方波發生器。上午只搭接測試出了,40kHz的方波 本日下午再次對于板子的規劃進行思考,并大致劃分了區域,把相應用到的芯片放到了相應的位置。然后搭接測試出了2Hz方波。分別測試兩種方波的頻率均很穩定,效果不錯。而后開始搭接超聲發射模塊的實現,將兩種頻率的方波進行邏輯運算,經由LS00,信號傳至運算放大器LF347,將信號與2.5V電壓值進行比較,得到最終的大約0.5s驅動一次超聲波發射器的效果。
但是遇到的問題是,當2Hz和40kHz的方波共同輸入到LS00中時,對2Hz的方波進行測量,示波器顯示的頻率很難穩定下來,發現混有雜波,可能是40kHz的雜波,也可能是交流成分。進行了各種測試,重新退到上一步驟,檢查芯片的問題,等等。但是問題并沒解決,后來懷疑是示波器測量可能不是很準。直接測量最終運放發射的信號,發現效果正常。問題解決。
而后進行超聲接收信號接收處理的部分電路的搭接,以及觸發器電路的搭接。之后搭出17kHz的脈沖源后,下課。
晚上又把數碼顯示和蜂鳴器部分搭出來了,明天分模塊測試。8月22日
由于昨天已經把各個模塊全部搭好,今天開始分模塊測試和模塊的聯調測試。今天下來調試結果:
超聲波發射模塊調試通過正常運行,并且接收模塊可以接收到相應信號,在示波器上顯示相應波形。40kHz的555脈沖源正常,2Hz的555脈沖源正常,經過LS00運算后,到LF347正常驅動T40-16,而相應的R40-16接收到反射的超聲波信號后,產生較大幅值的波形(較之原有的干擾信號),可以通過放大,與閾值電壓比較后得到相應的脈沖信號(沒有接收到信號時,信號為0,大于閾值電壓,最終輸出低電平信號-0.7V;接收到信號后,信號為負,小于閾值電壓,最終由于穩壓管穩壓后輸出高電平5V)。即,當調整出較好的閾值電壓后接收到超聲信號后會產生相應的上升沿信號。
對于閘門信號的作用部分,由74LS74雙上升沿D觸發器來完成。對2Hz脈沖信號進行微分運算,上升沿時給出正脈沖,經由40106COMS施密特反相器可以得到一直是高電平閘門信號時給出低電平和一直是低電平閘門信號時給出高電平的信號。將LS74的置高端接前者信號,給出低電平脈沖時D觸發器被置高,而只有CLK信號給出上升沿后才能將D觸發器置低。
!!但是輸入信號都測出來了,輸出不對哎有木有 所以明天LS74是重點哎有木有!!
而后是計數器顯示模塊,需要有17kHz的555脈沖源,搞定。與經由閘門信號控制鎖存后的Q輸出端進行邏輯運算(LS00),結果輸出到LS90中進行計數并在數碼管中顯示。同時從計數的信號端中做組合邏輯實現低于0.2m時報警。同時計數器的清零信號由閘門信號微分運算后COMS施密特反相器整形后得到。
開始沒有產生555脈沖信號的時候,將CLK和CLR用學習機模擬,效果很好,接上555后發現數碼管不穩,有木有!!
模擬地和數字有干擾有木有!!想辦法有木有!!自03 胡效赫 2010012351 數電電子技術實驗考核的時候就有這個問題木有解決,明天上午一定要解決有木有!!
8月23日
今天來到實驗室后重新整理了思路,調整了心態。理清了各個模塊的作用關系,由最初級開始逐級測試,當確定D觸發器的輸入信號均正常,并且接線正常,而輸出不正常,所以果斷換了74LS74。突然之間信號變好了,然后數碼管開始工作了,無比的開心。直接找助教驗收基本實驗,助教發現信號并不是很穩定,然后感覺計數器和數碼管顯示部分仍有雜波干擾,在VCC和GND之間接入0.1uF,信號穩定了,基本實驗調試通過。好開心,有木有。而后通過改變閾值電壓,使閾值電壓接近0V,將距離較遠處的返回信號,也作為有效信號。然后通過了提高要求。搞定!
第二篇:超聲波測距模塊總結報告
超聲波測距模塊總結報告
董升亮
Senscomp公司的超聲波測距系統包括兩個部分,分別是測距模塊(6500)和靜電換能器(600)。前者驅動后者,后者負責發送和接收超聲波,之后用戶便可根據超聲波發收這一時間間隔計算出與目標物之間的距離。經過多次戶外實驗與優化,目前可實現一片單片機對4個超聲波測距模塊的控制,并且每個的探測距離都可達到10米左右。
一、超聲波測距原理
超聲波是指頻率高于20khz的機械波。為了以超聲波作為檢測手段,必須產生超聲波和接收超聲波。完成這種功能的裝置就是超聲波換能器或超聲波探頭。超聲波換能器有發送器和接收器,600系列換能器同時具有發送和接收聲波的作用。超聲波換能器是利用壓電效應的原理將電能和超聲波相互轉化,即在發射超聲波的時候,將電能轉換,發射超聲波;而在收到回波的時候,則將超聲振動轉換成電信號。
超聲波測距原理也很簡單,就是測出超聲波從發射到遇到障礙物返回所經歷的時間,再乘以超聲波的速度就可以得到二倍的聲源與障礙物之間的距離。
即:D=C*T/2。其中,D為600換能器到障礙物之間的距離;C為超聲波此時在空氣中的傳播速度;T為超聲波的發收時間。在空氣中,聲波的傳播速度一般受溫濕度的影響,在沒有溫濕度傳感器或對測量精度要求不高的情況下,一般取340m/s。在以上幾次實驗中,程序中采用C=340m/s。
二、6500驅動模塊
我們所采用的這款6500驅動模塊,手冊上說可以實現6英寸-35英尺(0.152m-10.668m)的準確測距,但由于所采用的600模塊是自發自收的,在發送過程中從障礙物返回的信號就無法捕獲。另外,超聲波換能器有一定的慣性,發送結束后還留有一定的余振,這種余振經換能器同樣產生電壓信號,擾亂了系統捕捉返回信號的工作。因此,在余振未消失以前,還不能啟動系統進行回波接收(要等待2.38ms),以上兩個原因造成了超聲傳感器具有測量一定的測量范圍。模塊最近可以到測量37cm。當然實際實驗過程中會在這些標準上稍有浮動。該模塊操作簡單,但要特別注意的是它的噪聲干擾問題。該模塊共有九個引腳如圖1。
圖1
1引腳:接地
2引腳:BLNK,多返回模式時,用于控制(拉低)ECHO信號 3引腳:不用
4引腳:INIT,拉高啟動模塊發射超聲波。拉低時,ECHO也同時拉低 5引腳:不用
6引腳:OSC,6500模塊內部時鐘,一般用不到
7引腳:ECHO,當超聲波遇到障礙物返回至換能器時,該引腳拉高。該引腳需要一個470KΩ的電阻上拉至Vcc 8引腳:BINH,可使能探測37cm以內的障礙物 9引腳:Vcc,4.5V-6.8V供電,我們采用5V供電 說明:在這9個引腳當中,我們只用到其中的4個(Vcc,GND,INIT,ECHO)。另外一點值得強調的是,由于BLNK和BINH受內部噪聲影響比較大,因此這兩個引腳直接連接到GND。并且6500模塊與單片機控制板之間的連接排線長度盡量要短。
6500驅動模塊具有兩種工作方式。第一種工作方式測量的是換能器到其前方第一個障礙物之間的距離。第二種工作方式可探測多個障礙物的回波,其區分能力為間隔3英寸以上的障礙物。
圖2 單返回模式,控制時序實例
三、600系列換能器
此超聲波換能器是集發送與接收一體的一種換能器。傳感器里面有一個圓形的薄片,薄片的材料是塑料,在其正面涂了一層金屬薄膜,在其背面有一個鋁制的后板。薄片和后板構成了一個電容器,當給薄片加上頻率為49.4khz、電壓為300vacpk-pk左右的方波電壓時,薄片以同樣的頻率震動,從而產生頻率為49.4khz的超聲波。當接收回波時,6500內有一個調諧電路,使得只有頻率接近49.4khz的信號才能被接收,而其它頻率的信號則被過濾。
換能器在將電信號轉化成聲波的過程中,所產生的聲波并不是理想中的矩形,而是一個類似花瓣一樣形狀,發送超聲波的波束角大約為30度,見圖3。在實際應用中,該波束應為一個立體的圓錐形,這也導致兩個問題:
1)隨著探測距離的延長,探測障礙物方位的準確性下降。即無法對障礙物進行準確定位。
2)探測距離越遠,能量擴散越嚴重,在障礙物不理想的情況下,返回信號減弱,以至于在標準探測范圍內,返回脈沖也達不到600換能器的判斷閾值。
圖3
四、單片機控制模塊
系統采用PIC30F4011控制芯片,同時集成串口和CAN總線兩種數據傳輸方式。該電路共配置了8個6500模塊接口,目前已經用到了其中的4個。為了減小相互之間的干擾,每個模塊之間都采用了LC濾波電路。同時在每個模塊的電源到地之間增加了一個1uF的旁路電容和一個470uF的鋁電解電容,前者用來消除內部干擾對BINH引腳的影響,后者起儲能作用,這兩者視情況可選擇使用。其電路連接如圖4,PCB布線如圖5。兩者中的電感用相近引腳間距的電容做了代替。
圖4
圖5
五、程序控制模塊
由于該單片機控制多個超聲波測距模塊,因此在編程過程中要首先考慮到各個模塊之間的相互影響,最基本的要求是某一個模塊突然的硬件錯誤不會對其他模塊的正常運行造成影響。最初考慮到在uCOS-II上進行編程,但實施過程中發現要借用互斥信號量與多個郵箱,任務多且復雜,既費時又費力,并且會對超聲波往返時間的計時產生影響,同時也使對程序的閱讀更加困難。最終放棄了這個方案。
新方案采用多重循環來進行模塊控制調度,為避免陷入死循環,程序中采用了goto語句。在此程序中,我們定義了一個整型變量Con6500,讓他分別等于1、2、3、4來分別控制這四個模塊,同時還用到了3個定時器:
Timer1:用于設置6500模塊探測周期。
Timer2:用于記錄各個模塊超聲波往返時間。Timer3:用于防止某一模塊超時。
程序中對各個模塊的返回引腳均采用查詢的方式,整個程序的關鍵代碼如下: int main(void){ //CAN、UART、Timer、IO初始化 Con6500=1;//從第一個模塊開始探測 //……
while(1){ StartChk:while(Timer1Lock==1)//有一個6500模塊開啟
{
while(Con6500==1)//開啟的是第一個模塊(6500-1)
{
TMR3=0;//為第一個模塊計時,以避免其超時
while(1)//查詢6500-1返回引腳
{
if(PORTDbits.RD1==1)//ECHO1有返回
{
ECHO1();//完成距離計算及數據發送
LATBbits.LATB8=0;//關閉6500-1超聲波換能器
Con6500=2;//下一次6500-2模塊發送
Timer1Lock=0;//標記所有模塊都關閉
goto StartChk;//等待下一個模塊開啟
}
else if(TMR3>=WaitTMR3)//如果6500-1超時
{
LATBbits.LATB8=0;//關閉6500-1超聲波換能器
Con6500=2;//下一次6500-2模塊發送
Timer1Lock=0;//標記所有模塊都關閉
goto StartChk;//等待下一個模塊開啟
}
}
}
while(Con6500==2)//若開啟的是第二個模塊(6500-2)
{
TMR3=0;//為6500-2計時,避免其超時
while(1)//查詢6500-2返回引腳
{
if(PORTEbits.RE1==1)//ECHO2有返回
{
ECHO2();//完成距離計算及數據發送
LATBbits.LATB7=0;//關閉6500-2超聲波換能器
Con6500=3;//下一次6500-3模塊發送
Timer1Lock=0;//標記所有模塊都關閉
goto StartChk;//等待下一個模塊開啟
}
else if(TMR3>=WaitTMR3)//若6500-2超時
{
LATBbits.LATB7=0;//關閉6500-2超聲波換能器
Con6500=3;//下一次6500-3模塊發送
Timer1Lock=0;//標記所有模塊都關閉
goto StartChk;//等待下一個模塊開啟
}
}
} //……其它模塊
} } } /*定時器1中斷服務程序*/
void __attribute__((__interrupt__))_T1Interrupt(void){ IFS0bits.T1IF=0;//清除T1中斷標志
if(Con6500==1){
TMR2=0;//超聲波收發時間計時開始
LATBbits.LATB8=1;//開啟6500-1超聲波換能器
Timer1Lock=1;//標記有模塊開啟
} if(Con6500==2)//判斷SonarLock=1是為了防止6500-1不工作
{
TMR2=0;//超聲波收發時間計時開始
LATBbits.LATB7=1;//開啟6500-2超聲波換能器
Timer1Lock=1;//標記有模塊開啟
} //…… }
六、關于噪聲干擾
噪聲問題是必須要注意和解決的問題,否則它將影響測距模塊的可靠性和準確性,有時甚至會直接導致其無法正常工作。對超聲波測距模塊產生的干擾主要包括內部干擾和外部干擾。
1、內部干擾
內部干擾主要來自超聲波發送時產生的發送脈沖,6500模塊的內部電路見圖6。
圖6 其中TL851是一個數字12步測距控制集成電路。內部有一個420khz的陶瓷晶振,6500系列超聲波距離模塊開始工作時,在發送的前16個周期,陶瓷晶振被8.5分頻,形成49.4khz的超聲波信號,然后通過三極管Q1和變壓器T1輸送至超聲波傳感器。發送之后陶瓷晶振被4.5分頻,以供單片機定時用。在發生脈沖的過
程中,通過示波器觀察,會發現在GND和BINH上會有多個尖峰脈沖,其峰峰值有時甚至達到4V,這將導致在發送超聲波時,ECHO引腳被突然拉高,從而導致根本無法探測障礙物。其原因為BINH引腳對噪音過于敏感,官方提供的解決辦法為將BINH直接連接到地,同時在Vcc與GND之間加1uF的旁路電容。但在實際應用過程中我們發現,即便單個模塊調試成功,當將多個6500模塊集成在一個板子上同時工作時,仍會有干擾發生從而影響某一個或幾個模塊的正常工作。經過反復調試,我們發現有必要在6500模塊排線的末端加一大容量的鋁電解電容來穩定供電電壓濾除噪音。
TL852是專門為接收超聲波而設計的芯片。因為返回的超聲波信號比較微弱,需要進行放大才能被單片機接收,TL852主要提供了放大電路,當TL852接收到4個脈沖信號時,就通過REC給TL851發送高電平表明超聲波已經接收。由此可見,當返回超聲波信號太弱或者達不到4個返回脈沖時,將不能實現準確測距。
2、外部干擾
外部比較復雜,包括外部事物產生與該超聲波類似的噪音;不理想的障礙物對測距的干擾;以及個測距模塊之間的相互干擾。
雖然多數超聲波傳感器的工作頻率為50Khz左右,遠遠高于人類能夠聽到的頻率。但是周圍環境也會產生類似頻率的噪音。比如,電機在轉動過程會產生一定的高頻,輪子在比較硬的地面上的摩擦所產生的高頻噪音,機器人本身的抖動。這些都將對換能器接收信號造成影響。但這一類噪音出現的幾率比較低,有時可以忽略不計。
由于換能器發送的超聲波并不是理想的圓柱型,而是開口呈30度的圓錐形。這將導致測距模塊對障礙物的方位判斷產生誤差。即超聲波可能會先碰到周圍的物體產生返回信號,從而無法準確探測換能器與目標物體之間的距離。這個問題也是在后期實驗過程中驗證了的。在這種情況下,可采用復合返回模式,但這樣又極易造成內部干擾。因此在對測距精度要求不高的情況下,我們還是采用單返回模式。
最后一個要注意的是多模塊之間的交叉問題,由于我們所采用的超聲波測距模塊發射的超聲波幾乎完全相同,這就導致相互間產生干擾的幾率增大,其解決方案為增大模塊之間的朝向角,也可以在換能器前加一遮擋物,前提是不影響超聲波的發送。
七、實驗過程及測試結果分析
實驗過程完全沒有預想中的那么順利,看似操作簡單的測距模塊,至今為止已經耗費了一個多月的時間。總結起來,大部分時間都耗費在了消除噪音上。
第一階段主要是對第一套測距模塊的測試和相關電路的設計修改。但在一開始就遇到了麻煩,主要原因歸結于自己的粗心大意和不重視官方材料。以至于在電路設計時忽略了ECHO引腳的上拉電阻,導致無法測得返回信號。由于英語水平并不很高和當時的習慣問題,并未意識到從官方網站上查找相關資料,而是僅僅局限于對電路電氣規則的檢查。
第二階段主要集中于對噪聲的發現與處理。在相關電路及元件問題解決后,模塊仍無法正常工作,具體表現就是ECHO引腳的突然拉高從而導致無法進行正常測量,這也是該超聲波測距模塊最常見的問題。其原因是BINH引腳對噪聲過于敏感,而噪聲有來源于模塊內部,即在每次發送超聲波時產生的脈沖會對供電電壓造成影響。經過示波器觀察會發現在BINH引腳和GND引腳上有峰峰值(大約為3.6V)較大脈沖信號。我們采取的主要解決辦法是將BINH和BLNK引腳在排線末端直接
連接到地,并在Vcc與GND之間加一個1uF的濾波電容。后期實驗我們發現,即使這樣也會存在問題。
第三階段主要是對多個6500模塊控制程序的編寫。由于PIC30F4011控制芯片只有兩個外部中斷引腳,于是我們選擇用查詢的方式監測返回信號。經過多次嘗試,最終放棄了在操作系統上進行編程。新方案的詳細介紹見第五部分:程序控制模塊。
第四階段為對4個模塊的組裝與調試。由于有先前積累的經驗與教訓,這一階段耗時相對較少,主要問題仍然是噪音處理,將個別模塊1uF的濾波電容換成了330uF,主要用來穩定改模塊的供電電壓。實驗時,我們將四個6500模塊和單片機控制電路安裝在小車上,其中兩側各一個,前方兩個。為了減震,將4個模塊和控制電路固定在了一塊泡沫磚上。實驗場地前期選在一樓東門口的丁字路口上,后期沿路行進至環校公路。各個6500模塊的探測周期設定為1次/秒。
靜態測量時,地點選在東門口,測試數據穩定,效果較好。后來選取一10米左右障礙物(樓梯),該障礙物形狀很不規范。對4個6500模塊進行分別測量測試數據基本穩定,但偶爾會無返回信號,測試數據見附件。在移動測量時,發現有時測得的數據并不反映真實情況,特別是在周圍環境比較復雜的情況下,會無法探測到與前方障礙物之間的真正距離。但總體來講,效果還可以。另外還有一點需要注意,那就是車子不能移動太快,否則將會影響超聲波返回信號的接收。
實驗至此還存在的不足是,其中的一個模塊仍不很穩定,其內部干擾有時會影響正常。一般斷電重啟就能解決。
八、心得體會
經過這么長時間的鍛煉,得到的最重要的一點體會是:不能急功近利,遇事不能浮躁,要想解決問題最終還是要靠靜下心來仔細分析。遇到困難不能退縮更不能半途而廢,不懂的可以上網查,這也是一個不斷學習和不斷積累經驗的過程。另外實驗室的設備齊全,要學會充分利用。
對于燒毀的那個三極管Q1,其原因最終還要歸結于TL851芯片的XMIT引腳脈沖持續時間過長,導致Q1長時間導通,而三極管的集電極與發射極又直接與Vcc和GND相連,從而致使短路電流持續時間過長,超過三極管允許極限,進而將其燒毀。
九、附件說明
附件1為東門口靜態測試,單位為米。為了便于觀察,對串口輸出做了規范,1
至4列分別對應1至4個模塊測得的數據,空白單元代表無返回數據。
附件2為靜態遠距(9m-10m)測試結果。
附件3為由東門口行至南樓西側以及返回所得數據。附件4為該測距系統的相關電路與PCB板圖。里面電感用相同引腳電容做了代替。
附件5為PIC30F4011芯片的4模塊控制程序。
十、補充
ECHO引腳會出現一個尖峰脈沖影響對返回時間的判斷,需要接一104電容加以濾除。
第三篇:超聲波測距總結
超聲波測距
超聲波傳感器用于超聲控制元件,它分為發射器和接收器。發射器將電磁振蕩轉換為超聲波向空氣發射,接收器將接受的超聲波進行聲電轉換變為電脈沖信號。實質上是一種可逆的換能器,即將電振蕩的能量轉換為機械振蕩,形成超聲波;或者有超聲波能量轉換為電振蕩。常用的傳感器有T40-XX和R40-XX系列,UCM-40T和UCM-40R系列等;其中T代表發射傳感器,R代表接收傳感器,40為中心頻率40KHZ。
超聲波的傳播速度
縱波、橫波及表面波的傳播速度取決于介質的彈性常數以及介質的密度。
1.液體中的縱波聲速:
C1=
k/?
2.氣體中的縱波聲速:
C2=
P·?/?
式中:K——體積彈性模量
?——熱熔比
P——靜態壓力
?——密度
注:氣體中聲速主要受溫度影響,液體中聲速主要受密度影響,固體中聲速主要受彈性模量影響;一般超聲波在固體中傳播速度最快,液體次之,氣體中傳播速度最慢。超聲波測距原理
通過超聲波發射器向某一方向發射超聲波,在發射時刻的同時開始計時,超聲波在空氣中傳播時碰到障礙物就立即返回來,超聲波接收器收到反射波就立即停止計時。超聲波在空氣中的傳播速度為v ,而根據計時器記錄的測出發射和接收回波的時間差△t ,就可以計算出發射點距障礙物的距離S ,即: S = v·△t /2
這就是所謂的時間差測距法 或:
由于超聲波也是一種聲波, 其聲速C與溫度有關,表1列出了幾種不同溫度下的聲速。在使用時,如果溫度變化不大, 則可認為聲速是基本不變的。常溫下超聲波的傳播速度是334 米/秒,但其傳播速度V 易受空氣中溫度、濕度、壓強等因素的影響,其中受溫度的影響較大,如溫度每升高1 ℃, 聲速增加約0.6 米/ 秒。如果測距精度要求很高, 則應通過溫度補償的方法加以校正(本系統正是采用了溫度補償的方法)。已知現場環境溫度T 時, 超聲波傳播速度V 的計算公式為:
V = 331.45 + 0.607T
聲速確定后, 只要測得超聲波往返的時間,即可求得距離。這就是超聲波測距儀的機理。
超聲波發生器可以分為兩類:
1、使用電氣方式產生超聲波;
2、用機械方式產生超聲波。電氣方式包括壓電型,磁致伸縮型和電動型等;機械方式有加爾統笛、液哨和氣流旋笛等。它們所產生的超聲波的頻率、功率和聲波特性各有不同,因而用途也各有不同。目前較為常用的是壓電式超聲波發生器,其又可分為兩類:(1)順壓電效應:某些電介物質,在沿一定方向上受到外力作用而變形時,內部會產生極化現象,同時在其表面上會產生電荷;當外力去掉后,又從新回到不帶電的狀態,這種將機械能轉換為電能的現象稱順壓電效應(超聲波接收器的工作原理)。(2)逆壓電效應:在電介質的極化方向上施加電場,會產生機械變形,當去掉外加電場時,電介質的變形隨之消失,這種將電能轉化為機械能的現象稱逆壓電效應(超聲波發射器的工作原理)。
系統框圖
超聲波發射電路 方案一
利用555定時器構成多謝振蕩器產生40KHz的超聲波。如下圖為555定時器構成的多謝振蕩器,復位端4由單片機的P0.4口控制,當單片機給低電平時,電路停振;當單片機給高電平時電路起振。接通電源后,電容C2來不及充電,6腳電壓Uc=0,則U1=1,555芯片內部的三極管VT處于截止狀態。這時Vcc經過R3和R2向C2充電,當充至Uc=2/3Vcc時,輸出翻轉U1=0,VT導通;這時電容C2經R2和VT放電,當降至Uc=1/3Vcc時,輸出翻轉U1=1.C2放電終止、又從新開始充電,周而復始,形成振蕩。其振蕩周期t1和放電時間t2有關,振蕩周期為:
T=t1+t2?0.7(R3+2R2)C2
f=1/T=1/(t1+t2)?1.43/(R3+2R2)C2=40KHz 有上面公式可知,555多諧振蕩器的振蕩頻率由R2,R3,C2來確定。所以在電路設計時,先確定C2,R2的取值,即C2=3300pf,R2=2.7K?。再將R2和C2的值代入上式中可得:
R3=1.43/C2·f-2R2 為了方面在實驗中使用555芯片的3腳輸出40KHz的方波,在這里將其用10K的電位器代替。
為了增大U1的輸出功率,將555芯片的8腳接+12v的電壓,同時將其復位端4腳接高電平,使用示波器觀察555芯片3腳的輸出波形,通過調節電位器R3的阻值,使其輸出波形的頻率為40KHz。
方案二
該超聲波發射電路,由F1至F3三門振蕩器在F3的輸出為40KHz方波,工作頻率主要由C1、R1和RP決定,用RP可調電阻來調節頻率。F3的輸出激勵換能器T40-16的一端和反相器F4輸出激勵換能器T40-16(反饋耦合元件)的另一端,因此,加入F4使激勵電壓提高了一倍。電容C2、C3平衡F3和F4的輸出使波形穩定。電路中的反相器用CC4069六反相器中的四個反相器剩余兩個不用(輸入端應接地)。電源用9V疊層電池;測量F3輸出頻率應為40KHz,否則應調節RP,發射波信號大于8m。
方案三
該超聲波發射電路由VT1、VT2組成正反饋振蕩器。電路的振蕩頻率決定于反饋元件的T40-16,其諧振頻率為40KHz;頻率穩定性好,不需做任何調整,并由T40-16作為換能器發出40KHz的超聲波信號;電感L1與電容C2調諧在40KHz起作諧振作用。本電路電壓較寬(3v至12v),且頻率不變。電感采用固定式,電感量5.1mH,整工作電流約25mA,發射超聲波信號大于8m。
方案四
該發射電路主要有四與非門電路CC4011完成諧振及驅動電路功能,通過超聲波換能器T40-16輻射出超聲波去控制接收器。其中門YF1和門YF2組成可控振蕩器,當S按下時,振蕩器起振,調整RP改變振蕩器頻率為40KHz;振蕩信號分別控制由YF3、YF4組成的差相驅動器工作,當YF3輸出高電平時,YF4輸出低電平,當YF3輸出低電時,YF4輸出高電平。此電平控制T40-16換能器發出40KHz超聲波。電路中YF1至YF4采用高速CMOS電路74HCOO四與門電路,該電路特點是輸出驅動電流大(大于15mA),效率高等;電路工作電壓9V,工作電流大于35mA,發射超聲信號大于10m。
方案五
本電路采用LM386對輸出信號進行功率放大,LM386多用于音頻放大,而在本電路中用于超聲波發射。如圖所示,LM386第1腳和第8腳之間串接的E1和R1,使電路獲得較大的增益;TO為單片機輸入口的脈沖信號,經功率放大后由5腳輸出,驅動探頭發射超聲波。
超聲波接收器模塊 方案一
超聲波接收傳感器通過壓電轉換的原理,將由障礙物返回的回波信號轉換為電信號,由于該信號幅度較小(幾到幾十毫伏),因此須有低噪聲放大、40kHz帶通濾波電路將回波信號放大到一定幅度,使得干擾成分較小,其電路如下所示。在此電路中,為了防止在超聲波接收器上始終加有一直流信號讓其工作導致傳感器的壽命縮短,從而加上一隔直電容C4,從而C4和R5構成濾波電路。
在電路中,放大部分采用的是高速型運放TL084。綜合考慮了反相放大器、同相放大器和測量放大器的優缺點后,最終選擇了同相放大電路。因為同相放大器的理想輸入阻抗為無窮大,理想輸出阻抗為零,其帶負載能力較強等因素。在此電路中,根據同相放大器的閉環增益公式:Af=1+Rf/Rr 由于接收到的信號幅度為幾到幾十毫伏,所以需要將其放大400多倍使得其接收到的40KHz信號不會被干擾信號給掩蓋。為了防止引起運算放大器的自激振蕩,在第一級的放大電路中,R7取值為470 K?,R8取值為10K?,其增益放大: Af1=1+R7/R8=48 在第二級放大電路中,R11的取值為100K?,R12的取值為10K?,其放大增益: Af2=1+R11/R12=11 兩級增益為:Af=Af1·Af2=528 同相放大器的平衡電阻R6和R10的取值均為10K?。平衡電阻公式為:
Rp=Rf/(Rf+Rr)C5和R9構成了一階濾波電路。
方案二
該電路主要有集成電路CX20106A和超聲波換能器TCT40-10SI構成。利用CX20106A做接收電路載波頻率為38KHz;通過適當的改變C7的大小,可以改變接收電路的靈敏度和抗干擾能力。
工作原理:當超聲波接收探頭接收到超聲波信號時,壓迫壓電晶體做振動,將機械能轉化成電信號,由紅外線檢波接收集成芯片CX20106A接收到電信號后,對所接信號進行識別,若頻率在38KHz至40KHz左右,則輸出為低電平,否則輸出為高電平。
方案三
雙穩式超聲波接收電路
電路中,由VT5、VT6及相關輔助元件構成雙穩態電路,當VT4每導通一次(發射機工作一次),觸發信號C7、C8向雙穩電路送進一個觸發脈沖,VT5、VT6狀態翻轉一次,當VT6從截止狀態轉變成導通狀態時,VT5截止,VT7導通,繼電器K吸合???調試時,在a點與+6V(電源)之間用導快速短路一下后松開,繼電器應吸合(或釋放),再短路一下松開,繼電器應釋放(或吸合),如果繼電器無反應,請檢查雙穩電路元件焊接質量和元件 參數。
方案四
單穩式超聲波接收電路
本電路超聲波換能器R40-16諧振頻率為40kHZ,經R40-16選頻后,將40kHZ的有用信號(發射機信號)送入VT1至VT3組成的高通放大器放大,經C5、VD1檢出直流分量,控制VT4和VT5組成的電子開關帶動繼電器K工作。由于該電路僅作單路信號放大,當發射機每發射一次超聲波信號時接收機的繼電器吸合一次(吸合時間同發射機發射信號時間相同),無記憶保持功能。可用作無線遙控攝像機快門控制、兒童玩具控制、窗簾控制等。電路中VT1β≥200,VT2≥150,其他元件自定。本電路不需要調試即可工作。如果靈敏度和抗干擾不夠,可檢查三極管的β值與電容C4的容量是否偏差太大。經檢測,配合相應的發射機,遙控距離可達8m以上,在室內因墻壁反射,故沒有方向性。電路工作電壓3V,靜態電流小于10mA。
方案五
在本接收電路中,結型場效應VT1構成高速入阻抗放大器,能夠很快地與超聲波接收器件B相匹配,可獲得較高接收靈敏度及選頻特性。VT1采用自給偏壓方式,改變R3的阻值即可改變VT1的工作點,超聲波接收器件B將接收到的超聲波轉換為相應的電信號,經VT1和VT2兩極放大后,再經VD1和VD2進行半波整流為直流信號,由C3積分后作用于VT3的基極,使VT3由截止變為導通,其集電極輸出負脈沖,觸發器JK觸發D,使其翻轉。JK觸發器Q端的電平直接驅動繼電器K,使K吸合或釋放;由繼電器K的觸點控制電路的開關。
盲區形成的原因及處理
1、探頭的余震及方向角。發射頭工作完后還會繼續震一會,這是物理效應,也就是余震。余震波會通過殼體和周圍的空氣,直接到達接收頭、干擾了檢測;通常的測距設計里,發射頭和接收頭的距離很近,在這么短的距離里超聲波的檢測角度是很大的,可達180度。
2、殼體的余震。就像敲鐘一樣,能量仍來自發射頭。發射結束后,殼體的余震會直接傳導到接收頭,這個時間很短,但已形成了干擾。(注:不同的環境、溫度對殼體的硬度和外形會有所變化,導致余震時間會略有改變)
3、電路串擾。超聲波發射時的瞬間電流很大,瞬間這么大的電流會對電源有一定影響,并干擾接收電路。通常這三種情況情況在每次超聲波發射時都會出現,即超聲波在發射的時候,是一個高壓脈沖,并且脈沖結束后,換能器會有一個比較長時間的余震,這些信號根據不同的換能器時間會有不同,從幾百個uS到幾個mS都有可能,因此在這個時間段內,聲波的回波信號是沒有辦法跟發射信號區分的.因此,被測物體在這個范圍內,回波和發射波區分不開,也就無法測距,從而形成了盲區.。
在硬件方面通常將超聲波轉換器之間的距離適當增大來減少盲區的范圍;如果發射探頭和接收探頭分開,收發不互相影響,必須要求發射電路和接收電路的地線隔離很好,發射信號不會通過地線串擾過去,否則也是不能減小盲區的。
在軟件中的處理方法就是,當發射頭發出脈沖后,記時器同時開始記時。我們在記時器開始記時一段時間后再開啟檢測回波信號,以避免余波信號的干擾。等待的時間可以為1ms左右。更精確的等待時間可以減小最小測量盲區。(注:超聲波探頭方向角越小、發射頭和接收頭位置越遠,盲區就越小,測量距離也就越小)
第四篇:超聲波測距方案流程圖
超聲波測距的具體方案流程圖
距離顯示LED發射電路緩沖器高頻振蕩器接受電路放大器比較器單片機聲光報警模塊定時器
該方案采用超聲波測距系統,超聲波的優點如下:
超聲波指向性強,能量消耗緩慢。在介質中傳播的距離較遠,因而超聲波經常用于距離的測量
(1)超聲波的傳播速度僅為光波的百萬分之一,因此可以直接測量較近目標的距離,縱向分辨率較高。
(2)超聲波對色彩,光照度不敏感,適于識別透明,半透明及漫反射性差的物體,如玻璃,拋光體等。
(3)超聲波對外界光線和電磁場不敏感,可用于黑暗,灰塵,煙霧,電磁干擾強,有毒等惡劣環境中。
(4)超聲波傳感器體積小,設備簡單,易于做到實時控制,硬件容易實現,信息處理簡單,易于小型化和集成化。
(5)超聲波傳感器的價格低廉,并且在測量距離,測量精度等方面能達到工業實用要求,因此超聲波作為非接觸檢測識別手段,在汽車,飛機的防撞系統方面得到廣泛應用,越來越引起人們的重視,并得到較深的研究。
※單片機型號選用AT89S51 T89S51是89c51的升級版本,89SXX可以向下兼容89CXX等51系列芯片。其區別如下: 1、89S51在工藝上進行了改進,89S51采用0.35新工藝,成本降低,而且將功能提升,增加了競爭力。
2、新增加很多功能,性能有了較大提升。3、89s51有ISP在線編程功能,這個功能的優勢在于改寫單片機存儲器內的程序不需要把芯片從工作環境中剝離。速度更快、穩定性更好,燒寫電壓也僅僅需要4~5V即可。
4、最高工作頻率為33MHz,89C51的極限工作頻率是24M。5、89s51具有雙工UART串行通道。6、89s51內部集成看門狗計時器,不再需要像89C51那樣外接看門狗計時器單元電路。7、89s51帶有雙數據指示器。8、89s51帶有電源關閉標識。9、89s51帶有全新的加密算法,這使得對于89S51的破解變為不可能,程序的保密性大大加強,這樣就可以有效的保護知識產權不被侵犯。
10、電源范圍:89S5*電源范圍寬達4~5.5V,而89C5*系列在低于4.8V和高于5.3V的時候則無法正常工作。
11、燒寫壽命更長:89S5*標稱的1000次,實際最少是1000次~10000次,這樣更有利初學者反復燒寫,減低學習成本。
※
頻率為40kHz左右的超聲波在空氣中傳播的效率最高,因此通常將發送的超聲波調制到40kHz左右
第五篇:基于STM32的超聲波測距
基于STM32和US-100的超聲波測距儀設計
摘 要:結合嵌入式處理器STM32F103與超聲波傳感器設計的一種簡易的智能超聲波測距儀裝置,采用ARM內核芯片STM32F103ZET6的32位嵌入式微處理器與帶有溫度補償的US-100超聲波測距模塊實現聲波測距。STM32的串口資源相當豐富,能提供5路串口,通過微處理器的串口實現實時顯示和TFTLCD顯示距離等參數。US-100帶有溫度傳感器,對超聲波的聲速進行補償,提高測量精度。
關鍵詞:STM32F103;US-100;超聲波測距;TFTLCD顯示
Design of Ultrasonic Distance Measurement Based on STM32 And US-100
Abstract:Combined with the embedded microprocessor STM32F103 and ultrasonic sensor design a simple intelligent ultrasonic range finder devices, using ARM kernel chip STM32F103ZET632-bit embedded microcontroller processor with temperature compensation of US100 with a temperature sensor, to compensate the velocity of ultrasonic wave, improve the accuracy of measurement.Keywords:STM32F103;US-100;Ultrasonic Distance Measurement;TFTLCD-Showing
0 引言
超聲波測距是一種典型的非接測量方式。超聲波在氣體、液體及固體中以不同速度傳播,定向性好、[1]能量集中、傳輸過程中衰減較小、反射能力較強。且超聲波測距系統結構簡單、電路容易實現、成本低、速度快,所以在工業自動控制、建筑工程測量和機器人視覺識別等領域應用非常廣泛,它具有非接觸式測
[2]量、精度高、范圍寬和安裝維護方便等特點。
本設計結合嵌入式處理器與超聲波測距模塊提供一種超聲波測距裝置,系統采用嵌入式處理器控制US-100超聲波測距模塊實現超聲波的發送和接受。US-100帶有溫度補償,對測量的距離進行校正,提高了測量的精度。結合STM32豐富的串口資源,本裝置通過串口2與US-100相互通信,進行超聲波的收發和溫度補償,得到測量距離,通過TFTLCD顯示;并通過串口1在PC機上實時顯示。系統總體設計
US-100超聲波發射脈沖障礙物STM32F103處理器串口1通信TFTLCD顯示超聲波接收回波溫度校正串口2通信PC機串口顯示圖 1系統總體設計框圖
Fig.1 Diagram of the overall system design
系統總體設計框圖1,可以看到該超聲波測距裝置由STM32微處理器、US-100超聲波測距模塊、TFTLCD液晶顯示組成。控制器通過控制US-100超聲波模塊實現超聲波的收發,并進行溫度補償提高精度,得到精確的距離數據。再通過控制器自身串口通信向PC機串口實時顯示數據和TFTLCD液晶顯示的人機交互界面。STM32的高性能、低功耗和高主頻等優點給該裝置測距實現更加完備。硬件設計
2.1 主控制模塊STM32F103微控制器
基于ARM Conex-M3內核的STM32F103ZET6時鐘頻率可高達72Mhz,提供20KB的RAM、多大128KB的嵌入式
閃存和豐富的外設接口,處理速度比同級別的基于ARM7TDMI的產品快30%,產品功耗比同級別低75%。使用新內核ARM Conex-M3是針對MCU的低成本、縮減的管腳數目、降低的系統功耗,同時提供卓越的計算性能和先進的中斷系統響應的需要而推出的。ARM Conex-M3采用純Thumb2指令高效32位哈弗微體系結構和系統外設,使這個具有32高性能的ARM內核能夠實現8位和16位的代碼儲存密度,幾乎把所有應用軟件所需內存容量降低了一半。由于ARM Conex-M3的架構和豐富的外設組件,使得它也適用于要求高度集成和低功耗[4]的嵌入式場合
[3]2.2 US-100超聲波測距模塊
US-100超聲波測距模塊可實現2cm~4.5m的非接觸測距功能,擁有2.4V~5.5的寬電壓輸入范圍,靜態功耗低于2mA,自帶溫度傳感器對測量結果進行校正,同時具有GPIO,串口等多種通信方式,內帶看門狗,工作穩定可靠。有串口觸發測距和電平觸發測距兩種方式。本設計采用串口觸發測距,在此模式下只需要在TX管腳輸入0X55(波特率9600),系統便可發出8個40KHZ的超聲波脈沖,然后檢測回波信號。當檢
[5]測到回波信號后,模塊還要進行溫度值測量,然后根據當前溫度對測距結果進行校正,將矯正后的結果通過RX管腳輸出。US-100超聲波模塊的引腳圖如下:1腳接電源VCC,2腳接STM32F103ZET6的PA2,3腳接PA3,4腳接地即可。
圖 2 US-100超聲波測距模塊圖 Fig.2 US系統以STM32單片機為核心,實現對各部分的控制和響應。由于系統采用的ARM Conex-M3處理器集成調試功能,可實現快速驗證支持多種開發功能。結合具有Thumb-2功能強大的指令集,可只使用C語言編程(包括復位、中斷、異常處理),不需要模塊轉換,不需要匯編程序的軟件管理,系統中軟件部分采用模塊化設計,若干個小的程序或模塊,分別進行獨立設計、編程、測試、和查錯,最后連成1個完整的[7]應用程序,對每一個外設都有相應的例程,可以方便的進行移植。
系統軟件采用模塊化設計,主要包括主程序、串口中斷子程序兩個模塊。系統中主程序合理結合中斷子程序,使設計更加簡單,并且主頻消耗低,速度快。主程序控制處理器送入0X55數據,采用串口觸發的方式測距,得到觸發信號,進入中斷子程序。發射8個40KHZ的超聲波脈沖,檢測回波信號。當檢測到回波信號后,US-100自帶溫度補償功能對測量的數據進行校正,提高了測量精度,然后通過串口送給電腦實時顯示距離,并且在主程序中對測的距離進行液晶顯示,具有距離小于150mm時的蜂鳴器報警功能,另外可以在TFTLCD上顯示使用狀態。該設計還可以綜合利用在智能家居的智能系統中,可以用于容量探測,實時掌控;也可以用于車載倒車和避障系統中。超聲波測距具有很多實際應用,在各種智能系統中都有它的聲影。軟件運行流程如下:
開始串口中斷入口系統初始化串口初始化觸發信號發射超聲波串口2中斷子程序發射完否YNTFTLCD顯示距離distance接收數據Distance<150mmY 蜂鳴器鳴叫N計算距離串口1顯示結束結束 圖 4 主程序 圖 5 串口中斷程序
Fig.4 main program
Fig.5 A serial port interrupt program
/*************************** 主程序(程序入口)
***************************/
int main(void){
int distant;
u8 x=0;u8 temp[12];
//存放LCD ID字符串
delay_init();
//延時函數初始化
NVIC_Configuration();
//設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
uart_init(9600);
//串口1初始化為9600 uart_init_2(9600);
//串口2初始化為9600
LED_Init();
//LED端口初始化
BEEP_Init();
//初始化蜂鳴器端口
LCD_Init();POINT_COLOR=BLUE;
while(1)
{
USART_SendData(USART2,0x55);
//向串口2發送數據0X55輸入到TX端口
delay_ms(4000);
//延時
LED0=!LED0;
LCD_ShowString(30,110,200,16,16,temp);
delay_ms(2000);
LCD_ShowString(30,50,200,16,16,“ RANGING”);
if(distant<150&&distant!=0)
//距離小于150mm時報警
{
BEEP=1;
//蜂鳴器報警
LED1=0;
//LED亮
}
else
{
BEEP=0;
LED1=1;
} } } /*********************************** 串口中斷子程序(串口中斷入口)
***********************************/ int globe1;int globe2;int flag=0;int distant;u8 temp[12];
//存放LCD ID字符串 void USART2_IRQHandler(void)
//串口2中斷服務程序
{
u8 Res;
if(USART_GetITStatus(USART2, USART_IT_RXNE)!= RESET)//接收中斷(接收到的數據必須是0x0d 0x0a結尾)
{
Res =USART_ReceiveData(USART2);//(USART2->DR);//讀取接收到的數據
if(flag%2==0){
globe1=Res;
flag++;
}
else{
globe2=Res;
distant=globe1*256+globe2;
//距離計算公式
delay_ms(40000);
printf(“The distant is:%dcmn”,distant);//串口1顯示距離
flag++;
LCD_ShowString(50,130,200,16,16,“distance:”);
LCD_ShowNum(120,130,distant,4,16);
//液晶顯示距離
}
if(distant<150&&distant!=0)
{
BEEP=1;
LED1=0;
LCD_ShowString(30,90,200,16,16,“FULL”);
}
else
{
BEEP=0;
LED1=1;
LCD_ShowString(30,90,200,16,16,“USED”);
}
}
} 結論
本設計以ARM Conex-M3內核微控制器為超聲波測距的控制核心,再結合帶有超聲波收發和溫度補償的US-100超聲波測距模塊簡化了電路和開發環境。利用STM32中斷子程序優化了軟件編程,使系統運行內存更小,功耗更低;US-100進行的溫度補償減小了誤差,提高了精度,在近距離測量范圍內,該設計可達到mm級。該裝置具有很好的實用性。
參考文獻:
[1] 夏晨,李樸.反應釜設計及其溫度控制系統[J].化工自動化及儀表,2004,31(1):66-69 [2] 時德剛,劉嘩。超聲波測距的研究[J].計算機測量與控制,2002,9(10):31-33 [3] 陳文凱,張根寶,張震強.基于ARM Conex--M3內核微控制器的智能錘式料位檢測系統.計算機測量與控制,2008,16(11):1564-1566
[4] [5] [6] [7] 劉玉梅,張清志.基于超聲波測距裝置的節能裝置設計[J].儀表技術與傳感器,2009(20):109-110 蘇偉,鞏壁建.超聲波測距誤差分析[J].傳感器技術,2004,3(4):17-20 林志剛,曲建中.彩色薄膜晶體管液晶顯示器(TFT-LCD)基本原理與動態.山東電子,1999,11(2):33-38 張根寶,李秀平,龐蘇娟.基于ARM Conex-M3便攜式智能超聲波液位計.儀表技術與傳感器,2012(20):29-32