基于FPGA的直流电机PWM控制器设计 下载本文

基于 FPGA的直流电机 PWM控制器设计

摘要:利用 FPGA可编程芯片及 Verilog HDL语言实现了对直流电机PWM控制器的设计,对直流电机速度进行控制。介绍了用 Verilog HDL语言编程实现直流电机PWM控制器的PWM产生模块、转向调节模块等功能,该系统无须外接 D/A转换器及模拟比较器,结构简单,控制精度高,可方便对电机进行远程控制,有广泛的应用前景。 关键词:FPGA;PWM;直流电机;实验 0 引言

传统的方法产生 PWM信号电路比较复杂。数字 PWM控制只需 FPGA中的内部资源就可以实现。本文介绍了一种用单片大规模 FPGA实现的 PWM发生的直流电机控制器,其中产生的 PWM波具有脉冲中心对称、PWM 周期和死区时间可编程等特点,且性能优异,灵活性和可靠性高。用数字比较器代替模拟比较器,数字比较器的一端接设定值计数器的输出,另一端接线性递增计数器输出。当线性计数器计数值小于设定值时输出低电平,大于设定值时输出高电平。与模拟控制相比,省去了外接的 D/A转换器和模拟比较器,FPGA外部连线很少,电路更加简单。而且通过总线数据或按键控制在系统调整脉宽数及数字比较器的设定值,从而实现对电机转速、波动性等参数的灵活控制。 1 系统整体设计

系统的整体框图如图 1所示。该系统以 FPGA芯片为控制核心,通过按键或上位机设定电机速度和 PWM占空比,由 FPGA的 I/O口控制直流电机驱动芯片驱动直流电机的转动。转速的测量由码盘完成,速度显示数码管来实现。本系统是基于实现电机的恒速调节而进行设计的。系统分以下几个模块:转速调节模块,脉宽调制(PWM)模块,速度检测模块, 在图2中所示的FPGA是根据设计要求设计好的一个芯片,其内部逻辑电路如图3。

START是电机的开启端,U_D控制电机加速与减速,EN1用于设定电机转速的初值,Z_F是电机的方向端口,选择电机运行的方向。CLK2和CLK0是外部时钟端,其主要作用是向FPGA控制系统提供时钟脉冲,控制电机进行运转。

通过键盘设置PWM信号的占空比。当U_D=1时, 表明键U_D按下,输入CLK2使电机转速加快;当U/D =0,表明键U_D松开,输入CLK2使电机转速变慢,这样就可以实现电机的加速与减速。

Z_F键是电机运转的方向按键,当把Z_F键按下时,Z_F=1,电机正转;反之Z/F =0时,电机反转。

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

4.3 PWM脉宽调制信号产生电路描述

PWM脉宽调制信号产生电路由可控的加减计数器CNTA、5位二进制计数器CNTB、数字比较器LPM_COMPARE三部分组成。可控的加减计数器做细分计数器,确定脉冲宽度。当U/D=1时,输入CLK2,使设定值计数器的输出值增加,PWM的占空比增加,电机转速加快;当U/D =0,输入CLK2,使设定值计数器的输出值减小,PWM的占空比减小,电机转速变慢。5位二进制计数器在CLK0的作用下,锯齿波计数器输出周期性线性增加的锯齿波。当计数值小于设定值时,数字比较器输出高电平;当计数值大于设定值时,数字比较器输出低电平,由此产生周期性的PWM波形。其内部逻辑图如图4所示。

可控的加减计数器CNTA中的端口U_D控制计数器的方向,EN1是计数器的使能端,控制计

数器初值的变化。U_D=1时,加减计数器CNTA在脉冲CLK2的作用下,每来一个脉冲,计数器CNTA加1,U_D=0时,每来一个脉冲,计数器CNTA减1。使能端EN1设定计数器值的初值,当EN1由1变为0的时候,无论U_D如何表化,计数器的值都不会发生变化,这样就完成了计数器的设定值,其仿真波形如图5所示,其VHDL语言如下。

CNTB是一个简单的5位二进制计数器,它的工作原理和CNTA的原理很相似,我们只是在CNTA的时钟端加了一个使能端EN1控制其加减的方向。而CNTB的时钟端没有加使能端,所以每来一个脉冲计数器加1,因为CNTB是一个5位的二进值计数器,所以当计数器的值当大于32时,计数器又重新从0开始记数,从而产生周期性的线性增加的锯齿波。其仿真波形如6,其VHDL语言如下。

数字比较器是产生PWM波形的核心组成部件,可控的加减计数器CNTA和5位二进制计数器CNTB同时加数字比较器LPM-COMPARE两端作为两路输入信号,当计数器CNTB输出值小于细分计数器CNTA输出的规定值时, 比较器输出高电平; 当CNTB输出值大于细分计数器CNTA输出的规定值时, 比较器输出低电平。改变细分计数器的设定值, 就可以改变PWM输出信号的占空比。为了便于观察防真波形,我在CNTB的输出加上B[4..0],仿真波形如图7。 3 结语

直流电机由于具有速度控制容易,启、制动性能良好,且在宽范围内平滑调速等特点而在冶金、机械制造、轻工等工业部门中得到广泛应用本文所介绍的直流电机 PWM控制器本文给出采用Verilog HDL设计 FPGA脉宽调制控制方案,计算机仿真的结果表明,该电路能有效地产生 PWM控制信号控制电机的转速,控制精度由FPGA中的数字比较器决定,硬件电路搭建简单,程序代码书写容易。用 FPGA的 I/O口产生 PWM控制信号,一片 FPGA可以同时输出多路 PWM信号,具有通用性,设计同时包含实现异步串行通信的功能,

可以实现对数据的接收和发送,并可以在接收数据时对其校验位、停止位进行判断,在发送数据时可以形成完整的一帧数据格式。将该异步串行通信接口设计实现的数据采集与处理系统中,可以成功地实现和远端的上位机进行异步串行通信,方便进行远程控制。 参考文献

[1] 王彦.基于 FPGA的工程设计与应用[M].西安电子科技大学出版社,2007.

[2] 郭树涛.基于 FPGA的串口通讯设计[J].北京电子科技学院学报,2006,14(4):74-78. [3] 秦继荣,沈安俊.现代直流伺服控制技术及其系统设计[M].北京:机械工业出版社,1999.

[4] 陈伯时.电力拖动自动控制系统[M].第 2版.北京:机械工业出版社,2000. [5] 韦鲲,任军军,张仲超.应用于无刷直流电机的新 PWM调制方式[J].电气传动,2005,35(2):37-40. [6] 黄楚芳.基于 CPLD控制的直流电机 PWM控制器的设计[J].电子测试,2009,2:65-68. [7] 李建林.基于现场可编程门阵列的多路 PWM波形发生器[J].2005,25(10):55-59.