電子工作の知恵袋

 
 

 

PixiModule UART
USB-UART変換ケーブル




 

    *コンテンツはお客様ご自身のご判断と責任においてご利用ください。
     また、掲載内容を他に流用・転載することは一部・全てを問わず固くお断りいたします。
     引用する場合はリンク表示にてお願いいたします。
     


電子工作の知恵袋

 


超音波信号の可聴化回路の製作

 

その3 

 
(執筆:吉澤 清)



     本稿では、エレラボドットコムの「超音波受信モジュール」を用いて、人間の耳には聴こえない音(超音波)を可聴域の信号に変換するする回路を製作します。

     

    ■開発環境

     dsPIC用のプログラム開発には、マイクロチップ社の総合開発環境であるMPLABと、その上で働くC30コンパイラを使用します。

    これらは、マイクロチップ社から入手が可能である他、以下の書籍に添付されているCD−ROMにも収録されています。

    開発環境の使用方法等に関しては、これらの書籍を御参照下さい。

     

    ・後閑 哲也,信号処理のためのdsPIC活用ハンドブック,技術評論社

    ・岩田 利王,dsPIC基板で始めるディジタル信号処理,CQ出版社

     

    ■プロジェクト・フォルダに関して

     「transUs3」というプロジェクト・フォルダの中に、本機のプログラム関連のファイルが収めてあります。

     

    ■プログラムについて

     図10に「超音波信号の可聴化回路」用の、dsPICのプログラムのフローチャートを示します。




    プログラムはC言語で記述されています。

     プログラムの冒頭では、必要となるヘッダファイルのインクルード、dsPICのコンフィギュレーション・レジスタ用の設定の記述、変数の宣言等を行っています。

     その後、main関数の記述が続き、各種の初期設定を行った後、メインループに入ってゆきます。

    初期設定により、タイマ3は120KHzの速度で一回転するように設定されており、タイマ3をトリガ源として、内蔵されているAD変換器を起動しています。

    AD変換器の入力はAN2入力に固定されており、AN2入力より取り込まれた信号電圧のAD変換が終了する度に、ADIFがセットされます。

    結果として、ADIFのポーリングより始まるメインループは、120KHzの速度で繰り返し実行されることになります。

     プログラムは、ADIFがセットされていることを確認すると、まずCS出力をセットし、ADIFをクリアします。

    続いて、AD変換結果を変数adcBufへ書き込み、CS出力をクリアして、変数dacBufAに用意されていた、シリアルDAC用のデータを、SPI転送用の送信レジスタに書き込みます(これと同時にdsPICよりシリアルDACへのSPIデータ転送が始まります)。

    尚、CS出力はシリアルDAC用の制御信号です。

     ここ迄が入出力制御であり、これ以降が実際のディジタル信号処理となります。

     信号処理は、2段階で実行されます。

    まず、変数adcBufに格納されているAD変換結果に、SINテーブルの値を掛けて、周波数変換を行います。

    int型(符号付16ビット整数)のデータ同士の積は、約2倍の長さのデータとなりますので、ここでは一旦long型(符号付32ビット整数)の変数に代入した後、データ長を半分にして再度int型へ戻しています。

    その後、SINテーブルの配列のインデックスとなる、カウンタscanTableの更新を行っています。

     次にFIRフィルタによるLPF処理を行います。

    まず、FIRフィルタ用のディレイ・ラインを記述しています。

    必要となるディレイ・ラインは13段と短いため、ここでは、単純に配列の要素間の代入により実現しています。

    FIRフィルタの積和演算処理には、dsPIC用のDSPライブラリの中のVectorDotProduct関数を用いています。

    ここでは、VectorDotProduct関数を使って、配列dataBufと配列k(フィルタ係数)との間の13個の要素間の積和演算を行っています(図11参照)。


     

    VectorDotProduct関数の戻り値はint型で返され、その値はオーバーフロー処理や丸め処理済みのものとなっています。

    VectorDotProduct関数を使用すると、C言語で通常に記述した場合と比べて積和演算が高速で実行されます。

     最後に得られたフィルタ処理結果を、シリアルDAC用の送信データに変換します。

    シリアルDACは12ビットの符号なしデータを必要としますので、得られたint型(符号付16ビット整数)の演算結果の下位4ビットを切り捨てて、MSB(符号ビット)を反転することにより、符号なし12ビット・データへと変換します。

    更に、シリアルデータ用の4ビットの制御データを、得られた符号なし12ビット・データの上位に付加したものを、変数dacBufAへ格納します。

    シリアルDAC用のデータ・フォーマットに関しては、図12を御覧下さい。



     

    このデータは、次のサイクルの入出力処理の際に、SPIデータ転送のために使われることになります。

     

     プログラムを見て、メインループの記述が短いことに驚かれる方も居るかもしれません。

    24MHzの高速で命令が実行されるとしても、120KHzの速度で処理を繰り返そうとする場合、その間に実行できる命令の数は僅か200ステップにしか過ぎません。

    周波数の高い超音波信号は、高速のdsPICにとっても、楽な処理対象ではありません。このため、いきおい簡単な処理しか実行できず、プログラムも単純なものとならざるを得ないという訳です。

    とかくディジタル信号処理にはパワーが必要となります。

     

    ■コンパイル時のオプション設定

     MPLABで新規にプロジェクトを作成した場合、C30コンパイラの最適化オプションの設定はレベル0となっています。

    本機のプログラムは、実行速度的に余裕がなく、オプティマイズ・レベル0では速度が不足するため、オプティマイズ・レベルを1に上げます。

    その設定手順は以下の通りです。

     「Project」メニューの「Build Options...」サブメニューより”transUs3.c”(ソースコード名)を選択します。

    これにより「Build Option For File ”transUs3.c”」というダイアローグが開かれます(図13)。


     

    ダイアローグ上の「Categories:」欄から「Optimization」を選択し、「Option Level」を「0」から「1」に変更して、「OK」ボタンを押します。

     

    ■dsPICへの書き込み

     プログラムのコンパイルが終わったら、次に、生成されたオブジェクト・コード(.hexファイル)をdsPICに書き込みます。

    ここでは、オブジェクト・コードの書き込みにPICkit3を使用します。

    パソコンに、USBケーブルでPICkit3を接続し、PICkit3の先端のコネクタ(メス)を(超音波信号の可聴化回路)基板上のISRコネクタに接続します。

    この際、PICkit3の三角のマークをISRコネクタのMCLRピン側に合わせてください。

    また、基板には電源を接続しておく必要があります(dsPICのAVDD,AVSSピンにも電源を供給する必要があります)。

    電源が接続されていないと、MPLAB側からデバイスが接続されていると認識されないことがあります。

     MPLABの「Programmer」メニューの「Select Programmer」サブメニューより「PICkit3」を選択することにより、PICkit3がMPLABから認識されます(この際、電源電圧が5Vで良いかどうか尋ねるダイアローグが表示されますが、その場合は「OK」ボタンを押します)。

    そして、「Programmer」メニューから「Erase Flush Device」を選ぶことにより、dsPIC上のフラッシュ・メモリが消去され、「Programmer」メニューから「Program」を選択することにより、オブジェクト・コードがdsPIC上のフラッシュ・メモリに書き込まれます(この際、ダイアローグを表示して、再ビルドして良いかどうか尋ねられる場合がありますが、その場合は「OK」ボタンを押します)。

     基板の電源を再投入することによって、dsPICにリセットがかかり、回路は新しいプログラムに従って動作を始めます。

     

    ■本回路の動作

     この「超音波信号の可聴化回路」は、38.5KHz〜41.5KHzの入力信号を500〜3.5KHzの低周波信号に変換します。つまり、入力信号周波数より38KHzが差し引かれた周波数の信号が出力されます。

    例えば、エレラボドットコムの「超音波送信モジュール」の発する、40KHzの超音波信号を受信した場合、2KHzの出力が得られることになります。

    出力信号の振幅は入力信号の振幅に比例します。このため、出力信号の振幅より入力信号の振幅の強弱を知ることができます。

    本回路に、40KHzの信号を与えた場合の動作波形を、図14に示します。


     

     尚、原理上、本機に38KHz以下の信号を与えた場合に、(38KHz−入力信号周波数)の出力信号が現れる場合があります。例えば、入力信号が37KHzの場合、1KHzの出力が現れることになります。但し、「超音波受信モジュール」で使われている超音波センサは、40KHz近傍に感度のピークを持ち、40KHzから離れると急速にゲインが低下してゆく特性を持っているようなので、これが著しい障害となることは無いようです。

     

    ■本回路の用途

     本機の用途としては、次のようなものが考えられます。

    ・超音波利用機器の動作モニタ    :超音波信号の周波数/強弱/断続の仕方などを、オシロスコープによらずに耳でモニターすることができます(オシロスコープより小型でポータビリティーに富みます)。

    ・超音波利用機器の動作環境チェック :超音波機器を動作させようとする環境のチェック(他の超音波機器が動作していないかの確認)に使用できます。

    ・超音波マーカー          :小型の超音波の断続音を発するマーカーを、失くしやすい小物や、所在が不明になる放し飼いの小動物(超音波を嫌がらないものに限る)に付けておけば、「可聴化回路」により捜索することができます(超音波受信モジュール上のセンサの指向性を利用します)。

    ・超音波によるA1通信       :エレラボドットコムの「超音波送信モジュール」にSWを付けて、信号を断続させる回路と組み合わせることにより、簡便なA1通信(電信)が可能です。複数系統の回路を用意すれば、相互通信も可能になります。

    ・超音波による音声通信       :38KHzでAM変調した超音波を発する送信機と組み合わせることにより、音声信号の伝送も可能となります。但し、超音波スピーカ/センサの周波数選択性が強い場合には、帯域が狭くなり聞き取り辛くなる場合があります。






     

面倒な送受信回路もこれ1つで解決

 

簡単・便利な超音波モジュールシリーズ

     




     

     

カテゴリ
電子工作の知恵袋 最新情報

  

 

 




  

おすすめ商品
写真 名称 番号 売価(税込)
超音波_送受信モジュールセット
超音波_送受信モジュールセット

40kHz送信モジュール1ケと受信モジュール1ケのセット品。
020-2 4,990円
超音波受信モジュール
超音波受信モジュール

40kHz超音波センサーを使った受信モジュール。
010-2 2,770円
超音波送信モジュール
超音波送信モジュール

40kHz超音波スピーカーを使った送信モジュール
015-2 2,770円
コネクタ2.54mmピッチ5ピンストレートヘッダ
コネクタ2.54mmピッチ5ピンストレートヘッダ


901 280円