基于FPGA直流电机的PWM控制

2014-02-08 09:07胡亚琦胡翔宇
实验室研究与探索 2014年9期
关键词:高电平直流电机计数器

胡亚琦, 胡翔宇, 牛 宝

(1. 兰州交通大学 电子与信息工程学院, 甘肃 兰州 730070; 2. 厦门大学 数学科学学院, 福建 厦门 361005)

0 引 言

脉冲宽度调制(Pulse Width Modulation,PWM,简称脉宽调制)是利用微处理器的数字书出来对模拟电路进行控制的一种非常有效的技术[1]。用现场可编程门阵列(Field Programmable Gate Array, FPGA)产生PWM波形,只需FPGA内部资源就可实现用数字比较器代替模拟比较器,与模拟控制相比,省去了外接D/A转换器和模拟比较器。FPGA外部连线很少,电路更加简单,便于控制。PWM是从处理器到被控系统信号都是数字形式的,无需进行数模转换,让信号保持为数字形式可将噪声影响降到最小[2]。又由于PWM采用了桥式驱动电路,开关管始终处于截止和饱和两种状态,因此具有功耗小、效率高的优点[3]。

1 工作原理

用FPGA产生PWM波形,只需要FPGA内部资源就可以实现,如数字比较器、锯齿波发生器等均为FPGA内部资源,我们只要直接调用就可以[4]。外部端口U_D、EN1、Z/F、START接在键盘电路上;CLK2和CLK0接在外部时钟电路上,所用到的时钟频率为100和50 MHz,如图 1 所示。

以设定值计数器设置PWM的占空比。当U/D=1时,输入CLK2,使设定值计数器的输出值增加, PWM的占空比增加,电机转速加快;当U/D=0时,输入CLK2,使设定值计数器的输出值减小,PWM的占空比减小,电机转速变慢[5]。在CLK0的作用下,锯齿波计数器输出周期性线性增加的锯齿波。当计数值小于设定值时,数字比较器输出高电平;当计数值大于设定值时,数字比较器输出低电平,由此产生周期性的PWM波形。

旋转方向控制电路控制直流电动机转向和启/停,该电路由两个2选1的多路选择器组成,Z/F键控制选择PWM波形是从正端Z进入H桥,还是从负端F进入H桥,以控制电机的旋转方向。当Z/F=1时,PWM输出波形从正端Z进入H桥,电机正转;当 Z/F =0时,PWM输出波形从负端F进入H桥,电机反转[6]。

Start键通过“与”门控制PWM输出,实现对电机的工作停止/控制。当START=1时,与门打开,允许电机工作[7];当START=0时,与门关闭,电机停止转动。H桥电路由大功率晶体管组成,PWM输出波形通过方向控制电路送到 H 桥, 经功率放大以后对直流电机实现四象限运行,并由EN1信号控制是否允许变速。

1.1 旋转控制模块

PWM控制电路由细分计数器和脉宽计数器所组成,CNT5是一个5位二进制计数器,作脉宽计数器[8]。脉宽计数器在CLK5的激励下输出从0开始的逐渐增大的锯齿波。两路数值同时加在数字比较器上,当脉宽计数器输出值小于DECD输出的规定值时,比较器输出低电平;当脉宽计数器输出值大于DECD输出的规定值时,比较器输出高电平。改变DECD的输出值,就等于改变PWM输出信号的占空比[9]。

(1) 旋转控制模块的VHDL程序。

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY CNT5 IS

PORT(CLK:IN STD_LOGIC;

AA:OUT STD_LOGIC_VECTOR(4 DOWNTO 1));

END CNT5;

ARCHITECTURE behav OF CNT5 IS

SIGNAL CQI:STD_LOGIC_VECTOR(4 DOWNTO 1);

BEGIN

PROCESS(CLK)

BEGIN

IF CLK'EVENT AND CLK='1'then CQI<=CQI+1;END IF;

END PROCESS;

AA<=CQI(4 DOWNTO 1);

END behav;

图2为旋转控制模块的实体电路。

图2 旋转控制模块的实体电路

(2) 仿真波形。如图3所示。

图3 旋转控制模块仿真波形

1.2 比较器

如图4所示。

(1) 8路比较器程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY COMPARATOT8 IS

PORT(a,b:IN STD_LOGIC_VECTOR(7 DOWNTO 0);

y:OUT STD_LOGIC);

END ENTITY;

ARCHITECTURE FUNC OF COMPARATOT8 IS

BEGIN

PROCESS (a,b)

BEGIN

IF(a>b)THEN y<='1';

ELSE y<='0';

END IF;

END PROCESS;

END FUNC;

(2) 仿真波形。如图5所示。

图5 比较器仿真波形

1.3 四进制计数器

四进制计数器如图6所示。

Clk为输入信号,可以输入一个时钟信号,AA[4..1]为输出信号,给定输入信号后可以输出一个四位信号[10]。

(1) 四进制计数器。

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY CNT5 IS

PORT(CLK:IN STD_LOGIC;

AA:OUT STD_LOGIC_VECTOR(4 DOWNTO 1));

END CNT5;

ARCHITECTURE behav OF CNT5 IS

SIGNAL CQI:STD_LOGIC_VECTOR(4 DOWNTO 1);

BEGIN

PROCESS(CLK)

BEGIN

IF CLK'EVENT AND CLK='1'then CQI<=CQI+1;END IF;

END PROCESS;

AA<=CQI(4 DOWNTO 1);

END BEHAV;

2 元件组合完成电机方向转换的仿真

利用计数器和旋转控制模块产生的信号在比较器的比较作用下产生输入信号PWM波形,用2个选择器组成Z/F桥选择电路实现对电机旋转方向的控制,当Z_F选择开关输入信号为高电平时,Z桥输出PWM波形信号,当Z_F选择开关输入信号为低电平时,H桥输出PWM波形信号[11],见图7。

(1) 当Z/F端输入低电平时,F端输出PWM波形,电机正转[12],见图8。

图8 输入低电平

(2) 当Z/F输入高电平时,Z端输出PWM波形,电机反转。

通过图3~9的仿真波形分析可知,本设计中的各项功能能够很好的实现。在时钟脉冲的作用下,计数器能按照事先设定好的规则进行计数。CNT5是四进制计数器,改变设定值的大小就可以改变PWM波形的大小,也就是完成了电机的调速[13]。Z_F是电机的方向按键,选择PWM波形的进入方向,当其为1时,电机正转;反之,反转。至于电机的控制,是在它的输入端加上两个与门来控制电机的启动与停止。其具体的操作如下:

图9 输入高电平后的仿真结果

当按下Z_F键时,电机正转(见图7),松开键时,电机反转(见图8)。通过按键D_STP的闭合与断开可以改变DECD的值(见图3)从而改变直流电机的PWM占空比,达到改变直流电机速度的目的[14]。

本设计采用VHDL(Very-High-Speed Integrated Circuit Itard ware Description Language)设计FPGA 脉宽调制控制方案, 计算机仿真和对直流电机控制的结果表明,该电路能有效地产生PWM 控制信号控制电机的转速, 控制精度由FPGA 中的数字比较器决定[15]。在本设计中,采用的数字比较器为4 b, 若增加数字比较器的位数, 就可以提高电机转速的控制精度。

3 结 语

电路中省去了D/A 转换器使电路变得更加简洁, 同时也降低控制器的成本。FPGA 内部采用状态机结构, 遇到干扰时, 能很快从异常状态转入正常工作状态, 保证了控制系统具有高的可靠性。从以上的仿真中可以看出,基于FPGA的直流电机的控制能够达到很好的预期效果。

FPGA中的数字PWM控制与一般模拟PWM控制不同,用FPGA产生PWM波形,只需FPGA内部资源就可实现。设计直流电机PWM驱动电路,用FPGA产生波形,用VHDL语言编写程序,实现了对直流电机的转向的控制。设计中用一旋转控制模块与一四进制计数器在比较器作用下产生PWM波形,用2个选择器组成H桥电路,在Z/F开关的控制作用下,通过H桥实现了对电机的转向的控制。

[1] 潘 松,黄继业.EDA技术实用教程[M].北京:北京科学出版社,2002:145-146.

[2] 杜 玉.基于FPGA直流电机的伺服系统的设计[D].呼和浩特:内蒙古大学,2005.

[3] 崔建明.电工电子EDA技术[M].北京:高等教育出版社,2006:23-26.

[4] 徐 进.基于FGPA的PWM机床电力拖动系统的研究[J].北京理工大学学报,2004(3):34-37.

XU Jin.Study on electric traction system PWM machine tool based on FPGA[J].Journal of Beijing Institute of Technology,2004(3):34-37.

[5] 甘 历.VHDL应用与开发实践[M].北京:北京科学出版社, 2003:93-97.

[6] 张淑骅.基于FPGA的交通灯的VHDL设计[J].电力与能源,2007(19):478-479.

ZHANG Shu-hua.Traffic lights of VHDL design based on FPGA[J].Electric power and energy,2007(19):478-479.

[7] 褚振勇,翁木云.FPGA设计及应用[M].西安:西安电子科技大学出版社,2002:122-140.

[8] 冒建亮,叶 桦,张舒哲.基于FPGA的变频控制系统的实现[Z].南京:东南大学,2012(A1):25-30.

MAO Jian-liang,YE Hua,ZHANG Shu-zhe. Of the frequency conversion control system based on FPGA implementation[Z].Nanjing:Southeast University,2012(A1):25-30.

[9] 万 林,唐厚君,贺 超,等.基于ARM与FPGA的嵌入式开放性运动控制器的设计与开发[J].上海交通大学学报,2011(3):59-61.

WAN Lin,TANG hou-jun,HE Chao,etal.Based On ARM and FPGA embedded open movement controller design and development[J].Shanghai:Shanghai Jiaotong University,2011(3):59-61.

[10] GAO J.Multiphase fuzzy control under hybrid traffic flow of single intersection[C]∥Intelligent Transportation Systems,Washington:2003:1329-1333.

[11] HAN Xi, LI Zhe-ying, WANG Shu-ying.Stepper Motor Subdivided Control System Based on SOPC Technology[J]. Computational Intelligence and Design, 2009(1):497-500.

[12] WANG Jian-zhuang,CHEN You-ping,XIE Jing-ming. System structure for FPGA-based SOPC design using hard tasks[C]∥Industrial Informatics,2008. INDIN 2008. 6th IEEE International Conference on,2008: 1154-1159.

[13] 李涛涛,何汉武,胡兆勇,等.模拟PLC仿真系统中兼容PMW文件的研究和设计[J].制造业自动化,2013(8):102-104.

LI Tao-tao,HE Han-wu,HU Zhao-yong,etal.Simulated PLC simulation system research and design of the compatible PMW file in[J].Journal of Manufacturing Automation,2013(8):102-104.

[14] 文 畅.基于FPGA/CPLD和VHDL语言的交通灯控制系统设计[J].电脑知识与技术,2007(3):1605-1618.

WEN Chang.Based on FPGA/CPLD and VHDL language of traffic light control system design[J].Computer Knowledge and Technology,2007(3):1605-1618.

[15] 张红润.FPGA/CPLD应用设计[M].北京:北京航空航天大学出版社,2009:158-170.

猜你喜欢
高电平直流电机计数器
基于模糊PID的无刷直流电机速度控制系统的设计与仿真
采用虚拟计数器的电子式膜式燃气表
一种基于FPGA的PWM防错输出控制电路
TS-03C全固态PDM中波发射机开关机控制电路原理及故障分析
基于FPGA的双绕组无刷直流电机软件设计
浅谈物理电路与数字电路
PDM 1kW中波广播发射机保护电路分析
计数器竞争冒险及其处理的仿真分析
基于模糊神经网络PID的无刷直流电机控制系统研究
一种改进的无刷直流电机控制方法