Jerkwin分享 http://blog.sciencenet.cn/u/Jerkwin

博文

太阳能电池效率的计算

已有 9840 次阅读 2016-8-10 00:45 |系统分类:科研笔记

在论文 Marco Bernardi, Maurizia Palummo, Jeffrey C. Grossman; Semiconducting Monolayer Materials as a Tunable Platform for Excitonic Solar Cells; ACS Nano 6(11):10082-10089, 2012; 10.1021/nn303815z 中讨论了一种计算太阳能电池效率的方法, 并给出了效率与材料参数的关系图, 对研究太阳能电池的人有一定参考价值. 我这里给出文章中计算太阳能电池效率的matlab代码, 供需要的人参考. 由于我的专业并非此领域, 所以无法对公式含义及其中的各个物理量进行说明, 只关注公式的数学部分$.$

理论

首先指出, 论文中的太阳能电池效率计算公式(方程1)有误, 正确的公式如下

η=0.65(Eopt,dgΔEc0.3)Eopt,dgJph(ω)ωd(ω)0Jph(ω)d(ω)η=0.65(Egopt,d−ΔEc−0.3)∫Egopt,d∞Jph(ℏω)ℏωd(ℏω)∫0∞Jph(ℏω)d(ℏω)

与原公式的区别在于分母中积分的起点为能量的起始值.

由于 <span class="MathJax" id="MathJax-Element-2-Frame" tabindex="0" data-mathml="<math xmlns="http://www.w3.org/1998/Math/MathML"><mi class="MJX-variant">&#x210F;&#x03C9;=&#x03B5;" role="presentation" style="margin:0px;padding:0px;display:inline;line-height:normal;text-align:left;word-spacing:normal;word-wrap:normal;float:none;direction:ltr;max-width:none;max-height:none;min-width:0px;min-height:0px;border:0px;position:relative;">ω=εℏω=ε 即为光子的能量, 所以上式可写为

<span class="MathJax" id="MathJax-Element-3-Frame" tabindex="0" data-mathml="<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">&#x03B7;=<mrow class="MJX-TeXAtom-ORD">0.65<mo stretchy="false">(Eg<mrow class="MJX-TeXAtom-ORD">opt,d&#x2212;<mi mathvariant="normal">&#x0394;Ec&#x2212;0.3<mo stretchy="false">)&#x222B;<mrow class="MJX-TeXAtom-ORD">Eg<mrow class="MJX-TeXAtom-ORD">opt,d<mi mathvariant="normal">&#x221E;<mrow class="MJX-TeXAtom-ORD">J<mrow class="MJX-TeXAtom-ORD">ph<mo stretchy="false">(&#x03B5;<mo stretchy="false">)&#x03B5;<mrow class="MJX-TeXAtom-OP"><mrow class="MJX-TeXAtom-ORD"><mi mathvariant="normal">d&#x03B5;&#x222B;0<mi mathvariant="normal">&#x221E;J<mrow class="MJX-TeXAtom-ORD">ph<mo stretchy="false">(&#x03B5;<mo stretchy="false">)<mrow class="MJX-TeXAtom-OP"><mrow class="MJX-TeXAtom-ORD"><mi mathvariant="normal">d&#x03B5;" role="presentation" style="margin:0px;padding:0px;display:inline;line-height:normal;text-align:left;word-spacing:normal;word-wrap:normal;float:none;direction:ltr;max-width:none;max-height:none;min-width:0px;min-height:0px;border:0px;position:relative;">η=0.65(Eopt,dgΔEc0.3)Eopt,dgJph(ε)εdε0Jph(ε)dεη=0.65(Egopt,d−ΔEc−0.3)∫Egopt,d∞Jph(ε)εdε∫0∞Jph(ε)dε

此式的分母部分是一个常数, 无须考虑, 故此, 计算的关键是分子中的积分. 此积分的计算涉及标准太阳能光谱 <span class="MathJax" id="MathJax-Element-4-Frame" tabindex="0" data-mathml="<math xmlns="http://www.w3.org/1998/Math/MathML">J<mrow class="MJX-TeXAtom-ORD">ph<mo stretchy="false">(&#x03C9;<mo stretchy="false">)" role="presentation" style="margin:0px;padding:0px;display:inline;line-height:normal;text-align:left;word-spacing:normal;word-wrap:normal;float:none;direction:ltr;max-width:none;max-height:none;min-width:0px;min-height:0px;border:0px;position:relative;">Jph(ω)Jph(ω). 根据国际标准, 此光谱一般采用美国材料和试验协会(ASTM)的标准太阳能光谱(ASTM)G173-03, 但此光谱给出的数据是按波长分布的, 所以我们首先需要将其转换为按能量分布的光谱.

设有光谱的波长分布为 <span class="MathJax" id="MathJax-Element-5-Frame" tabindex="0" data-mathml="<math xmlns="http://www.w3.org/1998/Math/MathML">f<mo stretchy="false">(&#x03BB;<mo stretchy="false">)" role="presentation" style="margin:0px;padding:0px;display:inline;line-height:normal;text-align:left;word-spacing:normal;word-wrap:normal;float:none;direction:ltr;max-width:none;max-height:none;min-width:0px;min-height:0px;border:0px;position:relative;">f(λ)f(λ), 其对应的能量分布为 <span class="MathJax" id="MathJax-Element-6-Frame" tabindex="0" data-mathml="<math xmlns="http://www.w3.org/1998/Math/MathML">J<mo stretchy="false">(&#x03B5;<mo stretchy="false">)" role="presentation" style="margin:0px;padding:0px;display:inline;line-height:normal;text-align:left;word-spacing:normal;word-wrap:normal;float:none;direction:ltr;max-width:none;max-height:none;min-width:0px;min-height:0px;border:0px;position:relative;">J(ε)J(ε), 二者满足 <span class="MathJax" id="MathJax-Element-7-Frame" tabindex="0" data-mathml="<math xmlns="http://www.w3.org/1998/Math/MathML">f<mo stretchy="false">(&#x03BB;<mo stretchy="false">)<mrow class="MJX-TeXAtom-OP"><mrow class="MJX-TeXAtom-ORD"><mi mathvariant="normal">d&#x03BB;=J<mo stretchy="false">(&#x03B5;<mo stretchy="false">)<mrow class="MJX-TeXAtom-OP"><mrow class="MJX-TeXAtom-ORD"><mi mathvariant="normal">d&#x03B5;" role="presentation" style="margin:0px;padding:0px;display:inline;line-height:normal;text-align:left;word-spacing:normal;word-wrap:normal;float:none;direction:ltr;max-width:none;max-height:none;min-width:0px;min-height:0px;border:0px;position:relative;">f(λ)dλ=J(ε)dεf(λ)dλ=J(ε)dε, 故

<span class="MathJax" id="MathJax-Element-8-Frame" tabindex="0" data-mathml="<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">J<mo stretchy="false">(&#x03B5;<mo stretchy="false">)=f<mo stretchy="false">(&#x03BB;<mo stretchy="false">)&#x2223;<mrow class="MJX-TeXAtom-ORD"><mrow class="MJX-TeXAtom-OP"><mrow class="MJX-TeXAtom-ORD"><mi mathvariant="normal">d&#x03BB;<mrow class="MJX-TeXAtom-OP"><mrow class="MJX-TeXAtom-ORD"><mi mathvariant="normal">d&#x03B5;&#x2223;=f<mo stretchy="false">(&#x03BB;<mo stretchy="false">)<mrow class="MJX-TeXAtom-ORD">1<mo fence="false" stretchy="false">&#x2223;<mrow class="MJX-TeXAtom-OP"><mrow class="MJX-TeXAtom-ORD"><mi mathvariant="normal">d&#x03B5;&#x2061;<mrow class="MJX-TeXAtom-ORD">/<mrow class="MJX-TeXAtom-OP"><mrow class="MJX-TeXAtom-ORD"><mi mathvariant="normal">d&#x03BB;<mo fence="false" stretchy="false">&#x2223;" role="presentation" style="margin:0px;padding:0px;display:inline;line-height:normal;text-align:left;word-spacing:normal;word-wrap:normal;float:none;direction:ltr;max-width:none;max-height:none;min-width:0px;min-height:0px;border:0px;position:relative;">J(ε)=f(λ)dλdε=f(λ)1dε/dλJ(ε)=f(λ)∣dλdε∣=f(λ)1∣dε/dλ∣

<span class="MathJax" id="MathJax-Element-9-Frame" tabindex="0" data-mathml="<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">&#x03B5;=h&#x03BD;=h<mrow class="MJX-TeXAtom-ORD">c&#x03BB;,<mrow class="MJX-TeXAtom-OP"><mrow class="MJX-TeXAtom-ORD"><mi mathvariant="normal">d&#x03B5;=&#x2212;<mrow class="MJX-TeXAtom-ORD">hc&#x03BB;2<mrow class="MJX-TeXAtom-OP"><mrow class="MJX-TeXAtom-ORD"><mi mathvariant="normal">d&#x03BB;" role="presentation" style="margin:0px;padding:0px;display:inline;line-height:normal;text-align:left;word-spacing:normal;word-wrap:normal;float:none;direction:ltr;max-width:none;max-height:none;min-width:0px;min-height:0px;border:0px;position:relative;">ε=hν=hcλ,dε=hcλ2dλε=hν=hcλ,dε=−hcλ2dλ

可得

<span class="MathJax" id="MathJax-Element-10-Frame" tabindex="0" data-mathml="<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">J<mo stretchy="false">(&#x03B5;<mo stretchy="false">)=<mrow class="MJX-TeXAtom-ORD">&#x03BB;2hcf<mo stretchy="false">(&#x03BB;<mo stretchy="false">)=<mrow class="MJX-TeXAtom-ORD">&#x03BB;&#x03B5;f<mo stretchy="false">(&#x03BB;<mo stretchy="false">)" role="presentation" style="margin:0px;padding:0px;display:inline;line-height:normal;text-align:left;word-spacing:normal;word-wrap:normal;float:none;direction:ltr;max-width:none;max-height:none;min-width:0px;min-height:0px;border:0px;position:relative;">J(ε)=λ2hcf(λ)=λεf(λ)J(ε)=λ2hcf(λ)=λεf(λ)

知道了此式之后, 使用最简单的梯形法对能量分布进行积分即可. 需要注意的是, 积分时可能需要首先对数据进行线性插值, 因为积分的起点可能并不正好处于分布的点上.

代码
matlab
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
clc; clear; clear all; % 单位换算 nm2eV=1.2398419739e-6*1e9; %% 处理数据% 读取文件, 忽略表头, 使用Global tilt数据 dat = csvread('ASTMG173.csv',2); l=dat(:,1); f=dat(:,3); % 由波长分布换算为能量分布, 递增顺序 E=nm2eV./flipud(l); J=flipud(f.*l)./E; % plot(E,J,'-')% 计算能量最小点与最大点, 能量间隔最小值% 梯形法积分得总功率, 其值应接近1000 Emin=min(E); Emax=max(E); dEmin=min(gradient(E)); Jtot=trapz(E, J) %% 计算单个效率值 Eopt=2; Ec=0.2; Eintp=[Eopt:dEmin:Emax]; Jintp=interp1(E,J, Eintp, 'linear'); Jsc=trapz(Eintp, Jintp./Eintp)/Jtot; eta=0.65*(Eopt-Ec-0.3)*Jsc*100%% 作效率与Eopt, Ec的二维图 Eopt=[1:.01:3.5]; Ec=[0:.01:1.2]; Jsc=zeros(1,length(Eopt)); fori=1:length(Eopt)-1 Eintp=[Eopt(i):dEmin:Emax]; Jintp=interp1(E,J, Eintp, 'linear'); Jsc(i)=trapz(Eintp, Jintp./Eintp)/Jtot; end [x, y]=meshgrid(Eopt, Ec); [z, y]=meshgrid(Jsc, Ec); eta=0.65*(x-y-0.3).*z*100; contourf(x,y,eta, [2:2:20], 'ShowText','on') xlabel('CBN pptical gap (eV)') ylabel('Conduction band offset (eV)')

所得图形与论文中 Fig.2 一致.

一些说明

大气层外太阳光谱不受大气的影响,是计算传感器大气层外波段平均太阳辐照度的基础。但由于测量仪器及方法的差别,现有多套太阳光谱曲线数据之间存在一定的差异。本文选用了9条常用的太阳光谱曲线(6S、ASTM-E490、ASTM-G173、Chance、Kurucz、Neckel & Lab、Thuillier、Wehrli 和 WRC 太阳光谱曲线)进行对比分析,以确定最合适计算ESUN b 的太阳光谱。 6S 太阳光谱为 6S 大气辐射传输模型中内置的太阳光谱曲线,光谱范围为 0.25~4.0 μm;ASTM-E490 太阳光谱由美国材料和试验协会(ASTM) 根据卫星、航天飞机、火箭探测、地基太阳望远镜等观测资料发布,光谱范围为 0.12~1000 μm;ASTM-G173太阳光谱由ASTM通过SMARTS模式导出,光谱范围为0.28~4.0 μm;Chance太阳光谱来源于地面和气球观测资料,光谱范围为 0.2~200 μm;Kurucz太阳光谱来源于理论模型和经验模型计算,光谱范围为 0.2~200 μm;Neckel & Lab 太阳光谱由 Neckel 和 Labs 基于对日盘中心绝对强度的观测资料发布,光谱范围为 0.4~2.0 μm;Thuillier 太阳光谱由 Thuillier 等人根据多次航空飞行观测资料发布,光谱范围为 0.2~2.4 μm;Wehrli 太阳光谱由 Wehrli 根据多条太阳光谱整合而成,光谱范围为0.20~3.0 μm;WRC 太阳光谱由 World Radiation Center 机构根据地面和火箭观测数据发布,光谱范围为0.35~2.5 μm。

在地球大气层的上界,距离太阳一个天文单位处,与太阳垂直的单位面积上,单位时间所得的的太阳辐射能量叫一个太阳常数S0。此时把太阳看出点光源,不考虑大气层吸收。但是在实际地球表面附近的太阳辐射强度受大气吸收的影响。大气吸收同时也影响太阳光谱分布。同时辐射强度还受太阳运转的高度影响。为了描述这一关系,引入大气质量(air mass, AM)。太阳穿过大气层垂直射入海平面时的高度作为一个大气质量AM1,辐照度大约1000W/M2,太阳在其他任意位置时穿过大气层的距离与AM1有sina的关系。a为太阳的高度角。外层空间的大气质量为AM0。太阳高度降低时,通过大气层的距离增加。大气质量大于1。最接近现实生活情况下的大气质量为AM1.5。此时太阳高度角为41.8度,辐照度为963W/M2。所以国际标准组织定义AM1.5为地面光伏组件的标准条件,辐照度定为1000W/M2.

ASTM G173–03的AM1.5G光谱采用变步长梯形求积积分,结果为1000.37 W/m2。



https://wap.sciencenet.cn/blog-548663-995527.html

上一篇:Packmol程序资料整理
下一篇:Windows下的bash环境及path环境变量设置
收藏 IP: 130.184.197.*| 热度|

1 唐刚

该博文允许注册用户评论 请点击登录 评论 (6 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-21 21:00

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部