PICで作るキャパシタンス/ESRメータ - プログラム設計 - 計算ルーチン
LCRメータの心臓部、ADコンバータの測定電圧からインダクタンスやキャパシタンスを求めるための計算ルーチンの仕様(というか計算式)です。キャパシタンス/ESRを求めるところを中心に書きます。
自分用のメモですがこれからLCRメータを作ろうという方にも少しは参考になるかも。
そのうち少しちゃんと“理屈”を書くつもりです。
======
初期値、測定前の設定値
Vsin: 通常使用する正弦波入力電圧
Vcos: 通常使用する余弦波入力電圧
K: 実測データ(例えば2.608)
計算は電圧の比として行われるので適当に設定しても結果は変わらない。
でもそれだとLCRメータの測定電圧値をDMMと比較するときは困る。
f: 測定周波数/128
ω: 2πf
基準電圧: 実測データ(例えば2V)
計算は電圧の比として行われるので適当に設定しても結果は変わらない。
でもそれだとLCRメータの測定電圧値をDMMと比較するときは困る。
共通の処理
出力極性の判別がマイナスのとき
(今回作るものではMCP3802-ch3の測定値が1V以上のとき)
測定値 = -測定値
とする。
ロータリースイッチの位置判別
今回作るものでは
INT((MCP3802-ch5の測定値+0.99)/0.66) X入力の位置(1~6、1:GND、....)
INT((MCP3802-ch7の測定値+0.99)/0.66) Y入力の位置(1~6、1:GND、....)
オフセットの一部は調整しなくてもオフセット値を測定しておけば補正が可能ですが、計算はいろいろとややこしい(計算のやり方を勘違いしやすい)のでぜんぶ調整するようにした方が安心でしょう。できるだけオフセットの小さいオペアンプを使いオフセットの出にくい回路設計にしましょう。オフセット調整箇所が多い(8箇所!)ので不安定だとやってられません。
状態のチェックと測定は毎秒1回くらいにするつもりです。測定値が落ち着くのに時間がかかるからです。今回はRTCの1PPSを使った割込みで行います。こういうのは回路設計次第ですが....
状態 | 機能 | 表示内容と必要な処理 |
GND-GND | オフセット調整 1. 自動極性判別回路(+) 2. 自動極性判別回路(-) 3. アナログ乗算器出力 |
測定値実電圧を表示、保存する。 |
GND- +2V | オフセット調整 アナログ乗算器X入力 |
測定値*K/基準電圧 を表示、保存する |
+2V - GND | オフセット調整 アナログ乗算器Y入力 |
測定値*K/基準電圧 を表示、保存する。 |
+2V - +2V | アナログ乗算器 定数算出 |
K=測定値/√基準電圧 Kを表示し既存の値と置き換える。 |
+2V - sin | オフセット調整 正弦波バッファ |
測定値*K/基準電圧 を表示、保存する |
+2V - cos | オフセット調整 余弦波バッファ |
測定値*K/基準電圧 を表示、保存する |
+2V - ABB | オフセット調整 自動平衡ブリッジ出力 |
測定値*K/基準電圧 を表示、保存する |
sin - sin | 正弦波入力電圧測定 | Vsin=√(測定値*K) Vsinを表示し既存の値と置き換える。 余弦波位相を再計算し表示・保存する。 ただしVsin<0.1Vのときは “Reset Oscillator!”を表示、置き換えは行わず 測定禁止モードにする |
sin - cos | 余弦波位相測定 | Vsxc=√(測定値*K) Vcos=Vsxc + j √(Vcos'^2-Vsxc^2) θ=Vcosの偏角 θを表示する。 Vcosを既存の値と置き換える。 ただし89<θ<91でないときは “Reset Oscillator!”を表示、置き換えは行わず 測定禁止モードにする ※ 正弦波と余弦波の位相のずれが正確に90度になるように回路を調整すればこことか下の方でめんどうな計算はしなくていいわけですが、正確に90度ずれていることはないという前提でやった方がトータルで考えるとたぶん楽です。 |
cos - cos | 余弦波入力電圧測定 | Vcos'=√(測定値*K) Vcos'を表示し既存の値と置き換える。 余弦波位相を再計算し表示・保存する。 ただしVcos'<0.1Vのときは “Reset Oscillator!”を表示、、置き換えは行わず 測定禁止モードにする |
sin - cos | 余弦波位相測定 | Vsxc=√(測定値*K) Vcos=Vsxc + j √(Vcos'^2-Vsxc^2) θ=Vcosの偏角 θを表示する。 Vcosを既存の値と置き換える。 ただし 89<θ<91のとき 測定禁止モードを解除する 89<θ<91でないときは “Reset Oscillator!”を表示し、置き換えは行わず 測定禁止モードにする |
sin/cos - ABB | 校正 または 測定 |
測定禁止モードのとき |
コントロールパネル
オフセット調整のうちアナログ乗算器用の三つはパネルから操作できるようにしましたが、残り5個は基板上の半固定抵抗で調整します。
---------
関連
「記事一覧(測定、電子工作、天文計算)」
「(コンデンサ - ESR(誘電正接、tanδ、DF)とキャパシタンス(静電容量)の測定 - まとめ」
「LCRメータの仕組みと作り方」
「自動平衡ブリッジの原理と回路の作り方」
「コンデンサのESRの周波数特性を測ってみた - PET(ポリエステルフィルム)編」
水晶発振器
「確度0.0005ppmの周波数測定 - GPSの1PPS出力を使った高精度周波数カウンタ」
バイナリカウンタ
「24ビットバイナリーカウンター(12STAGEリップルキャリー・バイナリー・カウンター TC4040BP+SN74HC4040AP)」
周波数カウンタ
「GPS/RTC(DS3234)の1PPS出力を利用した超高精度周波数カウンター」
正弦波発生器
「PIC16F1705のDAコンバータを使った正弦波発振器(発生器) - 改良版」
自動平衡ブリッジ
「自動平衡ブリッジの原理と回路の作り方」
ベクトル電圧計
「複素数としての電圧・電流を測る方法 - 原理」
「ベクトル電圧計の製作と調整 - 交流電圧計(ミリバル)」
16bitADコンバータMCP3425
「PICでI2C - ADコンバーター・MCP3425の使い方」
分解能については
「MCP3425の精度を調べてみた - 16bitADコンバータの分解能」
SDカード
「PICでSPI SDカードを読み書きする」
PIC18F26K22
「PIC+SPI+I2C 自記温湿度計+気圧計+8ch電圧計+周波数カウンタ(技術要素一覧)」
「PIC+SPI+I2C 自記温湿度計+気圧計+8ch電圧計のソース - main()」
« PICで作るキャパシタンス/ESRメータの測定法と(予想される)精度 | トップページ | 相互インダクタンスを測ってみたらヘンなことになった »
「趣味の電子工作」カテゴリの記事
- PICで作る100MHz周波数カウンタ検証用XOR(エクスクルーシブオア)逓倍器(2016.03.08)
- 150MHz(~200MHz?)周波数カウンター用プリスケーラー(1/4分周器)(2016.03.06)
- 測温抵抗体(Pt100、白金薄膜温度センサー)の抵抗値を温度に変換する(平方根を使わない)計算式(2016.03.01)
- GPS/JJY(標準電波)を基準周波数源とするためのPLLの詳細(2016.02.27)
- GPS受信モジュール1PPS対決 - GE-612T vs GM-5157A(2016.02.21)
この記事へのコメントは終了しました。
« PICで作るキャパシタンス/ESRメータの測定法と(予想される)精度 | トップページ | 相互インダクタンスを測ってみたらヘンなことになった »
コメント