1、电力电子课程设计262020年4月19日文档仅供参考课程设计报告目录一 基本现状及意义1.1 国内外的研究现状和发展趋势:1.2 三相逆变器研究设计的意义:二 任务书要求2.1、设计目的:2.2、设计任务:三基本原理3.1.三相电压型逆变电路工作原理3.2.控制电路的设计四系统硬件设计4.1系统总体介绍4.2系统参数计算五仿真电路六仿真波形分析七实验总结一基本现状及意义1.1国内外的研究现状和发展趋势逆变技术的发展能够分为如下两个阶段:1956-1980年为传统发展阶段,这个阶段的特点是,开关器件以低速器件为主,逆变器的开关频率较低,波形改进以多重叠加法为主,体积重量较大,逆变效率低。1980
2、年到现在为高频化新技术阶段,开关器件以高速器件为主,逆变器开关频率高,波形改进以脉宽调制为主,体积重量小,逆变效率高。在PWM逆变器中,为了减小其体积重量,提高其功率密度,高频化是主要发展方向之一,但高频化也存在一些问题,如增加开关损耗和电磁干扰。为此提出两个解决办法,一是提高开关器件的速度,二是使逆变开关工作在软开关状态。20世纪80年代初,美国弗吉尼亚电力电子技术中心提出了准谐振变换技术,使软开关与PWM技术的结合成为可能。它的研究对于逆变器性能的提高和进一步推广应用,以及电力电子学技术的发展,都有十分重要的意义,是当前逆变器的发展方向之一。高频软开关逆变技术产生的背景是为了克服传统逆变器
3、的输出波形差,开关应力和EMI较大的缺点。在相同背景下,D.A.Nabae于1981年提出了多电平逆变技术,成为当前高压大功率逆变器的发展方向。它经过主电路改进,使所有逆变开关都工作在基频或低频,以达到减小开关应力,改进输出电压或电流波形的目的。总之,逆变技术的发展是在提高波形质量的背景下,随着电力电子技术、微电子技术和现代控制理论的发展而发展,进入二十一世纪,逆变技术正朝着高功率密度、高变换效率、高可靠性、无污染、智能化和集成化的方向发展。 1.2三相逆变器研究设计的意义(1)促进新能源的开发和利用随着电力电子技术的迅猛发展,逆变技术广泛应用于航空、航天、航海等国防领域和电力系统,交通运输、
4、邮电通信、工业控制等民用领域。特别是随着石油、煤和天然气等主要能源日益紧张,新能源的开发和利用越来越受到人们的重视。利用新能源的关键技术-逆变技术,能将蓄电池、太阳能电池和燃料电池等其它新能源转化的直流电能变换成交流电能与电网并网发电。因此,逆变技术在新能源的开发和利用领域有着至关重要的地位。(2)提高供电质量国民经济的高速发展和国内外能源供应日益紧张,电能的开发和利用显得更为重要。当前,国内外都在大力开发新能源,如太阳能发电、风力发电、潮汐发电等。一般情况下,这些新型发电装置输出不稳定的直流电,不能直接供给需要交流电的用户使用。为此,需要将直流电变换成交流电,需要时可并入市电电网。这种DC-
5、AC变换需要逆变技术来完成。用电设备对市电电网造成严重的污染,反过来,被污染的市电电网也会使用电设备工作不正常,用电设备之间经过市电电网相互干扰。为解决此问题,必须提高市电电网的供电质量,以逆变技术为基础的电力有源滤波器和电能质量综合补偿器能够净化市电电网,使其为用电设备提供高质量电能。逆变器是一种重要的DC/AC变换装置,而衡量其性能的一个重要指标就是输出电压波形质量,经过本项目的研究与实践,研究逆变器波形产生的方法、调制规律、以及其波形的评价指标,寻求高质量的脉宽波形的获得方法,对所学知识进行纵深挖掘,加深相关知识的理解。二任务书要求2.1、设计目的:图1出了三相逆变器主电路,经过本课题的
6、分析设计,能够加深学生对三相逆变电路的认识和理解。要求学生掌握三相逆变电路基本工作原理,功率器件、LC滤波器的参数设计并学会分析该电路的各种工作模态,要求学生熟悉三相逆变器的SPWM调制方案,而且学会用模拟电路或单片机实现三相逆变器的驱动信号的输出,熟悉桥式逆变器的驱动电路,建立硬件电路并进行开关调试。输入:220V DC,输出:100Vac/1.67A2.2、设计任务:1、给出符合输入输出要求的电路方案,给出各个模块的基本框图,并能设计其主要参数;2、根据输入输出的参数指标,计算功率电路中半导体器件电压电流等级,并给出所选器件的型号,设计变换器的脉冲变压器及滤波电容。3、给出控制电路的设计方
7、案,能够输出频率和占空比可调的脉冲源。4、应用protel软件作出线路图,建立硬件电路并调试。图1三相逆变器主电路三基本原理3.1三相电压型逆变电路工作原理逆变电路根据直流侧电源的性质的不同可分为两种:直流侧是电压源的称为电压型逆变电路;直流侧是电流源的称为电流型逆变电路。在本文中,我们主要讨论三相电压型逆变电路的基本构成、工作原理和特性,图3.1为其电路。 3.1三相电压型逆变电路下面,我们讨论一下三相全桥电压型逆变电路。在图3.1 所示电路中,电路的直流侧一般只有一个电容器就能够了,但为了方便分析,画作串联的两个电容器并标出假想中点。和单相半桥、全桥逆变电路相同,三相电压型桥式逆变电路的基
8、本工作方式也是180导电方式,即每个桥臂的导电角度为180,同一相(即同一半桥)上下两个臂交替导电,各相开始导电的角度以此相差120。这样,在任一瞬间,将有三个桥臂同时导通。可能是上面一个臂下面两个臂,也可能是上面两个臂下面一个臂同时导通。因为每次换流都是在同一相上下两个桥臂之间进行,因此也被称为纵向换流。3.2控制电路的设计3.2.1 SPWM控制的基本原理如图3.3(a)所示,我们将一个正弦波半波电压分成N等分,并把正弦曲线每一等份所包围的面积都用一个与其面积相等的等幅矩形脉冲来代替,且矩形脉冲的中点与相应正弦等份的中点重合,得到如图3.3(b)所示得脉冲列,这就SPWM波形。正弦波得另外
9、半波能够用相同得办法来等效。能够看出,该PWM波形的脉冲宽度是按正弦规律变化,称为SPWM波形。图3.3 SPWM波形根据采样控制理论,脉冲频率越高,SPWM波形便越接近正弦波。逆变器的输出电压为SPWM波形时,其低次谐波得到很好地抑制和消除,高次谐波又能很容易滤去,从而可得到崎变率极低的正弦波输出电压。SPWM控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等而宽度不相等的脉冲,用这些脉冲来代替正弦波或者其它所需要的波形。从理论上讲,在给出了正弦半波频率、幅值和半个周期内的脉冲数后,脉冲波形的宽度和间隔便能够准确计算出来。然后按照计算的结果控制电路中各开关器件的通断,就
10、能够得到所需要的波形。但在实际应用中,人们常采用正弦波与等腰三角波相交的办法来确定各矩形脉冲的宽度。等腰三角波上下宽度与高度成线性关系且左右对称,当它与任何一个光滑曲线相交时,即得到一组等幅而脉冲宽度正比该曲线函数值的矩形脉冲,这种方法称为调制方法。希望输出的信号为调制信号,把接受调制的三角波称为载波。当调制信号是正弦波时,所得到的便是SPWM波形。当调制信号不是正弦波时,也能得到与调制信号等效的PWM波形。3.3.2单极性和双极性SPWM控制方式单极性是指载波和调制波始终保持同极性的关系,在调制波信号的一个周期里,同一桥臂的上下两个功率管工作状态相互切换,分别工作在正弦调制波的半个周期。单极
11、性SPWM调制原理图如图3.4所示: 图3.4单极性调制原理图双极性SPWM的载波极性随时间而正负变化,和调制波的极性变化没有关系,载波信号的一个周期里,同一桥臂的上下两个功率管互相切换,在调制波的半个周期里始终处于按正弦脉宽调制规律互补开关的工作状态。双极性SPWM调制原理图如图3.5所示: 图3.5双极性调至原理图四系统硬件设计4.1系统总体介绍本次设计的目的是研制一种输入为220V的直流稳定电压,输出为100V,1.67A的交流稳定电压,输出功率较大的三相稳压电源。考虑到所设计的系统为大功率电源,因此我们在这考虑使用SPWM逆变技术,下图为所设计的系统框图。 直流输入 全桥逆变 输出滤波
12、 交流输出 控制电路 驱动电路该系统的工作原理是输入220V的直流电压,然后经SPWM全桥逆变,变成100V的SPWM电压,再经输出滤波电路滤波为100V,1.67A正弦波交流电压输出,另外,系统中CPU根据输出采样电压值来控制SPWM波发生器输出的SPWM波形参数,SPWM发生器产生的SPWM波经四个驱动隔离电路去驱动逆变电路,从而把整流滤波后得到的直流电逆变成稳定交流电。4.2系统参数计算 五.仿真电路MATLAB软件语言系统是当今流行的第四代计算机语言,由于它在科学计算、数据分析、系统建模与仿真、图形图像处理等不同领域的广泛应用以及自身的独特优势,当前MATLAB受到个研究领域的推崇和关
13、注。本文也采用MATLAB软件对研究结果进行仿真,以验证结果是否正确。建立仿真模型的步骤:1) 建立主电路的仿真模型2) 构造控制部分3) 完成波形观测及分析部分最终完成仿真模型如下图所示:500W三相逆变器开环主电路相开环控制电路500W三相逆变器闭环电路六仿真波形分析上图为电路开环输入时输出的交流电压为110V上图为电路开环输入时输出有效值上图为电路闭环输入时输出的交流电压为110V七实验总结本次课程设计,主要是进行仿真,做实物,学习了MATLAB软件构图,提升理论知识。在这次课程设计中,经过理论的学习理解和对原理图的仿真,自己对逆变器有一定的了解。在构造原理图时候,原件的不熟悉给我带来了
14、很大的困扰,我一个个在百度上查找,最终构成了原理图,当然收获也是巨大的,明白了一些原件在哪里能够寻找,也为以后能熟练使用MATLAB有了很大的帮助。制作完原理图,最难得莫过于计算参数,查阅了各种资料,慢慢知道了基本公式,参数算出来后,我们开始在MATLAB仿真,而参数值还是需需要有点调整,经过调整后,输出的波形也接近完美。经过了这些天,我明白了要去做好一个东西最重要的是心态,可能在你拿到题目时会觉得很困难,可是只要你充满信心,认真去思考,一步一个脚印去实现它,你就肯定会完成课程实践的。在实践的过程中,我也遇到了很多困难,发现我自己在学习课本上知识的时候并没有深刻的去理解,掌握的只是很浅显的东西
15、,因此在时遇到很多以前在书本上没有遇到过的实际的问题,我就不知道该如何做了,特别是画图的时候,只要一个小小的错误,就无法成功的完成实践的要求。我在以后的学习过程中一定会注意不能仅仅局限于书本上的知识,要懂得知识的扩展。同时我也认识到了理论与实际相结合的重要性,只有把所学的理论知识成功的应用到实践中去,我们才能学到很多课本上没有的知识,才能了解的更多的知识,那么我们的知识面才会拓宽,我们才能成功的提高自己的实际应用能力。在这次课程设计中,我也真正体会到合作的是非常重要的,当遇到问题时,能够找同学讨论一下,如果太难的问题还能够去问老师,我们会有很大收获的。我觉得做每一件事一定要持之以恒,不能遇到困
16、难就轻易放弃,半途而废,我们要正视这些困难,用科学的态度去解决这些困难,获得属于自己的成功。在原题仿真无误的情况下我们也尝试的焊了电路,可是实物并不是很理想。附录:SA4828与单片机接口的原理图如图3.11所示,采用ARM单片机编程具体程序如下:#include stm32f10x.h#include pwm.h#include adc.h#include dma.h#include delay.h u32 pin=1800; float zhan; float adcy; float adcx; float temp0; float temp1;/* Private typedef -*/
17、GPIO_InitTypeDef GPIO_InitStructure;TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_OCInitTypeDef TIM_OCInitStructure;TIM_BDTRInitTypeDef TIM_BDTRInitStructure;NVIC_InitTypeDef NVIC_InitStructure;/* Private define -*/* Private macro -*/* Private variables -*/u16 TimerPeriod = 3600;u16 DutyFactor =
18、 50;/* Private function prototypes -*/* Private functions -*/void RCC_Configure(void);void GPIO_Configure(void);void PWM_Configure(void);/* * brief Main program. * param None * retval None */void RCC_Configure() RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO
19、, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4 | RCC_APB1Periph_TIM3,ENABLE); void GPIO_Configure() /* GPIOA配置:通道PA.6和PA.7为 输出引脚*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init
20、(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure);void PWM_Configure() /* 通道1,2和3配置在PWM模式 */ TIM_OCInitStructure.TIM_OCMode = TIM
21、_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; /TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable; 互补输出使能,主要用于高级定时器 TIM_OCInitStructure.TIM_Pulse = DutyFactor * 7200 / 100; /设置占空比 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;/这里的4行代码就是设置PWM的空闲电平、
22、波形方式的!一开始自己一不小心搞成了都高的死区,这里是都低电平的死区 / TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High; 互补输出端 /TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set; /TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset; TIM_OC1Init(TIM3, &TIM_OCInitStructure); /初始化通道1 TIM_OC2Init(TIM3, &TIM_OC
23、InitStructure); /初始化通道2 TIM_OC3Init(TIM3, &TIM_OCInitStructure); /初始化通道3 /* 自动输出使能,中断,死区相关的设置*/ TIM_BDTRInitStructure.TIM_OSSRState = TIM_OSSRState_Enable; TIM_BDTRInitStructure.TIM_OSSIState = TIM_OSSIState_Enable; TIM_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_1; TIM_BDTRInitStructure.TIM_Dea
24、dTime = 12; /死区时间为 12/SYSTEMCLK (ns) TIM_BDTRInitStructure.TIM_Break = TIM_Break_Disable; /关闭外部break功能,当然在产品中最好加入这个保护,蛮好用的。 TIM_BDTRInitStructure.TIM_BreakPolarity = TIM_BreakPolarity_High; /中断时配置端口输出高电平 TIM_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable; /自动输出使能 TIM_BDTRConfig(T
25、IM3, &TIM_BDTRInitStructure); TIM_CtrlPWMOutputs(TIM3, ENABLE); /* 主输出启用 */ /PWM输出使能int main(void) u32 ad_zhigh=500; u32 ad_phigh=7200; u32 p_high=3600; RCC_Configure(); delay_init(72); GPIO_Configure(); TIM_Configure(3600); PWM_Configure(); NVIC_Configure(); TIM_Cmd(TIM3, ENABLE); /* TIM3的计数器使能 */
26、TIM_Cmd(TIM4, ENABLE); /* TIM4的计数器使能 */ DMA_INIT(); ADC_INIT(); while (1) u32 n; u32 Get_Adcx_Average, Get_Adcy_Average; u32 temp_val=0; u32 temp_val0=0; u8 t,i; for(t=0;t20;t+) /占空比取平均值 temp_val+=ADC_ConvertedValue0; /delay_us(1); Get_Adcx_Average= temp_val/20; temp_val=0; for(i=0;i20;i+) /采样频率取平均值
27、 temp_val0+=ADC_ConvertedValue1; / delay_us(10); Get_Adcy_Average= temp_val0/20; temp_val0=0;adcx=Get_Adcx_Average;adcy=Get_Adcy_Average;temp0=(adcx/4096.0);temp1=(adcy/4096.0)*7200;/ if(ad_zhigh-10)temp0&temp07200) /限制频率范围temp1=7200;n=temp1;if(n900)/限制频率范围temp1=900; if(ad_phigh-150)temp1&temp1(ad_phigh-150)/限制频率波动范围 temp1=ad_phigh; ad_phigh=temp1; pin=temp1;if(pin(p_high-150)|(p_high+150)pin) /限制刷新动态范围 TIM_TimeBaseStructure.TIM_Period=1; /自动重装载寄存器的值 TIM_TimeBaseStructure.TIM_Prescaler=pin-1; /时钟预分频数 TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); p_high=pin; delay_ms(100);