ARMマイコンに内蔵された周辺デバイスの使い方を学ぶ−アナログ入力編−:「mbed」で始めるARMマイコン開発入門(7)(2/2 ページ)
ARMマイコン「LPC1114」にはさまざまな周辺デバイス(ペリフェラル)が内蔵されています。今回はアナログ信号をデジタル信号に変換するA/Dコンバータの使い方を学びます。
回路と組み立て
アナログ入力機能を使うためにはAVIN AGNDを電源につなぐ必要があります。なぜADCを使う場合は、別途電源を供給するかについては後で述べます。まずはAVINにはVIN、AGNDにはGNDを接続します。電源ピンの位置は前ページの図1を参考にしてください。下の図2が基本回路です。先に説明したように今回はアナログ回路の電源とデジタル回路の電源は共通にします。
何か適当なセンサーがあればよいのですが、取りあえず動作を確認するために可変抵抗(写真)をつないでみることにします。
可変抵抗は一般にボリュームとも呼ばれており、回転式とリニアスライダー方式のものがあります。回転式はノブを回すと馬蹄形の抵抗膜の上を接点がスライドする仕組みになっています。
可変抵抗には3本の足がありますので、中央の足をdp4に、それぞれ両端の足をプラス電源側、またもう一方をGNDに接続します。この可変抵抗のノブを回すことにより、0Vから電源電圧までの任意の電圧をアナログ入力ピン(dp4)に印加することができます。
シリアルポートはUSBシリアルモジュールを介してPCに接続します。デフォルトのボーレートは9600bpsです。ターミナルエミュレータおよびlpc21ispをターミナルエミュレータモードで使う場合は、PC側でこの設定に対応してください。
動作確認
ターミナルエミュレータに0から1の小数点つきの値が表示されているでしょうか。またその値の小数点以下何桁目が一秒おきに変化しているのが見て取れるでしょうか。
それでは可変抵抗のノブを回してみましょう。0.0から1.0まで変化するのが確認できたでしょうか。アナログ入力が電源電圧に近くづくと1.0になります。これが上限値です。また逆にアナログ入力がGNDに近づくと0.0になります。これが下限ですね。
アナログ電源
なぜ別途電源をつなぐ必要があるかというと、LPC1114内部でアナログ回路とデジタル回路で電源を分けているからです。アナログ回路はデジタル回路に比べて質のよい電源環境が求められることが多々あります。例えばこれから試す条件ではADCは3.2mVの電圧の変化もとらえる性能を持っています。それが真の信号の変化なのかノイズなのか分からなければADCの性能を十分に引き出しているとはいえません。
それに対してデジタル回路は前回のDigitalInのところでも話しましたが、0と1を判断する間には1V前後のマージンを持っているために、アナログ回路と比較してノイズに対して耐性を持っています。そのためそれほど電源に神経質になる必要がありません。またデジタル回路はそれ自体がノイズの発生源になることもあります。以上の理由から、デジタル回路がアナログ回路に悪影響を与えないように別電源になっているのです。
それではデジタル回路とアナログ回路の電源を共通にした場合と、それぞれを別に用意した場合の、アナログ入力の測定結果について考察してみましょう。
デジタル側の電源はPCからUSB経由で供給された5VをUSBシリアル変換モジュール内のレギュレーターで3.3Vにしたものを使っています。アナログ用電源には単三形の水素イオン電池を2本直列にしたものを使っています。アナログ入力には先ほどの実験回路と同様、10KΩの可変抵抗を用いノブの位置はほぼ中央にしました。
上の図が測定結果をグラフにしたものです、それぞれ100サンプルしました。系列1が別電源にした場合、系列2が共通電源の場合の測定結果です。
グラフからも見て取れるよう、別電源にした方が測定値のバラツキが少ないことが分かります。電源以外の条件は変えていませんので、このバラツキの差は電源そのものに起因するノイズによるものと考えられます。あるいは電源を共通にしたことにより、デジタル回路内で発生したノイズが回り込んだことも考えられます。
このように、より正確なアナログ値を取得する必要がある場合は、デジタル回路との分離と、アナログ回路への電源の質に注意を払う必要があります。今回はバイパスコンデンサーの効用については言及しませんでしたが、電源を共通にしなければならない場合は、それぞれの電源ピンの直下にセラミックコンデンサを入れることにより、ある程度お互いのノイズを抑えることができます。
おわりに
今回はLPC1114に内蔵されたアナログ入力デバイスであるADCの使い方について紹介しました。これにより、より細かい刻みで電圧の変化を捕らえられるようになりました。
今回は電圧の変化を擬似的に可変抵抗で代用しADCの動作を確認しましたが、読者の皆さんは実際のアナログセンサーを接続して試してみてください。新たな物理現象や自然現象の不思議を再発見するかもしれませんね。そして、フィジカルコンピューティングの第一歩を踏み出してみてください。
次回はアナログの出力にも応用できる「PWM(Puls Width Modulation)」について紹介したいと思います。お楽しみに。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- ARMのクラウドプラットフォーム「mbed Cloud」は「大手IT企業と競合しない」
ARMは、年次イベント「ARM Tech Symposia 2016」に合わせて開催した会見で、マイコン向けプロセッサコアの新プロダクト「Cortex-M23」「Cortex-M33」や、IoT(モノのインターネット)デバイスの管理に用いるクラウドプラットフォーム「mbed Cloud」などについて説明した。 - ARMマイコンに内蔵された周辺デバイスの使い方を学ぶ−GPIO 入力編−
ARMマイコン「LPC1114」にはさまざまな周辺デバイス(ペリフェラル)が内蔵されていますが今回は最も基本的な周辺デバイスの1つ、「GPIO」の入力について勉強します。 - ARMマイコンに内蔵された周辺デバイスの使い方を学ぶ−GPIO 出力編−
ARMマイコン「LPC1114」にはさまざまな周辺デバイス(ペリフェラル)が内蔵されていますが、今回は最も基本的な周辺デバイスの1つ、GPIOの出力について勉強します。 - ARMマイコンに内蔵された周辺デバイスの使い方を学ぶ−シリアルポート編−
ARMマイコン「LPC1114」にはさまざまな周辺デバイス(ペリフェラル)が内蔵されていますが、まずは第一弾として、printfデバッグに欠かせないシリアルポートの使い方を勉強します。 - クラウド開発環境「mbed」の使い方とターゲットマイコンへの書き込み
この連載では、組み込みの世界では最も成功したプロセッサの1つ「ARM」を用いたマイコン開発にチャレンジします。今回は開発環境準備第2弾として、クラウド側の開発環境設定と、バイナリの書き込みまでを進めます。