ソナー開発実験「三次元でのマイクの位置の変化を特定する系の開発3 PICマイコンによる音の制御」
今回もマイクの位置を三次元的に特定する系を開発しました。課題は「スピーカーの諸奇異オスのずれ」を修正することです。そのために、前回はトリガパルスを導入しました。トリガパルス以外の3つのスピーカからトリガパルスの整数倍の周波数を出します。そうすることで三箇所のスピーカーから出る音を区別できる、すなわちそれぞれの音の位相の変化を解析できます。
今回は、PICマイコンを用いてスピーカーから任意の周波数の音を出します。各スピーカーからトリガパルスの整数倍の周波数を出せば成功です。しかし、前回は指定どおりの周波数が出ませんでした。したがって、今回はこのトラブルシューティングを行いました。
問題点とその解決方法
まず、原因として
・PICマイコンとスピーカーの仕様
・PICマイコンへのプログラミングのミス
が考えられる。そのため、まずは4つのスピーカーすべてに初期位相(開始時間)をずらした上で、同じ周波数を出力するようにプログラミングを行い、コンピュータで周波数が一致するか調べた。
この結果が出てくる波形が止まればすべて同じ周波数が確かに出ていることがわかる。測定の結果すべてのスピーカーで同じ周波数が測定できた。
次に、トリガパルスに前回よりも高い周波数を用いた。他の3つのスピーカーも同様に周波数を高くした。すると今度はぴったりとトリガパルスの整数倍の周波数を出すことに成功した。
原因として、スピーカーで正確に出力できる周波数に限界があり、前回はその限界を超えてしまっていた。ということがわかる。
ここまでで、スピーカーの3つの位相をそれぞれ区別できるので、三次元でのマイクの位置の変化を特定する系の開発はほとんど完成する。
スピーカーによる出力周波数の限界を調べる
三次元でのマイクの位置の変化を特定する系の開発は成功の目処が立ったため、今度はスピーカーでプログラム通りに出力できる周波数の限界、すなわちその最大値と最小値を調べることにした。
具体的には、PICマイコンを用いて、周波数を定期的にずらしコンピュータで分析を行う。
そのため、まずはPICマイコンに、一秒ごとに10[Hz]ずつ周波数を大きくしてを出力するプログラムを組みことにした。
しかし、今回はこれがなかなか成功しなかった。理由として、PICマイコンで定義できる数値の領域の限界がある。周波数が500[Hz]を超えた時点で1[ms](1000分の1秒)よりも短い時間でプログラミングをする必要がある。その上で1秒間同じ命令を繰り返す。
当然1000以上の数値を扱わなければならない。しかし、PICマイコンでこのプログラミングを行うとマイコンの定義できる数値域を超えてしまうと正常に動かない。ちなみに
PICマイコンので定義できる数値の限界も資料を調査中である。
次回は、マイコンの仕様を考慮し、スピーカーで正確に出力できる周波数を特定します。