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

上传人:飞****2 文档编号:51935588 上传时间:2022-10-20 格式:DOC 页数:24 大小:279KB
返回 下载 相关 举报
三相电压型SPWM逆变器设计.doc_第1页
第1页 / 共24页
三相电压型SPWM逆变器设计.doc_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《三相电压型SPWM逆变器设计.doc》由会员分享,可在线阅读,更多相关《三相电压型SPWM逆变器设计.doc(24页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、三相电压型SPWM逆变器设计摘要: 本次设计采用EasyARM1138开发板,设计了一个基于新型32位微控制器LM3S1138的可调频率中频逆变电源,即克服了传统模拟逆变器电路复杂、灵活性差、系统不稳定等缺点,又兼具普通单片机控制系统的低成本和DSP控制系统的高性能等优点,有效解决了特种电源设计中存在的成本和性能矛盾问题,同时也可应用于对电源频率有不同要求的场合。本设计进行了硬件电路的模块划分、微控制器引脚资源的分配、具体单元电路的设计等。硬件电路由五大模块即控制器模块、功率器件驱动模块、逆变模块、保护模块和显示模块构成,其中控制器模块由EasyARM1138开发板构成,完成SPWM脉宽调制信

2、号产生、LCD显示信号的输出及A/D转换等工作;驱动模块由两片IR2110及外围电路组成,完成SPWM信号的隔离放大并驱动功率开关管;逆变模块由四片绝缘栅双极晶体管组成的全桥电路和LC低通滤波器构成,在SPWM信号的控制下完成外部直流电压向纯正弦波电压的转换;保护模块由LM393及外围电路构成,实现正弦波输出信号的过压和过流保护;显示模块由LCD12864及辅助电路组成,实现相关数据的显示输出。关键词: LM3S1138 SPWM 逆变器 matlab目录1 设计内容31.1 设计目的及意义31.2 设计步骤31.3 内容要求32 设计方案42.1 方案选择42.2 方案论证42.3 设计重点

3、难点43 系统的硬件设计53.1 整体方案设计53.2 主电路63.3 抗干扰电路73.4 驱动电路73.5 逆变电路84软件设计94.1 编程思路94.2 流程图115 仿真136心得体会16附录181 程序清单182 原理图24 1 设计内容1.1 设计目的及意义(1)训练学生正确地应用运动控制系统,培养解决工业控制、工业检测等领域具体问题的能力;(2)通过课程设计,熟悉运动控制系统应用系统开发、研制的过程,软、硬件设计的工作方法、工作内容、工作步骤;(3)对学生进行基本技能训练,例如组成系统、编程、调试、绘图等,使学生理论联系实际,提高动手能力和分析问题、解决问题的能力。1.2 设计步骤

4、(1)设计方案的选择及论证;(2)设计电路的整体框架;(3)系统软件及硬件的设计;(4)对系统进行仿真并分析;1.3 内容要求(1)画出控制电路和主电路原理图;(2)画出程序流程图;(3)写课程设计论文,附有原理图、流程图、程序清单,内容要正确,概念要清楚,文字要通顺。2 设计方案21 方案选择本设计选用EsayARM1138开发板,以LM3S1138为控制核心,辅以扩展的键盘及显示电路和SPWM逆变电路组成完整的系统。根据采样控制理论,由LM3S1138输出一系列周期性变化的等幅不等宽脉冲,控制IGBT功率开关管的导通和截止,使逆变器输出端获得一系列宽度不等的矩形脉冲波。输出的信号经低通滤波

5、器滤波后,即可得到所需要的正弦波。改变调制脉冲的宽度可以控制输出电压的幅值,改变调制周期可以控制输出电压的频率,从而达到使逆变器的输出电压和幅值同时可调的目的。2.2方案论证在逆变器电路的设计中,控制方法是核心技术。早期的控制方法使得输出为矩形波,谐波含量较高,滤波困难,而SPWM技术较好地克服了这些缺点。本设计室基于单片机来实现SPWM,此方法控制电路简单可靠,利用软件产生SPWM波,减轻了对硬件的要求,且成本低,受外界干扰小。2.3 设计重点难点完成本方案设计的重点和难点有以下几点: LM3S1138的GPIO口分配和驱动函数的调用 LCD显示模块的驱动和相关数据的显示 不同幅值、不同频率

6、信号的正弦脉宽数据表的设计3 系统的硬件设计3.1整体方案设计本系统由电源模块、控制模块、逆变模块、键盘和显示模块、输出及保护电路等5大部分组成,设计系统的总体结构框图如图3.1所示。全桥逆变低通滤波LM3S1138最小系统驱动输出电压采样正弦波输出LCD显示键盘直流供电图3.1系统总体结构框图 电源模块:根据实验室现有的条件,本系统的电源由两台稳压电源提供3路直流电压。控制模块:由EasyARM1138开发板构成,运行系统程序并通过扩展GPIO口控制自主设计的各子模块工作。逆变模块:由2片驱动芯片IR2110、4只IGBT管FGA25N120AN和LC低通滤波器及外围辅助电路构成,完成DC/

7、AC的逆变、电压变换并得到需要的正弦波电压输出。键盘和显示模块:由3个按键开关和1个可显示4行、16列字符的LCD显示器12864构成。输出和保护电路模块:由1个2A保险丝、4个并在IGBT管集射极两端的反向偏置二极管和LM393及辅助电路组成的比较电路构成。完成系统的过流、过压及IGBT管的瞬间过流保护工作。32 主电路图3.2是SPWM逆变器的主电路,图中VlV6是逆变器的六个功率开关器件,各由一个续流二极管反并联,整个逆变器由恒值直流电压U供电。一组三相对称的正弦参考电压信号由参考信号发生器提供,其频率决定逆变器输出的基波频率,应在所要求的输出频率范围内可调。参考信号的幅值也可在一定范围

8、内变化,决定输出电压的大小。三角载波信号Uc是共用的,分别与每相参考电压比较后,给出“正”或“零”的饱和输出,产生SPWM脉冲序列波 Uda,Udb,Udc作为逆变器功率开关器件的驱动控制信号。3.2电源电路当UruUc时,给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种电平组成。防直通的死区时间同一相上下两臂的驱动信号互补,为防止上下臂直通而造成短路,留一小

9、段上下臂都施加关断信号的死区时间。死区时间的长短主要由开关器件的关断时间决定。死区时间会给输出的PWM波带来影响,使其稍稍偏离正弦波。3.3抗干扰电路图3.3光电隔离器本设计采用了光电隔离器,光电隔离器可以很简单将主回路的强电和控制回路的弱电相隔离,使主回路和控制回路更好的结合。光电隔离器的电路示意图如图3.3所示。 3.4驱动电路 由于LM3S1138产生的SPWM信号不能直接驱动IGBT,故逆变桥的驱动采用专用芯片IR2110。IR2110是一种双通道、栅极驱动、高压高速、单片式集成功率驱动模块,具有体积小(DIP14)、集成度高(可驱动同一桥臂两路)、响应快(典型ton/toff=120

10、/94 ns)、偏置电压高(600 V)、驱动能力强等特点,同时还具有外部保护封锁端口12。IR2110采用CMOS工艺制作,逻辑电源电压范围为5 V20 V,适应TTL或CMOS逻辑信号输入,具有独立的高端和低端2个输出通道。由于逻辑信号均通过电平耦合电路连接到各自的通道上,容许逻辑电路参考地(VSS)与功率电路参考地(COM)之间有-5 V+5 V的偏移量,并且能屏蔽小于50 ns的脉冲,这些特点使得IR2110具有较理想的抗噪声效果。采用CMOS施密特触发输入,可以进一步提高电路抗干扰能力13。IR2110自身的保护功能非常完善:对于低压侧通道,利用2片IR2110驱动全桥逆变电路的电路

11、图如图3.4所示 图3.4 全桥驱动电路为改善PWM控制脉冲的前后沿陡度并防止振荡,减小IGBT集电极的电压尖脉冲,一般应在栅极串联十几欧到几百欧的限流电阻。IR2110的最大不足是不能产生负偏压,由于密勒效应的作用,在开通与关断时,集电极与栅极间电容上的充放电电流很容易在栅极上产生干扰。针对这一点,本文在驱动电路中的功率管栅极限流电阻R1、R2上反向并联了二极管D4、D5。3.5 逆变电路 逆变电路的作用是将直流电压转换成梯形脉冲波,经低通滤波器滤波后,从而使负载上得到的实际电压为正弦波,逆变电路是由4个IGBT管(VT1、VT2、VT3、VT4)组成的全桥式逆变电路组成,如图3.5所示。

12、图3.5 逆变电路4软件设计软件设计是逆变控制电路设计的重要组成部分,它决定了逆变器输出的特性,如电压调节范围及稳定程度,理想的正弦波输出电压、保护功能的完善、可靠性等等。逆变器程序主要分为SPWM脉宽调制部分,LCD12864显示部分,ADC转换部分,看门狗程序部分。41编程思路本设计将一个周期T的信号分成720个点(按X轴等分),两点间的时间间隔由EasyRAM1138通过定时器中断产生。因此,首先需建立正弦脉宽数据表,由EasyARM1138初始化时算好,将其按一定的格式(即考虑相序及同一相中的脉宽次序等)存入片内的FLASH中,建立好数据指针,以便按一定的寻址方式查询。SPWM实际上就

13、是用一组经过调制的幅值相等、宽度不等的脉冲信号代替调制信号,用开关量代替模拟量。调制后的信号中除了含有调制信号外,还含有频率很高的载波频率及载波倍频附近的频率分量,但几乎不含其他谐波,特别是接近基波的低次谐波。因此载波频率也即SPWM的开关频率越高,谐波含量越少。这从SPWM的原理可以直观地看出。当载波频率高时,半周期内开关次数越多,把期望的正弦波分段也越多,SPWM的基波就越接近期望的正弦波14。但是,SPWM的载波频率除了受功率器件的允许开关频率制约外,SPWM的开关频率也不宜过高,这是因为开关器件工作频率提高,开关损耗和换流损耗会随之增加。另外,开关瞬间电压或电流的急剧变化形成很大的du

14、/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 正弦波脉冲宽度调制波形示意图关于载波频率和调制波频率的

15、计算:EasyARM的时钟频率20MHz,一个机器周期为0.5us,载波频率为8KHz90KHz之间,将一个输出周期T的信号分成1440个点(按X轴等分),两点间的时间间隔由EasyARM的定时器通过计数中断实现,由于EasyARM的内部定时器有PWM的设置,通过在程序中设置定时器的计数值来控制频率,同过设置占空的的计数值来调整脉冲的占空比,这样就保证了输出方波的脉冲宽度按正弦规律变化。逆变后的方波经滤波后可以得到纯正弦波脉冲,调制频率为14.4KHz1440KHz,一个周期分为1440个调制脉宽,每个周期时间为:1440*(1/14.4KHz1/144KHz)=0.1 s0.01(s),使输

16、出频率为10100Hz。表4-1 正弦脉冲的度数与计数值之间的一个换算表(部分)42流程图首先对程序进行初始化,初始化之后程序就进入了中断,连续读取720个PWM的匹配值产生0-180度的SPWM。之后关闭此定时器和中断,并打开TIMER0和它的定时中断,同样的连续读取720个PWM的匹配值产生180-360度的SPWM。主程序中,在while(1)中不断的扫描按键。通过判断是KEY1还是KEY2按下来提高和降低频率。正弦波频率的改变范围是10100Hz。SPWM调制程序流程图如图4.3所示: 开始系统初始化调用默认数据表NKey1按下?YNKey2按下?频率增加Y频率减小图4.3 SPWM调

17、制程序流程图 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);

18、title(A相输出电压Ua波形);subplot(3,1,3);plot(inv.time,inv.signals(3).values);axis(0 0.04 -300 300);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控制方式三相逆

19、变电路输出相电压的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逆变器设计就要结束了,虽然课程设计的时间比较短,但我却收获了很多值得总结和值得我铭记于心的知识和认识。开始课程设计的时候,由于我们学的都是一些嵌入

20、式方面的理论知识,牵涉到实际的我们几乎一无所知,所以我们组的成员都不知道该怎么入手,我们通过请教老师,以及上网查询等通道,终于顺利的完成数据采样系统的各方面设计。这样一个过程使我的理论知识得到了试验和应用,使我的理论知识得到了进一步的提高。总之,这次课程设计不但让我学到了很多的东西,提高和巩固了单片机、matlab等方面的知识,同时也增强了我的动手能力,这些并不是在课堂上可以学到的,而且这也是难得的一次同学间长时间交流沟通的机会,在课程实际过程中发生许多欢乐的令人难忘的事,这无疑为以后的我留下了一个美好的回忆。在完成运动控制课程设计后,我发现我还有许多不足,所学到的知识还远远不够,单片机的应用

21、是如此的广泛,在以后的时间里我将继续对单片机方面的知识的学习。最后,感谢老师在课程设计中给予的帮助,以及组员们的合作!7参考文献 1 刘凤君.正弦波逆变器M.北京:科学出版社,2002.2 李爱文,张承慧.现代逆变技术及其应用M.北京:科学出版社,2000.3 谢力华,苏彦民.正弦波逆变电源的数字控制技术.电力电子技术J,2001 4 孟元东,娄承芝.基于dsPIC30F1010高频正弦波逆变器的研究,电力电子技术J,20075 罗泠,周永鹏等.DSP控制400Hz中频在线式不间断电源的研究,电力电子技术J,6 苏玉刚等电力电子技术M重庆:重庆大学出版社,20037 张燕宾SPWM变频调速应用

22、技术北京:机械工业出版社,20058 廖东初,聂汉平.电力电子技术.湖北:华中科技大学出版社,20079 王兆安,黄俊.电力电子技术.北京:机械工业出版社,200510 阮毅,陈维均.运动控制技术 北京:清华大学出版社,2006附录1 程序清单 #include Fre.H#include select.h#include /Stellaris系列芯片的内存地址映射表#include /芯片通用类型的宏指令与类型定义#include /芯片系统驱动控制模型定义#include /芯片通用标准输入输出定义#include /芯片启动模数转换的时所用的宏指令#include /芯片用于模数转换驱动

23、时头指令#include /芯片用于中断分配的头指令#include /芯片的终端控制模型定义#include watchdog.h#include hw_watchdog.h#include LED.H#define SysCtlPeriEnable SysCtlPeripheralEnable /外围设备的使能#define SysCtlPeriDisable SysCtlPeripheralDisable/外围设备的不使能#define GPIOPinTypeIn GPIOPinTypeGPIOInput/标准输入输出的针类型#define GPIOPinTypeOut GPIOPinT

24、ypeGPIOOutput#define GPIOPinTypeOD GPIOPinTypeGPIOOutputOD#define WdogStallEnableWatchdogStallEnable#define WdogReloadSetWatchdogReloadSet#define WdogIntEnableWatchdogIntEnable#define WdogIntClearWatchdogIntClear#define uchar unsigned charunsigned long TheSysClock = UL;void ADC_Init() SysCtlPeriEnab

25、le(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 , / 设置步进 A

26、DC_CTL_END | ADC_CTL_CH0); / 通道设置 从ADC0口读入数据 ADCSequenceEnable(ADC_BASE , 0); / 使能采样序列void wdogInit ( void )SysCtlPeriEnable( SYSCTL_PERIPH_WDOG ) ;/ 使能看门狗模块WdogStallEnable ( WATCHDOG_BASE ) ;/ 使能调试器暂停看门狗计数WdogReloadSet ( WATCHDOG_BASE , UL ) ;/ 设置看门狗值WdogIntEnable ( WATCHDOG_BASE ) ;/使能看门狗中断IntEnab

27、le ( INT_WATCHDOG ) ;/使能看门狗模块中断IntMasterEnable ( ) ;/使能处理器中断void Watchdog_Timer_ISR ( void )WdogIntClear ( WATCHDOG_BASE ) ;/ 清除看门狗中断状态LED_Toggle(LED1); / 反转LED void SystemInit(void) SysCtlLDOSet(SYSCTL_LDO_2_75V); / 配置PLL前须将LDO电压设置为2.75V AD转换必须的电压设置SysCtlClockSet(SYSCTL_USE_PLL | / 系统时钟设置,采用PLL SYS

28、CTL_OSC_MAIN | / 主振荡器 SYSCTL_XTAL_6MHZ | / 外接6MHz晶振 SYSCTL_SYSDIV_10); / 分频结果为20MHzTheSysClock = SysCtlClockGet(); / 获取系统时钟,单位:Hz GPIOD_Init(); / 通用输入输出端口D的初始化 GPIOG_Init(); / 通用输入输出端口G的初始化 FreInit(); ADC_Init(); / 数模转换模块的初始化 LED_Init(LED1); / 初始化LED1灯 Lcminit(); / 液晶显示初始化 GPIOPinIntEnable(GPIO_PORT

29、D_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中断

30、IntEnable(INT_GPIOG); /开GPIOG中断 wdogInit( ); /看门狗初始化 IntMasterEnable ( ); /开处理器中断int main(void) SystemInit(); /系统初始化 select(); unsigned long ulVal = 0x00; /用来保存转换后的数字量 uchar Val; while(1) ADCProcessorTrigger(ADC_BASE , 0);/触发样本序列 while ( HWREG(ADC_BASE+ADC_O_X_SSFSTAT) & 0x ); /等待样本序列采集完成 ADCSequenc

31、eDataGet(ADC_BASE , 0 , &ulVal); /获取采集的结果 ulVal = (ulVal * 3000) / 1024)/1000;/将结果进行转换单位mV Val=(uchar)ulVal; vWrite8x16String(This is a dis- ,0, 8,0); /写字符串 vWrite8x16String(play program. , 2, 8,0); vWrite8x16String(The current v-, 4, 8,0); /vWrite8x16String(oltage is : 4, 6, 8,0); if(ulVal=0) vWrit

32、e8x16String(oltage is : 0, 6, 8,0); if(ulVal=1) vWrite8x16String(oltage is : 1, 6, 8,0); if(ulVal=2) vWrite8x16String(oltage is : 2, 6, 8,0); if(ulVal=3) vWrite8x16String(oltage is : 3, 6, 8,0); if(ulVal=4) vWrite8x16String(oltage is : 4, 6, 8,0); if(ulVal=5) vWrite8x16String(oltage is : 5, 6, 8,0);

33、 if(ulVal=6) vWrite8x16String(oltage is : 6, 6, 8,0); if(ulVal=7) vWrite8x16String(oltage is : 7, 6, 8,0); if(ulVal=8) vWrite8x16String(oltage is : 8, 6, 8,0); if(ulVal=9) vWrite8x16String(oltage is : 9, 6, 8,0); if(ulVal=10) vWrite8x16String(oltage is : 10, 6, 8,0); if(ulVal=11) vWrite8x16String(oltage is : 11, 6, 8,0); if(ulVal=12|ulVal0) vWrite8x16String(oltage is : UV , 6, 8,0); /vWrite8x16Character(Val,6,(12*8+8),0); Delay(1000 * (TheSysClock / 4000); Lcmcls(); 2 原理图

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com