ADCをカスケード接続してより高い分解能を実現


11

12ビットADCのペアがあると仮定すると、カスケード接続して24ビット以下の出力を得ることができると想像できます。

おそらくクロスオーバー領域に多少の歪みがあるでしょうが、私は単に一方を正の範囲に使用し、もう一方を負の範囲に使用することを考えることができます。(私たちが無視できるのは、いくつかのエラービットであるか、またはおそらく、0ボルト付近の値を測定するために3番目のADCを配置します)。

私が考えていたもう1つのオプションは、単一の高速ADCを使用し、基準電圧を切り替えて低速でより高い分解能を得ることです。また、1つの固定参照ADCを使用して実数値の結果を取得し、その間でより正確な値を取得するためにセカンダリコンバーターの領域を切り替える方法も必要です。

コメントや提案は大歓迎です。

クワッド8ビット(またはデュアル12ビット)チップは、シングル24ビットチップよりも安価だと思います。


2
はい、それは理論的には可能であり、実際のケースの0.01%では、部品の「ビット数の効果」が「ビット数のデータ」に等しく、残りの仕様は5桁の精度に適合しています。これは99.99%の部品には当てはまりません。

4
1つを正の電圧に使用し、もう1つを負の電圧に使用すると、13ビットしか得られません。それらをカスケード接続するには、DACとアンプが必要です。信号を直接変換し、その値をDACに書き込み、入力信号からDAC出力を差し引きます。次に、信号をで増幅し、2番目のADCに送ります。212
コナーウルフ

回答:


11

あなたの質問にはたくさんあります。1つずつ見ていきましょう。

12ビットADCのペアがあると仮定すると、カスケード接続して24ビット以下の出力を得ることができると想像できます。おそらくクロスオーバー領域に多少の歪みがあるでしょうが、私は単に一方を正の範囲に使用し、もう一方を負の範囲に使用することを考えることができます。(私たちが無視できるのは、いくつかのエラービットであるか、またはおそらく、0ボルト付近の値を測定するために3番目のADCを配置します)。

そうではありません-13ビットの解像度になります。12ビットコンバーターの動作は、4096ビン(2 ^ 12)の入力電圧のどれであるかを決定するものとして説明できます。2つの12ビットADCは、8192ビンまたは13ビットの解像度を提供します。

私が考えていたもう1つのオプションは、単一の高速ADCを使用し、基準電圧を切り替えて低速でより高い分解能を得ることです。

実際、これが逐次近似コンバーターの動作方法です。基本的に、1ビットコンバーター(別名コンパレーター)は、逐次比較アルゴリズムに従って変動する基準電圧を生成するデジタルアナログコンバーターと共に使用され、電圧のデジタル化されたサンプルを取得します。SARコンバーターは非常に人気があり、uCのADCのほとんどはSARタイプです。

また、1つの固定参照ADCを使用して実数値の結果を取得し、その間でより正確な値を取得するためにセカンダリコンバーターの領域を切り替える方法も必要です。

実際には、パイプラインADCの動作に非常に似ています。ただし、セカンダリADCのリファレンスを変更する代わりに、最初のステージの後に残った残差エラーが増幅され、次のステージのADCによって処理されます。

コメントや提案は大歓迎です。クワッド8ビット(またはデュアル12ビット)チップは、シングル24ビットチップよりも安価だと思います。

実際には、24ビットコンバーターを使用するのは、いくつかの構成で4つの8ビットコンバーターを配置するほど単純ではないという理由があります。それだけではありません。ここでの主な誤解は、ビット数を単に「追加」できると考えていることだと思います。なぜこれが間違っているのかを理解するには、ADCをどの「ビン」入力電圧に属するかを決定する回路と考えるのが良いでしょう。ビンの数は2 ^(ビット数)です。したがって、8ビットコンバーターには256ビン(2 ^ 8)があります。24ビットコンバーターには、1600万を超えるビン(2 ^ 24)があります。したがって、24ビットコンバーターと同じ数のビンを使用するには、65,000を超える8ビットコンバーター(実際には2 ^ 16)が必要になります。

ビンの類推を続けるには、ADCのフルスケールが1Vであるとします。次に、8ビットコンバータの「ビン」は1V / 256 =〜3.9mVです。24ビットコンバーターの場合、1V /(2 ^ 24)=〜59.6nVになります。直感的には、電圧が小さいビンに属しているかどうかを「判断する」のが難しいことは明らかです。実際、これはノイズとさまざまな回路の非理想性によるケースです。したがって、24ビットの解像度を得るには、6万5000を超える8ビットコンバーターが必要になるだけでなく、それらの8ビットコンバーターは24ビットサイズのビンに解決できなければなりません(通常の8ビットコンバーターでは十分ではありません) 59.6nVビンではなく、〜3.9mVビンに解決できます)


8ビットコンバータが機能する範囲は256 * 59.6nV = 15.26uVです。基準電圧をそれほど高くなく正確にしたことはありません:)
Hans

14

1212121212 1213

基準電圧の変更について。別の例を挙げます。1ビットADCがあり、リファレンスを変更して12ビットを取得したいとします。入力がより大きい場合、1ビットで1が得られますVREF2

無料の昼食はありません。

編集
オーバーサンプリングについて誤解があるようで、16ビットの解像度を提供できる1ビットのオーディオADC あるという事実があります。
入力が固定のDCレベル、たとえば1Vの入力範囲で0.2Vである場合、出力も常に同じになります。1ビットADCの場合、この例ではゼロになります(レベルはリファレンスの半分未満です)。これで、1秒あたり1サンプルでサンプリングする場合でも、1000でサンプリングする場合でも、そうなります。したがって、平均化してもこれは変わりません。電圧が常に変化するため(ノイズ)、アインシュタイン(相対性理論、ご存知のように;-)によると、電圧が常に変化し、基準が変化するのと同じであるため、なぜそれがオーディオADCで機能するのですか?そして、その後、オーバーサンプリング中にいくつかの異なる読み取り値を取得します。これを平均すると、実際のレベルのかなり良い近似を得ることができます。
ノイズは、ADCのしきい値を超えるのに十分な強さである必要があり、ガウス分布(ホワイトノイズ)などの特定の制約に適合する必要があります。1ビットの例では、ノイズレベルが低すぎるため機能しませんでした。



参考資料 AtmelアプリケーションノートAVR121:オーバーサンプリングによるADC解像度の向上


私はあなたの考えを理解しているとは思いません。+と-を分割した場合、12ビットで0v〜+ 4.096v、12ビットで0v〜-4.096vでサンプリングして、全範囲で合計24ビットにすることができますか。
マジェンコ2011

1
@MattJenkins、それは符号ビットと同じです。それについて考えてください。12ビットで0〜10V、12ビットで0〜(-10V)をサンプリングする場合、信号が負か正かを示すのに1ビットだけ必要です。
Kortuk、2011

これは本当です-あなたがたがそうでした 24ビットでサンプリングし、あなただけの13ビットとまったく同じ解像度を得ることができます。
マジェンコ2011

8V2V=228V1V=23

@ MattJenkins、1つのホットエンコーディングを使用し、10の代わりに1024ビットを使用することができます。物理的な現実は、エンジニアは彼がやりたいことは何でもできるということです。10kWではなく3dBだけ離れていることを顧客に伝えてください。
Kortuk、2011

3

はい、理論的にはあなたがやりたいことができますが、完全に非現実的な機器を利用できる場合に限ります。

残念ながら、これまでに制限された追加の精度について行われた他のいくつかのコメントは正しいです。

考えてみてください。12ビットADCで電圧を測定し、111111000010を取得します。実際の値は、この値の両側の1ビット範囲+/- 0.5ビットのどこかにあることがわかります。

IFあなたのADCは24ビットに正確だったが、唯一の12ビットを提供していた、このケースだった場合内の+/- 111111000010 000000000000.の半分のビットvaklueの嘘は、あなたと12ビットADCを取ることができることを報告して+/- 1/2ビットの範囲、111111000010000000000000を中心にして結果を読み取ります。これにより、必要に応じて実際の信号とaDC値の差が得られます。QED。

ただし、12ビットADC自体は約半分のビットにしか正確ではありません。さまざまなエラーの合計により、実際の結果が約半分になるが、プラスまたはマイナスが異なる場合に、特定の結果を宣言します。

あなたが望む間

111111000010は111111000010 000000000000を意味します

実際には111111000010 000101101010または何を意味する場合もあります。

したがって、2番目のADCを使用して下位12ビットを測定し、それらが正確な12ビット境界に関連していると仮定すると、実際には上記の誤った値に関連しています。この値は本質的にランダムなエラーであるため、12ビットの本質的にランダムなノイズに新しい12の下位ビットの数値を追加します。正確+ランダム=新しいランダム。

範囲を測定し、10ステップのうちの1ステップで結果を出すことができる2つのconveterを使用します。100ボルトFSにスケーリングすると、ge 0 10 20 30 40 50 60 70 80 90

10ボルトのフルスケールにスケーリングすると、1 2 3 4 5 6 7 8 9になります。

これら2つのコンバーターを使用して、100ボルトの範囲を1ボルトの精度で測定することにしました。

コンバータ1は70Vを返します。次に、70Vを基準にして電圧を測定し、-3Vを取得します。したがって、実際の値、つまり+ 70V-3V = 67Vであると結論付けます。

ただし、70Vの結果は実際には65 66 67 68 69 70 71 72 73 74のいずれかになる可能性があります

1番目のコンバーターが100Vで1VにACCURATEである場合にのみ、100Vで10Vのステップを表示しても、希望どおりの結果を得ることができます。

したがって、実際の結果は67V +/- 5ボルト= 62Vから72Vまでです。だから、あなたは以前よりも良くなっています。センターが移動しましたが、ランダムに配置されている可能性があります。

コンバーターは通常、返されるビットよりもわずかに正確であるため(このようにしてください)、2番目のコンバーターがこれをある程度使用するため、この方法で適度な改善を得ることができます。


実際に機能するシステムは、1つの重要な省略を伴って言及されています。信号をN回サンプリングし、+ / _半ビットのガウスノイズを追加すると、信号が「可能な範囲全体に」広がり、平均値は以前よりもlog(N)正確になります。このスキームには釣り針と資格があり、任意のビット数を追加することはできませんが、多少の改善はあります。


上記の最初のケースでは、24ビット精度の12ビットADCについて説明しました。12ビットADCを使用し、その想定値を24ビットのデルタシグマコンバーターなどで読み取ることで、この種のことを実現できます。IF信号は、それが同じ1ビットの範囲内に残っていることを安定十分だったあなたは第二12ビットを読み取るために第二ADCを使用することができ、この安定した信号をWRT。

別の方法-最初にシグマデルタで24ビット信号を読み取り、そのポイントでロックし、2番目のADCでそれに対して連続的に測定します。信号が2番目のADCの範囲内にある限り、はるかに高速な結果が得られます。


うーん。一票。反対票。ここで[tm]のOK回答が渡されるとすれば、この回答が投票に値するほどひどいと思ったのは誰か、そしてその理由を知りたいのですが。
ラッセルマクマホン

1

多くのタイプのADCの分解能を高めるために使用できるスーパーサンプリングと呼ばれるものがあります。

信号にノイズを追加することで機能します。ノイズにより解像度が低下しますが、データを数ビットに分割する必要があります。(私は信号処理の人ではありません-これは私がそれを理解する方法です。)あなたのノイズは1または2ビットだけかもしれませんが、そこにある必要があります。12ビットのサンプルを1つ取得すると、12ビットになります。次に4つのサンプルを取り、それらを合計して2で除算すると、13ビットのサンプルが得られます。(ナイキストのため、追加の各ビットには4つのサンプルが必要です。)

これを行う簡単な方法は、基準電圧にノイズを追加することです。これを使用して、dsPIC33Fの12ビットADCを16ビットにブーストし、より高い解像度を実現します。事前に、高頻度で非同期タイマーを設定し、DMAを使用してPRNG番号のシーケンスを出力キャプチャにキューイングし、比較的クリーンなノイズソースを提供します。ノイズ出力は、基準電圧を約0.1%バイアスします(1k-1Meg分圧器)。ノイズは双方向であり、シンクおよびソースです。dsPIC33FのDMAを使用してサンプルをキューに入れるため、CPUの介入をほとんど必要とせずにこれを実行できます。もちろん、最大サンプルレートは通常のレートの約32分の1に下がりますが、これは私のアプリケーションでは問題になりません。

ノイズは常に均一に分布しているわけではないので、出荷されるすべてのユニットの入力を調整しますが、違いはおそらく1または2 LSBです。


追加するノイズが正しいスペクトル(ホワイトノイズ)であることをどのようにして確認しますか?どのように振幅を決定しますか?ノイズが良くない場合、解像度は高くなりますが、精度は向上しません。
Federico Russo

@Federicoもちろん-私にとって、それは試行錯誤です。ホワイトノイズはPRNGを使用してシミュレートでき、32サンプルのみで十分に機能します。私が実際の電子工学者であれば、適切にそれを行う方法を知っています。
トーマスO

これを説明するのに役立つかもしれないAnalog Devicesの記事は次のとおり
library

@ThomasO、私はこの技術をサーミスタで使用して、8ビットの精度を追加しました。ノイズではなく、暖房を使用しました。
Kortuk '20

@DarenWおなじみのようです-私はそこから自分のアイデアを得ました。
トーマスO

1

加算アンプを使用すると、2つのDAC出力を加算できます。R1 = 100k、R2 = R3 = 100オームを使用できます。このようにして、出力はVout =-(V1 + V2 / 1000)になります。デュアル電源が必要であり、非反転が必要な場合は、ゲイン= 1の別の反転アンプを配置する必要があります。したがって、2つの出力とリファレンス4.096Vを備えた12ビットDACがあるとします。次に(2番目の反転増幅器がある場合)、DAC 1から1インクリメントすると出力が1uV増加し、DAC 2から1インクリメントすると出力が1mV増加します。それがありますいない、合計で24ビット。約22ビットです。理論的には、R1をR2やR3の4096倍にして24ビットにすることもできますが、より良い結果は得られません。優れた低ノイズオペアンプを選択しても、マイクロボルトの範囲で多くのノイズの問題が発生します。

DACを探していたので、DACについての質問ですが、更新してください。ADCに同様の原理を適用する方法を次に示します。合計する代わりに、ADC1の結果を減算してから、ADC2で測定する前に1000を掛ける必要があります。

2倍のADC分解能

修正-ADC3は、結果の式と一致するVrefではなく、VGnd(Vref / 2)にある必要があります。

AZ431の代わりに、他の2.5Vリファレンスまたは適切なパッシブを備えた別の調整可能なリファレンスを使用して、正確に4.096Vを取得できます。リファレンスの温度ドリフトが少ないほど、結果は良くなります。また、低ノイズでなければなりません。確かに正確ではないことに注意してください。500オームのマルチターントリムポットをR7とR8の間にワイパー付きでリファレンス入力に接続し、Vref = 4.096Vになるように微調整するといいでしょう。また、R1とR2の間にU1正入力へのワイパーを備えたトリムポット(2)が必要になります。VGndで2.048Vに調整します。U1は単なる低ノイズのオペアンプです。(ちなみにAZ431は仕事にひどいです。私はシンボルを持っていたので入れました)。

U2、U3、およびU4がゼロオフセットチョッパーアンプであることは非常に重要です。U2は100倍になるため、より重要です。1マイクロボルトごとに100マイクロボルトになります。OP07を使用して適切にゼロ調整し、温度が10度変化すると、U4の出力で1.3 mVに変換される13 uVのオフセットが得られます。これはADC出力で13 mVなので、ADC2はほとんど役に立たなくなります。

また、U3は6.048Vに到達できる必要があります。つまり、VGnd(2.048V)+ 2xVinmax(2x2V = 4V)です。これが、Vcc = + 12V電源を使用することの全体像です。MAX44252を使用すると、Vccを6.5Vまで低くすることができます。MAX44252はレイルトゥレイルオペアンプなので、負電源をスキップして、オペアンプのVssをグランドに接続できます。これは、出力で48mVにもなるオペアンプにも当てはまります。

MAX44252は、2〜4uVのオフセット電圧(標準)と1〜5 nVの温度ドリフトを備えています。それは1の量でdigikey$ 2.64であり、それは1つのチップだけが仕事をするのでクワドアンプです。

使い方?たとえば10ビットDACを見てみましょう。分解能は4.096 / 1024 = 4mVです。入力信号は、Vrefの半分であるVGndを基準にする必要があります。ADC1は通常どおり入力電圧を測定します。次に、DAC1を介して値を出力します。VinとDAC1の違いは、ADC1の結果を増幅、測定、追加するために必要な誤差です。U2は、100のゲインで、DAC1に対するVin-DAC1の差を増幅します。U4は、その差を10倍に増幅し、VGndに対してDAC1を減算します。これにより、VGndに対してADC2 =(Vin-DAC1)* 1000になります。言い換えれば、VGndに比べてVinに1.234567Vがある場合。ADC1は821の値を測定します解像度は4mVであり、(2.048 + 1.234567)/0.004 = 820.64175です。したがって、DAC値は309 * 0.004V = 1.236Vである309に設定されます。これで、ADC2は(理想的には)VGndに対して1.234567-1.236 = -0.001433 * 1000 = -1.433Vを取得します。これは2.048-1.433 = 0.615Vのコモンモードです。0.615V / 0.004 = 153.75。したがって、ADC2値= 154。フロートの使用を避けるために、マイクロボルトで値を計算する方が簡単です。ADC2をmVに変換するには、値を4倍する必要があります。VADC1= 821 * 4 = 3284mV。uVに変換するには、1000を掛ける必要があります。または、ADC1の値に4000を掛けます。821* 4000 =3284000。したがって、VGndに対するADC1の電圧は、3284000-2048000 = 1236000uVです。ADC2はすでに1000で乗算されているため、4を乗算するだけで済みます。VADC2= 154 * 4 =616。VGndに関連する電圧を取得するには、VGndを減算する必要があります:616-2048 = -1432uV。x1000の増幅があるため、ここではVGnd = 2048uVとします。ここで、VADC1とVADC2を追加します。1236000+(-1432)= 1234568uVまたは1.234568V

もちろん、それはただの夢です。マイクロボルトを扱うと、あらゆる種類の恐ろしい問題が発生するためです-オペアンプノイズ、抵抗器ノイズ、電圧オフセット、温度ドリフト、ゲインエラー...しかし、適切な部品を使用する場合、少なくとも1%の抵抗器とプログラムでオフセットをヌルにしてゲインを修正すると、かなり良い結果が得られる場合があります。もちろん、最後の桁まで安定した入力を期待することはできません。おそらく、解像度を10uVに制限できます(結果を10で割ります)。また、4つの乗算は、4つの順次結果を合計して平均化することで実行できます。

これは何もテストされていないことに注意してください。ノイズとオペアンプのオフセットを考慮せずに、アンプ段のみをシミュレーションしました。誰かがそれを構築することに決めた場合は、コメントに結果を書き込んでください。


AD C について質問します。あなたはDA C について話します
SEへのぼんやりとした信頼を2017年

申し訳ありません。DACを検索したところ、この質問が見つかりました。注意深く読まずに書いた。ADCに同じ原理を適用する方法を提案します。
NickSoft、2017年

あなたの投稿が質問に関連しているので、反対票を削除しました。しかし、私はこのソリューションが実際に機能するとは思わない。間違いが多すぎると思います。
2017

もちろん動作します。ただし、精度は使用する部品によって異なります。0.1uVのオフセットと1-5nV / degCのドリフトを持つチョッパーアンプがあります。また、ナノボルト0.1〜10 Hz ppのノイズがあります。適切なリファレンスと組み合わせると、最大数十uVの安定した出力を得ることができます。しかし、もしあなたが余分な数字を得たいなら、これはより安い部品で働くことができます。たとえば、10ビットADCは4.096V基準で、4mVの分解能があります。この回路を使用すると、簡単に(おそらくより適切な基準で)0.1uVの解像度に改善できると思います。+/- 20000カウントです。もちろん、オフセットとゲインのソフトウェアキャリブレーションが必要です。
NickSoft

それはすべての理論です。ADC2の読み取り値がDAC設定(およびオペアンプオフセットですが、これは最も重要な部分ではありません)に依存し、ADC1の読み取り値(およびこれらすべてに許容差がある)に依存するという事実は、確実に勝つという事実につながりますシステムの単調な動作を保証することさえできません(計算された精度の範囲内であっても)。
薄暗い、SEへの信頼を失った

0

log2(a lot)

編集:私の数学の修正についてはコメントを参照してください。


それも私が考えたことですが、これを考慮してください:1V入力範囲、0.2V入力、1ビットADC。オーバーサンプリングがいくら高くても、常に0、平均= 0、0.2ではありません。
stevenvh 2011

このようなオーバーサンプリングには、信号に「ノイズ」が必要です。stevenvhが指摘したように。信号自体には、何も新しいものなしでこれを達成するのに十分な「ノイズ」がある場合があります。また、信号に高周波ノイズを注入する必要がある場合もありますが、ノイズは後処理で後処理で除去されます。

そうですね、「信号の性質に応じて」。質問は、彼が鉛レンガの側面に接着されたサーミスタから温度を読み取っているのか、それともSDRのミキサー出力をサンプリングしているのかについては触れていません。そこで彼は別の選択肢を得ました。オーバーサンプリングが有効になるために信号が必要とする正確な数学的特性へのポインターを誰かが提供できる場合、私は本当に興味があります。(そして、それは、申し訳ありませんが、私の元のステートメントよりも少し手が波打っていない修正の代わりに、便利な追加になると思われます。)
Jay Kominek

log2(alot)2

私の主な関心はオーディオ信号にあるので、24ビットコンバーターが非常に高価になり、それほど多くない場合は、より広く利用可能なコンバーターがカスケード接続される可能性があります。詳しい説明ありがとうございます。最初は音が出ますね。:)
errordeveloper '21 / 07/21
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.