L9110H电机驱动芯片,该芯片内部集成了一个H型全桥式高电压大电流电机驱动电路,可以单独驱动一个直流电机。
1.1 电机驱动原理
H型全桥式驱动电路包含四个三极管和一个电机,其电路图如图1.1所示。将四个三极管分成两组,若两组三极管同时导通或同时关断,此时电机不会工作;如果想使用该驱动电路驱动电机运转,就必须导通其电路中位于对角线上的一对三极管。此时两组三极管的状态必须互补:当一组导通时,另一组必须关断。当三极管Q1、Q4导通,Q2、Q3关断时,电机两端所加为正向电压,此时电机将会顺时针转动;当三极管Q2、Q3导通,Q1、Q4关断时,机两端所加为反向电压,此时电机将会逆时针转动。要注意的是,在直流电机运转的过程中要使电机不断在四个象限之间切换,即在顺时针转动和逆时针转动之间切换。即四个三极管在Q1、Q4导通且Q2、Q3关断,和Q1、Q4关断且Q2、Q3导通这两种状态之间切换。
图1.1 H型全桥驱动电路示意图
为了方便控制三极管的导通和关断,一般会在基础的H型全桥驱动电路上增加四个与门和两个非门。这种设计方案的电路如图1.2所示。通过这样的电路设计,只需要一个信号ENABLE就可以控制H型全桥式驱动电路上所有三极管的开关;然后再分别给两个非门提供一个方向输入信号,这样只需要两个信号DIR-L和DIR-R就可以控制H型全桥驱动电路的四个三极管的导通和关断,以达到控制电机转动方向的效果。这样的设计减少了系统管脚的使用率,仅仅只用三个信号就能控制电机的运转。
图1.2 具有使能控制和方向逻辑的H型全桥驱动电路示意图
电机驱动模块运行状态逻辑真值表如表1.1所示。
表1.1 电机驱动模块运行状态逻辑真值表
IB |
IA |
运行状态 |
X |
X |
停止 |
1 |
0 |
正转 |
0 |
1 |
反转 |
1 |
1 |
刹停 |
0 |
0 |
停止 |
通过FPGA芯片控制L9110H电机驱动模块上的管脚IB和IA来控制风扇的开关、转动方向和转动速度,即当IB信号为PWM波、IA信号为低电平时风扇正转,此时风扇的转速由PWM波的占空比决定;当IB信号为低电平、IA信号为PWM波时风扇反转,此时风扇的转速同样由PWM波的占空比决定。文章来源:https://www.toymoban.com/news/detail-505862.html
电机驱动的代码非常简单,只需要控制管脚IA和IB的值,如下所示文章来源地址https://www.toymoban.com/news/detail-505862.html
module motor_driver(
input clk ,
input rst_n ,
input [2:0] gear ,//档位可根据需要进行设置
output IA ,
output reg IB
);
parameter [31:0] StepLockOut = 32'd200000;//250Hz
reg [32:0] StepCounter ;
always @(posedge clk or negedge rst_n)begin
if(!rst_n)
StepCounter <= 0;
else if(StepCounter == StepLockOut -1)
StepCounter <= 0;
else
StepCounter <= StepCounter + 1;
end
always @(posedge clk or negedge rst_n)begin
if(!rst_n)
IB <= 0;
else
case(gear)
3'd0:begin
IB <= 0;
end
3'd1:begin
if(StepCounter <= StepLockOut/5 -1)
IB <= 1;
else
IB <= 0;
end
3'd2:begin
if(StepCounter <= StepLockOut/5*2 -1)
IB <= 1;
else
IB <= 0;
end
3'd3:begin
if(StepCounter <= StepLockOut/5*3 -1)
IB <= 1;
else
IB <= 0;
end
3'd4:begin
if(StepCounter <= StepLockOut/5*4 -1)
IB <= 1;
else
IB <= 0;
end
3'd5:begin
IB <= 1;
end
default:IB <= 0;
endcase
end
assign IA = 0;
endmodule
到了这里,关于L9110H电机驱动模块-FPGA的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!