抵抗分圧の誤差:許容差と負荷で、設計値からどれだけずれるか
R1 と R2 で分圧すれば電圧は R2/(R1+R2) 倍になる、というのは計算上の話です。実物は抵抗の許容差、後段の入力抵抗、温度、そして ADC のサンプリング容量で、設計値から数 % ずれます。ADC の分解能より大きな誤差を、分圧で作っていないか確認します。
±1% の抵抗 2 本で、分圧比は最悪 ±2%
分圧比 R2 ÷ (R1 + R2) の誤差は、R1 と R2 が逆方向にずれたときに最大になります。R1 が +1%、R2 が −1% なら分圧比は下がり、その逆なら上がります。
R1 = R2(1/2 に分圧)の場合、0.99 ÷ (1.01 + 0.99) = 0.495 で、設計値 0.5 に対して −1%。R1 = 9·R2(1/10 に分圧)の場合、0.99 ÷ (9.09 + 0.99) = 0.0982 で −1.8%。分圧比が小さいほど、誤差は ±2% に近づきます。式で書くと、分圧比の相対誤差 ≒ ±(R1 の許容差 + R2 の許容差)× R1 ÷ (R1 + R2) です。
12 ビットの ADC の 1LSB はフルスケールの 0.024% です。分圧比の誤差 2% は 82LSB に相当します。ADC の精度をいくら上げても、前段の分圧で 2% ずれていれば、絶対精度はその程度です。
対策は 3 つです。許容差 0.1% の抵抗を使う(分圧比 ±0.2%)。製造時に校正する(既知の電圧を入れて分圧比をファームウェアに記憶)。絶対精度が要らない設計にする(しきい値判定など、相対的な変化だけを見る)。0.1% 抵抗は 1% の数倍の価格ですが、校正工程を持つよりは安いことが多いです。
| 抵抗の許容差 | 分圧比の最悪誤差 | 12 ビット ADC での LSB 換算 |
|---|---|---|
| ±5% | ±9.0% | ±370LSB |
| ±1% | ±1.8% | ±74LSB |
| ±0.5% | ±0.9% | ±37LSB |
| ±0.1% | ±0.18% | ±7LSB |
後段の入力抵抗が、R2 に並列に入る
分圧の出力に何かをつなぐと、その入力抵抗 RL が R2 に並列に入り、分圧比が下がります。R1 = R2 = 100kΩ の分圧に RL = 1MΩ をつなぐと、R2 ∥ RL = 90.9kΩ、分圧比は 90.9 ÷ 190.9 = 0.476 で −4.8%。1% 抵抗の誤差より大きいです。
誤差を 0.1% 以下にするには、RL を R2 の 1000 倍以上にする必要があります。R2 = 100kΩ なら RL = 100MΩ で、オペアンプのバッファを入れる領域です。逆に、R2 を RL の 1/1000 にする方法もあります。RL = 1MΩ なら R2 = 1kΩ で、R1 = 9kΩ。分圧に流れる電流は増えます(後述)。
ADC の入力は少し特殊です。SAR 型 ADC の入力は、サンプリング時にコンデンサ(数 pF〜数十 pF)を分圧の出力に接続します。直流的な入力抵抗は高いのですが、サンプリングの瞬間にコンデンサを充電する電流が流れ、分圧の出力インピーダンス(R1 ∥ R2)が高いとサンプリング時間内に充電しきれず、低めの値が読めます。マイコンのデータシートには「サンプリング時間 x µs に対して入力インピーダンス y kΩ 以下」という表があり、分圧の R1 ∥ R2 をそれ以下にするか、分圧の出力に 10〜100nF のコンデンサを置いて充電電流を供給します。
分圧の出力に置いたコンデンサは、サンプリングの電荷を供給するだけでなく、R1 ∥ R2 との RC でノイズをフィルタします。時定数が大きいと入力電圧の変化に追従しなくなるので、応答速度とのトレードオフです。
消費電力と電圧定格:高い電圧を分圧するとき
48V を 1/10 に分圧して 4.8V にする場合、R1 = 90kΩ、R2 = 10kΩ なら電流は 0.48mA、R1 の消費電力は 0.48mA² × 90kΩ = 21mW で問題ありません。しかし R1 = 9kΩ、R2 = 1kΩ にすると電流は 4.8mA、R1 の消費電力は 207mW です。1608(0603)の定格 100mW を超え、3216(1206、250mW)でもディレーティングを考えると足りません。
電圧定格も見落としがちです。チップ抵抗には最大使用電圧があり、1005 で 50V、1608 で 75V、2012 で 150V、3216 で 200V が一般的です。抵抗の両端電圧が定格を超えると、抵抗値に関わらず使えません。100V を分圧する R1 に 1608 を使うと、両端に 90V かかって定格 75V を超えます。2012 以上にするか、R1 を 2 本直列にして電圧を分けます。
高電圧の分圧では、R1 を 2〜3 本直列にするのが定石です。電圧定格と消費電力の両方を分散でき、1 本が短絡故障しても出力電圧が跳ね上がる量を抑えられます。
温度係数は「比」で効く
一般的なチップ抵抗の温度係数は ±100〜200ppm/℃ です。50℃ の温度変化で最大 ±1% 変わります。ただし分圧比に効くのは R1 と R2 の温度係数の差で、同じシリーズ・同じ材質の抵抗なら温度係数も近く、両方が同じ方向に動くので比はあまり変わりません。
問題になるのは、R1 と R2 で違う種類の抵抗を使ったとき(厚膜と薄膜、サイズ違い)と、R1 だけが自己発熱で温度が上がるとき(高電圧の分圧)です。0.1% 抵抗を使うなら、温度係数も ±25ppm/℃ 以下の薄膜抵抗を R1・R2 で揃えます。
精度を追い込むなら、R1 と R2 が 1 パッケージに入った分圧用の抵抗ネットワーク(比の精度 ±0.05%、温度係数の差 ±5ppm/℃ など)があります。単体の 0.1% 抵抗より比の精度が高く、温度も同じになります。
高抵抗にしたときのノイズと漏れ
消費電力を下げようと R1 = 1MΩ、R2 = 100kΩ のような高抵抗にすると、別の問題が出ます。
熱雑音。抵抗は √(4kTRB) の雑音電圧を持ち、100kΩ で 40nV/√Hz、帯域 10kHz で 4µVrms です。12 ビット ADC の 1LSB(3.3V フルスケールで 0.8mV)に比べれば小さいですが、16 ビット(50µV)では効き始めます。
基板の漏れ電流。フラックス残渣や湿気で基板表面の絶縁抵抗が下がると、R2 に並列に数十 MΩ〜数百 MΩ が入ります。R2 = 100kΩ に 100MΩ が並列なら 0.1% の誤差で、高精度の分圧ではこれが見えます。
入力バイアス電流。後段がバイポーラ入力のオペアンプや、ADC の入力リーク電流(1µA 程度のものもある)だと、R1 ∥ R2 = 90kΩ に 1µA で 90mV の誤差です。CMOS 入力(数 pA)なら無視できます。
ノイズの誘導。高インピーダンスのノードは外来ノイズを拾います。分圧の出力にコンデンサを置いてインピーダンスを下げるか、配線を短くします。
分圧の電流は 10µA〜1mA の範囲に収めると、これらの問題と消費電力のバランスが取れます。3.3V を分圧するなら合計 3.3kΩ〜330kΩ です。
よくある質問
分圧比を正確にするなら、抵抗は何 % のものを使えばよいですか。
分圧の出力をそのままマイコンの ADC につないでよいですか。
48V を分圧する R1 に 1608 の抵抗を使ってよいですか。
抵抗を高くすると省電力になりますが、上限はありますか。
参考にした規格・資料
- IEC 60115-8 — チップ抵抗の定格電力・最大使用電圧・温度係数の規定
- 各マイコンメーカのデータシート/リファレンスマニュアル — ADC の入力インピーダンスとサンプリング時間の関係、入力リーク電流
- Analog Devices, MT-004: The Good, the Bad, and the Ugly Aspects of ADC Input Noise — ADC 前段のノイズと分解能の関係