MC908QY4A マイコンには 10ビット精度の使いやすい A-D変換器が搭載されています。この A-D 変換器の使い方を説明するのに先立って、A-D変換器そのものについて少し学習しておきましょう。 A-D変換器とは Analog to Digital Converter すなわち 「アナログ信号をディジタル信号に変換するもの」 という意味で、ADC とも呼ばれます。
OPアンプ と カウンタIC で作った 4ビット A-D変換器 (クリックで拡大)
第20回 から 第25回 で R-2Rラダー型 D-A変換器 の説明を行っています。 これは汎用ポートの応用例として、簡単な D-A変換器を実現する例として紹介しました。 実験を交えて丁寧に解説しましたので、しっかり理解していただけたのではないかと思っています。
これから A-D変換器の説明を行うわけですが、マイコン内蔵の A-D変換器の使い方というとどうしても 「○○レジスタに□□を書き込んで・・・ 」 という内容になってしまいます。 もちろんそれは重要なことなのですが、予備知識がないままそれをやっても本当の意味での理解にはつながりません。 そこで簡単な A-D変換器を作ることによって、しっかり理解をしておこう、というのが今回の記事の狙いです。
◆ A-D変換器の種類
A-D変換器と一口に言っても、次のように非常にたくさんの種類があります (これは代表例であり、分類の方法もほかにもある)。
電圧比較型 ・・・・・ 追従比較型、逐次比較型、並列比較型(フラッシュ型)
時間比較型 ・・・・・ 二重積分型、電荷平衡型、ΔΣ(デルタ・シグマ)型
それぞれ、変換が高速だとか、遅いけれども精度が高い、IC化に適している、などのメリット/デメリットがあります。 つまり一長一短、適材適所であってどれが最高ということはありません。 多くのマイコンに内蔵されているのは、逐次(ちくじ)比較型の A-D変換器です。 マイコンに内蔵するという制約に対して、速度・精度・回路規模など、いろんな面のバランスが取れているということでしょう。
◆ 計数型の A-D変換器
電圧比較型としてあげた 追従比較型 と 逐次比較型 は、計数型 として分類することもできます。 ブロック図を示します。
4ビット計数型A-D変換器のブロック図 (クリックで拡大)
このブロック図を使って計数型 A-D変換器のしくみを説明します。 なお、変換すべきアナログ信号はレベルがふらつかず安定しているものとします。
【 カウンタ/レジスタについて 】 A-D変換を行うビット数と同じ幅のビットをもつカウンタで、この出力が A-D変換器全体の変換結果として扱われます。 カウンタというのは、接続したクロック(この図では ADCK)にしたがって 0→1→2→3→ とディジタル値を変化させるもので、Nビット幅であれば 0 から 「 2のN乗 -1」 の範囲でカウントできます。クロックが入るたびに数値が増えるアップ・カウンタ、クロックが入るたびに数値が減るダウン・カウンタ、制御線によって切り替えられるアップ・ダウン・カウンタがあります。また、任意の数値をセットすることができたり、カウント動作を停止する制御線をもつものもあるため、数値を保持するという意味でレジスタの機能をもつものもあります。
話を簡単にするため、単純な計数型A-D変換器を例にとって説明します。
(1) まず最初に制御部(Control) が変換開始の信号を出します。
(2) カウンタ/レジスタが 0 を出力します(そのときD-A変換器の出力は 0 [V] で、
比較器(コンパレータ)の出力は“H”)。
(3) カウンタ/レジスタ出力を D-A変換器がアナログ電圧(Vdac)に変換します。
(4) 比較器(コンパレータ)は入力電圧(Vin) と Vdac 電圧の大小を判定します。
(5) Vin > Vdac であれば、カウンタ出力を +1 して (3)から繰り返します。
Vin < Vdac であれば、変換終了です。
以上が単純な計数型A-D変換器の仕組みです。 このことからすぐにわかるのは、変換時間が長くなるということです。 数値を +1 しながら比較を繰り返すので、早いときは1回の比較で確定、遅いときには ( 2のN乗 -1) 回の比較で確定します。 10ビットの A-D変換器の場合は最大で 1023回もの繰り返しを行ってやっと確定ということになります。
追従比較型というのは、アップ・ダウン・カウンタを利用した構成で次のように動きます。
(1) カウンタ/レジスタが何らかの値を出力します
(2) カウンタ/レジスタ出力を D-A変換器がアナログ電圧(Vdac)に変換します。
(3) 比較器(コンパレータ)は入力電圧(Vin) と Vdac 電圧の大小を判定します。
(4) Vin > Vdac であれば、カウンタ出力を +1 して (2)から繰り返します。
Vin < Vdac であれば、カウンタ出力を -1 して (2)から繰り返します。
つまり、入力信号に追従して変換結果を増やしたり減らしたりするのです。 変換終了という状態はありません。 実際の回路がどうなっているかは別として、いま説明した原理からいくと入力電圧が安定していても最下位ビットは 1 と 0 を行ったり来たりすることになります。
もうひとつ、似たような名前の逐次比較型を説明します。 実はこれはカウンタ/レジスタの部分をレジスタとしてのみ利用します。 また、制御部の仕事が多いのも特徴といえます。
ほかに比べると説明が少し難しいので、4ビットA-D変換器を例にして具体的な説明を行います。 なお 4ビットの二進数を 0000b のようにして表します( b は binary の頭文字)。 * 印は 1 または 0 であることを示します。
(1) まず最初に制御部(Control) が変換開始の信号を出します。
(2) カウンタ/レジスタをリセットして 0000b にします(レジスタ値=出力値)。
(3) カウンタ/レジスタの ビット3 を 1 にします(つまり 1000b になる)。
(4) カウンタ/レジスタ出力を D-A変換器がアナログ電圧(Vdac)に変換します。
(5) 比較器(コンパレータ)は入力電圧(Vin) と Vdac 電圧の大小を判定します。
(6) Vin < Vdac のときのみカウンタ/レジスタの ビット3 を 0 にします。
(7) カウンタ/レジスタの ビット2 を 1 にします(つまり *100b になる)。
(8) カウンタ/レジスタ出力を D-A変換器がアナログ電圧(Vdac)に変換します。
(9) 比較器(コンパレータ)は入力電圧(Vin) と Vdac 電圧の大小を判定します。
(10) Vin < Vdac のときのみカウンタ/レジスタの ビット2 を 0 にします。
(11) カウンタ/レジスタの ビット1 を 1 にします(つまり **10b になる)。
(12) カウンタ/レジスタ出力を D-A変換器がアナログ電圧(Vdac)に変換します。
(13) 比較器(コンパレータ)は入力電圧(Vin) と Vdac 電圧の大小を判定します。
(14) Vin < Vdac のときのみカウンタ/レジスタの ビット1 を 0 にします。
(15) カウンタ/レジスタの ビット0 を 1 にします(つまり ***1b になる)。
(16) カウンタ/レジスタ出力を D-A変換器がアナログ電圧(Vdac)に変換します。
(17) 比較器(コンパレータ)は入力電圧(Vin) と Vdac 電圧の大小を判定します。
(18) Vin < Vdac のときのみカウンタ/レジスタの ビット0 を 0 にします。
(19) 変換終了です。
文章はだらだらと長いのですが、繰り返しがないので実際の変換時間は長くありません。 NビットのA-D変換器であれば、N回の比較で変換が終了します。 10ビットの場合は 10回で済むのです。 なかなか魅力的ですね。
このようにして回路で実現すると 「すごいな、よくできてる」 と思うかもしれませんが、ソフトウェアでいうところの二分探索と同じですから、人によっては馴染みの深い方法といえるかもしれません。
◆ ブレッド・ボードで A-D変換器を作ってみよう
理屈だけでわかったつもりになってはいけません。 自分の手でそれを作ってみることにします。 作ってみること自体が目的なので、作りやすいものを選びました。 というわけで、ここは単純な計数型のA-D変換器で決まりでしょう。 回路図を示します。 図中には書きませんでしたが、電源電圧は 3V~6V を使用します。
計数型 A-D変換器の回路図 (クリックで拡大)
OPアンプ(オペアンプ)は 2チャネル入りの LMC6482(ナショナルセミコンダクター) を一つ使います。 意外に入手性はよいようです。 単電源で使用できるもので、入力も出力も電源電圧範囲いっぱいまで使用可能です(レール・トゥ・レール)。 2チャネルのうちの一つは発振回路として、もう一つはコンパレータとして使っています。
カウンタIC は 74HC161 を使います。 これは 4ビットのバイナリ・カウンタで正に目的にピッタリのものです。 同期リセット・タイプの 74HC163 でも OK です。
LED の電流制限抵抗を 1kΩという大きめの値にしてあるのには訳があります。 これを 220Ωなどの小さい値にしてしまうと、そちらに電流を多く取られてしまって電圧が下がり、D-A変換器に影響が出る恐れがあるのです。 最近の LED は少ない電流でも充分に明るく光るので、1kΩくらいで大丈夫です。
発振回路の発振周波数は約 40Hz です。 もっと早くすることも可能ですが、A-D変換を行うときに LED がパラパラっと光って見える程度の速さに設定しています。 マイコンを使わずこんなに面白い動きができるというのは、マイコン全盛期の今となってはかえって新しい感覚かもしれませんね。
ブレッドボードは エレキジャックNo.8 のふろくを利用しました。
動作中のようすは一番上の写真に示してあります。
【 使い方 】
(1) SW1 を押したままにします。
(2) VR1 を回して任意のアナログ電圧を設定します。
(3) SW1 を離します。
(4) b3 ~ b0 の四つの LED が ピカピカっと光って A-D変換値を表示します。
変換終了時は Complete LED が点灯します。
実体配線図、パターン図は省略します。 まねして作ってみたいという方は、次の写真を参考にしてください。 回路図と見比べて確認しながら作業を行ってください。
ブレッドボードに部品と配線を挿したようす (クリックで拡大)
短めの配線にはスズ・メッキ線を利用しています。 長めの配線にはフラット・ケーブルをばらして両端を予備はんだ処理したものを利用しました。 自由な長さが用意できるので気楽に作ることができました。 抵抗の足はそのまま曲げて使いましたが、少し短く切ったほうがショートの心配がなくてよいかもしれません(今回はたまたまショートしにくい配置になったので問題視していない)。
後ろ側から見たところ (クリックで拡大)
マイコンの使い方という連載にもかかわらず、またマイコンが出てこない記事を書いてしまいました。 しかし、このようにして基礎的な知識を楽しみながら身に付けていくことこそ、本当に実力が付く手助けになると信じています。 誰かが作ったものをまねして作ることも、電子工作の楽しみのひとつです。 みなさんも面白そうだな、と思ったらどんどんチャレンジしていきましょう。
次回は、 QY4A マイコンの A-D変換器の説明に入ります。
『参考文献』
「試しながら学ぶHC08マイコン入門」 (CQ出版)
第1部 電子工作の手ほどき
第2章 工具の使い方に慣れよう
第4章 工作に使用する部品について知ろう
筆者のホームページ 『マイコン工作の実験室』
組み込みエンジニア KAWANO
