C8051F系列单片机的SPWM算法全分析.docx
《C8051F系列单片机的SPWM算法全分析.docx》由会员分享,可在线阅读,更多相关《C8051F系列单片机的SPWM算法全分析.docx(13页珍藏版)》请在冰豆网上搜索。
![C8051F系列单片机的SPWM算法全分析.docx](https://file1.bdocx.com/fileroot1/2023-2/2/807e68c6-5acf-4e58-b96e-2741fccef7a1/807e68c6-5acf-4e58-b96e-2741fccef7a11.gif)
C8051F系列单片机的SPWM算法全分析
一种基于C8051单片机的SPWM波形实现方案
AmethodofproducingSPWMwaveformbasedonC8051MCU
Nsx2009
摘 要:
详细介绍了通过C8051单片机的可编程计数器列阵PCA来实现SPWM控制波形的原理和方法,并对SPWM脉冲序列中的最小脉冲处理问题进行了分析。
实验结果证实了该方法的准确性和可靠性。
叙 词:
C8051;SPWM波形;最小脉冲
Abstract:
TheprincipleandmethodofproducingSPWMcontrolwaveformbyusingtheC8051MCUs’programmablecounterarray(PCA)isintroducedindetail.AndtheminimumpulseproblemoftheSPWMpulseseriesisanalyzed.Experimentalresultsverifythatthemethodisaccurateandreliable.
Keywords:
C8051,SPWMwaveform,minimumpulse
1引言
正弦脉宽调制(SPWM)技术已在交流调速、直流输电、变频电源等领域得到广泛应用,为了提高整个系统的控制效果,高性能SPWM脉冲形成技术一直是人们不断探索的问题。
采用模拟电路和数字电路等硬件电路来产生SPWM波形是一种切实可行的方法,但是这种实现方法控制电路复杂、抗干扰能力差、实时调节较困难。
近年来,人们提出了由单片机、DSP等微控制器来实现SPWM波形的数字控制方法[1][2],由于微控制器内部集成了很多控制电路,比如定时器、PWM电路、可编程计数器阵列等,所以使得这种实现SPWM的方法具有控制电路简单、运行速度快、控制精度高、抗干扰能力强等优点。
本文介绍了一种利用C8051单片机实现输出频率可变SPWM波形的方法,并将由C8051F040产生的单极性SPWM波应用于单相频率可调逆变电源,实验结果证实了利用C8051实现SPWM波形的可行性和有效性。
2SPWM技术原理
SPWM技术的基本原理是利用一个三角波载波和一个正弦波进行比较,得到一个宽度按正弦规律变化的脉冲序列,用它们来驱动逆变器开关管的开关转换。
由微控制器来实现SPWM波形的方法有表格法、随时计算法和实时计算法,但前两种无实时处理能力[2]。
采用实时计算法要有数学模型,其中一种较为常用的是采样型SPWM法,它分为自然采样法、对称规则采样法和不对称规则采样法。
本文采用对称规则采样法,即利用经过采样的正弦波(实际上是阶梯波)与三角波相交,由交点得出脉冲宽度。
图1是典型的单极性对称规则采样法,它只在三角波的峰值时刻采样正弦调制波并将采样值保持,分别取保持值和三角波交点作为脉冲宽度时间。
图中Ts为三角波的周期,同时也是采样周期;Ur为三角波的高,正弦波为Ucsinωt。
根据三角形相似关系,得到
所以
其中,M=Uc/Ur为调制比,t为采样点(这里为顶点采样)的时刻。
则脉冲宽度为
采样点时刻t只与载波比N有关。
对于图1情况有t=kTS+θ,其中k=0,1,2,…,N-1,θ=180/N度。
图1对称规则采样法
在对称规则采样情况下,只要知道采样点时刻t就可以确定这个采样周期内的脉冲宽度tpw和时间间隔toff,从而可以计算出SPWM波形高、低脉冲的宽度。
3C8051实现SPWM波形的原理及算法
3.1C8051F系列单片机PCA简介
C8051F系列单片机都具有一个可编程计数器阵列PCA,以C8051F040为例,PCA包含1个专用的16位计数器/定时器和6个16位捕捉/比较模块,可以输出6路PWM波形。
如图2所示,16位PCA专用计数器/定时器的时基信号可有多种选择,可通过配置相关的系统控制器的特殊功能寄存器(SFR)来实现。
每个捕捉/比较模块有自己的I/O线CEXn,可通过配制交叉开关寄存器(XBR0)将每个模块的I/O线连接到端口I/O;每个模块都可配制为独立工作,有四种工作方式:
边沿触发捕捉、软件定时器、高速输
图2PCA原理框图
出或脉宽调制器。
本文中,产生频率可变的SPWM波形是使用了捕捉/比较模块的高速输出工作方式,其原理如下:
当PCA的16位计数器/定时器PCA0H(高8位)和PCA0L(低8位)与16位捕捉/比较模块寄存器PCA0CPHn(高8位)和PCA0CPLn(低8位)发生匹配时,模块的CEXn引脚上的逻辑电平将发生跳变,并产生一个中断请求,即将控制寄存器PCA0CN中相应的CCFn位置位,当CCF中断被允许时,CPU将转向CCF中断服务程序。
如果将相应模块的I/O线CEXn连接到端口I/O,单片机相应端口输出电平即发生变化,这就可实现PWM脉冲的高、低电平输出。
置位PCA0CPMn寄存器中的TOGn、MATn、ECOMn和ECCFn位,将允许高速输出方式,同时允许CCF中断[3]。
3.2SPWM波形生成方法
利用C8051的PCA计数器产生SPWM波形的基本原理是:
在高速输出并且允许CCF中断方式下,不断在CCF中断服务程序中将事先计算好的SPWM波形的脉冲宽度累加到捕捉/比较模块寄存器PCA0CPn(高8位PCA0CPHn和低8位PCA0CPLn)中,这样在捕捉/比较模块寄存器和计数器/定时器相匹配时就得到相应的SPWM波形不断交替的高低电平。
图3中,l0、h0,l1、h1…lmax、hmax是由软件实时计算好的一路单极性SPWM波形的高、低脉冲宽度,其中l0=l0'+T/2。
由于输出的是频率可变的SPWM波形,既调制波频率可变,所以在不同的频率段设置有不同的载波比N,从而max的值只是相对固定的。
图3SPWM波形示意图
如果选用捕捉/比较模块0输出此路SPWM,则首先将l0'装入16位捕捉/比较寄存器PCA0CP0中,并且将16位计数器/定时器PCA0H和PCA0L清零,然后启动PCA计数器;当捕捉/比较寄存器的数值与计数器/定时器的数值相等时,CEX0引脚就会由原来的低电平跳变为高电平,并且产生一个CCF中断;在CCF中断程序中,将h0累加到PCA0CP0上;中断过程中,计数器的数值是连续增加的,当其值与改变过后的捕捉/比较寄存器的数值相等时,又会使得CEX0引脚由原来的高电平跳变为低电平,并且产生一个CCF中断;然后在中断过程中又将l1累加到PCA0CP0上。
这样,周而复始,CEX0引脚上不断产生交替的高低电平,从而在其所对应的端口I/O上得到准确的SPWM波形。
3.3PCA寄存器设置
为了实现以上SPWM波形产生方法,需要设置与PCA工作有关的特殊功能寄存器。
具体如下:
1)设置方式选择寄存器PCA0MD。
2)初始化捕捉/比较寄存器PCA0CPHn(高字节)和PCA0CPLn(低字节)。
3)设置捕捉/比较模式寄存器PCA0CPMn。
4)初始化计数器/定时器PCA0H(高字节)和PCA0L(低字节)。
5)设置控制寄存器PCA0CN。
3.4程序流程
主程序流程如图4所示,在系统初始化过后首先通过键盘设置输出频率,然后进入SPWM脉宽计算程序,根据所设置频率选择调制比N,计算脉宽并确定max。
在SPWM输出程序中,对PCA特殊功能寄存器进行设置并启动计数器运行,开始输出SPWM波形。
在中断服务程序中,首先根据CCFn的值来判断发生匹配的捕捉/比较模块,然后根据该模块CEX引脚上的电平状态判断是将SPWM波形的高电平脉宽值还是低电平脉宽值累加到捕捉/比较模块寄存器上;同时,根据脉宽数据指针与max是否相等来确定一个SPWM周期的结束和下一个周期的开始,以便正确载入对应数据。
当载波比N发生变化时,max的值会发生变化。
图4程序流程图
应该注意的一点是,CCFn位和CF位(计数器/定时器溢出标志)由硬件置位,但不能由硬件自动清0,必须在中断程序中用软件清0。
4最小脉冲问题分析
由于硬件原因,任何微控制器都不能输出宽度无限小的脉冲,这就使得理想SPWM脉冲序列中小于一定宽度的窄脉冲不能正常输出,即最小脉冲问题。
对于C8051单片机,它的PCA所能输出的最小脉冲取决于其中断服务程序执行的时间,所以其最小脉冲问题不容忽视。
解决该问题的具体方法有:
①采用汇编语言编写中断服务子程序并且应用最精简省时的指令,减小最小脉冲的宽度;②在计算SPWM波脉冲宽度时,对宽度小于PCA所能输出最小宽度的脉冲进行修正,使它们的宽度为最小脉冲的宽度;③限制调制比M,使SPWM脉冲序列中不会含有过多的小脉冲。
5实验结果
实验主电路为单相全桥逆变电路,主开关管采用IGBT,输出100V,50-400Hz频率可调的交流电压。
由单片机输出两路互补(有一定死区时间)单极性SPWM波来控制该逆变电源。
实验中,对输出SPWM波的最小脉冲问题进行了处理,采用汇编语言对中断服务子程序进行编程,使得SPWM波形中最小脉冲的宽度达到了3us,这个宽度(时间)基本达到实验中所用IGBT的最小开关周期。
图4示出了两路单极性SPWM波的实验波形,图5图6分别示出了频率为200Hz和300Hz时的输出电压实验波形:
由实验波形可以看出,由C8051产生SPWM波的控制效果较好,可以准确、实时地调节输出电压的频率。
6结论
利用C8051单片机产生SPWM波形是一种简单易行的方法,具有运算精度高、实时调节性强的特点。
同时,通过改变SPWM波脉宽计算的方法,可以方便地实现双极性SPWM波形。
因而,这种方法适合于对输出SPWM波形的极性、路数和频率有不同要求的场合。
参考文献
[1]李自成等.基于87C196MC形成SPWM波的研究[J].高电压技术,2004(12):
10-12
[2]卢慧芬.基于DSP的SPWM控制波形生成的一种方法[J].机电工程,2002(5):
30-34
[3]李刚,林凌.与8051兼容的高性能、高速单片机——C8051Fxxx.北京:
北京航空航天大学出版社,2002
独立调压调频的数字化单相变频电源的研究
[摘要]介绍了以C8051F系列单片机产生SPWM算法为基础制作的数字化AC/DC/AC单相变频电源,该电源将公网三相交流电转化为输出电压幅值和频率可独立调节的单相交流电。
实验结果表明该电源输出电压波形较理想,实现的调压、调频精度高,反馈灵敏迅速,保护措施齐全有效。
1引言
目前,变频电源已在国民经济的各行各业中得到了广泛应用。
但不同的用电设备对变频器要求不同,如电动机变频调速器,要求对输出电压信号进行VVVF控制。
本文设计的将电网三相交流电转变为单相交流电的变频电源装置,可单独调节输出电压的幅值或频率,两者互不影响,调压范围(变压器一次侧输出电压Uo幅值)为0~450V,误差±2%,调频范围为20~600Hz,精确到0.01Hz,装置容量为30kVA。
负载为工、C串联谐振电路,通过调节Uo的幅值和频率,使负载在谐振点附近工作,从而在谐振电容两端得到一高电压。
整个装置控制系统由单片机C8051F040实现,最后制作了一台样机,并得到了比较理想的实验结果。
2单相变频电源工作原理简介
M57962L以及单片机等控制部分所需的辅助电源,由TOPSwiteh系列的三端单片开关电源芯片,通过高频变压器来提供各自隔离的电源。
为了防止同桥臂开关管直通造成短路,M57962L在输出驱动脉冲之前分别以软件编程和硬件互锁两种方式保证逆变桥的安全运行。
系统负载为L、C串联谐振电路,当系统输出电压Uo的频率接近负载谐振点时,谐振电容C两端便得到一高电压。
根据负载变化来调节Uo的幅值和频率,可使得谐振电容上产生不同的高压值。
系统运行前,由键盘设定输出电压幅值和频率;刚开始运行时,Buck电路开关管占空比逐步上升,实现了软启动功能,同时也是冰电压幅值进行粗调,在稳态时,其输出UDC恒定;运行过程中输出电压频率稳定,幅值则通过反馈进行微调。
电压采样电路为单片机提供反馈信号,形成闭环控制,保证输出电压的幅值在允许的误差范围之内。
显示电路用来显示运行时各参数值以及各种故障状况。
过流保护由单片机通过电流互感器采样每个桥臂电流实现,过热保护由单片机通过温度传感器采样开关管散热片温度实现。
系统还包括输入缓冲电路和整流级电路等,在图中并未画出。
3软件设计及控制策略
C8051F040是集成在一块芯片上的混合信号系统级单片机,是真正能独立工作的片上系统,具有4352B内部RAM空间,64K的Flash存储器,64K的外部数据存储RAM,片内最高时钟可达25MHz。
本文产生SPWM信号主要是使用了其可编程计数器阵列(PCA)功能,而采样反馈是使用了其12位多通道ADC。
主程序流程图如图2所示。
(1)产生SP-WM策略为充分利用开关管开关频率,以及减小输出SPWM波滤波后的正弦波畸变率,在软件中用实时计算和查表法共同作用生成单极性SPWM,并作了三点措施:
①载波比N从20~600Hz分成了9个频段,低频时取最大值为360,高频时取最小值为30。
在每一频段,当N<360时并非正弦表中每个数值都被选择到并用来计算PWM脉宽,为保证输出SPWM波的对称性,在输出正弦波半个周期(180°)内,应以表中90°角对应的数值为参考,选择两边对称的数值来计算。
②选择单极性SPWM。
由于双极性SPWM控制电路中,同一桥臂上下两个开关管的驱动信号是互补的,为防止直通而造成短路,必然要保证上下两个开关管每个PWM脉冲间的死区时间tn,如图3所示。
这一时间的长短要同时考虑开关管自身特性及单片机的运行速度。
这给控制方法的生成和最终的输出滤波都带来影响。
而在单极性SPWM波的控制电路中,为防止直通只需在输出正弦波半周期结束时,保证一定的开关死区时间,控制方法简单,且输出滤波的实现更便利。
③考虑到单片机本身的运行速度以及IG-BT的通断速度,在编程时,限制了SPWM波的最低和最高脉冲宽度。
在频率一定的情况下,如输出电压过低,则相应的调制比m 。
很低,计算得到的SPWM波中会出现大量脉宽相近的脉冲波。
因此,这时输出的SPWM波并未严格按正弦规律变化,最后用这样的SPWM波去驱动IGBT得到的输出波形经滤波后得到的正弦波会发生一定的畸变。
解决的办法是在AC/DC级后增加DC/DC级Buck电路,稳态时Buck电路占空比根据键盘设定的电压幅值计算而得,故输出低压可由其来调节而使ma。
不会降太低;或者使用频率更高的IGBT和速度更快的单片机,在ma过小时增加载波比N,以防止低压时波形畸变加剧。
本设计采用的是第一种方法。
(2)调压、调频相互独立由于系统工作的频率和电压变化范围均很宽,而要求在单独改变输出电压频率时,电压幅值基本不变;单独改变输出电压幅值时,频率不变。
由于输出的SPWM脉宽由单片机PCA计数实现,精确度可以达到很高,故输出电压频率精度很高。
而确保输出电压的幅值稳定则主要利用调节调制比ma来实现,输出电压的幅值有一定的误差。
(3)采样反馈闭环控制在单片机电压采样的A/D反馈控制策略上,如果每次采样后均对输出电压幅值进行调节,会造成输出电压稳定性变差。
因为程序在运行时,当采样后的反馈数据超过参考电压偏差允许范围时,就会根据这偏差去调节调制比ma,然后根据新的调制比ma重新计算SPWM脉宽,最后先停止运行旧的SPWM脉宽数据,重新装载新的SPWM脉宽数据。
在这个调节过程中,就会使相邻输出周波在转换之间有很小的延迟,输出波形频率出现波动。
为了改善这一状况,并保证输出电压的稳定和快速响应,取多次采样反馈值后求其平均值,利用平均值对输出电压幅值进行调节,这同时可减少误调节现象的发生。
当平均值在参考电压允许范围内变化时,调制比ma不变,输出电压幅值不变;当平均值超出参考电压允许范围时,调节调制比ma来调节输出电压幅值。
4实验结果
实验参数如下:
输人为380V三相交流电,开关管IGBT选用CMIOODY—24NF,直流环电容为两个1000µF/450V串联,输出滤波电感Lf=0.5mH,输出滤波电容CF=4.7µF,负载采用一个电感与一组电容串联,通过变压器连接在逆变器输出端。
主要针对在不同频率、相同电压设定下,以及相同频率、不同电压设定下,输出结果是否满足要求,进行了实验,实验结果如图4~图6所示。
图4为单片机输出的典型的SPWM波形,频率为100Hz。
图5和图6为变压器一次侧电压波形。
从输出实验结果波形图可见,输出频率单独变化时,电压幅值基本不变;输出电压幅值单独变化时,频率基本不变,达到了调压、调频相互独立的效果。
5结束语
本文提出的调压、调频相互独立的数字化单相变频电源可实现的正弦波输出电压调频范围宽而精确、调幅范围广而误差小,并且电压幅值、频率可独立调节而互不影响。
与传统电源相比,此数字电源具有输出精度高、稳定可靠、可实现远程控制、便于智能化管理等优点,可作为对频率和电压幅值有特殊要求的多种用电设备的电源。