バットディテクター(Bat Detector)の製作

バットディテクター(Bat Detector)の製作

[TopPage] -> [PIC] -> [BatDetector]  |   [blog]
[はじめに]  [1号機]  [2号機]

[製作方針]

 今回のナイキスト方式バットディテクターの製作方針は

1. D/A変換にはPWMを使用する。PWM周期は可聴音よりかなり高くしないとフィルタリングが大変なのでなるべく高い周波数にする。そのためにはソフトによるPWMでは速度的に無理なので、PWM&A/D機能を持つPIC12F683を使用する。
→A/D変換と同じ33.3kHzにする。
2. なるべく低電圧で動くようにしたい。できたらニッカド電池2本(2.4V)が理想。そのため、PIC12F683のクロックは内部発信の4MHzにする。
(8MHzでの動作は電源電圧が3V以上でないと規格外である)
3. 回路はなるべく簡単にしたい。当然PICは内部クロックを使用する。
4. 容易性&回路の簡略性から単電源用オペアンプを使用する。電源電圧が低いのでrail to railタイプのものを使用。
5. PICのソフトはA/D入力し、直ぐにPWM出力するだけであること及び割込み処理では時間的にきつく割込み応答に1クロック分の揺らぎが発生するので、割り込みは使わない。

で、ブロック図の最終段の出力アンプに超定番のLM386を使ったため電源電圧が4V以上必要であり(3Vでは動作しなかった^^;)、電源は急遽5V(NiCD電池4本)となってしまいまいた。
 この部分以外は2,4Vで動作しているので後日、LM386の部分は変更する予定です。

 A/D変換では処理時間の関係で規格値である11.5μSecはとれていませんがそれなりにA/D変換しています。それ以前にPWMの関係で有効ビットを5BITにしています^^;

 PIC12F683に内蔵のA/Dは10ビットですが、最初の5ビットだけ欲しいのでコンバージョン中断を試みましたが10ビットまで変換が終わらないとA/D値がADRESHに設定されないようです(ホワイトペーパーにも変換途中は以前の値が保持されると書いてある)。
 GOを強制的にlowにする前にADIFをlowにして見たところ、値は変わったけど変な値のようでした。

 動作確認のために発信器が欲しいところですが無いので、USB接続 12ビット2chオシロ「Stingray」についている信号ジェネレータ機能で代用した関係でテスト信号の上限が31.25KHzという環境になってしまい、バンドパスフィルタ部分の動作確認は行っていません^^;;;


 とりあえず、ブレッドボード上で動作確認できた回路がこれです。

 図2-1は31.25KHzを超音波用スピーカから出力した信号を受けたときのPIC12F683のPWM出力波形です。
 サンプリング周波数が33.3KHzなので2.15KHzの信号が現れます。

 図2-2はローパス後の信号で2kHz付近の信号がはっきりと現れます。
 PWMの周期である33.3kHzがなかなか取り切れていませんが、完全に取り除こうとすると肝心の2KHzの信号も小さくなるためこの辺で妥協しています。

 この信号をFFTにかけて見たのが図2-3です。当然ですが2kHzの信号がはっきり現れました。

図 2-1 PWM出力 図 2-2 ローパス後 図 2-3 FFT



[製作編]

 電源は単四電池3本で4.5Vにしました。また、PWMをローパス後にPWM変換周波数を取りきれなかったのでPWM周期を倍の66.7KHzに変更しています。

 下図が試作基板で単四電池ホルダは基板直付けタイプのものを使用して基板の裏面に実装しました。
小型スピーカを付けてボリュームを上げると1.5KHzくらいで発信してしまい^^;;;なかなか解決できなかった(音響的な結合による発信ではない)のでとりあえずヘッドホン(この場合フルボリュームでも発信しない)をつけ、夕方さっそく近くの河原へ行ってきました。

 我ながら怪しげな機械を持ち夕暮れの河原を徘徊する怪しげな人と思いながら・・・結果はどうか?にワクワクしつつ、徒歩5分で到着。
 コウモリが結構飛び交っていましたが、10mくらいまで近づかないとノイズに埋もれて良く聞こえず^^;;;
 また、近くに飛来しても殆ど無音の場合もあったのでサンプリング周波数をもっと上げた方が良いかもしれません。

 でもとりあえず鳴き声らしきものが聞こえたのでまずは満足(^^)。ノイズ対策が今後の課題です。

図 3-1 部品面 図 3-2 裏面と接続部品


ケースの製作
 基板を剥き出しで持ち歩くのはあまりにも怪しげなので、以前秋葉に行った時に買っておいた組み立て式(購入時は折り曲げされておらず平な状態)のアルミケースに入れてみました。このケースのうたい文句は

 ・組み立て前なので穴あけ加工が楽
 ・組み立て作業が無い分、安い

の二つです。確かに通常の組立て済みアルミケースよりは安かったし折り曲げは手でも楽に出来(かといって強度的には十分)、なかなか使いやすかったです。
 但し、側面の穴加工は組立ててから現物合わせしないと位置が正確には出ないので「穴あけ加工が楽」のメリットは享受できませんでした。

 作成した基板を収めるのに必要最小限のサイズで、小型スピーカ分のスペースもなんとか確保したのですが、以前のコメントに書いたようにスピーカを接続すると発振してしまうのでスピーカ及びスピーカ用アンプICは未実装のままでケースに入れました。(アンプICをつけないなら乾電池は2本でもOKなのですが・・^^;)
 内部の写真と外観がこれです。

図 4-1 ケース内部 図 4-2 ケース外観1 図 4-3 ケース外観2



[調整編]

 最初はStingrayの信号ジェネレート機能を使い、信号を取り出すのにプローブ(x1モードにして)を使っていたので二現象の測定ができず不便だったので、「無いものは作る」の精神でPIC12FF683で40KHz出力して試験しています。少しソフトを作ればスイッチ操作で出力周波数を変更できるようにするのも容易です。
 但し、トランスレータに超音波受信器とペアの物を使っているので40KHz付近にQがあり、任意の周波数を同じレベルで出力はできないと思います。

 5/14の日曜日に再び河原で観測しましたが、やはりサンプリング周波数を上げた方が良さそうだったので今は38KHzサンプリングにしています(40KHzは2KHzで聞こえる)。

 また、以前未解決だったA/D変換も中断もできるようになり、サンプリングをもっと上げることも可能になりました。ホワイトペーパーではA/D変換を中断するにはGOビットを強制的にクリアすると可能と記載されていますが、この場合変換途中のデータはADRESレジスタに書き込まれないとも書いてあります。

 そこで5ビット分の変換が終了した時点で設定変更しA/Dクロック(Tad)を高くすれば残りの変換ビットの精度は保障されないですが早く変換終了し変換値もADRESへの設定されると考えました。
 実験してみたところ、Tad分周比をFosc/2に変更すると直ぐに(残り5ビット分の変換を待たずに)A/D変換が完了しました(^^)。これはホワイトペーパーにも載っていない隠し技です(笑)。

 MPLABのシミュレータもこの辺の動作は忠実に再現するので関心しましたが、MPLAB(V7.30)でのGO表示は論理が逆です(ERATAに載ってるか否かは未確認)。

 最初のコメントで書いた「A/D変換では処理時間の関係で規格値である11.5μSecはとれていませんが」はTacq(AcquisitionTime)のことですが、上記発見により規格値を満たすタイミングにすることができています(^^)。(規格ではアナログ入力インピーダンスは10K以内ですが、今回は330で接続しているのでTacqは規格以下でも精度的な問題は発生しないとも思っていますが、規格外だと多少気持ち悪いので・・)


[はじめに]  [1号機]  [2号機]
[TopPage] -> [PIC] -> [BatDetector]  |   [blog]