Skip to content

TBC solar cell simulation problem #161

@ygrf0816

Description

@ygrf0816

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions