音声周波数検知(Audio FRQ Sensor) の概要


1 AFS(Audio Frequency Sensor) の概要


  電話などで使う信号の検出のために、XR2211という素晴らしいデバイスがあり、これを従来から良く使ってまいりました。その応用の一つに、外付けのボリュームで検知する周波数を指定できるという機能があります。ただ、複数の周波数を検知する場合には、数個のXR2211を実装しておりました。それで、それを1個のデバイスでカバーできないだろうか・・・というのが、このデバイスを開発する動機になっています。


  100Hzから6300Hzまで信号を100Hz間隔で検出し、それらの内の選択された10個の周波数が設定レベルを超えていると該当の外部端子をアクティブにします。言い換えると、これは高速フーリエ変換(FFT)の応用で、同時に63種類の周波数のレベルを検出し、その内の選択された10個をあらかじめ設定しているレベルを超えたものについてONします。


  上の出力を、アクティブ・ハイで出すかアクティブ・ローで出すかを外部端子の設定で変更できます。


  外付けボリュームにより、どのレベルから検知するかのスレッショールドを設定することができます。


  63種類の周波数を10個のどの出力端子に割り当てるかを、簡単な付加回路(図4)とパソコンにインストールする専用アプリケーション(FFTのリアルタイム波形を見ながら)からデバイスの不揮発メモリに登録することができます。


  また、外付けのボリュームを使わない場合のスレッショールドも上記と同様に不揮発メモリに登録することができます。


  センサーという用途以外に、この設定用のアプリケーションを使用してFFTの波形を観察しながら、6300Hz以下の低周波信号の分析に使用することができます。


 なお、このデバイスまたは設定基板をお分けします(基板実装写真の項を参照)。


 

2 もっとも単純な使用法

あらかじめ、ディフォールトで設定されているスレッショールド・レベルと出力周波数選択で良ければ 1) の回路で、すぐに使えます。出力周波数選択は、表 1) の通りです。検知したい周波数が表の中にあれば、この使い方でそのまま利用できます。

図1)

 

出力端子名

選択周波数(Hz)

OT1

   300

OT2

   600

OT3

  1000

OT4

  1200

OT5

  2000

OT6

  2500

OT7

  3000

OT8

  4000

OT9

  5000

OT10

  6000

ディフォールトのスレッショルド・レベルでは、単純なSIN波を入力した場合、図1) 「信号入力」位置で測定して、約-15+5dBmまで検知します。 +5dBm 以上の入力では歪んで他の周波数も検知しますし、また -15dBm 近辺でも検知モレが出ますので、対象の信号を -10+3dBm程度の入力レベルにして使用してください。

この上記した入力レベルをご記憶ください。これから外れたレベルでテストされた方から、動作しませんと連絡がまいる事があります。よろしくお願い申し上げます。

出力(OT1OT10) は、アクティブ・ハイ(5V)です。もしアクティブ・ロー(0V)で使用したい場合は、PIN5(_REVOT) GNDに落とすと、そのモードになります。この単純な使用においては、このPIN5以外の空きピンは未接続(オープン)で使用してください。

 表 1)

実際の利用法としては、この使い方がもっとも回路が簡単で使い勝手が良いと思います。設定がディフォールトに無い場合は、あらかじめ、【4】で紹介している調整方法で、必要となる出力端子への選択周波数とスレッショルド・レベルを設定しておけば、目的に合ったデバイスとしてスマートに使えるからです。

3 外付けVRで、スレッショルド・レベルを変更する

外付けボリュームを付けて、検知するレベルを変更できるようにするには、図2) のようにします。

図2)

このボリュームの調整により、どの信号入力レベルから検知するかを変更できるようになります。ただし、ボリュームを下げすぎるとあらゆる信号を検知してしまいますので、実際にテストしながら最適値を設定してください。もちろんこの場合も、PIN5(_REVOT) GNDに落とすことによる、出力PINのアクティブ・ローの選択ができます。また、選択している周波数は、不揮発メモリに記録されているものが使われます。なお、スレッショールド・レベルとPIN3の電圧の関係は、10) に示していますので参考にしてください。



4 アプリを起動して全ての調整・確認・設定を実行する

1.    アプリケーションのインストール

汎用製品価格表のFFT_AFS用ページにある「AFS設定・モニターソフト」のリンクからダウンロードしてインストールしてください(この説明書もPDFで入っています)。起動時の初期画面は図3)のようになっています。

このアプリケーションの目的は、デバイスの10個の出力に、必要とする周波数を割り当てること、更に出力端子がアクティブになるスレッショールド・レベルを決定することです。そして、それらの値を最終的に不揮発メモリに記録することです。これらが主目的ですが、これ以外に音声信号の簡易な高速フーリエ変換(FFT)波形の観測や解析のためにも利用できます。


  図3)

 

2.    アプリとデバイスを接続するための付加回路

アプリケーションとデバイス間は、シリアルインターフェイス(RS232C)にて接続します。
4) の回路を追加してください。
図4)

同図の「PIN11へ」をデバイスの PIN11(TX)へ、「PIN12へ」を PIN12(RX)へ、「GNDへ」をGNDに、接続してください。パソコンとの間はD-Sub9ピンのストレートケーブルで接続します。(このための 設定基板 を提供できます)

3.    実際にデバイスと通信する

左上の「PORT」には、このパソコンが利用できるCOMMポート全てが表示されますので、その中から実際にデバイスに接続しているポートを選択して、「接 続」ボタンを押して下さい。デバイスとの通信が確立すると右上の通信確認窓が「COMM ON」と表示され緑色になります。更に、「自動計測」ボタンを押すと下図のような表示がされます。これでは、「信号入力」に1000Hz, 0dBmの信号が入っている状態です。(FFTの演算結果の表示)

  5)

この画面について説明いたします。

・「PORT」は、上でも説明しましたが、現在パソコンが利用可能なCOMMポートがドロップダウンリストに全て出ていますので、実際にデバイスに接続しているものを選択してください。


・「接 続」「切 断」は、トグルになっています。「接 続」を押して通信をしようとしても、デバイスからの応答がない場合は、接続が確立しません。応答があり、接続が確立すると状況表示窓が「COMM ON」に変わり緑色になります。また、下の出力端子にどの周波数が割り当ててあるかを表示します。


・「自動計測」は、一定間隔(0.5)でデバイスよりデータを取り込んでグラフを表示します。また、10個の出力端子の中でON (Thresholdを超えている)している端子の部分が橙色となります。図5) では、1000HzがONしていることになります。また、現在のスレッショルド・レベルをグラフの中に緑色の破線で表示し、右端のスライドバーでその位置を変更できます (これは、内部変数モードの場合、外付けVOLUMEモードでは、その値によって変更します)


「手動計測」は、一回のみデバイスよりデータを取り込んで上記の一連の表示をします。これは、静止画像を見たいときに使用します。


・「終 了」は、アプリケーションを終了します。


・「現在の設定をデバイスに書き込む」は、デバイスの不揮発メモリに現設定を書き込みます。書き込む内容は、現在設定されている、@スレッショルド・レベル、A10個の出力端子に割り当てている周波数、の2項目です。


Threshold Mode」は、現在デバイスのスレッショルド・レベルが、内部の変数で決定されているのか、それとも外付けのボリュームの値で決定されているのかを示しています。これは、PIN4(_THENB)GNDの場合に外付けボリュームモードとなり、オープン(未接続)の場合に内部変数モードとなります。内部変数モードの場合は、画面のスライダーでスレッショルド・レベルを変更できます。


Threshold」の数値は、スレッショルド・レベルの値を示しています。「手動計測」の時は編集できますので、直接数値を記入してEnterを押すことによって設定できます。


OT1OT10」のドロップダウン・リストから出力に割り当てる周波数を指定できます。

【 参考 】 下図は、300Hz, 1KHzm 4KHz が合成された信号の周波数を検知・計測している様子です。このような合成された信号の要素の周波数を検知する場合は、このデバイスはとても有用だと思います。

画面下の OT1, OT3, OT8 がそれぞれONしています。

6)


4.    グラフの表示について

100Hz間隔で06300Hzまでのデータが取得できますので、それを折れ線で表示しています。0Hzは直流分ですが、これは無視して -20dBとしています。また、計測したものの最小値は-20dBとしています。FFT(Fast Fourier Transform) の実行結果をこれでは、100Hz間隔で取得しているわけです。グラフからも分かりますが、純粋に近い正弦波を入れている場合、例えば1KHzを入力すると、1K1.1KHzのレベル差は約6dBです。200Hz離れた1.2KHzになるとその差は40dB以上となります。
dB表示にするための演算は、パソコン側で行っており、実際にデバイスから送られてくる数値は011000というようなものです。ですから、40dB差というのは、実に100倍の差ということです。このデバイスから送られてくる数値で表現すると、60dB1000040dB100020dB1000dB10-20dB1ということになります。0dB以下は、ノイズのように激しく動いていますが、これはこの数値で言うと10以下なのです。
参考のために、このdB表示以外に、リニア表示のアプリケーションも入れておりますので、もしそちらが良ければそれを御使用ください。下図に 5) と同じ信号をリニアで表示したものを示します。この信号レベルは、図2) の信号入力の位置で 0dBmです。

 7)

リニアで表示すると、小さなレベルがほとんど表示されません。
この状態で、+5dBmを入れるとピークは 6500くらいになり、リニア表示では大きく変わりますが、dB表示では51dB56dBになるくらいです。結局、dB表示の場合は、小信号が拡大され、大信号が縮小されるわけです。
周波数の分解能は100Hzですが、中間の周波数、たとえば1050Hzを入力した場合は下図のようになります。

 8)


したがって、デバイスの10個の出力端子にどの周波数を割り当てるかを調整することによって、大方の入力信号の周波数の状況を判断することができます。
なお、100Hzの位置に常に小さなピークがあります。レベル的には 7) のリニア表示で見れば分かるように小さいものです。この信号は直流分の余残が出ているものです。実際に100Hzを入れると大きなピークとなります。
Threshold  Mode」の表示は、外付けVOLUMEモードが選択(_THENBGND)されると、デバイスのVOLUMEで調整と表示され、スレッショルドVOLUMEによってコントロールされるようになります。

 

5.    エイリアスについて

6300Hzを超える周波数の信号の大きなレベルが入ると、実際にはない結果が6300Hz以下に現れてきます。これはエイリアスと呼ばれています。このような現象は、前述しましたXR2211でももちろんあります。これは、デジタル信号処理では必然的なもので、処理システムにより程度の差はありますが、必ず出てくるものです。
このことを踏まえた上で、6300Hzを超える周波数の強いレベルが入らないようにして使用してください。

【 参考 】 映画もやはり一秒間に何コマというトビトビの静止画によって動画になっています。車輪やヘリコプターのローターが止まったり逆転したりするように見えることがありますが、これもエイリアスです。



5 参考の資料

1.  調整用基板の回路図

9)


プログラマー(PICkit, IDC)を接続するための簡易コネクタを付けています。そのためにリセット回路も実装しています。


入力信号の入力回路は、CRによる簡易入力を使用するか、またはアンプ+ローパスフィルター(5KHz Cutoff)の回路を使用するかをジャンパー(JP1〜4)で切り替えできるようにしています。このフィルターは、いわゆるアンチエイリアス・フィルターですが、入力信号の帯域が6300Hz以下であることが分かっている場合は不要です。


動作モードを変更するジャンパー(JP5, JP6)を付けています。(VR2_Enable, Reverse_OT)


パソコンから各種設定をするためのRS232Cインターフェイスをあらかじめ搭載しています。


EEPROMを初期値に戻すための INIT-SWを付けています。これは電源投入時に3秒以上押されているとL1L4がいったん全点灯しEEPROMを初期化することを通知した後に実行します。


出力(OT1OT10)は、通常の利用では、インターフェイスは必要ないと思いますが、これではデジトラ・アレーを付けてLEDを点灯させています。


 

2.    基板実装写真

 

CN-SIGはイヤホン・ヘッドホンのミニジャック(ステレオ)で左のみに信号を入力します。モノタイプのプラグでも左に接続されます。したがって、モノタイプで入力すると間違えることはありません

電源は、プラグ外径:5.5mmΦ, プラグ内径:2.1mmΦ, 極性:センタープラスの5Vで、電流は1A以上あれば良いです。

これらは、dsPICでの高速フーリエ変換、そしてパソコンでFFTの結果を表示するサンプルソフトになると思います。(通販のページ)


3.  外付けVRと端子電圧の関係

外付け VOLUME で設定するスレッショルド・レベルとデバイスの PIN3の電圧の関係を下図に示します。

10)

取り付けている VOLUMEは、抵抗値が直線的に変化する B型です。スレッショルド・レベルの低い所を調整するのが非常にクリチカルになるので、デバイス内部のファームウェアで可変抵抗器の A, D型をシミュレートして、全域でスムースに設定できるようにしました。
デバイスのPIN3 に出ている電圧とパソコンで表示されるスレッショルドの関係は上図のようになります。スレッショルドは 30dB以上を設定することが推奨されますので電圧で言うと 2.5V以上にVOLUMEを調整して使用されることをお勧めします。

4.  デバイスの端子機能表
   デバイスの端子の機能をまとめたものを下表に示します。

 

 

 

 

 

 

 


5.  dB表示画像とリニア表示画像の比較

やや小さくて見にくいですが、上の2つはリニア表示の画像です。下の2つはデシベル表示の画像です。
左側の上下は共に同じレベルの大きな信号の入力状況、右側の上下も同じレベルの小さな信号の状況です。

 11)

左の大きな信号の方は歪んでいることが双方の画像でわかりますが、dB表示の方が小さなレベルが強調されていて詳細が分かります。リニア表示とdB表示の違いが明確に分かるので、FFT変換の参考にしてください。

6.  特殊波形の測定サンプル

例として三角波を入力したときの観測画像を下図に示します。

12)

Threshold表示の下に‘398’というデバイス内部の数値が出ていますが、これは ALT-Key を押すと表示されます。デバッグ中に参考として使いましたが、そのままにしています。

7. 
開発環境について
デバイスは、dsPIC30F4012で、コンパイラは C30(v3.25)を使っています。プログラマは PICkit2または3, 4です。デバッグは、シリアル通信でモニタリングしました。RAMメモリの使用量が多いため、ICDでの詳しい解析ができませんでした。パソコン側のアプリケーションはVB.NET(2005)を使用しています、基本機能のみの使用ですから容易にアップグレードできます。
戻 る