{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Problem 3.7" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Fundamentals of Solar Cells and Photovoltaic Systems Engineering**\n", "\n", "**Solutions Manual - Chapter 3**\n", "\n", "**Problem 3.7**\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Let us consider $P_{max} \\approx J_{ideal} · V_{max} · 0.85$ as a rough approximation of the maximum power density produced by an ideal solar cell of bandgap $E_g$. Here, the factor 0.85 approximates the fill factor, which will be introduced in Chapter 4. $J_ideal$ is the cell’s ideal photocurrent density (see Box 3.2) and $V_{max} \\approx E_g · 0.75$ (in volts) is an approximated value of the maximum achievable voltage. Calculate the approximate maximum efficiency $η_{max}$ of a solar cell with a bandgap of 0.2 eV, 0.6 eV, 1.0 eV, 1.4 eV, 1.8 eV, 2.2 eV, and 2.6 eV; when it is illuminated with the reference solar spectrum AM1.5G and discuss the results based on Fig. 3.3.**\n", "\n", "**The spectrum AM1.5G can be found in the file “Reference_spectrum_ASTM-G173-03.csv” in the online repository of the book. The actual solar-cell efficiency limit is described in the Advanced Topic of Chapter 6.**" ] }, { "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", "We will store all the calculated data in a dataframe" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "First we define the targeted bandgap values" ] }, { "cell_type": "code", "execution_count": 5, "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", "
gap nm
gap eV
0.26200.0
0.62066.7
1.01240.0
1.4885.7
1.8688.9
2.2563.6
2.6476.9
\n", "
" ], "text/plain": [ " gap nm\n", "gap eV \n", "0.2 6200.0\n", "0.6 2066.7\n", "1.0 1240.0\n", "1.4 885.7\n", "1.8 688.9\n", "2.2 563.6\n", "2.6 476.9" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gaps=np.arange(0.2, 2.7, 0.4)\n", "df = pd.DataFrame()\n", "df['gap eV']=np.round(gaps, 2)\n", "df['gap nm']=np.round(1240/np.array(df['gap eV']),1) #bandgaps in wavelength for esay operation\n", "df=df.set_index('gap eV') #set bandgap in eV as index column\n", "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For each bandgap, we calculate the maximum voltage\n", "\n", "$V_{max}\\approx 0.75\\ E_g$ (V)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "df['V_max']=np.round(0.75*df.index,1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We define the adequate constants to calcutale the ideal SR\n", "
\n", "and, with it, we calculate the ideal current density $J_{ideal}$ using Eq. 3.5\n", "\n", "$J_{ideal}=\\int SR_{ideal}(\\lambda) \\cdot G(\\lambda) \\ d\\lambda$ (A/m2)" ] }, { "cell_type": "code", "execution_count": 7, "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", "def Jideal(wl):\n", " return np.trapz(G[G.index\n", "and the corresponding maximum efficiencies\n", "\n", "$P_{max} \\approx 0.85 \\cdot J_{ideal} \\cdot V_{max}$ (W/m2)\n", "\n", "$\\eta_{max}= {P_{max} \\over 1000}$" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "df['P_max']=np.round(0.85*df['V_max']*df['J_ideal'],1)\n", "df['eff_max']=np.round(df['P_max']/1000,2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We visualize the data as a table
\n", "and plot the approximate maximum efficiency as a function of $E_G$.
\n", "The bandgap of silicon is indicated with a dashed line." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " gap nm V_max J_ideal P_max eff_max\n", "gap eV \n", "0.2 6200.0 0.2 688.6 117.1 0.12\n", "0.6 2066.7 0.4 620.8 211.1 0.21\n", "1.0 1240.0 0.8 480.9 327.0 0.33\n", "1.4 885.7 1.0 327.8 278.6 0.28\n", "1.8 688.9 1.4 195.6 232.8 0.23\n", "2.2 563.6 1.6 105.6 143.6 0.14\n", "2.6 476.9 2.0 49.8 84.7 0.08\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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LNKaNRePAcBLMEIEAAB8HgkRAADweSREAADA55EQAQAAn0dCBAAAfB53mbnAZrNJkvLz8z0cCeBhl65SnZ/PnWYAarWy3+2y3/ErISFyQUFBgSSpVatWHo4EqEWuvtrTEQCASwoKChQeHn7FNiabK2mTj7NarTp27JgaNmwok6nm91epy/Lz89WqVSsdOXJEYWFhng7HZ3DePYPz7hmcd8+oC+fdZrOpoKBAV199tfz8rjxLiBEiF/j5+ally5aeDqNOCwsLq7X/w3gzzrtncN49g/PuGbX9vP+vkaEyTKoGAAA+j4QIAAD4PBIiVKugoCDNmjVLQUFBng7Fp3DePYPz7hmcd8/wtvPOpGoAAODzGCECAAA+j4QIAAD4PBIiAADg80iIAACAzyMhQpW9/vrrioqKUnBwsGJjY5Wamlph202bNslkMpUr//rXv2ow4rpvy5YtGjZsmK6++mqZTCb97W9/+5+v2bx5s2JjYxUcHKw2bdrojTfeqP5AvUxlzzvf96pLSkpSt27d1LBhQ0VEROjOO+/UgQMH/ufr+L5XjZHzXte/7yREqJLk5GRNmTJFM2bMUFpamnr37q0hQ4YoOzv7iq87cOCAzGazo7Rr166GIvYORUVFuummm7Ro0SKX2mdlZenWW29V7969lZaWpieffFKTJk3SqlWrqjlS71LZ816G77txmzdv1kMPPaRvvvlGKSkpOn/+vAYOHKiiSzca/gW+71Vn5LyXqbPfdxtQBd27d7dNmDDBqa59+/a2J5544rLtN27caJNk++9//1sD0fkGSbbPPvvsim2mTZtma9++vVPd+PHjbT179qzGyLybK+ed77v75ebm2iTZNm/eXGEbvu/u58p5r+vfd0aIYFhpaal27dqlgQMHOtUPHDhQ27Ztu+Jru3TposjISP3mN7/Rxo0bqzNMSNq+fXu5/06DBg3Sd999p3PnznkoKt/B99198vLyJEmNGzeusA3fd/dz5byXqavfdxIiGHbixAlZLBY1b97cqb558+bKycm57GsiIyO1dOlSrVq1Sn/96191ww036De/+Y22bNlSEyH7rJycnMv+dzp//rxOnDjhoai8H99397LZbEpMTNQtt9yimJiYCtvxfXcvV897Xf++s9s9qsxkMjk9ttls5erK3HDDDbrhhhscj+Pj43XkyBG9+OKL6tOnT7XG6esu99/pcvVwH77v7jVx4kTt3btXW7du/Z9t+b67j6vnva5/3xkhgmFNmzaVv79/udGg3Nzccv86u5KePXvq4MGD7g4Pl2jRosVl/zvVq1dPTZo08VBUvonvuzEPP/yw/v73v2vjxo1q2bLlFdvyfXefypz3y6lL33cSIhgWGBio2NhYpaSkONWnpKSoV69eLveTlpamyMhId4eHS8THx5f777R+/XrFxcUpICDAQ1H5Jr7vlWOz2TRx4kT99a9/1YYNGxQVFfU/X8P3veqMnPfLqUvfdy6ZoUoSExM1atQoxcXFKT4+XkuXLlV2drYmTJggSZo+fbqOHj2q999/X5L08ssv67rrrtONN96o0tJSffjhh1q1ahW3w1ZSYWGhfvjhB8fjrKwspaenq3Hjxrr22mvLnfcJEyZo0aJFSkxM1B//+Edt375db7/9tlasWOGpj1AnVfa8832vuoceekjLly/X559/roYNGzpGfsLDwxUSEiKp/N8Zvu9VZ+S81/nvuwfvcIOXeO2112ytW7e2BQYG2rp27ep0W+aYMWNsffv2dTx+/vnnbW3btrUFBwfbGjVqZLvllltsX3zxhQeirtvKbm/9ZRkzZozNZit/3m02m23Tpk22Ll262AIDA23XXXedbfHixTUfeB1X2fPO973qLne+JdneffddRxu+7+5n5LzX9e+7yWa7MNMMAADARzGHCAAA+DwSIgAA4PNIiAAAgM8jIQIAAD6PhAgAAPg8EiIAAODzSIgAAIDPIyECAAA+j4QIAAD4PBIiALVSv379NGXKFE+HUWNOnjypiIgIHT582K393n333Zo/f75b+wS8EQkRgAqNHTtWJpPJUZo0aaLBgwdr7969ng7N4/r06eN0bsrKPffcY6i/pKQkDRs2TNddd51L7YcNG6bf/va3l31u+/btMplM2r17t55++mn9+c9/Vn5+vqG4AF9BQgTgigYPHiyz2Syz2ayvvvpK9erV09ChQz0dlkfZbDalp6frxRdfdJybsrJkyZJK93f27Fm9/fbbuv/++11+zbhx47Rhwwb99NNP5Z5755131LlzZ3Xt2lWdOnXSddddp48++qjScQG+hIQIwBUFBQWpRYsWatGihTp37qzHH39cR44c0fHjxyVJa9eu1S233KKrrrpKTZo00dChQ/Xjjz869dGvXz9NmjRJ06ZNU+PGjdWiRQs988wzjueLioo0evRoNWjQQJGRkXrppZfKxVFQUKB77rlHoaGhioyM1IIFC8pdVvtfsfTr108TJ07UxIkTHW1mzpypyu5xffDgQRUUFKhPnz6Oc1NWGjRoUKm+JOmf//yn6tWrp/j4eEedzWbTvHnz1KZNG4WEhOimm27Sp59+6nh+6NChioiI0LJly5z6OnPmjJKTkzVu3DhH3e23364VK1ZUOi7Al5AQAXBZYWGhPvroI11//fVq0qSJJHsyk5iYqG+//VZfffWV/Pz8dNddd8lqtTq99r333lNoaKh27NihefPmac6cOUpJSZEkPfbYY9q4caM+++wzrV+/Xps2bdKuXbucXp+YmKivv/5af//735WSkqLU1FTt3r3bqY0rsbz33nuqV6+eduzYoVdeeUULFizQW2+9VanzsGvXLtWrV0+dOnWq1OsqsmXLFsXFxTnVzZw5U++++64WL16s/fv365FHHtHIkSO1efNmSVK9evU0evRoLVu2zCmhW7lypUpLS50u3XXv3l07d+5USUmJW+IFvJINACowZswYm7+/vy00NNQWGhpqk2SLjIy07dq1q8LX5Obm2iTZ9u3b56jr27ev7ZZbbnFq161bN9vjjz9uKygosAUGBto+/vhjx3MnT560hYSE2CZPnmyz2Wy2/Px8W0BAgG3lypWONqdPn7bVr1/f0caVWPr27Wvr0KGDzWq1Oto8/vjjtg4dOrh0PspMnTrVZjKZHOelrNx///2V6qfMHXfcYbvvvvscjwsLC23BwcG2bdu2ObUbN26c7fe//73j8ffff2+TZNuwYYOjrk+fPk5tbDabbc+ePTZJtsOHDxuKD/AFjBABuKL+/fsrPT1d6enp2rFjhwYOHKghQ4Y45q78+OOP+sMf/qA2bdooLCxMUVFRkqTs7Gynfn45mhIZGanc3Fz9+OOPKi0tdbpc1LhxY91www2Ox4cOHdK5c+fUvXt3R114eLhTG1dj6dmzp0wmk+NxfHy8Dh48KIvF4vI52bVrl4YPH+44L2Xlueeec7mPS509e1bBwcGOx5mZmSouLtaAAQPUoEEDR3n//fedLgG2b99evXr10jvvvOP4/Kmpqbrvvvuc+g8JCZFkv5wG4PLqeToAALVbaGiorr/+esfj2NhYhYeH680339TcuXM1bNgwtWrVSm+++aauvvpqWa1WxcTEqLS01KmfgIAAp8cmk0lWq9Wl+TtlbS5NZC6tL+NqLFWVlpamOXPmOJ2XX9q7d6/Gjx+voqIi/b//9/+0bds2/eMf/7hs26ZNm+q///2v43HZJb4vvvhC11xzjVPboKAgp8fjxo3TxIkT9dprr+ndd99V69at9Zvf/MapzalTpyRJzZo1c/1DAj6GESIAlWIymeTn56ezZ8/q5MmT+v777zVz5kz95je/UYcOHZx+2F1x/fXXKyAgQN98842j7r///a/+/e9/Ox63bdtWAQEB2rlzp6MuPz9fBw8edDx2NZZL36fscbt27eTv7+9SvIcOHdLp06fVpUuXCtucO3dOY8aM0bvvvqu9e/dq69at6tixY4Xtu3TposzMTMfj6OhoBQUFKTs7W9dff71TadWqldNrR4wYIX9/fy1fvlzvvfee7r333nKJY0ZGhlq2bKmmTZu69BkBX8QIEYArKikpUU5OjiR7orJo0SIVFhZq2LBhatSokZo0aaKlS5cqMjJS2dnZeuKJJyrVf4MGDTRu3Dg99thjatKkiZo3b64ZM2bIz+/iv9caNmyoMWPG6LHHHlPjxo0VERGhWbNmyc/Pz/Hj72osR44cUWJiosaPH6/du3fr1VdfvexdbRUpm+zdvHlzx3kpExERIT8/P3366ae6+eab1b59e0lShw4drjgBe9CgQZo+fbr++9//qlGjRmrYsKGmTp2qRx55RFarVbfccovy8/O1bds2NWjQQGPGjHE6fwkJCXryySeVl5ensWPHlus/NTVVAwcOdPkzAr6IhAjAFa1du1aRkZGS7IlJ+/bttXLlSvXr10+S9PHHH2vSpEmKiYnRDTfcoFdeecXxnKteeOEFFRYW6vbbb1fDhg316KOPKi8vz6nN/PnzNWHCBA0dOlRhYWGaNm2ajhw54ph74+fn51Iso0eP1tmzZ9W9e3f5+/vr4Ycf1p/+9CfH88uWLdO9995b4aW8sjvbfvWrXznVBwQEqKCgQEFBQcrIyHBKgPbv319uXs+lOnbsqLi4OH3yyScaP368JOnZZ59VRESEkpKSdOjQIV111VXq2rWrnnzyyXKvHzdunN5++20NHDhQ1157rdNzxcXF+uyzz7Ru3boK3x+AZLK5cgEfAGqZoqIiXXPNNXrppZec1ty5kn79+qlz5856+eWXK2zzzDPPaNOmTdq0aZPh2ObPny+z2awXXnhBGzZs0NChQ5Wfn6969Sr+N+iaNWs0depUZWRkOI2OVdVrr72mzz//XOvXr3dbn4A3YoQIQJ2Qlpamf/3rX+revbvy8vI0Z84cSdIdd9zh1vdZt26dFi5cWKU+Ro4cqVtvvVU9e/ZUr1691KNHjysmQ5J066236uDBgzp69Gi5eUJVERAQoFdffdVt/QHeioQIQJ3x4osv6sCBAwoMDFRsbKxSU1PdPlF4+/btVe4jNDRU3333naxWq6ZNm6aRI0e69LrJkydX+b1/6dLLgQAqxiUzAHCzWbNmadWqVapXr55uu+02zZ07t9ydXwBqFxIiAADg81iHCAAA+DwSIgAA4PNIiAAAgM8jIQIAAD6PhAgAAPg8EiIAAODzSIgAAIDPIyECAAA+j4QIAAD4PBIiAADg80iIAACAzyMhAgAAPu//Axwl98N9WdaPAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print(df)\n", "plt.plot(df['eff_max'],'o')\n", "plt.ylabel(r'Approximate maximum efficiency, $\\eta_{max}$')\n", "plt.xlabel(r'Bandgap, $E_g$ (eV)')\n", "plt.axvline(1.12, c='red', ls='--')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***Discusion***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Silicon is used in solar cells because its bandgap allows a very efficient photovoltaic conversion of the sunlight as the overall transmission and thermalization losses are minimized, or, in other words, the trade-off between high current and voltage is maximized." ] }, { "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 }