單片機與增量式旋轉(zhuǎn)編碼器的連接
A,B兩點對應(yīng)兩個光敏接受管,A,B兩點間距為 S2 ,角度碼盤的光柵間距分別為S0和S1。
本文引用地址:http://2s4d.com/article/201611/316215.htm當(dāng)角度碼盤以某個速度勻速轉(zhuǎn)動時,那么可知輸出波形圖中的S0:S1:S2比值與實際圖的S0:S1:S2比值相同,同理角度碼盤以其他的速度勻速 轉(zhuǎn)動時,輸出波形圖中的S0:S1:S2比值與實際圖的S0:S1:S2比值仍相同。如果角度碼盤做變速運動,把它看成為多個運動周期(在下面定義)的組 合,那么每個運動周期中輸出波形圖中的S0:S1:S2比值與實際圖的S0:S1:S2比值仍相同。
通過輸出波形圖可知每個運動周期的時序為
順時針運動 逆時針運動
A B AB
1 1 11
0 110
0 0 00
1 0 01
我們把當(dāng)前的A,B輸出值保存起來,與下一個A,B輸出值做比較,就可以輕易的得出角度碼盤的運動方向,
如果光柵格S0等于S1時,也就是S0和S1弧度夾角相同,且S2等于S0的1/2,那么可得到此次角度碼盤運動位移角度為S0弧度夾角的1/2,除以所消毫的時間,就得到此次角度碼盤運動位移角速度。
S0等于S1時,且S2等于S0的1/2時,1/4個運動周期就可以得到運動方向位和位移角度,如果S0不等于S1,S2不等于S0的1/2,那么要1個運動周期才可以得到運動方向位和位移角度了。發(fā)一個機械式旋轉(zhuǎn)編碼器檢測程序用51寫的
#defineWA=PX.X
#defineWB=Py.y
voidencoder(void)
{
unsignedchari,j;
staticunsignedcharta,tb;
TR1=0;
i=WA;
j=WB;
if((i^j)&&(ta&tb))
{
if((i==1)&&(j==0))
{
count++;
}
elseif((i==0)&&(j==1))
{
count--;
}
}
評論