第7章 A/Dコンバータ

 PIC16F87Xには10bitのA/Dコンバータが内蔵されています。PICのようなワンチップマイコンにおいてA/Dコンバータのような、アナログ信号とのインターフェース機能はその用途を格段に広げてくれます。A/D内蔵のPICではプログラムによって簡単にアナログ信号をデジタル信号として取り出す事ができます。しかしA/Dコンバータそのものの諸特性や性質などを理解していないとA/Dコンバータの性能を十分引きだすことはできません。この章ではA/Dコンバータの基礎を説明すると共に、PIC内蔵のA/Dコンバータやその周辺回路の設計法について説明して行きます。

7−1 A/Dコンバータの基礎

◆ 分解能
 分解能とは入力されるアナログ信号の全範囲をデジタル信号に変換する分割数を意味するものであり、変換するデジタル信号のビット数で表します。PIC16F87Xの場合10bitなので入力範囲を1023分割したデジタル信号(0000000000〜1111111111)に変換します。
 例えば入力電圧範囲0〜5Vとすると1bit相当の電圧は
 となります。
よって、入力電圧は下表のように変換されます。
◆ 入力電圧範囲
 A/Dコンバータの入力電圧範囲は通常、GNDから+基準電圧(Vref+)または−基準電圧(Vref−)から+基準電圧(Vref+)までとなります。−基準電圧(Vref−)や+基準電圧(Vref+)は外部から入力します。但しPIC16F87Xでは基準電圧端子を内部で電源端子と共用にする設定が可能です。当然の事ながら基準電圧はA/D変換の精度に直接影響します。
  よってより高精度の変換を行う為には、高精度、高安定度の基準電源が必要になりますが、例えば3端子レギュレータ程度の精度、安定度で良いのであれば電源と共用する事が可能でしょう。
◆ 精度
 基準電圧以外の誤差要因としては直線性誤差、オフセット、ゲイン誤差などが有り変換値の±LSBであらわします。
◆ 変換速度
 変換速度とは一回のA/D変換に要するトータル時間であり、ADクロックによりA/D変換処理を行う時間の他にアナログ信号が安定する時間も考慮しなければなりません。
 下図はA/Dコンバータのブロック図の一例です。

このA/Dコンバータの一回の変換手順の例を以下に示します。

  @ マルチプレクサの変換するチャネルのスイッチをONにする。
  A サンプルスイッチをONにする。
  B サンプルホールドコンデンサに入力がチャージされる時間を待つ。
  C サンプルスイッチをOFFにする。
  D A/D変換器に変換開始指令を送る。
  E 変換処理時間経過後A/D変換値が出力される。

このような、一回のA/D変換手順のトータル時間が変換速度です。
◆ 変換方式
 A/Dコンバータの変換方式としては逐次比較型・フラッシュ型等の電圧比較型と2重積分型・ΔΣ型等の時間比較型があります。おおむね電圧比較型は高速ですが高精度、高分解能には適しません。逆に時間比較型は高精度、高分解能に適していますが速度は速くありません。
 以下に逐次比較型と2重積分型について説明します。
<逐次比較型>
 下図は逐次比較型のA/Dコンバータのブロック図です。逐次比較レジスタには最初0を出力しておき、変換を開始するとまず最上位ビットを1にしてコンパレータ出力が変化しなければそのまま、変化したら0に戻します。次に一つ下のビットを1にします。この操作を最下位ビットまで行い変換終了となります。つまり入力電圧と一致するようなDA出力になるDA入力値を探しだし、その値をA/D変換値として出力します。
<2重積分型>
 下図は2重積分型A/Dコンバータのブロック図です。
 このコンバータは変換を開始するとまず一定時間、入力電圧を0Vから積分します。次に入力を切り替えて一定の基準電圧で逆方向に積分し、0Vに戻るまでの時間、一定周期のクロックをカウントします。この0Vに戻るまでの時間は入力電圧に比例しているので、カウンタ出力値も入力電圧に比例した値となり、その値をA/D変換値として出力します。


ここまで 2002年 7月31日 公開

7−2 PIC16F87XのA/Dコンバータ

 下図はPIC16F877のA/Dコンバータのブロック図です。

<各部の説明>
@ マルチプレクサ
入力段のマルチプレクサにより8チャネルのアナログ信号のA/D変換が可能。
A +側基準電圧切替
+側の基準電圧を内部のVDDか外部の基準電圧源(VREF+)に切り替えます。
B −側基準電圧切替
−側の基準電圧を内部のVSSか外部の基準電圧源(VREF−)に切り替えます。
C A/Dコンバータ
A/Dコンバータは10bitの逐次比較型です。
<特徴>
 分解能の10bit(1/1024)は比較的大きい値であり、高精度の計測を行うには無理があるでしょう。しかし例えばセンサー入力による機器の自動制御や警報装置・電池電圧のモニタ等の用途としては十分使用可能でしょう。
 変換方式は逐次比較型でありチャネルを固定すれば40μsec程度の変換速度が実現できます。しかしその分ノイズ成分も混入しやすくなる為、入力回路でのノイズ除去やプログラムでの平均化処理等を検討する必要があるでしょう。(プログラミングでのテクニックについては本書では述べません。)
<主な仕様>
分解能 10Bits
積分直線性誤差 <±1 LSb   (Max)
微分直線性誤差 <±1 LSb   (Max)
オフセット誤差 <±2 LSb   (Max)
ゲイン誤差 <±1 LSb   (Max)
基準電圧(Vref+ −Vref-) 2.0V (Min)        VDD+0.3V  (Max)
入力電圧範囲 VSS-0.3V (Min)     VREF+0.3V  (Max)
許容信号源抵抗 10.0kΩ  (Max)

7−3 基準電圧回路

 A/D変換の外付け回路としては、基準電圧源と入力回路があります。ここではまず基準電圧源回路の設計法について説明します。
 基準電圧はA/Dコンバータのフルスケールを決定する基準値であり、この電圧の安定度や精度は直接A/D変換の精度に影響します。ところでPICのA/D変換回路には基準電圧を3通りに設定する事が可能です。以下にそれぞれの場合の注意点や設計法について述べます。
@ +側、−側共に電源(VDD、VSS)と共用にする。
 高精度・高安定度の電圧計測等でなければ、この方法で問題無いかもしれません。一般に電源の安定化によく使用される三端子レギュレータでは電圧精度が±5%、温度係数が100ppm程度です。この特性で満足できる計測であれば問題なしという事になります。但しこの電源電圧は負荷の変動や入力電圧の変動によっても変化し、またそれらの変動はノイズ成分として重畳されます。−側(VSS、アース電位)も同様の事がいえます。例えばPICでリレーやLEDをオン/オフする回路でこれらの電源がPICの電源と共用であれば確実に影響を受けます。この方式を採用する場合、これらの事を考慮する必要があります。
A +側は外部基準電圧、−側はVSSにする。
 アース電位(VSS)を基準にした高精度・高安定度の計測を行うのであれば、この方法が有利です。下図はTL431(テキサス)という基準電圧用ICを使用した回路です。このICは外付け抵抗なしで2.5V±60mV(温度係数:30ppm)が得られます。また下図のように抵抗を付ける事で2.5V以上の基準電圧を得ることができます。当然の事ながらこの抵抗の精度・安定度も基準電圧に影響するので、これらの抵抗の(精度や温度係数の)選定には注意が必要です。下の回路ではトリマで電圧値を調整するようにしています。

この回路の出力電圧は下の式で求められます。

この式からわかるように2つの抵抗が同じ比率で変化しても出力電圧には影響しません。同じ種類の同特性の抵抗はほぼ同じ温度傾斜を持っているので抵抗の温度特性が直接基準電圧に影響するということにはなりません。またこの方式の場合でもアース電位(VSS)の影響は残ります。負荷が変動してもアナログ回路のアースラインに電流が流れないような、アースの引き回し等を考慮する必要があるでしょう。
B +側、−側共に外部基準電圧にする。
 計測の基準がアース電位(VSS)から浮いている、またはアース電位の変動の影響を受けにくい計測を行う場合などにはこの方式を採用します。
 下図はこの方式の回路例です。−側基準電圧は+側基準電圧を抵抗分割してつくっています。よってこの2つの抵抗(R3,R4)も前項で述べたような考慮が必要です。

基準電圧用のICは出力電圧値・精度・温度係数等により多くの品種が市販されています。設計者は要求仕様に見合った品種を選定する事になるでしょう。

7−4 入力回路

 A/Dコンバータの入力回路はその計測仕様や信号源側の条件によって様々な考慮をする必要があります。以下にその考慮すべき要件を列挙しました。
● 信号源の出力抵抗はPICの仕様を満たしているか?
      (PICの仕様: 許容信号源抵抗 10kΩ Max)
● 計測信号のノイズのレベルや周波数成分は? また計測したい最大周波数は?
● 計測信号はPICの仕様の入力電圧範囲を超える可能性があるか?
 もし計測信号がOPアンプの出力などの低出力抵抗であり、ノイズもなく最大出力電圧もPICの入力電圧範囲内であれば、特に入力回路を設けないで、直接PICに接続しても問題ないかもしれません。しかしこれらの条件を満たしていなければ入力回路で対処しなければなりません。下図は入力回路の例です。

@  このブロックはCRのローパスフィルタです。(第1章 参照)このフィルタで計測信号のノイズを除去します。但しこのフィルタのカットオフ周波数が低すぎると計測したい周波数の信号までその振幅を減衰させてしまいます。よって計測したい周波数の最大値と除去したいノイズの周波数は10倍から100倍程度の差がないとCRフィルタで対処するのは難しいでしょう。各周波数値の関係は下の様になっていなければなりません。



fcは計測信号に影響しない範囲でなるべく低く設定します。
またコンデンサの耐圧は印加される可能性のある最大電圧値より十分高いものを選定します。
A  このブロックは入力保護回路です。計測信号が入力電圧範囲(上図の場合はOPアンプの入力電圧範囲)を超える可能性がある場合には入力保護回路が必要です。デバイスにその入力電圧範囲を超える電圧が印加された場合そのデバイスが破壊される可能性があるからです。この回路では+側または−側に入力電圧範囲を超える電圧が印加された場合、下図の様にダイオードを通して電流がVDDに流れ込み(またはGNDから流れだし)、OPアンプの入力端子の電圧が

  VDD+ダイオードの順方向電圧 (またはGND−ダイオードの順方向電圧)

を超えないように働きます。


B  このブロックはOPアンプによるインピーダンス変換回路です。この回路はゲイン1の非反転増幅回路でありバッファアンプとも呼ばれ、しばしばアナログ回路の入力部や出力部に使用されます。OPアンプの入力抵抗は例えば100MΩといった特性を持っています。この特性により、ある程度大きな出力抵抗の信号源でも影響を受けない、より大きな入力抵抗で受け、小さな出力抵抗にして出力してくれます。PICのA/Dコンバータの仕様では 許容信号源抵抗 10kΩ Max となっており、この仕様を超える信号源であればこの回路の様なインピーダンス変換が必要になります。
<コラム3> アース電流

 電子回路を実装・配線する上ではアース電流に対する配慮が必要です。ましてや高精度で電圧計測を行うようなアナログ回路においては細心の注意が必要です。
 アースは回路の基準となる電位点を意味します。しかし実際にはアースラインはごく小さい値の抵抗と考えられます。よってそこに電流が流れた時、互いに離れたアースポイント間には電位差が生じます。下図はアース電流が流れる様子を示した物です。



以下にPICを中心にアナログ回路と大電流回路が混在している回路例で説明します。

 下図はアースラインの引き回しの悪い例です。大電流回路のアースの帰路とアナログ・ロジック回路のアースの帰路が共通のラインとなっており、大電流のオン/オフがもろに電圧計測値に影響します。図のA点とB点は大電流が流れる事により電位差が生じ、この電位差は電圧計測の誤差になります。



 下図はアースラインの引き回しの良い例です。大電流回路のアースの帰路とアナログ・ロック回路のアースの帰路が分離しており、更に電圧の入力点(A点)と実際の計測点(B点:PIC)の間に電流が流れにくい様な引き回しになっています。



また、アナログ回路やロジック回路・大電流回路が共通電源の場合、電源ラインの引き回しも同様の配慮が必要です。

7−5 第7章のまとめ

 A/Dコンバータの周辺回路はいわばアナログ回路の本質といえます。アナログ回路設計の知識は新人のマイコン技術者や、PICが最初の電子工作と言ったホビーストには不足しがちな知識でしょう。本章の最初にも述べましたが、これらの知識を習得する事はマイコンの用途を格段に広げてくれます。是非共A/Dコンバータを使用した設計にチャレンジして知識と経験を深めてください。



ここまで 2002年 9月22日 公開