Very helpful elaboration, thank You ❤ I can tell after examinating the model: 1. this model has no breakdown voltage, withstands many MegV. I know that this parameter is not published in datasheets. 2. keep in mind that panels available on market have usually reverse-protection diodes that changes the characteristics of PV module.
Thank you for sharing this and the model itself, super helpful. I was looking at how to model various PV cells in a circuit, this has saved a ton of time.
Hi! Just for you to know: Andreas Spiess (the guy with the Swiss accent), another great youtuber I follow, mentioned the use of your LTspice PV model to demonstrate how come you do not really need solar panel optimizers :D
When I run this simulation exactly with same parameters it says "value of B1 is missing" what value should we consider for B1 as it is not given in the video, thanks
it is explained very well. I have a question Why do the optimizers (Tigo, Huwaei, Solar-Ege etc.) that work at the solar module level do MPPT tracking. According to your description, they could actually measure the instantaneous solar module open-circuit voltage, solar module short-circuit current and the solar module temperature (on the back of the solar module) then they didn't need to do MPPT, they already had Pmax. Why do they take such a complicated route?
The solar panel datasheet states 47°C nominal temperature. Doesn't that mean the parameters are specified for that reference temperature, and you should change the 25° used in the formulas? Maybe that could account for the small difference in the simulation? (I don't enough proficiency in LTSpice to test it myself)
The parameter values in the datasheet are given at STC, standard test conditions, which is 1000 W/m², 25°C and the AM1.5 standard light spectrum. The nominal temperature or NOCT (normal operating cell temperature) is the temperature of the cells inside the module which can be expected under fairly average weather conditions.
Hi, I tried to make the same circuit using the same param,eters and model but when the simulation is stopped before to run because the value B1 seems to be undefined. I cjecled a lot of time the circuit a any detail bu I didn't finfd a difference wrt your scheme . Can you help me, please?
There is a formula next to B1 in the simulation - defining the relationship between its current and "illu" voltage. This is the value of B1. Did you also add this?
yes i did. i made everything the same however when i try to run it, i get this error Error on line 5 : i§b1 0 n001 i=v(illu)/1000*iph Unknown parameter "i" Fatal Error: Missing current value for "b1" my issue here 3:00 @@FesZElectronics
I noticed this error was occurring also for other viewers - and I just wanted to ask you how did you get the component to be called "i§b1"... I'm sorry if I did not make this clear - it was a behavioral current source - only with that type of component can you add a formula; same goes for voltage sources - if you want a formula it needs to be of "behavioral" type.
I was able to reproduce the single solarPV module IV curve but wasn't able to string them together in series and see double the voltage. Are there any other changes that have to be made to correctly measure the doubled voltage? Does the vout4 have to be defined a particular way?
Did you use component blocks or was it with a discrete implementation? Also regarding net names, in case the same name appears multiple time in the circuit, the nets will be short-circuited - maybe there are multiple instances of "vout4"
@@FesZElectronics It looks like my last response may have been removed. I attempted to make it with component blocks. I am not sure what a discrete implementation means exactly (newbie here). Net names are not overlapping, i don't think. Can net names within a component block be called from the graph viewer? If so, I will triple check that. When I use the solar cell model and connect multiple together, I DO see double the voltage, just not with the component blocks linked in series.
Hello Daniel, By discrete I was asking if you use the 4 component circuit to represent 1 solar cell, or the circuit block; but I think you cleared it up by saying you are using blocks; Net names from within the block should not matter; Maybe one thing to check is if the negative line of the block is ground - so the positive and negative lines should be independent of ground; you can look at the voltage in-between the 2 blocks in series - is it half the output or is it 0?
@@FesZElectronics This was it! It looks like i had forgotten to delete the ground when making the pv_module component block. Once I edited the netlist to refer to v- instead of 0 for the diode, shunt resistor, and voltage source, it worked. Thank you!
In 10:20 what is the value taken to calculate Rs_t, in the denominator? Is it "Ib", or "16"? I can't either read it or think out.. Also in Rsht, is it "5" in the numerator? If yes, where the magic numbers come from, I suppose they are the parameters of silicon? UPDATE: ok I used Your files and I see there is 5 and 16.
5 and 16 are magic numbers :D I think I found somewhat different values in the documentation, but with these the model seemed to be more accurate. I will be honest, I did not look deep enough to see what exactly these numbers represent.
Well, 16/5 is very close to 14/5, which is also very close to e (Eulers number), used in Io_t calculation for some reason. Maybe this is the reason these coefficients exist.
I tried to simulate the netlist you gave, and got the same error; however if I deleted "I§" and just left "B13 0 N001 I=ipv_t*v(illu)/1000 " it seems to work... do you know how the "I§" got there? I guess multiple people have the same issue...
when I try to parametrize my own simulation LTspice complains "LTspice cannot resolve .param ...." In other words if I put an expression for example: .param Rsh=((Vmp-(Imp*Rs))*(Vmp-(Rs*(Isc-Imp)))-(n*a*Vt))/(((Vmp-(Imp*Rs))*(Isc-Imp))-(n*a*Vt*Imp)). LTspice complains.. I don't know how to pass Resistances computed to the resistor, even though you explain in your video to say R=Rsh, it does not do it. Also, I can't have LTSpice compute any values, I have to use B(V) sources to do the math, as it refuses to multiply add, etc... the only way I have found to do it is through behavioral Voltage or current sources and put the equation. In your case, it works, and in my case it doesn't why? Any ideas?
Hi, great videos you are producing, many thanks for these. Regarding this one here I am trying to reproduce in LTSpice but I cannot find the Solardiode, you only quickly mention it as "built-in" into LTSpice, but I do not find any Solardiode, nor I can find any other hints on the internet. Please help, how can I include "SolarDiode" ?
I just used the generic diode simbol present in the LTspice, which I named "SolarDiode". The model definition is in the simulation ".model solardiode d(is=io n=a_n tref=temp)"
Stuff the cells if at one amp 6v at solaronix well since I got half anyway what about for a high current battery to replace acid types to run high current aultanator units or you could build like the bike kit we did 32v one amp input and after test hopefully it will draw charge at lower inputs on dynamo or solar??? should fit a 50mm frame but should with type design use run your 18650 charge each battery after a transformer HUD in your Tesla car??. Want to do a math with 3to seven band cells to see watt wise to length wether you can get a product for night time run use with a reflector or add a second cell on the laser pump laser beam lasers to a mm likely 10mm size to double it up to light absorbed by the cells silicone needs several depends on material types!. Where's them 9w cells I got! 😃😄😁😆😅5 Smiles.
This lesson alone might be worth one's yearly Patreon contribution!
beautiful - I learned so much more about pv modeling in LT spice but about LT spice usage at the same time, thank you so much!
wow what a timely video! I am working on sensors based on solar cells, so i needed some irradiance-dependent model. very helpful thanks!
Very helpful elaboration, thank You ❤
I can tell after examinating the model:
1. this model has no breakdown voltage, withstands many MegV. I know that this parameter is not published in datasheets.
2. keep in mind that panels available on market have usually reverse-protection diodes that changes the characteristics of PV module.
Nice... that's really handy for modelling solar systems!
Thank you for sharing this and the model itself, super helpful. I was looking at how to model various PV cells in a circuit, this has saved a ton of time.
Nice video - informative about solar panels and LTSpice! Great work!
As always, very informative.
Hi! Just for you to know: Andreas Spiess (the guy with the Swiss accent), another great youtuber I follow, mentioned the use of your LTspice PV model to demonstrate how come you do not really need solar panel optimizers :D
When I run this simulation exactly with same parameters it says "value of B1 is missing" what value should we consider for B1 as it is not given in the video, thanks
it is explained very well. I have a question
Why do the optimizers (Tigo, Huwaei, Solar-Ege etc.) that work at the solar module level do MPPT tracking.
According to your description, they could actually measure the instantaneous solar module open-circuit voltage, solar module short-circuit current and the solar module temperature (on the back of the solar module) then they didn't need to do MPPT, they already had Pmax.
Why do they take such a complicated route?
Wonderful! Very useful. Thank you!
The solar panel datasheet states 47°C nominal temperature. Doesn't that mean the parameters are specified for that reference temperature, and you should change the 25° used in the formulas? Maybe that could account for the small difference in the simulation? (I don't enough proficiency in LTSpice to test it myself)
The parameter values in the datasheet are given at STC, standard test conditions, which is 1000 W/m², 25°C and the AM1.5 standard light spectrum.
The nominal temperature or NOCT (normal operating cell temperature) is the temperature of the cells inside the module which can be expected under fairly average weather conditions.
Great introduction! Is it possible to get the LT- Spice Files ?
Thank you for the reply! The description contains only the text files. Is it possible to get the asc simulation file as well?
Thank you!
Hi, I tried to make the same circuit using the same param,eters and model but when the simulation is stopped before to run because the value B1 seems to be undefined. I cjecled a lot of time the circuit a any detail bu I didn't finfd a difference wrt your scheme . Can you help me, please?
very helpfull!
Thank you for this great lesson.
I've done everything in this simulation and gets error of undefined B1 value, any thought how to solve it?
There is a formula next to B1 in the simulation - defining the relationship between its current and "illu" voltage. This is the value of B1. Did you also add this?
yes i did.
i made everything the same however when i try to run it, i get this error
Error on line 5 : i§b1 0 n001 i=v(illu)/1000*iph
Unknown parameter "i"
Fatal Error: Missing current value for "b1"
my issue here 3:00
@@FesZElectronics
oh , my mistake was the current source i chose regular one instead of "bi" current source :)
again thanks for this video
@@FesZElectronics
I noticed this error was occurring also for other viewers - and I just wanted to ask you how did you get the component to be called "i§b1"... I'm sorry if I did not make this clear - it was a behavioral current source - only with that type of component can you add a formula; same goes for voltage sources - if you want a formula it needs to be of "behavioral" type.
👍👏
I was able to reproduce the single solarPV module IV curve but wasn't able to string them together in series and see double the voltage. Are there any other changes that have to be made to correctly measure the doubled voltage? Does the vout4 have to be defined a particular way?
Did you use component blocks or was it with a discrete implementation? Also regarding net names, in case the same name appears multiple time in the circuit, the nets will be short-circuited - maybe there are multiple instances of "vout4"
@@FesZElectronics It looks like my last response may have been removed. I attempted to make it with component blocks. I am not sure what a discrete implementation means exactly (newbie here). Net names are not overlapping, i don't think. Can net names within a component block be called from the graph viewer? If so, I will triple check that. When I use the solar cell model and connect multiple together, I DO see double the voltage, just not with the component blocks linked in series.
Hello Daniel, By discrete I was asking if you use the 4 component circuit to represent 1 solar cell, or the circuit block; but I think you cleared it up by saying you are using blocks; Net names from within the block should not matter; Maybe one thing to check is if the negative line of the block is ground - so the positive and negative lines should be independent of ground; you can look at the voltage in-between the 2 blocks in series - is it half the output or is it 0?
@@FesZElectronics This was it! It looks like i had forgotten to delete the ground when making the pv_module component block. Once I edited the netlist to refer to v- instead of 0 for the diode, shunt resistor, and voltage source, it worked. Thank you!
Happy I could help :D
Thanks for the video! I think your subcircuit file should have io=1e-6 instead of 1e06.
I see that further on in the video you corrected the problem . . . never mind . . .
In 10:20 what is the value taken to calculate Rs_t, in the denominator? Is it "Ib", or "16"? I can't either read it or think out..
Also in Rsht, is it "5" in the numerator? If yes, where the magic numbers come from, I suppose they are the parameters of silicon?
UPDATE: ok I used Your files and I see there is 5 and 16.
5 and 16 are magic numbers :D I think I found somewhat different values in the documentation, but with these the model seemed to be more accurate. I will be honest, I did not look deep enough to see what exactly these numbers represent.
Well, 16/5 is very close to 14/5, which is also very close to e (Eulers number), used in Io_t calculation for some reason. Maybe this is the reason these coefficients exist.
i am getting no value of current value for B1. how to solve?
I made same error for the current source select bi ( behavioral current source )
I am having issues with the 'Arbitrary Behavioral Voltage or Current Source' "B1 and later B13 in your more complex example. The error log is:
Error on line 8 : i§b13 0 n001 i=ipv_t*v(illu)/1000
Unknown parameter "i"
Fatal Error: Missing current value for "B13"
Please help
my netlist is:
R5 illu 0 100Meg
R2 N001 0 R=rsh_t
R3 v+ N001 R=rs_t
D1 N001 0 pvdiode2
V1 illu 0 {illu}
I1 v+ 0 PULSE(0 10 0 1 1) load
I§B13 0 N001 I=ipv_t*v(illu)/1000
.model D D
.lib ...\standard.dio
.tran 1
.temp 25
*.temp 10 25 70
.step param illu list 200 600 1000
*.param illu 1000
.param voc 44.71
.param isc 8.947
.param vmp 37.23
.param imp 8.06
.param tk_voc -0.0034
.param tk_isc 0.0005
.param voc_t voc*(1-tk_voc*(25-temp))
.param isc_t isc*(1-tk_isc*(25-temp))
.param vmp_t vmp*(1-tk_voc*(25-temp))
.param imp_t imp*(1-tk_isc*(25-temp))
.param a_n 1.3*voc/0.7
.param rs_t (voc_t-vmp_t)/(16*imp_t); 2 instad of 16 in original source
.param rsh_t 5*vmp_t/(isc_t-imp_t); 1 instead of 5 in original source
.param vt_t (1.38e-23*(273+temp))/1.6e-19
.param io_t ((rs_t+rsh_t)*isc_t-voc_t)/(rsh_t*exp(voc_t/(a_n*vt_t)))
.param ipv_t isc_t*(rsh_t+rs_t)/rsh_t
.model PVDiode2 D(Is=io_t N=a_n Tnom=temp)
.backanno
.end
I tried to simulate the netlist you gave, and got the same error; however if I deleted "I§" and just left "B13 0 N001 I=ipv_t*v(illu)/1000 " it seems to work... do you know how the "I§" got there? I guess multiple people have the same issue...
Please make videos on closed loop buck converter and different control algorithm
when I try to parametrize my own simulation LTspice complains "LTspice cannot resolve .param ...." In other words if I put an expression for example: .param Rsh=((Vmp-(Imp*Rs))*(Vmp-(Rs*(Isc-Imp)))-(n*a*Vt))/(((Vmp-(Imp*Rs))*(Isc-Imp))-(n*a*Vt*Imp)). LTspice complains.. I don't know how to pass Resistances computed to the resistor, even though you explain in your video to say R=Rsh, it does not do it. Also, I can't have LTSpice compute any values, I have to use B(V) sources to do the math, as it refuses to multiply add, etc... the only way I have found to do it is through behavioral Voltage or current sources and put the equation. In your case, it works, and in my case it doesn't why? Any ideas?
It turns out that If I use .param X = { Expression } it evaluates without issues.
Hi, great videos you are producing, many thanks for these.
Regarding this one here I am trying to reproduce in LTSpice but I cannot find the Solardiode, you only quickly mention it as "built-in" into LTSpice, but I do not find any Solardiode, nor I can
find any other hints on the internet. Please help, how can I include "SolarDiode" ?
please ignore this question, I found out by myself, I am quite a newbie with LTSpice
how and what did u figure out?@@grautvornix11
I just used the generic diode simbol present in the LTspice, which I named "SolarDiode". The model definition is in the simulation ".model solardiode d(is=io n=a_n tref=temp)"
Stuff the cells if at one amp 6v at solaronix well since I got half anyway what about for a high current battery to replace acid types to run high current aultanator units or you could build like the bike kit we did 32v one amp input and after test hopefully it will draw charge at lower inputs on dynamo or solar??? should fit a 50mm frame but should with type design use run your 18650 charge each battery after a transformer HUD in your Tesla car??. Want to do a math with 3to seven band cells to see watt wise to length wether you can get a product for night time run use with a reflector or add a second cell on the laser pump laser beam lasers to a mm likely 10mm size to double it up to light absorbed by the cells silicone needs several depends on material types!. Where's them 9w cells I got! 😃😄😁😆😅5 Smiles.