基于FPGA的交流电动机伺服控制系统的设计
扫描二维码
随时随地手机看文章
摘 要: 提出了一个基于FPGA的交流电动机伺服控制系统的设计方案。该伺服控制系统利用SPWM原理进行控制,通过驱动三相逆变器,从而达到控制三相交流电动机转速的目的。实验结果验证了该交流电动机伺服控制系统的可行性。
关键词: FPGA ;伺服控制系统;SPWM;开关dead-time
由于SPWM逆变器具有输出波形中低次谐波含量低、噪声小等优点,能将直流电源转变为稳定的交流电源,近年来被广泛地应用在高速和大规模的工业控制领域,如UPS不间断电源系统、ADS可调速驱动系统、可变交流传动控制系统和交流电机伺服控制系统[1]。
随着现场可编程门阵列FPGA与数字信号处理器DSP等高性能数字控制芯片的迅速发展,逆变电路的控制已由模拟控制、模数混合控制过渡到全数字控制阶段[2]。采用DSP芯片进行控制,可以提高控制的精确度及稳定性,但由于电路要达到足够的频率响应,复杂的控制算法,例如电流高速采样,转速控制和功率开关触发信号的同时产生等,可能会带来处理器运算量过大以及运算时间长的问题。FPGA具有高速运算和并行处理的特性,能够克服DSP 芯片带来的运算量大、占用CPU过多、运算时间长的缺点,所以,以FPGA实现数字电机伺服系统成为首选方案。本文就是利用FPGA芯片,实现SPWM驱动三相逆变器,从而控制三相交流电动机,以达到调整频率命令进而调整电机转速的目的[3-4]。基于FPGA的、以SPWM为驱动的伺服控制系统对三相逆变器的控制结构图如图1所示。
1 系统原理及模块设计
1.1 SPWM控制实现
SPWM (Sinusoidal PWM) 是一种比较成熟的、目前使用较广泛的PWM控制方式。SPWM控制就是以“冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同”的理论为基础,用脉冲宽度按正弦规律变化而和正弦波等效的PWM波形即SPWM波形控制逆变电路中开关器件的通断,使其输出的脉冲电压的面积与所希望输出的正弦波在相应区间内的面积相等,通过改变调制波的频率和幅值对逆变电路输出电压的频率和幅值进行控制。SPWM的一般实现方法有等面积法、硬件调制法、软件生成法(包括自然采样法和规则采样法)和低次谐波消除法[5]。这里详细介绍一下硬件调制法实现SPWM控制。
硬件调制法是为解决等面积法计算繁琐的缺点而提出的,其原理就是把所希望的波形作为调制信号,把接受调制的信号作为载波,通过对载波的调制得到所期望的PWM波形。通常采用等腰三角波作为载波,当调制信号波为正弦波时,所得到的就是SPWM波形。其实现方法简单,可以用模拟电路构成三角波载波和正弦调制波发生电路,用比较器来确定它们的交点,在交点时刻对开关器件的通断进行控制,就可以生成SPWM波。但是,这种模拟电路结构复杂,难以实现精确的控制。
本文使用的SPWM实现方法,以硬件调制法为基础,利用VHDL硬件描述语言实现相应模块,做到全数字控制取代模拟控制,克服传统硬件调制法模拟电路结构复杂、难以精确控制的缺点。SPWM的具体实现方法可以用一个正弦调制波和一个等腰三角载波相交,由它们的交点确定逆变器的开关模式[6]。如图2所示,当正弦波大于三角波时,使相应的开关器件导通;当正弦波小于三角波时,使相应开关器件截止。
1.2 三角波产生原理
三角波产生原理如图3所示,三角载波可以通过加减计数器产生。计数器要求为7位二进制数,三角载波的幅度值为8位二进制数(其中最高位为符号位,1表示正,0表示负)。计数器由clk分频后产生的div进行触发。计数器的幅值为128,计数器先从0递增到128,符号位为正,此过程的数据与符号位作为三角载波前1/4周期(即0°~90°)的幅度值;接着计数器从128递减到0,同时符号为正,此过程的数据与符号位作为三角载波第2个1/4周期(即90°~180°)的幅度值;然后计数器从0递增到128,同时符号为负,此过程的数据与符号位作为三角载波第3个1/4周期(即180°~270°)的幅度值;最后计数器从128递减到0,同时符号为负,此过程的数据与符号位作为三角载波第4个1/4周期(即270°~360°)的幅度值。此后的波形重复前面4个过程,因此完成一个周期的三角载波需要计数器计算128×4=512次,需要512个计数脉冲div。
1.3 正弦波产生原理
正弦波产生原理与三角波产生原理不同,正弦波不需要通过计数器得到。由于正弦波本身的对称性,所以可以通过查值表得到波形,且只需要存储第一个1/4周期(即0°~90°),其余部分可以由对称性获得,节省了资源。根据正弦波的精度要求的不同,可以设定相应的二进制位数将波形进行细分。具体实现方法是:把0°~90°分成若干份(具体份数由数据精度决定,数据位数越多分得的份数越多,精度也越高),每一份对应一个幅值,把对应幅值存储在寄存器内,其余的部分(90°~360°)通过对称性得到。因此要得到一定频率的正弦波,就要控制寄存器地址的产生频率。而地址发生器又通过计数器实现,所以只要控制计数脉冲的频率为某一数值,就可以得到相应频率的正弦波。
1.4Dead-time 死区时间处理
本数字伺服系统产生的PWM波形应能达到同相输出时上下开关互补,即上关时下开,上开时下关,三相逆变电路如图1所示。由于功率元件的turn-on时间一般小于turn-off 时间,所以在功率元件状态变化时,将出现一段死区,即不能达到同时互补的情况[7]。因此有必要在功率元件状态转换时加入一段死区时间,以防止出现短路情况,也能实现PWM波形的互补。死区时间的长短应该根据功率元件的turn-off时间而定,一般设为turn-off时间的2~3倍。
2系统硬件设计
本文提出的交流电动机伺服控制系统硬件结构如图4所示,其原理是将产生的三相正弦波与产生的三角波进行比较,从而产生PWM脉宽调制信号,脉宽调制信号再经过Dead-time发生器和隔离电路,触发控制三相逆变电路中的MOS晶体管的通断[8]。f为外部输入的改变频率值的命令或信号,用0~255的8位二进制数表示三相正弦波的频率值变化输入信号,三相正弦波频率值设定在10 Hz~100 Hz。三角波发生器按照输出幅度大小设置为-127~128的8位二进制数运算,载波频率设置为10 kHz。三相正弦波的产生是以VHDL硬件描述语言中的when-else语法建立三相正弦波查值表为基础来实现的。
3系统的软件设计
本文提出的交流电动机伺服控制系统的系统软件能实现交流电动机的速度控制。交流电动机各模块采用VHDL语言设计实现,且各模块通过功能仿真。在这里给出三相PWM电路与Dead-time死区时间产生电路的代码实现及其模块的仿真波形。
3.1 三相PWM电路的软件实现
三相PWM电路的VHDL实现代码如下所示:
entity comparator is ----比较器entity声明,4输入信号,6输出信号
port(clk:in std_logic;
va,vb,vc:in std_logic_vector(7 downto 0);
pwm_a_on,pwm_a_off,pwm_b_on,pwm_b_off,pwm_c_on,pwm_c_off:out std_logic);
end comparator;
architecture rtl of comparator is 比较器逻辑功能描述
……
process(clk) ----三角波产生
……
end process;
process(cnt,va) ----第1相正弦波与三角波比较
……
end process;
process(cnt,vb) ----第2相正弦波与三角波比较
……
end process;
process(cnt,vc) ----第3.相正弦波与三角波比较
……
end process;
end rtl;
三相PWM电路实现原理如图2和图4所示,VHDL实现代码中有clk、va、vb、vc 4个输入信号,pwm_a_on、pwm_a_off、pwm_b_on、pwm_b_off、pwm_c_on 、pwm_c_off 6个输出信号。输入时钟clk设定为40 MHz,va,vb,vc为三相电压的pwm控制命令,代表正弦波的幅值,如图5所示,用8位二进制数表示。pwm_a_on、pwm_a_off、pwm_b_on、pwm_b_off、pwm_c_on 、pwm_c_off为正弦波与三角波比较后,正反相输出的PWM信号。整个电路功能的实现由4个process来完成,包括process(clk)、process(cnt,va)、process(cnt,vb)和process(cnt,vc)。process(clk)负责利用计数器产生三角波,原理如图3所示,共用到了512个计数脉冲(即CNTB),因为要与8位正弦波作比较,所以三角波幅值用对应的8位二进制数表示为-128~127(即A);process(cnt,va)负责第1相的正弦波与三角波比较,判断对应输出;process(cnt,vb)负责第2相的正弦波与三角波比较,判断对应输出;process(cnt,vc)负责第3相的正弦波与三角波比较,判断对应输出。
三相PWM电路的仿真波形图如图6所示。
3.2 Dead-time死区时间产生电路的软件实现
Dead-time死区时间产生电路的VHDL实现代码如下所示:
entity dead_time is ----死区时间产生电路entity声明,4输入信号,2输出信号
port(RST,CLK1,pwm_on,pwm_off:in STD_LOGIC;
pwm_on_dt,pwm_off_dt:out STD_LOGIC);
end dead_time;
architecture RTL of dead_time is ----死区时间产生电路的逻辑功能描述
……
process(CLK1,RST,pwm_on,pwm_off)
begin
……
end process;
end RTL;
Dead-time死区时间产生电路实现原理如图1所示,VHDL实现代码有RST、CLK1、pwm_on、pwm_off 4个输入信号,pwm_on_dt,pwm_off_dt 2个输出信号。对于a点的2个MOS管s1、s2,当输入控制命令pwm_a_on为0、pwm_a_off为1时,s1管截止,s2管导通;当输入控制命令pwm_a_on 由0变为1,pwm_a_off由1变为0时,s1管将由截止变为导通,而s2管由导通变为截止。由于turn-on时间小于turn-off时间,在2个MOS管状态变化时,可能会产生短路现象,即不能确保2个MOS管之间达到状态互补,因此需要对输入控制信号做出Dead-time时间的输入补偿。具体做法如代码所示,当MOS管由截止变导通时,应使MOS管延迟Dead-time时间导通,即pwm_on信号延迟为pwm_on_dt输出,pwm_off信号同理延迟为pwm_off_dt输出,避免短路的发生。pwm控制命令加入Dead-time前后的时序图如图7所示,Dead-time死区时间产生电路仿真波形如图8所示。
4 实验结果
将上述数字伺服控制系统在Quartus II上经过仿真编译后,下载到Altera DE2开发板,从而验证对交流电动机的转速控制。当频率输入命令取10 Hz和20 Hz时,SPWM控制信号驱动逆变器产生的电流响应分别如图9(a)和图9(b)所示。
实验结果表明该伺服控制系统可实现对交流电动机的转速控制。
本文提出了一个基于FPGA的交流电动机伺服控制系统的设计方案,该伺服控制系统利用SPWM原理进行控制,通过驱动三相逆变器,从而达到控制三相交流电动机转速的目的。实验表明,该伺服控制系统设计方案能较好地实现交流电动机的转速控制,且结构简单,易于实现。
参考文献
[1]ZHANG Kai, KANGYong, XIONG Jian, et al, Repetitive waveform correction technique for CVCF-SPWM inverters[J].2000 IEEE 31 st Annual, vol.1 , P153-158.
[2]严帅,杨明,贵献国,等.基于DSP和FPGA的永磁交流伺服系统研究[J].微电机,2007,40(4):28-31.
[3]JUNG S L, CHANG M Y, JYANG J.Y, Design and implementation of an FPGA-based control IC for AC-voltage regulation[J].IEEE Trans. Power Electron.,1999, 14(3):522-532.
[4]TSAI M F,CHEN H C. Design and implementation of a CPLD-based SVPWM ASIC for variable-speed control of AC motor drives[J].IEEE PEDS’01, Bali, Indonesia ,2001,322-328.
[5]PEIDYNI F, BOGLIETTI A, GRIVA G.et al.Space vector and sinusoidal PWM techniques comparison keeping in account the secondary effects[J].AFRICON ’92 Proceedings., 3 rd AFRICON Conference :394-399.
[6]XU Xiang Lian,ZOU Yun Ping,DING Kai,et al.A Sstatcom based on cascade multilevel inverter with phase-shift SPWM[J], Power System Technology ,2004 International Conference, vol. 1:145-149.
[7]Tzou Y Y,HSU H J, FPGA-based SVPWM control IC for PWM inverters[J], IEEE Transaction on. Power Electronics, vol .12:953-963.
[8]杨贵杰, 孙力, 崔乃政.空间矢量脉冲调制方法的研究[J].中国电机工程学报, 2001, 21(5): 79-83.