用單片機實(shí)現的脈沖編碼傳感器
關(guān)鍵詞 單片機 編碼器 解碼器 解碼寫(xiě)入器 智能傳感器
引 言
隨著(zhù)社會(huì )的發(fā)展,出租車(chē)成為人們生活中非常方便且較普遍的交通工具,但出租車(chē)計價(jià)器卻相對較為落后。在過(guò)去,出租車(chē)采用機械式計價(jià)器,用齒輪比的方式來(lái)計算出租車(chē)所跑的里程數,并由里程數來(lái)?yè)Q算車(chē)費。但是機械齒輪體積較大,計算不是很準確,而且容易磨損。后來(lái)又采用了傳感器方式,利用傳感器接收車(chē)的跑動(dòng)信息,從而計算里程數和車(chē)費。但此方法通常使干擾信號也能產(chǎn)生計數脈沖,所以也不完善。筆者引用單片機技術(shù),使用編碼和解碼信息傳遞方式來(lái)完成計價(jià)器計數脈沖的形成。單片機可以很精確的檢測到傳感器信號,這樣計價(jià)就會(huì )非常準確。完成此裝置所需器件簡(jiǎn)單,成本非常低,技術(shù)上也容易實(shí)現。
1 系統原理
系統框圖如圖1所示,本文主要介紹虛線(xiàn)框內模塊的設計。出租車(chē)驅動(dòng)輪轉數與轉軸轉數的傳動(dòng)比是一定的,而轉軸轉動(dòng)時(shí)帶動(dòng)一小磁體轉動(dòng),其傳動(dòng)比也是一定的,小磁體每轉動(dòng)一周就和磁感應傳感器正對一次,磁感應傳感器就會(huì )產(chǎn)生一個(gè)大約20 ms的低脈沖,可以通過(guò)計算磁感應傳感器產(chǎn)生的低脈沖數來(lái)計算出租車(chē)跑的里程數及相應的車(chē)費。
編碼器的單片機通過(guò)一個(gè)I/0口來(lái)檢測磁感應傳感器信號,當確定為傳感器產(chǎn)生的信號時(shí),就通過(guò)另一個(gè)I/O口向解碼器的單片機發(fā)送一組編碼,而解碼器的單片機則首先判斷當前準備接收的數據是編碼器發(fā)送的編碼還是解碼寫(xiě)入器發(fā)送的解碼。當判斷是解碼寫(xiě)入器發(fā)送的解碼時(shí),解碼器的單片機接收此解碼,并利用12c總線(xiàn)協(xié)議將解碼保存到E2PROM中去;當判斷是編碼器發(fā)送的編碼時(shí),解碼器的單片機先接收此編碼,然后讀出自己E2PROM中的解碼,將其與接收到的編碼相比較,如果相同則解碼器單片機通過(guò)一個(gè)I/0口向計價(jià)裝置發(fā)出計價(jià)脈沖,否則不發(fā)出計價(jià)脈沖。注意:這里每一輛出租車(chē)計價(jià)器的編碼和解碼都是不同的,這樣有利于出租車(chē)的管理以及防止計價(jià)器的盜用,解碼器中的解碼是使用解碼寫(xiě)入器寫(xiě)入其E2PRoM中去的。每輛出租車(chē)計價(jià)器都具有一個(gè)編碼器和一個(gè)解碼器,而所有的出租車(chē)計價(jià)器都共用一個(gè)解碼寫(xiě)人器。也就是說(shuō),在計價(jià)器賣(mài)出之前,用同一個(gè)解碼寫(xiě)入器為所有的計價(jià)器的解碼器寫(xiě)入不同的初始解碼。寫(xiě)入初始解碼以后,計價(jià)器就不再需要解碼寫(xiě)入器了,除非此計價(jià)器壞掉需要重新更換解碼器,此時(shí)需再用解碼寫(xiě)入器給新的解碼器寫(xiě)入初始解碼。硬件電路設計圖如圖2和圖3所示。
2 系統功能的實(shí)現
2.1 傳感器
本系統的編碼器部分利用傳感器來(lái)接收出租車(chē)的跑動(dòng)信號,這里采用的傳感器為磁感應傳感器,當其與車(chē)輛轉軸帶動(dòng)的小磁體正對時(shí),傳感器的輸出引腳便會(huì )產(chǎn)生一個(gè)約20ms的低脈沖。
2.2編碼器
編碼器部分使用的單片機為PIC12C508A,利用PIC12C508A芯片的第4個(gè)引腳GP3來(lái)檢測傳感器的輸出信號。當檢測到確定的傳感器信號后,單片機將按一定的時(shí)序在其第7個(gè)引腳GP0連續發(fā)送5個(gè)十進(jìn)制數據(即編碼形式為5位十進(jìn)制數)給解碼器,每個(gè)數據都是按脈沖方式發(fā)送出去的。十進(jìn)制數是多少,就發(fā)送幾個(gè)低脈沖,發(fā)送一個(gè)十進(jìn)制數據所用的時(shí)間要保證在255μs以?xún)?。其程序流程圖如圖4所示。
2.3 解碼寫(xiě)入器
解碼寫(xiě)入器部分使用的單片機為AT89C51,解碼寫(xiě)入器的功能與編碼器的功能類(lèi)似。由于發(fā)送的解碼要能隨時(shí)改變,這里可以外接5個(gè)小數字鍵盤(pán),解碼寫(xiě)入器要發(fā)送的解碼可以從5個(gè)小數字鍵盤(pán)上獲得。為了和編碼器發(fā)送的編碼區別開(kāi)來(lái),解碼寫(xiě)入器需要先發(fā)送一個(gè)區別字符,使解碼器能夠識別出當前接收的是編碼器還是解碼寫(xiě)入器發(fā)出的數據。區別字符后面緊跟著(zhù)的是解碼,所有這些數據的發(fā)送方式與編碼器編碼的發(fā)送方式完全相同,由AT89C51單片機的P3.4口輸出,其程序流程圖如圖5所示。
2.4 解碼器
這部分采用的單片機是PIC12CE5C18,其內部有E2PROM??梢岳肐2c協(xié)議隨時(shí)從E2PROM中讀出解碼或者向E2PROM中寫(xiě)入新的編碼。下面介紹工作過(guò)程。首先解碼器讀出內部E2PRoM中00h~04h中的5個(gè)十進(jìn)制數據,分別保存到5個(gè)內部數據存儲單元中。然后調用接收數據子程序,接收1個(gè)數據,并先保存到1個(gè)內部數據存儲單元中,判斷這個(gè)數據是否為區別字符10。若不是區別字符,說(shuō)明現在接收的數據可能是編碼器發(fā)送的編碼,則繼續接收后面的4個(gè)數據,并保存到4個(gè)內部數據存儲單元中,將接收到的這5個(gè)十進(jìn)制數據與前面解碼器讀出的內部E2PROM中00h~04h中的5個(gè)十進(jìn)制數據進(jìn)行比較,相等則在GP0引腳上發(fā)送一個(gè)2 ms的低脈沖作為計價(jià)脈沖,不相等則重新接收數據。若是區別字符10,說(shuō)明現在解碼寫(xiě)入器要修改解碼器的解碼,必須馬上接收跟在區別字符后面的5個(gè)數據,并將這5個(gè)十進(jìn)制數據保存到E2PROM的00h~04h中,覆蓋以前的解碼。其程序流程圖如圖6所示,其調用的子程序如圖7和圖8所示。
結論
本系統解決了以往計價(jià)器計價(jià)不準確、使用壽命短等缺點(diǎn),現在采用以單片機為主控制單元的編碼解碼技術(shù),使每個(gè)出租車(chē)的計價(jià)器擁有不同的編碼,從而防止出租車(chē)之間計價(jià)器的相互盜用,便于出租車(chē)公司對出租車(chē)的管理。同時(shí),可以隨時(shí)對單片機的外圍電路進(jìn)行擴展,并通過(guò)軟件編程實(shí)現本系統的不斷升級。
評論