基于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控制具有精度高,反应快,外部连线少,电路简单,便于控制等优点。
下面是一个4相4拍的步进电机顺序脉冲发生器的VHDL描述,你可以改成4相8拍的,每一步的转角可以小一半。改变输入信号clk的频率就可以改变转速:LIBRARY IEEE;
USE IEEE.Std_logic_1164.ALL;
ENTITY sequencer_4 IS
PORT(clk,en,dir:IN Std_logic;
a,b,c,d:OUT Std_logic);
END sequencer_4;
ARCHITECTURE behavl_seq OF sequencer_4 IS
SIGNAL x:Std_logic_vector(3 DOWNTO 0);
BEGIN
PROCESS(clk,en)
BEGIN
IF en= '1' THEN
x<= (OTHERS =>'0');
ELSIFclk'Event AND clk = '1' AND Clock'Last_Value = '0' THEN
CASE x IS
WHEN"0001" =>IF dir = '0'汪运 THEN x <= "0010";ELSE x <= "1000";END IF;
WHEN"0010" =>IF dir = '0' THEN x <= "0100";ELSE x <= "0001";END IF;困旁梁
WHEN"0100" =>IF dir = '0' THEN x <= "1000";ELSE x <= "0010";END IF;
WHEN"1000" =>IF dir = '0' THEN x <= "0001";ELSE x <= "0100";END IF;
WHENOTHERS=>x <= "0001";
END CASE;
END IF;
END PROCESS;
a <= x(0);
b <= x(1);
c <= x(2);
d <= x(3);
END behavl_seq;
上面有些符号是全角的,你需要改成半角字符才能通过编译。
a、b、c、d对应28BYJ48的1、2、3、4号线。启扰
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)