SSブログ

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

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