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

Enable bypass diodes in pvmodule class to be non-ideal diodes #71

Open
chetan201 opened this issue Mar 7, 2018 · 6 comments
Open

Enable bypass diodes in pvmodule class to be non-ideal diodes #71

chetan201 opened this issue Mar 7, 2018 · 6 comments

Comments

@chetan201
Copy link
Contributor

Enable non ideality to bypass diodes in the pvmodule class

@mikofski
Copy link
Contributor

mikofski commented Mar 12, 2018

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:

@xjianwei520
Copy link

Dear mikofski :
I see the updated version about pvmismatch . where i can find all updated information about version v4.0

@mikofski
Copy link
Contributor

mikofski commented Apr 3, 2018

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?

@xjianwei520
Copy link

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 .

  1. 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
    default
    step 2 : I used function about (optimize.curve_fit ) to get reversed fitted data. seem ok .
    default
    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 ?

  2. 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.
1
if i set Rsh=500ohms from real testing result. the result is ok . like this :
2
So, i want to know above Functions running principle or where it come from ? please give me some guideline , thank you so much.

@mikofski
Copy link
Contributor

mikofski commented Apr 5, 2018

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.

@chetan201
Copy link
Contributor Author

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 -
temp_dependance

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)

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

No branches or pull requests

3 participants