µCの内部8ビットADCを12ビットADCにアップグレード
要約
このアプリケーションノートでは、87C752マイクロコントローラのADC変換分解能を8ビットから12ビットにアップグレードする方法を説明します。外部のMAX186またはMAX188A~Dの存在を検出することによって、内部のアナログ-ディジタルコンバータが自動的に外部のアナログ-ディジタルコンバータに置き換えられます。
図1の簡単な回路(およびソフトウェアルーチン)によって、87C752マイクロコントローラに内蔵されている8ビットA/Dコンバータをマルチチャネルの12ビットA/Dコンバータに置き換えることができます。こうすると、1種類の接続で、システムの低および高性能システムの両方を実現することができます。ここで紹介するソフトウェアは、EDNのフリー電子掲示板サービス(BBS)からダウンロードすることができます*。
図1. 図に示す接続を使用すると、このµCの内蔵8ビットコンバータを外部の12ビットA/Dコンバータに置き換えることができます。外部コンバータを抵抗ネットワークに置き換えると、µCは再び内部のコンバータを使用することができます。
ソケットには、必要に応じて外部A/Dコンバータを差し込むことができます。そうでない場合は、10個の10Ωの抵抗ネットワークを差し込みます。電源投入時に、µCは外部コンバータを探索するルーチンを実行します。外部コンバータが存在すればそれが使用され、ない場合には、内部の8ビットコンバータが使用されます(チップ内部では、すべての変換結果は12ビット値として取り扱われます)。
このアイデアは、87C752の5本のA/D入力端子が8051ポート(ポート1)の双方向端子としても機能することを利用しています。抵抗ネットワークは、内部A/Dコンバータをアナログ入力に直接接続します。またネットワークを外部A/Dコンバータに置き換えると、これらの入力はそのコンバータの対応するチャネルに接続され、µCのA/D入力端子(このときは双方向ポートとして機能)は、コンバータへのディジタルインタフェースとして機能します。外部コンバータから内部コンバータへの変更は、ソケット内の端子同士をジャンパでつなぐだけで実現することができます。
アセンブリ言語のソフトウェアルーチンは、変換を起動して、コンバータのビジーフラグ(SSTRB)がローになるかどうかを確認することによって、外部コンバータを探索します。ローになれば、µCはそれ以後の各変換に外部コンバータルーチンを使用するよう指示する内部グローバルフラグ(AD12)を設定します。この動作は呼出し側のルーチンからはトランスペアレントです。A/D変換結果はADHIおよびADLOバイトとして出力され、フォーマットはどちらの場合も同じですが、8ビットコンバータのデータは4個のLSBがゼロになります。
µCのフルスケールは5Vですが、図のコンバータ(MAX186)では4.096Vの内部リファレンスによって入力範囲のフルスケールを設定しています。この例ではこの不一致をソフトウェアが解決しています。この他に、MAX186の代わりにMAX188 (内部リファレンスを持たない類似デバイス)と別個の5Vリファレンスを用いる方法もあります。
*モデムを2400ボー、8データビット、パリティなし、1ストップビットに設定してください。アメリカ:(617) 558-4241に電話してログオンしてください。(新しいユーザはアカウントをセットアップしなければなりません。この作業は無料です。) SS/DI_SIGとタイプインしてDesign Ideasセクションを選択し、RK1554とタイプインして、このアイデアを選択し、次にDによってファイルのダウンロードを選択してください。プロトコルを選択し、ファイルをダウンロードした後、ログオフしてファイルを解凍してください。
本記事に類似した内容が、「EDN」 1994年7月7日号に掲載されています。