一种基于C8051单片机的SPWM波形实现方案
3.3 PCA寄存器设置
为了实现以上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
- 基于C8051F340驱动与采集的CCD光电遥测垂线仪(02-01)
- 基于单片机C8051F060的智能功率柜的设计应用(01-12)
- 基于单片机的存储设备转储器(05-03)
- 基于单片机设设计的智能无线网络汽车测试系统(12-02)
- 基于C8051F的18B20程序(12-01)
- 基于C8051F的AD UART0 KEY FLASH TIME3程序(12-01)