目次>7章 各種情報>(11)ラダー抵抗回路によるD/A変換の仕組み
ラダー抵抗回路によるD/A変換の仕組み
更新日2007.12.15
ここでは、ラダー抵抗回路によるD/A変換の原理について説明します。
D/A変換とは、デジタルデータをアナログ信号(通常は電圧)に変換することです。
PICの出力ポートの0,1の組み合わせ(デジタルデータ)で該当する電圧(アナログ信号)を出力します。
ラダー抵抗回路は、2種類の抵抗だけで作ることができるD/A変換回路です。
(1)D/A変換について
|
・ |
例えば、メモリに記録された音声データでスピーカを鳴らす場合を考えて見ます。
メモリもPICも基本的にデジタルデータしか扱えませんので、スピーカに出力するためにはアナログ信号に変える必要があります。
下の図はそのイメージを表しています。
-
-
D/A変換とは、デジタルデータ(0と1のビットの組み合わせ)をアナログ信号(通常は電圧)に変換する事です。
では、入力が3ビットのD/A変換を考えて見ます。
3ビットで表せる数は、下の表のように0〜7です。
-
ビット2 | ビット1 | ビット0 | 10進数
| 0 | 0 | 0 | 0
| 0 | 0 | 1 | 1
| 0 | 1 | 0 | 2
| 0 | 1 | 1 | 3
| 1 | 0 | 0 | 4
| 1 | 0 | 1 | 5
| 1 | 1 | 0 | 6
| 1 | 1 | 1 | 7
|
従って、3ビットのD/A変換回路では、最大電圧を8等分した任意の電圧が出力できます。
下のグラフは、最大電圧を5Vとした時の様子を表しています。
-
| 3ビットの場合、可変できる最小電圧は、0.625Vです。 従って 出力電圧 = 0.625V × デジタルデータ値
|
8ビットであれば、0〜255まで表現できますので、最大電圧を256等分した電圧が最小の刻みになります。
下のグラフは、最大電圧を5Vとし、横軸は0〜255までのデジタルデータとしたものです。
-
8ビットの場合、可変できる最小電圧は、約0.0195Vで3ビットよりもきめ細かに制御できる事が分かります。
D/A変換の精度は、デジタルデータのビット数で決まります。
|
(2)ラダー抵抗回路によるD/A変換
|
|
それでは、本題のラダー抵抗回路によるD/A変換の説明に入ります。
ここでは、3ビットの例で説明します。
8ビットでも10ビットでも考え方は同じです。
|
| 回路
|
|
以下のラダー抵抗回路を例に説明します。
-
-
|
抵抗は、1KΩと2KΩを使っていますが、抵抗値が1:2の関係であれば何でもOKです。
ただし、1KΩ以下だと無駄な電流が増えますし、1MΩ以上だとノイズが乗りやすくなります。
|
-
ここで、以下の点を覚えておいて下さい。
・ラダー回路をつなぐPORTは出力モードにする
・PICの出力ポートは、1をセットするとVddに接続される(実際は、Vdd−0.5V程度)
・逆に、0をセットするとGNDに接続される(ほぼ0V)
|
|
| デジタルデータと出力電圧
|
|
この回路のデジタルデータと出力電圧の関係は以下のようになります。
-
RB2 | RB1 | RB0 | 10進数 | Output (V)
| 0 | 0 | 0 | 0 | 0
| 0 | 0 | 1 | 1 | 0.625
| 0 | 1 | 0 | 2 | 1.250
| 0 | 1 | 1 | 3 | 1.875
| 1 | 0 | 0 | 4 | 2.500
| 1 | 0 | 1 | 5 | 3.125
| 1 | 1 | 0 | 6 | 3.750
| 1 | 1 | 1 | 7 | 4.375
|
|
前提として、PICのポートに1をセットした時の出力電圧を5V,0をセットした時の出力電圧を0Vとしています。
また、Outputには電流を流さない事も前提です。
|
この表のいくつかを例に、どうしてそうなるのか説明します。
-
-
まず初めは、全てのポートに0をセットした場合です。
-
-
PICの出力ポートは、0をセットするとGNDに接続されます。
従って、上の回路は下のように書き直せます。
-
-
この回路は、GNDにしか接続されていませんので、Outputは0Vになります。
-
-
次に、RB2のみ1をセットした場合です。
-
-
PICの出力ポートは、0をセットするとGNDに、1をセットするとVddに接続されます。
従って、上の回路は下のように書き直せます。
-
-
-
上と全く同じですが、抵抗の向きを変えて書き直しました。
|
|
そして、Outputより下の抵抗の合成抵抗を求め、書き直すとこちらになります。
5Vが2KΩの抵抗2本で分圧されていますので、Outputは半分の2.5Vになります。
|
-
-
次に、RB0のみ1をセットした場合です。
-
-
PICの出力ポートは、0をセットするとGNDに、1をセットするとVddに接続されますので、上の回路は下のように書き直せます。
-
-
上と全く同じですが、+5Vが一番上になるように書き直しました。
-
| 最終的に求めたいのはcの電圧ですが、すぐには計算できませんので、aの電圧→bの電圧→cの電圧の順に算出します。
|
a点の電圧を求めるには、a点より下の合成抵抗を算出して1本の抵抗に出来れば求められます。
-
| 合成抵抗を求めて書き直したのが左の回路図です。
a点の電圧 | = (5V/(2+1.0476))×1.0476
| | = 1.7188V
|
|
続いて、b点の電圧ですが、同様にb点より下の合成抵抗を算出して1本の抵抗で書き直します。
-
| a点の電圧は、1.7188Vですので
b点の電圧 | = (1.7188V/(1+1.2))×1.2
| | = 0.9375V
|
|
b点の電圧が求まりましたので、先の回路図のc点(Output)の電圧が計算できます。
Output電圧 | = (0.9375V/(1+2))×2
| | = 0.625V
|
|
(3)まとめ
|
|
3つの例で説明しましたが、他も同様に計算すると以下の表のようになります。
-
RB2 | RB1 | RB0 | 10進数 | Output (V)
| 0 | 0 | 0 | 0 | 0
| 0 | 0 | 1 | 1 | 0.625
| 0 | 1 | 0 | 2 | 1.250
| 0 | 1 | 1 | 3 | 1.875
| 1 | 0 | 0 | 4 | 2.500
| 1 | 0 | 1 | 5 | 3.125
| 1 | 1 | 0 | 6 | 3.750
| 1 | 1 | 1 | 7 | 4.375
|
|
デジタルデータが3ビットでポートの出力電圧が5Vの場合、デジタルデータ値とD/A変換結果の電圧は以下の式で求められます。
デジタルデータ値は、左の表の10進数欄の値です。
|
- よく使われる8ビットの場合は、以下の式で求められます。
-
(デジタルデータ値:0〜255)
こちらで、8ビットのD/A変換により正弦波を出力する実験をしています。
<その他>
このラダー抵抗回路は電流を取り出せませんので、オペアンプなどでインピーダンス変換する必要があります。
オペアンプをボルテージフォロワで使うと、簡単にインピーダンス変換ができます。
|