HX711 (1)

「重量計」への応用を主な用途とする 24 ビット ADC、「HX711」 (AVIA Semiconductor) を使ってオーディオ用 DAC の特性を測定してみました。
HX711 は「ひずみゲージ」を使った「ロードセル」に適した入力レベルとなっていて、電源電圧 5 V、内蔵 128 倍アンプ使用で ±20 mV フルスケールです。
出力振幅が電源電圧の 1/2 程度あるオーディオ用 DAC を測定するには、ノイズの点で不利ですが、出力信号を数十分の 1 に減衰させてから HX711 に入力する必要があります。
ロードセル用の外部回路を実装した「モジュール」も販売されていますが、どうせ外部回路は変更するので、HX711 チップ単体 (aitendo で単価 100 円) を使いました。
「ピッチ変換基板」

SOP16ピン(1.27mm)DIP変換基板 金フラッシュ: パーツ一般 秋月電子通商-電子部品・ネット通販

と、「細ピンヘッダ」

細ピンヘッダ 1×40 アソートパック (10本入): パーツ一般 秋月電子通商-電子部品・ネット通販

を使って、300 mil 幅 16 ピン DIP として扱えるようにしました。 写真を下に示します。

幅がギリギリなので、手ハンダでは「不細工」にしかできませんでした。
実際に DAC の特性を測定する前に、ADC に信号を入力しない状態でのノイズの影響を調べました。
測定回路を下に示します。

この測定では、Arduino (互換ボード) の「ブレッドボード・シールド」上に回路を組み、HX711 の出力データは Arduino で読み出し、シリアル経由でホスト PC に送っています。
Arduino 全体および HX711 を 3.3 V 電源で動作させ、HX711 内蔵のレギュレータは使用していません。
INA / INB のコモンモード電圧は下限が
(AGND + 1.2) V = 1.2 V、
上限が
(AVDD - 1.3) V = (3.3 - 1.2) V = 2.0 V
なので、この範囲内に入る電圧として 1.8 V を与えています。
無信号入力時の ADC 出力を 8 K (8192) サンプル収集し、FFT を掛けたものを下に示します。
ノイズが少なかった Ch. B の内蔵アンプ (32 倍固定) の場合のみ示します。

RATE 入力を「0」にすると 10 sps (sample per second) のサンプリング・レートとなります。
ノイズ・レベルは高域になるにしたがって減少していて無相関ではなく、隣接するサンプル間に相関があることが分かります。
HX711 のデータシートにも、RATE = 0 の場合はセトリング・タイム 400 ms と記されており、つまり、4 サンプル分は過去の入力の影響が残ることを示しています。
そのため、隣接する N 個のサンプルを平均しても、改善されるノイズ量の割合は「中心極限定理」で示される 1/\sqrt{N} に及ばないことが予想されます。
RATE 入力を「1」にして 80 sps のサンプリング・レートとした場合の結果を下に示します。

RATE = 0 の場合と比べて、約 10 dB 悪化しています。
設定可能な 3 種のゲインについてノイズの分散、標準偏差を求め、有効ビット数を計算して表にしたものを示します。

条件 標準偏差
[LSB]
有効ビット数
Ch.B 32x
RATE=0
9.72 18.9
Ch.B 32x
RATE=1
31.5 17.2
Ch.A 64x
RATE=0
53.3 16.5
Ch.A 64x
RATE=1
62.9 16.2
Ch.A 128x
RATE=0
109.6 15.4
Ch.A 128x
RATE=1
116.4 15.3

Ch. B 32x、RATE = 0 の場合が最も有効ビット数が多く、18.9 ビットとなっており、16 ビット DAC の評価には使えそうです。
Ch. A 64x / 128x の場合には RATE = 0 / 1 での有効ビット数の変化が少ないのに対し、Ch. B 32x では RATE の値により大きく有効ビット数が変化しています。
Ch. A 側は「INA-」入力ピン (7 番ピン) の隣が「直流出力」である「VBG」ピン (6 番ピン) なのに対し、Ch. B 側は「INB+」入力ピン (10 番ピン) の隣が (信号周波数に比較して) 「高速クロック」である「PD_SCK」ピン (11 番ピン) であることが影響しているのかも知れません。