秋月ファンクラブ掲示板

No.3460へ返信

記事投稿フォーム
補助
送信

inara1(2017/10/06 Fri 07:17) [ 編集 ] [ 返信 ]

Excel VBAで太陽電池の電流−電圧特性を計算する方法

PNG 720x2646 541.4kb

Yahoo知恵袋の回答の補足にここを使わせてください。

左上の画像をクリックすると拡大表示されます。Excel2010とExcel2016で動作することを確認しました。

貼る付けるVBAコードはこれです。この文章をコピー&ペーストしてください。
ここから↓
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 ' --- I0の単位をpAからAに変換
nVt = nVt / 1000 ' --- nVtの単位を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
↑ここまで

このプログラムは、I(Iph, Rsh, Rs, I0, nVt, V)という関数を定義しているものです。中身は2分法で電流を計算しています。ワークシートのセルに
=I(Iph, Rsh, Rs, I0, nVt, V)
と書けば、I-V特性の縦軸の電流(A単位)を計算してくれます。
Iphは光電流(A単位)、Rshは並列抵抗(Ω単位)、Rsは直列抵抗(Ω単位)、I0は飽和電流(pA単位)、nVtは理想係数×熱電圧(mV単位)、VはI-V特性の横軸の電圧(V単位)です。

Excelシートを保存するときは、ファイルの種類を「Excelマクロ有効ブック」としてください。