摘要
隨著我國經濟的飛速發展,汽車的需求量急劇增加,現在家家戶戶擁有汽車已經成為現實。但是隨著汽車數量的增加,其引發的事故也不斷在增加。倒車引發的汽車事故也占不小的比重,而倒車時車尾存在的盲區是其主導因素,因此解決倒車盲區是安全駕駛必須要解決的問題。
本設計采用以 STC89C52 單片機為核心的低成本、高精度、微型化數字顯示超聲波測距儀的硬件電路和軟件設計方法。整個電路采用模塊化設計,由主程序、數據處理子程序、顯示子程序等模塊組成。各探頭的信號經單片機綜合分析處理,實現超聲波測距儀的各種功能。在此基礎上設計了系統的總體方案,最后通過硬件和軟件實現了各個功能模塊。相關部分附有硬件電路圖、程序流程圖。
該設計通過模塊的組合和軟件的控制,實現了設計要求的功能。本設計在使用上面方便,成本較低。不但完成了這些功能,還達到了汽車倒車的安全指標。
隨著我國經濟的建設、社會的進步、人們生活水平的提高,汽車已經與老百姓的生活密不可分,而其作為重要的交通工具,在人們生活中的作用也越來越重要。但是伴隨著汽車數量的增加,同時也由于駕駛者本身技術的不熟練,或是道路及停車條件的影響,導致了交通事故頻發。在汽車事故中,由倒車引發的比重所占較大。因為在倒車時汽車后視鏡有死角,駕駛員目測距離的誤差、視線模糊等原因使汽車倒車存在極大的安全隱患,因此解決倒車盲區是關乎安全駕駛的首要問題。因此汽車產品家族中“倒車防撞系統”應需而生。通過調查,我們發現很多汽車駕駛員都希望自己的車具有發現汽車尾部障礙物的設備,并能為自己提供駕車提示,以此來減少事故的發生,保證行駛安全。倒車檢測及報警系統的產生不僅滿足了廣大駕駛員的需求,從一定程度上幫助人們解決了這一問題
隨著社會的進步,工業經濟的發展,汽車作為一項重要的代步工具,已然成為了人們生活中不可或缺的必需品之一。然而,汽車除了在生活中能為人們帶來便利之外,也同時帶來了巨大的問題[1]。一方面,隨著人們經濟實力的增強,汽車數量激增,不僅使道路交通承受巨大壓力,也使得停車場等公共交通場所變得擁擠不堪,給人們開車、停車增加了難度;另一方面,隨著汽車的普及,學習駕駛技術的人員也大幅增加,這就使得道路上增加了許多新手司機,因車輛碰撞而產生的糾紛變得越來越多。而在這其中,倒車問題就是一個典型的問題。
倒車在汽車駕駛過程中有著重要的作用,我們知道,在停車的時候需要用到倒車,在移位時也需要用到倒車,讓行時或者掉頭而寬度不足時,都需要用到倒車,如果倒車技術不過關,會給人們的開車生活帶來困擾。一方面,倒車需要回轉面積,如果技術不過關,需要的回轉面積就會增大,這樣一是會增加停車時所需面積,減少實際停車數量,同時會增加停車時間,造成停車場擁堵;另一方面,新司機通常不善于掌握停車時的方面角度,也不善于判斷障礙物離車身距離,因此會在停車倒庫時帶來麻煩,不僅浪費時間,也容易發生車輛碰撞事件[2]。為了解決倒車難的問題,人們經過不懈的努力,研制出一些倒車輔助裝置在人們倒車的時候提供幫助,例如:雷達警報系統、后視輔助倒車系統等。這些輔助裝置雖然能夠在一定程度上幫助駕駛人員完成倒車過程,但是也存在一些缺點,因此,能夠研制出一個好的倒車防撞系統就顯得十分重要了。
1.1.2 研究意義
倒車測距儀也就是倒車雷達,在國際和國內上都有很多,超聲波倒車測距系統是其中的一種比較簡單實惠的倒車測距儀。 在短短的幾年時間里,就從第一代發展到了第五代,并在不斷的繼續發展之中。但無論是如何發展,其結構通常包括幾部分,分別是控制器、超聲波傳感器(俗稱探頭)和顯示器(或蜂鳴器)等[3]。
第一代倒車雷達:倒車時通過喇叭提醒。在 90 年代的時候,人們經常能夠聽到“倒車請注意”這種聲音,這就是第一代倒車輔助系統。在司機開始倒車的時候,蜂鳴器發出這種提醒語句,引起路人的注意。這代產品現在的使用范圍很小,只有少部分的汽車還在使用。這代產品并不能夠算作是真正的倒車輔助系統,它只是引起了周圍人的注意,并沒有真正幫助到駕駛員操作汽車。這種產品價格低廉、技術落后,基本屬于淘汰了的產品。
第二代倒車雷達:蜂鳴器聲音提示。從倒車輔助系統的意義上來講,這才是真正的倒車輔助系統的開始。在倒車時,汽車在遇到障礙物時,蜂鳴器會發出聲音,這種聲音并不是一成不變的,越是急促的蜂鳴器聲音代表障礙物與汽車之間的距離越短。這代倒車輔助系統雖然能夠讓駕駛員知道有障礙物的存在,但由于沒有語音或者是數字的顯示,駕駛員并不能知道障礙物與汽車之間的準確距離,在倒車時對駕駛員幫助的實際意義不大。
第三代倒車雷達:距離顯示在數碼波段上。這代產品比起第二代產品的主要優點就是將具體的距離表示了出來。如果是物體,在 1.8 米開始顯示;如果是人,在 0.9 米左右的距離開始顯示。這一代產品主要有兩種顯示方式,一種是數碼顯示,這種顯示值顯示距離,另一種是波段顯示,通過三種不同顏色表示不同距離,綠色代表安全距離,黃色代表警告距離,而紅色則代表危險距離,此時應該停止倒車[4]。
第四代倒車雷達:液晶熒屏動態顯示。這一代產品在屏幕顯示時出現了動態顯示系統,與之前的產品相比較有了一個質的飛躍。只要汽車掛在倒檔上時,液晶屏幕上就會顯示出汽車的圖案,還會將周圍的障礙物情況也形象的顯示出來。這代產品顯示的圖案清晰漂亮,產品外觀也很美觀,安裝時也很方便。這代產品的優點就是安裝方便、精度較高,但是這代產品的抗干擾能力不強,有時會發生誤報的情況。
第五代倒車雷達:智能軌跡倒車系統。這代產品能夠彌補第四代產品的諸如抗干擾能力不強等缺陷和不足,在外觀上也做到了更加的小巧精致,不僅幫助駕駛員更加方便的操作汽車,也對汽車起到了裝飾的作用。
本次設計的研究內容是根據超聲波測距原理,設計出合適的電路,并由單片機協調控制整個系統的模塊,來完成超聲波脈沖測距的倒車雷達。在汽車以較低的速度進行倒車時,它可以識別出汽車后面的障礙物,測量出車尾與障礙物之間的距離進行實時顯示,發出聲音報警來提醒駕駛員倒車。本設計有望成為汽車駕駛員,尤其是公共汽車以及貨車駕駛員的好幫手,可以有效的減少甚至避免那些視野不良的公共汽車、集裝箱車、食品車、冷藏車等大型汽車的倒車交通事故,尤其適用于夜間輔助倒車、倒車入庫和進入停車場停車到位。本設計對提高汽車行駛安全性具有較大的意義。
1.3.2可行性分析
倒車雷達一般都是近距離測量,而激光測距和紅外測距主要用于遠程,比如測月球到地球距離,或者遠距離無障礙測距,且成本要比用超聲波大,因為光速為
3×108m/s,而市場上的一般單片機的最高頻率在十幾至幾十兆,假如測量的距離在十米左右,即使單片機別的都不做只用來計數,出射光大約在 0.033µs后返回,要求單片機 CLK 為 1/0.033MHz,也就是說時鐘頻率為 30M 的單片機剛剛發出出射激光的命令,反射光就已經在它的下個 CLK 脈沖來到了,更別提計數了,即使用頻率很高的單片機或者其他器件如 FPGA 等都并不能滿足實際所需要的精度。通常精度與收發間隔中得到的計數脈沖個數成正比,超聲波的速度要比光速小的多,傳播時間就比較容易檢測,能夠滿足倒車雷達在精度上的要求,并且超聲波強度容易控制,方向性好,容易實現定向發射雖然超聲波在空氣中傳播時,能量會緩慢衰減,有個最遠測距范圍,但仍能滿足倒車雷達等近距離測量。總之,基于超聲波測距汽車倒車雷達用起來會更加方便,更加令人放心。
1.4.1研究的主要內容
設計一個擁有微控制系統的倒車測距儀,該測距儀在汽車尾部一定距離范圍內能夠對汽車尾部距離尾部障礙物的距離做出顯示和提醒。本設計是使用數碼管顯示距離,蜂鳴器和二極管進行報警。因此研究的基本內容如下:
1.4.2需要解決的問題
為了達到課題的要求,在設計中需要解決的問題如下所列:
1.4.3文章結構
該論文的組織構造主要由以下部分組成:
第一章緒論。在這一章中講述了該課題研究的背景、發展、意義、目的和可行性分析以及研究內容。第二章為系統方案設計。這一章中對整個倒車系統進行設計,其中包括單片機、超聲波測距模塊、聲音報告模塊、蜂鳴器報警模塊等。
第三章為整個系統的硬件設計。這一章中介紹了本設計的整體電路,所選用的最小系統、顯示模塊、超聲波收發模塊等各個模塊的電路以及各個模塊在使用中需要注意的事項和選擇要求。
第四章為整個系統的軟件設計。這一章包括了軟件系統的整體設計和介紹,同時也包括了各個模塊的軟件設計。
第五章為整個系統的調試部分。在這一章中介紹了各個模塊的調試,在調試的時候應該注意的問題,比如調試的順序,如何對調試結果進行分析總結最后再做出修改。
1.5 本章小結
本章是在查閱了相關文獻資料后,對該課題研究的背景和意義、倒車雷達的發展、此次設計的目的和可行性作了分析,并詳細敘述了研究的內容。為本次設計作了充分的前期準備工作,同時為設計的順利進行打下了基礎。
本設計是由控制系統(STC89C52 單片機)作為數據的處理中心和整個系統的控制中心,再由顯示報警系統(數碼管以及揚聲器和蜂鳴器報警模塊)、測距系統(超聲波收發模塊)等來組成整個系統,最后達到設計的目的。單片機是整個系統的核心部件,協調各部分的工作。在這一章中將對整體系統的結構進行介紹,并且對各個部分進行詳細的介紹。
2.1 系統整體方案
倒車檢測及報警系統是由超聲波發射端發射信號、超聲波接收端接收信號,再通過端口送到控制中心及單片機內部進行數據的處理判斷以及最后進行顯示報警等。具體是由單片機控制超聲波收發模塊的 Trig 口產生時間大于 10us 的高頻 TTL 信號來驅動超聲波模塊內部連續發出 8 個 40kHz 的周期脈沖,超聲波收發模塊的 Echo 腳檢測回波信號的脈沖寬度。Echo 腳與單片機的 P11 口相連。當出現回波信號時,計數器便開始計數,在檢測到回波脈沖結束的瞬間,計數器停止計數,得到從發射端到接收端的時間 t 后,利用測距公式 s=(t*340/2)(單位:米)可計算出距離量,同時由顯示器顯示。整個系統的方案框圖如圖 2.1 所示。
圖 1 系統總體結構框圖
從圖 1 結構框圖可以看出來整個系統的模塊比較少,因此在使用起來比較方便、容易操作,比較有使用價值。
2.2 控制系統介紹
在這一節中將對單片機的發展歷史和功能進行總體介紹,并對本設計使用的
STC89C52 單片的內部結構和功能進行了詳細的介紹。
2.2.1 單片機概要
單片機是一種集成電路芯片,是采用超大規模集成電路技術把具有數據處理能力的中央處理器、只讀存儲器、隨機存儲器、多種端口和中斷系統、定時/計數器等功能一起集成到一塊硅片上,從而構成一個小而完善的微型計算機系統,在工業控制領域應用廣泛。
2.2.2 單片機發展歷史
從 1971 年單片機的問世,發展至今經歷了 SCM、MCU、SOC 三大階段,在早期的單片機及 SCM 都是 4 位或者 8 位的。8051 是其中最成功的單片機之一。但隨著工業的擴展,16 位單片機也開始出現,但早期因為價格昂貴使用較少。到了 90 年代的時候電子產品飛速發展,單片機技術迅速發展,32位的出現很快代替了 16 位。當代單片機系統已經不再只在裸機環境下開發和使用,大量專用的嵌入式操作系統被廣泛應用在全系列的單片機上。而在作為掌上電腦和手機核心處理的高端單片機甚至可以直接使用專用的 Windows 和 Linux 操作系統。
2.2.3 STC89C52
STC89C52[5]是美國 ATMEL 公司生產的低功耗、高性能 CMOS8 位單片機,片內含 8k bytes 的可系統編程的 Flash 只讀程序存儲器。器件采用 ATMEL公司的高密度、非易失性存儲技術生產,兼容標準 8051 指令系統及引腳。它集 Flash 程序存儲器既可在線編程(ISP)也可用傳統方法進行編程及通用 8位微處理器于單片芯片中, ATMEL 公司的功能強大,低價位 STC89C52 單片機可為您提供許多高性價比的應用場合,可靈活應用于各種控制領域。STC89C52 單片機引腳定義圖如下圖 2所示。
主要管腳有:
XTAL1(19 腳)和 XTAL2(18 腳)為振蕩器輸入輸出端口,外接 12MHz 晶振。
RST/Vpd(9 腳)為復位輸入端口,外接電阻電容組成的復位電路。
VCC(40 腳)和 VSS(20 腳)為供電端口,分別接+5V 電源的正負端。
P0~P3 為可編程通用 I/O 腳,其功能用途由軟件定義。
圖 2 STC89C52 單片機引腳圖主要性能參數:
除此以外 STC89C52 還提供一個 5 向量兩級中斷結構,片內振蕩器及時鐘電路。同時,STC89C52 可降至 0Hz 的靜態邏輯操作,并支持兩種軟件可選的節電工作模式。空閑方式停止 CPU 的工作,但允許 RAM、定時/計數器、串行通信口及中斷系統繼續工作。掉電方式保存 RAM 中的內容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復位。
2.3 測距系統介紹
目前汽車倒車雷達預警系統測距技術主要有激光、毫米波雷達、攝像系統、紅外線、超聲波等,不同的目標探測方式其工作過程和原理有不同之處,但它們的主要目的都是通過前方返回的探測信息判斷前方車輛和本車間的相對距離,并根據兩車間的危險性程度做出相應的預防措施。下面對五種不同的測距技術方案進行介紹和比較。
2.3.1不同方案介紹
激光測距:
激光測距裝置[6]是一種光子雷達系統。目前在汽車上應用較廣的激光測距系統可分為非成象式激光雷達和成象式激光雷達。
非成象式激光雷達根據激光束傳播時間確定距離。它的工作原理是:從高功率窄脈沖激光器發出的激光脈沖經發射物鏡聚焦成一定形狀的光束后,用掃描鏡左右掃描,向空間發射,照射在前方車輛或其他目標上,其反射光經掃描鏡、接收物鏡及回輸光纖,被導入到信號處理裝置內光電二極管,利用計數器計數激光二極管啟動脈沖與光電二極管的接收脈沖間的時間差,即可求得目標距離;成象式激光雷達又可分為掃描成象激光雷達和非掃描成象激光雷達。掃描成象激光雷達把激光雷達同二維光學掃描鏡結合起來,利用掃描器控制激光的射出方向,通過對整個視場進行逐點掃描測量,即可獲得視場內目標的三維信息。
毫米波雷達測距:
毫米波[7]是指波長介于 1~10mm 之間的電磁波,雷達是利用目標對電磁波的反射來發現目標并測定其位置的。
攝像系統測距:
CCD 攝像機是一種用來模擬人眼的光電探測器。利用面陣 CCD 可獲得被測視野的二維圖像,但無法確定與被測物體之間的距離,只使用一個 CCD 攝像機的系統稱為單目攝像系統;為獲得目標三維信息,模擬人的雙目視覺原理,利用間隔固定的兩臺攝像機同時對同一景物成象,通過對這兩幅圖像進行計算機分析處理,即可確定視野中每個物體的三維坐標,這一系統稱為雙目攝像系統[8]。
紅外線測距:
紅外線測距[9]和激光、超聲波測距在原理上基本相同,均是根據發射波和反射波的時間間隔來判斷目標距離的,車載儀器通過發射并接收前方物體反射回的紅外線,依據信號的強弱及波長的不同,同時分析時間差,可分析出前方物體的性質及與汽車的距離。
超聲波測距:
超聲波[10]簡單的說就是音頻超過了人類耳朵所能夠聽到的范圍。在彈性媒質中,如果波源所激起的縱波的頻率在 20Hz 到 20kHz 之間,就能引起人的聽覺。在這一頻率范圍內的振動稱為聲振動,聲振動所激起的縱波稱為聲波;頻率高于 20kHz 的機械波稱為超聲波;頻率低于 20Hz 的機械波稱為次聲波。與光波不同,超聲波是一種彈性機械波,它可以在氣體、液體和固體中傳播。電磁波的傳播速度為 3x108m/s,超聲波在空氣中的傳播速度約為340m/s(常溫下),其速度與電磁波相差 5 個等級,其速度相對電磁波是非常慢的。
2.3.2優缺點對比
超聲波技術主要用于短距離探測,成本低,制作安裝簡便,適應惡劣環境;紅外線技術一般用于夜間環境,對環境適應性差:微波雷達測距和激光測距相對于超聲波測距來講精度更高,定位更準確"攝像系統技術價格較貴;毫米波雷達技術和激光技術的成本很高,所以運用其原理進行測量的設備價格也是相當高的,因而現在只是在比較高級的轎車中才有所應用。綜合以上考慮和實際應用條件,本系統的測距模塊采用的是第五種方案——超聲波測距,并在超聲波測距技術方案的設計上進行了簡化和改進。
2.4 超聲波測距2.4.1 超聲波測距原理超聲波測距的方法有多種,如相位檢測法[11]、聲波幅值檢測法和渡越時間檢測法
等。相位檢測法通過測量接收波和發射波的相位差來判斷距離的,其測量精度高,但檢測范圍有限,只適合短距離測量;聲波幅值檢測法是根據反射波的幅值大小 來判斷距離的,優點是電路簡單且成本低,缺點是測量精度不高,抗干擾能力差;渡越時間檢測法是通過接收從超聲波發射到接收到超聲波之間的時間差,來判斷距離的,此檢測法介于兩者之間,電路也比較簡單,且有較遠的測量距離和較高的測量精度,所以得到了較為廣泛的應用。考慮到倒車雷達對測量距離和測量精度的要求,本論文采用渡越時間檢測法來檢測車尾要和障礙物之間的距離,其測距原理如圖 3 所示。
測距時由安裝在相同位置的超聲波發射器和超聲波接收器完成超聲波的發射和接收,由定時器計時。定時器記錄下超聲波往返傳播經歷的時間t(s)。常溫下,超聲波在傳播速度約為 340m/s,所以發射點距障礙物之間的距離為:
L =3 4 0t/2
公式(1)
L 為車尾與障礙物的距離,單位為米;t 為計時器記錄的時間,單位為秒。
圖3 超聲波測距原理圖
單片機內部定時器的計時,實際上是機器周期 T 的計數,設時鐘頻率 Fosc 取
12MHz,而定時器 TIMB 的計數頻率為系統時鐘頻率的 1 個機器周期,設計數值為 N,則
或
公式(2)
2.4.2超聲波模塊——HY-SRF05 超聲波模塊HY-SRF05 超聲波測距模塊可提供 2cm 到 450cm 的非接觸式距離感測功能,測距精度可高達 2mm。模塊包括:超聲波發射器、接收器和控制電路。
基本工作原理:
實物圖:
實物圖如圖 4 所示,VCC 接 5V 電源,GND 為地線,TRIG 觸發控制信號輸入,
ECHO 回響信號輸出。
圖 4 實物圖
超聲波時序圖:
超聲波時序圖反映了整個超聲波測距模塊的測距是如何進行的,當然也顯示了測距的原理。超聲波時序圖如下圖 5 所示。
圖 5 超聲波時序圖
對圖 2.5 的解說:當 Trig 腳發出持續時間為 10us 以上的 TTL 觸發信號,模塊內部便連續發出 8 個 40kHz 的周期電平并檢測回波,一旦檢測到回波信號就通過 Echo 輸出回響信號。回響信號的脈沖寬度與所測的距離成正比。由此通過發射信號到收到的回響信號時間間隔可以計算得到距離。
2.5 顯示報警系統
在這一節中,將介紹該倒車測距儀的提示方式與報警模式。用數碼管顯示距離障礙物的具體距離的同時加入語言報告來警示駕駛人員,同時由蜂鳴器響叫頻率的不同以此來提醒駕駛人員使其在心里有一定的判斷。
圖6 顯示模塊圖
語音播報芯片相關說明:
圖7芯片引腳圖
圖8 語音播報模塊原理圖
2.6 本章小結
在這一章中對整個系統的設計方案和所用器件類型分別進行了介紹。其中超聲波測距模塊是關鍵模塊之一,它關系到測距方法的確定以及最終測距誤差等的產生原因提供了分析切入點。最終確定使用超聲波測距模塊進行距離測量,使用數碼管作為顯示模塊,使用蜂鳴器進行提示報警。
3 系統硬件設計
倒車測距儀由超聲波傳感器(俗稱探頭)、控制器、顯示器等組成,采用超聲波測距方法,在控制器的控制下由傳感器發射超聲波信號,當遇到障礙時,產生回波信號,傳感器接收到回波信號后,經控制器進行數據處理,判斷出障礙物的位置,由顯
示器顯示距離并根據距離發出警報信號,從而達到安全倒車的目的。
3.1 系統總電路圖
根據系統的方案設計,設計出系統的電路框圖如 3.1 所示。以及各個模塊器件的接口性質,運用 protel 軟件[14]畫出系統電路圖如圖 3.2 所示。
3.1.1 系統工作原理
當電池安裝好且位于 PCB 板子上的電源開關已經被按下,系統供電。整個系統的運作為:超聲波在標準空氣中的傳播速度為 331.45 米/秒,約為340 米/秒。單片機通過 P10 口控制超聲波收發模塊的 Trig 腳發出超聲波,模塊內部發射脈沖信號并檢測回波,當接收端一檢測到回波信號計數器就開始計數,回波信號結束則計數完成。數據被送入 STC89C52 中進行處理計算,并將計算結果顯示到數碼管上,同時控制蜂鳴器的鳴叫。
3.1.2 最小系統電路
單片機最小系統包括了單片機、晶振電路、復位電路以及電源電路。下面將會介紹部分電路的設計。
晶振電路:
STC89C52 內部有一個用于構成振蕩器的高增益反相放大器,引腳 X1 和 X2 分別是此放大器的輸入端和輸出端。時鐘可以由內部方式產生或外部方式產生。內部方式的時鐘電路所示,在 X1 和 X2 引腳上外接定時元件,內部振蕩器就產生自激振蕩。
定時元件通常采用石英晶體和電容組成的并聯諧振回路。電容值 30pF,電容值的大
小可對頻率起微調的作用,晶體振蕩頻率為 11.0592MHz。晶振電路如圖 10所示。
圖 10 晶振電路圖
復位電路:
復位是單片機的初始化操作。其主要功能是把 PC 初始化為 0000H,使單片機從 0000H 單元開始執行程序。除了進入系統的正常初始化之外,當由于程序運行出錯或操作錯誤使系統處于死鎖狀態時,為擺脫困境,也需按復位鍵重新啟動。RESET 引腳是復位信號的輸入端。復位信號是高電平有效,其有效時間應持續24個振蕩周期(即二個機器周期)以上。整個復位電路包括芯片內、外兩部分。外部電路產生的復位信號(RESET)送至施密特觸發器,再由片內復位電路在每個機器周期的 S5P2 時刻對施密特觸發器的輸出進行采樣,然后才得到內部復位操作所需要的信號。復位電路的電路圖也如上圖 10所示。
3.2 超聲波測距模塊設計
由 STC89C52 的 P10、P11、P12 接口出來,分別接超聲波收發模塊 HY-SRF05 的 Trig、Echo、Out 腳,以此來達到脈沖觸發以及數據傳輸處理的目的。圖 11 是超聲波模塊與單片機連接的電路圖。
圖 11 超聲波收發模塊電路圖
3.3 蜂鳴器的硬件設計
在這一節中,介紹的是整個系統中的另外一個具有提示功能的器件——有源蜂鳴器。蜂鳴器的具體電路圖如 3.7 所示。由于此次設計使用的是有源蜂鳴器,我們可以知道蜂鳴器需要一個驅動電路,這里用三極管進行驅動。同時在電阻左側接一個上拉電阻到單片機電源端。
圖 12 蜂鳴器電路圖
3.4 本章小結在這一章中我們介紹了 STC89C52 單片機最小系統及其周圍電路的電路設計,其中包括了復位電路、晶振電路、電源電路、顯示器電路和蜂鳴器電路。通過本章節的詳細介紹不僅對硬件設計有了直觀的了解,還對設計中需要注意的地方都一一考慮到了,做到了硬件功能的實現。
本次設計的軟件設計部分采用 C51 語言進行編程,運用模塊化的程序設計思想,對具有不同功能的模塊程序進行分別編程,其他模塊程序包括:數據處理的程序、顯示程序和蜂鳴器報警程序等,以便移植或調用。這樣使軟件層次結構清晰,有利于軟件的調試和修改,在完全正確之后再進行組裝、調試和燒錄。
4.1 主程序設計
整個設計的關鍵即是對距離的測量,再通過單片機處理測量得到的數據,就能精確的實現測距。在測距中,各種信號對聲速的影響都將干擾到測距的準確性,其中超聲波的余波信號對整個設計中測距的干擾的影響比較大。超聲波接收回路中的超聲波信號一共有兩種:第一種波信號為余波信號,就是當發射探頭發射出信號之后,超聲波接收探頭馬上就接收到的超聲波信號,實際就是超聲波的發射信號;另一種波信號就是有效信號,即經過障礙物表面反射回來的超聲波回波信號,也是所需要測量的距離數值。
在進行超聲波測距時,由于使用的是超聲波測距模塊 HY-SRF05,按照本系統的
測距需要,需要得到超聲波的傳輸時間 T,進行運算以得到車子與障礙物的距離 S。
如何得到超聲波的傳輸時間 T 呢?
采用單片機的 P10 口與 Trig 連接,控制發射端產生 10us 以上的 TTL 觸發電平;模塊內部自動產生 8 個 40kHz 的脈沖串并檢測回波; P11 口與Echo 口連接,當接收端檢測到回波單片機內部的計數器 T0 就開始計數,回波的寬度就決定了計數值大小,由此便得出超聲波的的傳輸時間 T。
4.1.2系統程序構建
系統設計框圖:
超聲波測距系統軟件部分采用模塊化設計思想,將系統分為主程序、初始化處理模塊、中斷檢測模塊、延時處理模塊、數據處理模塊和顯示模塊,其軟件程序系統結構圖如下圖13 所示。
圖 13系統軟件設計框圖
主程序流程圖:
整個系統的組成在進入主函數后將進行初始化,打開顯示刷新中斷利用中斷進行刷新。再進入測距函數后,每一次測距都是單片機進行掃描實現,同時定時器也在這里開啟。在處理接收到的數據信號后就關閉發射中斷處理完后再開啟中斷,最后記錄下來計數器的時間再由處理數據程序進行計算。最后由操作程序進行相應的操作。根據該軟件系統結構框圖,得到系統的主程序實現流程圖。整個程序的編程環境是在 keil 環境下用 c 語言進行編程。而用 c語言作為編程的主要原因是其編程比較簡單,對編程者要求不是很高;c 語言編出來的程序可讀性很高;編出的程序可以廣泛的進行移植和借用等。圖 14為系統的主程序流程圖。
圖14主程序流程圖
系統主程序:
系統的主程序首先是顯示屏初始化,設置定時器 T0 的工作模式為 MODE1,并且 STC89C52 的定時器計數器為 16 位。延遲一段時間之后,開啟中斷,開啟定時器,位總中斷 EA 置到允許位。在超聲波接收端一接收到回波信號時,計數器就開始計數,直到回波高電平結束。回波信號的寬度與計數值成正比。然后利用計數器得到的值計算超聲波發射和接收之間所用的時間,并調用測距公式對距離進行計算。經過單片機的處理得到的距離 S,送至顯示器,并將距離顯示出來;同時判斷 S 的大小,看蜂鳴器是否鳴叫。之后進行下一次的測距工作。
程序如下:
void main(void)
{
TMOD=0x11; //設T0為方式1,GATE=1;
TH0=0;
TL0=0;
TH1=0xf8; //2MS定時
TL1=0x30;
ET0=1; //允許T0中斷
ET1=1; //允許T1中斷
TR1=1; //開啟定時器
EA=1; //開啟總中斷
while(1)
{
while(!RX); //當RX為零時等待
TR0=1; //開啟計數
while(RX); //當RX為1計數并等待
{
TR0=0; //關閉計數
flag_bofang=1;
}
Conut(); //計算
if(Mode==0)
{
if(abs(S-current_S)>=2)
{
current_S=S;
bofang(Feng,disbuff);
}
}
}
}
4.2 測距模塊的設計
4.2.1 測距模塊的設計思想
根據回波信號的脈沖寬度得知計時器的數據以及距離公式:距離=(340*時間/2)
(m),可以計算得到小車距離障礙物的距離。
4.2.2測距模塊的程序
void Conut(void)
{
time=TH0*256+TL0; //讀出T0的計時數值
TH0=0;
TL0=0; //清空計時器
S=(time*1.7)/100; //算出來是CM
if(Mode==0) //非設置狀態時
{
if((S>=700)||flag==1) //超出測量范圍顯示“-”
{
Feng=0; //蜂鳴器報警
flag=0;
disbuff[0]=10; //“-”
disbuff[1]=10; //“-”
disbuff[2]=10; //“-”
}
else
{
//距離小于報警距
if(S<=BJS)
{
Feng=0; //報警
}
else //大于
{
Feng=1; //關閉報警
}
disbuff[0]=S%1000/100; //將距離數據拆成單個位賦值
disbuff[1]=S%1000%100/10;
disbuff[2]=S%1000%10 %10;
}
}
else
{
Feng=1;
disbuff_BJ[0]=BJS%1000/100;
disbuff_BJ[1]=BJS%1000%100/10;
disbuff_BJ[2]=BJS%1000%10 %10;
}
}
4.3 蜂鳴器報警程序
主程序得到的結果是通過顯示屏顯示,并且還要控制蜂鳴器通過不同頻率的鳴叫來提醒,以及 LED 燈的閃爍。在該設計中,利用的是單片機 I/O 端口引腳來控制。并且通過計數的方式來控制兩個引腳進行高低互換產生控制信號。蜂鳴器報警程序的程序流程圖如圖15 所示。
圖 15蜂鳴器程序流程圖
4.3.2 蜂鳴器程序if(S<50) {buzz=1; DelayMs(S*50); buzz=0; DelayMs(S*5); } if(S>50) buzz=1;} |
判斷蜂鳴器報警距離是否小于 50cm,若超過 50cm 則蜂鳴器不報警,若小于 50cm 則報警。
4.4 本章小結
本章在上一章硬件電路設計的基礎上進行了系統軟件的設計。首先進行的是整個系統的設計,在設計之前需要明確要達到什么樣的功能怎樣實現這些功能,才能分模塊分別進行設計。因此本章里面包括了系統的總體邏輯關系及軟件控制流程圖;其次,就是需要對各子程序進行設計,設計依據便是硬件電路。因此整個系統的軟件程序劃分為中斷處理程序、測距程序、蜂鳴器程序、等。
在調試的過程中分硬件調試和軟件調試。其中第一階段為硬件的調試,一般會遇到的情形有:邏輯錯誤、原器件損壞、可靠性差、電源故障等。本設計中使用的是萬用表進行硬件檢測;第二階段為軟件的調試,最初的軟件調試為錯誤檢測,比如編程的錯誤,第二步為進行邏輯錯誤檢查,最后進行整個程序各個部分運行時間的調試。第三節為誤差分析,針對本次設計中出現的誤差分析可能產生的原因,提出改進的方法。
5.1 硬件的調試
硬件調試是一項細心的工作,一定要有耐心。硬件調試工具需要示波器、萬用表等,同時需要主芯片調試開發軟件及相應的仿真器。硬件調試首先要熟悉原理圖原理
和PCB布局,然后根據功能模塊進行相關調試。
5.1.1硬件調試流程
其中硬件調試部分為:
5.2 軟件的調試5.2.1 軟件調試的方法
將編制的程序投入實際運行前,用手工或編譯程序等方法進行測試,修正語法錯誤和邏輯錯誤的過程。這是保證計算機信息系統正確性的必不可少的步驟。編完計算機程序,必須送入計算機中測試。軟件調試一般分為以下四個階段:編寫程序并查錯;在C語言的編譯系統中編譯源程序;對程序進行編譯連接,并及時發現程序中存在的錯誤;改正錯誤。
在軟件中調試程序時出現的問題有:
在軟件調試過程中,對出現的錯誤進行了認真的分析和修改,多次調試成功后,能夠很好的達到預定的設計效果。
編好的程序進行細心的檢查后,再通過 keil 軟件把程序燒進單片機,進行實物演示。把電池安裝好,打開電源開關,同時按下板子上的電源按鈕,顯示屏幕點亮,在系統前方移動障礙物,可以明顯聽見蜂鳴器的鳴叫的頻率發生了變化。但需要注意的是蜂鳴器由于程序設定的限制,只能在 50cm 內的距離進行響叫。屏幕實時顯示了距離障礙物的距離。可以看到:結果達到了預期,較為滿意。如圖 5.2 所示。
5.3 誤差分析
5.3.1性能分析
雖然結果和預想的有很大的差距,但總體來說已經基本上達到了要求,理想上超聲波測距能達到5米左右,而我們所能實現的最大距離只有3米,造成這種原因我想有:我采用的是11.0592MHZ的晶振,理論上是按照12MHZ的晶振計算的,所以對系統造成了一定的誤差;沒有考慮環境因素對本次設計的影響,造成測量結果有不小的誤差。
5.3.2 超聲波測距注意問題
在這一章中,對整個設計的硬件和軟件出現的錯誤和問題進行了分析和解決,并對設計出的實物出現誤差的可能原因進行了分析總結,且提出了可能的解決方法。先是對硬件方面的檢驗,隨后是對軟件程序的編寫和調試。其中顯示模塊的調試程序、測距的調試程序、蜂鳴器的調試程序以及對整個程序進行調試。最后完成對整個倒車系統的軟件部分進行調節,調試也是十分重要的一個環節,調試通過才能實現最后的功能。
結 論
本設計主要介紹了基于 STC89C52 單片機而設計出的一款倒車檢測及報警系統。
整個設計中超聲波測距是實現功能的關鍵,把來自超聲波測距模塊的信號傳輸到單片機端口并由單片機內部 CPU 執行相應的處理程序。設計中采用數碼管模塊進行顯示和用蜂鳴器進行報警,其特點是根據距離障礙物的遠近不同,蜂鳴器的變頻鳴叫。整個設計的編程是用 keil 編程軟件來完成的,程序語言采用的是 C 語言,程序內容包括主程序、中斷程序控制觸發高電平的產生、檢測回波并計數、計算距離、蜂鳴器報警、數碼管模塊顯示。本設計完成的汽車倒車檢測及防撞系統操作方便,測距的范圍可以在 2cm-700cm 之間,基本能夠達到設計要求。
另一方面本設計雖然實現了功能,但是還存在一些缺點,如測量精度不高,測量過程會遭受多種因素的影響。因為實際使用的倒車測距儀工作環境多變,尤其是溫度變化對測距的影響,如果將溫度補償加到設計中,系統將更加完善。本系統在程序上比較繁瑣,測距移動的過程中可能反應時間不夠快,因此需要優化其靈敏度。
致 謝
通過本次畢業設計的完成,檢驗了自己大學所學的知識和自己的綜合實踐能力,同時也對自己也有不少提高。更重要的是將自己獨立解決事情的能力提高了,為自己以后的工作積累下了又一筆不菲的寶貴財富。
在這次設計中,首先應該感謝的是我本次設計的導師李向明老師。感謝他給予我的大力幫助和對我畢業設計的精心指導。在整個設計階段,從開始的題目分析到硬件的設計以及后面軟件的設計,李老師都給予了我很大的幫助;在硬件的搭建和調試過程中李老師也幫我進行了問題的分析,并給我提了很多寶貴的意見和建議。在這里我十分感謝我的導師,感謝他對我們盡職盡責。
其次我要感謝實驗室的老師們,感謝他們為我提供了一些硬件和實驗器材的使用。衷心的謝謝你們!當然我更得感謝我父母對我的辛勤付出,是他們讓我有這個機會進入武漢華夏理工學院這所學習氛圍濃厚的理工科大學,使我能用四年的時間安心學習,學習知識,學習做人,學習如何學習。
最后要感謝的是我偉大的母校——武漢華夏理工學院,它為我提供了一個良好的學習環境和優良的教學資源。更要感謝這四年來所有傳授我知識的老師們,感謝他們的無私奉獻,將他們所知道的無私地教導了我們。同時也感謝我身邊的所有朋友在生活和學習上給我的幫助。
原理圖:
歡迎光臨 (http://m.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |