Arduino Polska Forum

Pełna wersja: Problem z odczytem wartości ADC w ADS1115
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam, 

Mam Arduino NANO i ESP32 oraz moduł ADC Adafruit ADS1115 - próbuję odczytywać napięcie 3,3V z płytki Arduino NANO (faktyczne zmierzone multimetrem 3,26V) jednak ciągle dostaję zawyżony wynik ~3,63V.

ADS1115 zasilany z nóżki 5V Arduino (faktyczne napięcie ~4,7V).

Ktoś ma pomysł dlaczego? 


18:58:59.604 -> AIN2: 3355  0.63V
18:58:59.604 -> AIN3: 19360  3.63V
18:59:01.617 -> -----------------------------------------------------------
18:59:01.660 -> AIN2: 3355  0.63V
18:59:01.660 -> AIN3: 19364  3.63V
18:59:03.671 -> -----------------------------------------------------------
18:59:03.714 -> AIN2: 3351  0.63V
18:59:03.714 -> AIN3: 19361  3.63V
18:59:05.725 -> -----------------------------------------------------------
18:59:05.769 -> AIN2: 3349  0.63V
18:59:05.769 -> AIN3: 19367  3.63V
18:59:07.791 -> -----------------------------------------------------------
18:59:07.791 -> AIN2: 3350  0.63V
18:59:07.824 -> AIN3: 19367  3.63V
18:59:09.846 -> -----------------------------------------------------------
18:59:09.888 -> AIN2: 3351  0.63V
18:59:09.888 -> AIN3: 19366  3.63V



Poniżej używany przeze mnie kod: 


Kod:
#include <Adafruit_ADS1X15.h>

Adafruit_ADS1115 ads;

void setup(void)
{
  Serial.begin(9600);
  ads.setGain(GAIN_TWOTHIRDS);

  if (!ads.begin()) {
    Serial.println("Failed to initialize ADS.");
    while (1);
  }
}

void loop(void)
{
  int16_t adc2, adc3;
  float volts2, volts3;

  adc2 = ads.readADC_SingleEnded(2);
  adc3 = ads.readADC_SingleEnded(3);

  volts2 = ads.computeVolts(adc2);
  volts3 = ads.computeVolts(adc3);

  Serial.println("-----------------------------------------------------------");
  Serial.print("AIN2: "); Serial.print(adc2); Serial.print("  "); Serial.print(volts2); Serial.println("V");
  Serial.print("AIN3: "); Serial.print(adc3); Serial.print("  "); Serial.print(volts3); Serial.println("V");

  delay(2000);
}
(19-07-2025, 19:00)hkpl87 napisał(a): [ -> ]Witam, 

Mam Arduino NANO i ESP32 oraz moduł ADC Adafruit ADS1115 - próbuję odczytywać napięcie 3,3V z płytki Arduino NANO (faktyczne zmierzone multimetrem 3,26V) jednak ciągle dostaję zawyżony wynik ~3,63V.

ADS1115 zasilany z nóżki 5V Arduino (faktyczne napięcie ~4,7V).

Ktoś ma pomysł dlaczego? 
Pewnie kwestia napięcia odniesienia. Skoro zasilasz  układ napięciem trochę mniejszym od 5V to wynik wychodzi trochę więcej niż naprawde. Przetwornik tak naprawdę podaje jaką część napięcia odniesienia stanowi napięcie mierzone. Nie wiem jak w tym module rozwiązana jest sprawa napięcia odniesienia, być może jest brane napięcie zasilania. Może można to przełączyć, niektóre układy mają wewnętrzne napięcie odniesienia, niezależnie stabilizowane. Ale pewnie jest mniejsze niż 3V.