編集履歴一覧に戻る
uchanのアイコン画像

uchan が 2024年09月29日21時48分49秒 に編集

初版

タイトルの変更

+

微小電流計の設計:主要部品の選定

タグの変更

+

電流計

+

ピコアンメータ

+

オペアンプ

+

計測

+

ADC

メイン画像の変更

メイン画像が設定されました

記事種類の変更

+

製作品

本文の変更

+

10pA の分解能で ±20nA まで計れる電流計を設計してみました。本記事ではその設計の一部を紹介します。本記事で紹介する設計は、トランジスタ技術 2024 年 8 月号別冊付録「保存版 実験お役立ち回路の製作」の「第 3 章:分解能 1pA!微小 1nA 電流測定回路」(以下「トラ技の記事」)を大いに参考にしています。 ## 電流センス抵抗と分解能 トラ技の記事では、電流センス抵抗の両端電圧を Arduino Uno の 10 ビット ADC を用いて読み取ることで電流を求めています。Arduino Uno の ADC の電圧範囲は 0~5V ですので、電流センス抵抗の抵抗値と測定範囲は次の通りです。 | 電流センス抵抗 | 上限電流 | 分解能 | |----------------|----------|----------| | 5GΩ | 1nA | 約 1pA | | 1GΩ | 5nA | 約 5pA | | 500MΩ | 10nA | 約 10pA | | 50MΩ | 100nA | 約 100pA | | 5MΩ | 1μA | 約 1nA | | 500kΩ | 10μA | 約 10nA | | 50kΩ | 100μA | 約 100nA | トラ技の記事では、電流センス抵抗の両端電圧そのままに加え、符号反転した電圧も読み取ることでプラスマイナスの電流を計れる仕組みになっています。仮想的に -5V~5V 対応の 11 ビット ADC を実現していると考えることもできます。 電流センス抵抗の値を決めるにあたっては、何を計りたいかを決める必要があります。ちょうど、バッテリで長期間動作させたい回路を設計中なので、MOSFET のゲート漏れ電流 IGSS やドレイン遮断電流 IDSS を計りたいと思います。これらを計るには 10nA~10μA 程度が読めると嬉しいです。従って、電流センス抵抗は 500MΩ~500kΩ のうち、いくつかが選べる仕組みにするといいのかなと思います。 ## 電流計の原理 トラ技の記事で制作する電流計の核となる回路を次に示します。細かい部分を省いた概念的な回路図です。 ![フィードバック方式電流計の電流センス回路](https://camo.elchika.com/2a3561f3594cca96928bb0d7a58a91a6fac2e9dd/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f63333936313234302d643365342d346361652d396632662d3965396366383634616562342f33623732653336312d393836312d343266382d613662372d313933353563333131306666/) 入力端子から流れ込んできた電流は(理想オペアンプの入力には電流が流れ込まないため)すべて R1 を通ります。R1 両端の電位差を測れば電流値が求まります。 オペアンプの仮想短絡によって正入力(+)と負入力(-)は等しい電位になります。正入力は GND に接続されているため、負入力も GND 電位となります。このため、理想的なフィードバック方式の電流計は入力端子間の電位差が 0V、つまり内部抵抗が 0Ω に見え、測定対象の回路に影響を与えず電流を計れるのです。 ## 入力オフセット電圧 しかし、現実のオペアンプでは入力オフセット電圧 VIN の影響で入力端子間が 0V になりません。入力オフセット電圧は電流計の内部抵抗として見えることになります。測定電流が I(A) とすると、内部抵抗 R(Ω)は $R=V_{IO}/I$ と計算できます。 LMC662 の入力オフセット電圧は標準値で 6mV ということなので、I=1pA とすると R=6GΩ となります。めちゃくちゃ大きいですね。筆者は改めて計算してみて驚きました。ただし、これは電流計として致命的な問題というわけではありません。入力オフセット電圧の影響を、MOSFET の IDSS を計るケースを例に考えてみます。 ![NMOSのIDSSを測定する回路(概念図)](https://camo.elchika.com/3c2f1cd136b9419b398b65798a7b01ae27c65d39/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f63333936313234302d643365342d346361652d396632662d3965396366383634616562342f33386263316466302d616136302d343732362d386136352d626239326431356432383039/) IDSS とは MOSFET を遮断状態(VGS=0V)にしたときに DS 間を流れる漏れ電流のことです。この測定において、入力オフセット電圧は電流計の両端の電位差となって見えます。それが 6mV というわけです。IDSS の測定では VDS は通常数 10V 程度を印加しますから、6mV というのは測定にはほとんど影響を与えません。 ## 入力バイアス電流 一方、入力バイアス電流は、電流センス抵抗に流れるはずの電流が分岐して流れてしまう電流値となります。微小電流を計る場合、これは大きな問題になり得ます。 IDSS は 100nA~10μA 程度が一般ですから、入力バイアス電流が 1μA のオペアンプでは全く正しく測定できません。電流センス抵抗として 50MΩ を選択した場合、分解能は 100pA ですから、入力バイアス電流が 1pA 以下のものを選択すれば、入力バイアス電流による誤差を 1% 以下に抑えられる計算になります。 ## オペアンプの選択 オペアンプの重要な特性に入力バイアス電流と入力オフセット電圧があります。トラ技の記事曰く > 微小電流を取り扱う OP アンプなので、何よりも優先して着目すべきは入力端子のバイアス電流です。 入力オフセット電圧も小さい方が良いが、優先順位としては入力バイアス電流の方が上、とのことです。本ブログ記事での考察でもバイアス電流の方が重要な影響であると言えます。 ちょっと調べてみると、入力バイアス電流が比較的小さいと言われる CMOS 製のオペアンプでは、入力バイアス電流は ±1pA(ピコアンペア)程度のものが多いようです。普段マイコンを使った電子工作をする身からすると 1pA は凄く小さい値なのですが、分解能 10pA に対しての 1pA は誤差が 10% ということになり、できればもっと小さい誤差を目指したいところです。 トラ技の記事では LMC662 を選択していました。この製品の入力バイアス電流は、標準値で ±2fA(フェムトアンペア)ということで、非常に小さいです。fA は pA の 1/1000 です。ちなみに、トラ技の記事では電流センス抵抗として 5GΩ を使い、分解能を 1pA としているので、入力バイアス電流は 10fA 以下が望ましいことになります。2fA は 1pA に対し 0.2% なので理想的な小ささです。 ## マイコン内蔵 ADC トラ技の記事では Arduino 内蔵の ADC を使っています。ただ、マイコン内蔵の ADC は分解能がそれほど高くなく(10 ビット程度のものが多い。記事で使っている Arduino Uno も 10 ビットである)、精度もそれほど高くない場合があります。ADC 専用の IC はもっと高精度のものが多いです。 また、電流計はプラスマイナスどちらも測定できると、接続方向を気にしなくて良いので便利です。これを行うには、正負両方の範囲で変換できる差動入力の ADC だと作りやすいです。負入力(IN-)に電源電圧の中央付近の電圧を入力することで、そこを中心として正負で変換できます。 大抵のマイコン内蔵の ADC はシングルエンド入力で、GND を基準に正の範囲のみ読み取れます。トラ技の記事では Arduino 内蔵 ADC を使いつつも、少しトリッキーな方法で正負の読み取りに対応させています。それは、電流センス抵抗の両端電圧をオペアンプで符号反転した電圧と、符号反転していない電圧を 2 つの ADC で読み取る方法です。GND~5V 対応の 10 ビット ADC を 2 つ使い、-5V~5V 対応の 11 ビット ADC を実現していると考えることもできます。 または、GND~5V 対応の ADC を 1 つだけ使いプラスマイナス両方向の測定を行うこともできます。測定電流が 0A のときに 2.5V が出力されるようにオペアンプで電圧を調整し、ADC の変換結果から ADC の最大値の半分(10 ビット ADC なら 512)を引けば良いですね。ただ、0A が正確に 512 に対応するように回路を調整しなければならず、これは結構大変な気がします。また、2 つの ADC を組み合わせる方法より性能は 1 ビットだけ低くなります。 ## 差動入力 ADC 秋月電子を探したところ LTC2301IMS という IC を見つけました。電源電圧 5V、12 ビット分解能で変換できます。また、I2C でマイコンと接続し変換結果を取得できるため、配線が少ないです。 この IC はとても便利そうです。差動入力ができるのに加え、2.5V の基準電圧を出力するピン VREF があります。差動入力の負側(IN-)に VREF を接続することで、2.5V±2.048V のバイポーラ(両極性)モードで変換できるはずです。 ![差動入力ADCを用いて両極性の電流を計る回路](https://camo.elchika.com/a6739e6d84847e86b5e3424403f5d149dd007568/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f63333936313234302d643365342d346361652d396632662d3965396366383634616562342f35366464393930662d306165622d343435632d393134642d333238636634306463663739/) ## ADC に合うオペアンプの選択 この LTC2301IMS と組み合わせる前提で、さらに細かくオペアンプを選択します。ADC の変換能力を最大限に活用するためには、オペアンプの出力電圧は 2.5V±2.048V の範囲で変化できる必要があります。すなわち 0.452V~4.548V です。電源電圧を 5V としたとき、レールツーレール出力のオペアンプであれば問題無いでしょう。 入力側を考えます。オペアンプの負入力にかかる電圧は、定常動作時はほぼ 2.5V に固定されます。なぜなら、オペアンプの正入力に VREF=2.5V を接続してあり、負入力は仮想短絡によって正入力と同電位に保たれるからです。したがって、2.5V 付近の入力電圧で正常に動作するオペアンプであれば使えます。 秋月電子で見つけたオペアンプの中では、LMC6081IN の入力バイアス電流が飛び抜けて小さかったです。入力バイアス電流は 10fA とのことです。トラ技の記事で採用している LMC662 よりは大きいですが、今回の製作では十分な性能です。入力オフセット電圧も 150μV と十分に低いです。こちらは LMC662 の 6mV より格段に小さいです。良いですね。 このオペアンプの入力仕様を確認します。入力端子に印加できる電圧の絶対最大定格は -0.3V~VDD+0.3V とのこと。ごく一般的な定格です。 入力端子の同相入力電圧範囲(正常動作する電圧の範囲)は、25℃ における標準値で -0.4V~VDD-1.9V、保証値で -0.1V~VDD-2.3V です。今回 VDD=5V の予定ですので、-0.1V~2.7V(保証値)となります。正常動作時は IN-=IN+=2.5V となり範囲に収まります。 次に出力端子の仕様を確認します。今回の設計では出力電流は入力電流とほぼ等しく、多くても数 10μA ほどです。非常に小さい電流ですので全く問題になりません。問題となり得るのは出力電圧範囲です。VDD=5V かつ負荷抵抗 2kΩ の場合がデータシートに載っているので読むと、25℃ の標準値で 0.10V~4.87V、保証値で 0.20V~4.75V とのことです。LTC2301IMS(上で選定した ADC)の入力のフルスケールは 2.5V±2.048V、すなわち 0.452V~4.548V なので、十分にカバーできることが分かります。 ### 入力端子の保護 オペアンプの入力端子は測定対象の回路にそのまま接続されますので、過電圧からオペアンプを保護したいところです。通常の動作状態では仮想短絡により入力端子は 2.5V に保たれますが、測定範囲を超える電流が入力しオペアンプ出力電圧が飽和すると仮想短絡が保たれなくなり、入力端子が 2.5V より高く(あるいは低く)なります。さらに大きな電流が流れれば電源電圧範囲を超えてしまいます。このような場合、よくある対策としては SBD(ショットキーバリアダイオード)で入力端子を GND および VDD にクリップします。 しかし、今回は SBD の追加は難しいです。なぜなら、SBD の逆電流は大きく、数 μA から、ものによっては数 mA のものまであります。もし 1/1000 程度の漏れ電流の製品があったとして、それでも数 nA は流れてしまうわけです。数 pA を計測する装置の入力端子としては話になりません。 今回の回路は通常の動作状態で入力端子の電圧が VREF(2.5V)に固定されることから、VREF と入力端子をダイオードで接続する手もあります。そうすれば、ダイオード両端の電圧はほとんど 0V となって、漏れ電流はほぼ 0 となるのではないでしょうか(下図)。 ![オペアンプの入力端子とVREFを2つのダイオードで接続する](https://camo.elchika.com/74503f4becf8555f9e26dbf792c093048a940bb2/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f63333936313234302d643365342d346361652d396632662d3965396366383634616562342f32653166666264622d333766332d346464652d396662652d396530386265323666346566/) 通常のシリコンダイオード(PN 接合ダイオード)は「0.6V くらいで電流が流れはじめる」とよく言われます。ただ、非常に小さな電圧で全く電流が流れないかというと、そうではありません。[ショックレーのダイオード方程式](https://en.wikipedia.org/wiki/Shockley_diode_equation)(ダイオードに流れる電流の式)によれば、電流は指数関数的に増えることになっています。逆に言えば、ダイオード両端の電圧が真に 0V でない限りは電流も 0 にはならないということです。 入力端子と VREF 間の電圧はオペアンプの入力オフセット電圧にほぼ等しくなるはずで、つまり LMC6081IN であれば 150μV 程度です。ショックレーのダイオード方程式を PN 接合ダイオード 1SS178 の電圧電流グラフに当てはめて計算すると、順方向に 150μV を印加した場合の電流は約 8.55 pA となりました。頑張って入力バイアス電流が小さなオペアンプを選んだのに、その入力端子に接続するダイオードにこれだけの電流が流れてしまっては、全くダメですね…。 ということで、入力端子の過電圧の保護は一筋縄では行かなそうです。今回は保護無しで設計を進め、いつか保護の良い方法が分かったら改良したいなと思います。 ## 改めて電流センス抵抗の選択 以上の設計に基づいて、改めて電流センス抵抗と分解能を計算します。ADC の変換範囲は 2.5V±2.048V、分解能は 12 ビットです。正の電流に限定して考えると 2.048V の範囲を 11 ビット(2048 段階)で変換するということになります。つまり分解能は 1mV です。電流計の分解能を 1pA としたければ、1pA で 1mV になる抵抗を選べば良いことになります。そしてそれは 1GΩ です。幾つかの抵抗値について以下の表に示します。 | 電流センス抵抗 | 上限電流 | 分解能 | |----------------|----------|--------| | 5GΩ | 約 ±410pA| 200fA | | 1GΩ | 約 ±2.0nA| 1pA | | 100MΩ | 約 ±20nA | 10pA | | 10MΩ | 約 ±200nA| 100pA | | 1MΩ | 約 ±2.0μA| 1nA | | 100kΩ | 約 ±20μA | 10nA | | 10kΩ | 約 ±200μA| 100nA | | 1kΩ | 約 ±2.0mA| 1μA | 10nA~10μA 程度を計るためには 100MΩ と 100kΩ を使うのがよさそうです。100MΩの代わりに 10MΩでも十分かもしれません。秋月電子で 10MΩは 20 円程度、100MΩ は 70 円程度なので、10MΩ はコスト面で有利です。 トラ技の記事によれば、抵抗値が高いほど電流雑音が下がるということですから、その点では 100MΩ に軍配が上がります。いずれにしても、計りたい電流範囲が計れる抵抗値を選ぶことが一番大事ですが。 ## まとめ 分解能 10pA を達成するフィードバック方式の微小電流計を作るにあたり、主要な部品の選定を行いました。電流センス抵抗は 100MΩ と 100kΩ、オペアンプは LMC6081IN 、ADC は LTC2301IMS としました。