<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > 用低成本元器件的電路測量電機(jī)速度

          用低成本元器件的電路測量電機(jī)速度

          作者: 時間:2012-08-25 來源:網(wǎng)絡(luò) 收藏

            本設(shè)計實例使用一個微控制器,一個16×2鍵LCD,還有一個旋轉(zhuǎn)編碼器,用于測量并虛擬顯示一只電機(jī)的速度(圖1)。增量編碼器耦合于電機(jī)軸上,測量電機(jī)轉(zhuǎn)子的速度,它產(chǎn)生一個與成正比的正交脈沖。1024脈沖旋轉(zhuǎn)編碼器是Hengstler公司的RS-32-0/1024ER.11KB。電機(jī)旋轉(zhuǎn)速度wR的計算方法是在某個時間周期tP內(nèi),對編碼器軸的轉(zhuǎn)數(shù)nV作計數(shù)。nV的計算方法是,統(tǒng)計在這個固定時間tP內(nèi)的脈沖數(shù)nP:對此編碼器nV=nP/1024。旋轉(zhuǎn)速度為

          圖1測量電機(jī)速度的電路包括一個PIC微控制器和一個LCD電路未使用ADC但也做模數(shù)轉(zhuǎn)換

            其中d=60/(tP×1024)rpm表示所測速度的分辨率。欲為此應(yīng)用獲得1rpm的分辨率,作為時基的固定周期為(60/1024=58.59)ms。在本設(shè)計實例中,使用了Microchip公司的低價微控制器PIC16F873即IC1完成運算。該微控制器亦驅(qū)動LCD即IC2,它以每分鐘轉(zhuǎn)數(shù)為單位顯示旋轉(zhuǎn)速度。

            用一個與參考文獻(xiàn)1中電路類似的方式,在IC1的RB0/INT輸入加上編碼器的正交脈沖,它在脈沖的上升沿產(chǎn)生一個高優(yōu)先中斷。可以用這些中斷通過計數(shù)器的增長計算nP,當(dāng)達(dá)到固定周期tP時計數(shù)器初始化。此外,微控制器的內(nèi)

          部8bit定時器Timer0寄存tP,它在14.3MHz的時鐘頻率fCLK下每286ms產(chǎn)生一個tM(定時器中斷):tM=4×28/fCLK/4=286ms。這個計算意為,修正時基tP需要205個定時器中斷(tP/tM)。根據(jù)方程,當(dāng)計數(shù)器到達(dá)這個時間時,計數(shù)值nP就確定了旋轉(zhuǎn)速度。最后,該值顯示在LCD屏幕上。

            另外,如果控制系統(tǒng)必須測量旋轉(zhuǎn)速度,則需要一個數(shù)模轉(zhuǎn)換。但不必增加昂貴的DAC也可以完成這個轉(zhuǎn)換,方法是將微控制器的PWM(脈沖寬度調(diào)制)加到由R2、R3、C4、C6和IC3構(gòu)成的一個低通濾波器上。PWM信號的頻率為20kHz,低通濾波器的截止頻率為160Hz,遠(yuǎn)低于PWM頻率。在本設(shè)計中,PWM信號的最大占空比周期對應(yīng)的旋轉(zhuǎn)速度為1500rpm。

            可以從Microchip下載IC1程序的源碼,并用MPLab作匯編??梢愿鶕?jù)使用的編碼器以及方程的分辨率,在軟件中修改各個常量。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();