FPGA-控制舵機實現

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;
			end
			if(counter1 == 8'd1)
				pwm1  <= 1;
			else if(counter1 ==jiaodu)
				pwm1 <= 0;
			else if (counter1 == 16'd200)
				counter1=0;		
		end
endmodule

//例化可控制三個舵機
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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章