• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:前回、その前回の質問でパラメータを求めだすことができました。)

決定したパラメータの熱電圧nVtの桁が少しおかしい?

inaraの回答

  • ベストアンサー
  • inara
  • ベストアンサー率72% (293/404)
回答No.1

実験データを読み込んでこちらでもやってみました。添付図にその結果を載せましたが、理論特性の形は qwe1232 さんと同じですからソルバーの使い方は問題ないと思います。こちらでの近似結果は以下のようになりました    Iph = 0.158A    Rsh = 1046.3Ω    Rs = 0.677Ω    Is = 2.68nA    nVt = 232.5mV nVt が大きい原因は以下の3つが考えられます。    (1) 測定した太陽電池が、単接合セルを複数直列接続したものか、あるいはマルチバンドギャップ(タンデム型)構造になっている    (2) 単接合セル自身のダイオードファクタ(n値)が大きい    (3) 電極のオーミック性が悪く、接触抵抗が印加電圧によって大きく変化している Vt というのは熱電圧と呼ばれるもので(添字の t は thermal の頭文字)、その値は k*T/q ( k はボルツマン定数、T は絶対温度、q は電子の電荷)ということはお分かりだと思います。単接合セルでは、この値は室温(T=300K)で 26mV くらいの値です。また、単接合セルの開放電圧は 0.6V くらいになります。測定した太陽電池の nVt と開放電圧がこの数倍と大きいことから、測定したセルが単接合セルを直列接続したものか、あるいはマルチバンドギャップ構造と思われます(その場合、nVt と開放電圧は、単接合セルの直列接続数倍、あるいはタンデム数倍になります)。最小2乗近似の結果、n*Vt が 232mV となったことから単純計算すると、n は 9 程度になりますが、もし直列接続した数がこれくらいであれば辻褄が合います(タンデム型で9接合というのはまずないでしょう)。 直列接続数が9より小さいのなら、 nVt が大きい原因は(2)または(3)になります。(2)の場合、pn接合を流れる電流が拡散電流によるものなら n = 1、再結合電流によるものなら n = 2 となりますが、現実にはこの両方の寄与があるので、n の値は通常 1 と 2 の間の数値になります。n = 1.5 の単接合セルを6個直列接続すれば nVt が 9 くらいになってもおかしくはありません。 (2)と(3)が複合している場合は、単接合であっても n値は 2 を超えます。電極(アノード)とセルのオーミックコンタクトが不十分で、この界面に寄生ダイオードができてしまっている場合、その寄生ダイオードの n値が加算されるので、デバイス全体の電圧-電流特性の nVt の n の値は2 より大きくなります(単接合で n = 4~6 というのもあり得ます)。 >式を " I = " の形にすることができず この式は I = の形にはできません。この式は初等関数では解の形を表わすことができない方程式なので、マクロのプログラムでは、その式が成り立つ I の値を x0 からx1 の範囲で数値的に求めています(2分法という方法を使っています)。

qwe1232
質問者

お礼

分かりやすい回答ありがとうございました。 何度も対応していただき感謝しています。 本当にありがとうございました。

関連するQ&A

  • 太陽電池を式を使用して計算シミュレーションしたものと、実験したデータと

    太陽電池を式を使用して計算シミュレーションしたものと、実験したデータとを比較しようと考えています。 前に質問させていただいたときに各パラメータの求め方を教えていただいたのですが、頭ではなんとなくわかるんですが、実際やろうとするとよくわかりませんでした。 太陽電池のI-V特性のグラフを出力する機器を使用してグラフ化したものが、添付した画像です。 直列抵抗成分:Rs 並列抵抗成分:Rsh 光電流:Iph 逆方向飽和電流:Is ダイオード因子?:n or nVt がどのように計算して(実際の値や式など)、それぞれがどういう値になるのかを教えていただきたいです。 初歩的な質問、そして前に回答をいただいたのに申し訳ありません。 よろしくお願いします。

  • 太陽電池 温度特性

    太陽電池の温度特性を計算によって求めたいと思っています。 太陽電池は理論通りだと、温度が上昇すると最大電力は下がっていくはずです。 実際に実験を行うと、温度に比例して最大電力は小さくなっていました。 そして、これを計算によって求めようと思い、下の式にパラメータの値を代入して、 プログラムを組んで最大電力を求めてみました。 その結果、最大電力は温度が上昇するにつれ、上がってしまうというおかしい結果になりました。 実験結果と、シミュレーション結果を比較したいので、理論どおりに行かないシミュレーションでは、 問題があります。 そこで、どのようにすれば、シミュレーションが理論どおりの値を示してくれるでしょうか? 一応使用したプログラムも貼り付けておきます。 よろしくお願いします。 以下、使用した式です。 I = Iph - Is * [ exp { ( V + Rs * I ) / n * Vt } - 1 ] - ( V + Rs * I ) / Rsh Iph;光電流、Is;逆方向飽和電流、n;ダイオード因子、k;ボルツマン定数、q;電荷素量、T;絶対温度、Rsh;シャント抵抗、Rs;直列抵抗 上のパラメータは全て値は決定しているとします。(IとVが変数です) 以下プログラムです。 #include <stdio.h> #include <stdlib.h> #include <math.h> #define eps 1.0e-6 //収束条件 double Iph=0.25; //[A] double Rsh=45; //[Ω] double Rs=0.3; //[Ω] double Is=100e-12; //[A] double nVt=0; //[V] double V=0,vx=0; //[V] double a=0; double f(double x); void nibun(void); int main() { nibun(); return 0; } void nibun(void) { int count; double x0,x1,m; double p,pmax,i; double t; double q=1.60217733e-19; //電荷素量 double k=1.3806504e-23; //ボルツマン定数 double n=1.97; //ダイオード因子 printf("温度?\n"); scanf("%lf",&t); nVt = n * ( (k/q) * (t + 273.15)); for(V=0;m>0;V+=0.0001){ count=0; x0=-2*Iph; x1=Iph; do { count++; m=(x0+x1)/2.0; if(f(m)*f(x0)<0) x1=m; else x0=m; //700回ループで未収束→終了 if(count==700) { printf("Error\n"); exit(1); } } while (!(fabs(x0-x1)<eps)); //収束後ループ終了 p=V*m; if(p>0){ if(pmax<p){ pmax=p; i=m; vx=V; } } } printf("最大電力点 : V=%lf I=%lf P=%lf",vx,i,pmax); } double f(double x) { return(Iph - Is*(exp(((V+x*Rs)/nVt)-1)) - (V+x*Rs)/Rsh - x); }

  • 太陽電池のモデル実験をしたいと思っています。

    太陽電池のモデル実験をしたいと思っています。 I = Iph - Is {exp(v/n*Vt)-1} - v/Rsh Iph;光電流、Is;逆方向飽和電流、n;ダイオード因子、Vt;kT/q(k;ボルツマン定数、q;電荷素量、T;絶対温度)、Rsh;シャント抵抗 という方程式を用いて、計算シミュレーションすることで、実験値と比較したいと考えています。 質問は以下です。 方程式を使用して、実際の太陽電池のIV特性を調べるために、その太陽電池の各パラメータが必要になりますが、その測定法がわかりません。 (1)光電流;Iphは太陽電池の端子に電流系を直列に接続し、測定する。で大丈夫でしょうか。 (2)逆方向飽和電流;Ishの測定方法は何もわからないので、どのように測定すれば良いか教えてください。 簡単な質問を。と思うかもしれませんが、インターネット等で調べたつもりですが分かりませんでしたので、初心者ということでよろしくお願いします。

  • V$SGAとV$PARAMETERの確認

    Oracle9iにおけるDBにおいて、 SQLによる検索速度の向上の パフォーマンスチューニングを 行わなければならなくなりました。 まず、 テーブルV$SGAとテーブルV$PARAMETERの 値を見ろと言われましたが、 パラメータAが値Bだから値Cにしろとか パラメータDが値Eだから、メモリを積めとか 定量的な対策ができるものではないらしいです。 V$SGAとテーブルV$PARAMETERって 知ってると何か特なことあるのでしょうか? ご教授宜しくお願いします。

  • 2端子回路のパラメータ?

    2端子回路におけるFパラメータを求めよという問題についてです。 |Z0|=√(|Z1||Z2|) θ=2tanh-1√(|Z1|/|Z2|) Z0,e^θの値はそれぞれ決まっています。 また2端子回路において状態を決定するにはA~Fの6のパラメータが必要であり、 e1=Ai1+Bi2+Ce2 e2=Di1+Ei2+Fe1 の2式で表せ、さらにこれは e1=Ae2+Bi2 i1=Ce2+Di2 で表す事ができます。このA~DをFパラメータというらしいのですが、その値をどのようにして出せばいいのか分かりません。 A=e1/e2,B=e1/i2,C=i1/e2,D=i1/i2 Z01=√(AB/CD) Z02=√(DB/CA) という関係式も分ています。 私の考えでは、Z0,θの値が求まっているのでそれからZ1,Z2を求める。それを使ってABCDを出そうと思ったのですが、Z1とZ01が同じものなのか分かりません。(Z01、Z02は影像インピーダンスというものです) 分かりにくいとは思いますが、どなたか教えてください。

  • Excelによるパラメータ推定

    http://aoki2.si.gunma-u.ac.jp/Hanasi/StatTalk/solver.html このページを参考に、ハフモデルの魅力度を求め、パラメータの推定を行おうとしているのですが、 魅力度は未知であり、またパラメータも未知なのでどのようにして推定をしていいかわかりません。 魅力度の式は  Wj=Sj^θ1×Σ(Oi/Tij)^θ2 Wj;魅力度 Sj;売場面積 Oi;所要時間に関する人口の重み Tij;iからjへの所要時間 で、 既知な値はSj、Oi、Tij  です。 頭が混乱して質問の意図が明確になってないかもしれません・・・ よろしくお願いします。

  • 実験から複数のパラメータの値を決定する方法の名前

    調べても数値解析の方法名しかヒットしなくて手詰まりで困っています. ある研究で欠陥が発生する原因としてA,B,Cのパラメータのそれぞれに問題があると考えられます.そのパラメータの最適な組み合わせを実験から得るという方法の名称を知りたいのですが, 具体的な実験手順は まず,それぞれに基準値(欠陥が発生する値)を設け, Aを±で変化させて(B,Cは固定)Aを変えることでどのような傾向があるかを調べ, 値はその後,良い傾向を示した数値の中点を取って絞り込みをしていきます. そして問題が解決されると考えられる値が決定したところで その”新しいA”の値とCの値を固定して同様にBの値を決めていくといった方法なのですが この手順の名前がわかりません. このような実験方法の名前を教えていただけませんか?

  • ダイオードの静特性 計測

    ダイオードの静特性 計測 1s1588という型番のダイオードを使用して計算値、実験値と比較してみました。 まず、 I=Is*{exp(V/nVt)-1} [Vt=kT/q] のショックレーのダイオード方程式に値を代入して計測してみたところ、 Is=10^-14[A] , n=1 (理想D) , Vt=0.0257[V](標準温度25℃) として、かつexp>>1より、 -1 の項を除去し、 I=10^-14 * (exp(V/0.0257) として、Vを0.02[V]ずつ変化させて計算しました。 逆方向飽和電流Isの値は、下記URLのデータシートより確認しようとしたところ、どれを見て良いか分からず http://www.madlabo.com/mad/book/device/1s1588.PDF SPICEよりI=10^-14[A]という値を決定しました。 そして、実際に1s1588を使用して、計測したところ、大きく差がでてしまいました。 特に0.6[V]あたりからの値の変化の仕方が著しく異なり、 どちら側もいわゆるダイオードの静特性のグラフの形にはなっているのですが、0.8[V]などでの値の上がり方が大きく違い、 ショックレーの方程式で計算した結果では爆発的に上昇しているが、実験値では比べると非常に緩やかに上昇していきました。 一応測定グラフを貼り付けておきます。 【質問】 どうしてこのように方程式での計算値と実験値の値に大きな差が生じたのか原因が分かる方がいれば教えていただきたいです。 自分で考えた原因としてはやはりSPICEから引用したIsの値のとり方が間違えているのかと考えましたが、 データシートよりどのように値を決定すればよいかわかりません。 もし原因がそこに当てはまるということであれば、Isの値を教えてください。 また、原因がこれではなく他にあるなら、その原因というのも教えていただきたいです。 よろしくお願いします。

  • javascriptでGETパラメータを扱う

    javascript初心者です。 javascriptでURLをGETパラメータとして取得して、その値を HTMLのaタグのリンク先に指定しようとしています。 こんな感じに出来たらいいと思っています。 ↓ <a href="[GETパラメータで取得したURL]">[GETパラメータで取得したURL]</a> GETパラメータの取得は自力で調べて下記のように記述すればできることがわかりましたが、 aタグのリンク先に指定する記述方法が分かりません。 助けてください。 よろしくお願いします。 <script type="text/javascript"> function getUrlVars() { var vars = [], hash; var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); for(var i = 0; i < hashes.length; i++) { hash = hashes[i].split('='); vars.push(hash[0]); vars[hash[0]] = hash[1]; } return vars; } </script>

  • pn接合ダイオード

     学校の実験でpn接合ダイオードの特性についてやっていて、実験で得られた値から、pn接合ダイオードの電流と電圧の関係を表した式I=Is((e^qV/nkT)-1)のIsとnを求めたいのですが、求め方がlogIとVのグラフを書いて、その傾きからnを切片からIsを求めるとまではわかるのですが、実際の計算がどうすればいいのかわかりません。  片対数グラフで縦軸にlogI、横軸にVを取ると右上がりの直線がプロットされましたが、この時の傾きを求めるのは(V,I)=(0.5, 0.2)(0.6, 2.0)だった場合傾きa=(log2.0 - log0.2)/(0.6 - 0.5)という求め方でいいのでしょうか?しかしこれだと答えが10となり、nの値としてはおかしいですよね?