目录

1、太阳能板的特性曲线

2、固定电压法

3、MPPT-P&O算法

4、电导增量算法

5、系统实现方案


1、太阳能板的特性曲线

太阳能板也叫光伏电池。是通过光电效应,把光能转换为电能的设备。

先介绍太阳能板的特性。太阳能的额定参数是在地面光伏组件标准测试条件(STC)条件下测量得到的。

STC有三个条件:第一、光线通过大气的实际距离为大气垂直厚度的1.5倍。第二、指标准测试太阳电池的光线的辐照度为1000W/m2。第三、在25ºC的温度下工作。

STC条件会影响光伏电池的开路电压和短路电流。有补偿公式。以下是用Matlab或者Octave绘制光伏电池特性曲线的代码。其中额定值可以通过规格书查找得到,这里影响曲线的可以修改的参数有:1、到达太阳能板表面的太阳辐射为Sref;2、太阳能板工作温度为25摄氏度。开路电压Uoc,短路电流Isc,最大功率时电压Um,最大功率时电流Im。a、b、c都是经验值,经过补偿后就可得到修正后的开路电压Uoc_comp和短路电流Isc_comp。

clear
clc%-----------------------------------------------
%-----------------------------------------------
%pannel in series
%first pannel
S_1=1000;
Tair_1=25;Sref=1000;  %1000W/m^2
Tref=25;    %25degree celciusUoc=44.2;
Um=35.4;
Isc=5.29;
Im=4.95;a=0.00255;
b=0.55;
c=0.00285;T_1 = Tair_1 + 0.028*S_1;
T_delta_1 = T_1 - Tref;
S_delta_1 = S_1/Sref - 1;Isc_comp_1 = Isc*S_1/Sref*(1+a*T_delta_1);
Uoc_comp_1 = Uoc*(1-c*T_delta_1)*log(e+b*S_delta_1);
Im_comp_1  = Im*S_1/Sref*(1+a*T_delta_1);
Um_comp_1  = Um*(1-c*T_delta_1)*log(e+b*S_delta_1);C2_1=(Um_comp_1/Uoc_comp_1-1)*(log(1-Im_comp_1/Isc_comp_1))^(-1);
C1_1=(1-Im_comp_1/Isc_comp_1)*exp(-Um_comp_1/(C2_1*Uoc_comp_1));U_1=0:0.01:Uoc_comp_1;
Iph_1=Isc_comp_1*(1-C1_1*(exp(U_1/(C2_1*Uoc_comp_1))-1));figure(1)
plot(U_1,Iph_1,'r')
xlabel('U/V')
ylabel('I/A')
title('U-I')
figure(2)
P_ss = U_1 .* Iph_1;
plot(U_1,P_ss)
xlabel('U/V')
ylabel('P/W')
title('U-W')
单个光伏电池的特性曲线
(a) 电压-电流特性曲线 (b) 电压-功率特性曲线

曲线上,每一个点都是光伏电池的工作点。即,光伏电池在正常工作时,假如不是外部因素的改变,得到光伏电池的工作电压,即可在曲线中获得光伏电池的电流、功率。

从电压-功率特性曲线可看出,在当前的环境条件下,太阳能板的最大输出功率为曲线的峰值。这是太阳能板达到最大的能量转换效率。由于能量守恒,太阳能板获得的光能为其输出的电能加上发热量。因此需要通过控制太阳能板的工作电压或者工作电流,让太阳能板工作在最大功率点。这种算法叫最大功率点跟踪(Maximum Power Point Tracking)

2、固定电压法

根据经验,单节太阳能板的最大功率点,都在开路电压Uoc的0.78倍附近。在仿真代码中,先是固定温度为25℃,更改光照,得到了一组曲线。而后,固定光照,更改工作温度得到了另一组曲线。

下图中,光伏电池工作在25℃,光照分别是1000W/m2(橙色)、800W/m2(红色)、600W/m2(蓝色)。

工作温度25℃,光照变化时的光伏特性曲线
(a) 电压-电流特性曲线 (b) 电压-功率特性曲线

下图中,光照设定为1000W/m2,工作温度分别是25℃(蓝色)、45℃(红色)、65℃(橙色)。

光照恒定,工作温度变化时候的光伏特性曲线
(a) 电压-电流特性曲线 (b) 电压-功率特性曲线

上面曲线可知,就算开路电压改变,最大功率点的电压除以曲线的开路电压,结果都是比较接近0.78的。

3、MPPT-P&O算法

P&O中文名字是扰动-观察法。

从P-V曲线可见,可通过控制电压的方法让光伏电池达到最大功率点。算法的实现,依据了以下公式:

当dP>dU时,工作点在最大功率点左边,需要增加工作电压。

当dP<dU时,工作点在最大功率点右边,需要减少工作电压。

当dP=dU时,达到最大功率点。

以下两个流程图摘自《独立式光伏发电系统最大功率点跟踪算法研究_张淼》。

从P-V曲线可知,在最大功率点左边,斜率较小。改变固定的电压,功率改变较小。而最大功率点右边,斜率较大。因此可以算法上,在最大功率点左边,选择一个较大的电压步长;而在最大功率点右边,选择一个较小的电压步长。可加快跟踪效果。

实现方法代码全摘自TI的ControlSuite之中的Solar Lib(安装好controlSuite后,路径是ti\controlSUITE\libs\app_libs\solar\v1.2\float\):


//*********** Structure Definition ********//
typedef struct {float32  Ipv;float32  Vpv;float32  DeltaPmin;float32  MaxVolt;float32  MinVolt;float32  Stepsize;float32  VmppOut;float32  DeltaP;float32  PanelPower;float32  PanelPower_Prev;int16 mppt_enable;int16 mppt_first;
} MPPT_PNO_F;//*********** Structure Init Function ****//
void MPPT_PNO_F_init(MPPT_PNO_F *v)
{v->Ipv=0;v->Vpv=0;v->DeltaPmin=(0.00001);v->MaxVolt=(0.9);v->MinVolt=0;v->Stepsize=(0.002);v->VmppOut=0;v->DeltaP=0;v->PanelPower=0;v->PanelPower_Prev=0;v->mppt_enable=1;v->mppt_first=1;
}//*********** Function Definition ********//
void MPPT_PNO_F_FUNC(MPPT_PNO_F *v)
{if (v->mppt_enable==1){if (v->mppt_first == 1){v->VmppOut= v->Vpv - (0.02);v->mppt_first=0;v->PanelPower_Prev=v->PanelPower;}else{v->PanelPower=(v->Vpv*v->Ipv);v->DeltaP=v->PanelPower-v->PanelPower_Prev;if (v->DeltaP > v->DeltaPmin){v->VmppOut=v->Vpv+v->Stepsize;}else{if (v->DeltaP < -v->DeltaPmin){v->Stepsize=-v->Stepsize;v->VmppOut=v->Vpv+v->Stepsize;}}v->PanelPower_Prev = v->PanelPower;}if(v->VmppOut < v->MinVolt) v->VmppOut = v->MinVolt;if(v->VmppOut > v->MaxVolt) v->VmppOut = v->MaxVolt;}
}

4、电导增量算法

电池输出功率是,对U求导,可得到:

将其带入上面P&O的公式,经过变形可得:

如此看来,也不必计算功率了。

而变步长算法,可由下式表达:

变步长方法,作用是:当工作点在最大功率点左边,需要增加工作电压,逼近最大功率点。由于斜率较低,可以多增加步长,加快“爬坡”速度。

在这里贴上TI的工程师编的算法:

//*********** Structure Definition ********//
typedef struct {float32  Ipv;float32  Vpv;float32  IpvH;float32  IpvL;float32  VpvH;float32  VpvL;float32  MaxVolt;float32  MinVolt;float32  Stepsize;float32  VmppOut;// internal variablesfloat32  Cond;float32  IncCond;float32  DeltaV;float32  DeltaI;float32  VpvOld;float32  IpvOld;float32  StepFirst;int16 mppt_enable;int16 mppt_first;
} MPPT_INCC_F;typedef MPPT_INCC_F *mppt_incc_handle;//*********** Structure Init Function ****//
void MPPT_INCC_F_init(MPPT_INCC_F *v)
{v->Ipv=0;v->Vpv=0;v->IpvH=(1.65);v->IpvL=0;v->VpvH=0;v->VpvL=0;v->MaxVolt=0;v->MinVolt=0;v->Stepsize=0;v->VmppOut=0;v->Cond=0;v->IncCond=0;v->DeltaV=0;v->DeltaI=0;v->VpvOld=0;v->IpvOld=0;v->StepFirst=(0.02);v->mppt_enable=1;v->mppt_first=1;
}//*********** Function Definition ********//
void MPPT_INCC_F_FUNC(MPPT_INCC_F *v)
{if (v->mppt_enable==1){   /*MPPT mode enable*/if (v->mppt_first == 1){v->VmppOut= v->Vpv - v->StepFirst;v->VpvOld=v->Vpv;v->IpvOld=v->Ipv;v->mppt_first=0;}else{v->DeltaV = v->Vpv-v->VpvOld ;                 /* PV voltage change */v->DeltaI = v->Ipv-v->IpvOld ;                 /* PV current change */
//          if(v->DeltaV <v->VpvH && v->DeltaV >-v->VpvL )  /* Tolerence limits PV Voaltge Variation */
//          v->DeltaV= 0;
//          if(v->DeltaI <v->IpvH && v->DeltaI >-v->IpvL )  /* Tolerence limits PV current Variation */
//          v->DeltaI = 0;if(v->DeltaV == 0)                           /* DeltaV=0 */{if(v->DeltaI !=0 )                      /* dI=0 operating at MPP */{if ( v->DeltaI > 0 )                 /* climbing towards MPP */{v->VmppOut=v->Vpv+v->Stepsize;}       /* Increment Vref */else{v->VmppOut=v->Vpv-v->Stepsize;}      /* Decrement Vref */}}else{v->Cond = v->Ipv*__einvf32(v->Vpv);                    /*Cond =-(v->Ipv<<10)/v->Vpv;*/v->IncCond = v->DeltaI*__einvf32(v->DeltaV);          /*IncCond =(DeltaI<<10)/DeltaV;*/if (v->IncCond != v->Cond)               /* Operating at MPP */{if (v->IncCond > (-v->Cond))            /* left of MPP */{v->VmppOut=v->Vpv+v->Stepsize;         /* change Vref */}else                              /* Right of MPP */{v->VmppOut=v->Vpv-v->Stepsize;         /* change Vref */}}}v->VpvOld = v->Vpv;v->IpvOld = v->Ipv;}}
}

代码比我自己编的容易看懂,而且在调用时,让代码更加整洁了。

5、系统实现方案

下图是实现最大功率点跟踪MPPT(Maximum Power Point Tracking)算法的一个例子。

光伏电池通过降压DCDC主电路为负载供电。DCDC的作用是可以精确控制输出电压。直流系统的负载一般都是阻性负载。有时候可能是电阻串电池的形式。那么负载电流是和负载电压密切相关的,即电压越大、电流越大。而开关电源DCDC的转换效率较高,一般大于70%。因此可通过控制输出电压,改变输出功率,也同时改变了输入功率,即改变了光伏电池的输出功率。

参考文档:独立式光伏发电系统最大功率点跟踪算法研究_张森

参考软件:TI的controlSuite里面的Solar Lib

MPPT算法(恒定电压、扰动观察、电导增量)介绍与实现过程相关推荐

  1. 单相/三相光伏发电并网/离网simlink仿真(MPPT)或是大功率VSC 最大功率点追踪算法(MPPT)仿真模型, 有基于扰动观察法(PO),恒压算法,电导增量法,变步长扰动

    单相/三相光伏发电并网/离网simlink仿真(MPPT)或是大功率VSC 最大功率点追踪算法(MPPT)仿真模型, 有基于扰动观察法(P&O),恒压算法,电导增量法,变步长扰动 等最大功率点 ...

  2. 电导增量法matlab,基于变步长电导增量法MPPT研究.doc

    基于变步长电导增量法MPPT研究 基于变步长电导增量法MPPT研究 [摘要]光伏电池的输出功率与太阳辐射和环境温度变化,若不加以控制,将不会以最大功率输出.本文提出了一种变步长电导增量法,在光伏发电系 ...

  3. 光伏并网MPPT算法控制解析

    01  MPPT介绍 太阳能光伏发电是当前利用新能源的主要方式之一,光伏并网发电的主要问题是提高系统中太阳能电池阵列的工作效率和整个系统的工作稳定性,MPPT(Maximum power point ...

  4. 基于MPPT算法的PV光伏阵列电网模型simulink仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 光伏阵列(Photovoltaic Array)是多片光伏模组的连接,也是更多光伏电池的连接,光伏阵 ...

  5. FS4057是一款完整的单节锂离子电池用恒定电流/恒定电压线性充电器

    FS4057是一款完整的单节锂离子电池用恒定电流/恒定电压线性充电器.其中ThinSOT封装与较少的外部元器件数目使得FS4057成为便携式应用的理想选择.而且FS4057是专为在USB电源规范内工作 ...

  6. 两级式三相光伏并网simulink仿真(LC滤波,电导增量)详细教学

    刚入门学习,仅供参考,模型仍需完善修正,欢迎批评指正交流! 如需模型,21a版本,价格不贵,请联系QQ:2764706676(CSDN不经常上线,建议QQ联系) 参考视频: 两级式三相光伏并网simu ...

  7. PID算法:位置式PID和增量式PID

    口诀 参数整定找最佳, 从小到大顺序查. 先是比例后积分, 最后再把微分加. 曲线振荡很频繁, 比例度盘要放大. 曲线漂浮绕大弯, 比例度盘往小扳. 曲线偏离回复慢, 积分时间往下降. 曲线波动周期长 ...

  8. 光伏并网逆变器MPPT,低电压穿越,无功补偿

    光伏并网逆变器MPPT,低电压穿越,无功补偿. 基于MPPT运行模式的光伏发电系统LVRT控制策略MATLAB Simulink仿真建模. (PS:可提供参考文献和参考文档) ID:697006723 ...

  9. 神经网络算法的具体流程,深度神经网络简单介绍

    深度神经网络具体的工作流程是什么样的? 第一,深度神经网络不是黑盒,个人电脑开机直到神经网络运行在内存中的每一比特的变化都是可以很细微的观察的.没有任何神秘力量,没有超出科学解释的现象发生. 第二,深 ...

  10. 简单观察HoudiniAssetComponent状态(AssetState)的变化过程

    目标 UHoudiniAssetComponent的成员 AssetState,它是一个枚举EHoudiniAssetState: enum class EHoudiniAssetState : ui ...

最新文章

  1. golang 项目的目录结构
  2. before和after怎么区分_如何区分before和after~有时候觉得两者可以通用
  3. C#为什么要用到 try...catch... 呢?
  4. 定义并调用函数输出 fibonacci 序列_科学网—Zmn-0351 薛问天:再谈数学概念的定义,评新华先生《0345》...
  5. 网页特效java代码,美化网页常用特效代码
  6. mysql 搜索不等于_Mysql索引分类
  7. linux下iscsi
  8. Java通过 p12 建立ssl链接
  9. linux 修改密码和端口号_WINDOWS/LINUX系统修改管理员密码方法
  10. linux 下安装安装rzsz命令
  11. 高光谱遥感图像数据下载
  12. macd指标计算机应用,macd是怎么计算的
  13. 一亿融资在一家芯片初创公司可以烧多久?
  14. mac无法验证此app不包含恶意软件
  15. 22.11.30打卡 记忆化搜索2水题
  16. MS VC6 链接错误处理
  17. MATLAB小技巧(25)竞争神经网络与SOM神经网络
  18. R语言中的导出为pdf文件或txt文件的注意事项
  19. 印尼shopee如何布局-扬帆凌远
  20. 前端学习日志之复刻花礼网礼品专栏

热门文章

  1. 【详细】小程序模板使用教程
  2. windows无法完成格式化U盘与U盘修复对几种解决方法
  3. vb.net 模拟鼠标 失去焦点_DNF:都9102年了还在手动点竹子?鼠标连点器了解一下...
  4. VS编译运行时提示:应用程序并行配置不正确,无法启动程序
  5. Win7以上系统通过Dbgview打印驱动日志
  6. spss数据预处理步骤_Spss的数据预处理
  7. linux版udp发包工具,packet sender下载-Packet Sender(UDP/TCP网络测试工具)下载 v7.0.5官方版--pc6下载站...
  8. Word制作学生点名册表格模板
  9. 网格划分——Mesh操作
  10. 四周实现爬虫系统(1)-抓取tripadvisor猫途鹰网站数据信息