用dsPIC30F的QEI模塊測量交流電機(jī)速度和位置(05-100)
使能數(shù)字濾波器
本文引用地址:http://cafeforensic.com/article/91537.htm使能數(shù)字濾波器在增量編碼器信號(hào)中濾波其他信號(hào)。對(duì)本例所用的結(jié)構(gòu),圖4說明了輸入信號(hào)的濾波作用。
濾波器計(jì)算時(shí),編碼器最小脈沖寬度為最高電機(jī)速度。在這個(gè)實(shí)例中,最小脈沖寬度由下式確定:
所配置的濾波器濾出任何小于15祍的脈沖,運(yùn)行14.75MIPS,能夠滿足濾波器的要求,濾波器分頻器由下式計(jì)算:
在QEI模塊中有可選擇參數(shù),選擇64分頻,13祍以下的脈沖將被濾出。
增量脈沖計(jì)數(shù)器
在每個(gè)QEn引腳輸入增量脈沖計(jì)數(shù)器信號(hào)。為了盡可能提高分辨率,QEI配置成×4。×4計(jì)數(shù)模式時(shí),每個(gè)QEA和QEB信號(hào)沿到來時(shí),POSCNT寄存器增量計(jì)數(shù)或減量計(jì)數(shù),圖5是×4配置的定時(shí)信號(hào)。
復(fù)位脈沖計(jì)數(shù)器
脈沖計(jì)數(shù)器由INDEX引腳復(fù)位。圖6是INDEX脈沖復(fù)位脈沖計(jì)數(shù)器的定時(shí)圖。
代碼實(shí)例
下面是QEI模塊初始化的代碼實(shí)例:
實(shí)例1:QEI模塊初始化
void InitQEI(viod)
{
ADPCFG|=0x0038;
//配置QEI引腳作為數(shù)字輸入
QEICONbit.QEIM=0; //禁止QEI模塊
QEICONbit.CNTERR=0; //清除計(jì)數(shù)錯(cuò)誤
QEICONbit.QEISIDL=0; //睡眠期間連續(xù)工作
QEICONbit.SWPAB=0; //QEA和QEB交換
QEICONbit.PCDOUT=0; //標(biāo)準(zhǔn)I/O引腳工作
QEICONbit.POSRES=1;
//標(biāo)志脈沖復(fù)位位置計(jì)數(shù)器
DELTCONbits.CEID=1; //禁止計(jì)數(shù)錯(cuò)誤中斷
DELTCONbits.QEOUT=1;
//允許QEn引腳數(shù)字濾波器輸出
DELTCONbits.QECK=5;
//對(duì)QEn數(shù)字濾波器1:64時(shí)鐘分頻
DELTCONbits.INDOUT=1;
// 允許INDEX引腳數(shù)字濾波器輸出
DELTCONbits.INDCK=5;
//對(duì)INDEX數(shù)字濾波器1:64時(shí)鐘分頻
POSCNT=0;
//復(fù)位位置計(jì)數(shù)器
QEICONbit.QEIM=6;
//用INDEX位置計(jì)數(shù)器復(fù)位×4模式
Return;
}
分頻器相關(guān)文章:分頻器原理
評(píng)論