基于單片機的電動(dòng)自行車(chē)速度與里程表設計
系統概述
本文引用地址:http://dyxdggzs.com/article/21295.htm本系統由信號預處理電路、單片機at89c2051、系統化led顯示模塊、串口數據存儲電路和系統軟件組成。其中信號預處理電路包含信號放大、波形變換和波形整形。對待測信號進(jìn)行放大的目的是降低對待測信號的幅度要求;波形變換和波形整形電路則用來(lái)將放大的信號轉換成可與單片機相連的ttl信號;通過(guò)單片機的設置可使內部定時(shí)器t1對脈沖輸入引腳t0進(jìn)行控制,這樣能精確地算出加到t0引腳的單位時(shí)間內檢測到的脈沖數;設計中速度顯示采用led模塊,通過(guò)速度換算得來(lái)的里程數采用i2c總線(xiàn)并通過(guò)e2prom來(lái)存儲,既節省了所需單片機的口線(xiàn)和外圍器件,同時(shí)也簡(jiǎn)化了顯示部分的軟件編程。系統的原理框圖如圖1所示。

圖1 系統的原理框圖 工作原理
該設計能實(shí)時(shí)地將所測的速度與累計里程數顯示出來(lái),主要是將傳感器輸入到單片機的脈沖信號的頻率(傳感器將不同車(chē)速轉變成不同頻率的脈沖信號)實(shí)時(shí)地測量出來(lái),考慮到信號的衰減、干擾等影響,在信號送入單片機前應對其進(jìn)行放大整形,然后通過(guò)單片機計算出速度和里程,再將所得的數據存儲到串口數據存儲器,并由led顯示模塊交替顯示所測速度與里程。本設計的里程數的算法是一種大概的算法(假設在一定時(shí)間內自行車(chē)是勻速行進(jìn),平均速度與時(shí)間的乘積即為里程數)。
設計時(shí),應綜合考慮測速精度和系統反應時(shí)間。本設計用測量脈沖頻率來(lái)計算速度,因而具有較高的測速精度。在計算里程時(shí)取了自行車(chē)的理想狀態(tài)。實(shí)際中,誤差控制在幾米之內,相對于整個(gè)里程來(lái)說(shuō)不是很大。為了保證系統的實(shí)時(shí)性,系統的速度轉換模塊和顯示數據轉bcd碼模塊都采用快速算法。另外,還應盡量保證其他子模塊在編程時(shí)的通用性和高效性。本設計的速度和里程值采用6位顯示,并包含兩個(gè)小數位。
系統的硬件設計
1、脈沖發(fā)生源
本設計采用了st1101紅外光電傳感器,進(jìn)行非接觸式檢測。當有物體擋在紅外光電發(fā)光二極管和高靈敏度的光電晶體管之間時(shí),傳感器將會(huì )輸出一個(gè)低電平,而當沒(méi)有物體擋在中間時(shí)則輸出為高電平,從而形成一個(gè)脈沖。 該系統在自行車(chē)后輪的軸處保持著(zhù)與輪子旋轉切面平行的方向延伸附加一個(gè)鋁盤(pán),在這個(gè)鋁盤(pán)的邊沿處挖出若干個(gè)圓形過(guò)孔,把傳感器的檢測部分放在圓孔的圓心位置。每當鋁盤(pán)隨著(zhù)后輪旋轉的時(shí)候,傳感器將向外輸出若干個(gè)脈沖。把這些脈沖通過(guò)一系列的波形整形成單片機可以識別的ttl電平,即可算出輪子即時(shí)的轉速。
鋁盤(pán)的圓孔的個(gè)數決定了測量的精度,個(gè)數越多,精度越高。這樣就可以在單位時(shí)間內盡可能多地得到脈沖數,從而避免了因為兩個(gè)過(guò)孔之間的距離過(guò)大,而車(chē)子正好在過(guò)孔之間或者是在下個(gè)過(guò)孔之前停止了,造成較大的誤差。
本設計在鋁盤(pán)過(guò)孔的設計上采用11個(gè)過(guò)孔,從而留下了10個(gè)同等的間距。這樣在以后的軟件設計中能夠較為方便的計算出速度里程。脈沖發(fā)生源的硬件結構圖如圖2所示。

圖2 脈沖發(fā)生源硬件結構圖(左為正視圖,右為側視圖)
2、信號預處理電路
如圖3所示,系統的信號預處理電路由二級電路構成,第一級是由開(kāi)關(guān)三極管組成的零偏置放大器,采用開(kāi)關(guān)三極管可以保證放大器具有良好的高頻響應。當輸入信號為零或負電壓時(shí),三極管截止,電路輸出高電平;而當輸入信號為正電壓時(shí),三極管導通,此時(shí)輸出電壓隨著(zhù)輸入電壓的上升而下降,這使得速度里程表既可以測量任意方波信號的頻率,也可以測量正弦波信號的頻率。由于放大器的放大功能降低了對待測信號的幅度要求,因此,系統能對任意大于0.5v的正弦波和脈沖信號進(jìn)行測量。預處理電路的第二級采用帶施密特觸發(fā)器的反相器dm74ls14來(lái)把放大器生成的單相脈沖轉換成與coms電平相兼容的方波信號(如圖4所示),同時(shí)將輸出信號加到單片機的p3.4口上。

圖3 信號預處理電路圖

圖4 施密特觸發(fā)器對脈沖的整形
利用施密特觸發(fā)器狀態(tài)轉換過(guò)程中的正反饋作用,可以把邊沿變化緩慢的周期性信號變換為邊沿很陡的矩形脈沖信號。輸入的信號只要幅度大于vt+,即可在施密特觸發(fā)器的輸出端得到同等頻率的矩形脈沖信號。
從傳感器得到的矩形脈沖經(jīng)傳輸后往往發(fā)生波形畸變。當傳輸線(xiàn)上的電容較大時(shí),波形的上升沿將明顯變壞;當傳輸線(xiàn)較長(cháng),而且接受端的阻抗與傳輸線(xiàn)的阻抗不匹配時(shí),在波形的上升沿和下降沿將產(chǎn)生振蕩現象;當其他脈沖信號通過(guò)導線(xiàn)間的分布電容或公共電源線(xiàn)疊加到矩形脈沖信號時(shí),信號上將出現附加的噪聲。無(wú)論出現上述的那一種情況,都可以通過(guò)用施密特反相觸發(fā)器整形而得到比較理想的矩形脈沖波形。只要施密特觸發(fā)器的vt+和vt-設置得合適,均能受到滿(mǎn)意的整形效果。
3、e2prom at24c02的應用
at24c02是cmos 2048位串行e2prom,在內部組織成256×8位。at24c02的特點(diǎn)是具有允許在簡(jiǎn)單的二線(xiàn)總線(xiàn)上工作的串行接口和軟件協(xié)議。
如圖5所示,在本設計中用芯片at24c02的sda端與單片機的p3.7口相連,scl端與單片機的p3.5口相連。因為在這個(gè)i2c總線(xiàn)上只有一個(gè)器件,所以把at24c02的地址設為000,即把a0、a1、a2都接地。單片機計算出來(lái)的里程數據通過(guò)sda、scl向at24c02輸送數據。單片機首先向at24c02發(fā)送寫(xiě)信號,當確認后從單片機內部的數據儲存單元提取數據然后向at24c02的內部地址傳送數據。當顯示里程時(shí),單片機首先向at24c02發(fā)送讀信號,然后確認后,單片機從at24c02內部的地址向單片機的讀出單元字節讀出數據,供顯示所用。

圖5 at24c02與單片機的接口電路圖
4、顯示部分
本設計的顯示模塊包括mc14511bcp、cd4076、74ls138和6個(gè)led顯示管等器件。mc14511是將鎖存、譯碼、驅動(dòng)三種功能集于一身的“三合一”器件。鎖存器的作用是避免在計數過(guò)程中出現跳數現象,便于觀(guān)察和記錄。用譯碼器將bcd碼轉換成7段碼,再經(jīng)過(guò)大電流反相器,驅動(dòng)共陰極led數碼管。譯碼器屬于非時(shí)序電路,其輸出狀態(tài)與時(shí)鐘無(wú)關(guān),僅取決于輸入的bcd碼。
74ls138的作用相當于位選的功能,當c,b,a的輸入分別為“000、001、010、011、100、101”時(shí)分別選擇不同的mc14511,從而在不同位上顯示不同的數字和小數點(diǎn)。cd4076是cmos
4位三態(tài)輸出d寄存器,通過(guò)74ls138的y6,y7來(lái)控制其cp的工作,從而使cd4076來(lái)控制小數點(diǎn)顯示。圖6是顯示模塊框圖。

圖6 顯示模塊框圖
圖7為系統顯示部分的電路。系統中用74ls138的y0~y5選擇mc14511以驅動(dòng)led顯示,y6、y7來(lái)控制cd40756的cp,從而達到以cd4076的q1~q4控制小數點(diǎn)的顯示,另一個(gè)cd4076只用到其q1和q2,圖中字符相對應的地方表示其引腳相連。

圖7 系統顯示部分的電路
系統的軟件設計
1、系統軟件框圖
如圖8所示,本系統軟件采用模塊化設計方法。整個(gè)系統由初始化模塊、頻率測量模塊、速度,里程計算模塊、數據轉bcd碼模塊、速度顯示模塊、里程顯示模塊、數據存儲,讀取模塊、定時(shí)器中斷服務(wù)模塊以及其他功能模塊組成。

圖8 系統軟件框圖
2、數據處理
待測信號經(jīng)預處理電路后加至單片機的p3.4(t0)引腳可為單片機測量信號頻率提供有效的輸入信號。單片機通過(guò)檢測p3.4引腳電平來(lái)決定是否啟動(dòng)測量頻率程序。當該引腳為高電平時(shí),系統處于等待狀態(tài),要一直到該引腳出現低電平時(shí)才開(kāi)始測頻率。
我們可從硬件的鋁盤(pán)上知道兩個(gè)過(guò)孔之間在圓周上的距離。而這個(gè)距離m正好為計算速度和距離起到了基本的數據儲備作用。同時(shí)可以從tl0寄存器知道在兩秒內單片機檢測到的n個(gè)脈沖。而m×n所得到的正是這兩秒內鋁盤(pán)在圓周上所走得距離s。(此時(shí)假設在這個(gè)兩秒內車(chē)子是勻速前進(jìn)的),距離s除以2s的時(shí)間,就可以大概的算出這2s內鋁盤(pán)的線(xiàn)速度。再根據鋁盤(pán)與自行車(chē)的輪子保持著(zhù)一樣的角速度,得到鋁盤(pán)的線(xiàn)速度與輪子線(xiàn)速度的關(guān)系,從而算出自行車(chē)在這2s的平均速度。至于里程的計算,根據速度計算的分析,在得到2s內鋁盤(pán)在其圓周上走過(guò)的距離后。根據它與自行車(chē)輪子的圓周走過(guò)的距離有一定比例關(guān)系(通過(guò)兩者角速度一樣的算法)可以通過(guò)單片機的算出自行車(chē)在這兩秒內走過(guò)的路程s1。把這個(gè)路程s1與存儲器原來(lái)的里程數相加即可得到目前的總里程數。通過(guò)單片機計算出來(lái)的速度和里程的數據,必須通過(guò)bcd碼的轉換才能輸出給顯示模塊??偫锍虜档娘@示是設定出現在電動(dòng)自行車(chē)開(kāi)動(dòng),單片機開(kāi)機經(jīng)過(guò)初始化后顯示出來(lái),這樣以來(lái)用戶(hù)可以清楚的知道自己的車(chē)子已經(jīng)運行了多少公里了。而速度的顯示則是在計算出速度里程后立刻顯示出來(lái),體現實(shí)時(shí)性。
結論
本設計以at89c2051為核心,通過(guò)光電傳感器來(lái)檢測自行車(chē)的運轉情況進(jìn)而實(shí)現電動(dòng)自行車(chē)的速度,里程的計算及里程的累計,存儲,最后用6位的led能直觀(guān)的將速度與里程顯示給用戶(hù),并且在速度高于一定的值時(shí)可自動(dòng)向用戶(hù)報警,從而達到智能速度里程表。
評論