设 计 用 纸
三相电压型SPWM逆变器设计 摘要: 本次设计采用EasyARM1138开发板,设计了一个基于新型32位微控制器LM3S1138的可调频率中频逆变电源,即克服了传统模拟逆变器电路复杂、灵活性差、系统不稳定等缺点,又兼具普通单片机控制系统的低成本和DSP控制系统的高性能等优点,有效解决了特种电源设计中存在的成本和性能矛盾问题,同时也可应用于对电源频率有不同要求的场合。 本设计进行了硬件电路的模块划分、微控制器引脚资源的分配、具体单元电路的设计等。硬件电路由五大模块即控制器模块、功率器件驱动模块、逆变模块、保护模块和显示模块构成,其中控制器模块由EasyARM1138开发板构成,完成SPWM脉宽调制信号产生、LCD显示信号的输出及A/D转换等工作;驱动模块由两片IR2110及外围电路组成,完成SPWM信号的隔离放大并驱动功率开关管;逆变模块由四片绝缘栅双极晶体管组成的全桥电路和LC低通滤波器构成,在SPWM信号的控制下完成外部直流电压向纯正弦波电压的转换;保护模块由LM393及外围电路构成,实现正弦波输出信号的过压和过流保护;显示模块由LCD128及辅助电路组成,实现相关数据的显示输出。 关键词: LM3S1138 SPWM 逆变器 matlab - 1 -
教师批阅
课 程
设 计 用 纸
目录 1 设计内容 ........................................................................................................... - 3 - 1.1 设计目的及意义 .................................................................................... - 3 - 1.2 设计步骤 ................................................................................................ - 3 - 1.3 内容要求 ................................................................................................ - 3 - 2 设计方案 ........................................................................................................... - 4 - 2.1 方案选择 ................................................................................................ - 4 - 2.2 方案论证 ................................................................................................ - 4 - 2.3 设计重点难点 ........................................................................................ - 4 - 3 系统的硬件设计 ............................................................................................... - 5 - 3.1 整体方案设计 ........................................................................................ - 5 - 3.2 主电路 .................................................................................................... - 6 - 3.3 抗干扰电路 ............................................................................................ - 7 - 3.4 驱动电路 ................................................................................................ - 7 - 3.5 逆变电路 ................................................................................................ - 8 - 4软件设计 ............................................................................................................ - 9 - 4.1 编程思路 ................................................................................................ - 9 - 4.2 流程图 .................................................................................................. - 11 - 5 仿真 ................................................................................................................. - 13 - 6心得体会 .......................................................................................................... - 16 - 附录 ..................................................................................................................... - 18 - 1 程序清单 .................................................................................................. - 18 - 2 原理图 ...................................................................................................... - 24 - - 2 -
教师批阅
课 程
设 计 用 纸
1 设计内容 1.1 设计目的及意义 (1)训练学生正确地应用运动控制系统,培养解决工业控制、工业检测等领域具体问题的能力; (2)通过课程设计,熟悉运动控制系统应用系统开发、研制的过程,软、硬件设计的工作方法、工作内容、工作步骤; (3)对学生进行基本技能训练,例如组成系统、编程、调试、绘图等,使学生理论联系实际,提高动手能力和分析问题、解决问题的能力。 1.2 设计步骤 (1)设计方案的选择及论证; (2)设计电路的整体框架; (3)系统软件及硬件的设计; (4)对系统进行仿真并分析; 1.3 内容要求 (1)画出控制电路和主电路原理图; (2)画出程序流程图; (3)写课程设计论文,附有原理图、流程图、程序清单,内容要正确,概念要清楚,文字要通顺。 - 3 -
教师批阅
课 程
设 计 用 纸
2 设计方案 2.1 方案选择 本设计选用EsayARM1138开发板,以LM3S1138为控制核心,辅以扩展的键盘及显示电路和SPWM逆变电路组成完整的系统。根据采样控制理论,由LM3S1138输出一系列周期性变化的等幅不等宽脉冲,控制IGBT功率开关管的导通和截止,使逆变器输出端获得一系列宽度不等的矩形脉冲波。输出的信号经低通滤波器滤波后,即可得到所需要的正弦波。改变调制脉冲的宽度可以控制输出电压的幅值,改变调制周期可以控制输出电压的频率,从而达到使逆变器的输出电压和幅值同时可调的目的。 2.2方案论证 在逆变器电路的设计中,控制方法是核心技术。早期的控制方法使得输出为矩形波,谐波含量较高,滤波困难,而SPWM技术较好地克服了这些缺点。 本设计室基于单片机来实现SPWM,此方法控制电路简单可靠,利用软件产生SPWM波,减轻了对硬件的要求,且成本低,受外界干扰小。 2.3 设计重点难点 完成本方案设计的重点和难点有以下几点: ① LM3S1138的GPIO口分配和驱动函数的调用 ② LCD显示模块的驱动和相关数据的显示 ③ 不同幅值、不同频率信号的正弦脉宽数据表的设计 - 4 -
教师批阅
课 程
设 计 用 纸
3 系统的硬件设计 3.1整体方案设计 本系统由电源模块、控制模块、逆变模块、键盘和显示模块、输出及保护电路等5大部分组成,设计系统的总体结构框图如图3.1所示。 全桥逆变 低通滤波 驱动 LM3S1138 最小系统 输出 电压 采样 正 弦 波输 出 直流供电 键盘 LCD显示 图3.1系统总体结构框图 电源模块:根据实验室现有的条件,本系统的电源由两台稳压电源提供3路直流电压。控制模块:由EasyARM1138开发板构成,运行系统程序并通过扩展GPIO口控制自主设计的各子模块工作。逆变模块:由2片驱动芯片IR2110、4只IGBT管FGA25N120AN和LC低通滤波器及外围辅助电路构成,完成DC/AC的逆变、电压变换并得到需要的正弦波电压输出。键盘和显示模块:由3个按键开关和1个可显示4行、16列字符的LCD显示器128构成。输出和保护电路模块:由1个2A保险丝、4个并在IGBT管集射极两端的反向偏置二极管和LM393及辅助电路组成的比较电路构成。完成系统的过流、过压及IGBT管的瞬间过流保护工作。
- 5 -
教师批阅
课 程
设 计 用 纸
3.2 主电路 图3.2是SPWM逆变器的主电路,图中Vl—V6是逆变器的六个功率开关器件,各由一个续流二极管反并联,整个逆变器由恒值直流电压U供电。一组三相对称的正弦参考电压信号由参考信号发生器提供,其频率决定逆变器输出的基波频率,应在所要求的输出频率范围内可调。参考信号的幅值也可在一定范围内变化,决定输出电压的大小。三角载波信号Uc是共用的,分别与每相参考电压比较后,给出“正”或“零”的饱和输出,产生SPWM脉冲序列波 Uda,Udb,Udc作为逆变器功率开关器件的驱动控制信号。 3.2电源电路 当Uru - 6 - 教师批阅 课 程 设 计 用 纸 防直通的死区时间同一相上下两臂的驱动信号互补,为防止上下臂直通而造成短路,留一小段上下臂都施加关断信号的死区时间。死区时间的长短主要由开关器件的关断时间决定。死区时间会给输出的PWM波带来影响,使其稍稍偏离正弦波。 3.3抗干扰电路 本设计采用了光电隔离器,光电隔离器可以很简单将主回路的强电和控制回路的弱电相隔离,使主回路和控制回路更好的结合。光电隔离器的电路示意图如图3.3所示。 图3.3光电隔离器 3.4驱动电路 由于LM3S1138产生的SPWM信号不能直接驱动IGBT,故逆变桥的驱动采用专用芯片IR2110。IR2110是一种双通道、栅极驱动、高压高速、单片式集成功率驱动模块,具有体积小(DIP14)、集成度高(可驱动同一桥臂两路)、响应快(典型ton/toff=120/94 ns)、偏置电压高(<600 V)、驱动能力强等特点,同时还具有外部保护封锁端口[12]。 IR2110采用CMOS工艺制作,逻辑电源电压范围为5 V~20 V,适应TTL或CMOS逻辑信号输入,具有的高端和低端2个输出通道。由于逻辑信号均通过电平耦合电路连接到各自的通道上,容许逻辑电路参考地(VSS)与功率电路参考地(COM)之间有-5 V~+5 V的偏移量,并且能屏蔽小于50 ns的脉冲,这些特点使得IR2110具有较理想的抗噪声效果。采用CMOS施密特触发输入,可以进一步提高电路抗干扰能力[13]。IR2110自身的保护功能非常完善:对于 - 7 - 教师批阅 课 程 设 计 用 纸 低压侧通道,利用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 逆变电路 - 8 - 教师批阅 课 程 设 计 用 纸 4软件设计 软件设计是逆变控制电路设计的重要组成部分,它决定了逆变器输出的特性,如电压调节范围及稳定程度,理想的正弦波输出电压、保护功能的完善、可靠性等等。 逆变器程序主要分为SPWM脉宽调制部分,LCD128显示部分,ADC转换部分,看门狗程序部分。 4.1 编程思路 本设计将一个周期T的信号分成720个点(按X轴等分),两点间的时间间隔由EasyRAM1138通过定时器中断产生。因此,首先需建立正弦脉宽数据表,由EasyARM1138初始化时算好,将其按一定的格式(即考虑相序及同一相中的脉宽次序等)存入片内的FLASH中,建立好数据指针,以便按一定的寻址方式查询。 SPWM实际上就是用一组经过调制的幅值相等、宽度不等的脉冲信号代替调制信号,用开关量代替模拟量。调制后的信号中除了含有调制信号外,还含有频率很高的载波频率及载波倍频附近的频率分量,但几乎不含其他谐波,特别是接近基波的低次谐波。因此载波频率也即SPWM的开关频率越高,谐波含量越少。这从SPWM的原理可以直观地看出。当载波频率高时,半周期内开关次数越多,把期望的正弦波分段也越多,SPWM的基波就越接近期望的正弦波[14]。 但是,SPWM的载波频率除了受功率器件的允许开关频率制约外,SPWM的开关频率也不宜过高,这是因为开关器件工作频率提高,开关损耗和换流损耗会随之增加。另外,开关瞬间电压或电流的急剧变化形成很大的du/dt或di/dt,会产生强的电磁干扰;高du/dt、di/dt还会在线路和器件的分布电容和电感上引起冲击电流和尖峰电压;这些也会因频率提高而变得严重。 - 9 - 教师批阅 课 程 设 计 用 纸 综上所述,SPWM的开关频率的选择应综合考虑各个方面的因素,本设计实际采用的SPWM开关频率,也即IGBT的开关频率为18MHz,这是一个折中的选择。 设置EasyARM的频率为6MHz,分频后为20MHz。0-180度由定时器TIMER0的TIMA(对应的为CPP1)输出0有效,180-360由TIMER1的TIMB(对应的为CPP3)输出0有效,两脚轮流输出脉宽调制的正弦半波。 1度时脉宽=2个机器周期90度时脉宽约为111个周期......T2T3T1调制脉宽...T90T91...周期=1/18k1度2度3度…90度91度…图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.1 s~0.01(s),使输出频率为10~100Hz。 - 10 - 教师批阅 课 程 设 计 用 纸 表4-1 正弦脉冲的度数与计数值之间的一个换算表(部分) 教师批阅 4.2流程图 首先对程序进行初始化,初始化之后程序就进入了中断,连续读取720个PWM的匹配值产生0-180度的SPWM。 之后关闭此定时器和中断,并打开TIMER0和它的定时中断,同样的连续读取720个PWM的匹配值产生180-360度的SPWM。 主程序中,在while(1)中不断的扫描按键。通过判断是KEY1还是KEY2按下来提高和降低频率。正弦波频率的改变范围是10~100Hz。 SPWM调制程序流程图如图4.3所示: - 11 - 课 程 设 计 用 纸 开始 系统初始化 调用默认数据表 N Key1按下? Y 频率增加 Key2按下? N Y 频率减小 图4.3 SPWM调制程序流程图 - 12 - 教师批阅 课 程 设 计 用 纸 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([0 0.04 -300 300]); title('A相输出电流波形'); 运行此文件后,可得输出交流电压,交流电流和直流电流如图5.2所示: - 13 - 教师批阅 课 程 设 计 用 纸 图5.2 SPWM方式下的三相逆变电路输出波形 分析上图可知,输出线电压PWM波由±Ud和0三种电平构成负载相电压PWM波由(±2/3)Ud、(±1/3)Ud和0共5种电平组成。利用MATLAB提供的powergui模块,对上图中的输出相电压UA和输出电流IA进行FFT分析,得图5.3、图5.4所示结果: 图5.3 SPWM控制方式三相逆变电路输出相电压U A的FFT分析 - 14 - 教师批阅 课 程 设 计 用 纸 图5.4 SPWM控制方式三相逆变电路输出电流IA的FFT分析 由图5.3可知:在Ud=300V ,m=0.9,fc =1500Hz,fr =50Hz,即N=30时,输出相电压的基波电压的基波幅值为Ud1m=134.7V,谐波分布中最高的为28和32次谐波,考虑最高频率为4500Hz时的THD达到79.74%。由图5.4可知:考虑最高频率为4500Hz时的THD=5.15%,输出电流近似为正弦波。 - 15 - 教师批阅 课 程 设 计 用 纸 6心得体会 两个周的运动控制课程设计—三相电压型SPWM逆变器设计就要结束了,虽然课程设计的时间比较短,但我却收获了很多值得总结和值得我铭记于心的知识和认识。 开始课程设计的时候,由于我们学的都是一些嵌入式方面的理论知识,牵涉到实际的我们几乎一无所知,所以我们组的成员都不知道该怎么入手,我们通过请教老师,以及上网查询等通道,终于顺利的完成数据采样系统的各方面设计。这样一个过程使我的理论知识得到了试验和应用,使我的理论知识得到了进一步的提高。 总之,这次课程设计不但让我学到了很多的东西,提高和巩固了单片机、matlab等方面的知识,同时也增强了我的动手能力,这些并不是在课堂上可以学到的,而且这也是难得的一次同学间长时间交流沟通的机会,在课程实际过程中发生许多欢乐的令人难忘的事,这无疑为以后的我留下了一个美好的回忆。在完成运动控制课程设计后,我发现我还有许多不足,所学到的知识还远远不够,单片机的应用是如此的广泛,在以后的时间里我将继续对单片机方面的知识的学习。 最后,感谢老师在课程设计中给予的帮助,以及组员们的合作! - 16 - 教师批阅 课 程 设 计 用 纸 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 - 17 - 教师批阅 课 程 设 计 用 纸 附录 1 程序清单 #include \"Fre.H\" #include \"select.h\" #include - 18 - 教师批阅 课 程 设 计 用 纸 #define uchar unsigned char unsigned long TheSysClock = 12000000UL; void ADC_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); // 使能采样序列 } void wdogInit ( void ) { SysCtlPeriEnable( SYSCTL_PERIPH_WDOG ) ; // 使能看门狗模块 WdogStallEnable ( WATCHDOG_BASE ) ;// 使能调试器暂停看门狗计数 WdogReloadSet ( WATCHDOG_BASE , 3000000UL ) ; // 设置看门狗值 WdogIntEnable ( WATCHDOG_BASE ) ; //使能看门狗中断 IntEnable ( INT_WATCHDOG ) ; //使能看门狗模块中断 IntMasterEnable ( ) ; //使能处理器中断 } void Watchdog_Timer_ISR ( void ) - 19 - 教师批阅 课 程 设 计 用 纸 { 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 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号管脚下降沿时产生中断信号 - 20 - 教师批阅 课 程 设 计 用 纸 IntEnable(INT_GPIOD); //开GPIOD中断 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) & 0x00000100 ); //等待样本序列采集完成 ADCSequenceDataGet(ADC_BASE , 0 , &ulVal); //获取采集的结果 ulVal = ((ulVal * 3000) / 1024)/1000;//将结果进行转换单位mV Val=(uchar)ulVal; vWrite8x16String(\"This is a dis-\" ,0, 8,0); //写字符串 vWrite8x16String(\"play program. \ vWrite8x16String(\"The current v-\ //vWrite8x16String(\"oltage is : 4\ if(ulVal<1&&ulVal>=0) { vWrite8x16String(\"oltage is : 0\ } - 21 - 教师批阅 课 程 设 计 用 纸 if(ulVal<2&&ulVal>=1) { vWrite8x16String(\"oltage is : 1\ } if(ulVal<3&&ulVal>=2) { vWrite8x16String(\"oltage is : 2\ } if(ulVal<4&&ulVal>=3) { vWrite8x16String(\"oltage is : 3\ } if(ulVal<5&&ulVal>=4) { vWrite8x16String(\"oltage is : 4\ } if(ulVal<6&&ulVal>=5) { vWrite8x16String(\"oltage is : 5\ } if(ulVal<7&&ulVal>=6) { vWrite8x16String(\"oltage is : 6\ } if(ulVal<8&&ulVal>=7) { vWrite8x16String(\"oltage is : 7\ 教师批阅 - 22 - 课 程 设 计 用 纸 } if(ulVal<9&&ulVal>=8) { vWrite8x16String(\"oltage is : 8\ } if(ulVal<10&&ulVal>=9) { vWrite8x16String(\"oltage is : 9\ } if(ulVal<11&&ulVal>=10) { vWrite8x16String(\"oltage is : 10\ } if(ulVal<12&&ulVal>=11) { vWrite8x16String(\"oltage is : 11\ } if(ulVal>=12||ulVal<0) { vWrite8x16String(\"oltage is : UV \ } //vWrite8x16Character(Val,6,(12*8+8),0); Delay(1000 * (TheSysClock / 4000)); Lcmcls(); } 教师批阅 - 23 - 2 原理图 课 程 设 计 用 纸 - 24 - 教师批阅 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务