2.97ドルのADC、どれほどひどいのか?
(excamera.substack.com)- 低価格の ADS1115 ADC モジュールは、公式スペックとほぼ同等の機能を提供
- プログラマブル・ゲイン・アンプ 機能により、微小な電圧領域でも高い測定精度を実現
- 一部の低価格ボードでは、測定速度 と 精度 に誤差が生じる事例を確認
- 簡単な 補正アルゴリズム を適用すると、かなり高精度な結果を導き出せる
- 安価なパーツは製造上の 不良 や コピー品 の可能性があるものの、基本的な用途では大きな問題はない
低価格ADS1115 ADCの実際の性能実験
概要
- 組み込み作業では通常、マイクロコントローラ内蔵の ADC(アナログ-デジタル変換器)を使用する
- 内蔵ADCは安価で高速だが、実効ビット数(ENOB)は 8〜9ビット程度である
- 最近、Texas Instruments(TI) の ADS1115 モジュールのテストを行った
- ADS1115 は最大 16ビット の精度を提供する 外付けADC である
ADS1115の主な特徴
- ダイナミックレンジ 拡張機能により、小さな電圧を測定する際に最大20倍細かく測定できる
- プログラマブル・ゲイン・アンプ(PGA) により、全体の測定範囲を ±6.144 V から ±0.256 V まで調整可能
- 最小LSBは約 7.8 μV(0.256 V ÷ 32768)で、非常に微細な変化も認識できる
- 従来のマイクロコントローラ内蔵ADC(3.3V基準、9 ENOB)の1ステップが約 6mV であるのに比べ、はるかに高い分解能を持つ
- 内部電圧リファレンス を使用するため、RP2040 のように外部アナログリファレンスが必要な MCU と比べて利点がある
価格の問題とテスト環境
- ADS1115 は1,000個単位で Digikey では約 $4、LCSC では $0.60 と価格差が大きい
- Amazon で1個 $2.97 の ADS1115 ブレークアウトボードを購入した(おそらく $0.60 の部品を使用)
- Adafruit の高価な(正規品)ボードも追加購入し、比較テストを行う予定
実際のテスト過程
-
I²CMini と高精度DC電圧ソースを用いて低価格ボードをテストした
-
主な確認ポイント:
- スペックどおりに動作するか
- あるいは、より安価な別部品が ADS1115 と誤認されて販売されていないかを確認
-
テスト結果
- 基本動作と 16ビット出力、プログラマブル・ゲイン・アンプ、さまざまなサンプリング速度 などは TI のデータシートとおおむね一致した
- differential mode で入力を接続したときは常に 0 を測定し、2.5V 入力時には正確に測定、極性を逆にすると反対の値を出力するなど、基本動作に問題はなかった
測定精度と誤差
- Data Rate(サンプリング速度) : TI スペックでは ±10% 以内のばらつきを許容
- 8 SPS モードでは、3枚のボードが 6.5〜7 SPS とやや遅く動作
- 1枚のボードは 300 SPS で完全に誤ったタイミングで動作し、その後のテストから除外
- 高精度電圧(2.50067V)を測定すると 2.4883V を出力、約 12mV / 0.5% の誤差が発生(TI公式スペックより大きい)
- マイクロコントローラで簡単な 線形補正アルゴリズム を適用すると、誤差は 10 μV 以内まで改善された
結論
- 不良品、または正規品より仕様の劣る部品が安価なホビー向け流通網に流れ込んだものと推定される
- 基本的にかなり精密な測定が可能で、ソフトウェア補正だけでも実用上大きな問題はない
- 高価な正規品ボードは追加で入手後、同条件で再テストする予定
まとめ
- 低価格の ADS1115 は、かなり優れたコストパフォーマンスを提供する
- ハードウェア/ファームウェアレベルで 簡単な補正 を追加するだけで、実用的な精度を確保できる
- 不良の問題などを確認するため、購入先と品質管理には注意が必要
1件のコメント
Hacker Newsの意見
低価格品と正規品の部品をどちらも細かい紙やすりで削ってイソプロピルで洗浄し、光学顕微鏡の下に置くと比較しやすい。識別可能なマーキングや金属層まで行かなくても、チップダイの構造的な類似点と相違点をすぐ把握できる。クローン部品はたいてい、プロセスノード、アーキテクチャ、チップサイズなどで大きな違いを見せる。主に機能だけを真似たクローンだからである。紙やすりを使ったローテクな分解方法を勧めており、関連画像も共有している(画像 1 / 画像 2)
私もこうした作業を何度もやった経験があり、主に部品の出所に関する紛争を解決するために使っていた。ほとんどのエポキシパッケージは、沸騰した硫酸/硝酸に溶かせばすぐ除去できる。私の経験では、大半は単なるリラベリング、bin変更、または明白なQC不合格品の偽装であることが多く、しばしばサンプル品でもある。数年前の例示動画もある(動画リンク)
必ずしもクローンとは限らない。元の投稿者が言うように、製造工程で基準未達と判定された製品を再包装して一般流通に流す事例も多い
もしここにタグ機能があるなら、Ken Shirriffがまさに気に入りそうな話題だ。彼のブログ(righto.com)もおすすめ
「安価で比較的高速だが、品質はあまり良くない。12/16ビット出力仕様でも実効ビット数(ENOB)は8〜9程度」という主張には同意しない。最近のMCUなら、外部基準電圧を安定供給し、チップ内の不要なサブシステムを止めるなどの注意を払えば、ENOB 10ビット以上は十分に出せる。もちろん単一のADCが単体ADCほど良い性能ではないが、ADC要件の90%には実際十分使える。より高いビット数が必要なら設計にもっと手間がかかるが、本文の著者が使っている電源やMCUノイズ、RFI管理についての言及がない。これが本当にスペックの低い偽ICなのか、それとも実験環境のノイズが多かったのか判断しにくい
GPIOを2本、1次シグマデルタ・トポロジで外付け抵抗2本、コンデンサ1個、ヒステリシス無効化の状態で構成すると、興味深い結果が得られる。RP2040とLDO電源を使い、差動測定(1チャネルはしきい値ノイズのみを追跡)に使うと、1kHzで16 ENOB、DCではさらに高いENOBが得られた。チップ上で周期的な動作が起きないようにすることが非常に重要で、たとえばランダム間隔のスリープでスペクトルを拡散させる必要がある。USBも-100dB以下のノイズで使えた。DC精度はまだ試していないが、同様のGPIOチャネルを使う場合、CCラインセンシングやアナログジョイスティックなど、非致命的・低精度用途には使える
両者の意見はどちらも正しい可能性がある。元の投稿者は安価なMCU全般を代表して書いたのかもしれず、コメント投稿者はより上位のMCUを念頭に置いているようだ。RP2350の12ビットADCは仕様上9.2 ENOBである。複数サンプルをdecimateすればさらに上がるかもしれないが、データシートは著者の主張の根拠になっている(Raspberry Pi公式ドキュメントへのリンク)。さらに低価格なMCUであるCH32V003は、これよりもADC性能が悪い。逆にSTM32H7シリーズのように、16ビットADCで13+ ENOBを記録するMCUもある。ただしH7はRP2350より10倍以上高価なので、実験用途ではあまり扱われない(STM32H7 ADCアプリケーションノート)
STM32F103開発ボードを何枚か、Siglent SDM3055マルチメータとSiglent SPD330X電源でテストした。チップの12ビットSAR ADCは、レイアウトおよびボード設計の影響が大きかった。最悪のサンプルでも10ビット、最良ではほぼ12ビット相当の効果が確認できた。特別なソフトウェア調整なしでもこの程度で、通信が動作しているときは性能が落ちることがあったが、それ以外では特別なノイズの影響はなかった
(本物の)ADS1115をプロジェクトに使う予定だったが、結局STM32g071を選んだ。価格はより安く、当時は入手もしやすく、柔軟性も高かった。最近のSTM32g/hシリーズのADCは、昔のf103系よりハードウェア/ソフトウェア上のリスク要因が確実に少なくなっている
「その段落では『マイクロコントローラのADCは固定3.3Vレンジなので、9 ENOBは約6mV差』と言っているが、これはすべてのMCUに独立した基準電圧がないかのように聞こえる。しかしNXPを含め、内蔵のプログラマブル基準電圧をサポートするMCUも多い」という点を指摘したかった
「安価な部品の大半は優れたコピー品か、QCを通らなかった失敗品が流通網に入り込んだものだ」という意見について、私が見てきた偽造チップの大半はゴーストシフト(正規勤務時間外の秘密生産)で作られたケースが多かったが、TIはすべてのアナログ製品を自社内で製造しているので、ゴーストシフトやQC不合格品である可能性は低いと思う。個人的には、relabeled ADS1015である可能性が高いと考えている
私に被害を与えた偽物(FDTI、STM32クローンなど)は、直接複製した偽造品が大半だった。在庫過剰、ゴーストシフト、不良品の再包装とは異なり、デジタル・ミックスドシグナル分野でより頻繁に遭遇する印象がある。ちなみにSTM32クローンチップにはスタックドダイのフラッシュがあり、フラッシュ工程を持てないため別途積層して作っているので、パッケージを削るとボンディングワイヤがもう1組ある。このバスを通じて読み出し保護を回避することも可能だ
投稿者だが、私もADS1015をADS1115としてリラベルした事例が報告されていることは知っている。もしADS1015だったなら12ビットで出力が頭打ちになったはずだが、私がテストした部品は確かに16ビットのreadoutを返していた
ADC分野の話や背景に興味がある。実際には低速でしか使ったことがない。MCP3208(SPI)から始めて、8チャネル、100Kサンプル/秒で使っていたが、速度が遅くてより高速なADCが必要になり、ADS7953に変更した。16チャネルで速度も10倍速く、確かに性能が高かった。ただしプログラミングはより難しく、最高速は入力を決められた順序でスキャンしないと出ない。私にはこれらのチップが車のように感じられ、ADS7953はスーパーカー、MCP3208はシンプルなトヨタのようだ。各ADCチップが市場でどう位置付けられてきたのか、どれほど広く使われているのかといった産業史にも興味がある
CERNで、12ビットADCが数十GHzのサンプリング速度を出すプロジェクトを見たことがある。秘訣は並列処理だった。MHz級で動作する12ビットSARユニットを複数複製し、大型のアナログマルチプレクサでラウンドロビン方式に信号を分配していた。チップ面積は莫大に必要だが、高速化は可能だった。こうした極端な方法だけでなく、フラッシュADC(フラッシュADCのWikipedia)や、高精度のためのマルチスロープADC(マルチスロープADCチュートリアル)も使われる。歴史や裏話にも興味がある
AD9226にも触れたい。1チャネルだが12ビットで、最大65MSa/sの速度が出せる。AliExpressで12ドルほどで買い、アナログ映像のソフトウェアデコード実験に使った。私は8ビット、20MSa/s程度でRaspberry Pi ZeroとSMIペリフェラルで使ったが、意外にもボトルネックはデータ転送だった。参考までにそのSMI活用法(iosoft.blogへのリンク)
100Kサンプル/秒という速度は、私の世界ではかなり高速な部類に入る。PLCプログラムで標準の2Kサンプル/秒を10Kまで引き上げる作業ですら、実務的には非常に高性能と見なされる
超高速ADCはマイクロコントローラで直接扱うには難しすぎるので、たいていはFPGAの領域になる。FPGAでADCデータを直接受けて並列バスに変換し、MCUが扱いやすくする必要があるし、超高速転送には多数のピン、手動処理、DMAの必要性が大きく、現実的には難しく感じられる
「12〜16ビットADCがENOB 8〜9程度」という主張とは逆に、SACDで使われた1ビット変換方式(毎秒数百万サンプル)は、120dBのダイナミックレンジと約100kHzの帯域幅を実現している。CD(16ビットPCM)は96dB、20kHz帯域である。アナログハードウェアの複雑さという観点では、1ビット/ビットストリーム変換器のほうがはるかに単純だ。16ビットADCが安価なのも大量生産によるところが大きい。実際、ビット深度をサンプリング速度で置き換える方式はかなり魅力的で、3DグラフィックスでSSAAがより多くのピクセルをサンプリングして高周波情報を得るのと似ている(1ビットDACのWikipedia、Direct Stream DigitalのWikipedia)
3ドルのADCは安くない。本当に低価格なADCは、低価格MCUに内蔵されているものだ。TIも意図的に10/12ビットに制限されたAES/ADCを安く売っているが、実際の線形性は16ビット以上あることも多い。欠陥品と良品の生産コスト差はほとんどない。半導体プロセスが同じで設計さえ堅実なら、低価格ADCでも性能が特別劣るわけではない
LCSCがTIなどから直接大量購入して低マージンで販売しているため安い可能性がある。LCSCでクローンチップを見たことはあるが、大半はブランド名を変えて販売されていた
価格が安いからといって、必ずしも品質が低いとは限らない。高精度ADCは高いサンプル速度が不要なら、信号処理技術のおかげで実装が容易で、デルタシグマやランプ型ADC方式では、パターンホールド回路と単一ビットだけでも高精度測定が可能だ。ただし時間はかかる。16ビット100MHzのフラッシュADCが欲しいなら、家を担保に入れたくなるほど高価になるかもしれない
たいていの企業は地域別の価格政策を持っている。たとえば私のSpotifyサブスクリプションは米国比で約60%の価格だ。電子業界にも中国専用の価格表が別にある。ちなみに西側の公式リスティング価格は最大上限にすぎず、実際には小規模プロジェクトでも営業に直接連絡すれば割引価格を得られることがある
実際、3ドルのADCはそれほど安い部品ではなく、製造コストの安い国ではもっと安く買える。結局重要なのは、工場テスト時に製品が正しく動作し、製品ごとのテストジグが提示した条件を通過できるかであり、実際にはそれで十分なことが多い