LCRメーターといっても、計測器レベルのものではなく、アルミ電解コンデンサの劣化などを計測値として見ることができる、そんなチェッカー的なもの。
単純に「LCRメーターが必要」ということであれば、この機能が入ったテスターや、製作キット、個人入手可能な価格帯の中華製LCRメーターなど選択肢は多数ありますが、お金で解決するだけではつまらないので、少しこだわって自作してみようと考えてみました。
自分向けの忘備録を兼ねて、思慮不足と能力不足による遠回りや、見当違いな試行錯誤の経過も含め記録したため、非常に見辛い記事となってしまってますが、そんなも苦悩の行程も含めた開発記としてお楽しみいただければ幸いです。
要求仕様
- 測定レンジ: 0.01μF~4700μF
- 測定精度:±5%RDもあれば十分
- ESR測定:必要
ただし性能の計測ではなく、劣化を見るだけなので0.1Ω分解能/1Ωオーダーの精度があれば十分。 - インサーキット測定機能:あればいいな
- tan δ 測定:あればいいな
- 漏れ電流測定:あればいいな
- 構成:マイコンベースでできるだけ安価に
製作期間はプロトタイピング3ヶ月ほど+完成版半年以内で可能な内容にしたい。
取り掛かる前の思考実験
本格的なLCRメーターの検討へと入る前に、静電容量とESRを単純に測定するにはどうすればいいのか、考えてみます。
方式として思い付くのは、
- 矩形波を加えてステップ応答を見る
- 定電流を流して電圧スロープを見る
- タイマIC(555)と組み合わせて周波数を見る(超簡易版)
- 正弦波をスイープさせて各周波数での応答から伝達式を推定する
といった感じでしょうか、これ以外の方式を含め、一般的な作例、各方式の利点欠点、市販品の概略、などについて、Claud と相談しながら調べてみました。
LCRメーター(コンデンサ劣化チェッカー)の方式整理
最初に押さえておきたい前提
測りたい量と標準的な測定条件 について。電解コンデンサのデータシート上の表記は以下の基準に従っています。
| 量 | 一般的な条件 | 備考 |
|---|---|---|
| 静電容量C | 120Hz(JIS/データシート)または1kHz、約0.5Vrms+DCバイアス1〜2V | 120Hzと1kHzでは電解コンデンサの測定値が変わる |
| ESR | 100kHz前後(スイッチング電源用のデータシートは100kHz規定が多い) | 低ESR品は100kHz、一般品は120Hz〜1kHzの場合もある |
| tan δ | 120Hz | tan δ = 2πf·C·ESR(直列等価)。同じ周波数のESRと対応する |
| 漏れ電流 | 定格電圧を1〜5分印加後 | 交流ではなく直流測定 |
注意点
- 100kHzで測ったESRと、120Hzのtan δから逆算したESRは別の値
誘電体損失が周波数で変わるため。
劣化判定には「100kHzのESR(またはインピーダンス)」を新品の規格値やデータシートと比較する使い方が一般的。 - ESRは温度依存性が強い
低温で数倍になるので、測定時の温度も意識しておくと安心です。 - ESRが実用的に意味を持つのは概ね1µF以上、実質は数µF以上のアルミ電解コンデンサに限られる。
最初の4案に対する評価
Claude が下した評価です。
① ステップ応答(RC充電の波形を見る)
- 利点:ハードが簡単(MCU+抵抗+ADCまたはコンパレータ)。時定数からCが出て、立ち上がり直後の瞬時ジャンプからESRが推定できる。
- 欠点:ESRは「ΔV = V·ESR/(R+ESR)」という小さなジャンプにしか現れず、ESL(配線インダクタンス)のスパイクと分離しにくい。ADCの速度と分解能も厳しい。誘電体吸収で単純な指数関数にならず、フィッティングが必要。
- 位置づけ:静電容量の粗測定向き。ESRはおまけ程度。
② 定電流で電圧スロープを見る
- 利点:dV/dt = I/C で線形に読めるので、Cの計算が素直。電流のON/OFF(または極性反転)の瞬間の電圧ステップから ΔV = I·ESR(極性反転なら2I·ESR)でESRも出せる。広い静電容量範囲に対応しやすく、電流を切り替えるだけでレンジを変えられる。
- 欠点:定電流源が必要(コンプライアンス電圧、スイッチ時の過渡)。漏れ電流が大きいとスロープが歪む。ESRはステップの立ち上がりが速いことが前提で、ここもESLと帯域の問題が残る。
- 位置づけ:静電容量+簡易ESRのパルス法として実績がある方式。劣化チェッカーとしてかなり有力です。
③ 555による周波数測定
- 利点:超安価で、MCUのタイマで周波数カウントすれば分解能は十分。部品点数が最少。
- 欠点:ESRはほぼ見えない(抵抗R≫ESRなので感度がない)。スレッショルドが電源電圧や温度に依存し、精度は数%。振幅が大きいので電解コンデンサの印加電圧・極性管理も必要。
- 位置づけ:静電容量のみの簡易測定。ESRや漏れ電流を見たい今回の目的には不足です。
④ 正弦波スイープ(周波数応答からの推定)
- 利点:最も汎用的。Z(f)から C、ESR、ESL、tan δ(さらに自己共振)まで、等価回路 Rs-Ls-C へのフィッティングで1回で出せる。|Z|が最小となる自己共振付近では |Z|≒ESR になるので、ESR測定に非常に向いている。
- 欠点:複素インピーダンス(位相を含む)を測る必要があり、位相精度が効く。下の数値例を参照。
- 位置づけ:本命の方式。LCRメーターの本質もこれです。
位相精度の目安
Re(Z) の誤差 ≈ |Z|·δθ なので、1µF・100kHz(Xc≈1.6Ω)で位相が0.1°ずれると約3mΩの誤差になります。一方、100µFを120Hzで見るとXc≈13Ωなので、ESR 0.1Ωを測るには位相0.1°でも誤差が約20mΩと大きく、現実的には厳しいです。ESRは Xc が小さくなる周波数(高め)で測るのが定石で、スイープは「そのCに適した周波数を自動で選べる」という点が大きな利点となります。
提示以外の方式について
(a) 自動平衡ブリッジ + 同期検波(市販LCRメーターの標準構成)
オペアンプの仮想接地でDUT(測定対象)の電流をI-V変換し、レンジ抵抗(数Ω〜MΩ)を切り替え、DUT電圧と電流を同期検波(I/Q検波)して複素インピーダンスを求めます。4端子(ケルビン)接続を使います。数mΩのESRを扱うなら4端子化は必須です。④をきちんと実装すると、結局この構成になります。
(b) 分圧比測定法
基準抵抗とDUTを直列にして正弦波を加え、両端電圧をそれぞれADCで取り込み、DFT/Goertzelで基本波成分の複素比を計算します。MCUのADCとDACだけで組め、DIYで最も現実的です。サンプリングを励振周波数に同期させ(整数周期)、複数周期を平均すれば精度が出ます。
(c) AD5933/AD5934(アナログ・デバイセズのインピーダンスコンバータIC)
DDS励振、ADC、DFT、キャリブレーションが1チップに入っており、スイープ機能もあります。DIY作例は多いです。ただし標準では数kΩ〜MΩ向けで、低インピーダンス(ESRの領域)では外付けのアンプ回路やレンジ切り替えが必要になります。周波数も100kHz程度までです。
(d) サウンドカード/オーディオコーデック利用
PCのオーディオ入出力で基準抵抗との分圧を測る方式です。20Hz〜数十kHzなら手軽に位相付きで測れます。ただしDC結合でないことが多く、100kHzのESRには届きません。実験・検証の足場としては便利です。
(e) 方形波ESRメーター方式(アナログ)
100kHz前後の低振幅(≲100mV)方形波をDUTに流し、その電圧をピーク検波して読み取ります。振幅を小さくするとシリコン接合が導通しないため、基板上のまま(in-circuit)でも測れるのが特徴です。回路は単純で、ESRだけならこれが最も手堅い方法です。ただしCの小さい品(約1µF以下)では位相の影響でESRが見かけ上ずれます。
(f) リングダウン法
既知のインダクタとDUTでLC共振回路を作り、パルスで励起して減衰の速さからESRを求めます。Q測定の考え方です。面白い手法ですが、Cが広範囲に動くと共振周波数も動くので、実用の汎用機には向きません。
(g) 漏れ電流の測り方
- 直列抵抗+ADC法:定格(または規定の電圧)をDUTに印加し、数十秒〜数分待って、直列抵抗の電圧降下から電流を求めます。
- 自己放電法:充電後に電源を切り離し、高入力インピーダンスのバッファでVの低下 dV/dt = I/C を観測します。実装が簡単です。
- 漏れ電流は印加電圧に強く依存するため、可変電圧の電源が要ります。数百Vの高耐圧品まで対応しようとすると安全面の負担が大きくなります。初期段階では低い試験電圧(例:5〜25V)で相対的な劣化を見るのが現実的です。
大まかに見ると、時間ドメインでやる方法と、周波数ドメインでやる方法に分かれます。どちらを選ぶか(もしくは、その両方をミックスするか)検討していきます。
一般的な作例
- Bob Parker ESRメーター(Silicon Chip誌)、Capacitor Wizardなど:方形波・ピーク検波の古典的なESRメーター。
- AVRトランジスタテスター(Markus F.・Karl-Heinz Kübbeler系、通称LCR-T4/T7クローン):数千円で買え、MCUのADCとパルス/充放電でC、ESR(約0.01Ω分解能)、L、R、半導体をまとめて判定します。ソース公開されており、パルス法の実例として非常に参考になります。ESRやCの精度は参考程度という割り切りです。
- AD5933ベースのインピーダンスアナライザ作例:スイープでZ(f)を取る方式(上記c)。
- STM32/RP2040などのMCU+DAC/ADCによる分圧比測定(上記b):近年増えているオープンソースLCRメーターの中心的な構成です。
市販品の概略
| 分類 | 例 | 特徴 |
|---|---|---|
| ESRメーター(簡易) | Peak Atlas ESR70、各種キット(Bob Parker系) | 100kHz付近のESRに特化。0.01〜数十Ω、操作が簡単。in-circuit対応の機種もあり |
| 部品テスタ | LCR-T4/T7クローン等 | 数千円。C・ESR・Rなど。精度は目安程度 |
| ハンドヘルドLCR | DE-5000など中華系、国産の携帯LCR | 100Hz〜100kHz、基本確度0.2%程度。数万円 |
| 卓上LCRメーター | HIOKI IM3523/IM3536、Keysight E4980Aなど | 4Hz〜数MHz、確度0.05%級、4端子、DCバイアス。数十万〜数百万円 |
| インピーダンスアナライザ | Keysight E4990A、OMICRON Bode 100など | 広帯域スイープ。研究・開発用途 |
初期段階の設計案
①ステップ応答と③555による周波数測定はどう見ても筋が悪い(発展性が無い)ので除外します。漏れ電流測定とtan δも対効果があまり望めず必須項目から除外(漏れ電流に関しては、他の計測プロセスでの放電~充電のアンバランスで副次的に推定できるので、可能であればこちらを応用する)。
逆に、インサーキット計測は何としても盛り込みたいところ。
AIが提示してきた他の方式についても、(c)AD5933/AD5934、(d)サウンドカード利用、(f)リングダウン法、は除外。マイコンとオペアンプを中心にした安価な組込みシステム構成が目標なので、PCベースの構成や専用ICは使いたくない(あと私自身が理論を理解できない高度な内容は却下)。
②電圧スロープ測定と④正弦波スイープの組み合わせに、(b)分圧比測定法、(e)方形波ESRメーター(インサーキットテスト)方式のエッセンスを加えた、粗測定~精密測定のシーケンスを組むアプローチが目的とするものに近いので、これをスタートにしたいことをAIに伝える。
その要求に対し、こんな回答を返してきました。
①アナログのESR回路+②定電流法のCで組む簡易版
最小限の部品で劣化チェッカーとして実用になります。方形波100kHz・低振幅・ピーク検波でESR、定電流ランプでC、自己放電または直列抵抗で漏れ電流を見ます。
MCU+分圧比測定のデジタル版(長期的な本命)
- 励振:DAC(またはPWM+フィルタ)で、120Hz、1kHz、10kHz、100kHz程度の数点(まずはスイープでなく複数周波数でOK)。
- I-V変換:TIA(電流-電圧変換アンプ)または基準抵抗の分圧。レンジ抵抗をアナログスイッチで切り替える。4端子接続。
- 取り込み:同期サンプリングし、Goertzel/DFTで複素電圧を算出。
- DUTにはDCバイアス(1〜2V)を重ね、極性を守る。
- 校正:開放・短絡補正と、既知の抵抗・コンデンサで確認する。
- 演算:Z = V_DUT / I から C、ESR、tan δ(=ESR/Xc)。必要ならRs-Ls-Cのフィッティング。
この方向で詰めていくことにします。
コンセプト設計
最初に(第一段階の)結論
- 「②定電流の三角波ランプ」と「(e)小振幅方形波+エッジ直後サンプリング」は、時間ドメインでは同じ測定です。周波数を変えているだけなので、粗測定段として一本化できる。
- 精密段は、同期サンプリングした電圧と電流を DFT して複素比を取る(b)方式にする。
- 比測定にすると励振波形の純度(歪み率や高調波成分)は精度に影響しない。
- SRF(自己共振点)では ESR ≒ |Z| になり、位相精度の影響が2次になる。ESR測定はこの点を狙うのが有効。
- ケルビン接続(四端子接続)を前提とする。数mΩ級の測定ではクリップ抵抗が支配的になるため必要(特にインサーキットテストで要求される)。
測定シーケンス案
AIが提示してきたシーケンスです。
| Phase | 内容 | 出力 |
|---|---|---|
| P0 | 接続確認:端子電圧検出、開放/短絡判定、残留電荷の放電、極性確認 | 測定可否、DUTの状態 |
| P1 | 粗測定:±定電流の三角波ランプ(電流レンジ切替) | C(±5〜10%)、ESR概算、Cの桁判定 |
| P2 | 周波数選定:P1で得られたCから測定周波数を決定。必要なら粗スイープで |Z| 最小(SRF)を探す | f_C、f_ESR |
| P3 | 精密測定:同期サンプリング+DFTで Z(f) を数点測定し、Rs-Ls-C にフィット | C、ESR、ESL、tan δ |
| P4 | 判定:新品規格値との比較、履歴比較 | 良否、劣化度 |
P4の「判定能力」については今回作る測定デバイス側では不要かも。その代わり通信用I/Fを持たせて、ホストPC側のPyVISA環境で自動計測や自動保存できるようにできたら面白い。
P1:ランプ法でESRも取る方法
- ±Iを交互に流し、三角波電圧の傾きから C = I/(dV/dt) を求める。
- ESRは、極性反転の瞬間のステップから ΔV = 2·I·ESR で求める。
- ESLのスパイクと誘電体吸収を避けるため、各区間を直線フィットし、反転時刻まで外挿した両側の差からESRを出す。反転直後の数サンプルは捨てる。
- 電流は電流源の公称値ではなく、センス抵抗をADCで読んだ値を使う。
- 電圧振幅は小さく保つ(インサーキット用途では100mV以下、できれば50mV程度)。
- 電流レンジは10µA〜100mA程度を10倍刻みで用意し、ΔVが目標範囲に入るよう自動選択します。例:1000µF・10mAなら約10V/s、0.1µF・100µAなら約1V/msです。
- 平均電流が0なので、電解コンデンサの極性違反や充電が起きにくい点も利点です。
P2:周波数の選び方
- Cの測定では、|Xc| が ESR の数倍〜数十倍になる周波数を選ぶ。
- ESRの測定では、|Z| が最小になる自己共振付近が有利。このとき Re(Z) ≒ |Z| で、位相誤差 δθ は ESR に2次でしか効かない。
- SRFの目安は、ESL=15nHとして 10µFで約400kHz、100µFで約130kHz、1000µFで約40kHzです。ESLの実際の値はリードと治具に依存する。
| C | Cを測る周波数 | ESRを測る周波数 |
|---|---|---|
| 0.1〜1µF | 1kHz〜10kHz | tan δのみ意味を持つ(ESRは対象外) |
| 1〜10µF | 1kHz | 10〜100kHz |
| 10〜100µF | 120Hz〜1kHz | SRF付近または100kHz |
| 100µF以上 | 120Hz | SRF付近(数十kHz〜) |
P3:位相精度と校正
- Re(Z) の誤差は ≈ |Z|·δθ です。Xc≒1.6Ω(1µF@100kHz、10µF@10kHz、100µF@1kHz)で ESR誤差を1mΩ以下にするには δθ≦0.04° が必要。10mΩ許容なら0.36°です。
- 100kHzでの時間ずれは1nsあたり0.036°です。したがってV/I両チャネルは同時サンプリングにする。
- 逐次変換でもずれが固定値なら校正で補正できますが、温度依存の変化が残ります。
- 内蔵PGAは位相遅れを持ちます。GBW≒13MHz級(要データシート確認)で ×8 のとき、100kHzで約3.6°です。ゲインとレンジごとに校正が必要です。
- 起動時に精密基準抵抗(0.1Ω、1Ω、100Ωなど)を DUT 位置に切り替えて測り、チャネル間のゲインと位相差をレンジ×周波数ごとに自己校正する方法が有効です。
- ランダムノイズは支配的ではありません。12bit ADC、N=1024の同期DFTでの位相ノイズは0.002°程度(概算)で、支配するのは系統誤差(位相ずれ、ゲイン、INL)です。
補足:V/I比測定とプロテクト配置
- 電圧駆動+仮想接地TIAで電流を取る構成にすると、DUTは H側の force、sense(V検出)、L側の仮想接地に接続されます。
- 電流は仮想接地ノードの電流で測るので、force経路の直列要素(リレーのRon、保護抵抗)は比測定に影響しません。
- sense線は高インピーダンスなので、保護抵抗とクランプを入れても精度を損ないません。
- DCバイアスは H側の電圧源オフセットで与えます。リーク電流がTIA出力のDCを動かすので、Rf と飽和余裕を確認してください。
インサーキット測定
周辺回路が並列に入るためCの絶対値は信頼できず「判定の信頼度を落として使う」割り切った形になるので、これに基づいた組み立て方となります。
この測定モードの時、小振幅(20〜50mV・今回は35mVpkと仮設定)かつDCバイアスなし にします。これだとシリコン接合が実質導通しません。
P1の最初の方で25mV・50mV・75mVといった感じで徐々に電圧振幅を上げ、線形性のチェックを行います(バイアス極性を反転して比較する方法もあります)。一致しなければ半導体が効いていると判定し、インサーキット測定用の弱測定動作(インサーキットP3)に切り替えます。
更に、25mVと50mVでZが一致しなければ、インサーキット不可として警告を出します。
インサーキット測定では、100kHz付近のESRを使います。周辺のデカップリングコンデンサの影響を受けにくく、ESRの比較は意味を持ちます。このためP2動作は省略します。
逆の言い方をすると、インサーキットでは測定可能な範囲がかなり限定された形となります。
アルミ電解コンデンサの劣化状態をざっくり測り、交換するかどうかの判断材料にする使い方をするので、この制約は受け入れ可能です。
励振波形のコスト比較:正弦波 vs 方形波
コンデンサに加える信号について、正弦波の生成にかかるコストと、方形波(矩形波)生成でデジタル信号処理的にやる場合のコスト(労力)比較をAIに評価してもらった結果です。
前提
- 比測定(V_DUT/I のDFT)では、励振振幅の絶対精度は要らない。励振の高調波は、整数周期の同期サンプリングなら直交性があるため基本波ビンに影響しません(必要なのは基本波成分だけなので、正弦波生成のコストを払う動機は主にAFE(アナログフロントエンド)側の制約緩和ということになる)。
- 正弦波にする理由は、AFEの飽和・スルーレート・エイリアシングの緩和です。DUTは小信号では線形なので、DUT側の理由はありません。
- 同期サンプリングなら、DFT用の sin/cos テーブルは励振用テーブルと共通で、三角関数の計算は不要です。
比較表
| 項目 | 正弦波(DAC+DMA) | 方形波(GPIO/タイマ+DFT) |
|---|---|---|
| 追加ハード | DAC(マイコンに内蔵されていれば不要)、出力LPF | ほぼ0(分圧で小振幅化) |
| CPU負荷 | ほぼ0(DMA転送)。DFTは両者共通で、1ビン×2ch×1024点でも数十〜百µs程度 | 同じ |
| 更新レート制約 | DACが数百ksps〜1Msps級と仮定すれば、100kHzでは10点/周期程度 | 周波数上限はタイマ精度で決まる |
| 基本波の効率 | 正弦波なので全エネルギーが基本波 | 全電力の約81%が基本波、残りは奇数高調波 |
| 同ピーク振幅での基本波 | ×1 | 約×1.27(4/π)。インサーキットで電圧上限が決まる場合に有利 |
| AFE要件 | 緩い(エッジが無い) | エッジでTIAが飽和しない帯域とスルーレートが必要 |
| 高調波のエイリアス | 小さい | 1周期N点なら、(N±1)次高調波が基本波ビンに折り返す |
| マルチ周波数 | 1周波数ずつ | 3f、5fも同時取得できる(SNRは1/nに低下) |
| 振幅可変 | テーブルとDAC | 分圧または基準切替 |
エイリアスの例:N=16点/周期だと15次と17次(振幅1/15、1/17、合計で約12%)が基本波に折り返します。対策はAAF(アンチエイリアシングフィルタ)を入れるか、Nを増やすか、方形波の立ち上がりをRCで鈍らせることです。
中間案として、階段波(抵抗ラダー等で3次・5次を消す)、1bitのΔΣ/PDM+LPF、立ち上がりを鈍らせた台形波があります。
評価
- STM32G4クラスのマイコンなら、DAC+DMA+タイマ同期の正弦波生成は実質ノーコストです。ADCと同じタイマで駆動すれば、完全なコヒーレントになります。
- 方形波はハード面ではほぼ0コストですが、コストがAFE設計(スルーレート、AAF、エイリアス)に移ります。
- 二者択一にせず、DAC波形メモリで「三角波(P1)」「正弦(P3)」「小振幅方形(インサーキットP3)」を切り替える構成が効率的です。
「どうせデジタル信号処理を加えるのだから、わざわざ正弦波を作らずとも矩形波で良いのでは(エイリアシングエラーは考えないものとする)?」いう素人考えの問いかけに対する回答です。
採用予定のSTM32G4(後述)には15MSPSの高速DACと内蔵CORDICがあり、かなり高い周波数の正弦波をほぼノーコストで作れるので素直にDAC方式の提案を受け入れます。
インサーキットP3モード
インサーキットテスト用低電圧(例えば35mVpk)をDACで出すと約40コードしか使えず、正弦波の量子化が粗くなります。既述の通り、この動作モードでは正弦波とするメリットは薄い(量子化ノイズのため高調波エネルギーがかなり出てしまう)ため、矩形波もしくは台形波での駆動とします。
コヒーレント同期のDFTをかけた時、励振の量子化誤差は高調波に出て折り返されますが、V/I測定の直交性によりかなり緩和されます。量子化ノイズは約0.23mVrms(信号に対し約−40dB)で、V/I比には効きません。
なお、後述の通り、Rd切替が分圧器として働くため、条件によっては通常の正弦波駆動とします。
V_DUT = Vs·|Z|/(Rd+|Z|) なので、Rd=|Z|·(Vs/Vd−1) とすれば、Vs(例:0.7V)を大きく保ったままV_DUT=35mVにできます。
例えば、|Z|=1Ωなら、Vs=0.7V、Vd=35mVでRd≈19Ω(Rd=10Ωか100Ω近傍)。|Z|=13kΩなら、Vs=0.3V程度となります。
MCU検証
趣味の電子工作で定番の RP2040 と使い慣れた STM32 系で比較してもらった。
| RP2040 | STM32H7(H743/H723系) | STM32G4(STSPIN32G4内蔵のG431含む) | |
|---|---|---|---|
| ADC | 12bit、約500ksps、1個で多重化、同時サンプリング不可。DNLに既知の癖があり、有効bitは9bit前後 | 16bit、数Msps級。有効bitは12〜13bit程度(要確認)、ADC×3、同時サンプリング可 | 12bit、4Msps、×2、同時サンプリング可。ハードウェアOSで精度向上 |
| DAC | なし | 12bit×2 | 12bit。STSPIN32G4では4ch(外部出力2+内部2) |
| オペアンプ/PGA | なし | 品種により2個前後(要確認) | G431で3個。PGAとADC/DACへの内部接続が可能 |
| コンパレータ | なし | 2個 | 4個(G431) |
| 演算 | M0+、FPUなし。固定小数DFTで足りる | M7、倍精度FPU、大RAM | M4F、170MHz、CORDICとFMAC |
| 強み | PIOの決定論的な波形生成 | 精度とメモリ | 内蔵アナログの統合度 |
| 弱み | 内蔵アナログがほぼ無い | 内蔵オペアンプ・DACが少ない、消費電力、実装難度 | ADCは12bit |
RP2040 より STM32 の方が良さそう。詳しくは以下の通り。
STM32G4をお勧めしてきたので、これとゲートドライバ・アナログ回路をミックスしたモータ制御用SoCであるSTSPIN32G4を上手く活用できないか調査もしてもらいました。
STSPIN32G4のリソース
- 内蔵は12bit ADC(4Msps)、コンパレータ4個、オペアンプ3個、DAC4チャネルです。DAC 4チャネルのうち外部に出るのは2、内部は2です。
- CORDIC(三角関数)とFMAC(フィルタ)のアクセラレータ、ADC/DAC/オペアンプ/コンパレータ用の独立したアナログ電源入力、128kBフラッシュと32kB SRAM、最大40GPIOを持ちます。
- 3相ゲートドライバ、ブートストラップダイオード、降圧レギュレータ、3.3V LDOも同梱されています。
STSPIN32G4の評価
- 使える点:励振用DAC×1、V/I用ADC×2(同時)、PGA、コンパレータ(過電圧検出・ゼロクロス)が足ります。メモリ32kBは、2ch×1024点でも約4kBなので問題ありません。
- 気にすべき点:
- ゲートドライバとバックコンバータが不要なのに載っているため、サイズとコストが大きくなります。
- バックのスイッチングノイズがADC/DACの近くに来ます。アナログ電源入力が独立しているので、低ノイズLDOで分離すれば対策できます。
- オペアンプ端子・VREF+ の引き出し有無は、必ずピンアウト表で確認してください。
わざわざこれを使うメリットはあまり無さそう。
STM32H7の位置づけ
- 精密段のADC分解能が欲しい場合の候補です。
- ただしADC入力の駆動インピーダンス、VREF+ のデカップリング、基板レイアウトの要求が厳しく、オペアンプ内蔵数が少ないので、外付けAFE主体になります。
- 16bit ADCの有効bitは12〜13bit程度と見て、G4に対する優位は限定的です。
RP2040の位置づけ
- 内蔵アナログを活用する要件とは合いません。
- 外付けADC/DACを使い、RP2040はPIOで同期制御するなら成立しますが、その場合の選択理由はコスト程度です。
結論としては、プロトタイプとしてSTM32G4の評価ボード(STM32 Nucleo)をベースに組むのがよさそうです。(執筆時点で)最新のSTM32C5シリーズもスペック(コストパフォーマンス)的には魅力的ですが、個人的にTrustZone入りのマイコンはノーサンキュー。
作例の紹介
「MCU+DAC/ADCによる分圧比測定(比測定系)のオープンソースLCRメーター」の例を参考用に挙げてくれました。
| 作例 | 要点 | 学べること |
|---|---|---|
| jankae/LCR | 100Hz〜200kHz、使用可能インピーダンス20mΩ〜1MΩ、DCバイアス10V、オートレンジ、オープン/ショート校正、ESRやQを含むスイープ表示 | 今回の目的に最も近い完成度。レンジ切替、校正、バイアス、スイープUI。ハード構成の詳細はリポジトリのhardware/softwareで確認してください |
| TeensyLCR/Owen-Ball/LCR_Meter | Owen-Ballの作例はTeensyLCRのオーディオコーデック設計とファームウェアをベースにしており、目標は1pF〜10mF、1µH〜100H、1mΩ〜1MΩ(実際のレンジは未確定との記載) | オーディオコーデックで位相付き測定を行う考え方。帯域は一般に数十kHz程度までなので、100kHzのESRには届きにくい点に注意 |
| OpenLCR (ryannbrandt) | DUTに対して電流源として動作し、電流源はDACの電圧で制御する設計 | 「DAC制御の電流源」というP1と同じ発想。励振と電流源を共用する構成の参考 |
3つの共通点は、校正とレンジ設計に作例のノウハウが集中していること。今回のプロジェクトの比較・ベンチマークとして大いに参考となります。
✅ 落とし穴チェックリスト
- ☑ 放電:充電済みの電解コンデンサを接続するとMCUが壊れます。測定前の放電回路(+入力保護)は必須です。
- ☑ 極性:電解コンデンサは逆バイアス厳禁です。バイアス電圧は常に順方向にします。
- ☑ 接触抵抗・リード抵抗:ESR 10mΩ台を狙うと、クリップやリードの抵抗が支配的になります。4端子化とゼロ校正が要ります。
- ☑ 測定値の比較:C・ESRは周波数・振幅・バイアス・温度で変わるので、新品の規格値と比較するときは条件を合わせます。
- ☑ DC系の方式(①②)で測ったCは、AC(120Hz/1kHz)で測ったCと一致しないことがあり、特に劣化品でずれます。
- ☑ セラミックコンデンサはDCバイアスや振幅で容量が大きく変わります。
- ☑ 安全:漏れ電流測定で高電圧を扱う場合は、電源・放電・絶縁・外装を慎重に設計してください。
測定電圧レベル設計
- アナログ電源 VDDA=3.3V、仮想接地レベル Vmid≒1.65Vとする
単電源動作。 - オペアンプは入出力ともレール・ツー・レールのものを選定
もしくはSTM32G431内蔵オペアンプ(ただしいくつか制約あり)。
出力の下側飽和電圧が約100mVあるので、実用スイングはVmid±1.2Vを上限にする。 - 比測定(V/I)なので$V_{REF}$の絶対精度は効かない
効くのは 抵抗値と校正コンデンサ 。 - DUT振幅
P1が±50mV、P3が140mVpk(約100mVrms)、インサーキットが35mVpk程度を想定。 - ADC
0.25µs(4Msps)の2基で、V側をADC1、I側をADC2に割り当てて同時サンプリング。
定電流源
P1の「定電流」は、後述の通り DACの±1Vステップ+Rd(駆動側抵抗) の疑似定電流で足ります。実電流はTIAが毎回測るので、定電流性は精度に効きません。オペアンプ式の真の定電流源は任意となります。
真の定電流源が必要になる条件は ΔVを±0.3V以上に広げたいとき、または大Cを広い電圧範囲でランプしたいときなので、今回の目的ではRd方式で十分と考えます。
全体構成
駆動系・接続部の解説
全体構成図のうち、駆動系と接続部の回路概略図を示します(全体構成図の上の方)。
各構成コンポーネントの解説は以下の通り。
DAC
励振用DACとADCのトリガは同じタイマ系統から取り、サンプリング周波数で同期させます。
STM32G431のDACは、外部出力のバッファ付き2ch(1MSPS)+内部のバッファ無し2ch(15MSPS)の計4chです。今回は内部DAC3(15MSPS)を内部OPAMP3の+入力に内部接続し、このオペアンプを非反転バッファ(フォロワモード)として使用します。
これでかなり高い周波数(数百kHzオーダー)の正弦波に対応できます。
再構成LPF
容量性DUTでは電流が高調波を強調するため、DACによる階段状の高調波成分(約N−1次)が基本波に折り返してV/Iの比を狂わせてしまう。これを緩和するため、励振周波数に応じた低域通過フィルタを構成する必要があります。
一方、P1測定時は方形波出力するため、このフィルタ回路をバイパスバイパスさせます。
この要件に対応するため、STM32G431の内蔵OPAMPを活用し下記構成でこのブロックを実現します。
一つ前の項目で言及した通り、OPAMP3をDAC3_CH2のバッファ(フォロワ)として使います。これにより低インピーダンスで出力できるようになり、LPF切替の自由度が上がります。
- 外部の受動RC(3段)×3系統
高帯域(300kHz)用と低帯域(10kHz)用のネットワークを独立して組み、OPAMP2の3つのVINPピンにそれぞれ接続。 - 残る1本はバイパス(直結)にする
これら3系統をソフト的にOPAMP2_CSRレジスタのVP_SEL(入力端子選択)を書き換えるだけで切り替えることができる。 - OPAMP2はフォロワモードに固定
こうすることで、このブロックでのアナログスイッチによる制御は不要になります。
STM32G4の特徴である高速(15MSPS)DACと内蔵OPAMPの特徴を生かした解決法で、これらが使えなかった場合、例えば2段のSallen-Keyで4次Butterworthのような急峻なフィルタが必要になります。また、比測定では、通過帯域の振幅・位相の変化は無関係ということも有利に働きました。
全体構成図では4次フィルタとなっていますが、この部分の詰めの作業の過程でもっと緩和できるという結論に至りました。
また、この段階では暫定的に3段のLPFとしましたが、DACのレートとADCの標本化の関係次第では、もっと軽いLPF(1~2段)だけで足りる可能性もあります(DACの15MSPSをフルに生かせればこの想定が生きるのですが、DMACのバスマスタが果たして本当にこの帯域を取れるかどうかと、CORDICの出力をソフトウェアを経由せずDMAとのFIFOを組めるか、が鍵です)。フィルタ回路をパッシブ構成とすることで、これにも柔軟に対応できるという利点ができました。
なお、切り替えはかなり高速(約1µs)で行える(データシートにスペックが書かれていないので実機確認が必要)のですが、切り替え中はフィードバックループが切れるので、出力が過渡的に不安定になります。測定ステップ間で切り替えます。
帯域の目安(初期案、要シミュレーション)
- 低帯域(約10kHz):f≦約2kHz
- 高帯域(約300kHz):約2〜20kHz
- 直結:約20kHz以上/P1の方形波
DAC3は最大15MSPSなので、20kHzあたりでは(折返しの)像が数MHz以上に離れる。AFEの帯域で自然に減衰することを期待し、LPFなしでよいと見込みます。
注意
- 内蔵OPAMPのオフセット(校正後1.5mV)・スルーレート・GBW(13MHz級)が、駆動波形に乗ります。ただしVmidとのDCずれは数mVで、DUTへのDC電圧は無視できます。
- OPAMPが2段直列(OPAMP3→OPAMP2→U1)になり、P1の方形波エッジは各段のスルーレートで鈍ります。高速モード(45V/µs)を使ってください。
- マイコンのピンを5本使うことになる(PA7、PB14、PB0、PB1、PA6)ので、Nucleoボードでプロトタイピングする時はArduinoヘッダにスタックした他のシールドで使う信号との競合に注意(表示器をI2Cにするなど)。
- OPAMPはHigh-speedモード(スルーレート6.5V/µsから45V/µs)を使う。
駆動AMP(駆動バッファU1)
3.3V単電源で動作するRRIO(レール・トゥ・レール入出力)可能なオペアンプで、出力100mA以上、GBW20MHz以上、容量負荷でも安定なもの(ただし出力にはRdが入るので、容量負荷の問題はあまり大きくない)。
10µF〜レンジ(I=±10mA・10Ω/100Ω)を使わないなら、100mA級は不要。
ここで使うオペアンプの選定については後述。
Rd切替
10Ω/100Ω/1kΩ/10kΩ/100kΩの5値から切り替える。
本稿で何度も言及している通り、これら抵抗についてそれ程の精度は必要ないけれど、熱依存性の少ない金属皮膜抵抗を使用、10Ωは(正規動作から外れた時も想定した)最悪条件を見ると0.3W程度が加わる恐れもあるため、安全を見て1/4~1/6Wの抵抗(等価抵抗)をパラ接続して10Ωを作る。
スイッチの$R_{ON}$(オン抵抗)はRdに加算されるが電流はTIAが測るので直接的な精度には影響しない(ただし $R_{ON}$の電圧依存性起因の歪みは出るので、2Ω以下のアナログスイッチを選定する)。
Rp(保護抵抗)
AIが提示してきた回路図に記載はあるが省略可能。
接続部(K1/K2)
- 2×DPDT(双極ON/OFF)の信号リレーで、非通電(NC)側でDUTの4端子を放電抵抗に落とします。
- リレー接点抵抗が入っても、力線(Hc/Lc)は電流を測るので影響せず、センス線(Hp/Lp)は高インピーダンスなので影響しません。保護要素を力線とセンス線に自由に入れられます。
- DUT端子電圧の検出は、Hp/Lpからクランプ付きの高抵抗分圧(例:1/20)でADCへ入れ(Nucleo側はPC0/PC1など)、閉じる前に必ず確認します。
測定側の解説
次に、測定側(TIAと差動アンプ)の回路構成を示します(全体構成図の中段あたり)。
電流チャネルのオペアンプ回路について、概念的な説明を目的としたもので嘘が入ってます。スイッチの部分を真面目に解釈しようとすると意味不明になるので「6系統の Rf//Cf を切り替えている」程度に読んでください。
各構成コンポーネントの解説は以下の通り。
TIA(電流チャネル)
Rpl(保護抵抗)
Lc側の力線に数十Ωを直列に入れる。Rd切替スイッチのオン抵抗と同様、精度には影響しない。
電流アンプ(U2)
仮想接地(Vmid=1.65V:バッファして3系統に供給しており、この系統は VMID_I として表記)を基準として、±双方向の検知(検知というか、イマジナリショートが働くようフィードバック制御する双方向電流源の制御電圧とRfの値から電流値を逆算、とでも説明した方が良いでしょうか)をします。
電流・電圧レンジ(と周波数)の関係から、シャント抵抗式やMRセンサ式より、この方式で組んだ方が簡潔な回路で高精度な測定が行えます。
- 出力電流:
100mAを流すので、駆動AMPと同様の出力能力を持つレール・トゥ・レールのオペアンプが必要。 - GBW:50MHz以上必要
Rf(IV変換抵抗)とCf(安定化用位相補償コンデンサ)
電流レンジに応じて、TIA出力振幅 $A_I=I·R_f$ を0.1〜1.2Vのウィンドウに入れるためレンジ毎の Rf を切り替えます。
これらとパラ接続するCfは目安としてC_in≈20pF、GBW=100MHzとして Cf≈√(C_in/(2πRf·GBW)) の条件で概算(実機はシミュレーションと実測で追い込む)。
| Rf | Cf | I_pkウィンドウ | 備考 |
|---|---|---|---|
| 100kΩ | 約1pF | 1〜12µA | 個人レベルの回路実装では厳しいかも |
| 10kΩ | 約2pF | 10〜120µA | |
| 1kΩ | 約5pF | 0.1〜1.2mA | |
| 100Ω | 約15pF | 1〜12mA | |
| 10Ω | 無し | 10〜100mA | Rf·C_inのゼロ点がGBWより高いためCf不要 |
| 1Ω | 無し | 〜100mA | Rf·C_inのゼロ点がGBWより高いためCf不要・A_I≦0.1V |
Rfバンクの切り替えと選択
電流レンジ切り替えのため、各枝へは、出力 → スイッチ → センス点M_k(M1/M2/M3) → Rf∥Cf → V- の経路で接続します。
測定信号(電圧レベル)はスイッチの後ろ(Rf側)のM_kからMUX(マルチプレクサ)で取り出すのですが、こうするとスイッチのRonがRfに含まれなくなります。
別の表現をすると、オペアンプのイマジナリショートの働きによって、V- は Vmid に仮想接地されていると見做せますす。つまりセンス点X_kでの電圧は $ V_{mid} - IR_f//\frac{1}{j\omega C_f} $ となり、スイッチの Ron は現れないという訳です。
ただし、Rf=1k/10k/100kのレンジではスイッチ(アナログスイッチ)の持つ数Ωオーダーの Ron は Rf の1%以下ということで十分無視できるので、単純にオペアンプ出力から取り出せます。こうすることで、MUXの入力数を6から4に減らせます。
MUX後段のPGA_Iの入力インピーダンスを高くすることで、MUXのON抵抗は高くても構わないので、74HC4052のような汎用品が選べます。
T構成の動作と設計
この回路で興味深いのは、バンク切り替えのスイッチをSPSTスイッチではなくNC-NOのDPSTスイッチとし、NC側を仮想接地に落とす、T構成 としていることです。
これは、アナログスイッチが持つ $C_{OFF}$(OFF時寄生容量)が数十pFという小さな値なのですが、この回路構想での周波数帯では切り離しているはずの節の間で干渉(橋渡し)してしまい、帰還容量としてカウントされ影響を及ぼしてしまうことを防止するためです。
OFF時は仮想接地に落とすことで、その節の回路はGNDループ(電流が流れない状態)となり意味を持たなくなる(寄生容量が影響しなくなる)ようになります。
$C_{OFF}$ は $R_{ON}$ とトレードオフの関係なので、この回路構成を取ることで、ON抵抗を犠牲にせずアナログスイッチを選定できるようになります。
一方で注意点もあり、U2の出力負荷として選択枝のCOM容量に加え、非選択の5枝のNOオフ容量が出力についてしまうため、オペアンプの選定には容量負荷での安定性を考慮し、また、シミュレーションや実機検証の結果、必要となった時はU2出力に10Ω程度のアイソレーション抵抗を入れます。
差動アンプ(電圧チャネル)
- R1〜R4は10kΩ・0.1%の同一アレイにします。
- AC同相成分はV_DUT程度と小さいので、CMRRが54dB級でも問題ありません。
- Rs(1kΩ)は保護用で、高インピーダンス入力なので精度には影響しません。
測定系後段
電流/電圧両チャネル共通の構成となります。
ACカップリング(Cac)
PGA入力へ加わるDCバイアスにPGAのゲイン加わり、容易に飽和します。DCバイアス対策のため、PGA前段でAC結合コンデンサを入れます。
HPFのカットオフ周波数を1Hz程度とするため静電容量は数µF〜10µFとします。この時の120Hzでの位相誤差は約0.8°です(ゲインコード別に校正が必要)。
ここで使うのは周波数特性の良いフィルム系かセラミックコンデンサ、ただしX7R系セラミックは電圧依存と圧電ノイズがあるので注意。
また、バイアス変更後のセトリングに数百ms必要となります(バイアス切替時はスイッチで素早くプリチャージ)。
PGA(プログラマブルゲインアンプ)
非反転、Vmid基準、Rg切替。ゲインはI側 ×1/2/4/8、V側 ×1/4/16/64。
GBW200MHz級のオペアンプ(×64でも100kHzで位相約1.5°)が必要。
このオペアンプがGBWに対する要求が最も厳しく、位相遅れ(精度)に大きく影響します。
試しにSTM32G4内蔵OPAMP(GBW=13MHz)を使用した場合の試算をしてもらいましたが、かなり厳しい結果となりました。
位相の目安(NG=1+G、GBW=13MHzとして):
| G | 100kHzでの位相遅れ |
|---|---|
| −7 | 約3.6° |
| −15 | 約7° |
| −31 | 約14° |
| −63 | 約26° |
容量性が支配的なとき(|Xc|≧3·ESR)は (1+G)·f ≦ 約1MHz に収めます。
|Z|≒ESRの領域(SRF付近)では位相は2次でしか効かないので、−63でも使えます。
なので、ここは素直に外付けのPGAを選定します。
AAF(アンチエイリアシングフィルタ)
ADCのサンプリングレートを2MHzを想定し、47Ω+2.2nFのRCフィルタ(fc≈1.5MHz)を構成。両チャネル同一値で位相差を相殺。
ADC入力インピーダンスは50kΩで、STM32G431データシート上で $R_{AIN}$ はワースト条件で100Ωまでとなっており、上記定数のパッシブフィルタでこの要件を十分満たす。
アナログ電源(AVDD)と仮想接地電圧(Vmid)の生成
AVDDはマイコン等ディジタル回路から出るスイッチングノイズの影響を減らすため、低ノイズLDOから3.3V供給 、Vmid はクロストークを防ぐため、駆動系、測定系の電圧チャネル・電流チャネルそれぞれ専用にオペアンプを使い別バッファで供給します(計3系統)。
プロトタイピングではLDOは構築せず、AVDDとVDDを共通にします。
Vmidについては、AVDDの3.3Vを抵抗で分圧するだけでも良いのですが、余っているDAC1を使って1.65Vを作ります(PA4端子)。
大きな理由では無いのですが、駆動側の再構成LPFで使用する内蔵OPAMPの電圧オフセット性能があまり良くなく、DUTへのDCオフセットとして10mVオーダーほど残ってしまうことがあります。
また駆動側の漏れ電流はTIA出力に直流オフセットを作ります(例:Rf=100kΩで3µAなら0.3V)。これらはPGA前段のACカップリングやDFTで除去されますが、AEFブロック内での飽和余裕を確保する必要があり、念のため辻褄合わせできるよう(調整の自由度を上げ校正段でアジャストできるよう)、保険としてやっておきます。
このようなギミックは弊害を起こす危険性も内包しているのですが、リスクとしてピックアップできる下記項目に注意して回路やソフトウェアを構成します。
-
起動・リセット時にVmidが未確定:
電源投入やリセットでDACが止まると、Vmidが落ちる。TIA仮想接地のずれがDUTに逆電圧をかけるおそれがあるため、リレー(K1/K2)をリセット時にオープン(N.O.回路)にしておき、DACを有効にしてVmidが立ち上がってからリレーを閉じる順序にする。 - PA4の競合:ADC_IN17が使えなくなる(暫定構成では未割当)
-
DAC1のCH1/CH2間クロストーク:
励振を1~15MSPSで更新すると、同じモジュールの別chに更新ノイズが乗ってしまう可能性がある(暫定構成では別モジュールに割り当てているので問題無し)。 -
ノイズ・オフセット:
DACバッファの出力ノイズレベルは未評価なので、プロトタイプで要検証。 -
VREF+への依存:VmidはVREF+に比例する
VREF+を電源(AVDD)と別系統にする場合、AFEのヘッドルームに対するVmidの相対位置が基準電圧の違いでずれる(今回の回路構成では問題とはならない)。
各コンポーネントに対する要求・選定
オペアンプ
低ノイズ・RRIO・3.3V動作を満たすものを共通の要件とし、各オペアンプの要求能力と候補を表にまとます。
| オペアンプ | 要求能力 | 候補・備考 |
|---|---|---|
| U1(駆動バッファ) | 駆動能力100mA~ GBW20MHz |
OPA2354(TI) GBW=100MHz 出力電流100mA |
| U2(TIA) | 駆動能力100mA~ GBW50MHz |
OPA2354(TI) GBW=100MHz 出力電流100mA |
| 差動アンプ | CMRR 54dB以上 | ADA4807-2(ADI) |
| PGA(I)/PGI(V) | GBW200MHz | MCP6S22-I/P(MicroChip) 2回路・バンド幅2~12MHz ゲイン×1~x32をSPI設定 |
| Vmidバッファ(3個) | 汎用オペアンプで可 |
この中で最もGBWに対する要求が厳しいPGA(I)とPGA(V)に使用するMCP6S22-I/Pは要求を満たさないが、全ゲインで-3dBでのBWを2~12MHzとしているため、取り敢えずの感じで候補に挙げました。
アナログスイッチ・アナログマルチプレクサ
| アナログスイッチ | 要求能力 | 必要数 | 候補・備考 |
|---|---|---|---|
| Rd切替 | 100mA以上 | 5×SPST | TS5A3159-Q1(TI) 1.3Ω/100MHz |
| K1/K2(放電・DUT直結) | 耐電圧・絶縁 電流ラッシュ |
2×DPDT (双極ON/OFF) |
TLP172AM(東芝) フォトMOSリレー 500mA/60V |
| K3(電圧校正) | 耐電圧・絶縁 | 2×DPDT (双極ON/OFF) |
TLP172AM(東芝) フォトMOSリレー 500mA/60V |
| Rf切替 | Ron≦2Ω 100mA以上 |
6×SPDT | TS5A3159-Q1 1.3Ω/100MHz |
| センスMUX | 1:4選択 | ×2 | TC74HC4052 2系統入り |
モード別のスイッチ状態
| モード | K1/K2 | K3 | Rd | Rf | DAC | LPF |
|---|---|---|---|---|---|---|
| P0 事前確認 | NC(放電) | DUT | 開放 | 開放 | Vmid | — |
| P1 粗測定 | NO | DUT | R_k | R_k(同値) | ±1V方形波、バイアス0 | バイパス |
| P3 精密 | NO | DUT | |Z|に応じる | A_I窓に応じる | 正弦波Vs+バイアス0〜1V | 周波数帯に応じる |
| 校正 | NO | 基準R | 同上 | 同上 | 正弦波 | 同上 |
AIが提示してした全体構成ではこれらスイッチの切り替えは外付けシフトレジスタ経由とする内容だったのですが、マイコンのGPIOから直接制御できそうなので、シフトレジスタは無しです(ただしPGAのゲイン設定でSPIは使う)。
測定方式の実際
1. 電流レンジ(P1:ランプ法)
方式としては、DACの±1V方形波をRd経由でDUTに加えるやり方。V_DUTを±50mVに収めれば、電流の変動は5%以内に収まる。
| レンジ | Rd | I(±) | 測定可能なC(区間T=0.1〜20ms、100mVpp) | ESR分解能の目安※ |
|---|---|---|---|---|
| R1 | 100kΩ | 10µA | 10nF〜2µF | 約1Ω |
| R2 | 10kΩ | 100µA | 0.1〜20µF | 約0.1Ω |
| R3 | 1kΩ | 1mA | 1〜200µF | 約10mΩ |
| R4 | 100Ω | 10mA | 10µF〜2mF | 約1mΩ |
| R5 | 10Ω | 100mA | 100µF〜20mF | 約0.1mΩ |
※ ステップΔVの検出下限を20µVと仮定した理論値です。ESL・誘電体吸収・接触抵抗で実際は数倍悪化します。
区間時間は T = C·ΔV/I です。
自動レンジ手順
- R3(1kΩ)で+1Vステップを加え、V_DUTが50mVに達する時間tを測る(コンパレータ+タイマキャプチャ、またはADC)。C ≈ 0.02·t(t[s]→C[F])で桁が分かる。
- 短絡なら変化せず、開放なら瞬時に飽和するので判別できる。
- 桁に応じて、T=1〜10msになるレンジを選ぶ。
C算出と±対称の効果
- 正負区間の傾きの絶対値を平均すると、定常的な漏れ電流が相殺される。
言い換えると、この傾きの長期的なアンバランスを積算すれば、DUTの漏れ電流をある程度推定できる。正確な測定でなくても、大きく劣化したコンデンサの識別程度なら応用できそう。 - 電流は電流源の公称値でなく、TIA出力のADC値から求める。
- 反転時のESRステップは、各区間を直線フィットして反転時刻まで外挿し、両側の差から ΔV=2·I·ESR で求める(ESLのスパイクは捨てる)。
零バイアス運用
- P1は零バイアスの対称三角波(±50mV)なので、電解コンデンサの逆電圧は0.1V以下で、極性管理が要らない。
- 開始前にスイッチでDUTを短絡して放電しておきくのが肝心。
2. TIAレンジ(P3:精密測定)
TIA出力振幅 A_I=I·Rf を0.1〜1.2Vのウィンドウに入れるよう、アナログスイッチによるRfバンク切り替えと、MUXの入力信号選択を行う。
| Rf | I_pkウィンドウ | 対応する|Z|(Vd=140mV時) |
|---|---|---|
| 1Ω | 〜100mA(A_I≦0.1V) | ≦1.4Ω(Vd=I·|Z|で小さくなる) |
| 10Ω | 10〜100mA | 1.4〜14Ω |
| 100Ω | 1〜12mA | 12〜140Ω |
| 1kΩ | 0.1〜1.2mA | 0.12〜1.4kΩ |
| 10kΩ | 10〜120µA | 1.2〜14kΩ |
| 100kΩ | 1〜12µA | 12〜140kΩ |
ループゲイン規則(重要)
- TIAのノイズゲインは NG=1+Rf/|Z| となる。
- 100kHz付近では開ループゲインが(GBW=13MHzとなり) GBW/f≒130 まで落ちるので、伝達誤差は ε ≈ NG·f/GBW になる。
- 誤差εを3%以内に収める条件は次のとおり。
| 周波数 | 許容 Rf/|Z| |
|---|---|
| 100kHz | 約3以下 |
| 10kHz | 約38以下 |
| 1kHz以下 | 窓の上限(約85)まで可 |
- 実用上は「A_I ≈ min(0.8V, 3·Vd·(100kHz/f))」でRfを選ぶ
高い周波数ではレンジのウィンドウ中心より1つ下のRfを使うことになる。 - 残るεは基準抵抗とRCの校正でモデル補正
Rfと直列に入るスイッチのRonと並列に入るCf(数pF)による位相遅れは校正で吸収。
駆動側の制御
- 駆動側はRd(P1と同じ10進セット)で、Vs=0.1〜1Vの範囲をDAC振幅で調整します。
- 1つのRdで |Z|≧約0.16·Rd が正確に範囲内になり、およそ60:1のウィンドウを持ちます。
3. 検算例と精度の支配要因
例1:100µF電解(ESR≒0.3Ω)、10kHz
- Xc=0.16Ω、|Z|≒0.34Ω。Rd=10Ω、Vs=1V なら、I≒97mA、V_DUT≒33mV。
- Rf=1Ω(A_I≒97mV、NG≒3.9、ε≒0.3%)、V側はG=−31(約1V、位相約0.8°)。
- ESR誤差は |Z|·δθ(δθ=0.1°とすると約0.6mΩ)で、0.3Ωに対して十分小さいです。
例2:100kHz(SRF付近)
- Z≒0.3Ω(ESL成分が打ち消し合う)。V_DUT≒29mV、Rf=1Ω(NG=4.3、ε≒3.3%)、G=−31(位相約14°)。
- |Z|≒ESRなので位相誤差の影響は2次で、εもモデル補正で1%以下に落とせます。
例3:0.1µFフィルム、1kHz
- Xc=1.59kΩ、Vd=140mV、I=88µA。Rf=10kΩ(A_I=0.88V)、V側はG=−7。
- tanδの分解能は位相精度0.1°で約0.002です。フィルムコンデンサ(tanδ 0.001〜0.01)では限界に近いです。
精度の支配要因
- 基準抵抗の値(0.1%級)と、レンジ別のゲイン・位相校正。
- PGAのゲイン誤差(1〜2%):校正で吸収
- TIAの有限ループゲイン:モデル補正
- 接触抵抗:ケルビン接続+ショート補正で吸収
- ADCのランダムノイズ:同期DFTで十分小さくなる
プロトタイピング
ここまでの予備調査で、マイコンは STM32G431 で内定。これを内蔵したNucleoボードでプロトタイピングを行うことにするが、64ピンパッケージのNUCLEO-G431RBか、上位版のNUCLEO-G491RE は定価が同じなので、どちらか入手できる(在庫有の)ものにしようと思う。
これらボードはZephyrプロジェクトが公式サポートしている のも強い。
32ピン版の NUCLEO-G431KB もあって、小ささは魅力だが(これならプロトタイプのみならず本番回路に組み込んでも良いくらい)、ピン数が少ないだけに制約も多く(特にアナログ関連)、こちらの選択は断念した。
NUCLEO-G431RBの割り当てとピン競合の見積
Arduinoピンヘッダに割り当てられている信号を優先的に割り当てます。
逆に、ST-LinkのVCP(仮想COMポート)やオンボードLED/ボタンといった特別な機能に割り当てられている端子は避けます。
| ピン | 競合 or Arduino | 端子機能選択 | 使用目的 |
|---|---|---|---|
| PA0 | Arduino AIN | ADC12_IN1 | 診断用(未定) |
| PA1 | Arduino AIN | ADC12_IN2 OPAMP1_VINP / OPAMP3_VINP |
再構成LPF |
| PA2 | LPUART1がST-LINK VCPに接続 | OPAMP1_VOUT | - |
| PA3 | LPUART1がST-LINK VCPに接続 | OPAMP1_VINM / OPAMP1_VINP | - |
| PA4 | ADC2_IN17 | DAC1_OUT2 | Vmid生成 |
| PA5 | LD2(ユーザーLED) Arduino D13/SPI1_SCK |
DAC1_OUT2 / OPAMP2_VINM | - |
| PA6 | Arduino D12/SPI | OPAMP2_VOUT | 再構成LPF |
| PA7 | Arduino D11/SPI | OPAMP1_VINP / OPAMP2_VINP | 再構成LPF |
| PB0 | Arduino AIN | ADC1_IN15 OPAMP2_VINP / OPAMP3_VINP |
再構成LPF |
| PB8 | Arduino D15/I2C1_SCL | 表示器シールド | |
| PB9 | Arduino D14/I2C1_SDA | 表示器シールド | |
| PC0 | Arduino AIN | ADC12_IN6 | V測定 |
| PC1 | Arduino AIN | ADC12_IN7 | I測定 |
| PC4 | Arduino D1/USART1 | ADC2_IN5 | 表示器シールド(予約) |
| PC5 | Arduino D0/USART1 |
ADC2_IN15 OPAMP1_VINM / OPAMP2_VINM |
表示器シールド(予約) |
| PC13 | USER Button | - |
PC0(ADC1_IN6) / PC1(ADC2_IN7)を V測定/I測定に割り当てることで ADC1+ADC2 の同時サンプリングが成立します。
残りの信号(再構築LPFの別ライン・アナログスイッチ切り替えGPIO・PGAゲイン設定SPI等)は Morphoピンヘッダの方に割り付けます。
OPAMP1の用途:3個ある内蔵OPAMPのうちこれだけは使い道がなく、未使用としています。他機能とのピン競合(OPAMP1_VOUTのPA2ピン)があり、使い道があるとすればADC用バッファとして使う(出力を内部でADCへ接続する設定にすれば外部に引き出す必要が無くなる)のが妥当なので、この必要性が生じた時のためにメモしておきます。
現時点での仮設定ですので、設計を進めると共に見直しを入れます。
マイコンエラッタ情報
ClaudeがSTの製品ページからエラッタを拾ってくれたのでメモします。
今回の使用モードでは関係ないですが、念のため残しておきます。
「非反転PGAモードでは、VINM0に対応するGPIO(PA3/PA5/PB2)で高速エッジの信号があると影響を受けます。外部ゲイン・フォロワーモードでは起きません。反転PGAは対象外ですが、PB2付近に高速デジタルを置かないでください」
事前検討から設計へ
GitHub リポジトリを作る前にプロジェクト名称を決めます。weak-end LCR とします。「弱っちくて終わった(どうしようもない)LCRメーター」というかなり自虐的な想いが込められていますが、weak には今回重視するインサーキットテストを強調する意味合いも持たせています(「週末の電子工作趣味」なので「Weekend」にも掛けています)。
続く。




