趙宇蘭
(山西工程科技職業(yè)大學(xué)信息工程學(xué)院,山西 晉中 030619)
公路客運(yùn)是當(dāng)今人們外出打工、探親、旅游的重要交通方式。但是隨著出行客流量的增加,客運(yùn)力度沒(méi)有相應(yīng)跟上的情況下,客車(chē)超載現(xiàn)象頻頻發(fā)生。目前,客車(chē)超載已經(jīng)成為嚴(yán)重影響交通環(huán)境和社會(huì)經(jīng)濟(jì)可持續(xù)發(fā)展的社會(huì)問(wèn)題[1]??蛙?chē)超載不僅會(huì)對(duì)國(guó)家的公路設(shè)施和客運(yùn)市場(chǎng)造成不良影響,還會(huì)給國(guó)家和人民群眾帶來(lái)重大的經(jīng)濟(jì)損失和感情傷害。雖然我國(guó)出臺(tái)了一系列的政策法規(guī)來(lái)制止客車(chē)超載,但在節(jié)假日和春運(yùn)等客流高峰期,超載現(xiàn)象仍然屢禁不止。因此,在采取行政監(jiān)督管理的同時(shí),通過(guò)科學(xué)技術(shù)手段來(lái)消除客車(chē)超載現(xiàn)象有重要的現(xiàn)實(shí)意義。
本文擬設(shè)計(jì)一種智能型客車(chē)超載檢測(cè)系統(tǒng),對(duì)客車(chē)內(nèi)部承重及人數(shù)進(jìn)行雙重檢測(cè),實(shí)現(xiàn)對(duì)客車(chē)超載的全方面預(yù)防。
針對(duì)客車(chē)檢測(cè)系統(tǒng)的社會(huì)需求分析,需對(duì)車(chē)內(nèi)承重力及人數(shù)進(jìn)行檢測(cè)方能實(shí)現(xiàn)客車(chē)超載的全方面預(yù)防。設(shè)計(jì)以單片機(jī)為核心控制單元,通過(guò)重力傳感器和紅外光電傳感器檢測(cè)數(shù)據(jù),使用獨(dú)立式的按鍵設(shè)置客車(chē)內(nèi)的超載人數(shù)閾值和承重閾值,同時(shí)采用有源蜂鳴器作為報(bào)警元器件。系統(tǒng)在檢測(cè)到客車(chē)內(nèi)人數(shù)或重力超過(guò)了設(shè)定的閾值時(shí),程序判定超載,蜂鳴器電路接通并發(fā)聲報(bào)警,警示燈閃爍,同時(shí)啟動(dòng)繼電器自動(dòng)切斷客車(chē)打火裝置,實(shí)現(xiàn)對(duì)客車(chē)超載的強(qiáng)制控制[2-3]。系統(tǒng)總體設(shè)計(jì)如圖1所示。
圖1 系統(tǒng)總體設(shè)計(jì)圖
本設(shè)計(jì)采用STC89C52型單片機(jī)作為主控芯片,HX711采集模塊、LCD1602液晶顯示屏。通過(guò)單片機(jī)引腳對(duì)芯片的信號(hào)進(jìn)行驅(qū)動(dòng)。同時(shí)使用獨(dú)立按鍵以使操作更簡(jiǎn)便。
1) STC89C52型單片機(jī)是目前電子設(shè)計(jì)經(jīng)典的單片機(jī)型號(hào),可以實(shí)現(xiàn)邏輯編程。另外,擁有高性能、低功耗等特點(diǎn)。STC89C52儲(chǔ)存相較于AT系列51單片機(jī)的4k內(nèi)存增加了一倍,功能更全,運(yùn)算速度更快[4]。
2) LCD1602可顯示32位字符,顯示分辨率清晰。在與單片機(jī)相連時(shí)只需要根據(jù)顯示屏各個(gè)引腳的不同功能與單片機(jī)引腳相連接。與LCD12864液晶顯示器相比,LCD1602性能更快,成本更低,適用于本系統(tǒng)中對(duì)于重力及人數(shù)顯示的要求。
3) HX711內(nèi)部集成了電源以及可以實(shí)現(xiàn)重力采集的外圍電路,可實(shí)現(xiàn)24位AD信號(hào)采集,其精度符合智能超載系統(tǒng)的設(shè)計(jì)需求[5]。
4) 獨(dú)立按鍵是每一個(gè)I/O口都對(duì)應(yīng)一個(gè)按鍵,其優(yōu)勢(shì)是設(shè)計(jì)簡(jiǎn)單、使用方便,缺點(diǎn)是設(shè)計(jì)中需要按鍵數(shù)量較多時(shí),容易造成浪費(fèi)資源。由于本設(shè)計(jì)中不需要很多的按鍵,因此采用獨(dú)立按鍵能夠滿(mǎn)足系統(tǒng)需求。
本設(shè)計(jì)使用C語(yǔ)言為編程語(yǔ)言,KEIL4為編譯軟件。系統(tǒng)主要程序包括系統(tǒng)主程序和子程序,其中,子程序包括顯示子程序、重力檢測(cè)子程序、人數(shù)檢測(cè)子程序等。
系統(tǒng)主程序首先對(duì)LCD1602顯示屏、HX711重力采集模塊及按鍵進(jìn)行初始化,并設(shè)置重力和人數(shù)閾值。然后對(duì)承重信息采集,對(duì)車(chē)上實(shí)時(shí)人數(shù)信息采集,并將采集到的數(shù)據(jù)通過(guò)單片機(jī)處理。系統(tǒng)主程序設(shè)計(jì)如圖2所示。
圖2 系統(tǒng)主程序設(shè)計(jì)
主程序直接調(diào)用LCD1602液晶顯示屏的子程序即可實(shí)現(xiàn)重力、車(chē)內(nèi)人數(shù)等內(nèi)容的顯示。LCD1602液晶顯示屏程序代碼需要經(jīng)過(guò)信號(hào)的檢測(cè)、延時(shí)等一系列流程實(shí)現(xiàn)顯示程序。LCD1602液晶顯示程序如圖3所示。
重力檢測(cè)子程序在開(kāi)始后,首先讀取HX711采集的重力數(shù)據(jù),并對(duì)實(shí)際的重量進(jìn)行計(jì)算并校正,從而實(shí)現(xiàn)對(duì)重力的顯示。重力采集子程序設(shè)計(jì)如圖4所示。
圖4 重力采集子程序設(shè)計(jì)
人數(shù)檢測(cè)子程序在開(kāi)始后,首先初始化傳感器,然后進(jìn)行上下車(chē)信號(hào)的檢測(cè),進(jìn)入判斷,上車(chē)門(mén)檢測(cè)到信號(hào)時(shí)車(chē)內(nèi)人數(shù)加1,下車(chē)門(mén)檢測(cè)到信號(hào)時(shí)車(chē)內(nèi)人數(shù)減1。人數(shù)檢測(cè)子程序設(shè)計(jì)如圖5所示。
圖5 人數(shù)檢測(cè)子程序設(shè)計(jì)
硬件的調(diào)試是在焊接好各個(gè)元器件模塊后需要對(duì)整個(gè)硬件及模塊的電路進(jìn)行一定的調(diào)試。在硬件測(cè)試過(guò)程中,萬(wàn)用表可以幫助我們進(jìn)行電路測(cè)試。另外,以下問(wèn)題也要特別注意:
1) 元器件引腳連接的正負(fù)極問(wèn)題:該系統(tǒng)中使用的各模塊的電路雖然簡(jiǎn)單,但也要注意它們的引腳不能接反。
2) 電路虛焊問(wèn)題:電路的焊接過(guò)程中可能會(huì)存在一些沒(méi)有焊好的元器件的引腳,這時(shí)我們需要用萬(wàn)用表來(lái)測(cè)試各個(gè)元器件兩端。如果通電了,萬(wàn)用表會(huì)發(fā)出“嘟嘟”的聲音。
3) 顯示問(wèn)題:在整個(gè)電路都沒(méi)有問(wèn)題的情況下,顯示屏幕也有可能出現(xiàn)藍(lán)屏狀態(tài),此時(shí)要滑動(dòng)變阻器來(lái)進(jìn)行調(diào)節(jié)。
創(chuàng)建新的KEIL工程文件,使用C語(yǔ)言編寫(xiě)程序,建立一個(gè)main.c文件寫(xiě)代碼。在程序的編寫(xiě)過(guò)程中首要的步驟是定義頭文件保存到工程中。在程序編寫(xiě)的過(guò)程中,出現(xiàn)錯(cuò)誤是難免的,所以檢查錯(cuò)誤也是必不可少的一項(xiàng),若出現(xiàn)錯(cuò)誤編譯器會(huì)提示相關(guān)的錯(cuò)誤信息,反復(fù)檢查出現(xiàn)的錯(cuò)誤并加以改正,再進(jìn)行編譯并生成鏡像文件。最后,將生成好的鏡像文件燒錄到單片機(jī)中,完成軟件調(diào)試。
系統(tǒng)硬件方面元器件選型合理、電路設(shè)計(jì)簡(jiǎn)單;在系統(tǒng)軟件中,利用C語(yǔ)言實(shí)現(xiàn)了重力檢測(cè)、人數(shù)檢測(cè)和實(shí)時(shí)預(yù)警等功能,達(dá)到了預(yù)期目標(biāo)。今后還可以增加語(yǔ)音播報(bào)功能,實(shí)時(shí)播報(bào)車(chē)載人數(shù),為客車(chē)司機(jī)提供更智能的服務(wù)。