Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TBC solar cell simulation problem #161

Open
ygrf0816 opened this issue Nov 14, 2024 · 0 comments
Open

TBC solar cell simulation problem #161

ygrf0816 opened this issue Nov 14, 2024 · 0 comments

Comments

@ygrf0816
Copy link

I am currently working on a simulation project involving TBC type solar cells, specifically focusing on shading effects. I have been using the PVmismatch library for these simulations, but I have encountered a discrepancy between the simulated IV curves and the actual measured results.

To provide more context, I have defined an 8 modules series system and have been progressively shading one component from one cell up to six cells. In my simulations, when I completely shade one cell on one component, the IV curve exhibits a "step-like" bending characteristic, which is not observed in the actual measurements. It is only when I increase the shading to six cells that the simulated results align with the actual measurements.

Case1-3: single cell full shading
1-3 8 000000000000001e-07

Case2-2: Three cells in a column full shading
2-2 8 000000000000001e-07

Case2-5: Six cells in a column full shading
2-5 8 000000000000001e-07

I suspect that this discrepancy might be due to the natural formation of Shunt Diodes between the interdigitated back-contact electrodes in TBC cells.To address this, I attempted to modify the calcCell function within the PVCell class by incorporating a Shunt Diode. Additionally, I increased the Vbypass value for each sub-string of cells to -5V, but the simulation results remained unchanged.

def calcCell(self):
        """
        Calculate cell I-V curves.
        Returns (Icell, Vcell, Pcell) : tuple of numpy.ndarray of float
        """
        Vreverse = self.VRBD * self.pvconst.negpts
        Vff = self.Voc
        delta_Voc = self.VocSTC - self.Voc
        # to make sure that the max voltage is always in the 4th quadrant, add
        # a third set of points log spaced with decreasing density, from Voc to
        # Voc @ STC unless Voc *is* Voc @ STC, then use an arbitrary voltage at
        # 80% of Voc as an estimate of Vmp assuming a fill factor of 80% and
        # Isc close to Imp, or if Voc > Voc @ STC, then use Voc as the max
        if delta_Voc == 0:
            Vff = 0.8 * self.Voc
            delta_Voc = 0.2 * self.Voc
        elif delta_Voc < 0:
            Vff = self.VocSTC
            delta_Voc = -delta_Voc
        Vquad4 = Vff + delta_Voc * np.flipud(self.pvconst.negpts)
        Vforward = Vff * self.pvconst.pts
        Vdiode = np.concatenate((Vreverse, Vforward, Vquad4), axis=0)
        Idiode1 = self.Isat1 * (np.exp(Vdiode / self.Vt) - 1.)
        Idiode2 = self.Isat2 * (np.exp(Vdiode / 2. / self.Vt) - 1.)
        Ishunt = Vdiode / self.Rsh
        fRBD = 1. - Vdiode / self.VRBD
        # use epsilon = 2.2204460492503131e-16 to avoid "divide by zero"
        fRBD[fRBD == 0] = EPS
        Vdiode_norm = Vdiode / self.Rsh / self.Isc0_T0
        fRBD = self.Isc0_T0 * fRBD ** (-self.nRBD)
        IRBD = (self.aRBD * Vdiode_norm + self.bRBD * Vdiode_norm ** 2) * fRBD 
        #2024.11.14 add dark current IShuntDiode from shunt diode
        IShuntDiode = 1e-12 * (np.exp(0.0527 / self.Vt) - 1.)
        Icell = self.Igen - Idiode1 - Idiode2 - Ishunt - IRBD + IShuntDiode
        Icell_p = self.Igen - Idiode1 - Idiode2 - Ishunt - IRBD
        # Vcell = Vdiode - Icell * self.Rs
        Vcell = Vdiode - Icell_p * self.Rs
        Pcell = Icell * Vcell
        return Icell, Vcell, Pcell

    # 2024/11/14 new diode model
    #  *-->--*--->---*--Rs--*-->-Icell--+
    #  ^     |       |      ^         ^
    #  |     |       |      |            |
    # Igen  Idiode  Ishunt IDS         Vcell
    #  |     |       |      |            |
    #  |     v       v      |           |
    #  *--<--*---<---*--<---*-----------=

Given these challenges, I would like to inquire whether the current version of the PVmismatch library supports shading simulation for BC (Back-Contact) structure solar cells. If not, there are any potential modifications or alternative approaches that might achieve more accurate simulation results?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant