Hallo zusammen,
ich bastele zurzeit an einer Schaltung, die im Grunde einfach nur ein analoges Sensorsignal auf einen Controller geben soll, um dieses dann weiterzuverarbeiten. Allerdings bin ich bereits bei der AD-Wandlung auf ein Problem gestoßen, was ich nicht in der Lage bin zu lösen.
Kurz zur Schaltung:
Hauptdarsteller dieses Trauerspiels sind ein ESP32 und ein ADS1115, die über I²C miteinander verbunden sind, und ein 4-20mA Wegsensor. Der Sensor liegt an 12V an und seine Signalwerte werden über einen Präzisionswiderstand in eine entsprechende Spannung (5V max) für den ADC umgewandelt. Die 12V regele ich durch einen normalen L7805 runter um sie als Versorgungsspannung sowohl für den ESP als auch den ADC zu verwenden. Beide sind eigentlich für 3,3V ausgelegt, können aber, laut Datenblatt, auch mit 5V betrieben werden.
Jetzt zu meinem Problem:
Beim Auslesen des Conversion Registers dreht irgendetwas in der Schaltung am Rad und ich bekomme scheinbar zufällige Werte zwischen 0 und 240 ausgegeben. Diese Werte sind allerdings nicht kontinuierlich, sondern es handelt sich immer um die selben, etwa 20, Werte. Etwa 16, 32, 64, 112, 144, 176. Ich habe schon mit verschiedensten Konfigurationen des ADS1115 herumprobiert, kam aber nie zu sinnvolleren Ergebnissen.
Ich gehe davon aus, dass es sich um ein grundlegendes Verständnisproblems bezüglich der I²C-Kommunikation meinerseits handelt.
Hier mein verwendeter Code:
#include <Wire.h>
void setup() {
Wire.begin();
Serial.begin(115200);
Wire.beginTransmission(0x48); //GND-Adresse
Wire.write(0x01); //Config Register
Wire.write(0xC1); //Single-shot, A0 single-ended, PGA 6,144V
Wire.write(0x03); //8SPS, Comparator disabled
Wire.endTransmission();
}
void loop() {
Wire.beginTransmission(0x48);
Wire.write(0x00); // Conversion Register
Wire.endTransmission();
Wire.requestFrom(0x48,2);
Wire.read();
Serial.println(Wire.read());
}
Falls sich also jemand mit den beiden Komponenten auskennt, wäre ich für jede Hilfe dankbar.