基于STC系列单片机的SPWM波形实现时间:2010-03-2414:58:56来源:现代电子技术作者:邢娅浪赵锦成孙世宇军械工程学院电气工程系摘要:文章在比较了多种生成SPWM波的技术基础上,给出了利用等效面积法来产生SPWM波形的工作原理,详细介绍了由单片机STCl2C5410AD的可编程计数器阵列PCA实现SPWM控制软件的编写过程,并给出了SPWM中断服务程序的流程图。将结果应用于由MICA421驱动器驱动的四个MOSFET器件FQAl60N08所组成的逆变桥上进行实际调试,实验结果表明,该方法具有电路简单、计算量小、实时性强的优点,采用在线计算和查表技术相结合,较好的解决了实时控制的要求,具有较好的应用价值。关键词:STC12C5410AD;SPWM波0引言近年来,随着逆变电源在各行各业应用的日益广泛,采用正弦脉宽调制(SPWM)技术控制逆变电源提高整个系统的控制效果是人们不断探索的问题。对SPWM的控制有多种实现方法,其一是采用模拟电路、数字电路等硬件电路产生SPWM波形,该方法波形稳定准确,但电路复杂、体积庞大、不能进行自动调节;其二是借助单片机、DSP等微控制器来实现SPWM的数字控制方法,由于其内部集成了多个控制电路,如PWM电路、可编程计数器阵列(PCA)等,使得这种方法具有控制电路简单、运行速度快、抗干扰性强等优点。本文介绍一种利用STC系列单片机实现SPWM波形的方法,并将由STCl2C5410AD产生的单极性SPWM波应用于单相逆变电源,实验结果证明了利用其实现SPWM波形的可行性和有效性。1正弦脉宽调制技术SPWMSPWM控制方案有两种:即单极性调制和双极性调制法。单极性法所得的SPWM信号有正、负和0三种电平,而双极性得到的只有正、负两种电平。比较二者生成的SPWM波可知:在相同载波比情况下,生成的双极性SPWM波所含谐波量较大;并且在正弦逆变电源控制中,双极性SPWM波控制较复杂。因此一般采用单极性SPWM波控制的形式。由单片机实现SPWM控制,根据其软件化方法的不同,有如下几种方法:自然采样法、对称规则法、不对称规则法和面积等效法等。理论分析发现面积等效法相对于其它方法而言,谐波较小,对谐波的抑制能力较强。而且实时控制简单,利于软件实现。因此本文采用面积等效法实现SPWM控制。图l为SPWM面积等效法原理示意图。假设所需的输出正弦电压为U0=Umsinωt,式中:Um为正弦波幅值。利用面积等效法正弦波小块面积S1与对应脉冲面积S2相等的原则,将正弦波的正半周分为N等分,则每一等分的宽度为兀/N,计算出半个周期内N个不同的脉宽值。相关公式如下:正弦波S1面积为:逆变器输入直流电压为UD,脉冲面积S2与S1相等,即有:所以第k个区间的脉冲宽度δk式中:M为调制度。N为半个周期内的脉冲个数。综合考虑载波比、输出谐波等因素,在此N取60。由上式计算出的SPWM脉宽表是一个由窄到宽、再由宽到窄的60个值的正弦表,将其存入STC单片机的ROM中以供调用。2STC系列单片机生成SPWM波原理2.1STC系列单片机简介STCl2系列单片机是美国STC公司在8051单片机标准的内核基础上改进推出的一个增强型功能的8051的单片机,从引脚到指令上完全与8051单片机兼容。最突出的特点就是其具有可编程计数器阵列PCA。以STCl2C5410AD为例,有四路可编程计数器阵列PCA/PWM。PCA含有一个特殊的16位定时器,有4个16位的捕获/比较模块与之相连。四个模块的公共时间基准由PCA定时器决定,可以通过PCA模式寄存器CMODSFR的CPSl和CPS0位确定。每个模块可编程工作在4种模式下:上升/下降沿捕获、软件定时器、高速输出或PWM脉冲输出。文中SPWM生成功能主要靠PWM脉冲输出模式完成。图2即为PCA模块脉宽调节PWM输出模式框图。在PCAPWM输出模式中,当CLSFR的值小于{EPCnL,CCAPnL}时,输出为低,当PCACLSFR的值等于或大于{EPCnH,CCAPnH}时,输出为高。当CL的值由FF变为00溢出时,{EPCnH,CCAPnH}的内容装载到{EPCnL,CCAPnL}中。这样就实现了无干扰的更新PWM。要使能PWM模式,模块CCAPMn寄存器的PWMn和ECOMn位必须置位。本文中,SPWM波形是综合使用了模块O的脉宽调节(PWM)模式和模块1的16位软件定时器模式,通过软件中断的形式实现的。与此同时,STCl2C54lO单片机还具有快速A/D转换功能。有一个lO位精度、8路通道的A/D转换器。可以方便的对输入、输出的电压、电流进行监控和显示。2.2SPWM波生成方法利用STC系列单片机产生SPWM波的基本原理是:将载波周期数值赋给PCA模块l的16位捕获/比较模块寄存器CCAPlH(高8位)和CCAPlL(低8位),PCA定时器的值CH(高八位)、CL(低八位)与模块捕获寄存器的值相比较,当两者相等时,产生PCA中断。在中断中,调用模块0的PWM脉宽调节模式,将下一个SPWM波的脉宽通过CCAP0H装载到CCAPOL中,这样就可以实现无干扰的更新PWM。图3中即为由软件实时计算好的一路单极性SPWM波形的脉宽示意图。在每个固定的载波周期内,不同脉宽数值组成一个正弦表格的形式。若选用模块O(P3.7)输出此路SPWM,首先将模块0的PCA模块工作模式寄存器定义为8位PWM模式,将16位计数器定时器CH、CL清零,PCAPWM模式辅助寄存器O清零(保证捕获寄存器EPCOH(高八位)、EPC0L(低八位)固定为零,PWM波比较的数值只与PCA模块0的捕获寄存器CCAPOH(高八位)、CC2APOL(低八位)有关),模块l的捕获寄存器CCAPlH(高八位)、CCAPlL(低八位)送入载波周期的高八位和第八位数值,PCA比较/捕获模块寄存器1(CCAPMl)定义为使能比较功能,允许匹配产生中断。将第一个脉宽值sin[0]装入CCAP0H,开PCA模块中断及低压检测中断,开总中断,启动PCA计数。当16位计数器/定时器的数值与模块1中捕获/比较寄存器的数值相等时,产生一个CCF中断;在中断程序中,清中断标志位,重新给模块1的捕获寄存器CCAPlH(高八位)、CCAPlL(低八位)送入载波周期的高八位和第八位数值,将16位计数器定时器CH、CL清零,中断次数i加1,将下一个脉宽数值sin[i]装入CCAPOH以备比较。同时判断是否到达最大数值N,若是,中断次数i清零,同时将脉宽数sin[i]值送入CCAP0H,完成一个循环。这样,周而复始,在P3.7引脚上将不断产生随着正弦规律变化的脉宽,从而得到准确的SPWM波。2.3软件设计程序编写采用KeilC51编程语言进行,整个程序由主程序和键盘中断子程序以及PCA中断子程序组成。主程序在系统初始化后进入SPwM脉宽计算程序,计算相应的脉冲宽度,形成正弦表格,等待中断标志位以响应不同的中断。由于SPWM波是不断输出的,必须将PCA中断级别设置为最高。一旦有PCA中断标志位,即转入执行其中断子程序。图4为PCA中断子程序流程图。在中断服务程序中,注意CCF1位和CF标志位均由硬件置位,但不能自动清零,必须在中断程序中由软件清零。与此同时,系统可以响应键盘中断子程序,由键盘控制通过液晶显示屏监控输出电压、电流的变化情况等。3实验结果根据上述设计思路及编写的软件,用MIC442l驱动器驱动四个MOSFET器件FQAl60N08组成的逆变桥上进行实际调试。图5为由单片机STCl2C5410输出的两路互补(有一定死区时间)单极性SPWM波。用这两路互补信号直接驱动芯片MIC4421,其输出信号再分别驱动逆变桥,经低通滤波后的波形如图6所示。4结束语实验结果表明,此方法电路结构简单,硬件设计和软件编程切实可行。采用在线计算和查表技术相结合,较好的解决了实时控制的要求。同时采用单片机作为控制器件,不仅成本降低,而且调试方便,受外界干扰较小,有很好的实用性和可靠性。