基于PIC16F877單片機的簡易測速計設計與仿真
引言
隨著微電子技術的迅猛發(fā)展,單片機在汽車、通信、辦公自動化、工業(yè)控制、高級玩具、家用電器等方面都得到了廣泛的應用。如果將Proteus作為單片機系統(tǒng)仿真工具,則不用制作電路板,而可以使用Proteus進行系統(tǒng)虛擬實現,這樣不僅能完成所需功能設計驗證,還能降低硬件成本的耗用,從而縮短整個設計周期,從根本上提高了電子產品的開發(fā)效率。
測速是工農業(yè)生產中經常遇到的問題,基于單片機的各種優(yōu)勢,將單片機應用于測速系統(tǒng),具有很重要的意義。而對于測速技術,首先要解決的就是采樣問題。在使用模擬技術制作測速設備時,常用測速發(fā)電機的方法,即將測速發(fā)電機的轉軸與待測軸相連,測速發(fā)電機的電壓高低反映了轉速的高低;而使用單片機進行測速,則可以使用簡單的脈沖計數法。只要轉軸每旋轉一周,產生一個或固定的多個脈沖,并將脈沖送入單片機中進行計數,最終計算出單位時間內的脈沖個數,即可獲得轉速的相關信息。本文將基于PIC16F877單片機的捕捉功能來完成脈沖計數,利用軟件編程實現相關物理關系的轉換,最終得出齒輪線速度,并顯示在數碼管上。
1測速計原理
CCP1捕捉功能
PIC16F877單片機中有兩個CCP模塊,其構造基本相同,分別記為CCP1和CCP2。每個CCP模塊可以任意配置為捕捉(Capture).比較(Compare)和脈寬調制(PWM)3個功能模式之一。
CCP1的捕捉模式具有如下三個功能:其一是可以捕捉RC2/CPP1引腳出現的跳變并保存當時TMR1計數寄存器內容;其二是具有預分頻器,可以實現每1個脈沖、每4個脈沖或16個脈沖捕捉一次;其三是捕捉時間能產生中斷。
CCP測速計原理
在捕捉模式下,單片機可以捕捉引腳電平變化時刻的時間值,即引腳輸入脈沖上升沿或下降沿出現時刻的精確時間值。PIC16F877的CCP1模塊工作于捕捉模式時,當特定的跳變沿出現時,TMR1定時器的計數值會立即復制到CCPR1H和CCPR1L中并產生中斷信號,通過在中斷服務程序中讀取這個16位計數值。當使用CCP1模塊的捕捉功能實現相鄰兩次上升沿時間間隔的測量時,此時間間隔就是輸入信號的周期g_Period。由于主頻是4MHz,即每個指令周期為1us,將預分頻比設置為1:1,測得周期結果單位為微秒級。所以最終測得的速度值speed通過以下公式得出:
speed=(1M*60s*0.01m*pi)/g_Period
其中,pi為圓周率值;0.01m為被測對象齒輪的直徑,通過物理方法測得。
2功能實現2.1系統(tǒng)結構圖
測速計功能的實現可由基于PIC16F877的主控制模塊、顯示模塊、齒輪和光電傳感器構成的被測模塊等幾部分構成。通過單片機的RC2/CCP1引腳分別連接被測模塊和測量子模塊,在Proteus軟件仿真時,分別由信號發(fā)生器SG1和頻率計作為硬件設備連接。SG1用來模擬被測模塊產生信號,F1采用頻率計方式運行,用來顯示當前信號頻率,用來做參考值與顯示模塊數據,即測速計測速結果值進行比較,以驗證測速計測速結果的正確與否。各模塊之間的連接關系如圖1所示。
2.2設計與實現
該簡易速度計的設計實現主要基于PIC16F877的CCP模塊功能,這里我們首先將PIC16F877的CCP1配置為捕捉模式,預分頻比設置為1:1,每個上升沿觸發(fā)。
當捕捉到跳變后CPP1中斷標志位置位,直接采用中斷方式進行處理,即在中斷服務子程序中處理相關寄存器的數值或狀態(tài)變化,計算并儲存相關物理量,以上設置均由軟件編程來完成。
本設計軟件編程部分統(tǒng)一在PIC系列單片機的專用開發(fā)環(huán)境MPLABIDE8.90下完成,程序代碼釆用C語言編寫。系統(tǒng)主程序流程如圖2所示,圖3所示是系統(tǒng)中的中斷服務程序運行流程。
3功能仿真
3.1Proteus下仿真電路的搭建
要在Proteus下完成測速計功能的仿真,首先應在其界面新建設計文件并搭建仿真電路圖,本例的測速計功能電路圖如圖4所示。
在Proteus軟件下進行仿真時,庫里各電子模塊本身集成有驅動功能,故各模塊與單片機之間只需要用連接線簡易連接即可,而無需外加任何驅動電路。但是,實際制作電路版時,還是需外加各模塊的驅動電路,并考慮各器件之間的間距,以避免電磁干擾。
3.2功能仿真
在PIC系列單片機的專用開發(fā)環(huán)境MPLABIDE8.90下分別完成各個模塊的代碼編寫,編譯運行后,用調試工具ProteusVSM加載Proteus軟件下建立好的設計文件,并運行,其結果如圖5所示。
圖5仿真結果圖
3.3仿真結果分析
如圖5所示,當信號頻率配置為3000Hz時,仿真結果即測速計的速度顯示為5660m/s,且以速度值為中心,小范圍內上下波動。而經過理論計算的速度值約為5655m/s,與仿真值基本相同。事實上,經過連續(xù)測量n個周期后求平均值的辦法,其理論值與仿真值之間的誤差會明顯減小。
4結語
基于PIC16F877單片機捕捉功能實現的簡易測速計,經過Proteus軟件下的仿真驗證,基本符合預期結果。整個測速計設計簡單方便、成本低、測速誤差較小、易于實現,在模塊化后,可作為一個集成測速模塊直接應用于其他設計當中。





