2013/10/07

AVRマイコンを使った簡単な音信号処理

どうも、Nekosanです。

昨日、高専ロボコン九州大会がありました。

その大会に出場したロボットに積んでいた回路について、自分メモを兼ねて記事を書きます。


今年のロボコンは、コントローラー無しで、ロボットに触って操作してもいけないというルールです。
なので、笛を吹いて、その音を聞き分けることでロボットを操作しようと考えました。


そのためには音、今回は笛を使っているので、笛の音を聞き分けることができる回路が必要です。
で、作ったのがコレ

\デーン/


コンデンサマイクの信号をオペアンプで増幅して、マイコンのA/D変換ピンに接続してるだけ。
素晴らしく単純!!!

ただし、ただ音の大きさを調べるだけでは、歓声やロボットの動作音で誤動作する可能性が大きいです。
そこで、フーリエ変換という信号処理を行い、検出の精度を上げています。
フーリエ変換→http://d.hatena.ne.jp/Zellij/20120612/p1


マイコンはATMega328Pを使い、外部クロック16MHzで動作させてます。

信号をA/D変換した後、フーリエ変換で信号を周波数成分に分けます。
波形の中に、どの周波数がどれくらい在るかが分かるので、これを利用して笛を聞き分けてます。
笛の音の判別は、「どの周波数成分が強いか?」を調べて行っています。

フーリエ変換のアルゴリズムはここを参考にしました。
http://www.kurims.kyoto-u.ac.jp/~ooura/fftman/
http://www.kurims.kyoto-u.ac.jp/~ooura/fftman/ftmn1_2.html#sec1_2


実際にこの回路を使って出場しましたが、よく反応してくれて、歓声などの外乱もあまり影響を受けていないようでした。


詳しいことはまた別の記事に書こうかと思っているので、これぐらいで。

では。

0 件のコメント:

コメントを投稿

記事の感想、意見などはこちらからどうぞ。

人気の投稿