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