±20mAまたは4–20mA電流ループシステムで高電圧/大電流駆動のオペアンプを使う方法
2010年03月01日
要約
このアプリケーションノートでは、高電圧、大電流駆動のオペアンプによって電圧信号を±20mAあるいは4–20mAという電流信号に変換し、工業用プロセスコントロールに使う方法を紹介します。実例には、オペアンプのMAX9943を使用します。実験方法と試験結果も紹介します。
このアプリケーションノートはマキシムの「エンジニアリングジャーナルvol. 68」(PDF、5.1MB)にも掲載されています。
はじめに
工業用プロセスコントロールでは、昔から電流ループが使われてきました。電流ループを使うと、遠方のセンサーから中央の処理ユニットへ情報を伝達したり、中央ユニットからリモートアクチュエータへ情報を伝達することができます。このような用途では4–20mAの電流ループが広く普及していますが、±20mAの電流ループも一部で使われています。負荷がローインピーダンスの場合、大電流で駆動可能な高電圧オペアンプを採用すると、外付けFETが不要で回路設計がシンプルになるというメリットがあります。
このアプリケーションノートでは、高電圧/大電流駆動のオペアンプを±20mA または4–20mA電流ループアプリケーションで使う方法を紹介します。DACの電圧信号をオペアンプで±20mAあるいは4–20mAの電流出力に変換するものです。実例にはオペアンプのMAX9943を使用しました。試験データも紹介します。
電流ループの基本
電流ループは、基本的に、センサー、トランスミッタ、レシーバ、およびADCあるいはマイクロコントローラで構成されます(図1)。物理パラメータ(圧力、温度など)をセンサーで測定すると、結果に対応する出力電圧が得られます。このセンサー出力を、トランスミッタで4mAから20mAの電流信号に比例変換します。レシーバ側では、この4–20mAの電流を電圧に戻します。レシーバが出力する電圧を、ADCかマイクロコントローラでディジタル化します。

図1. これだけの部品でシンプルな電流ループを構築することができます。
このように電流ループでは、電流変調の信号で情報を伝達します。4–20mAのシステムにおいては、一般に、4mAがセンサーのゼロ出力、20mAがフルスケール出力を表します。この方法では、ループ故障(0mA、障害状態)をセンサーのゼロ出力(4mA)と簡単に区別することができます。
電流ループには、電圧変調信号と比較してノイズの影響を受けにくいという特長があります。このため、ノイズが多い工業環境においてよく使われます。信号の伝達可能距離も大きく、遠くの地点と情報をやりとりすることができます。一般には、中央にシステム用マイクロコントローラを置き、センサーをリモートに設置します。
マイクロコントローラやDSPからアクチュエータという第2の電流ループを持つ複雑なシステムもあります(図2)。第2の電流ループでは、ディジタル情報をDACでアナログの電圧信号に変換します。DACの出力電圧を電流ループのトランスミッタで4–20mAあるいは±20mAの電流信号に変換し、アクチュエータを駆動します。このようなシステムは、送配電網のモニタリングシステムなどに採用されています。高度なアルゴリズムでシステムの現状を監視し、状況が変化する方向を予想するとともに、動的にシステムを調整する制御ループを実現するような場合です。

図2. 複雑なシステムは、アクチュエータをコントロールする第2の電流ループを持ちます。
オペアンプを大電流駆動が可能なVIコンバータとして使用する
図3の回路は、2つのオペアンプと数個の外付抵抗で構成したVI (電圧から電流への)コンバータです。オペアンプ(この例ではMAX9943)の場合、±15Vの電源電圧で±20mA以上の出力電流で低インピーダンス負荷を駆動することができます。
MAX9943は36V対応、高出力の電流駆動型オペアンプです。このオペアンプは、負荷の静電容量が1nF以下で安定的な動作を期待することができます。DACの電圧信号を4–20mAあるいは±20mAの電流信号に比例変換する工業用アプリケーションに最適なデバイスです。

図3. VIコンバータでDAC出力を負荷電流に変換します。この回路では2つのオペアンプのMAX9943を使用しています。
入力電圧、VINと負荷電流の関係は式1で与えられます。
VIN = (R2/R1) × RSENSE × ILOAD + VREF | (式. 1) |
実例では、以下の回路定数を使用しました。
R1 = 75kΩ
R2 = 750kΩ
RSENSE = 12.5Ω
RLOAD = 600Ω
R2 = 750kΩ
RSENSE = 12.5Ω
RLOAD = 600Ω
負荷は数百オーム程度というのが一般的です。しかし、グランド短絡障害が発生した場合のほか、レシーバ側の電圧負荷を減らして信号の長距離伝送を行いたい場合など、大幅に低いインピーダンス負荷となることもあります。
VREFは、DACのリファレンス電圧と同期させることができます。この場合、電圧(VIN)はすべてVREFに対する比となり、VREFの変動による誤差がなくなります。
±2.5Vから±20mAの電流駆動を行う
図3の回路は、±20mAの電流駆動回路としても使用することができます。図4に示すように、VREF = 0Vのとき、-2.5Vから+2.5Vの入力レンジで定格±20mAの電流出力が得られます。
入力電圧(VIN)と「上流側」オペアンプの出力電圧(V1)との関係は、次式で与えられます。
VIN = (R2/R1) × (1 - α/β) × V1 + VREF × (1 – (R2/R1) × 1/(β × (R2 + R1))) | (式. 2) |
ただし、
α = (1/RSENSE) + R2/(R1 × (R1 + R2)) | (式. 3) |
β = 1/RSENSE + (1/R1) + 1/RLOAD | (式. 4) |
使用する部品定数を式2、3、および4に代入すると、
V1 = 4.897 × VIN - 4.896 × VREF | (式. 5) |
式5の関係は、出力デバイスの飽和を避けやすい形式となっています。VIN = +2.5Vのとき、下側オペアンプの出力(V1)は約12.2Vとなります。入力電圧が2.5Vを超えて上昇するとどこかで出力デバイスが飽和し、出力電圧の上昇がとまります。図4の線が理想から外れて水平となります。負入力が-2.5Vよりも下がった場合も、同様のことが起こります。

図4. ±2.5Vの入力電圧から±20mAの出力電流が得られます。青のラインは理想的な利得曲線、赤のラインは実測値です。VCC = +15V、VEE = -15V。
図4のデータを見ると、MAX9943は出力電流が±21.5mAの辺りまで直線性を保って動作していることがわかります。これは、入力で±2.68V、上流(下側)オペアンプの出力で±13Vあたりに相当します。MAX9943は負電源電圧に非常に近い電圧まで出力可能であるため、負電流のほうはかなり大きな値まで出力可能です。これに対して正電源側は制約が厳しく、約2Vが限界となります。(限界は負荷によって変化しますが、プロセスや温度の関係からワーストケースの仕様として2Vという値が出てきました。)
マージンを確保したい場合やキャリブレーション用の余裕を確保したい場合など、アプリケーションによっては、もっと大きな出力電流を必要とすることがあります。そのような場合は、図3の回路に(±15Vではなく) ±18Vの正負電源を加えます。これで±24mA (±3Vの入力に対応)まで直線的に駆動可能となります。このときの性能を図5に示します。

図5. ±3Vの入力電圧から±24mAの出力電流が得られます。青のラインは理想的な利得曲線、赤のラインは実測値です。VCC = +18V、VEE = -18V。
0~2.5Vから4–20mAの電流駆動を生成する
式5に戻ると、VREF = -0.25Vのとき、0Vから+2.5Vの入力で2mA~22mAの電流出力が得られることがわかります(図6)。定格で4–20mAの電流ループを設計する際、ダイナミックレンジに「余裕」を持たせ(2mA~22mAなど)、ソフトウェアキャリブレーションを可能にするのが一般的です。もっと大きな電流が必要な場合は、すでに述べたように、MAX9943の回路に±18Vの正負電源をかけるという方法があります。

図6. 0から2.5Vの入力電圧から4–20mAの出力電流を作ることができます。青のラインは理想的な利得曲線、赤のラインは実測値です。VCC = +15V、VEE = -15V。
まとめ
遠方のセンサーから中央の処理ユニットへ情報を伝達したり、中央ユニットからリモートアクチュエータへ情報を伝達しなければならない工業用アプリケーションでは、電流ループが広く利用されています。
センサーやDACの電圧出力を4–20mAあるいは±20mAの電流に変換しなければならない制御ループアプリケーションにはオペアンプのMAX9943が最適です。MAX9943は幅広い温度範囲において、高精度な大電流駆動を実現します。長距離伝送線路でよくある1nFまでの容量性負荷にも適しています。
著者について
この記事に関して
製品
{{modalTitle}}
{{modalDescription}}
{{dropdownTitle}}
- {{defaultSelectedText}} {{#each projectNames}}
- {{name}} {{/each}} {{#if newProjectText}}
-
{{newProjectText}}
{{/if}}
{{newProjectTitle}}
{{projectNameErrorText}}