音の大きさを測る(PICマイコンとMEMSデジタルマイクロフォンの利用)_動作確認
デジタル屏風では、騒音を検知したら看板についているLEDを光らせる騒音警告看板の試作をしています。騒音警告看板においては、「逆引きPIC電子工作やりたいこと事典」(後閑哲也著)の「音の大きさを測りたい」の節に記されている構成をもとにしています。マイクは、本節で紹介されているMEMSデジタルマイクロフォンSPM0405HD4H(秋月電子で300円/個)とPIC16F1778(秋月電子で230円/個)を使って、騒音を検知したときにLEDを光らせるという仕組みです。MEMSデジタルマイクロフォンについて、およびPIC16F1778について調べたことはそれぞれ別の投稿で記述しています。
今回は「逆引きPIC電子工作やりたいこと事典」の「音の大きさを測りたい」節に書かれている構成を実際にブレッドボード上で実装し、動作を評価することができました。その様子を以下に記述します。
◆供給電圧の検討
PIC16F1778の動作電圧は2.3~5.5V、SPM0405HD4Hの動作電圧は1.6~3.6Vなので、とりあえず3.0Vであれば両者が動作できると考え、単三電池x2本で動作させることにしました。
◆PIC16F1778によるオペアンプとアナログコンパレータの利用
MEMSデジタルマイクロフォンSPMM0405HD4Hは、アナログ部分がマイク内部のみのため、ノイズの影響をほとんど受けずに音響信号を処理チップへ伝送できます(データシートより)。PIC16F1778は、オペアンプを有し音響信号を増幅します。さらにアナログコンパレータにより、音響信号のレベルが一定の値以上になった場合に、LEDを点灯させる仕組みです。オペアンプおよびアナログコンパレータの回路は「逆引きPIC電子工作やりたいこと事典」から若干変更し以下のようになっています。
PIC16F1778のピンの設定は以下のようになっています。
◆動作確認のつまづき(MEMSデジタルマイクロフォンへのクロックの供給)
ブレッドボード上に回路を組み上げ、動作確認したところマイクが全く反応しない。MEMSデジタルマイクロフォンの回路図は以下のように単純なものになっており、ミスっているとするとCLOCKだろうという仮説を立てました。
◆MPLAB X IDEでClockOutの設定
PIC16F1778の設定は、MCC(MPLAB Code Confugurator)のEasy Setupを使って、オペアンプおよびアナログコンパレータの設定を行いました。Easy Setupだけではなく、Registersのタブを開いてみると、CONFIG1でCLKOUTENを見ると、Clock outがDisableになっていました。これをEnableに変更しました。
Clock outをEnableに変えると、MCC画面上でRA6ピン(10番)がClock Outに変わりました。なお、SPM0405HD4Hに供給するクロックは1.0~3.25MHzという条件があるので、PIC16F1778のクロック数を1MHzに設定してあります。
◆動作確認
Clock outの修正後、PIC16F1778にプログラムを書き込み、マイクの前で手をたたくとLEDが光りました。どのくらいの音量でLEDが光るのかは、アナログコンパレータ(ー)に接続されている10KΩの可変抵抗を適切に調整しておく必要があります。この可変抵抗を大きい抵抗にすると、音をLEDはまったく光らないし、抵抗の値を小さくするとLEDは常に点灯状態になってしまいます。
とりあえず手をたたくと反応することは確認しましたが、声を出してみると反応は若干鈍くなります。マイクに口を近づけないとLEDは点灯しませんでした。騒音をうまく検知するためには調整が必要であると感じました。