DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 243|回复: 0
打印 上一主题 下一主题

基于STC系列单片机的SPWM波形实现

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-16 16:25:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
??? 摘要:文章在比较了多种生成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 正弦脉宽调制技术SPWM??? SPWM控制方案有两种:即单极性调制和双极性调制法。单极性法所得的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中以供调用。
                          
                       
                          
                                2 STC系列单片机生成SPWM波原理2.1 STC系列单片机简介??? STCl2系列单片机是美国STC公司在8051单片机标准的内核基础上改进推出的一个增强型功能的8051的单片机,从引脚到指令上完全与8051单片机兼容。最突出的特点就是其具有可编程计数器阵列PCA。以STCl2C5410AD为例,有四路可编程计数器阵列PCA/PWM。PCA含有一个特殊的16位定时器,有4个16位的捕获/比较模块与之相连。四个模块的公共时间基准由PCA定时器决定,可以通过PCA模式寄存器CMOD SFR的CPSl和CPS0位确定。每个模块可编程工作在4种模式下:上升/下降沿捕获、软件定时器、高速输出或PWM脉冲输出。文中SPWM生成功能主要靠PWM脉冲输出模式完成。图2即为PCA模块脉宽调节PWM输出模式框图。??? 在PCA PWM输出模式中,当CLSFR的值小于{EPCnL,CCAPnL}时,输出为低,当PCA CL SFR的值等于或大于{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.2 SPWM波生成方法??? 利用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清零,PCA PWM模式辅助寄存器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 结束语??? 实验结果表明,此方法电路结构简单,硬件设计和软件编程切实可行。采用在线计算和查表技术相结合,较好的解决了实时控制的要求。同时采用单片机作为控制器件,不仅成本降低,而且调试方便,受外界干扰较小,有很好的实用性和可靠性。
                          
                       
                          
                               
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-6-18 23:28 , 耗时 0.098018 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表