測量低頻的轉(zhuǎn)速計(04-100)
MCU計算RPM=60/T(T是被測輸入的周期)方程式。常數(shù)60表示1分鐘內(nèi)60秒給出1個等效的脈沖讀數(shù)或每分鐘轉(zhuǎn)數(shù)(rpm)。本電路的時基由32KHz晶振(EPSON C-001R32.768KA±20ppm)提供,它觸發(fā)PIC內(nèi)部定時器T1。Timer1包含1個可編程預(yù)計數(shù)器,沒置為1/8。此預(yù)計數(shù)器產(chǎn)生4KHz分頻。Timer1是16位的,產(chǎn)生0.00025S(250μS)分辨率,它執(zhí)行周期測量。
通過軟件在輸入RC2端的輸入信號正沿使能Timer1。當(dāng)下1個正沿到達(dá)時,Timer1被禁止。Timer1包含對應(yīng)于輸入信號周期的二進(jìn)制計數(shù)。因為分辨率是0.00025S,所以必須右移3位得到0.25S。所以,新的RPM方程為:
RPM=60000/T
表1列出如何得到RPM讀數(shù),從計數(shù)器(Timer1)開始,它包含周期讀數(shù)。例如,PIC檢測的信號周期是1S,則計數(shù)器讀數(shù)將為1000,這是因為內(nèi)部頻率分頻器設(shè)置為4。此信號的有效RPM讀數(shù)必須等效于60。
軟件工作如下:PIC監(jiān)控輸入(RC2),等待低到高態(tài)轉(zhuǎn)換。當(dāng)檢測到這一轉(zhuǎn)換時,Timer1被設(shè)置位TMR1ON使能。
然后,PIC等待下1個低到高轉(zhuǎn)換。當(dāng)發(fā)生這種轉(zhuǎn)換時,PIC禁止位TMR10N停止計數(shù)?,F(xiàn)在,相關(guān)周期讀數(shù)然后,PIC等待下1個低到高轉(zhuǎn)換。當(dāng)發(fā)生這種轉(zhuǎn)換時,PIC禁止位TMR10N停止計數(shù)?,F(xiàn)在,相關(guān)周期讀數(shù)保存在寄存器TMR1H和TMR1L中。
為避免讀數(shù)超出范圍,必須檢查溢出位TMR1F。若置位此溢出位,意味著被測信號周期太長。在這種情況下,程序?qū)@示信息“OFF”或溢出。這表明輸入信號所具有周期大于16.384S。
若無溢出,則必須檢驗周期測量等于或大于940(相當(dāng)于255rpm)。若此讀數(shù)低于940,則程序?qū)@示信息“OFF”。這表明讀數(shù)大于255rpm。
若數(shù)值大于940,則讀數(shù)用子程序除4,此子程序用構(gòu)成兩個16位數(shù)的兩寄存器(ACCb和ACCa)來工作。為了得到周期,用公式ACCb/ACCa=ACCb,然后60000(EA60H)除以ACCb。這給出二進(jìn)制碼的rpm值,所以必須把二進(jìn)制碼變換為BCD碼。
為了執(zhí)行此操作,變換讀數(shù)為W,然后,調(diào)用二進(jìn)制碼變換BCD碼子程序,把二進(jìn)制讀數(shù)變換為BCD碼,程序用寄存器R0、R1、R2(其中R2為最高有效數(shù))。最后,每個寄存器的值變換為7段碼,這樣可以在LED上顯示。程序中兩個計算表執(zhí)行7段操作,其中1個表處理百位數(shù)?!?峰)
評論