關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 用單片機實現的脈沖編碼傳感器

        用單片機實現的脈沖編碼傳感器

        作者: 時間:2006-08-14 來源:網絡 收藏
        摘要 介紹采用多片技術的出租車計價器傳感囂部分的設計原理,給出器、解碼器和解碼寫入器的硬件設計方案,并以流程圖方式對本系統的器、解碼器和解碼寫入器的軟件設計進行較為詳細的介紹。本系統中解碼器部分采用的是PIC12CE508,其內部具有E2PROM存儲器,使用12c總線協議就可以將新的編碼寫入其內部的E2PROM存儲器中,或者從其內部的E2PROM存儲器中讀出編碼。
        關鍵詞 編碼器 解碼器 解碼寫入器 智能

        引 言
        隨著社會的發展,出租車成為人們生活中非常方便且較普遍的交通工具,但出租車計價器卻相對較為落后。在過去,出租車采用機械式計價器,用齒輪比的方式來計算出租車所跑的里程數,并由里程數來換算車費。但是機械齒輪體積較大,計算不是很準確,而且容易磨損。后來又采用了方式,利用接收車的跑動信息,從而計算里程數和車費。但此方法通常使干擾信號也能產生計數,所以也不完善。筆者引用單片機技術,使用編碼和解碼信息傳遞方式來完成計價器計數的形成。單片機可以很精確的檢測到傳感器信號,這樣計價就會非常準確。完成此裝置所需器件簡單,成本非常低,技術上也容易

        1 系統原理
        系統框圖如圖1所示,本文主要介紹虛線框內模塊的設計。出租車驅動輪轉數與轉軸轉數的傳動比是一定的,而轉軸轉動時帶動一小磁體轉動,其傳動比也是一定的,小磁體每轉動一周就和磁感應傳感器正對一次,磁感應傳感器就會產生一個大約20 ms的低,可以通過計算磁感應傳感器產生的低脈沖數來計算出租車跑的里程數及相應的車費。

        編碼器的單片機通過一個I/0口來檢測磁感應傳感器信號,當確定為傳感器產生的信號時,就通過另一個I/O口向解碼器的單片機發送一組編碼,而解碼器的單片機則首先判斷當前準備接收的數據是編碼器發送的編碼還是解碼寫入器發送的解碼。當判斷是解碼寫入器發送的解碼時,解碼器的單片機接收此解碼,并利用12c總線協議將解碼保存到E2PROM中去;當判斷是編碼器發送的編碼時,解碼器的單片機先接收此編碼,然后讀出自己E2PROM中的解碼,將其與接收到的編碼相比較,如果相同則解碼器單片機通過一個I/0口向計價裝置發出計價脈沖,否則不發出計價脈沖。注意:這里每一輛出租車計價器的編碼和解碼都是不同的,這樣有利于出租車的管理以及防止計價器的盜用,解碼器中的解碼是使用解碼寫入器寫入其E2PRoM中去的。每輛出租車計價器都具有一個編碼器和一個解碼器,而所有的出租車計價器都共用一個解碼寫人器。也就是說,在計價器賣出之前,用同一個解碼寫入器為所有的計價器的解碼器寫入不同的初始解碼。寫入初始解碼以后,計價器就不再需要解碼寫入器了,除非此計價器壞掉需要重新更換解碼器,此時需再用解碼寫入器給新的解碼器寫入初始解碼。硬件電路設計圖如圖2和圖3所示。


        2 系統功能的
        2.1 傳感器

        本系統的編碼器部分利用傳感器來接收出租車的跑動信號,這里采用的傳感器為磁感應傳感器,當其與車輛轉軸帶動的小磁體正對時,傳感器的輸出引腳便會產生一個約20ms的低脈沖。

        2.2編碼器

        編碼器部分使用的單片機為PIC12C508A,利用PIC12C508A芯片的第4個引腳GP3來檢測傳感器的輸出信號。當檢測到確定的傳感器信號后,單片機將按一定的時序在其第7個引腳GP0連續發送5個十進制數據(即編碼形式為5位十進制數)給解碼器,每個數據都是按脈沖方式發送出去的。十進制數是多少,就發送幾個低脈沖,發送一個十進制數據所用的時間要保證在255μs以內。其程序流程圖如圖4所示。

        2.3 解碼寫入器
        解碼寫入器部分使用的單片機為AT89C51,解碼寫入器的功能與編碼器的功能類似。由于發送的解碼要能隨時改變,這里可以外接5個小數字鍵盤,解碼寫入器要發送的解碼可以從5個小數字鍵盤上獲得。為了和編碼器發送的編碼區別開來,解碼寫入器需要先發送一個區別字符,使解碼器能夠識別出當前接收的是編碼器還是解碼寫入器發出的數據。區別字符后面緊跟著的是解碼,所有這些數據的發送方式與編碼器編碼的發送方式完全相同,由AT89C51單片機的P3.4口輸出,其程序流程圖如圖5所示。

        2.4 解碼器
        這部分采用的單片機是PIC12CE5C18,其內部有E2PROM。可以利用I2c協議隨時從E2PROM中讀出解碼或者向E2PROM中寫入新的編碼。下面介紹工作過程。首先解碼器讀出內部E2PRoM中00h~04h中的5個十進制數據,分別保存到5個內部數據存儲單元中。然后調用接收數據子程序,接收1個數據,并先保存到1個內部數據存儲單元中,判斷這個數據是否為區別字符10。若不是區別字符,說明現在接收的數據可能是編碼器發送的編碼,則繼續接收后面的4個數據,并保存到4個內部數據存儲單元中,將接收到的這5個十進制數據與前面解碼器讀出的內部E2PROM中00h~04h中的5個十進制數據進行比較,相等則在GP0引腳上發送一個2 ms的低脈沖作為計價脈沖,不相等則重新接收數據。若是區別字符10,說明現在解碼寫入器要修改解碼器的解碼,必須馬上接收跟在區別字符后面的5個數據,并將這5個十進制數據保存到E2PROM的00h~04h中,覆蓋以前的解碼。其程序流程圖如圖6所示,其調用的子程序如圖7和圖8所示。

        結論
        本系統解決了以往計價器計價不準確、使用壽命短等缺點,現在采用以單片機為主控制單元的編碼解碼技術,使每個出租車的計價器擁有不同的編碼,從而防止出租車之間計價器的相互盜用,便于出租車公司對出租車的管理。同時,可以隨時對單片機的外圍電路進行擴展,并通過軟件編程本系統的不斷升級。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 乐山市| 宣威市| 新巴尔虎左旗| 华亭县| 西林县| 乡宁县| 武隆县| 奇台县| 青田县| 三原县| 仙游县| 冷水江市| 隆化县| 磴口县| 北辰区| 六安市| 铁岭县| 体育| 响水县| 驻马店市| 孟州市| 黄山市| 安国市| 平谷区| 万山特区| 连江县| 本溪| 栖霞市| 合水县| 定远县| 临潭县| 清水河县| 都江堰市| 陈巴尔虎旗| 密山市| 团风县| 娄底市| 兴业县| 珠海市| 名山县| 九寨沟县|