SVX日記
2004-09-17(Fri) PICのA/D変換の項の翻訳
11.0 A/D(アナログ→デジタル)変換モジュール
A/D変換モジュールは、5つの入力ピンのいずれかからのアナログ入力信号(電圧)を、10ビット値(0〜1023)に変換するものです。その際の参照電圧としてVdd(CPU電圧)、Vss(GND)、RA2またはRA3の組み合わせから選択できます。
なお、CPUのSLEEP中にA/D変換を行う機能もありますが、その場合はモジュールへのクロックの供給元として内蔵RCオシレータを選択する必要があります。
A/D変換モジュールは以下の4つのレジスタで制御します:
・A/D変換結果上位レジスタ(ADRESH)
・A/D変換結果下位レジスタ(ADRESL)
・A/D変換制御レジスタ0(ADCON0)
・A/D変換制御レジスタ1(ADCON1)
レジスタ11-1に、A/D変換モジュールの制御を行う、ADCON0レジスタについて示します。レジスタ11-2に、各ポートの機能設定を行う、ADCON1レジスタについて示します。ポートのピンはアナログ入力(RA3は参照電圧入力にも)またはデジタル入力に設定できます。
A/D変換モジュールの使用に関する更に詳しい情報は、PICmicro Mid-Range MCU Family Reference Manual(DS33023)を参照してください。
ADRESHとADRESLレジスタはA/D変換結果を格納します。A/D変換完了時、結果はADRESHとADRESLに格納され、GO/DONEビット(ADCON0<2>)はクリア、A/D割り込みフラグビットADIFがセットされます。A/D変換モジュールのブロックダイアグラムを図11-1に示します。
A/D変換モジュールの設定後、変換を開始するまで、選択したチャンネルには古いデータが入っています。アナログ入力チェンネルはTRISビットを入力に設定しておかなければなりません。
必要なサンプリング時間を知るためには、11.1節"A/D変換サンプリング時間"を参照してください。このサンプリング時間が経過してから、A/D変換が開始できます。
A/D変換を行うには、以下のステップに従います:
1. A/D変換モジュールの設定:
・アナログ入力ピン、参照電圧ピン、デジタル入力ピンの組み合わせを設定します(ADCON1)。
・A/D変換に用いるチャンネル、クロック、モジュールONを選択します(ADCON0)。
2. A/D変換割り込みの設定(必要な場合):
・ADIFビットをクリア、ADIEビットとGIEビットをセットします。
3. サンプリングに必要な時間、待ちます。
4. GO/DONEビット(ADCON0)をセットし、A/D変換を開始します。
5. A/D変換完了割り込みが発生するの待ちます。割り込みを設定しなかった場合、GO/DONEビットがクリアされるのを待ちます。
6. A/D変換結果(ADRESH:ADRESL)を得ます、必要ならADIFビットをクリアします。
7. 次の変換に備え、必要ならステップ1か2を実行します。各ビットごとのA/D変換時間はTADで示され、次のサンプリングを開始する前には、最低2TADの待ち時間が必要です。
11.1 A/D変換サンプリング時間
A/D変換を正しく行うためには、アナログ入力信号の電圧レベルに一致するまで、内部のサンプリングコンデンサ(CHOLD)を完全に充電する必要があります。アナログ入力モデルを図11-2に示します。外部抵抗の値と内部サンプリングスイッチ抵抗(RSS)の値は、CHOLDの充電時間に直接影響します。サンプリングスイッチ抵抗(RSS)はCPU電圧(Vdd)に依存します(図11-2参照)。外部抵抗の値は2.5kΩ以下を推薦します(外部抵抗の値が小さくなると、サンプリング時間も短くなります)。
アナログ入力チャンネル選択後(変更後)、サンプリングを完全に完了させ、A/D変換を開始する必要があります。最短サンプリング時間を計算するには、方程式11-1を用いてください。
この方程式は最大誤差をA/D変換モジュールの分解能以下に抑えるためのものです(訳注:かなり意訳)。
最短サンプリング時間を得るためのTACQについては、PICmicro Mid-Range MCU Family Reference Manual(DS33023)を参照してください。
注1: 参照電圧(VREF)はそれ自身で影響を打ち消すので、方程式に影響しません。
2: サンプリングコンデンサ(CHOLD)はA/D変換後も放電されません。
3: アナログ入力信号のための外部抵抗は10KΩ以下を推奨します。これはピンの漏洩電流量に基づきます(訳注:?)。
4: 変換完了後、次のサンプリングを開始する前に、最低2TADの待ち時間が必要です。2TAD経過するまで、サンプリングコンデンサが選択したA/D変換チャンネルに接続されないためです。
11.2 A/D変換クロックの選択
各ビットごとのA/D変換クロックはTADで示され、8ビット変換ごとに9TAD必要です。
TADは以下の7段階から、適切にユーザが設定する必要があります。
・2TOSC
・4TOSC
・8TOSC
・16TOSC
・32TOSC
・64TOSC
・内蔵A/D変換モジュールのRCオシレータ(2-6μs)
正しくA/D変換を行うには、TADが1.6us〜6.4usの範囲になるようにする必要があります。CPU周波数から求められる適切なTADとの関係を表11-1に示します。
11.3 アナログ入力ピンの設定
ADCON1とTRISAレジスタはA/D変換入力ピンの役割を制御します。アナログ入力を行うピンは、TRISビットをセットして、入力に設定する必要があります。もしTRISビットがクリア(出力)だと、デジタル出力レベル(VOHまたはVOL)に変換されてしまいます。
なお、A/D変換はCHSビット<2:0>とTRISビットの状態とは無関係に動作します。
注意1: アナログ入力に設定された全てのピンはクリア(Lowレベル)として読み出されます。デジタル入力に設定されたピンでも、アナログ入力は可能で、正確に変換が行われます。
2: ただし、デジタル入力に設定された各ピンのアナログレベル(AN1:AN0ピンを含む)を与えると、入力バッファにより必要以上の電力消費を引き起こします(訳注:チト怪しい)。
注1: RCオシレータのTADは通常4us程度、概ね2us〜6us程度です。
2: CPU周波数が1MHz以上の場合にRCオシレータを用いる場合、SLEEP中に行うことを推奨します。
3: CPUがLFバージョンの場合、15.0節"電気的特性"を参照して下さい。