基於ZYNQ的旋轉編碼器測速實驗

2021-08-02 21:29:07 字數 1611 閱讀 3124

硬體平台:zynq xcz7020

編碼器:歐姆龍e6b2 500線編碼器。

實現功能:每5ms測速週期對編碼器進行脈衝計數,換算得到轉速,並根據ab相關係得到旋轉方向。

在寫這塊**的時候也遇到了一些問題,程式雖小但也涉及到一些veilog中易錯的點。**如下

module encoder(

input clk_i,

input rst_n,

input encodera_i,//編碼器為500線

input encoderb_i,

output [31:0] speed_o,

output dir_o

);reg [18:0] clk_cnt;//fpga頻率計數

reg [31:0] speed=0;

reg dir=0;//0 正方向 1反方向

reg stop;

always@(posedge clk_i) begin

if(rst_n==0) begin

clk_cnt<=0;

endelse

begin

if(clk_cnt==19

'd50_0000) begin //100mhz時鐘計時5ms

clk_cnt<=0;

stop<=1;

endelse

begin

clk_cnt<=clk_cnt+1

'd1;

stop<=0;

endendend

reg[18:0] a_cnt;

always@(posedge encodera_i) begin

if(encoderb_i==1

'b1)

dir<=1;

else

dir<=0;

endalways@(posedge encodera_i or negedge rst_n or posedge stop) begin

if(rst_n==0)

a_cnt<=0;

else

begin

if(stop==1) begin

a_cnt<=0;

endelse

a_cnt<=a_cnt+1;

endend always@(*)begin

if(clk_cnt==19

'd49_9999)begin

speed<=24*a_cnt;//speed 單位為 r/min 24是5ms測速週期

//的單位換算係數

endelse speed<=speed;

endassign speed_o = speed;

assign dir_o = dir;

endmodule

完成編碼器模組的testbench測試之後,在axi_lite匯流排中進行呼叫,並封裝成ip,實現了zynq的soc開發,在pl部分進行測速,在ps部分實現資料的視覺化。最後在進行管腳約束時遇到乙個問題,編碼器的脈衝輸入訊號是時鐘訊號,需要將其約束到具有時鐘輸入能力的管腳,官方daatasheet中表述為clock capable i/os 這些管腳在zynq中的標識為mrcc/srcc。

若有問題請大家批評指正

旋轉編碼器

旋轉編碼器用來測位置角度速度位移等資訊。分類 按原理 光電式和磁電效應式 旋轉的永磁體和不動的監測裝置 按訊號 增量式 脈衝式 和絕對式 碼盤刻有絕對值圖譜,分為二進位制和格雷碼或格雷碼的餘碼輸出 初始位置不為0,非2的冪次方 安裝方式 軸型 加裝固定,安裝成本高 和軸套型 安裝空間小成本低 單圈 ...

連線編碼器 旋轉編碼器的接線方式

旋轉編碼器是一種光電式旋轉丈量裝置,它將被測的角位移直接改換成數碼訊號 高速脈衝訊號 因而可將旋轉編碼器的輸出脈衝訊號直接輸入給plc,運用plc的高速計數器對其脈衝訊號進行計數,歐姆龍觸控螢幕,以取得丈量成果。紛歧樣型別的旋轉編碼器,其輸出脈衝的相數也紛歧樣,有的旋轉編碼器輸出a b z三相脈衝,...

11旋轉編碼器原理 旋轉編碼器的工作原理和分類

旋轉編碼器是集光機電技術於一體的速度位移感測器。當旋轉編碼器軸帶動光柵盤旋轉時,經發光元件發出的光被光柵盤狹縫切割成斷續光線,並被接收元件接收產生初始訊號。該訊號經後繼電路處理後,輸出脈衝或 訊號。它的特點是體積小,功能全,頻響高,分辨能力高,重量輕,品種多,力矩小,耗能低,效能穩定,可靠使用壽命長...