//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Copyright @ 2017 Purdue University //The terms under which the software and associated documentation (the Software) is provided are as the following: //The Software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the Software or the use or other dealings in the Software. //Purdue grants, free of charge, to any users the right to modify, copy, and redistribute the Software, both within the user's organization and externally, subject to the following restrictions: //1. The users agree not to charge for the code itself but may charge for additions, extensions, or support. //2. In any product based on the Software, the users agree to acknowledge the TAG solar cell model Research Group that developed the software. This acknowledgment shall appear in the product documentation. //3. The users agree to obey all U.S. Government restrictions governing redistribution or export of the software. //4. The users agree to reproduce any copyright notice which appears on the software on any copy or modification of such made available to others. //Agreed to by //Xingshu Sun, Raghu Vamsi Chavali, Sourabh Dongaonkar, Suhas Baddela, Mark Lundstrom, and Muhammad Ashraf Alam, Purdue University //April 11 2017 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Xingshu Sun, Raghu Vamsi Chavali, Sourabh Dongaonkar, Suhas Baddela, Mark Lundstrom, and Muhammad Ashraf Alam (alam@purdue.edu), Purdue University // Verilog-A version of Purdue Physics-Based Solar Cell Model (PSM) V2.0.0 for HIT Solar Cells // physics model: R. V. K. Chavali, E. C. Johlin, J. L. Gray, T. Buonassisi, and M. A. Alam, “A Framework for Process-to-Module Modeling of a-Si/c-Si (HIT) Heterojunction Solar Cells to Investigate the Cell-to-Module Efficiency Gap,” IEEE J. Photovoltaics, pp. 1–13, 2016. // Implemented on March 24, 2016 by R. V. K. Chavali and X. Sun // default parameters are from R. V. K. Chavali, E. C. Johlin, J. L. Gray, T. Buonassisi, and M. A. Alam, “A Framework for Process-to-Module Modeling of a-Si/c-Si (HIT) Heterojunction Solar Cells to Investigate the Cell-to-Module Efficiency Gap,” IEEE J. Photovoltaics, pp. 1–13, 2016. `include "constants.vams" `include "disciplines.vams" module psm_hit_v_2_0_0(vp, vn); inout vp,vn; electrical vp,vn,vpi; //intrinsic model parameter parameter real area = 1e-4 from (0:100]; // cell area [m2] parameter real jphoto_max = 292 from [0:5000]; // maximum photocurrent [A/m2] parameter real shading_P = 0 from [0:100]; // shading percentage [%] parameter real j0_diode_h_REF = 1.35e-9 from (0:1]; // reverse saturation current for reference (holes) [A/m2] parameter real j0_diode_e_REF = 5e-12 from (0:1]; // reverse saturation current for reference (electron) [A/m2] parameter real N_REF = 1.25 from [1:2]; // diode ideality factor for reference parameter real inv_sb = 0.00216 from [1e-7:1); // reciprocal of surface recombination velocity at back contact parameter real inv_sd = 0.00816 from [1e-7:1); // reciprocal of drift velocity parameter real inv_s0 = 0.00139 from [1e-7:1); // reciprocal of emission velocity parameter real Vsat_pho = 0.2708 from (0:1]; // saturation voltage (photocurrent) [V] parameter real Vsat_drk = 0.5 from (0:1]; // saturation voltage (diode current) [V] parameter real pot_fact_pho = 0.553 from (0:2]; // voltage partition under light parameter real pot_fact_drk = 0.23 from (0:2]; // voltage partition under dark parameter real T_REF = 300 from [250:400]; // cell temperature for reference parameter real T_Cell = 300 from [250:400]; // cell temperature parameter real EG = 1.121 from [0:2]; // bandgap at room temperature [eV] parameter real Vbr_REF = -20 from [-100:0]; // breakdown voltage for reference [V] parameter real beta_Vbr = 8.8e-4 from [0:1]; // temperature dependence of breakdown voltage [1/K] parameter real Vbi = 0.85 from [0:2]; // junction built-in potential [V] //parasitic resistances parameter real RS = 1e-5 from (0:100]; // series resistance [Ohms/square] parameter real gsh1 = 1e-5 from (0:1000]; // shunt conductance parameter 1 [S/m2] parameter real gsh2 = 1e-5 from (0:1000]; // shunt conductance parameter 2 [S/m2] parameter real n_sh = 3 from (0:5); // shunt conductance index //smooth function parameters parameter real smoothP1 = 1e5 from [1e3:inf); // smooth parameter for a continuous step function parameter real smoothP2 = 10 from [0:1e5]; // smooth parameter real j_diode, j_photo, j_shunt, j0_h_diode, j0_e_diode, f_br, I_tot; real V_i, V_re; real fs1, fs2; real kT, kTR, Vbr; ///////////////////////////////////////////////////// ///define current branch branch (vpi,vn) i_b; // intrinsic branch branch (vp,vpi) rs_b; // series resistance branch analog begin ///////////////////////////////////////////////////// ///define voltage node and current branch V_i = V(vpi,vn); V_re = V(vp,vpi); ///////////////////////////////////////////////////// //Define Constant kT = T_Cell * 8.617e-5; // thermal voltage (T5.6 in the manual) kTR = T_REF * 8.617e-5; // thermal voltage from reference (T5.7 in the manual) ///////////////////////////////////////////////////// ///calculate temperature-dependent parameters j0_h_diode = j0_diode_h_REF * pow(T_Cell/T_REF,3) * limexp(-(EG/kT - EG/kTR)); // reverse saturation current for holes (T5.8 in the manual) [A/m2] j0_e_diode = j0_diode_e_REF * pow(T_Cell/T_REF,3) * limexp(-(EG/kT - EG/kTR)); // reverse saturation current for electron (T5.9 in the manual) [A/m2] Vbr = Vbr_REF*(1+beta_Vbr*(T_Cell-T_REF)); // breakdown voltage (T5.10 in the manual) [V] ///////////////////////////////////////////////////// ///calculate numerical smooth function fs1 = 0.5*(1-tanh(smoothP2*V_i)); // smooth function #1 (T5.11 in the manual) fs2 = 0.5*(1+tanh(smoothP2*(V_i - Vbr))); // smooth function #2 (T5.12 in the manual) ///////////////////////////////////////////////////// ///photo current j_photo = (100-shading_P)/100*jphoto_max*(inv_sb+inv_sd)/(inv_sb+inv_sd+inv_s0*limexp((-Vsat_pho+(1.0-pot_fact_pho)*V_i)/(kT))); // calculating the photo current (T5.3 in the manual) ///////////////////////////////////////////////////// ///shunt current j_shunt = gsh1 * V_i + gsh2 * tanh(smoothP1*V_i)*pow(abs(V_i) ,n_sh); // calculate shunt current (T5.2 in the manual) ///////////////////////////////////////////////////// ///diode current j_diode = (j0_h_diode * (limexp(V_i/kT/N_REF) - 1) / (inv_sd + inv_s0*limexp((-Vsat_drk+(1-pot_fact_drk)*V_i)/(kT)))) + (j0_e_diode*(limexp(V_i/kT) - 1)); // calculating the dark current (T5.1 in the manual) ////////////////////////////////////////////////////// ///define the breakdown function f_br = (1 - limexp ( 3* (1 - sqrt ((Vbi - Vbr)/(Vbi-fs1*fs2*V_i ))))); // breakdown function (T5.4 in the manual) ////////////////////////////////////////////////////// ///define the total current I_tot = area*(-j_photo+j_diode+j_shunt )/f_br; // add up the total current (T5.5 in the manual) ////////////////////////////////////////////////////// ///series resistance I(i_b) <+ I_tot; I(rs_b) <+ V_re/RS; // include series resistance end endmodule