Verilog直流电机的pwm控制设计

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Verilog直流电机的pwm控制设计相关的知识,希望对你有一定的参考价值。

有没有人手上有完成的报告?或是比较精通这方面可以帮帮我吗,请联络我!万分感谢!

设计方案
基于Verilog HDL的直流电机PWM设计方案
直流电机PWM控制器产生的PWM波形,只需要FPGA内部资源就可以实现,如数字比较器、锯齿波发生器等均为FPGA内部资源,我们只要直接调用就可以。外部端口Z/F、START接在键盘电路上,其具体的连接方式如图1。
其工作原理是:旋转方向控制电路控制直流电动机转向和启/停,该电路由两个2选1的多路选择器组成,Z/F键控制选择PWM波形是从正端Z进入H桥,还是从负端F进入H桥,以控制电机的旋转方向。当Z/F=1时,PWM输出波形从正端Z进入H桥,电机正转。当 Z/F =0时,PWM输出波形从负端F进入H桥,电机反转。
Start键通过“与”门控制PWM输出,实现对电机的工作停止/控制。当START=1时,与门打开,允许电机工作。当START=0时,与门关闭,电机停止转动。
H桥电路由大功率晶体管组成,PWM输出波形通过方向控制电路送到 H 桥, 经功率放大以后对直流电机实现四象限运行。
基于FPGA的直流电机PWM控制省去了外接的D/A转换器和模拟比较器,FPGA外部连线很少,电路更加简单,便于控制。FPGA的直流电机PWM控制具有精度高,反应快,外部连线少,电路简单,便于控制等优点。
参考技术A module pwm(clk,leda);

input clk;//clk=50M=50 000 000
output leda; //led

reg [15:0] pwm,count; //PMW脉宽计数,周期计数
reg leda;

always @(posedge clk)
begin
count=count+1;
if(count[15]==1) //打到周期预设定的数值,就清零

begin
count=0;
end
if(count<pwm) //如果本周期中,周期小于PWM脉宽计数,那么LED就=1
leda=1;
else leda=0; //PWM的低脉冲时候,就为0
end
always @(posedge count[14]) //一个周期前面一点,产生PWM加/减 信号
begin
pwm=pwm+1'b1; //PWM 在一个周期完成之前加1,用于下一个周期的信号宽度
if(pwm[13]==1) //脉宽达到预设定的数值
pwm=0;
end

endmodule
参考技术B module pwm(clk,leda);

input clk;//clk=50M=50 000 000
output leda; //led

reg [15:0] pwm,count; //PMW脉宽计数,周期计数
reg leda;

always @(posedge clk)
begin
count=count+1;
if(count[15]==1) //打到周期预设定的数值,就清零

begin
count=0;
end
if(count<pwm) //如果本周期中,周期小于PWM脉宽计数,那么LED就=1
leda=1;
else leda=0; //PWM的低脉冲时候,就为0
end
always @(posedge count[14]) //一个周期前面一点,产生PWM加/减 信号
begin
pwm=pwm+1'b1; //PWM 在一个周期完成之前加1,用于下一个周期的信号宽度
if(pwm[13]==1) //脉宽达到预设定的数值
pwm=0;
end

endmodule

以上是关于Verilog直流电机的pwm控制设计的主要内容,如果未能解决你的问题,请参考以下文章

基于单片机PWM直流电机控制系统设计汇编-设计资料

基于51单片机霍尔测速直流电机控制设计(含源码+原理图+论文+PCB封装)

基于51单片机霍尔测速直流电机控制设计(含源码+原理图+论文+PCB封装)基于STM32闭环步进电机控制系统设计(仿真,程序,说明)-转发分享

如何用STM32产生三相PWM用于控制三相直流无刷电机?

单片机pwm控制电机转速

stm32产生pwm控制直流电机的思路