欠けているのは「間引き」の意味です。
厳密に言うと、「間引き」は1/10への削減です。つまり、10から1に減らします。
サンプリングで使用される「間引き」は厳密な意味を失います。1/10ではなく、「数を減らす」という意味です。
つまり、サンプルの数を平均して、同じ数だけサンプルの数を減らします。
例として、1000Hzでサンプリングし、平均4サンプルの場合、平均のみを維持します。最終的に、毎秒1000サンプルではなく、250サンプルしかありません。時間分解能は失われましたが、電圧分解能は1ビット増加しました。
4の各係数に対して、1ビットを獲得します。平均して4の間引き、10ビットの解像度から11ビットの解像度まで。
別の4の因数(4 * 4 = 16の合計)は、10ビットから12ビットに変更します。もう1つの係数4は、13ビットの解像度になります。
ただし、ここで64倍のオーバーサンプリングになっていることに注意してください。有効なサンプリングレートは同じ係数で低下します。1000Hzのサンプリングレートの例を使用すると、1秒あたり約15の実効サンプルになります。
これはデシメーションであり、多くのハイビットADCが高解像度を取得します。彼らは、高レート、平均(またはデジタルローパスフィルターを使用)でサンプリングし、間引きします。
極端な例では、数ビット単位でオーバーサンプリングして16ビットの有効ビット深度を提供するシングルビットADC(単純なコンパレータ)があります。
これが機能するために留意する必要があることの1つは、ADCが測定できる最小値とほぼ等しい信号のノイズが必要であることです。5Vの基準電圧を使用する10ビットADCの場合、これはピーク間で約5mVのノイズになります。
ノイズの平均化は、ビットゲインが実際に発生する場所です。512のADCカウントと513のADCカウントの値の間に正確にある信号(DC)があるとします。ノイズがない場合、測定値は常に同じになります。平均化すると、サンプルと同じ値が得られます。
ノイズを測定可能な最小値程度で追加すると、非常に異なって見えます。信号自体は変化しませんが、測定値は信号の真の値を中心に「揺れ」ます。平均はサンプルとは異なり、使用するサンプルが多いほど、信号の実際の値に近づきます
私は、Arduino(10ビットADCを備えたAtmelプロセッサーを使用)でこの手法を使用して、行っていたいくつかの測定でより良い分解能を得ました。
13ビットまで取得しましたが、さらに必要なことがわかりました。別の4の係数を使用することもできますが、各サンプルで時間がかかりすぎて、もう1つだけ取得できました。
オーバーサンプリングを使った実験は、ADCを改善するために時間とお金を費やすことなく、私がやっていることが機能する(認識できるが、うるさい結果が出る)ことを示しました。概念実証があれば、先に進んでより優れたADCを取得できます。その証拠を得ることで、数行のコードと少しの時間しかかかりません。
少なくとも16ビットが必要であることがわかりました。これは、4096サンプルを平均化することを意味します。
これは、Arduinoソフトウェアで可能な最速のサンプリングを使用して約0.5秒です。
14400回の測定が必要だったので、完全な実行には2時間かかりました。
私はその患者ではありません、そして私が測定していたものはその間一定に留まりません。内部ではるかに高いオーバーサンプリングレートを使用し、低いレートでより高い解像度のサンプルを提供するADCの使用に切り替える必要がありました。
多くのことと同様に、デシメーションとは、ある方向(ビット深度)でのパフォーマンスを向上させながら、別の方向(サンプリングレート)でのパフォーマンスを犠牲にする妥協です。