【A/D変換とマイコンの データの流れ】

エレキ設計

マイコンにアナログデータを取り入れるには、デジタルデータにする必要があります。この取り入れに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のアナログ電圧からマイコンまでのデータの流れ図

データの流れ:

  1. アナログ電圧:Analog-out Voltage(10進数)
  2. マイコンに取り入れるため、A/D変換を使いデジタル電圧:digital-out Voltage に変換(2進数)
  3. マイコン内でデジタルデータを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/2(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)を大きくして分解能を細かくすると、元アナログ電圧値に、より近づきます。

以上の”データの流れ”は、デジタルのビット数が大きくなっても変わりません。

 
本記事では、誤差については、考慮していません。


コメント