ADC(A/Dコンバータ)を選ぶとき、まず目に入るのは「12bit」「16bit」といった分解能の数字です。しかしデータシートを読み進めると、INL、DNL、ENOB、ノイズフリー分解能と、似たような項目が次々に出てきます。
この記事では、これらの疑問をQ&A形式で整理します。
Q1. 分解能と精度は何が違うのか?
A. 分解能は「どれだけ細かく刻めるか」、精度は「測った値が本当の値にどれだけ近いか」です。
体重計で考えると分かりやすくなります。表示が0.01kg単位の体重計は分解能が高いと言えます。しかしその体重計が実際の重さより常に0.5kg多く表示するなら、精度は良くありません。細かく表示できることと、正しく表示できることは別の話です。
ADCでも同じことが起きます。3.3Vを12bitで変換すると、1LSB(最小の刻み)は約0.806mVです。ところが基準電圧が1%ずれていると、フルスケール付近では約33mVの誤差になります。これは約41LSB分です。目盛りは0.8mV刻みなのに、値そのものは33mVずれているという状態です。
Q2. 精度を決めるのは、データシートのどの項目か?
A. 主にオフセット誤差、ゲイン誤差、INL、DNLの4つと、ADCの外にある基準電圧です。
| 項目 | 何のずれか | 校正で消せるか |
|---|---|---|
| オフセット誤差 | ゼロ点のずれ。変換結果の全体が上下に平行移動する。 | 消せる(1点の校正) |
| ゲイン誤差 | 傾きのずれ。入力が大きいほど誤差も大きくなる。 | 消せる(2点の校正) |
| INL(積分非直線性) | 入出力の関係が、理想の直線からどれだけ曲がっているか。 | 難しい(補正テーブルが必要) |
| DNL(微分非直線性) | 1コードの幅が、理想の1LSBからどれだけずれているか。 | 消せない |
| 基準電圧の誤差 | ものさしそのものの長さのずれ。ゲイン誤差と同じ形で現れる。 | 初期値は消せる。温度による変化は残る。 |
オフセット誤差とゲイン誤差は、既知の電圧を入れて補正係数を求めれば取り除けます。一方、INLは入力電圧によって誤差の出方が変わるため、簡単には補正できません。校正できる機器では、最後に残る誤差はINLと温度ドリフトになることが多いです。
DNLが−1LSBに達すると、あるコードの幅がゼロになり、そのコードが決して出力されなくなります。これをミッシングコードと呼びます。
例:Arduino Unoのマイコン(ATmega328P)
ATmega328Pの内蔵ADCは10bitで、INLは0.5LSB、絶対精度は±2LSBとされています。5V基準なら1LSBは約4.88mVなので、±2LSBは約±10mVです。
つまり、4.88mV刻みで値は変わるものの、絶対値として期待できるのは±10mV程度ということです。しかもこの数字には基準電圧の誤差は含まれていません。USBの5Vをそのまま基準にしていれば、誤差はさらに大きくなります。
Q3. ENOB(有効ビット数)とは何か?
A. ノイズと歪みを含めた実測の性能を、「理想的なADCなら何bit相当か」に換算した値です。
理想的なNbitのADCに正弦波を入れたときのSN比は「6.02 × N + 1.76 dB」です。ENOBはこの式を逆向きに使います。
ENOB =(SINAD − 1.76)÷ 6.02
SINADは、信号と「ノイズ+歪み」の比です。実際に正弦波を入力して測定します。
| SINAD | ENOB |
|---|---|
| 74dB | 12.0bit(理想的な12bit ADC) |
| 68dB | 約11.0bit |
| 62dB | 約10.0bit |
12bitのADCでSINADが62dBなら、実力は10bit相当です。下位2bitはノイズと歪みに埋もれていることになります。
注意点が2つあります。ENOBは交流信号での性能なので、入力周波数が高くなると下がるのが普通です。また、オフセット誤差やゲイン誤差はENOBには現れません。ENOBが高くても、絶対値が正確とは限りません。
Q4. ノイズフリー分解能と実効分解能とは何か?
A. 直流を測るときに、ノイズで値がどれだけばらつくかを示す指標です。重量計や温度計のような用途では、ENOBよりこちらを見ます。
入力に一定の電圧を加えても、ADCの出力はノイズで数コードの範囲をふらつきます。このふらつきの大きさから、次の2つを計算します。
- 実効分解能 = log2(フルスケール範囲 ÷ ノイズの実効値)
- ノイズフリー分解能 = log2(フルスケール範囲 ÷ ノイズのピークtoピーク値)
ノイズのピークtoピーク値は、実効値の約6.6倍と見積もるのが一般的です。そのため、ノイズフリー分解能は実効分解能より約2.7bit小さくなります。
たとえばフルスケール5Vで、ノイズの実効値が1µVのADCなら、実効分解能は約22.3bit、ノイズフリー分解能は約19.5bitです。表示がちらつかない桁数に対応するのはノイズフリー分解能のほうです。
Q5. 自分のマイコンのADCの実力は、どう確かめるのか?
A. 一定の電圧を入れて繰り返し測り、値のばらつきを見るのが手軽です。
- 安定した電圧を入力する
乾電池や基準電圧ICなど、ノイズの少ない電圧源をつなぎます。GNDに直結すると、マイナス側のばらつきが0で切られて見えなくなるので、レンジの中ほどの電圧が適しています。 - 1000回以上、連続して測る
- 最大値と最小値の差、標準偏差を求める
- bit数に換算する
実効分解能 = ADCのbit数 − log2(標準偏差[LSB])
ノイズフリー分解能 = ADCのbit数 − log2(最大値 − 最小値[LSB])
たとえば12bitのADCで標準偏差が2LSB、最大と最小の差が13LSBだったとします。実効分解能は11bit、ノイズフリー分解能は約8.3bitです。1回の測定でちらつかないのは、上位8bit程度ということになります。
なお、標準偏差が0.5LSBより小さい場合、この換算は意味を持ちません。ばらつきがADCの刻みより小さく、ノイズを正しく測れていないためです。
この方法で分かるのはノイズだけです。INLやゲイン誤差を調べるには、正確な電圧を何点か入力して、測定値と比べる必要があります。
Q6. 用途別に、どの項目を見ればよいか?
A. 直流を正確に測りたいのか、交流の波形を取りたいのかで、見る項目が変わります。
| 用途 | 重視する項目 |
|---|---|
| 電圧、温度、重量などの直流計測 | オフセット誤差、ゲイン誤差、INL、ノイズフリー分解能、基準電圧の温度ドリフト |
| 音声、振動などの交流計測 | SINAD、ENOB、THD(歪み率)、サンプリング速度 |
| 変化の検出(絶対値は不要) | ノイズ、DNL |
| 校正できない量産品 | 総合誤差(TUE)や絶対精度の最大値、基準電圧の初期誤差 |
まとめ
- 分解能は目盛りの細かさ、精度は本当の値への近さ。bit数が多くても正確とは限らない。
- オフセット誤差とゲイン誤差は校正で消せる。INLと温度ドリフトは残る。
- ENOBは交流でのノイズと歪みを含めた実力。直流ではノイズフリー分解能を見る。
- 手元のADCのノイズは、一定電圧を繰り返し測って標準偏差を見れば確かめられる。
- 基準電圧の誤差はADCの仕様に含まれない。高精度を狙うなら、基準電圧ICの選定も同じくらい重要。
参考資料
- LibreTexts:ATmegaのADCシステム(英語)
- Texas Instruments:ADS1260/ADS1261 データシート(実効分解能とノイズフリー分解能の定義)
- Microchip:ATmega328P データシート


コメント