UnoとMegaのAREFピンに適用可能な最小電圧

私は5〜30mVの範囲のアナログ信号を測定する必要があります。

当然のことながら、内部デフォルト5Vリファレンスを使用すると、測定分解能が非常に悪くなります。私はAREFピンに50mVの外部リファレンス電圧を使用する機能を使用したいと考えています(アジレントの高精度電源を使用しています)

しかし、私は実験室でこれを試したとき、何か変わったことに気付きました。 AREFピンで0.5Vを超える値を使用した場合、ADCの読み出し値は正しいです。それに応じて、アナログ入力を適切に増減させると、カウントは確実に上下します。

どのように私の問題を解決するためのアイデア?

1
追加された
ビュー: 2
ru de
あなたのプロジェクトが何であるか、その信号がどこから来ているのか教えてください。おそらくあなたはopampまたは外部adcが必要です。 ads1115には利益があります(x16のみ)。これで十分です。
追加された 著者 Standback,

2 答え

データシートによると(375ページ)、ADCのリファレンス電圧として許容される最小電圧は1Vです。

3
追加された

Arduino Megaでは、 10x ゲイン(または 200x )の2つのアナログピンの間で差動モードを使用することができます。しかし、マイナスの差を測定することができるため、解像度は半分になります( -512 ... 511 )。しかし、精度の高い電圧リファレンススイッチングと 200x ゲインを使用すると、ある程度の精度を達成することができます。

欠点は、 analogRead でサポートされていない ADC チャネルを設定することで直接行う必要があることです( ADMUXADCSRB )をゲイン付きの希望する差動チャンネルに設定します。

byte backup = ADMUX;//store the arduino settings
ADMUX = _BV(REFS1) | _BV(MUX3) | _BV(MUX0);//internal 1.1V reference, differential: ADC1+ ADC0-, gain: 10x

// there should be some delay to stabilize the voltage reference (if another one was selected)
// but it's possible to preset it by  analogReference(INTERNAL1V1); in the setup() so no delay will be needed

ADCSRA |= _BV(ADSC); //start conversion

while ((ADCSRA & _BV(ADSC)) != 0); //wait for conversion end (ADSC is cleared after the end by hardware)

int val = ADC;//read the result
ADMUX = backup;//restore original settings (from arduino)

Arduinoでは、ADCのその他すべてが設定され、ADCが起動されるので、必要な変更がここにあります。それは動作するはずですが、私はそれをテストしませんでした(私はArduinoメガを持っていない)

1
追加された
私は差動測定に興味があります。サンプルコードを提供できますか?
追加された 著者 krishnakumar G,