新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 新型出租車計價器軟件功能分析與實現

        新型出租車計價器軟件功能分析與實現

        作者: 時間:2011-06-16 來源:網絡 收藏


        2 計程
        2.1 計程原理與設計
        將安裝在車輛變速箱輸出端齒輪的霍爾傳感器接到單片機外部中斷接口上,車輪每轉動一圈,霍爾傳感器將產生一個下降沿脈沖(霍爾脈沖),觸發外部中斷。設車輪直徑0.6 m,最高時速200 km/h,則兩次外部中斷之間最短時間間隔為:0.6×3.14/(200×1 000/3 600)×1 000=33.9 ms。
        對單片機而言,所有計價、計時、顯示、統計等,都可在33.9 ms時間內完成,所以對計程部分采用每次外部中斷到來時(F_int0= 1),調用外部中斷處理程序來處理計程價。具體流程如圖1所示。
        設計一個占5字節的計程單元S,車輪周長占3 B,每1 B存儲內容如表3所示。對計程價每100 m處理1次,所以在計程計子程序中首先是讓計程單元加上車輪周長,判斷是否已行駛100 m。從表3可以看出,做加法計算時如果第3字節有向第4字節進位,說明已經行駛了100 m,這時再判斷計程單元的大小,判斷是起步價,還是3~8 km的短途價或是8 km以上的長途價,繼而再根據時間判斷是夜班還是白班,加上不同的計價參數。

        本文引用地址:http://www.104case.com/article/172674.htm

        c.JPG


        2.2 計程誤差
        因為在計程時用的是每來一個霍爾脈沖加一個車輪周長的方法,車輪周長誤差的累積將引起總計程的系統誤差。車輪周長用3 B壓縮BCD碼表示,1 B整數(單位:m),2 B小數,每次系統誤差為10-4m,相對誤差小于0.01%。
        假設最大計程1000km,車輪周長1.5m,則計程最大系統誤差為:(1 000×1 000/1.5)×10-4=66.7m,偶然誤差為2個周長,即3.0m。
        對計程價每100 m加1次,即計程誤差小于1個計價單位。

        3 誤時
        3.1 誤時原理與設計
        誤時價的計算是以Vwait=5 km/h為切換點,當速度低于5 km/h時,需要計算誤時價。已知:速度=周長/時間間隔。為了判斷速度,開啟單片機定時器來計算兩次霍爾脈沖的時間間隔。為了計算方便,對于51單片機開設50 ms的定時器中斷。特別設計一個占5 B的總誤時單元,3 B的計時單元。這里第3字節存儲的是50 ms中斷的次數,具體存儲內容如表4所示。其中總誤時單元存儲的是總的誤時時間,計時單元專門存儲霍爾脈沖間隔。

        d.JPG


        當行駛速度為5 km/h時,這時霍爾脈沖的時間間隔為:0.6×3.14/(5×1 000/3 600)×1 000=1 356.48≈27×50 ms。
        根據上面計算,在兩次霍爾脈沖之間,50 ms中斷的次數大于27時,要計算誤時價。而對誤時價是10s處理1次,即調用1次誤時價子程序,這時分兩種情況:
        第一種情況是在外部中斷處理程序中。外部中斷到來(F_int0=1)后,計時單元中50 ms次數大于27,這時總誤時單元要加上計時單元,總誤時單元的50 ms次數如果大于或等于200,則調用誤時價子程序。還要注意的是,因為中斷到來后,定時器會重新賦初值,所以需要把上一次定時器中不足50 ms的計數值轉換為微秒,存儲到計時單元的第1和第2個字節中。流程圖如圖1所示。
        第二種情況是在50 ms中斷處理程序中。計時單元50 ms中斷次數已達到200次即兩次霍爾脈沖的間隔超過了10 s,這時計時單元清零,也要調用誤時價子程序。流程圖如圖2所示。

        f.JPG


        誤時價子程序里先將總誤時的10 s單元加1,然后判斷有沒有超過起價等待時間,如果超過的話,再根據時間判斷,是要加白天10 s誤時價,還是加夜間10 s誤時價。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 井陉县| 临城县| 礼泉县| 醴陵市| 泗洪县| 淳安县| 怀化市| 延庆县| 尚志市| 庆元县| 长子县| 宣化县| 依兰县| 三河市| 尚志市| 河曲县| 青海省| 大同市| 苗栗市| 博湖县| 青川县| 寿光市| 阳原县| 尼木县| 武宁县| 台中市| 信阳市| 灵璧县| 留坝县| 磐石市| 山阳县| 固阳县| 廉江市| 扎兰屯市| 蕲春县| 陕西省| 文水县| 余江县| 鄄城县| 万州区| 桃源县|