精华内容
下载资源
问答
  • 单相并网逆变器,LCL滤波,设置PQ即可输出输出设定功率到模拟电网
  • 单相并网逆变器simulink仿真,适合学生毕业设计,课程设计,练手学习参考用
  • LCL型单相并网逆变器模型预测电流控制MATLAB仿真
  • 分析了带LCL滤波器的单相并网逆变器中出现的低频振荡现象。通过系统平均模型进行了MATLAB/Simulink仿真,发现随着调节系数的变化,系统由稳定状态出现了振荡现象。利用频闪映射思想推导了并网逆变器的离散迭代模型...
  • 光伏单相并网逆变器的saber仿真模型,含有仿真文件。可以直接在saber上运行。
  • 微电网逆变器交互作用分析及建模方法研究,单相并网逆变器的工作原理,PPT源码
  • 行业分类-电子电器-一种单相并网逆变器并离网切换控制方法及装置.zip
  • 单相并网逆变器广泛地应用在新能源发电领域,它的一个关键技术就是对电网电压的锁相。分析了基于Park变换的锁相环原理,并进行了改进。针对并网逆变器采用的LCL滤波器,采用了基于电容电流前馈的有源阻尼控制方案,...
  • 行业资料-电子功用-单相并网逆变器输出电流谐波的抑制方法.zip
  • 适用于学生设计,练手,课程了解演示
  • 为解决并网逆变器的直流注入问题,以LCL型并网逆变器为研究对象,提出一种可抑制直流分量的并网逆变器电流跟踪控制策略。所提策略采用直接控制入网电流的双闭环技术,其中电流外环在常规基波电流控制支路的基础上,...
  • 行业资料-电子功用-单相并网逆变器输出电流谐波的抑制方法的说明分析.rar
  • 参数已调好,采用LCL滤波器,系统稳定运行,有助于并网逆变器的基础学习和提高,同时含有PI设计的模块,非常适合基础学习,
  • 单相风力发电系统的主电路结构,并网逆变器模型建模,并介绍了滤波器的设计。 比较两个之间的控制策略使用Matlab /仿真工具的几种常见控制策略。 结果表明准PR控制具有更好的性能。
  • 了解SPWM的应用领域,掌握单相并网逆变器SPWM发生器的设计方法。 代码讲解 main.c #include "led.h" #include "delay.h" #include "sys.h" #include "usart.h" #include "timer.h" vu16 freq = 5000, Period =...
    实验12 单相太阳能并网逆变器SPWM发生器设计
    了解SPWM的应用领域,掌握单相并网逆变器SPWM发生器的设计方法。

    代码讲解

    main.c

    #include "led.h"    
    #include "delay.h"    
    #include "sys.h"    
    #include "usart.h"    
    #include "timer.h"    
    
    vu16 freq = 5000, Period = 0;                           
    __IO float Period_percent;
                                  
    int main(void)    
    {          
      NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         
      delay_init();       
      LED_Init();         
      
      TIM8_PWM_Init(5000,0);    
      TIM2_Int_Init(5000,0);      
      uart_init(115200);
                
      Period_percent = ((SystemCoreClock / freq) - 1) / 32767.0;        
      while(1)            
      {         
        LED0=!LED0;         
        delay_ms(300);                     
      }               
    }
    

    TIM8_PWM_Init(5000,0);
    TIM2_Int_Init(5000,0);

    此时的5000已经不再是溢出周期了,而是频率,我们对TIM8_PWM_Init go to definition

    void TIM8_PWM_Init(u16 pfreq ,u16 psc)     
    {             
      . . . . . .        
      TimerPeriod = (SystemCoreClock / pfreq) - 1;         
      . . . . . .      
      TIM_TimeBaseStructure.TIM_Period = TimerPeriod;         
      . . . . . .    
    }     
    

    我们发现,5000赋给了形参pfreq,根据公式(SystemCoreClock / pfreq) - 1计算得到TimerPeriod=14399,最后才把TimerPeriod赋给TIM_Period。但是72MHz/ (arr+1)/(psc+1)=5000Hz,不是50Hz,为什么要错100倍?
    答:交流电是50Hz,周期是0.02s,我们把这50Hz又分成100份,我们另这100份里面的占空比按照正弦的规律来变化。

    之后便是PWM输出的设置,选用PWM模式1:TIM_OCMode_PWM1,输出状态为正常TIM_OutputState_Enable和互补TIM_OutputNState_Enable,输出极性为TIM_OCPolarity_High,互补输出极性为TIM_OCNPolarity_High,空闲时输出状态为TIM_OCIdleState_Set,空闲时互补输出状态为TIM_OCNIdleState_ Reset。

      TIM_OCInitStructure.TIM_OCMode       = TIM_OCMode_PWM1;                   
      TIM_OCInitStructure.TIM_OutputState  = TIM_OutputState_Enable;          
      TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;         
      TIM_OCInitStructure.TIM_Pulse        = Channel1Pulse;                     
      TIM_OCInitStructure.TIM_OCPolarity   = TIM_OCPolarity_High;           
      TIM_OCInitStructure.TIM_OCNPolarity  = TIM_OCNPolarity_High;              
      TIM_OCInitStructure.TIM_OCIdleState  = TIM_OCIdleState_Set;    
      TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset;            
      TIM_OC1Init(TIM8, &TIM_OCInitStructure);
                                         
      TIM_OCInitStructure.TIM_OCMode       = TIM_OCMode_PWM1;                   
      TIM_OCInitStructure.TIM_OutputState  = TIM_OutputState_Enable;          
      TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;         
      TIM_OCInitStructure.TIM_Pulse        = Channel2Pulse;                    
      TIM_OCInitStructure.TIM_OCPolarity   = TIM_OCPolarity_High;              
      TIM_OCInitStructure.TIM_OCNPolarity  = TIM_OCNPolarity_High;           
      TIM_OCInitStructure.TIM_OCIdleState  = TIM_OCIdleState_Set;               
      TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset;            
      TIM_OC2Init(TIM8, &TIM_OCInitStructure);
                                      
      TIM_OC1PreloadConfig(TIM8, TIM_OCPreload_Enable);//预装载使能                        
      TIM_OC2PreloadConfig(TIM8, TIM_OCPreload_Enable);  
    

    最后是只有高级定时器才有的配置,死区时间,刹车,刹车极性等等。死区是为了防止两路都有输出,导致爆炸,所以要特意留一部分时间两路都不输出。

      TIM_BDTRInitStructure.TIM_OSSRState       = TIM_OSSRState_Enable;//运行时  
      TIM_BDTRInitStructure.TIM_OSSIState       = TIM_OSSIState_Enable;//空闲时  
      TIM_BDTRInitStructure.TIM_LOCKLevel       = TIM_LOCKLevel_1;  TIM_BDTRInitStructure.TIM_DeadTime        = 0x2F; //2F                    
      TIM_BDTRInitStructure.TIM_Break           = TIM_Break_Disable;  
      TIM_BDTRInitStructure.TIM_BreakPolarity   = TIM_BreakPolarity_High;  
      TIM_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;  
      TIM_BDTRConfig(TIM8, &TIM_BDTRInitStructure);  //高级定时器设置,只有TIM1和TIM8才有的  
      TIM_Cmd(TIM8, ENABLE);                                               
      TIM_CtrlPWMOutputs(TIM8,ENABLE);   
    

    然后回到main函数,对TIM2_Int_Init go to definition

    void TIM2_Int_Init(u16 ifreq,u16 psc)                         
    {              
      . . . . . .      
      TimerPeriod = (SystemCoreClock / ifreq) - 1;                                                          
      TIM_TimeBaseStructure.TIM_Period = TimerPeriod;      
      . . . . . .     
    }    
    

    5000赋给了形参ifreq,根据公式(SystemCoreClock / ifreq) - 1计算得到TimerPeriod=14399,最后才把TimerPeriod赋给TIM_Period。这也是与常规的TIM2_Int_Init函数唯一的不同。

    TIM2_IRQHandler

    void TIM2_IRQHandler(void)      
    {        
      extern float Period_percent;        
      if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)                         
      {                  
        TIM_SetCompare1(TIM8,(u16)(Period_percent*spwm[i])) ;           
        TIM_SetCompare2(TIM8,(u16)(Period_percent*spwm[i++]));           
        if(i == 101)  //一个周期要溢出100次            
        {                
          i = 0;            
        }            
        TIM_ClearITPendingBit(TIM2, TIM_IT_Update);          
      }    
    } 
    

    由标红的两句话可知,每进一次中断,更改一次占空比,达到输出SPWM波的目的。

    由函数TIM_SetCompare1(TIM8,(u16)(Period_percentspwm[i]))看出,比较点是Period_percentspwm[i],我们先对spwm go to definition

    const u32 spwm[100] = {    
    0x4000,0x4405,0x4805,0x4BFE,0x4FEA,0x53C7,0x578F,0x5B40,0x5ED5,0x624A,    
    0x659E,0x68CB,0x6BCF,0x6EA7,0x714F,0x73C6,0x7609,0x7815,0x79E8,0x7B81,    
    0x7CDD,0x7DFC,0x7EDD,0x7F7E,0x7FDF,0x7FFF,0x7FDF,0x7F7E,0x7EDD,0x7DFC,    
    0x7CDD,0x7B81,0x79E8,0x7815,0x7609,0x73C6,0x714F,0x6EA7,0x6BCF,0x68CB,    
    0x659E,0x624A,0x5ED5,0x5B40,0x578F,0x53C7,0x4FEA,0x4BFE,0x4805,0x4405,    
    0x4000,0x3BFB,0x37FB,0x3402,0x3016,0x2C39,0x2871,0x24C0,0x212B,0x1DB6,    
    0x1A62,0x1735,0x1431,0x1159,0x0EB1,0x0C3A,0x09F7,0x07EB,0x0618,0x047F,    
    0x0323,0x0204,0x0123,0x0082,0x0021,0x0001,0x0021,0x0082,0x0123,0x0204,    
    0x0323,0x047F,0x0618,0x07EB,0x09F7,0x0C3A,0x0EB1,0x1159,0x1431,0x1735,    
    0x1A62,0x1DB6,0x212B,0x24C0,0x2871,0x2C39,0x3016,0x3402,0x37FB,0x3BFB,    
    };    
    

    由于正弦规律的计算比较麻烦,且每个周期分成了100份,我们用“sinewave”软件建了一个大小为100的数组spwm。
    在这里插入图片描述
    我们设置的精度位为15,即基数是32767,且一个周期内采样100个点,则spwm中标红的第25个点0x7FFF就是32767。
    在这里插入图片描述
    再对Period_percent go to definition

    Period_percent = ((SystemCoreClock / freq) - 1) / 32767.0;    
    

    因为在TIM8_PWM_Init中设置了TimerPeriod = (SystemCoreClock / pfreq) - 1,即设置了TIM8是从0到14399计数的,但是比较点spwm的大小在0-32767之间,所以要把spwm转换成0-14399之间的数,因此要设置一个百分比变量:Period_percent = ((SystemCoreClock / freq) - 1) / 32767.0 = 14399 / 32767。

    编译仿真

    注:由于MDK的仿真对TIM8的仿真支持不太好,把TIM8_PWM_Init改成TIM1_PWM_Init,才能仿真出效果。
    在这里插入图片描述

    打开仿真
    在这里插入图片描述
    点击示波器

    在这里插入图片描述
    弹出如下示波器页面:
    在这里插入图片描述
    点击set up增加变量
    在这里插入图片描述
    点击左边的方框,添加TIM1的通道1,通道2及其互补通道所对应的引脚PORTA.8,PORTA.9,PORTB.13,PORTB.14,同时把Display Type改为Bit。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    点击运行
    在这里插入图片描述
    运行结果:可以见到4路通道都输出了SPWM波。
    在这里插入图片描述

    遇到的错误

    MDK仿真没有产生SPWM波形。
    在这里插入图片描述
    解决:将TIM8输出PWM波的任务给TIM1
    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • 单相并网逆变器模型

    2013-05-31 19:21:17
    单相逆变器并网模型,这个模型是用matlab搭建的,希望对大家有用!
  • 单相并网逆变器采用正弦脉宽调制驱动。 Single phase grid connected inverter is driven using Sine PWM. 正弦参考信号是用锁相环和谐波振荡器产生的。 The sine references are generated using a PLL and ...

    在这里插入图片描述
    单相并网逆变器采用正弦脉宽调制驱动。

    Single phase grid connected inverter is driven using Sine PWM.

    正弦参考信号是用锁相环和谐波振荡器产生的。

    The sine references are generated using a PLL and Harmonic oscillator.

    闭环控制是在同步参考框架下实现的,只使用α-β到d-q的转换。

    The closed loop control is implemented in synchronous reference frame, by using only alpha-beta to d-q conversion.

    在不平衡d-q控制中,正交分量中的α或β被取为零。

    In unbalanced d-q control one of the orthogonal component either alpha or beta is taken as zero.

    逆变器由直流电源供电,电流按参考指令注入电网。

    The inverter is fed by a dc source and the current is injected into the grid as per the reference command.

    更多精彩文章请关注公众号:在这里插入图片描述

    展开全文
  • 主要针对双级单相并网逆变系统中的电压环控制设计进行研究,根据系统即时能量平衡的基本关系对其进行了建模和设计,并对储能电容上的电压二次脉动进行了分析。为简化系统设计,电压环采用PI控制,提出一种前馈方案...
  • 采用虚拟矢量法控制了并网的功率因数,增加了自由度,并网电流谐波畸变率低
  • 针对LCL滤波器较低的阻尼易使系统不稳定以及分布式发电需满足并网标准的问题,从直流母线电压控制、阻尼和电流控制及电网同步化等方面对并网逆变器进行研究。改进的直流母线电压控制增加了电压的控制带宽和动态性能...
  • 来自电网的扰动,包括电压跌落、谐波以及电网阻抗的变化等,会影响采用LCL滤波器的光伏并网逆变器的正常并网。提出了一种使用重复控制的双闭环加前馈的单相光伏逆变器控制方法。采用比例控制器的反馈和前馈虽然不能...
  • #资源达人分享计划#
  • 通过二端口小信号等效模型,将微电网系统稳定性与控制稳定性分析结合起来
  • 目前有许多典型的多电平转换器可用。 在实施这些转换器时,复杂性和开关损耗是主要问题。 连接到国家电网的小电网需要可靠、高... 传统的单相逆流结构,控制算法简单,5电平T型逆变器就是可以满足这些要求的转换器。
  • TI官方的资料,核心板原理图暂时还没开源,用的TI官方F28379D controlCARD for C2000 Real time control development kits,淘宝有的卖 PCB 和 原理图是altium Hardware Features Baseboard with interface to ...

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 333
精华内容 133
关键字:

单相并网逆变器