世界を動かす技術を、日本語で。

$2.97のADCはどれほど悪いのか?

概要

  • マイコン内蔵ADC の限界と ADS1115 の特徴比較
  • ADS1115の高精度 とプログラマブルゲインの利点
  • 価格差 と流通経路による品質の疑問
  • 実際の 精度テスト 結果とその考察
  • 安価品の正体 と今後の検証予定

マイコン内蔵ADCとADS1115の比較

  • マイコン内蔵ADC はコストが安く、速度も十分だが、 実効ビット数(ENOB)は8~9ビット程度
  • ADS1115 はTexas Instruments製の専用ADCで、 16ビットの精度 を謳う
  • ADS111xシリーズ は小振幅電圧の測定で 20倍のダイナミックレンジ を実現可能
  • プログラマブルゲインアンプ(PGA) により、 ±6.144V~±0.256V まで測定範囲を調整可能
  • 最小LSBは約7.8μV (0.256V ÷ 32768)、マイコンADC(3.3V範囲・9ビットENOB)では約6mV
  • 内部基準電圧 を持ち、RP2040のような 外部リファレンス不要

ADS1115の価格差と流通事情

  • Digikeyで1K個購入時は約$4LCSCでは$0.60 という大きな価格差
  • Amazonのブレークアウト基板 は4個まとめ買いで1枚あたり$2.97、 LCSC等の安価パーツ使用の可能性
  • Adafruit製ブレークアウト も注文、こちらは高額な正規品想定

実際のADS1115テスト結果

  • I²CMiniと高精度DC電圧源 でADS1115を検証
  • スペック通り動作 :16ビット出力、PGA機能、8~860サンプル/秒の可変レート
  • 差動モードテスト :2入力短絡でゼロ、2.5V差動入力で正確な値、極性反転も正しく動作
  • データレートのばらつき :3個はやや遅め(6.5~7サンプル/秒)、1個は異常に速い(300サンプル/秒)
    • 明らかにタイミングが壊れている個体も存在

精度の詳細と考察

  • 校正済み2.50067V入力 に対し、ADS1115は2.4883Vを出力(12mV誤差、0.5%差異)
  • TIデータシートの仕様 より大きな誤差だが、 MCU側で線形補正 すれば10μV以内の高精度実現
  • 安価品の正体 は良質なコピー品、または不合格品が流通している可能性

今後の検証とまとめ

  • Adafruitの正規品 到着後、同様のテストを実施予定
  • 価格差4倍 の価値があるか検証継続
  • 安価なADS1115 は用途によっては十分実用的
  • 高精度が必要な場合は補正や正規品選択が重要
  • 今後の報告 にも期待

Hackerたちの意見

比較するのは簡単だよ。安物とちゃんとしたやつ(同じ日付コードのやつ)を細かいサンドペーパーで削って、イソプロピルで掃除して、光学顕微鏡の下に置けば、ダイがどれだけ似てるか違うかがわかる。マークとか見なくても、同じ金属層まで削らなくても大丈夫。クローンは技術ノードやアーキテクチャ、ダイサイズが全然違うことが多いからね。基本的に機能的なクローンであって、マスククローンじゃないから。 (それと、探求作業における低技術のサンドペーパー技術に感謝を込めて、ここに削ったRP2350をクタクタのSEMの下に置いた写真を載せておくね。)

クローンじゃないかもしれないよ。著者が言ってたように、スペックの許容範囲を外れた生産ラインのアイテムがテストされて、オフラベルで再販された可能性もある。

これ、いろんな場面でやったことあるけど、主に調達のトラブル解決のためだね。沸騰した硫酸や硝酸に溶かすと、大抵のエポキシパッケージはすぐに処理できると思う。主に見てきたのは、ラベルの誤りや再梱包、明らかにQCの不合格品を流すことだね。昔の例だけど、これ見てみて: https://www.youtube.com/watch?v=e6DfBuPwAAA

ここで誰かにpingできるか分からないけど、これはケン・シリフにぴったりな話だね。 1. https://righto.com

安いパーツはどうなってるの?私の推測では、これはかなり良いコピーか、何らかの理由でホビストの供給チェーンに入ってしまった不良品だと思う。私が見た偽造チップの大半はゴーストシフトから来てたけど、確かTIはアナログ部品を自社で製造してるから、ゴーストシフトの部品や不良QCのものじゃないと思う。多分、ラベルが変わったADS1015だと思う。

面白いね、私に影響を与える偽造品(例えばFTDIやSTM32のクローン)は、余剰在庫やゴーストシフト、パッケージの不良品じゃなくて、ゼロから開発された純粋なクローンばかりだった。デジタルとミックスシグナルで分かれてて、それぞれ違う問題があるのかもね?(ちなみに、私が見たSTM32のクローンはフラッシュがスタックダイになってて、フラッシュも作れない技術で製造されてたから、パッケージを削ってボンディングワイヤーの追加セットを探せば簡単に偽造品とわかるよ。内部フラッシュバスにアクセスするのも面白いし、リードアウト保護をバイパスしたい時に便利だよ :))

ここで著者です。これについては考えたよ。他の人たちがADS1015がADS1115としてマークされてるのを報告してるからね。もしADS1015なら、読み出しは12ビットで切り捨てられるはずだ。これらの部品は確実に16ビットの読み出しを提供してる。

価格差は、LCSCがTIや似たようなところから大量に仕入れて、ボリュームが大きいから低いマージンで売ってるからだと思う。「クローン」チップはLCSCで売ってるのを見たけど、別のブランド名でリストされてた(残念ながら、記憶からは思い出せない)。

LCSCでの注文で大きな問題はなかったよ。結構いろいろ買ってるし。

これらは安くて、比較的速いけど、特に良いわけじゃない。12ビットや16ビットの読み出しができるって聞こえはいいけど、実際のビット数(ENOB)は大体8か9くらいだと思う。現代のMCUにはちょっと合わないんじゃないかな。通常は10ビット以上は引き出せるけど、非常に安定した外部基準電圧を提供したり、チップの不要なサブシステムをシャットダウンしたりする必要がある。スタンドアロンのADCにはまだ及ばないけど、ADCが必要な90%のことには実際に使えるレベルにはなってる。もっとビットが必要な場合は、設計にもっと色々入れないといけないから、この記事にはちょっと疑問を感じる。著者が使ってるPSUやMCUのノイズ、RFIの管理について何も書かれてないから、ここでの発見がスペックが悪いクローンデバイスなのか、彼のオーバーヘッドLEDランプが多くの干渉を引き起こしてるのかはわからない。

いくつかのSTM32F103開発ボードを試してみたんだけど、SiglentのSDM3055マルチメーターとSPD330X電源を使ったよ。チップは12ビットのSAR ADCを搭載してる。レイアウトとボードデザインはすごく重要だったけど、最悪のボードでも10ビット分はあったし、最高のボードはほぼ12ビットの効果があった。ソフトウェア側ではあまり手を加えてなくて、シリアル出力が一つ動いてるだけだった。悪いボードではシリアルが影響したけど、良いボードではほとんど影響がなかった。

お二人とも正しいかもしれないね。著者は、許容できるADC性能を目指した低コストのMCUを考えているかもしれないし、あなたたちはすべてのMCU、特に高コストのものを考えているかもしれない。RP2350は12ビットADCで9.2 ENOBを持ってる。確かに、複数のサンプルをデシメートしてビット数を増やすことはできるけど、スペックシートは著者の主張を支持してるよ(https://www.raspberrypi.com/documentation/pico-sdk/hardware....)。CH32V003のような、さらに性能が悪い低コストのMCUもある。一方で、STM32H7シリーズのように、16ビットADCで13ビット以上のENOBを出せるMCUも確実にある。これはすごいけど、H7のMCUはRP2350の約10倍の価格だから、著者があまりいじることはないかもね。 https://www.st.com/resource/en/application_note/dm00628458-g...

自分だけじゃないと思って嬉しい。最後の「固定の3.3V範囲を持つマイクロコントローラーのADCと比較してみて:9 ENOBステップは約6mV」という段落も、供給電圧から独立したアナログリファレンスを持つMCUはないって示唆してるけど、全然そんなことないよ。実際、NXPにはプログラム可能なリファレンスを内蔵したものがいくつかあるからね。

プロジェクトで(正規の)ADS1115を使う予定だったけど、結局STM32G071にしたよ。こっちの方が安かったし、当時は調達もしやすかったし(驚くことに)、ずっと柔軟だった。新しいSTM32G/HシリーズのADCは、古いF103とかよりもハードウェア/ソフトウェアのトラブルが少ないよ。

うーん、3ドルって、ADCにしては結構高いよね。実際にモノを作れる国のBOM担当者なら、もっと安く手に入れられるんじゃないかな。ちゃんと動くの?工場テストでデザインが電源入って、君のリグが考えてることをクリアできるなら、うん、ちゃんと動くよ。

ボードに数十個や数百個のコンポーネントがあると、これらの数字はすぐに積み上がるよね。3ドルの部品がボード上で最も高価なアイテムの一つになることもある!もし消費者に20ドルで何かを出荷しようとしてるなら、ケース、パッケージ、送料、小売マークアップ、利益を考えると…これは大きな価格差だよね。それに、もっと重要なのは、メーカーのデータを信頼できるなら、テストリグがずっとシンプルで安くなるってこと。もちろん、いくつかのサンプル(たぶんDigikeyの部品を使ったプロトタイプ)を送って、環境試験室で熱画像を使って長期テストを行ったり、4週間にわたって毎秒ボタンを押す耐久テストリグを作ったり、何でも好きなことをしてもいいけど…でも、その後、TIが-40から+125で大丈夫って言ったら、かなりのエッジケースについては彼らを信じることになるよね。テストできるものは100%テストした方がいいよ。室温で電源入れて、一度動作確認するのは大事だけど、それがすべての公表された環境条件で実際の性能を保証するわけじゃないからね。

ADCの世界についてもっと知りたいな。ADS1115を使ったことがあるけど、すごく遅い速度でしか成功したことがないんだ。今のプロジェクトでは、SPI経由でMCP3208を使い始めたんだけど、8チャンネルしかないし、遅い(100Kサンプル/秒)。もっと速いものが欲しくてADS7953に切り替えたんだ。16チャンネルあって、10倍速いよ。ちょっとコーディングが複雑になるけど、入力を予測可能な順番でスキャンしないと最高のサンプルレートは出せない。でも、めっちゃ速いよ。これらのチップは車に例えられる気がする。ADS7953はフェラーリみたいで、MCP3208はトヨタみたいな感じ、使いやすいけどパフォーマンスはイマイチ。これらのADCチップの種類がどうやって生まれたのか、業界の背景を知りたいな。どれくらい広く使われてるのか(何百万?何十億?)。

もっと速いものが欲しくてADS7953に切り替えたんだ。16チャンネルあって、10倍速いよ。CERNで、数十GHzでサンプリングできる12ビットADCチップを設計するプロジェクトについて読んだことがあるんだけど、どうやって実現したのか不思議だったんだ。結局、プログラマーがやることと同じだった。並列処理だね。12ビットのSARユニットをMHzレートで動かして、それを何回もクローンしたんだ。で、信号をアクティブなADCユニットにラウンドロビン方式でルーティングするために大きなアナログマルチプレクサを前に置いてた。これにはかなりのチップ面積が必要で、アナログマルチプレクサも慎重に設計しないといけない。スピードを上げるためのシンプルなアプローチとしてはフラッシュADC[1]があって、これはちょっと強引なやり方だね。精度に関してはマルチスロープADC[2]がよく使われるのは知ってるけど、歴史についてはあまり知らないから、もっと知りたいな。面白い話がたくさんありそう。

ADS7953はフェラーリみたいで、MCP3208はトヨタみたいな感じ、使いやすいけどパフォーマンスはイマイチ。AD9226はどう?チャンネルは1つだけだけど、12ビットで最大65MSa/sまでできるよ。アナログビデオのソフトウェアデコーディングを試すために、AliExpressで約12ドルでモジュールを買ったんだ。実際には20MSa/sでしか動かしてないし、データをラップトップに取り込む速度が限界だから8ビットしか使ってないんだ。Raspberry Pi Zeroに接続して、ここに書いてあるSMI周辺機器を使ってるよ: https://iosoft.blog/2020/07/16/raspberry-pi-smi/

超高速ADCはマイコンで扱うのがすごく難しいよ。これは主にFPGAの領域だね。ピンを切り替えて、ADCからデータを吸い上げて、マイコン用にフレンドリーな並列バスで提供する(USBC→FTDIの並列インターフェース)。たくさんのピンを切り替える必要があるから、そうしないとデータが出てこない。手動の作業が多いと、DMAに優しくないし、高速な処理にはDMAが必要なんだ。

ほとんどの会社は地域ごとの価格リストを持ってるよ。私のSpotifyのサブスクリプションは、アメリカの同じプランの約60%の価格(2200 HUF対11 USD)だよ。電子機器業界では、中国用の別の価格リストがみんなある。ちなみに、西側のリスト価格はあくまで目安の数字だしね。小規模なプロジェクトでも、営業担当と話し始めると割引価格になることが多いよ。

$3のADCは安いADCじゃないよ。安いADCは、安いMCUに組み込まれているものだ。最近、TIは10/12ビットに人工的に制限された安いADC/DACを売ってるけど、直線性は16ビット以上あるんだ。悪いものと良いものの生産コストはあまり変わらないよ。同じ半導体プロセスを通るからね。基本設計がしっかりしていれば、安いADCでも性能は悪くならない。

もしこれが正規のTI部品なら、ユーザーによる測定エラーの可能性が高いと思う。$0.60でも$4でも関係ないよ、それは記事に書いてあった注文サイズによるものだから。

ADCがコーヒー一杯より安いなら、何が本当に中に入ってるのかを知るためにサンドペーパーが必要かもね。