D/A 変換と A/D 変換 大豆生田利章 2014/6/24 1 D/A 変換 ディジタルデータをアナログ信号に変換することを D/A 変換とよぶ.変 換可能なアナログ信号の最小値を 0 最大値を VREF とする.ディジタルデー タが n ビットとすると,ディジタルデータが 1 ビット増えるごとにアナログ 信号は VREF /2n だけ増加する.図 1 に 3 ビットのときの対応例を示す. 図 1: ディジタルデータとアナログ信号との対応 ディジタルデータの 0 から 2n − 1 に対応するアナログ信号は 0 から 2n − 1 ·VREF となる.n が十分に大きいときは,アナログ信号の範囲は 0 から 2n VREF であるとしてよい.例えば,8 ビット D/A 変換器において,VREF = 5.0 V であるとする.このとき,8 ビットデータ H’AC を入力したときに出力され るアナログ電圧は 10 × 24 + 12 × 5.0 V ; 3.36 V 28 (1) である.逆にアナログ電圧として,2.0 V を出力させたいときに D/A 変換器 に対する入力データは 2.0 V = 102.4 ; 102 = H0 66 (5.0 V/28 ) となる. 1 (2) c 大豆生田利章 2014 ° 2 A/D 変換 2 2.1 逐次比較形 A/D 変換 アナログ信号をディジタルデータに変換することを A/D 変換とよぶ.こ こでは多くのマイコンで用いられている逐次比較形 A/D 変換(SAR 1 形 A/D 変換)を説明する.逐次比較形 A/D 変換では比較電圧との大小関係に よりディジタルデータの最上位ビット (MSB) から値を決めていく.図 2 は A/D 変換の基準電圧が 5 V であるときに,アナログ信号電圧 3.4 V がどの ようにディジタルデータに変換されていくかを示したものである.MSB で は比較電圧 2.5 V より 3.4 V が大きいのでディジタルデータは 1 となる.次 のビットでは比較電圧 3.75 V より 3.4 V が小さいのでディジタルデータは 0 となる.以下,同様の操作を繰り返す. 図 2: 逐次比較形 A/D 変換の考え方 以上の原理を実現するための回路の概要は,図 3 のようになる.ここで比 較器は 2 つの入力電圧の大小により出力電圧が決定される回路であり,ここ ではディジタル信号の 0 または 1 を出力するものとする. 図 3: 逐次比較形 A/D 変換回路の概要 一般的な逐次比較型 A/D 変換の動作は以下のようになる.MSB から n ビッ ト目までの値が確定しているとする.ここで,n ビット目までを確定した値, 1 successive approximation register c 大豆生田利章 2014 ° 3 n + 1 ビット目を 1 ,n + 2 ビット目以降を 0 としたディジルデータを D/A 変換する.この D/A 変換した値と,入力信号の大きさを比較する.入力信 号が大きいときは n + 1 ビット目を 1 で確定させ,小さいときは n + 1 ビッ ト目を 0 で確定させる.図 2 の例で 3 ビット目を確定させるときの状態を, 図 4 に示す. 図 4: 逐次比較形 A/D 変換の動作 図 2 および図 4 に示した逐次比較形 A/D 変換の動作中のレジスタの内容 および D/A 変換器と比較器の出力を表 1 に示す. 表 1: 逐次比較形 A/D 変換の動作例(VIN = 0.68VREF ) レジスタ D/A 変換器 比較器 2.2 1000 1100 0.5VREF 0.75VREF 1 0 1010 1011 0.625VREF 0.6875VREF 1 0 その他の A/D 変換 フラッシュコンバータ(並列比較形)フラッシュコンバータでは図 5 のように nVREF N 個の抵抗 R と比較器を並べ,入力電圧 VIN と各比較器の入力 ) N を一度に比較する.これにより,比較器の出力はあるところを境にして 0 または 1 が連続することになる.この比較器の出力をエンコーダで 2 進数に変換する. 二重積分型 二重積分型 AD コンバータを図 6 に示す.まず,入力電圧 VIN で時間 T1 だけコンデンサ C を充電する.次に比較電圧 −VREF でコ c 大豆生田利章 2014 ° 4 図 5: フラッシュコンバータ ンデンサ C を放電する.充電時間 T1 と放電時間 T2 から以下の式の ように入力電圧と比較電圧の比が求まる. VIN T2 = VREF T1 (3) VREF および T1 をあらかじめ定めておき,T2 をカウンタで測定するこ とにより AD 変換したディジタルデータが得られる. 図 6: 二重積分型 AD コンバータ 追従比較形 図 7 のようにカウンタの値をインクリメントしていき,カウン タの値を D/A 変換した電圧と入力電圧と比較する.D/A 変換した電圧 が入力電圧を超えると A/D 変換が終了する. デルタシグマ形(シグマデルタ形)図 8 にデルタシグマ形 AD コンバータの 原理図を示す.比較器の出力が 0 のときは減算器の出力は VIN + VREF c 大豆生田利章 2014 ° 5 図 7: 追従比較型 AD コンバータ となり,比較器の出力が 1 のときは減算器の出力は VIN − VREF となる. 加算器はそれまでの減算器の出力の和を出力する. 図 8: デルタシグマ形 AD コンバータ 図 9 にデルタシグマ形 AD コンバータの入力電圧 VIN が,0,VREF お よび −VREF のときの動作を示す.図 8 に示した減算器,加算器,比較 器の最初の出力はすべて 0 であるとしている.図に示すように, .VIN が 0 のときは 0 と 1 が交互に出力され,VIN が VREF のときは 1 が連 続出力され,VIN が −VREF のときは 0 が連続出力される.このように, 入力に応じて比較器の出力の 0 と 1 の割合が変化する.比較器の出力 はそのままでは雑音の影響が大きいので,をディジタルフィルタで処理 することにより雑音を除去したデータが得られる. VREF VIN = のときのデルタシグマ形 AD コンバータの動作例を表 2 2 に示す.ここでは,VREF を 1 としている. c 大豆生田利章 2014 ° 6 図 9: デルタシグマ形 AD コンバータの動作 表 2: デルタシグマ形 AD コンバータの動作例 減算器出力 加算器出力 比較器出力 0 0 0 3/2 3/2 1 −1/2 −1/2 −1/2 1 1/2 0 1 1 0 3/2 1 3/2 (以下繰り返し) c 大豆生田利章 2014 ° 7 H8 マイコンの D/A 変換と A/D 変換 3 3.1 D/A 変換 H8/3062BF には D/A 変換器が 2 チャネル用意されていて,8 ビットのディ ジタルデータをアナログ信号に変換する.アナログ信号の出力端子 DA0 お よび DA1 はポート 7 の端子 P76 および P77 と兼用されている.D/A 変換 はデータレジスタ(DADR0 または DADR1)に 8 ビットデータを書き込む ことにより行なわれる.書き込まれた 8 ビットディジタルデータは,最大で 10 µs の変換時間を経て,アナログデータに変換される.アナログ出力電圧 #DADR はデータレジスタの数値を #DADR とすると × VREF となる.こ 256 こで,VREF はリファレンス電圧端子の電圧である.D/A 変換の制御は D/A コントロールレジスタ (DACR) と D/A スタンバイコントロールレジスタ (DASTCR) で行なう.DACR のビット構成を図 10 に示す.DAOE0 ある いは DAOE1 が 1 のときは D/A 変換が許可され,DA0 (P76) または DA1 (P77) から変換結果が出力される.DAE は DAOE0 および DAOE1 と組み合 わせて表 3 に示すように D/A 変換の制御を行なう.なお,第 0 ビットから第 4 ビットは未使用である.DASTCR はソフトウェアスタンバイモード 2 時の D/A 変換の禁止・許可を設定するもので,初期値は禁止に設定されている. 図 10: DACR のビット構成 表 3: D/A コントロールレジスタによる変換制御 DAOE1 DAOE0 DAE チャネル 0 チャネル 1 0 1 0 1 0 1 2 SLEEP 0 1 禁止 禁止 許可 禁止 許可 許可 0 1 禁止 許可 許可 許可 - 許可 許可 命令により CPU 機能を停止した状態. c 大豆生田利章 2014 ° 3.2 8 A/D 変換 H8/3062BF には逐次比較型 A/D 変換器が 8 チャネル用意されていて,ア ナログ信号を 10 ビットのディジタルデータに変換する.変換時間は 1 チャネ ル当たり最小 5.36 µs である.A/D 変換には単一モードとスキャンモードの 2 種類の動作モードがある.単一モードは指定した 1 つのチャネルの A/D 変 換を行うもので,スキャンモードは指定した複数のチャネルの A/D 変換を順 に行うものである. A/D 変換の制御は A/D コントロール/ステートレジスタ (ADCSR) と A/D コントロールレジスタ (ADCR) で行なう.ADCR は外部トリガまたは タイマによる A/D 変換開始を許可するときに設定するレジスタであり,初 期値では外部からの A/D 変換開始は禁止されている.ADCSR のビット構成 を図 11 に示す.これらのうち重要なものは ADF,ADST,CH2,CH1 およ び CH0 の 5 ビットである.第 4 ビットの SCAN を 1 にセットすることでス キャンモードへの切り替わる 3 . 図 11: ADCSR のビット構成 ADCSR の CH2 から CH0 は表 4 のように A/D 変換するアナログ入力チャ ネルを選択する. CH2 0 1 表 4: A/D 変換のチャネルセレクト CH1 CH0 単一モード スキャンモード 0 0 AN0 AN0 1 1 0 AN1 AN2 AN0, AN1 AN0 ∼ AN2 1 AN3 AN0 ∼ AN3 0 0 1 AN4 AN5 AN4 AN4, AN5 1 0 1 AN6 AN7 AN4 ∼ AN6 AN4 ∼ AN7 A/D 変換されたデジタルデータは A/D データレジスタ (ADDR) に格納さ れる.ADDR は ADDRA から ADDRD の 4 本があり,さらに上位 8 ビット 3 初期値は単一モードである. c 大豆生田利章 2014 ° 9 と下位 2 ビットに分割される.ADDR とアナログ入力チャネルの対応を表 5 に示す. 表 5: アナログ入力チャネルと A/D データレジスタの対応 アナログ入力チャネル AN0 AN1 AN2 AN3 A/D データレジスタ AN4 AN5 AN6 AN7 ADDRA ADDRB ADDRC ADDRD 図 12 に A/D 変換(単一モード)のフローチャートを示す.ADCSR の A/D スタートビット (ADST) を 1 にセットすることで A/D 変換を開始す る.A/D 変換が終了すると ADCSR の A/D エンドフラグ (ADF) が 1 にな る.ADCSR の ADST は A/D 変換が終了すると自動的に 0 にクリアされ る.ADF を 0 クリアして,A/D データレジスタから A/D 変換された値を読 み込む. 図 12: A/D 変換のフローチャート(単一モード) スキャンモードの A/D 変換は以下のように実行される.単一モードと異な り,スキャンモードでは ADST は自動的にクリアされない. 1. ADST を 1 にセットすることにより,A/D 変換が開始される. 2. 表 4 で選択した各チャネルの A/D 変換を順番に実行する.ディジタル データは表 5 に示された A/D データレジスタに書き込まれる. 3. 選択したすべてのチャネルの A/D 変換が終了すると ADF が 1 になる. c 大豆生田利章 2014 ° 10 4. 以後,2. の動作を繰り返す. 5. ADST を 0 にクリアすることにより,A/D 変換が終了する. スキャンモードの動作を図示すると図 13 のようになる. 図 13: A/D 変換(スキャンモード)の動作 4 プログラム例 リスト 1 に A/D 変換を応用したプログラムの例を載せる.これはアナロ グ入出力ボードの可変抵抗を変化させることにより,IO ボードの LED の点 滅間隔を変更するものである. プログラムリスト 1: A/D 変換を応用したプログラム例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 . CPU 300 HA ADDRDH . EQU H ’ FFFE6 ; A D デ ー タ 上 位 レ ジ ス タ AN3 VPA <-> Analog I / O board VPA ADCSR . EQU H ’ FFFE8 ; A D コ ン ト ロ ー ル / ス テ ー ト レ ジ ス タ P4DDR . EQU H ’ EE003 PBDDR . EQU H ’ EE00A P4DR . EQU H ’ FFFD3 ; VPD <-> I / O board VP1 PBDR . EQU H ’ FFFDA ; VPE <-> I / O board VP2 ADST . BEQU 5 , ADCSR ; A / D start ADF . BEQU 7 , ADCSR ; A / D end flag . SECTION PROG , DATA , LOCATE =H ’00000 . DATA . L RESET . SECTION P , CODE , LOCATE =H ’00800 RESET : MOV . L #H ’ FFF00 , ER7 ; S P 設 定 MOV . B #H ’ FF , R0L MOV . B R0L , @P4DDR ; ポ ー ト 4 出 力 MOV . B R0L , @PBDDR ; ポ ー ト B 出 力 MOV . B #H ’03 , R0L ; A / D チ ャ ネ ル 3 を 選 択 MOV . B R0L , @ADCSR MOV . B #H ’33 , R0L ; ポ ー ト B の 出 力 初 期 値 LOOP : BSET ADST ; A D 変 換 開 始 ( ADST =1) LOOP1 : BTST ADF ; A D 変 換 終 了 ? BEQ LOOP1 ; ADF =0 な ら 変 換 中 BCLR ADF ; A D F を ク リ ア MOV . B @ADDRDH , R0H ; 上 位 8 ビ ッ ト を R 0 H に 取 り 込 み MOV . B R0H , @P4DR ; 上 位 8 ビ ッ ト を ポ ー ト 4 に 出 力 MOV . B R0L , @PBDR ; ポ ー ト B 出 力 NOT . B R0L ; R0L 反 転 ; タ イ マ ー R0H x 1 ms TIMER : MOV . L #D ’3125 , ER6 ;1 ms timer TIMER1 : DEC . L #1 , ER6 ; E R 6 を 1 減 ら す c 大豆生田利章 2014 ° 11 NOP BNE TIMER1 ; E R 6 が 0 に な る ま で DEC . B R0H BNE TIMER ; R0H が 0 に な る ま で JMP @LOOP . END 31 32 33 34 35 36 A AD/DA 変換関係のレジスタ 表 6 に AD/DA 変換関係のレジスタを載せる.なお,表 6 中のアドレス は H8/3062BF のものである. 表 6: AD/DA 変換関係レジスタ 名称 略称 アドレス D/A データレジスタ 0 DADR0 H’FFFF9C D/A データレジスタ 1 DADR1 H’FFF9D D/A コントロールレジスタ DACR H’FFF9E D/A スタンバイコントロールレジスタ DASTCR H’EE01A A/D データレジスタ ADDRAH H’FFFE0 ADDRAL ADDRBH H’FFFE1 H’FFFE2 ADDRBL ADDRCH ADDRCL H’FFFE3 H’FFFE4 H’FFFE5 ADDRDH ADDRDL H’FFFE6 H’FFFE7 A/D コントロール/ステートレジスタ ADCSR H’FFFE8 A/D コントロールレジスタ ADCR H’FFFE9
© Copyright 2024 ExpyDoc