秋月ファンクラブ掲示板

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マクロ有効ブック」としてください。


残り1件

  1. [3460] 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マクロ有効ブック」としてください。
    Excel VBAで太陽電池の電流−電圧特性を計算する方法
    inara1 2017/10/06 07:17 *
    1. [3613] 今回作成したVBAコードを以下に添付します。電流を引数として電圧を求めるユーザ関数です。Iphは光電流[A]、Rpは並列抵抗[Ω]、Rsは直列抵抗[Ω]、I0はダイオードの飽和電流[pA]、Vtは熱電圧[mV]、Iは出力電流[A]です。I0とVtの単位に注意してください。

      Function V(Iph, Rp, Rs, I0, Vt, I)
      If Iph < 0 Or Rp < 0 Or Rs < 0 Or I0 < 0 Or Vt < 0 Or I < 0 Or I >= Iph Then
      V = 0
      Exit Function
      End If
      Dim eps As Single, a As Single, x As Single, x0 As Single, x1 As Single

      eps = 1 / 10 ^ 6 ' --- 相対計算精度
      I0 = I0 / 10 ^ 12 ' --- I0の単位をpAからAに変換
      Vt = Vt / 1000 ' --- Vtの単位をmVからVに変換
      x0 = 0
      x1 = Vt * Log(1 + Iph / I0) ' --- V の値を x0 から x1 の範囲で探す

      While Abs((x0 - x1) / (x0 + x1)) > eps
      x = (x0 + x1) / 2
      a = (x + I * Rs) / Vt
      If a > 700 Then a = 700 ' --- exp 計算のオーバフロー防止
      If Iph - (x + I * Rs) / Rp - I - I0 * (Exp(a) - 1) > 0 Then
      x0 = x
      Else
      x1 = x
      End If
      Wend
      V = x
      End Function
      Re: Excel VBAで太陽電池の電流−電圧特性を計算する方法
      inara1 2018/01/12 06:22