新聞中心

        EEPW首頁 > 汽車電子 > 設(shè)計(jì)應(yīng)用 > 用MC68HC705J1A實(shí)現(xiàn)超聲波汽車倒泊防撞報(bào)警器的設(shè)

        用MC68HC705J1A實(shí)現(xiàn)超聲波汽車倒泊防撞報(bào)警器的設(shè)

        作者: 時(shí)間:2012-03-27 來源:網(wǎng)絡(luò) 收藏

        超聲波汽車倒泊防撞報(bào)警器是超聲波測距的一個(gè)重要應(yīng)用。在汽車倒泊時(shí),利用超聲波的反射可以探測汽車尾部與障礙物之間的距離,提供多級聲光報(bào)警。本文介紹一種以HCJ1A單片機(jī)為核心的低成本超聲波汽車倒泊防撞報(bào)警器的設(shè)計(jì)方法,該報(bào)警器的感應(yīng)時(shí)間小于0.5s,測距精度可達(dá)0.1m。

        本文引用地址:http://www.104case.com/article/197063.htm

        1 超聲波測距原理

        超聲波測距原理是根據(jù)超聲波遇到障礙物后可反射回來的特性,記錄發(fā)射信號到收到第一個(gè)反射信號的時(shí)間t,利用公式s=c·t/2,計(jì)算出距離s。其中c是聲速,標(biāo)準(zhǔn)狀態(tài)下聲速c=331.4m/s。超聲波測距原理如圖1所示。

        11.jpg

        2 超聲波汽車倒泊防撞報(bào)警器的組成

        超聲波汽車倒泊防撞報(bào)警器的組成如圖2所示。

        22.jpg

        報(bào)警器只在汽車倒泊時(shí)才使用,采用倒車燈的電源+12V供電。倒車時(shí)障礙物可能在車的后面,也可能在車的側(cè)面。為了保證各種情況下探測障礙物的準(zhǔn)確性,采用雙路探測結(jié)構(gòu),取兩路中距離較短的一路作為有效探測距離。超聲波探測頭具有電聲轉(zhuǎn)換和聲電轉(zhuǎn)換兩種功能,分時(shí)用于發(fā)送信號和接收信號。聲光報(bào)警電路由單片機(jī)直接控制,利用不同的蜂鳴器鳴叫聲音和不同顏色的LED閃動(dòng)實(shí)現(xiàn)多段報(bào)警。

        3 超聲波汽車倒泊防撞報(bào)警器的硬件電路設(shè)計(jì)

        超聲波汽車倒泊防撞報(bào)警器的硬件電路原理如圖3所示(圖中只給出了一路檢測電路,另一路與此相同)。

        33.jpg

        HCJ1A單片機(jī)是Motorola公司J系列單片機(jī)中性能價(jià)格比最高的單片機(jī)之一,廣泛應(yīng)用于各種中小型檢測控制系統(tǒng)中。HCJ1A是一個(gè)具有1240字節(jié)EPROM/OTPROM的8位微控制器,主要硬件資源有:1240字節(jié)EPROM、64字節(jié)RAM、14個(gè)雙向輸入/輸出端口、多功能計(jì)數(shù)器、外部中斷等,同時(shí)具有看門狗和非法地址檢測、無最小時(shí)鐘頻率選擇等特點(diǎn)。在超聲波汽車倒泊防撞報(bào)警器中,充分利用其雙向并行口的輸入和輸出功能,進(jìn)行信號的發(fā)送、接收及聲光報(bào)警等控制。

        超聲波探測頭選頻頻率為40kHz方波,由軟件在單片機(jī)的發(fā)送管腳PA6和PA7上直接產(chǎn)生20個(gè)方波脈沖,再通過變壓器升壓變換,經(jīng)超聲波探測頭發(fā)射出去。由于傳感器本身的恢復(fù)過程,發(fā)射結(jié)束后仍有不大于500μs的阻尼震蕩。發(fā)射信號同時(shí)回送到接收電路。

        發(fā)射信號遇到障礙物后反射回來,由同一超聲波探測頭接收并送到接收電路。接收電路對反射信號進(jìn)行多級放大和檢波,最后通過開關(guān)電路到達(dá)單片機(jī)的接收管腳PA0或PA1。當(dāng)接收電路有信號時(shí),開關(guān)三極管Q1導(dǎo)通,PA0或PA1為低電平;否則,三極管截止,PA0或PA1為高電平。檢測PA0或PA1的管腳狀態(tài),就可以得到超聲波探測頭接收到第一個(gè)反射信號的時(shí)刻,從而計(jì)算出從發(fā)送信號到接收到第一個(gè)反射信號的時(shí)間,再進(jìn)一步計(jì)算出障礙物與汽車的距離。發(fā)射信號波形、接收電路信號波形和單片機(jī)接收管腳信號波形如圖4所示。

        44.jpg

        4 超聲波汽車倒泊防撞報(bào)警器的軟件設(shè)計(jì)

        超聲波汽車倒泊防撞報(bào)警器的軟件采用匯編語言。程序流程如圖5所示。

        55.jpg

        系統(tǒng)聯(lián)調(diào)時(shí)發(fā)現(xiàn),當(dāng)檢測環(huán)境比較復(fù)雜時(shí),檢測值會(huì)出現(xiàn)常數(shù)0或隨機(jī)數(shù)的現(xiàn)象,因此,實(shí)際檢測并不是以一次檢測值進(jìn)行計(jì)算的,而是將本次檢測值與之前連續(xù)9次的檢測值(共10次)進(jìn)行比較(取平均值),從而得出一個(gè)最終檢測結(jié)果,再計(jì)算出距離,根據(jù)距離所屬的范圍報(bào)警。檢測一次所需時(shí)間為50ms。

        一般報(bào)警程序中所需的時(shí)間參數(shù)都是由定時(shí)器通過硬件計(jì)數(shù)進(jìn)行中斷控制,但是超聲波檢測中,在發(fā)射信號期間不允許中斷,否則導(dǎo)致發(fā)射信號頻率不精確;同時(shí)在檢測過程中如果產(chǎn)生定時(shí)器中斷,也會(huì)給計(jì)數(shù)帶來誤差。因此,報(bào)警程序不采用中斷方式,而是將檢測報(bào)警所需的時(shí)間參數(shù)與單次檢測時(shí)間(50ms)結(jié)合起來,將蜂鳴器的鳴響頻率和LED的閃動(dòng)頻率規(guī)定為500ms,即檢測10次的時(shí)間。報(bào)警時(shí)間參數(shù)與檢測次數(shù)之間的關(guān)系如表1所示。

        1.jpg

        檢測主程序如下:

        org 0300h

        lda #00

        sta counta ;報(bào)警計(jì)數(shù)器清0

        lda #$fd

        sta portad ;設(shè)置A口輸入/輸出方向

        lda #$ff

        sta portbd ;設(shè)置B口輸入/輸出方向

        ldx buffer ;緩沖區(qū)首地址 → x

        transmit: jsr transp ;調(diào)用發(fā)射20個(gè)脈寬為250μs方波子程序

        jsr del450μs ;延時(shí)450μs

        lda #00

        sta ,x ;用于計(jì)時(shí)的緩沖單元清0

        next: lda porta ;檢測處理器接收管腳是否為低電平

        and #$03

        cmp #$02

        bne check ;檢測到低電平,退出計(jì)時(shí)

        cmp #$01

        bne check ;檢測到低電平,退出計(jì)時(shí)

        cmp #$03

        bne check ;檢測到低電平,退出計(jì)時(shí)

        jsr del20μs

        inc ,x ;計(jì)時(shí)緩沖單元內(nèi)容加1

        lda #$max

        cmp ,x ;判斷計(jì)時(shí)值是否超過限定最大值max

        beq check ;若超過,退出計(jì)時(shí)

        jmp next ;否則,繼續(xù)檢測計(jì)時(shí)

        check: incx ;緩沖區(qū)地址加1

        jsr distance ;調(diào)用計(jì)算距離子程序

        jsr aver ;調(diào)用求平均值子程序,同時(shí)設(shè)置距離標(biāo)志flag和報(bào)警參數(shù)

        jsr alarm ;調(diào)用報(bào)警子程序,根據(jù)報(bào)警參數(shù)報(bào)警

        jsr del30ms ;延時(shí)30ms

        jmp transmit ;繼續(xù)下一次檢測

        end

        實(shí)際使用證明,該報(bào)警器性能比較穩(wěn)定,已達(dá)到實(shí)用要求。硬件設(shè)計(jì)中充分考慮了反射信號的復(fù)雜性和不穩(wěn)定性,對反射信號進(jìn)行了一系列的濾波、放大與檢波處理。軟件設(shè)計(jì)采用結(jié)構(gòu)化程序設(shè)計(jì)思想,結(jié)構(gòu)簡潔,尤其是獨(dú)特的報(bào)警算法,避免了定時(shí)器中斷對檢測精度的影響。

        分析可知,該報(bào)警器在性能上還可以做如下改進(jìn):

        (1)采集數(shù)據(jù)的處理算法問題。該報(bào)警器采用的是連續(xù)10次采集數(shù)據(jù)求平均值的處理算法。當(dāng)環(huán)境比較復(fù)雜時(shí),采集數(shù)據(jù)會(huì)出現(xiàn)0或隨機(jī)數(shù)情況,對平均值算法的結(jié)果有很大影響,不利于測距精度的提高,所以選擇優(yōu)化算法是軟件設(shè)計(jì)仍需改進(jìn)的難點(diǎn)之一。

        (2)改進(jìn)采樣方式。該報(bào)警器采用查詢方式采樣數(shù)據(jù),查詢一次的步長是50ms,因此每次采樣的最大誤差是50ms。如果采用其它方式檢測,例如中斷方式,還可以將采樣誤差控制到最小。

        (3)溫度對聲速的影響。如果考慮環(huán)境溫度變化對聲速的影響,硬件設(shè)計(jì)中必須進(jìn)行溫度檢測,在軟件中進(jìn)行溫度補(bǔ)償計(jì)算,進(jìn)一步減小測距誤差,使性能更加穩(wěn)定。



        關(guān)鍵詞: 705J 705 MC 68

        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 宁远县| 油尖旺区| 通州市| 海城市| 竹北市| 个旧市| 大宁县| 三门峡市| 台南市| 樟树市| 重庆市| 宜兴市| 鄢陵县| 定安县| 禄丰县| 静宁县| 阜宁县| 乌拉特中旗| 桃江县| 房山区| 天峻县| 岳普湖县| 榆树市| 区。| 淳化县| 肥城市| 阜新| 临湘市| 云梦县| 襄垣县| 武鸣县| 五大连池市| 丰台区| 伊川县| 舟曲县| 乌拉特前旗| 古田县| 江门市| 米林县| 常山县| 樟树市|