基于单片机SPWM波形产生器Word文档下载推荐.docx
《基于单片机SPWM波形产生器Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于单片机SPWM波形产生器Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。
2、单片机开发板
说明书格式
1、封面
2、课程设计任务书
3、目录
4、系统总体方案设计
5、系统硬件设计
6、软件设计(包括流程图)
7、系统的安装调试说明
8、总结
9、参考文献
10、附录
11、课程设计成绩评分表。
进度安排
第一周星期一上午安排任务、讲课。
星期一下午---星期二下午查资料、设计
星期三开始软件设计仿真
第二周星期一至星期四
1、调试验收
2、写课程设计报告书
星期五答辩
地点:
嵌入式微处理器及SOPC实验室
参考文献
[1]谢维成杨加国.单片机原理与应用及C51程序设计(第二版)[M].
北京:
清华大学出版社,2009.7.
[2]谭浩强.C程序设计(第三版)[M].北京:
清华大学出版社,2005.
[3]赵亮.单片机C语音编程与实例[M].北京:
人民邮出版社,2009.
一、绪论
二、SPWM的基本原理
三、单片机AT89C52的简介
四、设计思路与总体框图
五、系统设计分析
六、程序调试与仿真
七、实验结果分析与总结
八、心得体会
九、参考文献
十、参考程序
电力电子技术和微机控制技术的发展使得正弦波脉宽调制技术(SPWM)在电气传动、UPS电源等领域得到广泛的应用。
随着集成电路技术的飞速发展,特别是单片机功能的日益强大和单片机技术的日益成熟,使得以前需要昂贵的专用SPWM芯片产生SPWM,现在用单片机产生SPWM已成为可能。
而当今单片机的应用已经从单纯依赖于51系列单片机向其它多种单片展,尤其以嵌入式PIC单片机的发展应用更为广泛。
正弦脉宽调制(SPWM)技术已在交流调速、直流输电、变频电源等领域得到广泛应用,为了提高整个系统的控制效果,高性能SPWM脉冲形成技术一直是人们不断探索的课题。
采用模拟电路和数字电路等硬件电路来产生SPWM波形是一种切实可行的方法,但是这种实现方法控制电路复杂、抗干扰能力差、实时调节较困难。
近年来,人们提出了由单片机、DSP等微控制器来实现SPWM波形的数字控制方法,由于微控制器内部集成了很多控制电路,比如定时器、PWM电路、可编程计数器阵列等,所以使得这种实现SPWM的方法具有控制电路简单、运行速度快、控制精度高、抗干扰能力强等优点。
本文介绍了一种利用C8O51单片机实现输出频率可变SPWM波形的方法。
SPWM技术的基本原理是利用一个三角波载波和一个正弦波进行比较,得到一个宽度按正弦规律变化的脉冲序列,用它们来驱动逆变器开关管的开关转换。
在本课题里对目前产生SPWM的各种算法进行比较和研究。
选择一种合适的算法面积等效法来实现正弦波脉宽调制,同时对当前最有前途的功率器件绝缘栅双极晶体管IGBT的性能,保护电路和驱动电路进行了探讨。
在系统中采用面积等效算法,利用51单片机为控制核心产生SPWM波,经过保护、隔离、驱动电路后的SPWM波,控制单相全桥逆变电路产生一个频率和电压都可调的交流输出,经滤波电路后供给负载使用。
近年来,随着逆变电源在各行各业应用的日益广泛,采用正弦脉宽调制(SPWM)技术控制逆变电源提高整个系统的控制效果是人们不断探索的问题。
对SPWM的控制有多种实现方法,其一是采用模拟电路、数字电路等硬件电路产生SPWM波形,该方法波形稳定准确,但电路复杂、体积庞大、不能进行自动调节;
其二是借助单片机、DSP等微控制器来实现SPWM的数字控制方法,由于其内部集成了多个控制电路,如PWM电路、可编程计数器阵列(PCA)等,使得这种方法具有控制电路简单、运行速度快、抗干扰性强等优点。
1、常见SPWM信号产生方法
方案一:
模拟调制器法。
该方法由正弦调制波发生电路、三角载波发生电路和模拟电压比较器三部分组成。
而这种控制电路要实现调频、调压都离不开CPU、EPROM、A/D、D/A转换器等。
所以该电路复杂、器件分散性大、可靠性差。
方案二:
专用芯片法。
如英国Mulend公司的HEF4752和德国西门子公司的SLE4520等。
该方法的优点是电路集成度高、可靠性高,缺点是无法全面实现对调速系统的反馈控制、监视管理和保护工作,故一般也要配合单片机实现。
方案三:
软件生成法。
该方法要考虑指令功能、存储容量和运算速度是否影响实时性,采用89C51单片机查表法生成SPWM控制脉冲列的方法。
2、正弦脉宽调制技术SPWM
SPWM控制方案有两种:
即单极性调制和双极性调制法。
单极性法所得的SPWM信号有正、负和0三种电平,而双极性得到的只有正、负两种电平。
比较二者生成的SPWM波可知:
在相同载波比情况下,生成的双极性SPWM波所含谐波量较大;
并且在正弦逆变电源控制中,双极性SPWM波控制较复杂。
因此一般采用单极性SPWM波控制的形式。
由单片机实现SPWM控制,根据其软件化方法的不同,有如下几种方法:
自然采样法、对称规则法、不对称规则法和面积等效法等。
理论分析发现面积等效法相对于其它方法而言,谐波较小,对谐波的抑制能力较强。
而且实时控制简单,利于软件实现。
2.1对称规则采样法
对称规则采样法是从自然采样法演变而来的,它由经过采样的正弦波(实际上是阶梯波)与三角波相交,由交点得出脉冲宽度。
这种方法只在三角波的顶点或底点位置对正弦波采样而形成阶梯波。
若以单位量1代表三角载波的幅值Uc,则正弦调制波的幅值Ur就是调制比a。
图中的三角波和正弦波都是经过向上平移单位量1得到的,与过横坐标轴得到的结果一致。
对称规则采样法原理图如图2-1所示。
图2-1生成SPWM波形的规则采样法
2.2.不对称规则采样法
不对称规则采样法采用在每个载波周期采样两次,即在三角波的顶点位置采样,又在三角波的底点位置采样,这样形成的阶梯波与正弦波的逼近程度会大大提高。
不对称规则采样法生成SPWM的原理图如图2-2所示
。
图2-2不对称规则采样法生成SPWM的原理图
根据相似三角形原理,可得如下关系式:
,
式中:
为在三角波的正峰值对正弦信号波的采样时刻,
为在三角波的负峰值对正弦信号波的采样时刻;
δ'
+δ是A相开通时刻脉冲宽度;
Tc为三角波载波周期。
因此可得A相开通时刻的脉冲宽度:
(k=0,1,2·
·
N-1)
(2k为一个周期内采样计数值)
由以上分析得比较单元1的比较寄存器的值为:
sCMPR1=T1PR−(δ'
+δ)/2T(
为EVA通用定时器1的时钟周期)
2.3.等效面积法
在采样控制理论有中一个重要的结论:
冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。
冲量即指窄脉冲的面积。
正弦脉宽调制的基本原理就是按面积相等的原则构成与正弦等效的一系列等幅不等宽的矩形脉冲波形。
等效面积法就是根据已知数据和正弦数值依次算出每个脉冲的宽度,通过查表的方式实时控制。
图2-3生成SPWM波形的等效面积法若以单位量1代表矩形脉冲的幅值Uc,则正弦调制波的幅值Um就是调制比a。
图2-3为SPWM面积等效法原理示意图
假设所需的输出正弦电压为U0=Umsinωt,式中:
Um为正弦波幅值。
利用面积等效法正弦波小块面积S1与对应脉冲面积S2相等的原则,将正弦波的正半周分为N等分,则每一等分的宽度为兀/N,计算出半个周期内N个不同的脉宽值。
相关公式如下:
正弦波S1面积为:
逆变器输入直流电压为UD,脉冲面积S2与S1相等,即有:
所以第k个区间的脉冲宽度δk
式中:
M为调制度。
N为半个周期内的脉冲个数。
综合考虑载波比、输出谐波等因素,在此N取60。
由上式计算出的SPWM脉宽表是一个由窄到宽、再由宽到窄的60个值的正弦表,将其存入STC单片机的ROM中以供调用。
3.STC系列单片机生成SPWM波原理
3-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输出模式框图。
图3-1PCAPWM输出模式框图
在PCAPWM输出模式中,当CLSFR的值小于{EPCnL,CCAPnL}时,输出为低,当PCACLSFR的值等于或大于{EPCnH,CCAPnH}时,输出为高。
当CL的值由FF变为00溢出时,{EPCnH,CCAPnH}的内容装载到{EPCnL,CCAPnL}中。
这样就实现了无干扰的更新PWM。
要使能PWM模式,模块CCAPMn寄存器的PWMn和ECOMn位必须置位。
本文中,SPWM波形是综合使用了模块O的脉宽调节(PWM)模式和模块1的16位软件定时器模式,通过软件中断的形式实现的。
3-2SPWM波生成方法
利用STC系列单片机产生SPWM波的基本原理是:
将载波周期数值赋给PCA模块l的16位捕获/比较模块寄存器CCAPlH(高8位)和CCAPlL(低8位),PCA定时器的值CH(高八位)、CL(低八位)与模块捕获寄存器的值相比较,当两者相等时,产生PCA中断。
在中断中,调用模块0的PWM脉宽调节模式,将下一个SPWM波的脉宽通过CCAP0H装载到CCAPOL中,这样就可以实现无干扰的更新PWM。
图3-2SPWM波形示意图
三、单片机AT89C52简介
图3AT89C52的管脚图
AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。
AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
兼容MCS51指令系统·
8k可反复擦写(>
1000次)FlashROM
·
32个双向I/O口·
256x8bit内部RAM
3个16位可编程定时/计数器中断·
时钟频率0-24MHz
2个串行中断·
可编程UART串行通道
2个外部中断源·
共6个中断源
2个读写中断口线·
3级加密位
低功耗空闲和掉电模式·
软件设置睡眠和唤醒功能
AT89C52P为40脚双列直插封装的8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。
功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。
主要管脚有:
XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz晶振。
RST/Vpd(9脚)为复位输入端口,外接电阻电容组成的复位电路。
VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。
P0~P3为可编程通用I/O脚,其功能用途由软件定义,在本设计中,P0端口(32~39脚)被定义为N1功能控制端口,分别与N1的相应功能管脚相连接,13脚定义为IR输入端,10脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12脚、27脚及28脚定义为握手信号功能端口,连接主板CPU的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。
P1口
P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入(P1.0/T2)和输入(P1.1/T2EX),Flash编程和程序校验期间,P1接收低8位地址。
表.P1.0和P1.1的第二功能
引脚号
功能特性
P1.0
T2,时钟输出
P1.1
T2EX(定时/计数器2)
P2口
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口输出P2锁存器的内容,Flash编程或校验时,P2亦接收高位地址和一些控制信号。
P3口
P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
此时,被外部拉低的P3口将用上拉电阻输出电流(IIL),P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
主程序流程如图4所示,在系统初始化过后首先通过键盘设置输出频率,然后进入SPWM脉宽计算程序,根据所设置频率选择调制比N,计算脉宽并确定max。
在SPWM输出程序中,对PCA特殊功能寄存器进行设置并启动计数器运行,开始输出SPWM波形。
在中断服务程序中,首先根据CCFn的值来判断发生匹配的捕捉/比较模块,然后根据该模块CEX引脚上的电平状态判断是将SPWM波形的高电平脉宽值还是低电平脉宽值累加到捕捉/比较模块寄存器上;
同时,根据脉宽数据指针与max是否相等来确定一个SPWM周期的结束和下一个周期的开始,以便正确载入对应数据。
当载波比N发生变化时,max的值会发生变化。
应该注意的一点是,CCFn位和CF位(计数器/定时器溢出标志)由硬件置位,但不能由硬件自动清0,必须在中断程序中用软件清0。
图4设计框图
由于硬件原因,任何微控制器都不能输出宽度无限小的脉冲,这就使得理想SPWM脉冲序列中小于一定宽度的窄脉冲不能正常输出,即最小脉冲问题。
对于AT89C52单片机,它的PCA所能输出的最小脉冲取决于其中断服务程序执行的时间,所以其最小脉冲问题不容忽视。
解决该问题的具体方法有:
①采用汇编语言编写中断服务子程序并且应用最精简省时的指令,减小最小脉冲的宽度;
②在计算SPWM波脉冲宽度时,对宽度小于PCA所能输出最小宽度的脉冲进行修正,使它们的宽度为最小脉冲的宽度;
③限制调制比M,使SPWM脉冲序列中不会含有过多的小脉冲。
电路图设计:
仿真结果:
1、误差分析:
频率偏差原因:
在定时器中断服务程序中查表赋定时的初值,占用时间较多,导致定时不准确;
另外,测试仪器本身存在测量误差。
波形失真原因:
滤波器可能设计不是很好,导致出来的波形不是那么的平滑,单片机系统存在最小脉冲的限制,还有各种因数都会导致波形失真。
2、总结
利用AT89C52单片机产SPWM波形是一种简单易行的方法,具有运算精度高、实时调节性强的特点。
同时,通过改变SPWM波脉宽计算的方法,可以方便地实现双极性SPWM波形。
因而,这种方法适合于对输出SPWM波形的极性、路数和频率有不同要求的场合。
八、心得体会
本单片机课程设计是要设计基于单片机的SPWM波形产生器设计,刚开始接触这门课题,毫无头绪,甚至不知道如何下手,这学期才刚开单片机这门课程,对汇编语言不是很熟悉,C语言大一的时候学过,但也学得不是很深,只是能简单的运用,更别提自己编程了,大三了,也接触到了汇编语言,单片机编程可以用C语言或者汇编语言,面对SPWM,我都不知道这是什么意思,经网上查询,才知道这是正弦脉冲调制的意思,在进行脉宽调制时,使脉冲系列的占空比按正弦规律来安排。
当正弦值为最大值时,脉冲的宽度也最大,而脉冲间的间隔则最小,反之,当正弦值较小时,脉冲的宽度也小,而脉冲间的间隔则较大,这样的电压脉冲系列可以使负载电流中的高次谐波成分大为减小,称为正弦波脉宽调制。
通过在网上查找一些资料,基本明白要干一些什么事了,要实现SPWM有三种方法,一是:
二是:
三是:
刚开始在考虑用第一种方案,用一个正弦波和一个三角波进行比较,得到不同脉宽的方波信号,因为条件有限,缺乏A/D转换器,这个方案被搁浅,然后在老师的点拨下,综合考虑,采用第三种方案。
如果要实现方案,必须要编程,但自己C语言基底很薄弱,必须要开始拾起C语言,C语言入门容易,可是要掌握它还要经过实践,多编程,如果只是利用这两个星期就想把C语言学好,是不可能,再怎么难,也得从基础做起,从网上下载了一些程序,慢慢琢磨,开始对这个课题的整个编程有了初步的认识,在原来的基础上,通过自己的理解和修改,在单片机板子上调试,直到与预想的结果一致。
通过运用我所学习的单片机原理及应用、数字电子技术等关于电子技术的课程中的理论知识来完成此项设计。
在设计的过程中,通过查找资料又重新的温习了一下各个部分的内容,并且通过查阅书籍和相关文献资料来提高独立分析能力和解决实际问题的能力;
掌握并熟练运用相关软件进行操作;
熟悉常用电子器件的类型、特征和功能,并本着合理采选用的原则进行选用;
进一步熟悉电子仪器的正确使用。
在此我要感谢指导老师的悉心教导,感谢期间帮助过我的同学,谢谢你们,让我加强了对单片机知识的理解,能过把所学的理论知识运用到实际当中去,加强了我的动手能力。
同时,在整个设计过程中我懂得了许多东西,不仅加强了我与搭档一起合作的团结能力,增进了我们之间的友谊,树立了对自己工作能力的信心,相信这次设计对今后的工作有非常重要的影响,而且还大大提高了我的动手能力,使我充分体会到了在创造过程中的探索的艰难和成功的喜悦。
总之,通过这次课程设计我受益良多。
1、《51系列单片机应用与实践教程》周向红编北航出版社
2、《单片机应用系统设计》何立民编北航出版社
3、《单片机原理及应用》王迎旭编机械工业出版社
4、《51系列单片机设计实例》楼然苗编北航出版社
5、《51单片机应用系统开发典型实例》戴家等编中国电力出版社
6、《单片机实用系统设计技术》房小翠编国防工业出版社
7、《51单片版C语言教程》新概念郭天祥编电子工业出版社
8、《单片机C语音编程与实例》赵亮编北京人民邮出版社
#include<
reg52.h>
#defineunintunsignedint
#defineuncharunsignedchar
uncharcodepwm[5][120]={
{4,12,20,27,35,43,51,58,66,74,
81,88,96,103,110,117,124,131,137,144,
150,156,162,168,174,180,185,190,195,200,
205,209,213,217,221,224,228,231,234,237,
239,241,243,245,246,247,248,249,250,250,
250,250,249,248,247,246,245,243,241,239,
237,234,231,228,224,221,217,213,209,205,
200,195,190,185,180,174,168,162,156,150,
144,137,131,124,117,110,103,96,88,81,
74,66,58,51,43,35,27,20,12,4
},
{8,24,39,55,70,85,99,113,127,140,
153,165,177,187,198,207,