So-net無料ブログ作成

E24系列の計算を行う関数を作った [電子工作]このエントリーを含むはてなブックマーク#

E24系列の値を求める関数を作成しました。

E24系列というのは、抵抗などの値に使用される数値の並びのことです。 1から10までの間を24の数値でほぼ等比分割しています。 ところが、これらの数値は完全な等比関係にあるわけではありません。 テーブルを使って値を求める方法もあるのですが、さる理由から関数に仕立て上げてみました。

' Omega is PI/12.
Private Const Omega As Double = 3.14159265358979 / 12

' Ln24 is LOG(10**-24)
Private Const Ln24 As Double = 2.30258509299405 / 24

Public Function CalcE24(ByVal x As Double) As Double
  Dim R As Double
  R = 1
  R = R _
    + 0.0100001 _
    - 0.0193252 * Cos(1 * Omega * x) _
    + 0.0070975 * Cos(2 * Omega * x) _
    - 0.0020583 * Cos(3 * Omega * x) _
    + 0.0037966 * Cos(4 * Omega * x) _
    + 0.0001574 * Cos(5 * Omega * x) _
    + 0.004413 * Cos(6 * Omega * x) _
    + 0.0013219 * Cos(7 * Omega * x) _
    - 0.0027041 * Cos(8 * Omega * x) _
    - 0.0029183 * Cos(9 * Omega * x) _
    - 0.0026354 * Cos(10 * Omega * x) _
    + 0.0010465 * Cos(11 * Omega * x) _
    + 0.001808 * Cos(12 * Omega * x)
 R = R _
    + 0.0034761 * Sin(1 * Omega * x) _
    - 0.0037331 * Sin(2 * Omega * x) _
    - 0.0024473 * Sin(3 * Omega * x) _
    - 0.0008674 * Sin(4 * Omega * x) _
    + 0.0024085 * Sin(5 * Omega * x) _
    - 0.0024512 * Sin(6 * Omega * x) _
    + 0.003231 * Sin(7 * Omega * x) _
    + 0.0041405 * Sin(8 * Omega * x) _
    - 0.0019662 * Sin(9 * Omega * x) _
    - 0.003133 * Sin(10 * Omega * x) _
    - 0.0050543 * Sin(11 * Omega * x)
  CalcE24 = Exp(x * Ln24) * R
End Function

これは、Visual BASICの関数です。 xが整数値になったときに限りE24系列の数値が現れます。 例えば、0の時には1.0Ω、89(24*3+17)の時には5.1kΩ、の値が得られます。

プログラムのうち、"Exp(x * Ln24)"の部分が理想的な等比数列をあらわしています。 そして、理想的な値からの誤差を計算しているのが、"R"です。

"R"は、フーリエ級数によって求めています。 フーリエ級数のための係数は、逆フーリエ変換でも求まるのですが、今回は、Excelの「ソルバー」という仕組みを使って計算させました。


何で、こんな関数が必要だったかというお話は、また後日。


nice!(1)  コメント(2)  トラックバック(0)  このエントリーを含むはてなブックマーク#

nice! 1

コメント 2

hamayan

うーん、MUSIC STICKでE24系列を使った時の時定数の計算とか。
by hamayan (2008-07-16 20:39) 

noritan

MUSIC STICKの場合、マイコンが数値処理をするから、マージンさえとってあれば値は問わないのです。

問題は、「抵抗でプログラム」する場所です。

by noritan (2008-07-16 21:31) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。