PVMismatch
PVMismatch copied to clipboard
Enable bypass diodes in pvmodule class to be non-ideal diodes
Enable non ideality to bypass diodes in the pvmodule class
You can use Shockley's equation for this. The values of the bypass diodes that were in use at SunPower from 2010 to 2015 or so are in PVLife. If you PM me I can give you more info. Basically all you need is the saturation current, I_sat
so Ibypass = I_sat * (exp(q*Vbypass / n / kB / T_K) - 1.0)
.
But are you sure this is necessary? IMO the ideal diode behavior is probably accurate enough for most circumstances.
See also:
Dear mikofski : I see the updated version about pvmismatch . where i can find all updated information about version v4.0
Hi @xjianwei520 you should probably ask @chetan201 he is the current owner of PVMismatch. I don't work at @sunpower anymore.
@chetan201 do you plan on updating the docs and release a new version with the latest changes from @rayhickey ?
Also, maybe there should be a google group or someplace on the wiki that's more appropriate for user comments or questions such as these?
Thanks @mikofski Thank you for your support. This Project is great. Hi @chetan201 : this is Jianwei from Canadiasolar in china . I have some confused item when i using PVmismatch .
-
I found the simulating result is ok when BBRD is 0 , for example step 1 : i got the calculating way from reading paper to calculate VBRD using CSI cell reversed Data like this , the result is ok , -25.6V
step 2 : I used function about (optimize.curve_fit ) to get reversed fitted data. seem ok .
from this step , I got bRBD , the value is 7.8 , I put this value to PVcell object , the function do not return any value. when I set bRBD =0, i got the returned value. I notice the sunpower module default value bRBD is also is 0 , is it coincidence ?
-
can you send me some information or tips about Fucntion as below :
gen_two_diode ( Isc , voc, Imp, vmp ,nseries, nparrllel, tc, x0=None, *args, **kwargs) residule_two_diode(x , isc ,voc, imp ,vmp ,tc)
I want to get two diode parameter about Rs , Rsh, Isat1,Isat2 , i got error value about Rsh. ( Rsh=9~30ohms)
for example :
I shading one cell in a std module using Rsh=10ohms . the result like this : cannot start bypass diode.
if i set Rsh=500ohms from real testing result. the result is ok . like this :
So, i want to know above Functions running principle or where it come from ? please give me some guideline , thank you so much.
You're probably using the module Rsh
which is typically in the 100's. Whereas PVMismatch uses the cell Rsh
which is typically around 10Ω. I think typically you can divide the module resistances by the number of cells in series, EG: Rs_cell = Rs_module / Ns
, to get the cell resistances.
Note: The diode equations are only valid for single cells. EG: In Shockley's equation:
Id = Isat * (exp(Vd / n / Vt) - 1.0)
= Isat * (exp((Vcell + Icell * Rs_cell) / n / Vt) - 1.0)
... the voltage, Vd
, is the diode voltage given by a single cell, Vd = Vcell + Icell * Rs_cell
. Alternately, think of the thermal voltage, Vt
, as multiplied by the number of series cells, the result is the same either way.
Id = Isat * (exp((Vmod + Imod * Rs_mod) / n / Vt / Ns)
= Isat * (exp((Vmod / Ns + Imod * Rs_mod / Ns) / n / Vt)
Blocks of parallel modules substrings complicate this, and I'm not sure of the right way to handle it. Maybe better to treat each parallel submodule individually? I don't know if this is correct? EG:
Vd = (Vmod / Ns) + (Imod / Np) * (Rs_mod / Ns * Np)
Finally measurements of module shunt resistance are complicated by incident light. The value of module shunt resistance in the dark is different than in light, often by a factor of two.
Hi @xjianwei520, we agree regarding @mikofski 's feedback. (Thanks @mikofski !)
As for the release 4.0, I haven't had a chance to update the documentation yet but the key difference is to the Temperature-Voltage characteristics. We implemented temperature dependance to Isat2 value in the 2 diode equivalent model at the heart of PVMismatch. See below -
As for your second question, let me take a quick crack here -
1-gen_two_diode ( Isc , voc, Imp, vmp ,nseries, nparrllel, tc, x0=None, *args, **kwargs) 2-residule_two_diode(x , isc ,voc, imp ,vmp ,tc)
Function 1 and 2, essentially solves the two diode model equations for Rs, Rsh, Isat1, Isat2 values when given with the solutions to the two diode model equations (i.e. Isc, Imp, Voc, Vmp - the data sheet parameters)