使っている式

充電  V(t) = Vf · (1 − e^(−t/τ))
放電  V(t) = V0 · e^(−t/τ)
電流  I(t) = (V/R) · e^(−t/τ)
τ = R · C

到達時間  t = −τ · ln(1 − V/Vf)     (充電)
整定時間  t = τ · ln(2^bit)

到達率と時定数の対応

到達率時間
63.2%
90%2.30τ
95%3.00τ
99%4.61τ
99.9%6.91τ

「5τ でほぼ充電完了」とよく言われますが、5τ でも 0.67% 残っています。12bit ADC の 1LSB は 0.024% なので、5τ では全く足りません。

ADC の整定時間はビット数で決まります

最終値との差が 1LSB 以内、つまり 1/2^bit 以内に入る条件は次のように解けます。

e^(−t/τ) ≤ 1/2^bit
t ≥ τ · ln(2^bit)

10bit → τ × 6.93
12bit → τ × 8.32
16bit → τ × 11.09

マルチプレクサでチャンネルを切り替えた直後は、入力容量とソースインピーダンスで決まる RC が立ち上がります。ここを待たずに読むと前のチャンネルの値が混ざります。 ソースインピーダンスが高いほど待ち時間が伸びるので、分圧の出力インピーダンスと合わせて確認してください。

充電では必ず半分のエネルギーが熱になります

電源からコンデンサを抵抗経由で充電すると、電源が供給するエネルギーは CV²、 コンデンサに蓄えられるのは ½CV² です。差の ½CV² は抵抗値によらず必ず抵抗で熱になります。抵抗を小さくすれば速く充電できますが、失うエネルギーは同じです。

これが大容量コンデンサの突入電流対策で、抵抗を入れても損失が減らない理由です。 損失を減らしたいならスイッチング(インダクタを使う)しかありません。

含んでいない要素

  • コンデンサの ESR と漏れ電流
  • 誘電体吸収。放電後に電圧が少し戻る現象で、サンプルホールドでは誤差になります
  • 容量のばらつき。電解コンデンサは −20〜+80% のものもあります
  • 直流バイアスによる容量低下。セラミックの高誘電率系(X5R、Y5V など)は 定格電圧付近で容量が半分以下になることがあり、実測とずれる最大の原因です
  • スイッチのオン抵抗、配線抵抗