{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Problem 6.6" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Fundamentals of Solar Cells and Photovoltaic Systems Engineering**\n", "\n", "**Solutions Manual - Chapter 6**\n", "\n", "**Problem 6.6**\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**A research group with capabilities of III-V materials manufacturing wants to make a two-terminal tandem cell using an optimized composition with a bandgap of 0.9 eV for the bottom subcell. For the top subcell, they can grow compounds with bandgaps in the range 1.4 to 1.9 eV. Which bandgap should they use to achieve the maximum efficiency under the AM1.5G spectrum? Assume $P_{max} \\approx 0.85 · J · V_{max}$ as a rough estimation for the maximum power produced by each subcell. Here, the factor 0.85 approximates the fill factor of each subcell. $J$ is the subcell’s photocurrent density and $V_{max} \\approx 0.75 · E_g$ (in volts) is an approximated value of the open-circuit voltage.**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will use the package [pandas](https://pandas.pydata.org/) to handle the data and [matplotlib.pyplot](https://matplotlib.org/stable/index.html) to plot the results" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We start by importing the data" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AM0AM1.5GAM1.5D
Wvlgth nmEtr W*m-2*nm-1Global tilt W*m-2*nm-1Direct+circumsolar W*m-2*nm-1
2808.20E-024.73E-232.54E-26
280.59.90E-021.23E-211.09E-24
2811.50E-015.69E-216.13E-24
281.52.12E-011.57E-192.75E-22
............
39808.84E-037.39E-037.40E-03
39858.80E-037.43E-037.45E-03
39908.78E-037.37E-037.39E-03
39958.70E-037.21E-037.23E-03
40008.68E-037.10E-037.12E-03
\n", "

2003 rows × 3 columns

\n", "
" ], "text/plain": [ " AM0 AM1.5G \\\n", "Wvlgth nm Etr W*m-2*nm-1 Global tilt W*m-2*nm-1 \n", "280 8.20E-02 4.73E-23 \n", "280.5 9.90E-02 1.23E-21 \n", "281 1.50E-01 5.69E-21 \n", "281.5 2.12E-01 1.57E-19 \n", "... ... ... \n", "3980 8.84E-03 7.39E-03 \n", "3985 8.80E-03 7.43E-03 \n", "3990 8.78E-03 7.37E-03 \n", "3995 8.70E-03 7.21E-03 \n", "4000 8.68E-03 7.10E-03 \n", "\n", " AM1.5D \n", "Wvlgth nm Direct+circumsolar W*m-2*nm-1 \n", "280 2.54E-26 \n", "280.5 1.09E-24 \n", "281 6.13E-24 \n", "281.5 2.75E-22 \n", "... ... \n", "3980 7.40E-03 \n", "3985 7.45E-03 \n", "3990 7.39E-03 \n", "3995 7.23E-03 \n", "4000 7.12E-03 \n", "\n", "[2003 rows x 3 columns]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "datafile = pd.read_csv('data/Reference_spectrum_ASTM-G173-03.csv', index_col=0, header=0) \n", "datafile" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "datafile.drop(datafile.index[0], inplace=True) #remove row including information on units\n", "datafile=datafile.astype(float) #convert values to float for easy operation\n", "datafile.index=datafile.index.astype(float) #convert indexes to float for easy operation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We select the AM1.5G spectrum for our calculations" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "280.0 4.730000e-23\n", "280.5 1.230000e-21\n", "281.0 5.690000e-21\n", "281.5 1.570000e-19\n", "282.0 1.190000e-18\n", " ... \n", "3980.0 7.390000e-03\n", "3985.0 7.430000e-03\n", "3990.0 7.370000e-03\n", "3995.0 7.210000e-03\n", "4000.0 7.100000e-03\n", "Name: AM1.5G, Length: 2002, dtype: float64" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "G = datafile['AM1.5G']\n", "G" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "First we define a function that calculates the power density produced by a subcell" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def power_subcell(J,Eg): #J in A/m2, Eg in eV\n", " return 0.85*J*0.75*Eg #W/m2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "We define a function to calculate the maximum photocurrent that a subcell can deliver under the AM1.5G spectrum.\n", "The top cell will absorb all photons with more energy than its bandgap, whereas the bottom cell\n", "will only absorb photons more energetic than its bandgap but less energetic than the bandgap of the top cell.\n", "\n", "We define the adequate constants to calcutale the ideal SR and, with it, we calculate the maximum current density $J_{max}$ using Eq. 3.5\n", "\n", "$J_{max}=\\int SR_{ideal}(\\lambda) \\cdot G(\\lambda) \\ d\\lambda$ (A/m2)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "h=6.63*10**(-34) # [J·s] Planck constant\n", "e=1.60*10**(-19) #[C] electron charge\n", "c =299792458 #[m/s] Light speed\n", "\n", "idealSR=pd.Series(index=G.index,\n", " data=[wl*0.000000001*e/(h*c) for wl in G.index])\n", "\n", "def max_photocurrent(wl): #wl in nm\n", " return np.trapz(G[G.index" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot (gaps, tandem_effs, '.-')\n", "plt.ylabel(r'Approximated tandem efficiency, $\\eta_{max}$')\n", "plt.xlabel(r'Top-subcell bandgap, $E_g$ (eV)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The approximated tandem efficiency is maximum for a top-subcell bandgap of around 1.6 eV." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.12" } }, "nbformat": 4, "nbformat_minor": 4 }