從保護環境和經濟條件許可等因素綜合來看,電動自行車目前乃至今後都有著廣闊的發展空間。目前市面上電動自行車的速度表和裡程表都是機械的,看起來不夠直觀與方便。如果能用LED直接顯示出來裡程數或速度值,就可節省用戶的時間及精力處理自行車行進過程中的突發事件。
本文介紹的速度與裡程表設計以單片機和光電傳感器為核心。傳感器將不同車速轉變成的不同頻率的脈衝信號輸入到單片機進行控制與計算,再採用LED模塊進行顯示,使得電動自行車的速度與裡程數據能直觀的顯示給使用者。
系統概述
本系統由信號預處理電路、單片機AT89C2051、系統化LED顯示模塊、串口數據存儲電路和系統軟體組成。其中信號預處理電路包含信號放大、波形變換和波形整形。對待測信號進行放大的目的是降低對待測信號的幅度要求;波形變換和波形整形電路則用來將放大的信號轉換成可與單片機相連的TTL信號;通過單片機的設置可使內部定時器T1對脈衝輸入引腳T0進行控制,這樣能精確地算出加到T0引腳的單位時間內檢測到的脈衝數;設計中速度顯示採用LED模塊,通過速度換算得來的裡程數採用I2C總線並通過E2PROM來存儲,既節省了所需單片機的口線和外圍器件,同時也簡化了顯示部分的軟體編程。
系統的原理框圖如圖1所示。
圖1 系統的原理框圖
工作原理
該設計能實時地將所測的速度與累計裡程數顯示出來,主要是將傳感器輸入到單片機的脈衝信號的頻率(傳感器將不同車速轉變成不同頻率的脈衝信號)實時地測量出來,考慮到信號的衰減、幹擾等影響,在信號送入單片機前應對其進行放大整形,然後通過單片機計算出速度和裡程,再將所得的數據存儲到串口數據存儲器,並由LED顯示模塊交替顯示所測速度與裡程。本設計的裡程數的算法是一種大概的算法(假設在一定時間內自行車是勻速行進,平均速度與時間的乘積即為裡程數)。
設計時,應綜合考慮測速精度和系統反應時間。本設計用測量脈衝頻率來計算速度,因而具有較高的測速精度。在計算裡程時取了自行車的理想狀態。實際中,誤差控制在幾米之內,相對於整個裡程來說不是很大。為了保證系統的實時性,系統的速度轉換模塊和顯示數據轉BCD碼模塊都採用快速算法。另外,還應儘量保證其他子模塊在編程時的通用性和高效性。本設計的速度和裡程值採用6位顯示,並包含兩個小數位。
系統的硬體設計
脈衝發生源
本設計採用了ST1101紅外光電傳感器,進行非接觸式檢測。當有物體擋在紅外光電發光二極體和高靈敏度的光電電晶體之間時,傳感器將會輸出一個低電平,而當沒有物體擋在中間時則輸出為高電平,從而形成一個脈衝。
該系統在自行車後輪的軸處保持著與輪子旋轉切面平行的方向延伸附加一個鋁盤,在這個鋁盤的邊沿處挖出若干個圓形過孔,把傳感器的檢測部分放在圓孔的圓心位置。每當鋁盤隨著後輪旋轉的時候,傳感器將向外輸出若干個脈衝。把這些脈衝通過一系列的波形整形成單片機可以識別的TTL電平,即可算出輪子即時的轉速。
鋁盤的圓孔的個數決定了測量的精度,個數越多,精度越高。這樣就可以在單位時間內儘可能多地得到脈衝數,從而避免了因為兩個過孔之間的距離過大,而車子正好在過孔之間或者是在下個過孔之前停止了,造成較大的誤差。
本設計在鋁盤過孔的設計上採用11個過孔,從而留下了10個同等的間距。這樣在以後的軟體設計中能夠較為方便的計算出速度裡程。脈衝發生源的硬體結構圖如圖2所示。
圖2 脈衝發生源硬體結構圖(左為正視圖,右為側視圖)
信號預處理電路
如圖3所示,系統的信號預處理電路由二級電路構成,第一級是由開關三極體組成的零偏置放大器,採用開關三極體可以保證放大器具有良好的高頻響應。當輸入信號為零或負電壓時,三極體截止,電路輸出高電平;而當輸入信號為正電壓時,三極體導通,此時輸出電壓隨著輸入電壓的上升而下降,這使得速度裡程表既可以測量任意方波信號的頻率,也可以測量正弦波信號的頻率。由於放大器的放大功能降低了對待測信號的幅度要求,因此,系統能對任意大於0.5V的正弦波和脈衝信號進行測量。預處理電路的第二級採用帶施密特觸發器的反相器DM74LS14來把放大器生成的單相脈衝轉換成與COMS電平相兼容的方波信號(如圖4所示),同時將輸出信號加到單片機的P3.4口上。
圖3 信號預處理電路圖
圖4 施密特觸發器對脈衝的整形
利用施密特觸發器狀態轉換過程中的正反饋作用,可以把邊沿變化緩慢的周期性信號變換為邊沿很陡的矩形脈衝信號。輸入的信號只要幅度大於VT+,即可在施密特觸發器的輸出端得到同等頻率的矩形脈衝信號。
從傳感器得到的矩形脈衝經傳輸後往往發生波形畸變。當傳輸線上的電容較大時,波形的上升沿將明顯變壞;當傳輸線較長,而且接受端的阻抗與傳輸線的阻抗不匹配時,在波形的上升沿和下降沿將產生振蕩現象;當其他脈衝信號通過導線間的分布電容或公共電源線疊加到矩形脈衝信號時,信號上將出現附加的噪聲。無論出現上述的那一種情況,都可以通過用施密特反相觸發器整形而得到比較理想的矩形脈衝波形。只要施密特觸發器的VT+和VT-設置得合適,均能受到滿意的整形效果。
E2PROM AT24C02的應用
AT24C02是CMOS 2048位串行E2PROM,在內部組織成2568位。AT24C02的特點是具有允許在簡單的二線總線上工作的串行接口和軟體協議。
如圖5所示,在本設計中用晶片AT24C02的SDA端與單片機的P3.7口相連,SCL端與單片機的P3.5口相連。因為在這個I2C總線上只有一個器件,所以把AT24C02的地址設為000,即把A0、A1、A2都接地。單片機計算出來的裡程數據通過SDA、SCL向AT24C02輸送數據。單片機首先向AT24C02發送寫信號,當確認後從單片機內部的數據儲存單元提取數據然後向AT24C02的內部地址傳送數據。當顯示裡程時,單片機首先向AT24C02發送讀信號,然後確認後,單片機從AT24C02內部的地址向單片機的讀出單元字節讀出數據,供顯示所用。
圖5 AT24C02與單片機的接口電路圖
顯示部分
本設計的顯示模塊包括MC14511BCP、CD4076、74LS138和6個LED顯示管等器件。
MC14511是將鎖存、解碼、驅動三種功能集於一身的「三合一」器件。鎖存器的作用是避免在計數過程中出現跳數現象,便於觀察和記錄。用解碼器將BCD碼轉換成7段碼,再經過大電流反相器,驅動共陰極LED數碼管。解碼器屬於非時序電路,其輸出狀態與時鐘無關,僅取決於輸入的BCD碼。
74LS138的作用相當於位選的功能,當C,B,A的輸入分別為「000、001、010、011、100、101」時分別選擇不同的MC14511,從而在不同位上顯示不同的數字和小數點。CD4076是CMOS 4位三態輸出D寄存器,通過74LS138的Y6,Y7來控制其CP的工作,從而使CD4076來控制小數點顯示。圖6是顯示模塊框圖。
圖6 顯示模塊框圖
圖7為系統顯示部分的電路。系統中用74LS138的Y0~Y5選擇MC14511以驅動LED顯示,Y6、Y7來控制CD40756的CP,從而達到以CD4076的Q1~Q4控制小數點的顯示,另一個CD4076隻用到其Q1和Q2,圖中字符相對應的地方表示其引腳相連。
圖7 系統顯示部分的電路
系統的軟體設計
系統軟體框圖
如圖8所示,本系統軟體採用模塊化設計方法。整個系統由初始化模塊、頻率測量模塊、速度,裡程計算模塊、數據轉BCD碼模塊、速度顯示模塊、裡程顯示模塊、數據存儲,讀取模塊、定時器中斷服務模塊以及其他功能模塊組成
圖8 系統軟體框圖
數據處理
待測信號經預處理電路後加至單片機的P3.4(T0)引腳可為單片機測量信號頻率提供有效的輸入信號。單片機通過檢測P3.4引腳電平來決定是否啟動測量頻率程序。當該引腳為高電平時,系統處於等待狀態,要一直到該引腳出現低電平時才開始測頻率。
我們可從硬體的鋁盤上知道兩個過孔之間在圓周上的距離。而這個距離M正好為計算速度和距離起到了基本的數據儲備作用。同時可以從TL0寄存器知道在兩秒內單片機檢測到的N個脈衝。而MN所得到的正是這兩秒內鋁盤在圓周上所走得距離S。(此時假設在這個兩秒內車子是勻速前進的),距離S除以2s的時間,就可以大概的算出這2s內鋁盤的線速度。再根據鋁盤與自行車的輪子保持著一樣的角速度,得到鋁盤的線速度與輪子線速度的關係,從而算出自行車在這2s的平均速度。
至於裡程的計算,根據速度計算的分析,在得到2s內鋁盤在其圓周上走過的距離後。根據它與自行車輪子的圓周走過的距離有一定比例關係(通過兩者角速度一樣的算法)可以通過單片機的算出自行車在這兩秒內走過的路程S1。把這個路程S1與存儲器原來的裡程數相加即可得到目前的總裡程數。
通過單片機計算出來的速度和裡程的數據,必須通過BCD碼的轉換才能輸出給顯示模塊。總裡程數的顯示是設定出現在電動自行車開動,單片機開機經過初始化後顯示出來,這樣以來用戶可以清楚的知道自己的車子已經運行了多少公裡了。而速度的顯示則是在計算出速度裡程後立刻顯示出來,體現實時性。
結論
本設計以AT89C2051為核心,通過光電傳感器來檢測自行車的運轉情況進而實現電動自行車的速度,裡程的計算及裡程的累計,存儲,最後用6位的LED能直觀的將速度與裡程顯示給用戶,並且在速度高於一定的值時可自動向用戶報警,從而達到智能速度裡程表。