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