John Errington’s Experiments with an Arduino
On 11月 28, 2021 by adminArduinoボードで精密な電圧測定
マイコンのArduinoシリーズには電圧測定に使用できるアナログ入力が用意されています。 これを利用して電圧計を作ることができます。
analogRead() 関数は電圧を読み取り、0から1023までの数値に変換します。
Arduino tutorial (1) http://arduino.cc/en/Tutorial/ReadAnalogVoltageにこの例があります:
This is WRONG ! より良い結果を得るには、(sensorValue + 0.5) * 5.0 / 1024.0 を使用します – ここ
これにより、0 の読みは 0.000V の入力に対応し、1023 は 5.000V の入力電圧に対応すると考えることができます。 これは完全に正しいわけではありません。
Arduinoに搭載されているATMEGAチップは、電圧を正確に測定するためのアナログ入力を持っています
Arduinoマイコンには、以下の仕様の逐次比較型ADC(アナログ・デジタル・コンバータ)が搭載されています。 (2:26.1)はAtMega2560のデータシート
(2:26.1)に記載されている箇所です。 ATMega328と32U4は同様の値です。
これらの仕様から、Arduinoは±2LSBの精度で電圧を測定できることがわかります。つまり、最大誤差は10ビット(1024進数)で2ビット(4進数)
なので、変換器の最悪の場合の精度は4 / 1024または256分の1すなわち0.25%です
ただし、測定精度の限界は使用する電圧基準によって変化します。
Arduinoは独自の電圧リファレンスを持っていますが、あまり正確ではありません
チップは、タイプによって、次のリファレンス電圧のいくつかを備えています (6)
デフォルト:5ボルト (5V Arduinoボード上) または3.のデフォルトアナログ基準。3ボルト(3.3V Arduinoボード上)
INTERNAL: ATmega168またはATmega328で1.1ボルト、ATmega8と32U4チップボード上で2.56ボルトに等しい内蔵基準、
これは1.1ボルト基準を増幅して内部で生成されます。 2.56Vはただ「典型的な」値です。
EXTERNAL: AREFピン(0~5Vのみ)に適用される電圧です。 (MicroPro 32U4、NodeMCU、および ESP32 には外部基準用のピンがありません。詳細は以下を参照してください。)
上記の基準のいずれかを使用して、電圧を測定する基準の精度は、せいぜい 5.25 – 5.0/5.0 * 100 = 5% だけで、ADC の 0.25% よりはるかに悪い値です。 Arduinoが提供する精度で電圧を測定したい場合、オンチップのリファレンスでは不十分なのは明らかです。 下図は、4.096Vのリファレンスと比較したときの誤差を示したものです。
コメントを残す