李倩 陳登峰 段優(yōu)
摘 要:車速里程表是駕駛員和汽車進行信息溝通的重要接口,使駕駛員能夠即時掌握車輛的行駛狀況,這是汽車行駛安全的重要保障。本文提出一種基于單片機的電子式車速里程表,通過無接觸式光電傳感器可以測量瞬時車速和里程,可以實現(xiàn)限速報警功能,并具有較好的再開發(fā)功能。車速測量通過固定在電機轉(zhuǎn)軸上的碼盤,用光電傳感器檢測碼盤的工作狀態(tài),使轉(zhuǎn)軸轉(zhuǎn)動速度的物理量轉(zhuǎn)化成脈沖信號,并根據(jù)生成的脈沖頻率值得到圓盤的轉(zhuǎn)速,通過計算就可獲得里程值和車速值,并通過LCD1602液晶屏顯示出來。在本設(shè)計中通過強大的軟件程序取代了復雜的硬件電路,不僅簡化線路,而且降低了成本。
關(guān)鍵詞:單片機;車速里程表;LCD1602
Abstract: Speedodometer is an important interface for information communication between drivers and vehicles, which enables drivers to grasp the driving status of vehicles in real time, and it is an important guarantee for driving safety. This paper presents a design of electronic speedometer based on single-chip microcomputer. The instantaneous speed and mileage are measured by non-contact photoelectric sensor. And the speedodometer supports speed limitation alarm and further development function. It uses photoelectric sensor to detect the working state of the code disc which is fixed on the motor shaft, the physical quantity of the rotation speed of the rotating shaft can be converted into pulse signals. According to the generated pulse frequency, the rotating speed of the disc can be obtained. The mileage value and vehicle speed value can be calculated and displayed on LCD 1602 screen. In this design, the complex hardware circuit is replaced by powerful software program, which simplifies the circuit design and reduces the cost.
電子式車速里程表,測量轉(zhuǎn)速的傳感器與機械部件不產(chǎn)生摩擦,它經(jīng)過安裝在變速器上的傳感器獲取反映車輛速度的脈沖信號,經(jīng)過相應(yīng)的電路設(shè)計帶動指示表的變化。傳感器檢測端口與齒輪中被要求含有大約1.4+0.6mm的位置間隙。而當汽車行駛時, 變速器輸出軸轉(zhuǎn)動,經(jīng)過傳感器檢測端與里程表轉(zhuǎn)子齒輪相接洽時,敏感元件受到里程表轉(zhuǎn)子的磁場影響,從而輸出低電平;若傳感器檢測端沒有與里程表轉(zhuǎn)子的齒輪接洽時,敏感元件不受磁場影響,從而以高電平輸出,通過這樣高低電平的變化,變速器的輸出軸每轉(zhuǎn)動一周,傳感器就會輸出方波脈沖信號,由連接口傳送給儀表,再經(jīng)過相關(guān)電路和軟件計算處理后,由顯示裝置就可以顯示出速度。車輛里程則根據(jù)累計運行的時間和速度,并經(jīng)過顯示裝置顯示。因為電子車速里程表無直接齒輪接觸產(chǎn)生摩擦進而產(chǎn)生一些誤差,而是通過傳感器測量得到所需數(shù)值,所以讀數(shù)較為精準,磨損減少,成本低,生產(chǎn)容易,所以應(yīng)用領(lǐng)域非常的廣泛[1]。
1設(shè)計的整體思路
采用完全硬件方式實現(xiàn)的車速里程表結(jié)構(gòu)比較復雜,成本較高。通過單片機進行信息采集、處理和控制可簡化電路,降低成本,且通過編寫軟件程序結(jié)合硬件電路可實現(xiàn)更為復雜的功能。
本文提出的電子式車速里程表基于測控、光電以及計算機等技術(shù),具有邏輯運算、存儲及控制等功能,車速里程表使用的核心器件包括:單片機、傳感器、液晶顯示器及電機。電機工作,相當于一個變速器,傳感器工作對脈沖信號進行有效采集,并將采集到的信號傳遞給單片機,再由單片機處理和計算,將采集到的信號轉(zhuǎn)化、處理、計算,最終通過LCD1602顯示機車行駛的瞬時速度和所行里程。系統(tǒng)結(jié)構(gòu)圖如圖1所示[3]。
本設(shè)計的采用的主要硬件包括:STC89C52單片機,(數(shù)據(jù)采集、處理和控制中心),電機(通過光電傳感器,向單片機外部中斷提供脈沖),LCD液晶顯示器(顯示速度、里程及限速值)。
主要功能:計算速度和里程;存儲歷史里程數(shù)據(jù);顯示瞬時速度;限速報警[4]。
2硬件設(shè)計
2.1光電式傳感器測量轉(zhuǎn)換電路
轉(zhuǎn)速即在規(guī)定的單位時間內(nèi)物體轉(zhuǎn)過的圈數(shù)。機械設(shè)備工作狀況與轉(zhuǎn)速密切相關(guān),工農(nóng)業(yè)生產(chǎn)中經(jīng)常需要檢測轉(zhuǎn)速,常用的檢測方法可分為模擬式和數(shù)字式兩大類。模擬式以測速發(fā)電機為檢測元件,將轉(zhuǎn)速轉(zhuǎn)化為電壓模擬量,采集和處理硬件部分比較復雜、調(diào)試困難、功能單一、系統(tǒng)不靈活等;數(shù)字式采用霍爾、磁電、光柵編碼器等檢測元件,將轉(zhuǎn)速轉(zhuǎn)化為脈沖信號,用單片機實現(xiàn)采集、處理功能,利用程序完成測量,降低成本,大大提高了工作效率。
本文通過光電式傳感器進行檢測,把有n個孔的齒盤固定于轉(zhuǎn)軸上。碼盤表面有間距均勻的凹槽,當轉(zhuǎn)軸旋轉(zhuǎn)時,會產(chǎn)生脈沖量。傳感器檢測轉(zhuǎn)速脈沖,由脈沖計算頻率的方法獲取實時轉(zhuǎn)速。如圖2所示。
本文采用有41柵格的碼盤和385電機。實驗測得385電機的相關(guān)數(shù)據(jù)如表1所示。
光電式傳感器是利用光學原理而做成。敏感元件利用物體經(jīng)過時,隔斷光線而檢測到信號,由光源、感光器件、模擬量輸出等構(gòu)成[6]。若碼盤轉(zhuǎn)動時,發(fā)光二極管產(chǎn)生的光亮被隔斷,然后光敏二極管(或光敏三極管)采集時斷時續(xù)的光亮信號。碼盤上的隔斷與發(fā)光二極管對準時,光線由隔斷通向光敏二極管(或光敏三極管),光敏二極管(或光敏三極管)接通便就會采集到脈沖信號。光電式傳感器進行的速度檢測效率高、是非??煽康臋z測裝置,它由光發(fā)射器和接收器組成,這兩個器件面對面安裝,相互無影響,若物體經(jīng)過兩個器件就會隔斷光線的傳播,從而傳感器采集并將信號發(fā)送給單片機。U形的光電檢測裝置作為新的器件無需再調(diào)光軸[7]。
2.2單片機外圍輔助電路
上拉電阻:P0~P3為4.7KΩ阻排,為芯片的四個I/O口提供上拉電阻。P0口當作一般的I/O口用時,由于它是開漏結(jié)構(gòu)輸出,所以要外接一個上拉電阻。P1~P3內(nèi)部雖然都有上拉電阻,但內(nèi)部上拉電阻太大,造成上拉電流太小,甚至在某些時候電流不夠,因此,要提供足夠的上拉電流,就要并聯(lián)一個4.7KΩ的上拉電阻確保正常工作[5]。
復位電路:單片機的復位電路由R5、S3和C3構(gòu)成。當振蕩器開始工作時,在RESET端口若有兩個或者更多的高電平的機器周期(由低到高跳變)出現(xiàn),單片機就可以復位。
為了使得芯片上電自動回到初始狀態(tài),需要構(gòu)建一個簡單的復位電路。這里由電阻、開關(guān)和電容構(gòu)成此電路。
RESET引腳和電源在上電時刻的電位一致, 若RC電路充電電流減小,RESET電位也依次降低。當RESET引腳處持續(xù)有兩個高電平的機器周期,單片機就能正常復位。復位電路原理圖如圖3所示:
時鐘電路:單片機外圍時鐘電路通過電容C1、C2和一個晶振Y1組成。它的工作時鐘可以用以下方式提供:內(nèi)部振蕩器以及外部信號輸入方式。原理圖中使用內(nèi)部振蕩器方法。在XTAL1、XTAL2外圍安裝定時器件,則芯片包含的振蕩電路產(chǎn)生自激振蕩。晶振兩側(cè)使用18~33pF間相同的抗振電容,電容值的大小即可微調(diào)頻。時鐘電路結(jié)構(gòu)原理圖如圖4所示。
編程接口:Program接口是單片機的編程接口,STC89系列單片機使用串行口來下載程序,因此Program接口雖然有10個引腳,但是只使用了其中3個:RXD、TXD和GND。Program接口在開發(fā)板中對應(yīng)一個10腳的牛角插座。如圖5所示。
2.3蜂鳴器報警電路
蜂鳴器結(jié)構(gòu)簡單,通過直流電壓供電,在電話、手機、門鈴、安檢、印刷等裝置中都能得到極大的使用。
蜂鳴器有很多種,從制作工藝到所需材料有壓電式和電磁式之分。通過壓電效應(yīng)的壓電陶瓷驅(qū)動金屬薄片抖動發(fā)出聲響即壓電式蜂鳴器;通過電磁作用,若斷電則通過金屬薄膜彈力彈回,連接電源時將薄膜吸下的為電磁式蜂鳴器,因此它是通過二分之一的方波驅(qū)動,而壓電式是以全部的方波驅(qū)動。根據(jù)每一種類型蜂鳴器發(fā)聲原理不同,則應(yīng)用在不同的場合。壓電式蜂鳴器組成結(jié)構(gòu)單一,音質(zhì)差,發(fā)聲單一,因此作為報警器設(shè)備比較好。而電磁式由于音質(zhì)較好,所以多用于音樂,語音器件等.
根據(jù)工作方式不同,蜂鳴器具有有源和無源之分。"源"的含義即震蕩源,非一般的電源。顧名思義,有源就是器件里邊包含震蕩源,給它通電后就可發(fā)聲;無源蜂鳴器需要2~5K的方波才能驅(qū)動發(fā)聲。因為有源蜂鳴器中有一個震蕩源,所以在價格方面也比無源蜂鳴器貴一些。無源蜂鳴器的優(yōu)點有:一,價格便宜;二,聲音頻率可控;三,可以復用一個控制口與LCD。有源蜂鳴器的優(yōu)點是程序編寫比較容易。雖然兩者外觀相似,但也存在著不同。將蜂鳴器倒置,無源的有綠色的電路板, 有源蜂鳴器沒有電路板,通過黑膠粘合。倘若是無源蜂鳴器,通過萬用表電阻檔進行檢測,將黑表筆連到元器件正極, 紅表筆在負極來回的觸碰,會產(chǎn)生"咔、咔"聲,電阻也只有8Ω或者16Ω; 有源蜂鳴器發(fā)聲持續(xù),并且阻值是無源的十多倍。通過接入固定電源持續(xù)工作的是有源蜂鳴器;通過聲音變化放大等電路工作的是無源蜂鳴器。
與一般的發(fā)聲器件對照, 該類型的元器件通過極性需要添上恰當?shù)闹绷麟妷?,就能產(chǎn)生穩(wěn)定的工作效果,使用方法也非常簡單。它的驅(qū)動電路及蜂鳴器外觀如圖6所示。
蜂鳴器是由直流電壓供給工作的,因為蜂鳴器的工作電流較大, 通常芯片上的I/O口直接啟動無法工作,因此采用三極管放大才能使蜂鳴器正常工作。具體工作狀態(tài)是蜂鳴器通過一個9015三極管進行驅(qū)動,三極管的基極與P3.7口相連。如果P3.7低電平輸出,蜂鳴器響;如果P3.7高電平輸出,不響。在要求比較嚴格的一些場合還要加上二極管,并且是反相的,作為保護電路使用[8]。
2.4 LCD1602液晶顯示模塊
LCD1602是一種非常好用的字符型液晶顯示器,它可以是1行16位字符的呈現(xiàn)模式,也有2行16位字符的呈現(xiàn)模式,器件里邊包含標準的資源庫供選擇,其中還有16個5×7、32個5×10的點陣字符。此外,還包含64字節(jié)RAM用于字符生成,供用戶自定義字符,其中含日語、阿拉伯數(shù)字、慣用符號和英文字母的大小寫等。每個字符都有一個固定代碼,此代碼就是對應(yīng)字符的ASCII碼。LCD1602液晶顯示器的工作電壓在4.5V~5.5V之間,最佳工作電壓為5V,字符尺寸為2.95×4.35(W×H)mm。圖7所示為其引腳圖。
由于LCD1602可以采用4位或8位并行數(shù)據(jù)接口,為了方便編程,這里選用8位的并行方式,與信號線RS、E占用單片機的10位I/O口。P1為滑動變阻器,其滑動端接到LCD1602的對比度調(diào)整引腳VL上,用來進行對比度調(diào)整。本次設(shè)計直接采用電阻R6,為2kΩ固定其亮度。背光的負極直接接到電源地,其正極通過一個跳線接口接到VCC上。
3 軟件設(shè)計
3.1主程序設(shè)計
初始化模塊的主要任務(wù)是在單片機復位后程序設(shè)計的重要變量、中斷、定時/計數(shù)器的設(shè)置方式和控制字,將部分應(yīng)用內(nèi)存清零;而開中斷和定時器是將EEPROM中的數(shù)據(jù)包括初始化速度、里程、限速值等數(shù)據(jù)調(diào)入至內(nèi)存當中。
程序包含兩個部分:主程序和子程序。主程序作用在于將整個參數(shù)歸到初始位,編寫程序代碼執(zhí)行過程銜接樞紐,并將結(jié)果呈現(xiàn)給用戶。如圖8所示為主程序的流程圖:
有關(guān)參數(shù)被分配到特定的寄存器, 各個獨立的模塊子程序根據(jù)要求被主程序調(diào)用。主要作用如下:
(1)定義系統(tǒng)運行過程中所需要的變量;
(2)在運行程序的過程中,按要求逐次完成對各個系統(tǒng)模塊進行調(diào)用,并將運行結(jié)果顯示出來;
(3)在各個模塊的調(diào)用過程中,實現(xiàn)對調(diào)用過程的保護,保存運行過程中必要的參數(shù),確保程序能夠順利執(zhí)行, 避免程序跑飛。
為了獲取程序中所需的各個參數(shù)而采用中斷處理模塊。在主程序運行時,如果有中斷請求,程序?qū)⑻D(zhuǎn)到其他所需處理的子程序模塊運行,一般中斷程序只對數(shù)據(jù)做簡單的讀取和賦值,而不進行處理與計算,縮短了中斷程序的運行時間,系統(tǒng)響應(yīng)中斷的實時性也得到了提高[9]。
3.2車速里程表子程序流程圖
由于光電傳感器檢測產(chǎn)生的脈沖信號頻率越高,車速就越高,它們之間是正比關(guān)系,因此,計算車速與測得輸出脈沖信號的頻率息息相關(guān),公式如下:
里程S=(檢測到的脈沖數(shù)n)/(速比*傳感器極對數(shù)),單位:km
速度V=(3600*單位時間內(nèi)的脈沖數(shù))/(速比*傳感器極對數(shù)),單位:km/h
本設(shè)計中選擇的車速測量周期為1秒,車速表的刷新周期為3微秒,電機的最小驅(qū)動間隔為1微秒,即電機的執(zhí)行周期為10微秒,設(shè)置采樣濾波周期,每個周期中設(shè)置兩個監(jiān)測點,時間間隔為1微秒。
3.3 I/O口的控制方式
單片機的輸入和輸出數(shù)據(jù)傳遞控制方式主要有:無條件傳送方式、查詢方式和中斷方式。例如:電子設(shè)備及機械裝置的開關(guān)、聲控燈、報警設(shè)備等,它們無時不處于“準備好”的模式,以供給信息傳輸。
查詢方式:由各接口電路供給設(shè)備的工作狀況,以軟硬件結(jié)合的方式檢測系統(tǒng)工作狀態(tài),最終實現(xiàn)查詢方式的數(shù)據(jù)傳送。其流程圖如圖10所示:
中斷方式:在程序中應(yīng)用中斷方式,是利用在芯片使用時可兼顧控制幾個外圍裝置以及其余待執(zhí)行的工作,從而大大提高了CPU的使用效率。由于單片機控制的許多外部設(shè)備速度相對較慢,如打印、溫度檢測、數(shù)據(jù)通信等,不可能與CPU進行直接的同步數(shù)據(jù)交換,從而浪費大量的等待時間,因此可通過中斷的分時實現(xiàn)CPU和外設(shè)的協(xié)調(diào)工作,即在CPU執(zhí)行程序過程中,如果需要進行數(shù)據(jù)輸入、輸出獲溫度監(jiān)控設(shè)備的啟動,可以按序啟動這些外設(shè)獲控制模塊,再繼續(xù)執(zhí)行實現(xiàn)其他功能的程序。與此同時,被啟動的外設(shè)獲控制模塊進入準備工作階段。當準備完成后,它們可以按照完成的先后次序分別向CPU傳送特定的數(shù)據(jù),需要CPU終止當前所運行的工作狀態(tài),轉(zhuǎn)而處理中斷請求的其他一些裝置要求,這就是所謂的中斷請求。其中斷響應(yīng)示意圖如圖11所示。
4 軟件調(diào)試
4.1程序的查錯手段
程序查錯采用相匹配的開發(fā)系統(tǒng)或軟件進行調(diào)試,通過單步執(zhí)行以及斷點的設(shè)置對系統(tǒng)的軟硬件進行全面檢查和調(diào)試。
單步執(zhí)行:應(yīng)用單步執(zhí)行指令就是程序每執(zhí)行一步就有一條指令,逐個排查程序是否正確執(zhí)行,通過要求找到錯誤的地方。
斷點設(shè)置全速運行:斷點設(shè)置就是在自己覺得有問題的地方設(shè)置一個斷點,設(shè)置程序的起始位和終止位,通過運行到斷點處的狀況,進行檢測。程序若沒有顯示出語法錯誤,則繼續(xù)運行,最終在斷點處終止;若有錯誤,則在錯誤處停止運行;若程序處于死循環(huán)當中或者是程序跑飛,將無法終止工作[10]。
4.2 源程序的調(diào)試
源程序主要包括分調(diào)、聯(lián)機調(diào)試和考機調(diào)試幾個步驟。
分調(diào):最初,要求按照設(shè)計要求把各部分子程序調(diào)試好,將中斷服務(wù)程序移出,再通過系統(tǒng)主程序運行的先后邏輯順序獨立的各部分程序逐次進行調(diào)試。按照設(shè)計要求,設(shè)置并輸入一組合適的參數(shù),運行程序,并進行實時觀察,并對出現(xiàn)的故障及其產(chǎn)生的影響進行檢測記錄;上述檢測記錄的故障問題進行嚴格分析推測,通過軟件調(diào)試方法逐漸縮短范圍,找出問題并及時修改,最后分析故障原因。
聯(lián)調(diào):分調(diào)被修改整理,若運行良好,則聯(lián)機調(diào)試。聯(lián)調(diào)著重對主程序和獨立的子程序接連處調(diào)試修改,把軟硬件結(jié)合逐個進行調(diào)試,最后考機。
5總結(jié)
本篇論文研究的電子式車速里程表是將STC89C52單片機作為主要部分,將芯片的功能得到廣泛的拓展應(yīng)用,是軟件與硬件相結(jié)合的設(shè)計,其功能及優(yōu)點主要有:
1、使用當下功能強大的單片機STC89C52芯片,結(jié)構(gòu)簡單,體積小,價格容易接受,且功能強大;
2、設(shè)計原理簡單,無外圍驅(qū)動電路,易焊接操作;
3、采用LCD1602液晶顯示屏進行車速和里程等顯示,數(shù)字及字符型的顯示加上由液晶材料而制成的屏幕,觀測時十分方便且可以防止眼睛疲勞;
4、具有限速報警功能。程序設(shè)置限速段在20~90km/h之間,通過按鈕可將限速值控制在這個速度段內(nèi)的某一個值并進行檢測報警;
5、應(yīng)用C語言編寫程序,編寫移植容易,易讀;
本設(shè)計中單片機系統(tǒng)結(jié)構(gòu)簡單,穩(wěn)定、可靠,成本低,但功能十分可觀,有廣泛的使用空間,車速里程表的設(shè)計還需要進一步的開發(fā)和推廣,隨著電子技術(shù)的發(fā)展與時俱進,更好的滿足現(xiàn)代化的需求。
參考文獻:
[1]袁大宏. 國際汽車電子儀表應(yīng)用現(xiàn)狀及發(fā)展趨勢[N].中國汽車報,2000-07-07(05).
[2]孫仁云,付百學,等. 汽車電器與電子技術(shù)[M].北京:機械工業(yè)出版社,2006:120-121.
[3]劉小明,柴蒼修,黃靜. 數(shù)字化車速里程表的設(shè)計[J].儀表技術(shù),2007,(1):48-52.
[4]吳栩鈞.基于單片機的車速里程表設(shè)計與仿真[J].計算機光盤軟件與應(yīng)用,2012,(14):213-223.
[5]潘明,黃繼業(yè),潘松,等.單片機原理與應(yīng)用技術(shù)[M].北京:清華大學出版社,2001:1-7.
[6]高洪一,康國初,等.汽車電子技術(shù)[M].北京:北京交通大學出版社,2007:167-169.
[7]王文英.用光電傳感器測量電機轉(zhuǎn)速[J].光譜實驗室,2013,30(2):1018-1020.
[8]張鵬,等.單片機開發(fā)板制作與應(yīng)用[M].北京:化學工業(yè)出版社,2014:188-225.
[9]夏明娜,高玉芝,等.單片機系統(tǒng)設(shè)計及應(yīng)用[M].北京:北京理工大學出版社,2015:112-113.
[10]周潤景,張麗娜,丁莉,等.基于PROTEUS的電路及單片機設(shè)計與仿真[M].北京:北京航空航天大學出版社,2009:338-342.
通信作者:李倩
基金項目:國家自然科學基金項目(51705393),陜西省教育廳專項科研項目(14JK1408),西安市工業(yè)應(yīng)用技術(shù)研發(fā)項目(JZKD0011),西安建筑科技大學基礎(chǔ)研究基金項目(JC1318)。