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