USB910A rev2 を作ってみた。ノイズ対策をしたつもりだったので、微小電圧を測定してみた。
33 mV を測定してみる
3.3V の VCC を 10KΩと 100Ωで分圧し 33mV にして 220 uF ほどのコンデンサで安定化しておく。
これを 差動入力の機能で測定するとどうなるか?
これがその結果

AIN1/AIN2 , AIN5/AIN6 と名前を付けた 2組の 差動入力で、どのような値になるか見たもの。BIN は、両極動作。0 のところの線は、通常モードで、逆電圧を測定したときの値。
± 50mV しか測定できないのだが、ノイズがすごい。
拡大したのが、これ

34 mV 弱が中央値のように見えるが、± 3mV ぐらいぶれている。3 回測定して、真ん中の値を選ぶようにしているのだが、それぐらいでは全然だめらしい。
データシートを良く見たら、ADC と共用のピンを出力にする場合は、ADC の測定中は ON/OFF するなと書いてある。なるほどその通りだろう。しかし、ATtiny861 は ADC のピン数が多く どれかを USB の信号線に割り当てなければならない。USB は 1ms 毎にフレームが来るので ON/OFF しないこともできない。
困ってしまったのだが、64 回!測定して平均を取ってみたら次のようになった。

なんか良いかんじだ。拡大してみると ...

こんなふうになった。値が 2 組に分かれているのがわかる。上が 通常モード、下が BIN モード。PIN によらず 1mV 弱の差があるようだ。ノイズは ± 0.5mV にだいたい入るようになった。
64回も測定するのにどれぐらい時間がかかるか計算してみる。ADC クロックは 12MHz/64 = 187kHz 。1回に 13 クロックかかるのを 64回行っているので、225 Hz 。テスター機能と割り切れば使えないことはないだろう。
0V を測定してみる
では、0V を測定したらどうなるのか。一般にオペアンプによる差動入力は 同相入力の問題があって、0V 付近や VCC 付近は最も厳しい条件になる。ほんとうに rail-to-rail でないと正しい測定値は得られない。
参考:電子回路の豆知識

なんだか幅がある。拡大すると ..

明らかに 2 つに分かれる。BIN モードでは全部 - 0.5mV ぐらい。通常モードでは、(逆電圧でも) + 0.5mV ぐらいになった。
これでも結構すばらしいのではないか。自分でオペアンプを使って組んでもこういうふうにはなかなかできない...と思う。
ちなみに、VCC 付近も 大丈夫なはず。( 電流計機能として確認)
0V を測定してみる 2
最小のレンジでは、微妙にオフセットがあることがわかった。他のレンジではどうなるのだろう?
サポートしているレンジ全部調べてみた。





レンジが大きいほどオフセットの差が大きい。最大 3300mV の場合、その差は、40mV ほどになった。でも、レンジが 66 倍違うから精度に見合った誤差ということになる。
そして、PIN に関係なく、通常モードと BIN モードに差があるのは、どのレンジでも同じ。
こういう傾向があるとわかれば、多少精度を上げられるかも知れない。
33 mV を測定してみる 2
ついでなので、33mV がどうなるかも調べてみた。





ちょっと予想と違う。3300mV と 1650mV のレンジの特性をどのように解釈したらよいのだろう。