「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



掛け算だった…

割り算、割り算って固定観念があったせいか、
計算式を整理しなおすまで32ビット割り算が
必要なものとばかり思ってしまった。掛け算だった…

よく考えてみれば、角速度ωが大きくなれば周波数
も大きくなる(ω=2πf)なんだから、周波数が
大きくなれば角速度も比例するに決まってる…。
割り算は定数の範囲内だから電卓で充分なんだよな。
ちゃんと紙に書いて計算しとけば事前にわかったはず
なのに…。あと三本毛が生えてこないかな…


プログラム中では周波数に対して定数を掛け算すれば
sinテーブル参照のインデックス値が求まるってこと。
理論上はそれだけの話。

問題は計算精度。

折角だから計算精度は高い方がいいに決まってる…。
んだけど、電卓計算の結果をひとたび定数値にして
プログラム上に組み込んでしまえばその時点で
計算精度は確定してしまうから、念入りに机上計算
してみることに。


現状は、sinテーブルの要素数を4096点、計算過程は
32ビット精度(整数部16ビット、小数部16ビット)、
サンプリング周波数(割り込み周期)を80000Hzと
仮定してで計算すると誤差は132ppmほど。うーん、
イマイチ。

割り込み周期かテーブル要素数を変更することを考えると…

sinテーブルの要素数を8192点とすると17ppm。
一方4096点のままサンプリング周波数だけもうちょっと
上げて100000Hzとすると…やっぱり132ppm程度の模様。

さすがにセラロックやRC発振回路程度の精度では
お話にならないので、17ppm程度は確保したいところ。
8192点にするかな…。



コメント ( 0 )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする