サンプルコードとドキュメント

ロックインアンプをソフトウェア的に実装する

コードとドキュメント

添付

概要

 

交流抵抗測定を例に、ソフトウェア的に同期検波を行うデモンストレーションを行います

 

説明

 

微小信号の測定は、信号成分がノイズ成分の大きさと近いレベルとなるために技術的に難しい測定となります。

しかし、一般的にはロックインアンプを計測器として使用することで、微小信号におけるノイズ成分をある程度除去し、信号成分のみを高感度に測定することができます。

 

ロックインアンプは、同期検波の手法をハードウェア的に実装しています。

 

測定原理としては、

  1.  測定しようとしている交流信号に対して同じ周波数成分を持った交流波(参照信号)を掛け合わせる
  2.  ローパスフィルタを通し、掛け合わせた信号のほぼDC成分のみを抽出

することで、ほぼ信号成分のみを測定します。

(参照信号として、適当な周波数成分のものを掛け合わせれば、DC成分だけでなく特定の周波数成分のみ抽出することもできます)

 

同期検波の原理の詳細は、以下のリンクなどが参考になります。

 

 ○微少信号の最適な測定方法|エヌエフ回路設計ブロック

http://www.nfcorp.co.jp/techinfo/keisoku/noise/li_noise.html

 ○ロックインアンプ 原理 解説 | Zurich Instruments | オプトサイエンス

http://www.optoscience.com/maker/zi/principle-lock_in_amplifier/

 

このサンプルは、上記のロックインアンプの原理をソフトウェア的に実装しようとするものです。

 

LabVIEWには

  • 波形生成を行うための関数
  • フィルタ処理を行うための関数

が用意されているので、上記の動作をソフトウェア的に実装することが可能です。

(ただし、フィルタ関数などはLabVIEW開発システム、LabVIEWプロフェッショナル開発システムにのみ付属されています)

 

ここでは、デモンストレーションのために1kΩの炭素皮膜抵抗器(テスターで測定した結果:1006kΩ)の抵抗測定を行いました。

 

動作環境・測定回路は、以下の通りです。

 

動作環境

cDAQシャーシ:cDAQ-9174

電圧印加:NI cRIO-9263

電圧測定:NI cRIO-9215

電流測定:NI 9203

 

測定回路概略図

 

text4693.png 

 結果

① DC抵抗測定

まずは、単純にDC電圧を印加した場合の抵抗測定結果です

 

NI 9263からDC電圧を出力し、その際抵抗に流れている電流I、抵抗における電圧降下Vを測定し、オームの法則R = V/Iから求めています。

 SnapCrab_NoName_2017-6-6_21-25-41_No-00.png

出力電圧0.1Vのときの結果:

SnapCrab_Resistivity_DCMeasurementvi_2017-6-6_20-13-30_No-00.png

 

出力電圧1Vのときの結果:

SnapCrab_Resistivity_DCMeasurementvi_2017-6-6_20-14-16_No-00.png

 

NI 9215の測定感度自体があまり高くないため、測定結果もノイジーです。

 

② AC抵抗測定(数値的ロックイン)

次に、ロックイン処理をソフトウェア的に行った場合の抵抗測定結果です。

 

ロックイン処理を行うために、100HzのAC電圧を出力し、その際抵抗に流れている電流I、抵抗における電圧降下Vを測定し、ロックイン処理を行った後に、R = V/Iの関係から抵抗を求めています。

 

SnapCrab_NoName_2017-6-6_21-37-15_No-00.png

 

SnapCrab_Resistivity_ACMeasurement(Numerical_Lock-in)vi_2017-6-6_20-12-39_No-00.png

 

 

0.1Vの出力電圧においても、1Vを印加したDC抵抗測定結果と比較してかなりキレイに測定できています。

 

 ③ AC抵抗測定(ローパスフィルタ使用、処理なし)

 

余談ですが、他のAC抵抗測定結果についても記載します。

 

まず、100HzのAC電圧を出力した際の、抵抗に流れている電流I、抵抗における電圧降下Vを測定し、R = V/Iで抵抗を求めたのちにローパスフィルタ処理を行いDC成分のみを抽出したものです。

 

SnapCrab_NoName_2017-6-6_20-17-39_No-00.png

 

SnapCrab_Resistivity_ACMeasurement(LPF)vi_2017-6-6_20-11-13_No-00.png

 

ノイズは減っていますが、測定結果が不正確なものとなっています。

 

 

次に、特に信号処理をせずに、100HzのAC電圧を出力した際の、抵抗に流れている電流I、抵抗における電圧降下Vを測定し、R = V/Iで抵抗を求めた結果です。

 

SnapCrab_Resistivity_ACMeasurementvi_2017-6-6_21-31-24_No-00.png

 

 

値として0に近い信号の割り算を行っているあたりで、抵抗計算が発散しているために正確な値は求められていません。

 

 

 今回デモンストレーションした信号レベルは0.1V程度と微小信号と呼ぶべきか疑問に残るレベルではありますが、顕著に測定結果がキレイになりました。

 

ハードウェア/ソフトウェアの要件

 

・LabVIEW 2016以降

・cDAQシャーシ+AO電圧+AI電圧+AI電流が行えるモジュール

 

コードの実装/実行手順

 

1. AI電圧、AI電流、AO電圧を行うモジュール・物理チャンネルを指定してください

2. 出力電圧を指定してください

3. VIを実行してください

 

その他の情報/参考資料

 

○微少信号の最適な測定方法|エヌエフ回路設計ブロック

http://www.nfcorp.co.jp/techinfo/keisoku/noise/li_noise.html

 

○ロックインアンプ 原理 解説 | Zurich Instruments | オプトサイエンス

http://www.optoscience.com/maker/zi/principle-lock_in_amplifier/

NIコミュニティのサンプルコード交換のサンプルコードは、MIT Licenseによりライセンス供与されています。

寄稿者