微型逆变器流程图timer
- 格式:vsd
- 大小:52.00 KB
- 文档页数:1
基于STM32F4并网光伏微型逆变器参考设计●本应用参考设计简略描述了单级并网太阳能(PV)微型逆变器主要原理。
本设计主要使用了一颗ST公司的STM32F4系列处理器,该处理器是基于ARM1 Cortex™-M4内核具有浮点运算,168MHZ的高速处理能力,增强的单周期DSP处理指令。
可以进行一些复杂的计算。
控制PV 电池板流向电网的功率。
此处理器还执行MPPT 算法、故障控制,以及可选的数字通信程序。
而前级使用了宽范围输入的反激DC-DC来产生与电网同相和同步的正弦输出电压和电流。
此微型逆变器的设计目标是可连接到这样的PV 模块在22VDC 至50VDC 的输入电压范围内,可输出最大200W 的功率,最大开路电压为55VDC。
本设计的要求如下所列。
▲最大输出功率= 185W▲标称输出电压= 230V▲标称输出电流= 0.8A▲输出电压范围= 180 VAC-264 VAC▲标称输出频率= 50 Hz▲输出频率范围= 48 Hz-52Hz▲功率因数= >0.96▲总谐波失真= <5%▲最大效率= 96%▲最大功率点追踪= 99.5%▲最小效率>0.8并网光伏微型逆变器参考设计的框图如图1所示。
图1并网光伏微型逆变器设计框图本系统主要分7大块,PV组件、辅助电源、光伏微型逆变器、EIM滤波、STM32F4、LCD显示与键盘。
这里最主要的是,光伏微型逆变器和STM32F4所以本应用设计主要对这两块做主要介绍光伏微型逆变器,如图1所示主要分两大块,前面是DC/DC升压及MPPT后面是DC/AC桥式换向。
▲微逆变器电路工作原理把半波的直流电压通过四个可控硅进行换向,变成了上下波的交流电压。
通常专用术语把此半波称为馒头波,如图2微逆变的工作原理波形变换图图2微逆变的工作原理波形变换图由交错反激构成的微逆变器硬件框图,如图3图3交叉反激构成的微逆变器硬件框图。
微逆变器的主要原理:如图3主要有两块组成,交错反激电路和桥式换向电路。
PIC16F73做的逆变器程序及原理图//------------------------------------------------------------// spwm信号调制//------------------------------------------------------------#include#include//系统配置__CONFIG(HS&PWRTEN&BOREN&PROTECT&WDTEN);//打开看门狗,选择高速晶振,上电延时复位,掉电复位使能,代码保护//------------------------------------------------------------//指示灯宏定义#define L1_RED_ON RB1=1;RB2=0;//L1红灯亮#define L1_OFF RB1=0;RB2=0;#define L2_RED_ON RB4=1;RB3=0;//L2红灯亮#define L2_OFF RB4=0;RB3=0;#define L3_RED_ON RB7=1;RB5=0;//L3红灯亮#define L3_OFF RB7=0;RB5=0;#define L1_GREE_ON RB2=1;RB1=0;//L1绿灯亮#define L2_GREE_ON RB3=1;RB4=0;//L2绿灯亮#define L3_GREE_ON RB5=1;RB7=0;//L3绿灯亮//-----------------------------------------------------------//模拟输入通道宏定义#define AN0 CHS2=0;CHS1=0;CHS0=0;#define AN1 CHS2=0;CHS1=0;CHS0=1;#define AN2 CHS2=0;CHS1=1;CHS0=0;//-----------------------------------------------------------//-----------------------------------------------------------void adc_init(){//ad时钟选择ADCS1=1;//FOSC/32ADCS0=0;/*IF CPU IS PIC16F7X7VCFG1=0;VCFG0=0;//vref=vdd-vss*/PCFG0=0;PCFG1=0;PCFG2=0;//VREF=VDD-VSSADON=1;//打开ad模块ADIF=0;//清除ad中断标志ADIE=0;//打开ad模块中断}//-----------------------------------------------------------void port_init()//端口初始化{//端口b设置TRISB0=0;TRISB1=0;TRISB2=0;TRISB3=0;TRISB4=0;TRISB5= 0;TRISB6=1;//输入TRISB7=0;//RB端口方向设置PORTB=0;//输出0RBPU=0;//使能内部弱上拉INTE=0;//禁止RB0中断RBIF=0;RBIE=1;//允许RB端口电平变化中断//端口c设置TRISC=0X00;//PORTC are outputsPORTC=0;//输出为0RC1=RC2=0;RC3=1;RC4=0;//timer0 initT0CS=0;//选择内部指令时钟T0IF=0;//T0IE=1;//在第一次ccp1比较后打开中断使能//timer1TMR1CS=0;//定时器模式}//---------------------------------------------------------- //---------------------------------------------------------- //软件延时子程序*/void DELAY(){unsigned int i;for(i=2000;i>0;i--);}//---------------------------------------------------------- void init_start()//开始{L1_RED_ON;L2_RED_ON;L3_RED_ON;DELAY();DELAY();DELAY();DELAY();DELAY();DELAY();DELAY();DELAY();DELAY();DELAY();DELAY();DELAY();DELAY();DELAY();DELAY();DELAY();DELAY();DELAY();DELAY();DELAY();DELAY();DELAY();DELAY();DELAY();DELAY();DELAY();DELAY();DELAY(); DELAY();DELAY();DELAY();DELAY(); DELAY();DELAY();DELAY();DELAY(); DELAY();DELAY();DELAY();DELAY(); DELAY();DELAY();DELAY();DELAY();L2_OFF;L3_OFF;L1_OFF;DELAY();DELAY();DELAY();DELAY(); DELAY();DELAY();DELAY();DELAY(); DELAY();DELAY();DELAY();DELAY(); DELAY();DELAY();DELAY();DELAY(); DELAY();DELAY();DELAY();DELAY(); DELAY();DELAY();DELAY();DELAY(); DELAY();DELAY();DELAY();DELAY(); DELAY();DELAY();DELAY();DELAY(); DELAY();DELAY();DELAY();DELAY(); DELAY();DELAY();DELAY();DELAY(); DELAY();DELAY();DELAY();DELAY();L1_GREE_ON;L2_GREE_ON;L3_GREE_ON; DELAY();DELAY();DELAY();DELAY(); DELAY();DELAY();DELAY();DELAY(); DELAY();DELAY();DELAY();DELAY(); DELAY();DELAY();DELAY();DELAY(); DELAY();DELAY();DELAY();DELAY(); DELAY();DELAY();DELAY();DELAY(); DELAY();DELAY();DELAY();DELAY(); DELAY();DELAY();DELAY();DELAY(); DELAY();DELAY();DELAY();DELAY(); DELAY();DELAY();DELAY();DELAY(); DELAY();DELAY();DELAY();DELAY();L2_OFF;L3_OFF;L1_OFF;}//----------------------------------------------------------bit k,power;//关机及按键标志bank1 unsigned char tm_sum;//系统实际变量bank1 unsigned char ad_res_1,ad_res_0,ad_res_2; //ad转换结果寄存器bank1 float sin_am,sin_l,sin_d;//浮点数,幅值变量,临时变量,临时变量bit sin_up;//sin函数正负半周标志bit tmr_s,tmr_d,crut_ie;//定时标志,定时标志变化标志,电流延时保护允许unsigned char crut_tmr;//电流延时时间变量unsigned char power_s;//电源动作延时变量bit power_ie;//电源允许动作标志bit power_up;//初次开机标志unsigned char power_up_s;//初次开机延时标志bit crut_if;volue_if;//-----------AD1通道转换--------------------void ad_0(){AN0;//选择通道0DELAY();//延时,采样电容充电ADGO=1;//开器ADwhile(ADGO);//等待ad结束ad_res_0=ADRES;//结果转存到变量AD_RES_0}//-----------AD1通道转换--------------------void ad_1(){AN1; DELAY();ADGO=1;while(ADGO);ad_res_1=ADRES;if(ad_res_1>132){sin_am-=0.005;if((ad_res_1-132)>10)sin_am-=0.04; }elseif((ad_res_1<=132)&&(ad_res_1>=130))sin_am+=0;elseif(ad_res_1<130) {sin_am+=0.005;if((130-ad_res_1) >10)sin_am+=0.04;}if(sin_am>1.6)sin_am=1.6;}//------------AD2通道转换-------------------void ad_2(){AN2; DELAY();ADGO=1;while(ADGO);ad_res_2=ADRES;}//-------------------------------------------const unsigned char sin_[]={40,50,73,85,100,113,127,141,157,170,180,189,196,200,20 3,204,//正半周204,//负半周203,200,195,188,179,169,157,144,129,113,96,78,59,39,15};unsigned char sin_num;//SIN函数表查表变量//-------------------------------------------------------------------------------void CCP_start(){CCPR2L=0X0;//设置CCP2,0%的脉宽输出CCPR1L=0X0;//设置CCP1,0%的脉宽输出TRISC=0X00;//PORTC are outputsPR2=0Xff;//设置PWM的工作周期,16Mhz,PWM周期15.562khzCCP1M3=1;CCP1M2=1;//CCP1模块PWM模式CCP2M3=1;CCP2M2=1;//CCP2模块PWM模式sin_up=1;//正负半周SIN函数sin_num=0;//脉宽周期调整计数器sin_am=0;//sin函数的幅值sin_am=0.3000;//sin函数的幅值crut_ie=1;//电流慢保护允许}//-------------中断服务程序------------------------------------ void interrupt key_ccp_timer(){if(TMR2IF&TMR2IE){TMR2IF=0;//定时器2中断服务函数if(sin_num==31){sin_num=0;sin_up=!sin_up;}sin_d=sin_[sin_num];sin_l=sin_am*sin_d;if(sin_l>=255)sin_l=255;//限幅if(sin_up){CCPR2L=(unsigned char)sin_l;CCPR1L=0;}//换向else{CCPR1L=(unsigned char)sin_l;CCPR2L=0;}//换向sin_num++;}CLRWDT();//清除看门狗if(RBIF&&RBIE){RBIF=0;if((!RB6)&&power_ie)k=1;}//端口b中断服务函数if(TMR1IF&TMR1IE){TMR1IF=0;tm_sum++;if(tm_sum==31){tm_sum=0;tmr_s=!tmr_s;tmr_d=1;}}//定时器1中断服务函数}//************************************************************* ***********************main(){CLRWDT(); //清除看门狗port_init();//端口初始化init_start();//开机状态adc_init();//ad通道初始化//-----RC4=0;//继电器关闭RC3=1;//关闭脉冲封锁//-----TMR1CS=0;//同步模式T1SYNC=0;//内部指令周期TMR1H=0XFD;TMR1L=0X10;//定时器1初值TMR1IE=1;//定时器1中断使能//-----TRISC=0X00;//端口C输出TRISC1=TRISC2=1;//RC1,RC2输入模式PEIE=1;//外围模块中断使能TMR2IE=1;//打开定时器2中断使能GIE=1;//开全局中断TMR2ON=1;//打开定时器2TOUTPS3=0;TOUTPS2=1;TOUTPS1=0;TOUTPS0=0;//定时器2后分频器5分频TMR1ON=1;//打开定时器1power_ie=1;//允许开机while(1){CLRWDT();//清除看门狗if(k){DELAY();DELAY();DELAY();DELAY();DELAY();DELAY();//延时DELAY();DELAY();DELAY();DELAY();DELAY();DELAY();//延时if(k&&RB6){k=0;power=!power;}//开关机标志if(power)//开机{power_ie=0;//开关间隔开始计时RC3=0;//打开脉冲封锁RC4=1;//打开继电器L3_RED_ON;//打开L3绿灯CCP_start();//开始SPWM}if(!power)//关机{power_ie=0;//开关间隔开开始计时crut_if=0;//电流保护标志清零volue_if=0;//电池电压保护标志清零L1_OFF;//关灯L2_OFF;L3_OFF;RC3=1;//关闭脉冲封锁CCP2CON=0;CCP1CON=0;//复位CCP模块RC2=RC1=0;//置端口固定电平L3_OFF;//关闭L3绿灯RC4=0;//关闭继电器}}//-----输出电流检测if(power_up){if(ad_res_0>=204)//电流高于4v,快保护{crut_if=1;crut_tmr=0;crut_ie=0;L2_GREE_ON;RC3=1;RC4=0;L3_GREE_ON;}if((ad_res_0>=102)&&(ad_res_0<204))//高于2v电流慢保护{L2_GREE_ON;if(tmr_s&&tmr_d&&crut_ie)//时基,时基变化标志,保护允许{tmr_d=0;crut_tmr++;if(crut_tmr==10){crut_tmr=0;crut_ie=0;crut_if=1;//保护L2_GREE_ON;RC3=1;RC4=0;L3_GREE_ON;}}}if(ad_res_0<102){crut_tmr=0;L2_OFF;if(crut_if)L2_GREE_ON;} //电流正常低于2v//-----电池电压检测if(ad_res_2>=102){L1_OFF;if(volue_if)L1_GREE_ON;}//电池电压大于2v,L1红灯灭if((ad_res_2<102)&&(ad_res_2>=91)){L1_GREE_ON;}//电池低于2v大于1.8vif(ad_res_2<92){volue_if=1;L1_GREE_ON;RC3=1;RC4=0;L3_GREE_ON;} //电池低于1.8v}//-----模拟采集if(power)ad_1();//在开机状态下检测反馈电压ad_2();//采集电池电压ad_0();//采集电流if(power_ie==0)//开关机时间间隔{if(tmr_s&&tmr_d){tmr_d=0;power_s++;}if(power_s==10){power_s=0;power_ie=1;}}if(power_up==0)//上电延时1秒检测电池电压{if(tmr_s&&tmr_d){tmr_d=0;power_up_s++;}if(power_up_s==1){power_up_s=0;power_up=1;}}}}大致看了一下,小弟弟,做得很不错.提出几点看法希望对你有帮助:1,PIC系列的端MCU或者DSP对端口操作要严格注意不能连续改变其同类型的数值如:RC1=RC2=0,RB1=1;RB2=0;等等.我们想独立改变其电平中间必须加入NOP延时语句,尤其是在FOSC在12MZH以上系统.原因是什么,不多讲了,DATASHEET上说得很清楚.2,在ad_0()函数中的,没必要经过这么长的for(i=2000;i>0;i--)延时,这跟你的AD口输入阻抗有关系,说明书上也有计算公式.3,你的SPWM周波信号取32点,太少了,协波信号太大,同时变压器损耗也大取64个或12 点比较好.4,16MZH,PR2=OXFF,调制频率为15.56KHZ.但是我这里看不到你定时器T2的初始化设置,也就是说,你是经过多长时间改变CCP脉宽的?这关系到你一个周波有几个脉冲波?而且你的死区是如何控制的?这样看来,你可能忘记了某些东西,还没有帖上来噢.5,if((ad_res_1<=132)&&(ad_res_1>=130))sin_am+=0;这样的电压调节算法,太粗糙了.振荡、超调回时实出现.为什么不鉴见一下我以前帖的PI算法呢?6,看来你采样的是逆变直流信号,假如做高质量的逆变电源,应该采用交流采样,时实调节PWM,否则系统不稳定.7,而且也没看到你软件上的的短路保护算法哦.这是针对你帖出来的软件大致看了一下,提几点看法,希望对你有帮助.硬件电路没有看见,尚不做评价.;**************************************************************#include"p12f629.inc";**************************************************************FAN EQU GP0DIVER EQU GP1LAMP EQU GP2WORK EQU GP3POWER EQU GP4;**************************************************************org 0x0;goto startorg 0x05;**************************************************************startbsf STATUS,RP0call 3ffhmovwf OSCCALbcf INTCON,GIEMOVLW 0X08movwf trisiomovlw 0x4fmovwf OPTION_REGBCF STATUS,RP0movlw 0x07movwf CMCON;************************************************************** mainCLRWDTBSF GPIO,POWERBcF GPIO,FANCALL DELAY1sBSF GPIO,LAMPcall delay10sBSF GPIO,DIVERSCAN CLRWDTBTFSS GPIO,workGOTO SCAN1GOTO SCANSCAN1 MOVLW 0X1fMOVWF 0X21SCAN2 CLRWDTBTFSC GPIO,workGOTO SCANCALL DELAY1SDECFSZ 0X21GOTO SCAN2BCF GPIO,DIVERmovlw 0x03movwf 0x22scan3 call delay1sdecfsz 0x22goto scan3BCF GPIO,LAMPCALL DELAY10SBsF GPIO,FANBCF GPIO,POWER;**************************************************************delay10smovlw 0x0amovwf 0x20L1 call delay1sdecfsz 0x20goto l1retlw 0x0delay1smovlw 0x05movwf 0x26L2 clrwdtmovlw 0ffhmovwf 0x27L3 movlw 0ffhmovwf 0x28L4 decfsz 0x28b L4decfsz 0x27b L3decfsz 0x26b L2retlw 0x0;************************************************************** END回复71帖。
Installation/User Manual安装使用说明书SMT-I250WPhotovoltaic Grid-connected Microinvertor并网微型逆变器Version1.0 SmartEnergy Electronic Technology Co.,LtdRoom301,Building C,Wujin District Tianan Cyber Park,ChangzhouTEL**************EMAIL:************************常州新智源电子科技有限公司江苏省常州市武进高新技术产业开发区常武南路588号天安数码城C幢301-1、301-2室电话**************邮箱:************************Important Safety InstructionsThis manual contains important instructions to follow during installation and maintenance of the Photovoltaic Grid-connected Inverter(Microinverter)system.To reduce the risk of electrical shock and ensure the safe installation and operation of the Microinverter system,the following symbol appears throughout this document to indicate dangerous conditions and important safety instructions.Warning:this symbol is used to identify some important instructions.Failure to follow these instructions will lead to serious hardware failure or physical danger.Pay special attention to these operations.重要的安全信息本手册包含了在安装和维护逆变器时需遵从的重要指示。
Inverter工作原理介绍2007-10-22 09:47Inverter-即逆变器,又叫电压升压板。
它是专为Panel的背光灯提供工作电源的。
Panel使用的背光灯管的工作电压很高,正常工作时的电压为600~800V,而启动电压则高达1500~1800V,工作电流则为5~9mA。
这样的工作特点需要Inverter有如下功能:1)、能够产生1500V以上的高压交流电,并且在短时间内迅速降至800V左右,这段时间约持续1-2S。
2)、由于Inverter提供电流的大小将影响冷阴极荧光灯管的使用寿命,因此输出的电流应小于9mA,需要有过流保护功能。
3)、出于使用的考虑,要有控制功能,即在显示暗画面的时候,灯管不亮。
Inverter是一种DC TO AC的变压器,它其实与Adapter是一种电压逆变的过程。
Adapter是将市电电网的交流电压转变为稳定的12V直流输出,而Inverter 是将Adapter输出的12V直流电压转变为高频的高压交流电;两个部分同样都采用了目前用得比较多的脉宽调制(PWM)技术。
其核心部分都是一个PWM集成控制器,Adapter用的是UC3842,Inverter则采用TL5001芯片。
TL5001的工作电压范围3.6~40V,其内部设有一个误差放大器,一个调节器、振荡器、有死区控制的PWM发生器、低压保护回路及短路保护回路等。
以下将对Inverter的工作原理进行简要介绍:Inverter工作原理框图输入接口部分:输入部分有3个信号,12V直流输入VIN、工作使能电压ENB及Panel电流控制信号DIM。
VIN由Adapter提供,ENB电压由主板上的MCU提供,其值为0或3V,当ENB=0时,Inverter不工作,而ENB=3V时,Inverter处于正常工作状态;而DIM电压由主板提供,其变化范围在0~5V之间,将不同的DIM值反馈给PWM控制器反馈端,Inverter向负载提供的电流也将不同,DIM值越小,Inverter输出的电流就越大。
自制小型逆变器逆变器(inverter)是把直流电能(电池、蓄电瓶)转变成交流电(一般为220v50HZ正弦或方波)。
应急电源,一般是把直流电瓶逆变成220V交流的。
通俗的讲,逆变器是一种将直流电(DC)转化为交流电(AC)的装置。
可把12伏电瓶或电动车电池转变为220伏,带动其他用电器。
电路图:材料:10K 1/4W 电阻 X2470欧 3W电阻 X21N4007二极管 X212V稳压管 X21200V 0.3μ电磁炉电容 X2磁环(电脑电源上有得拆) X11MM漆包线 1米1.2M漆包线数米接线端子2P(脚距5mm) 3个接线端子3P(脚距5mm) 2个然后发给布线图,免得一些人迷惘不懂怎么布线。
先焊接好接线端子,然后焊接10K电阻。
然后把12V稳压管焊接上去,我的稳压管于普通的不一样,我感觉这个好。
跟普通玻璃壮的稳压管比,这个做Z VS拉弧猛多了。
然后把1N4007也焊接上去,然后就是470欧3W的电阻。
然后把两个1200V 0.3μ的电磁炉电容焊上去。
然后检测:用万能表红笔测量12V稳压管的白环端,用黑笔测量无环端,导通或蜂鸣器响或电阻率很低(100以下)则稳压管损坏,必须更换,否则会出现场效应管炸管现象,和损坏电源。
用万能表红笔测量1N4007二极管的白环端,用黑笔测量无环端,导通或蜂鸣器响或电阻率很低(100以下)则二极管损坏,必须更换,否则会出现场效应管炸管现象,和损坏电源。
然后测量各路是否连同,以防虚焊:虚焊是焊点处只有少量的焊焊锡住,造成接触不良,时通时断。
虚焊与假焊都是指焊件表面没有充分镀上锡层,焊件之间没有被锡固住,是由于焊件表面没有清除干净或焊剂用得太少以及焊接时间过短所引起的。
然后开始绕磁环,磁环如下。
用1MM的漆包线绕20圈即可。
然后就用高压包来测试。
看看电路是否有损坏。
用国标1平方的线绕在高压包磁芯上5+5圈。
不能绕反,必须是相同方向。
然后按照电路图连接好,检测无误,即可通电测试。