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?