太陽電池を式を使用して計算シミュレーションしたものと、実験したデータとを比較しようと考えています。
前に質問させていただいたときに各パラメータの求め方を教えていただいたのですが、頭ではなんとなくわかるんですが、実際やろうとするとよくわかりませんでした。
太陽電池のI-V特性のグラフを出力する機器を使用してグラフ化したものが、添付した画像です。
直列抵抗成分:Rs
並列抵抗成分:Rsh
光電流:Iph
逆方向飽和電流:Is
ダイオード因子?:n or nVt
がどのように計算して(実際の値や式など)、それぞれがどういう値になるのかを教えていただきたいです。
初歩的な質問、そして前に回答をいただいたのに申し訳ありません。
よろしくお願いします。
No.1
- 回答日時:
前の質問(
http://oshiete.goo.ne.jp/qa/5925855.html)で回答した者です。実験データからパラメータを求めるには、回答No.2の添付図の式(1) と実験データを最小2乗法でカーブフィットするのが良いと思います。実験データの縦軸(電流)の単位は何ですか(A または A/cm^2)。横軸(電圧)の数字が重なってよく分かりませんが、開放電圧は 0.412V くらいでしょうか。それが分かれば最小2乗法の具体的な方法をお知らせします。Excelでできますが、ソルバーは使えますか。Excel 2007 なら、以下の手順でソルバーが使えるようにしてください。
(1) ワークシートを開いたときの左上隅の丸記号(Office ボタン)をクリック
(2) 下端の「Excelのオプション」をクリック
(3) 左側の「アドイン」をクリック
(4) 一番下の「設定」をクリック
(5) 「ソルバーアドイン」にチェックを入れて OK をクリック
その後、(1)から(3)までやってみると、「アクティブなアプリケーションアドイン」に「ソルバーアドイン」と出ています。この状態になっていればソルバーが使えます。実験データの個々の数値の組が分かればこちらで試して見ますが。
No.2
- 回答日時:
ANo.1です。
Excelのソルバーを使った最小2乗近似の方法を紹介します。以下は Excel 2007 での手順です(Excel97-2003でも可能ですが(7)の手順だけが異なります)。
【準備】
(1) 実測データを添付図のようにワークシートに貼り付ける(添付図ではB列とC列が実測データ)
(2) E3 から E7 のセルにパラメータの概略値を記入する(最後にこのパラメータを動かして実測値に近づけます)。この値の単位は D3 から D7 のセルの()に書かれているものにしてください。
(3) 実測データの右側に理論式から計算されるデータを生成する(この方法は後ろの【理論式から計算されるデータを生成する方法】に載せます)。添付図のD列はA列をそのままコピーしたもので、E列が電流の理論値です。理論値は E3 から E7 のセルの数値(青字)とD列の電圧値から計算します。
(3) 実測特性と理論特性のグラフを描く。添付図では青丸が実測値、ピンク色が理論特性です。
(4) まず、E3 から E7 のセルのパラメータの値を手動で変えて、実測特性とだいたい同じになるようにします(添付図のような近さで十分です)。光電流 Iph は短絡電流にほぼ等しいので、短絡電流の値を初期値とします。シャント抵抗は最初は 1000Ω 程度でいいです。Rs と飽和電流 Is と熱電圧 nVt (n*Vtの意味) を変えると特性が結構敏感に変わるので、これはグラフを見ながら実測特性に近くなるような数値にします(添付図の特性はqwe1232さんの質問にある発電特性を参考にしているので、だいたいこのような値でいいはずです)。なお、パラメータの単位が V や A に統一されていませんが、これは統一すると、Is などが非常に小さい数値になって、Excel のソルバーでうまく近似計算できなくなるからです。
(5) F列に実測値と理論値の電流の差の2乗の値を記入します。添付図の例では、F11 のセルに=(E11-C11)^2 と書いて、そのセルをコピーして、下の行にコピーします。
(6) F列の最後の行の下に、電流の差の2乗の総和を書きます。添付図の例では=SUM(F11:F25) と書けば計算されます。
【最小2乗近似】
(7) ソルバーアドインが有効になっていれば、ワークシートのメニューの「データ」をクリックすると、右上に「ソルバー」と出ていますので、これをクリックします。すると、添付図左下のようなウィンドウが現れるので、「目的セル」の右側の欄を(6)のセル位置とします。
(8) 「目的セル」の下にある「目標値」の右側の「最小」を選択します。
(9) 「目標値」の下の「変化させるセル」の右側の欄を、パラメータの数値のあるセル範囲(添付図の例では $E$3:$E$7)とします。(7)~(9)の設定によって、誤差の2乗が最小となるようにパラメータを振る(最小2乗近似)という動作をさせることになります。
(10) 右側の「オプション」をクリックして、その内容を添付図右下のような変更します。
制限時間 100
反復回数 1000
精度~収束 0.000000000001
「単位の自動設定」と「非負数を仮定する」にチェックを入れる
近似方法は「2次式」、微分係数は「中央」、探索方法は「共役傾斜法」にチェックを入れる
(11) 変更したら OK → 右上の「実行」をクリックすると最小2乗近似が始まります。しばらく待つと、「解が見つかりました・・・」と出ます。このとき、ワークシート上のパラメータの値とグラフの近似曲線も変わっていますが、うまく近似されているのなら、OK をクリックします。もし、パラメータの値がムチャクチャになっていたり、近似度が足りないの場合は、近似に失敗しています。その場合は、「元の値に戻す」をチェックして OK とします(そうすれば、近似前のパラメータの値に戻ります)。データによってはうまく近似できないときもあるので、最小2乗近似前のパラメータの値を別の値に変えるなどしてください。添付図の例ではうまく近似でき、以下のようになりました。
Iph (A) 0.148・・
Rsh (Ω) 1058.2・・
Rs (Ω) 0.107・・
Is (pA) 3482.9・・
nVt (mV) 26.2・・
文字数の制限のために、この続きは次の回答に書きます。
No.3
- 回答日時:
ANo.2の続きです。
【理論式から計算されるデータを生成する方法】
(1) ワークシート上で Alt キー押しながら F8 (ファンクションキー)を押し、マクロ名のところに a を半角で記入し、「作成」をクリック
(2) 出てきた画面上の Sub a() と End Sub を消して以下のコードを貼り付ける(以下の文をコピーしペーストすればいい)
Function I(Iph, Rsh, Rs, I0, nVt, V)
If Iph < 0 Or Rsh < 0 Or Rs < 0 Or I0 < 0 Or nVt < 0 Or V < 0 Then I = "" Exit Function End If Dim eps As Single, a As Single, x As Single, x0 As Single, x1 As Single eps = 1 / 10 ^ 6 ' --- 相対計算精度
x0 = -2 * Iph
x1 = Iph ' --- I の値を x0 から x1 の範囲で探す
I0 = I0 / 10 ^ 12 ' --- pA → A
nVt = nVt / 1000 ' --- mV → V
While Abs((x0 - x1) / (x0 + x1)) > eps
x = (x0 + x1) / 2
a = (V + x * Rs) / nVt
If a > 700 Then a = 700 ' --- exp 計算のオーバフロー防止
If Iph - (V + x * Rs) / Rsh - x - I0 * (Exp(a) - 1) > 0 Then
x0 = x
Else
x1 = x
End If
Wend
I = x
End Function
(3) 貼り付けたら、 Alt キー押しながら Q を押すか、ウィンドウの×ボタンで編集画面を終了させる
(4) ワークシートに戻って、添付図の E11 のセルに=I($E$3,$E$4,$E$5,$E$6,$E$7,D11)と記入し(この式をコピー&ペースト)、Enter を押すと計算値がそのセルに表示されます。$E$3,$E$4,$E$5,$E$6,$E$7 はパラメータのあるセル位置で、D11 は電圧値のあるセル位置です。
(5) E11 のセルをコピーして、E12 以下の、データのある行を全て選んでペーストします。これで、D列の電圧に対する計算値の表が作れます。
【セキュリティレベルの変更】
マクロを含むExcelファイルを開くとき、セキュリティレベルによってはマクロが実行できない場合があります。その場合、以下の手順でセキュリティレベルを変更してください。
新規にワークシートを作成して、左上隅の丸(Officeボタン)をクリック→下端の「Excelのオプション」を選択→左側の「セキュリティーセンター」を選択→右下の「セキュリティーセンターの設定」をクリック→左側の「マクロの設定」をクリック→「すべてのマクロを有効にする」を選択 → OK → OK → Excelの終了(保存しない)→ マクロを含むExcelファイルを開く
No.4
- 回答日時:
ANo.3のマクロコードの改行記号が抜けていました。
以下が正しいコードです。Function I(Iph, Rsh, Rs, I0, nVt, V)
If Iph < 0 Or Rsh < 0 Or Rs < 0 Or I0 < 0 Or nVt < 0 Or V < 0 Then
I = ""
Exit Function
End If
Dim eps As Single, a As Single, x As Single, x0 As Single, x1 As Single eps = 1 / 10 ^ 6 ' --- 相対計算精度
x0 = -2 * Iph
x1 = Iph ' --- I の値を x0 から x1 の範囲で探す
I0 = I0 / 10 ^ 12 ' --- pA → A
nVt = nVt / 1000 ' --- mV → V
While Abs((x0 - x1) / (x0 + x1)) > eps
x = (x0 + x1) / 2
a = (V + x * Rs) / nVt
If a > 700 Then a = 700 ' --- exp 計算のオーバフロー防止
If Iph - (V + x * Rs) / Rsh - x - I0 * (Exp(a) - 1) > 0 Then
x0 = x
Else
x1 = x
End If
Wend
I = x
End Function
No.7
- 回答日時:
ANo.4のコードですが、1箇所、改行が抜けていました。
6行目のDim eps As Single, a As Single, x As Single, x0 As Single, x1 As Single eps = 1 / 10 ^ 6 ' --- 相対計算精度
は
Dim eps As Single, a As Single, x As Single, x0 As Single, x1 As Single
と
eps = 1 / 10 ^ 6 ' --- 相対計算精度
の2行に分けてください。
No.8ベストアンサー
- 回答日時:
ソルバーの実行前後の結果を添付します。
実は、ここで使った実測データというのは、以下のパラメータで理論式から作ったものです。
Iph = 0.15 A
Rsh = 100 Ω
Rs = 0.1 Ω
Is = 3000 pA
NVt = 26 mV
最小2乗による近似結果は、Rsh を除けば、真の値に近い値が得られています。Rsh が大きいときは、最小2乗による近似を行っても、精度の高い値が得られないことに注意してください。
本当に分かりやすく書いていただきどうもありがとうございました。
自分のようなものでもきれいなVIカーブを描き出すことができました。
しかし求めた結果より少しおかしいかなと思う点がありました。
少しまた分からないので、お暇であればできればそちらのほうも見ていただければと思います。
http://okwave.jp/qa/q5970407.html
図々しく質問してもうしわけありません。
本当にありがとうございます。助かりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(自然科学) LEDの接続について 2 2022/09/16 22:18
- 電気工事士 6.6kVケーブル単芯325sq-1.5kmの遮蔽銅テープ抵抗値は何Ω? 1 2023/05/02 21:06
- 工学 変圧器の短絡試験を行ったのですが、誤ってインピーダンス電圧を測定し忘れ、その他諸々の計算値が出せない 6 2022/07/03 01:11
- スピーカー・コンポ・ステレオ 電気交流の実効値と値が違う平均値ではオームの法則が成り立たない理由を教えて下さい。 4 2022/05/02 09:53
- プラモデル・鉄道模型・模型製作 ジオラマで使いたく電気部品のど素人なのですが 発光ダイオードで300個ほど付けたくて同じような物を使 2 2022/10/03 19:45
- 環境・エネルギー資源 太陽光発電の三相3線式と単相3線式の電圧降下について 5 2023/07/20 14:58
- 一戸建て 注文住宅の総費用について 2 2022/08/13 17:12
- その他(自然科学) 科学技術計算の仕事について 2 2023/02/04 18:09
- 環境・エネルギー資源 遠隔地の太陽光の自宅利用 4 2023/02/28 05:55
- 電気工事士 電気の問題なんですが 最大目盛30V内部抵抗20kΩの電圧計に接続して、最大目盛300Vの電圧計を作 1 2022/10/08 23:37
このQ&Aを見た人はこんなQ&Aも見ています
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ガロアの論文の原本は見ること...
-
中学生男子は同級生の女の子を...
-
今ラーメンを食べに来てますが ...
-
プレデターのシュワちゃんみた...
-
シンギュラリティは、いつ来ま...
-
防虫剤について質問!! 食害を...
-
西オーストラリア州の英語科に...
-
鈴木祐さんの『最強のコミュ力...
-
昔の日本人は、直立する時に膝...
-
国際情勢の学び方
-
判子に朱肉つけて下にゴムをし...
-
第3問の決算整理の問題が苦手で...
-
[至急お願い致します]零相電圧...
-
司法予備試験の基礎固めの段階...
-
マリオに出てくるような無限階...
-
「ちまちま」を使用した前向き...
-
学校でなにか悩んでいることが...
-
学歴=知性なのでしょうか? 東...
-
ピノキオの中盤辺りに島の遊園...
-
あなたが日々、御自分で課題や...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
女じゃダメなんですか?
-
台形の高さを知りたいです
-
戦争に召集されたら、どうしま...
-
学歴=知性なのでしょうか? 東...
-
以前使われていた電子頭脳と言...
-
INFP-aとINFP-tの違いを教えて...
-
人気はあるけど自分は好きでは...
-
表面積、体積比の計算過程はあ...
-
女の子の名前で「あさ」という...
-
食塩水の濃度の計算について 「...
-
【CBT形式の国家試験】CBT検定...
-
危険物乙4の燃焼範囲の計算問...
-
百人一首
-
教えて!
-
神が人を作ったとしたら、人に...
-
誰に産まれるかで決まったしま...
-
パクリの語源って韓国の人名の...
-
世の中の実践的なことを色々学...
-
進化の過程 人の起源は確か、ホ...
-
介護福祉士を早く取りたい
おすすめ情報