三相电压型SPWM逆变器设计.docx

上传人:b****0 文档编号:9035086 上传时间:2023-05-16 格式:DOCX 页数:22 大小:286.47KB
下载 相关 举报
三相电压型SPWM逆变器设计.docx_第1页
第1页 / 共22页
三相电压型SPWM逆变器设计.docx_第2页
第2页 / 共22页
三相电压型SPWM逆变器设计.docx_第3页
第3页 / 共22页
三相电压型SPWM逆变器设计.docx_第4页
第4页 / 共22页
三相电压型SPWM逆变器设计.docx_第5页
第5页 / 共22页
三相电压型SPWM逆变器设计.docx_第6页
第6页 / 共22页
三相电压型SPWM逆变器设计.docx_第7页
第7页 / 共22页
三相电压型SPWM逆变器设计.docx_第8页
第8页 / 共22页
三相电压型SPWM逆变器设计.docx_第9页
第9页 / 共22页
三相电压型SPWM逆变器设计.docx_第10页
第10页 / 共22页
三相电压型SPWM逆变器设计.docx_第11页
第11页 / 共22页
三相电压型SPWM逆变器设计.docx_第12页
第12页 / 共22页
三相电压型SPWM逆变器设计.docx_第13页
第13页 / 共22页
三相电压型SPWM逆变器设计.docx_第14页
第14页 / 共22页
三相电压型SPWM逆变器设计.docx_第15页
第15页 / 共22页
三相电压型SPWM逆变器设计.docx_第16页
第16页 / 共22页
三相电压型SPWM逆变器设计.docx_第17页
第17页 / 共22页
三相电压型SPWM逆变器设计.docx_第18页
第18页 / 共22页
三相电压型SPWM逆变器设计.docx_第19页
第19页 / 共22页
三相电压型SPWM逆变器设计.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

三相电压型SPWM逆变器设计.docx

《三相电压型SPWM逆变器设计.docx》由会员分享,可在线阅读,更多相关《三相电压型SPWM逆变器设计.docx(22页珍藏版)》请在冰点文库上搜索。

三相电压型SPWM逆变器设计.docx

三相电压型SPWM逆变器设计

三相电压型SPWM逆变器设计

摘要:

本次设计采用EasyARM1138开发板,设计了一个基于新型32位微控制器LM3S1138的可调频率中频逆变电源,即克服了传统模拟逆变器电路复杂、灵活性差、系统不稳定等缺点,又兼具普通单片机控制系统的低成本和DSP控制系统的高性能等优点,有效解决了特种电源设计中存在的成本和性能矛盾问题,同时也可应用于对电源频率有不同要求的场合。

本设计进行了硬件电路的模块划分、微控制器引脚资源的分配、具体单元电路的设计等。

硬件电路由五大模块即控制器模块、功率器件驱动模块、逆变模块、保护模块和显示模块构成,其中控制器模块由EasyARM1138开发板构成,完成SPWM脉宽调制信号产生、LCD显示信号的输出及A/D转换等工作;驱动模块由两片IR2110及外围电路组成,完成SPWM信号的隔离放大并驱动功率开关管;逆变模块由四片绝缘栅双极晶体管组成的全桥电路和LC低通滤波器构成,在SPWM信号的控制下完成外部直流电压向纯正弦波电压的转换;保护模块由LM393及外围电路构成,实现正弦波输出信号的过压和过流保护;显示模块由LCD12864及辅助电路组成,实现相关数据的显示输出。

关键词:

LM3S1138SPWM逆变器matlab

1设计内容

1.1设计目的及意义

(1)训练学生正确地应用运动控制系统,培养解决工业控制、工业检测等领域具体问题的能力;

(2)通过课程设计,熟悉运动控制系统应用系统开发、研制的过程,软、硬件设计的工作方法、工作内容、工作步骤;

(3)对学生进行基本技能训练,例如组成系统、编程、调试、绘图等,使学生理论联系实际,提高动手能力和分析问题、解决问题的能力。

1.2设计步骤

(1)设计方案的选择及论证;

(2)设计电路的整体框架;

(3)系统软件及硬件的设计;

(4)对系统进行仿真并分析;

1.3内容要求

(1)画出控制电路和主电路原理图;

(2)画出程序流程图;

(3)写课程设计论文,附有原理图、流程图、程序清单,内容要正确,概念要清楚,文字要通顺。

2设计方案

2.1方案选择

本设计选用EsayARM1138开发板,以LM3S1138为控制核心,辅以扩展的键盘及显示电路和SPWM逆变电路组成完整的系统。

根据采样控制理论,由LM3S1138输出一系列周期性变化的等幅不等宽脉冲,控制IGBT功率开关管的导通和截止,使逆变器输出端获得一系列宽度不等的矩形脉冲波。

输出的信号经低通滤波器滤波后,即可得到所需要的正弦波。

改变调制脉冲的宽度可以控制输出电压的幅值,改变调制周期可以控制输出电压的频率,从而达到使逆变器的输出电压和幅值同时可调的目的。

2.2方案论证

在逆变器电路的设计中,控制方法是核心技术。

早期的控制方法使得输出为矩形波,谐波含量较高,滤波困难,而SPWM技术较好地克服了这些缺点。

本设计室基于单片机来实现SPWM,此方法控制电路简单可靠,利用软件产生SPWM波,减轻了对硬件的要求,且成本低,受外界干扰小。

2.3设计重点难点

完成本方案设计的重点和难点有以下几点:

①LM3S1138的GPIO口分配和驱动函数的调用

②LCD显示模块的驱动和相关数据的显示

③不同幅值、不同频率信号的正弦脉宽数据表的设计

3系统的硬件设计

3.1整体方案设计

本系统由电源模块、控制模块、逆变模块、键盘和显示模块、输出及保护电路等5大部分组成,设计系统的总体结构框图如图3.1所示。

 

图3.1系统总体结构框图

电源模块:

根据实验室现有的条件,本系统的电源由两台稳压电源提供3路直流电压。

控制模块:

由EasyARM1138开发板构成,运行系统程序并通过扩展GPIO口控制自主设计的各子模块工作。

逆变模块:

由2片驱动芯片IR2110、4只IGBT管FGA25N120AN和LC低通滤波器及外围辅助电路构成,完成DC/AC的逆变、电压变换并得到需要的正弦波电压输出。

键盘和显示模块:

由3个按键开关和1个可显示4行、16列字符的LCD显示器12864构成。

输出和保护电路模块:

由1个2A保险丝、4个并在IGBT管集射极两端的反向偏置二极管和LM393及辅助电路组成的比较电路构成。

完成系统的过流、过压及IGBT管的瞬间过流保护工作。

3.2主电路

图3.2是SPWM逆变器的主电路,图中Vl—V6是逆变器的六个功率开关器件,各由一个续流二极管反并联,整个逆变器由恒值直流电压U供电。

一组三相对称的正弦参考电压信号

由参考信号发生器提供,其频率决定逆变器输出的基波频率,应在所要求的输出频率范围内可调。

参考信号的幅值也可在一定范围内变化,决定输出电压的大小。

三角载波信号Uc是共用的,分别与每相参考电压比较后,给出“正”或“零”的饱和输出,产生SPWM脉冲序列波Uda,Udb,Udc作为逆变器功率开关器件的驱动控制信号。

3.2电源电路

当Uru

Ud和Uwn’的PWM波形只有±Ud/2两种电平。

当Uru>Uc时,给V1导通信号,给V4关断信号,Uun’=-Ud/2。

Uuv的波形可由Uun’-Uvn’得出,当1和6通时,Uuv=Ud,当3和4通时,Uuv=-Ud,当1和3或4和6通时,Uuv=0。

输出线电压PWM波由±Ud和0三种电平构成负载相电压PWM波由(±2/3)Ud,(±1/3)Ud和0共5种电平组成。

防直通的死区时间同一相上下两臂的驱动信号互补,为防止上下臂直通而造成短路,留一小段上下臂都施加关断信号的死区时间。

死区时间的长短主要由开关器件的关断时间决定。

死区时间会给输出的PWM波带来影响,使其稍稍偏离正弦波。

3.3抗干扰电路

本设计采用了光电隔离器,光电隔离器可以很简单将主回路的强电和控制回路的弱电相隔离,使主回路和控制回路更好的结合。

光电隔离器的电路示意图如图3.3所示。

3.4驱动电路

由于LM3S1138产生的SPWM信号不能直接驱动IGBT,故逆变桥的驱动采用专用芯片IR2110。

IR2110是一种双通道、栅极驱动、高压高速、单片式集成功率驱动模块,具有体积小(DIP14)、集成度高(可驱动同一桥臂两路)、响应快(典型ton/toff=120/94ns)、偏置电压高(<600V)、驱动能力强等特点,同时还具有外部保护封锁端口[12]。

IR2110采用CMOS工艺制作,逻辑电源电压范围为5V~20V,适应TTL或CMOS逻辑信号输入,具有独立的高端和低端2个输出通道。

由于逻辑信号均通过电平耦合电路连接到各自的通道上,容许逻辑电路参考地(VSS)与功率电路参考地(COM)之间有-5V~+5V的偏移量,并且能屏蔽小于50ns的脉冲,这些特点使得IR2110具有较理想的抗噪声效果。

采用CMOS施密特触发输入,可以进一步提高电路抗干扰能力[13]。

IR2110自身的保护功能非常完善:

对于低压侧通道,利用2片IR2110驱动全桥逆变电路的电路图如图3.4所示

图3.4全桥驱动电路

为改善PWM控制脉冲的前后沿陡度并防止振荡,减小IGBT集电极的电压尖脉冲,一般应在栅极串联十几欧到几百欧的限流电阻。

IR2110的最大不足是不能产生负偏压,由于密勒效应的作用,在开通与关断时,集电极与栅极间电容上的充放电电流很容易在栅极上产生干扰。

针对这一点,本文在驱动电路中的功率管栅极限流电阻R1、R2上反向并联了二极管D4、D5。

3.5逆变电路

逆变电路的作用是将直流电压转换成梯形脉冲波,经低通滤波器滤波后,从而使负载上得到的实际电压为正弦波,逆变电路是由4个IGBT管(VT1、VT2、VT3、VT4)组成的全桥式逆变电路组成,如图3.5所示。

 

图3.5逆变电路

4软件设计

软件设计是逆变控制电路设计的重要组成部分,它决定了逆变器输出的特性,如电压调节范围及稳定程度,理想的正弦波输出电压、保护功能的完善、可靠性等等。

逆变器程序主要分为SPWM脉宽调制部分,LCD12864显示部分,ADC转换部分,看门狗程序部分。

4.1 编程思路

本设计将一个周期T的信号分成720个点(按X轴等分),两点间的时间间隔由EasyRAM1138通过定时器中断产生。

因此,首先需建立正弦脉宽数据表,由EasyARM1138初始化时算好,将其按一定的格式(即考虑相序及同一相中的脉宽次序等)存入片内的FLASH中,建立好数据指针,以便按一定的寻址方式查询。

SPWM实际上就是用一组经过调制的幅值相等、宽度不等的脉冲信号代替调制信号,用开关量代替模拟量。

调制后的信号中除了含有调制信号外,还含有频率很高的载波频率及载波倍频附近的频率分量,但几乎不含其他谐波,特别是接近基波的低次谐波。

因此载波频率也即SPWM的开关频率越高,谐波含量越少。

这从SPWM的原理可以直观地看出。

当载波频率高时,半周期内开关次数越多,把期望的正弦波分段也越多,SPWM的基波就越接近期望的正弦波[14]。

但是,SPWM的载波频率除了受功率器件的允许开关频率制约外,SPWM的开关频率也不宜过高,这是因为开关器件工作频率提高,开关损耗和换流损耗会随之增加。

另外,开关瞬间电压或电流的急剧变化形成很大的du/dt或di/dt,会产生强的电磁干扰;高du/dt、di/dt还会在线路和器件的分布电容和电感上引起冲击电流和尖峰电压;这些也会因频率提高而变得严重。

综上所述,SPWM的开关频率的选择应综合考虑各个方面的因素,本设计实际采用的SPWM开关频率,也即IGBT的开关频率为18MHz,这是一个折中的选择。

设置EasyARM的频率为6MHz,分频后为20MHz。

0-180度由定时器TIMER0的TIMA(对应的为CPP1)输出0有效,180-360由TIMER1的TIMB(对应的为CPP3)输出0有效,两脚轮流输出脉宽调制的正弦半波。

图4.1正弦波脉冲宽度调制波形示意图

关于载波频率和调制波频率的计算:

EasyARM的时钟频率20MHz,一个机器周期为0.5us,载波频率为8KHz~90KHz之间,将一个输出周期T的信号分成1440个点(按X轴等分),两点间的时间间隔由EasyARM的定时器通过计数中断实现,由于EasyARM的内部定时器有PWM的设置,通过在程序中设置定时器的计数值来控制频率,同过设置占空的的计数值来调整脉冲的占空比,这样就保证了输出方波的脉冲宽度按正弦规律变化。

逆变后的方波经滤波后可以得到纯正弦波脉冲,调制频率为14.4KHz~1440KHz,一个周期分为1440个调制脉宽,每个周期时间为:

1440*(1/14.4KHz~1/144KHz)=0.1s~0.01(s),使输出频率为10~100Hz。

表4-1正弦脉冲的度数与计数值之间的一个换算表(部分)

4.2流程图

首先对程序进行初始化,初始化之后程序就进入了中断,连续读取720个PWM的匹配值产生0-180度的SPWM。

之后关闭此定时器和中断,并打开TIMER0和它的定时中断,同样的连续读取720个PWM的匹配值产生180-360度的SPWM。

主程序中,在while

(1)中不断的扫描按键。

通过判断是KEY1还是KEY2按下来提高和降低频率。

正弦波频率的改变范围是10~100Hz。

SPWM调制程序流程图如图4.3所示:

 

 

图4.3SPWM调制程序流程图

5仿真

SPWM控制方式下的三相逆变电路主电路如图5.1所示:

图5.1三相逆变电路主电路

设置参数,即将调制度m设置为0.9,调制波频率设为50Hz,载波频率设为基波的30倍(载波比N=30),即1500Hz,仿真时间设为0.04s,在powergui中设置为离散仿真模式,采样时间设为1e-006s,运行仿真图形,然后建立m文件,程序如下所示:

subplot(3,1,1);

plot(inv.time,inv.signals

(1).values);

title(Uab'线电压波形');

subplot(3,1,2);

plot(inv.time,inv.signals

(2).values);

title('A相输出电压Ua波形');

subplot(3,1,3);

plot(inv.time,inv.signals(3).values);

axis([00.04-300300]);

title('A相输出电流波形');

运行此文件后,可得输出交流电压,交流电流和直流电流如图5.2所示:

图5.2SPWM方式下的三相逆变电路输出波形

分析上图可知,输出线电压PWM波由±Ud和0三种电平构成负载相电压PWM波由(±2/3)Ud、(±1/3)Ud和0共5种电平组成。

利用MATLAB提供的powergui模块,对上图中的输出相电压

和输出电流

进行FFT分析,得图5.3、图5.4所示结果:

图5.3SPWM控制方式三相逆变电路输出相电压

的FFT分析

 

图5.4SPWM控制方式三相逆变电路输出电流

的FFT分析

由图5.3可知:

=300V,m=0.9,

=1500Hz,

=50Hz,即N=30时,输出相电压的基波电压的基波幅值为

=134.7V,谐波分布中最高的为28和32次谐波,考虑最高频率为4500Hz时的THD达到79.74%。

由图5.4可知:

考虑最高频率为4500Hz时的THD=5.15%,输出电流近似为正弦波。

6心得体会

两个周的运动控制课程设计—三相电压型SPWM逆变器设计就要结束了,虽然课程设计的时间比较短,但我却收获了很多值得总结和值得我铭记于心的知识和认识。

开始课程设计的时候,由于我们学的都是一些嵌入式方面的理论知识,牵涉到实际的我们几乎一无所知,所以我们组的成员都不知道该怎么入手,我们通过请教老师,以及上网查询等通道,终于顺利的完成数据采样系统的各方面设计。

这样一个过程使我的理论知识得到了试验和应用,使我的理论知识得到了进一步的提高。

总之,这次课程设计不但让我学到了很多的东西,提高和巩固了单片机、matlab等方面的知识,同时也增强了我的动手能力,这些并不是在课堂上可以学到的,而且这也是难得的一次同学间长时间交流沟通的机会,在课程实际过程中发生许多欢乐的令人难忘的事,这无疑为以后的我留下了一个美好的回忆。

在完成运动控制课程设计后,我发现我还有许多不足,所学到的知识还远远不够,单片机的应用是如此的广泛,在以后的时间里我将继续对单片机方面的知识的学习。

最后,感谢老师在课程设计中给予的帮助,以及组员们的合作!

7参考文献

[1]刘凤君.正弦波逆变器[M].北京:

科学出版社,2002.

[2]李爱文,张承慧.现代逆变技术及其应用[M].北京:

科学出版社,2000.

[3]谢力华,苏彦民.正弦波逆变电源的数字控制技术.电力电子技术[J],2001[4]孟元东,娄承芝.基于dsPIC30F1010高频正弦波逆变器的研究,电力电子技术[J],2007

[5]罗泠,周永鹏等.DSP控制400Hz中频在线式不间断电源的研究,电力电子技术[J],

[6]苏玉刚等.电力电子技术[M].重庆:

重庆大学出版社,2003.

[7]张燕宾.SPWM变频调速应用技术.北京:

机械工业出版社,2005.

[8]廖东初,聂汉平.电力电子技术.湖北:

华中科技大学出版社,2007

[9]王兆安,黄俊.电力电子技术.北京:

机械工业出版社,2005

[10]阮毅,陈维均.运动控制技术北京:

清华大学出版社,2006

 

附录

1程序清单

#include"Fre.H"

#include"select.h"

#include//Stellaris系列芯片的内存地址映射表

#include//芯片通用类型的宏指令与类型定义

#include//芯片系统驱动控制模型定义

#include//芯片通用标准输入输出定义

#include//芯片启动模数转换的时所用的宏指令

#include//芯片用于模数转换驱动时头指令

#include//芯片用于中断分配的头指令

#include//芯片的终端控制模型定义

#include"watchdog.h"

#include"hw_watchdog.h"

#include"LED.H"

#defineSysCtlPeriEnableSysCtlPeripheralEnable//外围设备的使能

#defineSysCtlPeriDisableSysCtlPeripheralDisable//外围设备的不使能#defineGPIOPinTypeInGPIOPinTypeGPIOInput//标准输入输出的针类型

#defineGPIOPinTypeOutGPIOPinTypeGPIOOutput

#defineGPIOPinTypeODGPIOPinTypeGPIOOutputOD

#defineWdogStallEnableWatchdogStallEnable

#defineWdogReloadSetWatchdogReloadSet

#defineWdogIntEnableWatchdogIntEnable

#defineWdogIntClearWatchdogIntClear

#defineucharunsignedchar

unsignedlongTheSysClock=12000000UL;

voidADC_Init()

{

SysCtlPeriEnable(SYSCTL_PERIPH_ADC);//使能ADC模块

SysCtlADCSpeedSet(SYSCTL_ADCSPEED_125KSPS);//设置ADC采样率

ADCSequenceDisable(ADC_BASE,0);//禁止采样序列

ADCSequenceConfigure(ADC_BASE,//采样序列配置0,//采样序列编号

ADC_TRIGGER_PROCESSOR,//由处理器触发

0);//设置优先级

ADCSequenceStepConfigure(ADC_BASE,//采样步进设置

0,//采样序列编号

0,//设置步进

ADC_CTL_END|ADC_CTL_CH0);//通道设置从ADC0口读入数据

ADCSequenceEnable(ADC_BASE,0);//使能采样序列

}

voidwdogInit(void)

{

SysCtlPeriEnable(SYSCTL_PERIPH_WDOG);//使能看门狗模块WdogStallEnable(WATCHDOG_BASE);//使能调试器暂停看门狗计数WdogReloadSet(WATCHDOG_BASE,3000000UL);//设置看门狗值WdogIntEnable(WATCHDOG_BASE);//使能看门狗中断IntEnable(INT_WATCHDOG);//使能看门狗模块中断IntMasterEnable();//使能处理器中断

}

voidWatchdog_Timer_ISR(void)

{

WdogIntClear(WATCHDOG_BASE);//清除看门狗中断状态LED_Toggle(LED1);//反转LED

}

voidSystemInit(void)

{

SysCtlLDOSet(SYSCTL_LDO_2_75V);//配置PLL前须将LDO电压设置为2.75VAD转换必须的电压设置

SysCtlClockSet(SYSCTL_USE_PLL|//系统时钟设置,采用PLL

SYSCTL_OSC_MAIN|//主振荡器

SYSCTL_XTAL_6MHZ|//外接6MHz晶振

SYSCTL_SYSDIV_10);//分频结果为20MHz

TheSysClock=SysCtlClockGet();//获取系统时钟,单位:

Hz

GPIOD_Init();//通用输入输出端口D的初始化

GPIOG_Init();//通用输入输出端口G的初始化

FreInit();

ADC_Init();//数模转换模块的初始化

LED_Init(LED1);//初始化LED1灯

Lcminit();//液晶显示初始化

GPIOPinIntEnable(GPIO_PORTD_BASE,GPIO_PIN_1);//使能GPIOD的1号管脚中断

GPIOPinIntEnable(GPIO_PORTG_BASE,GPIO_PIN_5);//使能GPIOG的5号管脚中断

GPIOIntTypeSet(GPIO_PORTD_BASE,GPIO_PIN_1,GPIO_LOW_LEVEL);//GPIOD的1号管脚下降沿时产生中断信号

GPIOIntTypeSet(GPIO_PORTG_BASE,GPIO_PIN_5,GPIO_LOW_LEVEL);//GPIOG的5号管脚下降沿时产生中断信号

IntEnable(INT_GPIOD);//开GPIOD中断

IntEnable(INT_GPIOG);//开GPIOG中断

wdogInit();//看门狗初始化

IntMasterEnable();//开处理器中断

}

intmain(void)

{

SystemInit();//系统初始化

select();

unsignedlongulVal=0x00;//用来保存转换后的数字量

ucharVal;

while

(1)

{

ADCProcessorTrigger(ADC_BASE,0);//触发样本序列

while(HWREG(ADC_BASE+ADC_O_X_SSFSTAT)&0x00000100);//等待样本序列采集完成

ADCSequenceDataGet(ADC_BASE,0,&ulVal);//获取采集的结果ulVal=((ulVal*3000)/1024)/1000;//将结果进行转换单位mVVal=(uchar)ulVal;

vWrite8x16String("Thisisadis-",0,8,0);//写字符串

vWrite8x16String("playprogram.",2,8,0);

vWrite8x16String("Thecurrentv-",4,8,0);

//vWrite8x16String("oltageis:

4",6,8,0);

if(ulVal<1&&ulVal>=0)

{

vWrite8x16String("ol

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2