アナログ電圧を使用したディジタルポテンショメータの制御
要約
一部のアプリケーションでは、I2Cインタフェースを備えたディジタルポテンショメータを連続的に変動するアナログ信号で制御する必要があります。このアプリケーションノートでは、この要件を取り上げて、簡単な設計ソリューションを提供します。ここで示す方式は汎用性があり、多数のアプリケーションで利用することができます。
同様の記事が「EDN」誌の2008年3月20日号に掲載されました。
はじめに
このアプリケーションノートでは、外部アナログ電圧を使用してディジタルポテンショメータの抵抗を変える簡単な方法について説明します。MicrochipのPIC12F683マイクロコントローラを使用して、アナログ電圧をI2Cストリームに変換し、これをディジタルポテンショメータの制御で使用しています。DS1803ディジタルポテンショメータを実例のデバイスとして使用しています。また、このアプリケーションで使用する外付け部品の数はできるだけ少なくしています。ここに示した考え方は、他の制御入力や別のディジタルポテンショメータ/抵抗にも適用することができます。
ハードウェアの構成
図1はPIC12F683を使用した制御回路の回路図です。マイクロコントローラの6つのGPIOのうち4つを使用して、SDA、SCL、および単一LEDの出力信号を制御し、1つのアナログ入力を受信しています。
SDA、SCL、および単一LEDの出力信号は、それぞれGP5、GP4、およびGP0に割り当てられています。SDAとSCLは、VDDへの4.7kΩプルアップ抵抗を備えており、DS1803のSDAピンとSCLピンにじかに接続されます。マイクロコントローラのGP1のIOはアナログ入力ピンに割り当てられています。ジャンパが設けられており、アドレスピンの選択、共用VCC (VDD)の分離、およびSDAとSCLの絶縁を行います。
プロジェクトのファームウェア
このプロジェクトのファームウェアは、MPLAB IDE (バージョン7.40)を使用してアセンブリ言語で記述されています。このツールは現在、Microchipから無料で入手可能です。プログラム全体は、450バイト未満のプログラム空間(フラッシュ)と8バイトのデータ空間(RAM)で構成されています。
プログラムは最初に、ADCや内部発振器など、PICのさまざまな構成ビットを初期化します。プログラムは、ADCがGP1から入力を受け取るように構成し、さらに内部発振器を125kHzで使用するように変換クロックを設定します。
ファームウェアは、アナログ入力端でADCが連続的に電圧変換を行うというループで動作します。1つの変換が完了すると、10ビットADCの出力の8つのMSBがデータバイトとしてI2Cバスを経由して送信されます。このI2C信号は次に、DS1803の制御に使用されます。プログラムをセットアップして、DS1803の両方のポテンショメータを制御します。ただし、ファームウェアを変更することで、PIC12F683の2つの異なるアナログ入力を使用してポテンショメータを個別に制御することが可能になります。
ファームウェアはダウンロードしてご利用いただけます。
汎用性のある機能
プログラムを使用してPIC12F683のGP1入力の電圧を変えることで、ポテンショメータを制御することができます。GP1の入力が連続的に変わると、ポテンショメータの抵抗もそれに対応して変動します。出力抵抗(ROUT)は、入力電圧の関数として計算することができます。
設計で使用するDS1803の終端間の抵抗値:50kΩ
VCCの許容範囲は、2.7V~5V
入力電圧:0V~VCCの範囲で変動
観測される出力抵抗は、次のようになります。
ROUT (kΩ) = (50 (kΩ)/VCC) x 入力電圧
ADCが動作している間、LEDは常に点滅しています。I2Cのエラーが発生した場合、LEDは点灯したままになります。エラーが修復されると、LEDは通常の機能を再開します。設計者は、デバイスのアドレスが正しいこと、またI2Cバスが接続されていることを確認することで、アプリケーションの故障診断を行うことができます。
この設計は極めて汎用的であり、類似の手法をさまざまなアプリケーションで使用することができます。いくつかの例を以下に示します。
- 非線形伝送機能(たとえば、ガンマ補正)は、内蔵のルックアップテーブルに正しい伝送機能を実装した状態で、DS3906の可変抵抗器を使用することで実現することができます。
- サーミスタを入力端に接続することで、周囲温度に変化があったときに、I2C制御電流DACの出力を変えることができます(DS4402/DS4404)。
結論
このアプリケーションノートでは、アナログ電圧を使用することでディジタルポテンショメータを制御する、簡単でコスト効率に優れたメカニズムについて説明しています。アプリケーションのコンセプトを拡大すれば、アナログ電圧を使用してI2Cインタフェースの任意のデバイスを制御することもできます。