GW短期集中連載!マイクロはちゅねで楽しいネット工作の世界へ

第5回 マイクロはちゅねに,目と耳をくっつけてみる

この記事を読むのに必要な時間:およそ 2 分

マイコンで処理をするときは,時間感覚が重要

ここで,音量ではなく,スペクトラムアナライザのように周波数で反応させたくなった場合も考えてみましょう。この場合,それなりに高速な(検出したい周波数の2倍以上の)サンプリングが必要ですが,後述の割り込み処理が追いつかなくなる可能性が出てきます。表1に示したとおり,44KHzといったレートでデータを取り込んで処理するのは,低速なマイコンには相当荷が重いです(アセンブリ言語20命令ぶんしかない⁠⁠。多点FFTのような比較的重い演算を行おうとすれば,高速マイコンでも簡単ではありません。データレートを落とすか,もしくは別の簡易アルゴリズムを使うといった工夫が必要です。

表1 センサなどの信号を扱う際には,マイコンの処理速度がどの程度のものか感覚をつかんでおく必要がある。ネギ振りなら楽勝だが,高品質オーディオなどを扱おうとすると低速マイコンでは辛い。演算などを施すならなおさら

高速パソコンの1クロック(3GHz)0.00000000033秒
高速PICの1命令実行(40MIPS)0.000000025秒
低速PICの1命令実行(1MIPS)0.000001秒
高速PICのADC変換(500ksps)0.000002秒
オーディオ・サンプリング ⁠44KHz)0.000022秒
高速ネギ振り1回(10Hz)0.1秒

つまり,音声やセンサといった実世界の情報を扱う場合には,マイコンの速度やデータレートといった類の時間感覚を具体的に持つことがとても大事です。マイコンの速度はパソコンなどと比べれば桁違いに遅いですし,メモリの量も数桁少ない(パソコンではギガバイト単位のメモリがあるが,マイコンではキロバイト単位)ので,パソコンでやっている演算処理をそのまま持ってくるのは,通常難しいです。

ADCを使うためのマイコン・プログラミング

マイコン・プログラム上でADCを使うには,割り込みを使うのが常套手段です。ほとんどのAD変換処理では,まずADCのハードに変換開始トリガを送り,変換が終了するまで待ち,ハードから変換結果を読み出す,というステップを踏みます。このプログラムの構造例を図3に示します。図3では,ADCの起動や終了検出をタイマ割り込みのベクタ内部で行うようにしています(そうすると,変換を一定周期にしやすい⁠⁠。しかし,タイマ割り込みでなく,ADCの終了割り込みを使う方法もあります。

図3 ADCを使うにあたっては,割り込みを利用するのが常套手段。ここには,タイマ割り込みによって一定周期でAD変換のトリガをかけるコード例を示す。この他にも,AD変換終了で割り込みをかける方法もある

図3 ADCを使うにあたっては,割り込みを利用するのが常套手段

マイコンのADC経由で,多くの種類のセンサを活用できる

今回はADCに注目しましたが,その理由は,ADCを介して多種のセンサをつなぐことができるからです。図4のような加速度センサ,ジャイロ(回転検出⁠⁠,温度など沢山のセンサが,アナログ出力を持ちます。その値を読み取るうえでADCは欠かせません。センサは非常に進歩の早い世界で,数年前には考えられなかったような高性能・小型のものでも,いつの間にか通販で数百円で入手できるようになっていたりします。

ホビーで買える範疇では,たとえばSparkFun ElectronicsStrawberry Linuxのサイトなどで珍しい物が沢山見つかります。ぜひ面白いセンサをつなげて,マイクロはちゅねに楽しい動きをさせてみてください。

図4 マイコンのADCを使えるようになると,それだけで多くのセンサを利用できるようになる。センサは日進月歩の世界で,非常に高性能・小型のものが安価に手に入るようになってきた

図4 マイコンのADCを使えるようになると,それだけで多くのセンサを利用できるようになる


最終回となる次回は,マイクロはちゅねどうしやパソコンとの通信について紹介します。

著者プロフィール

森岡澄夫(超電磁P)

ニコニコ技術部所属。マイクロはちゅねを皮切りに,はちゅねミク小型化戦争やはちゅねミククローン戦争などで作品を発表。現在は,はちゅね宇宙航空研究開発機構(HAXA)の主謀者として積極的に活動中。

URLhttp://www002.upp.so-net.ne.jp/morioka/