ADS1115 identische Messwerte an 2 Kanälen

OP #5935714
Lesenswert?
• ▲
▼
Hallo zusammen,
ich beginne gerade wieder ein wenig mit Electronic und Microcontrollern 
zu spielen und bin auf folgendes Phänomen gestoßen.

Wenn ich einen Kanal auf über einen ADS1115 mit einem ESP32 auslesen, 
klappt das wie erwartet und ich bekomme Werte, die passen.
Wenn ich aber einen weiteren Kanal auslese (in diesem Fall die 
Versorgungsspannung als Referenz) wird nur bei der ersten übertragenen 
Messung der Wert von Kanal 1 korrekt angezeigt, danach haben Kanal 1 und 
Kanal x immer annähernd Gleiche Werte. völlig unabhängig vom Kanal. Und 
unabhängig von der Referenzspannung (VCC oder GND)
1
A0: 3458    Spannung: 648mV   A1: 16972   Spannung: 3182mV
2
A0: 16972    Spannung: 3182mV   A1: 16971   Spannung: 3182mV
3
A0: 16971    Spannung: 3182mV   A1: 16990   Spannung: 3185mV
4
A0: 16990    Spannung: 3185mV   A1: 16992   Spannung: 3186mV
5
A0: 16992    Spannung: 3186mV   A1: 16990   Spannung: 3185mV
6
A0: 16990    Spannung: 3185mV   A1: 17235   Spannung: 3231mV
Wechsel auf GND
1
A0: -865    Spannung: -162mV   A1: -1555   Spannung: -291mV
2
A0: -1555    Spannung: -291mV   A1: -917   Spannung: -171mV
3
A0: -917    Spannung: -171mV   A1: -558   Spannung: -104mV
4
A0: -558    Spannung: -104mV   A1: -557   Spannung: -104mV
Folgenden Sketch habe ich verwendet.
1
#include <Arduino.h>
2
#include <Adafruit_ADS1015.h>
3

4
const byte KANAL_1 = 0;
5
const byte KANAL_2 = 1;
6
const byte KANAL_3 = 2;
7
const byte KANAL_4 = 3;
8
Adafruit_ADS1115 ads(0x48);
9

10
void i2c_start(){
11
  ads.begin();
12

13
}
14

15
void setup() {
16
  Serial.begin(115200);
17
  i2c_start();      //Geräte am I2C-Bus starten
18
}
19

20
void loop() {
21
  int16_t rohwert, referenz, voltage, refVolt;
22
  rohwert = ads.readADC_SingleEnded(KANAL_1);
23
  referenz = ads.readADC_SingleEnded(KANAL_2);
24
  //diffVolt= ads.readADC_Differential_0_1();
25
  voltage = map(rohwert,0,32765,0,6144);
26
  refVolt = map(referenz,0,32765,0,6144);
27
  Serial.print("A0: ");
28
  Serial.print(rohwert);
29
  Serial.print("    Spannung: ");
30
  Serial.print(voltage);
31
  Serial.print("mV   A1: ");
32
  Serial.print(referenz);
33
  Serial.print("   Spannung: ");
34
  Serial.print(refVolt); 
35
  Serial.println("mV");
36
  delay(5000);


Leider habe ich zur Zeit nur einen ADS zur Hand, um ausschließen zu 
können, das es ein Bauteilfehler ist!
Hat jemand eine Idee, wo hier der fehler liegt?
Angehängte Dateien:
OP #5937423
Lesenswert?
• ▲
▼
Ich vermute jetzt doch einen Bauteilfehler.
Ich habe es mit dem Beispielcode von der adafruit-Seite probiert.
https://learn.adafruit.com/adafruit-4-channel-adc-breakouts/arduino-code
Auch in diesem finde ich, genauso wenig wie im Datenblatt, Hinweise auf 
notwendige Verzögerungen.

Aber auch mit dem Code scheinen sich die Eingänge gegenseitig zu 
beeinflussen. Ist ja uach im Kern kein Unterschied. Einzig der AI2 
arbeitete unabhängig von der Beschaltung der anderen Eingänge.
Ich habe mir jetzt mal neue bestellt und werde es dann testen.

Danke für die Denkanstöße.
Gast #5938580
Lesenswert?
• ▲
▼
wenn die Impedanz am Eingang der Nachbarkanäle recht hoch ist (oder sie 
gar floatend sind) kann es durchaus passieren, dass die Kanäle ähnliche 
Werte anzeigen.

also: Der Ausgangswiderstand deiner Quellen (alle eingänge) muss niedrig 
sein um das Potenzial auf eindeutige (definierte) Werte zu bringen.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.