マイコンにアナログデータを取り入れるには、デジタルデータにする必要があります。この取り入れにA/D変換器を使います。
電圧値の場合、A/D変換器とマイコンのデータの流れは、アナログ電圧値(10進数)→ デジタル電圧値(2進数)→マイコン内10進数の電圧値のデータの流れとなります。
プログラムでは、電圧値を10進数で扱うことが多いためです。
この記事わかること
- 逐次比較方式の3ビット A/D変換器をつかい、アナログ入力電圧値(10進数)を3ビットデジタル出力電圧値(2進数)に変換する方法を説明します。(ハード構成で説明)
- 上記、デジタル出力電圧値(2進数)をマイコンで10進数の電圧値に変える事について説明をします。(プログラムで算出)
アナログ電圧値(10進数)→デジタル電圧値(2進数)→マイコン内アナログ電圧値(10進数)になるまでのデータの遷移を説明します。
具体例、Analog Input:2.7V 、+Vref=4V のデータの流れについて説明
本記事では、データの誤差については説明していません。
A/D変換からマイコンへのデータについて
データの流れについて
アナログデータは、マイコンで直接処理出来ませんので、A/D変換器を経由してマイコンに取り入れるために、デジタルデータにします。このデジタルデータは、2進数なのでマイコンのプログラムで扱う場合は、分かり易くするために10進数にします。
例えば、温度測定で温度センサーICを使用する場合は、温度センサーICのアナログ電圧値(10進数)をA/D変換の出力・デジタル電圧値(2進数)にして、マイコンに取り入れ10進数で温度値を算出します。

図1.温度センサーICのアナログ電圧からマイコンまでのデータの流れ図
データの流れ:
- アナログ電圧:Analog-out Voltage(10進数)
- マイコンに取り入れるため、A/D変換を使いデジタル電圧:digital-out Voltage に変換(2進数)
- マイコン内でデジタルデータを10進数に変換して、プログラミングにより温度値算出
マイコン専用のA/D変換プログラムの引く数は、整数・小数点設定をするのが一般的ですので、2進数のデジタルデータを直接意識することは無いと思います。
アナログ電圧からデジタル電圧の流れ(ハードで実現)
例:逐次比較方式の3ビットA/D変換
下記に、逐次比較方式3ビットA/D変換器を例にあげ、アナログ電圧からデジタル電圧変換の説明をします。
基本的な考え方は、デジタル出力信号のビット数(分解能)が増えても同じです。
逐次比較方式のA/D変換とは:
アナログ信号をデジタル信号に変換する方式の一つです。コンパレータ(CMP)でアナログ入力信号(Analog Input)とD/A変換回路(voltage ledder部)からの信号を比較し、逐次的に分解能を上げていく方式です。

図2.逐次比較方式の3ビットA/D変換の概要図
回路構成:
voltage ladder:
基準電圧を分圧する回路
3ビットデジタルデータ ⇒ 2³=8個の抵抗(R)とスイッチ(SW)群回路。抵抗分圧回路
1抵抗器Rの電圧降下は、0.5V ( =4V/抵抗器8個 )
抵抗Rの数は、2(ビット数)又は、このビット数に対して最小電圧単位にするSW構成
Timing Control:
各ブロックを制御する回路
3bit Out Buffers:
アナログ電圧を変換した3ビットデジタル電圧(Bit3,Bit2,Bit1)回路
Signal hold:
デジタルに変換中、アナログ電圧を一定に保持する回路
CMP:
アナログ電圧と分圧(基準電圧から分圧)を比較する回路
Analog Input:
アナログ信号
Digital Output:
デジタル変換にした出力信号(Bit3、Bit2、Bit1)
基準電圧(+Vref)を元にして、ラダー抵抗R(voltage ladder)で分圧(No1・No2・No3のSW制御)します。この分圧とアナログ電圧(Analog Input)をコンパレータ(CMP)で比較し、1ビット単位にデジタルデータ値を上位桁(MSB)から決め、SWを変えて3回(No1→No2→No3)比較、3ビットデジタル電圧値(Bit3.Bit2.Bit1)を生成します。
上記、概要図では、-Vref=0Vとしています。
+Vref > Analog Input とします。
抵抗分圧とは、基準電圧(±Vref)からスイッチング(SW)により、分圧した電圧を示します。
MSB:Most Significant Bitの略
逐次比較方式の3ビットA/D変換フロー図
逐次比較方式3ビットA/D変換の動作フローを下記に示します。
(流れは、左⇒右)

図3.逐次比較方式3ビットA/D変換フロー図
具体例:Analog Input電圧値=2.7V、+Vref=4V のA/D変換のデジタル値は
”図3.逐次比較方式3ビットA/D変換フロー図”の赤線の流れとなり、
Analog Input:2.7V 、+Vref=4V 3ビットA/D変換するとデジタルデータは、”101″となります。
デジタル電圧からアナログ電圧に戻す計算(プログラムで実現)
ハードで実現した、アナログ→デジタルの変換を、プログラムを使いアナログデータに戻すことが出来ます。
デジタル電圧値からアナログ電圧値への計算の表を、下記に示します。
アナログ値(元値)→デジタル値変換をハードで実現、この変換は可逆性有ります。
マイコンのプログラムで、デジタル値→アナログ値(再現値)を算出します。
注意:元値に対し、分解能により再現値に幅を生じます。
表1、デジタル電圧値からアナログ電圧値への計算表

青色部の説明:
Digital data:デジタルデータ表示(n:ビット数)
Bit length :Bit-n(MSB)・Bit-n-1・・・Bit-1(LSB)
A/D cvt Bit value:デジタルデータの値
multiplication:積計算
Voltage reference:基準電圧値(+Vref)
Constant:ビット桁単位の定数、1/2(MSB)→ 1/2n(LSB)
Total:各ビット電圧値の総和
デジタル桁単位(緑部の縦)に”A/D cvt Bit value”・”Voltage relerence”・”Constant”を掛け算します。このビット単位の掛け算の総和が、アナログ電圧再現値となります。
LSB:Least Significant Bitの略
具体例:3ビットデジタル電圧値(2進数)からマイコン内 アナログ電圧値10進数データに変更
デジタル電圧値 ”101”(2進数)をアナログ電圧値(10進数)にします。
”表1、デジタル電圧値からアナログ電圧値への計算表”を参照、n=3とします。
Bit3:”1″ ⇒{”Bit3:1”×(+Vref:4V)× 1/2 }=2
Bit2:”0″ ⇒ +{”Bit2:0”×(+Vref:4V)× 1/4 }=0
Bit1:”1″ ⇒ +{”Bit1:1”×(+Vref:4V)× 1/8 }=0.5
Bit3~Bit1の各積の総和は、2+0+0.5=2.5V
アナログ入力電圧値 2.7Vは、マイコン内でアナログ値 2.5Vになります。
具体例:Analog Input電圧値=2.7V、+Vref=4V のA/D変換のまとめ
Analog Input=2.7V、+Vref=4V、3ビットのデジタルデータの流れ:
Analog Input = 2.7V(10進数)→ Digital Output = “101”V(2進数)→ マイコン内 2.5V(10進数)
注意:
2.7V入力に対しマイコン内で2.5Vになるのは、A/D変換器の3ビットの分解能(23=8)によります。
+Vref=4V、-Vref=0V、4V/8(分解能)= 0.5V 単位のアナログ電圧値再現となるからです。
デジタルデータのビット数(n)を大きくして分解能を細かくすると、元アナログ電圧値に、より近づきます。
以上の”データの流れ”は、デジタルのビット数が大きくなっても変わりません。
本記事では、誤差については、考慮していません。
コメント