FPGA 控制舵機實現

2021-09-25 17:55:00 字數 1566 閱讀 1129

1.舵機的工作原理

舵機接出來有三根線,一根紅色的是電源線,一根棕色的是地線,還有一根橘黃色的是訊號線。舵機的工作電壓在4.8v到6v,給它接的電源不同,會影響舵機轉動的速率以及舵機的輸出力矩。我們的板子上面的供電是5v電壓。

舵機裡面是乙個步進電機和乙個基準電路以及其他的一些部件,訊號線進來不同的訊號時會和基準電路進行比較,從而來決定舵機的轉動方向。對於舵機的工作原理不需要知道很清楚,知道怎麼控制就行了。

2.舵機的控制原理

控制舵機旋轉的角度就是控制脈衝的高電平時間,在乙個週期為20ms的脈衝裡面高電平持續的時間決定了舵機轉動的角度,180度舵機對應關係如下:0.5ms--0度,1ms--45度,1.5ms--90度,2ms--135度,2.5ms--180度。具體對應關心還要自己在寫程式中慢慢除錯。

這是一款由脈衝控制的舵機,週期為20ms,高脈衝部分所佔多少就決定了舵機轉動多少度。

高脈衝部分與角度關係

0.5ms-------------------0°

1ms---------------------45°

1.5ms-------------------90°

2ms----------------------135°

2.5ms-------------------180°

//fpga 控制舵機程式(verilog)

module pwm(clk,pwm1,jiaodu);

input clk;

input[7:0] jiaodu;

output pwm1;

reg pwm1;

reg[32:0] counter;

reg[32:0] counter1;

always@(posedge clk)

begin

counter = counter + 1;

if(counter ==32'd5000) // 50mhz 0.1ms

begin

counter = 0;

counter1= counter1 + 1;

endif(counter1 == 8'd1)

pwm1 <= 1;

else if(counter1 ==jiaodu)

pwm1 <= 0;

else if (counter1 == 16'd200)

counter1=0;

endendmodule

//例化可控制三個舵機

module pwm1(clk,pwm3);

input clk;

output[2:0] pwm3;

//reg pwm2;

parameter jiaodu1 = 8'd10;

parameter jiaodu2 = 8'd15;

parameter jiaodu3 = 8'd20;

pwm a1(clk,pwm3[0],jiaodu1);

pwm a2(clk,pwm3[1],jiaodu2);

pwm a3(clk,pwm3[2],jiaodu3);

endmodule

FPGA控制舵機轉動

fpga控制舵機轉動 硬體平台 de2 70 軟體平台 quartus13.0 程式語言 verilog hdl 1.舵機的工作原理 舵機接出來有三根線,一根紅色的是電源線,一根棕色的是地線,還有一根橘黃色的是訊號線。舵機的工作電壓在4.8v到6v,給它接的電源不同,會影響舵機轉動的速率以及舵機的輸...

FPGA 驅動舵機

牽扯到兩個知識點。io 口的驅動力 pwm知識 板子上 的rst 預設時為高電平 只有 按下 後 才為 低電平 現在那個 uart 模組 測試 沒問題 那個 lcd 模組 測試也沒問題 有問題的 是 那個 rst gen 與 clk 產生 模組 感覺又是乙個坑人 的 傢伙 移植了 4個小時 後終於成...

舵機控制So easy

難者不會,會者不難。就只看你願不願意嘗試,硬體的樂趣又何止於此。硬體於我何加焉?1.原理 一張 理解下原理。2.控制 注意 本人所用舵機為紅色vcc,橙色訊號線,棕色gnd 上程式 定時器0模擬pwm輸出 include sbit pwmout p1 0 unsigned char highrh 0...