增量編碼盤輸出信號A和B具有90°的相位差。A和B的相位關系反映了被測對象的旋轉方向,若A超前于B,表明編碼器是順時針旋轉的,反之,編碼器為逆時針旋轉。當增量編碼盤的細分數為N時,增量編碼盤的每一個脈沖代表的角位移為360°/N,A、B信號的頻率相同,頻率大小反映當前電機速度,由這兩個信號就可得到電機轉向、轉角和轉速。[6]如圖2所示,在A和B的上升沿和下降沿計數器均做相應變化,得到count脈沖,在FPGA中計數,即可得到編碼器輸出的脈沖數,經過計算就可以得到電機一定時間內實際走過的路程或者單位時間內的速度。

本系統主要在FPGA中編程實現對編碼器的硬件解碼。主要程序如下:
if(shift_a==2’b01)
begin
if(b)
cnt<=#2cnt-1’b1;
else
cnt<=#2cnt+1’b1;
end
elseif(shift_a==2’b10)
begin
if(b)
cnt<=#2cnt+1’b1;
else
cnt<=#2cnt-1’b1;
end
elseif(shift_b==2’b01)
begin
if(a)
cnt<=#2cnt+1’b1;
else
cnt<=#2cnt-1’b1;
end
elseif(shift_b==2’b10)
begin
if(a)
cnt<=#2cnt-1’b1;
else
cnt<=#2cnt+1’b1;
其中,cnt為十六位寄存器,shift_a=2’b01和shiftb=2’b01分別表示A和B出現上升沿,同理如果是等于2’b10則表示下降沿。電機編碼器硬件解碼程序仿真模擬后效果如圖3所示。圖中number為FPGA計算所得的編碼器輸出脈沖數。
電子發燒友App























































評論