Forum: Mikrocontroller und Digitale Elektronik Füllstandssensor TL-136 (4-20mA, 24V) an µController


von Olli G. (olli_g740)


Angehängte Dateien:

Lesenswert?

Moin,

bzgl. Füllstandsüberwachung einer Regenwasserzisterne gibt es ja hier 
schon einige Foreneinträge, allerdings habe ich noch keinen gefunden mit 
meinen ausgewählten Komponenten.
Also gibt es nun einen weiteren Eintrag ;-)

Folgende Komponenten und Randbedingungen gibt es:

- Flüssigkeitssensor TL-136 24VDC mit Messbereich 4-20mA
- Step-up Converter XL6009 5V -> 24V
- A/D Wandler ADS1115 16bit 4-channels I2C (Messbereich: 2V - 5.5V)
- ESPx oder Raspi als Microcontroller

Die Verschaltung der Komponenten ist im Anhang zu sehen.

Mir ist noch ganz klar, wie ich den Sensor Messbereich von 4-20mA auf 
den AD Messbereich von 2V-5.5V abbilde.
- Eigentlich müsste doch ein passender Spannungsteiler ausreichen, aber 
wie wird dieser berechnet?
- Und haben die Widerstände Einfluss auf den Strombereich von 4-20mA? 
Oder "kompensiert" der Sensor diese und liefert weiterhin die 4-20mA?

Bin für jede Hilfe dankbar.
Gruß
OllisGit

von Michael B. (laberkopp)


Lesenswert?

Olli G. schrieb:
> - A/D Wandler ADS1115 16bit 4-channels I2C (Messbereich: 2V - 5.5V)

Wieso das ?

Er misst sinnvollerweise +/-2.048V. Negativen Bereich kannst du nicht 
nutzen, also nur 15 bit.

Also 20mA zu 2V macht 100 Ohm als R2, R1=0Ohm, fertig. Negativen 
Analogeingang an Massepunkt von R2.

Braucht man überhaupt 15 bit ? Tun es 10 bit des uC nicht auch ?

von Wolfgang (Gast)


Lesenswert?

Olli G. schrieb:
> - A/D Wandler ADS1115 16bit 4-channels I2C (Messbereich: 2V - 5.5V)
Unterscheide zwischen Versorgungsspannungsbereich und Messbereich (s. 
Datenblatt)
https://www.ti.com/lit/ds/symlink/ads1115.pdf?ts=1670839685749

> Mir ist noch ganz klar, wie ich den Sensor Messbereich von 4-20mA auf
> den AD Messbereich von 2V-5.5V abbilde.

Mit einem Widerstand, allerdings dann eher auf 1V-5V:
1
U = R · I

von olaf (Gast)


Lesenswert?

Noch ein Tip, du brauchst keine 24V. Dein Sensor laeuft ab 12V,
also reicht dir 12V+Spannungsabfall am Widerstand aus.

Das verbessert die Energieeffizienz deiner Schaltung.

Olaf

von Jobst Q. (joquis)


Lesenswert?

Olli G. schrieb:
> - Eigentlich müsste doch ein passender Spannungsteiler ausreichen, aber
> wie wird dieser berechnet?

Da der Sensor eine Stromquelle ist, brauchst du keinen Spannungsteiler, 
sondern nur einen Widerstand, an dem die zu messende Spannung abfällt.

ZB 100 Ohm ergäben 0,4 bis 2 Volt, also gut messbar. Ich habe bei einem 
Arduino Pro Mikro 128 Ohm genommen und 2,56V als Referenz eingestellt. 
Die 10 Bit Auflösung reichen da völlig.

Wenn du als Spannungsteiler zB 2 mal 1KOhm nehmen würdest, müsste der 
Sensor 40 Volt liefern können. Wie bei 24V Versorgung? Und wenn er es 
könnte, wäre mit 20 Volt deutlich zu viel am Eingang des ADC.

von Jobst Q. (joquis)


Lesenswert?

Noch etwas. Wenn du die Versorgungsspannung des Sensors per StepUp 
erzeugst, braucht er viel Strom auf der Primärseite. Nutze den 
Enable-Eingang, um ihn nur zur Messung einzuschalten. Der Füllstand wird 
sich ja nicht so schnell ändern, dass du eine ständige Messung brauchst.

von Manfred (Gast)


Lesenswert?

Michael B. schrieb:
>> - A/D Wandler ADS1115 16bit 4-channels I2C (Messbereich: 2V - 5.5V)
> Wieso das ?
> Er misst sinnvollerweise +/-2.048V.

Er kann ihn auch auf 4096mV skalieren.
Das ist halt ein weiterer Thread, wo Programmierkiddies die 16bit geil 
finden, aber den ADS1115 nicht begreifen können.

Etwas vereinfacht betrachte ich den 1115 als geschlossenes System 
ähnlich einem DVM, was mir per I2C eine Spannung liefert.

> Also 20mA zu 2V macht 100 Ohm als R2, R1=0Ohm, fertig. Negativen
> Analogeingang an Massepunkt von R2.

Welchen negativen Eingang? Der ADS1115 kann vier Spannungen messen, wenn 
man nur einen Kanal braucht, ist es egal, wohin man die restlichen drei 
schaltet - nur nicht offen.

Mit seiner internen Referenz und einem definierten Betrieb bis 2 Volt 
herunter kann der sogar seine eigene Betriebsspannung messen und dem µC 
melden, wenn sie knapp wird.

> Braucht man überhaupt 15 bit ? Tun es 10 bit des uC nicht auch ?

Er will einen ESP_irgendwas verwenden, deren A/D-Wandler einen 
schlechten Ruf haben. Habe ich selbst nie gemessen, bei einem ATMega328 
sind die 10 bit gegen seine interne Referenz sehr gut brauchbar.

Jobst Q. schrieb:
> Wenn du die Versorgungsspannung des Sensors per StepUp
> erzeugst, braucht er viel Strom auf der Primärseite.

Der StepUp ist eine ungeschickte Idee. Besser mit 24V *) versorgen und 
den µC per StepDown.

*) Diverse Internetabieter schreiben, dass der TL-136 ab 12 Volt 
funktioniert.

von Wolfgang (Gast)


Lesenswert?

Manfred schrieb:
> *) Diverse Internetabieter schreiben, dass der TL-136 ab 12 Volt
> funktioniert.

Die schreiben sogar, dass er von 12 bis 36VDC funktioniert.

von Manfred (Gast)


Lesenswert?

Wolfgang schrieb:
>> *) Diverse Internetabieter schreiben, dass der TL-136 ab 12 Volt
>> funktioniert.
> Die schreiben sogar, dass er von 12 bis 36VDC funktioniert.

Es scheint kein Datenblatt zu dem Sensor zu geben, was bei dem Preis ja 
wohl nicht zuviel verlangt wäre.

12V wäre einfacher als 24V, weil man ordentliche Steckernetzteile 
günstig bekommt.

von mitlesa (Gast)


Lesenswert?

Olli G. schrieb:
> Mir ist noch ganz klar, wie ich den Sensor Messbereich von 4-20mA auf
> den AD Messbereich von 2V-5.5V abbilde.

Olli G. schrieb:
> Bin für jede Hilfe dankbar.

Du brauchst für eine saubere Strommmessung noch einen "Current
to Voltage Sensor". Ganz eingänglich beschrieben ist das zum
Beispiel hier:

https://www.turais.de/tl231-liquid-water-level-sensor/

von Olaf (Gast)


Lesenswert?

> 12V wäre einfacher als 24V, weil man ordentliche Steckernetzteile
> günstig bekommt.

Ich schrieb doch 12V + Spannungsabfall am Widerstand!
Also wohl so 14-15V in diesem Falle. Aber das ist natuerlich
trotzdem viel besser als 24V die der Sensor dann nur unoetig
verheizt nachdem man die mit muehe raufgeboostet hat.

Ihr versteht doch wie 4-20mA funktioniert? Der Sensor braucht 12V
Spannungsabfall fuer sich alleine um sich daraus zu versorgen.

Olaf

von Olli G. (olli_g740)


Lesenswert?

Wow, in kurzer Zeit so viele Antworten, super!

Das mit dem Mess- und Versorgungsbereich hätte ich auch drauf kommen 
können ;-)

Habe jetzt mal alle genannten Komponenten bestellt (StepUp/Down, Current 
to Voltage, etc.). Bin gespannt welche Lösung es am Ende des Tages wird.

Gruß
Olli

von Jobst Q. (joquis)


Lesenswert?

mitlesa schrieb:
> Du brauchst für eine saubere Strommmessung noch einen "Current
> to Voltage Sensor".

Oh, ein Oberschlauer. Was man braucht, ist ein Stromzuspannungswandler, 
volkstümlich auch Widerstand genannt. Gibt es in Präzisionsausführung 
(1%) für unter 10 Cent.

Aber warum einfach und preiswert, wenn es auch teuer und ganz 
kompliziert geht.

: Bearbeitet durch User
von mitlesa (Gast)


Lesenswert?

Jobst Q. schrieb:
> Was man braucht, ist ein Stromzuspannungswandler,
> volkstümlich auch Widerstand genannt.

Ob es dann mit der Linearität der Umsetzung so klappt?
Wer weiss wie ideal die Stromquelle des Füllstandssensors ist.
Ich mag das aus dem hohlen Bauch nicht beurteilen.

von Jobst Q. (joquis)


Lesenswert?

Was ist linearer als ein Präzisionswiderstand?

Und in dem "Current > to Voltage Sensor" wird der Strom auch über einen 
Widerstand gemessen.

von Solar (solar2023)


Lesenswert?

Hallo,
ich möchte die Schaltung von Olli G nachbauen, kenne den ADS1115 aber 
nicht.
Daher meine Frage:
Wenn an einem analogen Eingang eine Spannung anliegt, wird dann diese 
Information über den I2C-Bus automatisch weitergegeben?
Oder ist der ADS1115 im Auslieferungszustand "dumm", sodass dieser erst 
programmiert werden muss?
Ist es ein Problem, wenn die analogen Eingang 2 bis 4 nicht verwendet 
werden, oder muss ich diese zum Beispiel auf "low" setzen?
Ich bin über jeden Tipp dankbar, danke.

von Achim H. (pluto25)


Lesenswert?

Er muß wissen wen, was und wie oft er messen soll. Bei nur einem Kanal 
reicht ein "Init" zu beginn, (z.B. Schreibadresse,$01,0C,23, Repstart 
Schreibadresse , 0) später nur noch das Ergebnis abhohlen. (Leseadresse, 
Highbyte,Lowbyte)
Die offenen Eingänge müssen nicht belegt werden. Er ist jedoch recht 
störanfällig so das es sinnvoll ist sie (über einen widerstand) auf Gnd 
zu legen.

von Rainer W. (rawi)


Lesenswert?

Solar schrieb:
> Hallo,
> ich möchte die Schaltung von Olli G nachbauen, kenne den ADS1115 aber
> nicht.

Wie wäre es mit einem Kennenlerntreffen?
https://www.ti.com/lit/ds/symlink/ads1115.pdf

von Peter D. (peda)


Lesenswert?

Solar schrieb:
> ich möchte die Schaltung von Olli G nachbauen, kenne den ADS1115 aber
> nicht.

Man braucht keinen überkandidelten 16Bit-ADC, der interne 12Bit des 
ESP32 reicht völlig. Der Sensor schafft doch nur max 8Bit.

von Solar (solar2023)


Lesenswert?

Peter D. schrieb:
> Solar schrieb:
>> ich möchte die Schaltung von Olli G nachbauen, kenne den ADS1115 aber
>> nicht.
>
> Man braucht keinen überkandidelten 16Bit-ADC, der interne 12Bit des
> ESP32 reicht völlig. Der Sensor schafft doch nur max 8Bit.

Der ADS1115 soll aufgrund eines internen Verstärkers besser mit kleinen 
Spannungen zurechtkommen.
Außerdem habe ich noch einige ESP8266 zu Hause herumliegen, und möchte 
deshalb nicht auf ESP32 umsteigen.

von Manfred P. (pruckelfred)


Lesenswert?

Solar schrieb:
> kenne den ADS1115 aber nicht.

Und leider ist Dein Google kaputt. Oder ist es eher Faulheit?
Es gibt jede Menge fertige Vorlagen!

Rainer W. schrieb:
> Wie wäre es mit einem Kennenlerntreffen?
> https://www.ti.com/lit/ds/symlink/ads1115.pdf

Eine gute Idee!

Achim H. schrieb:
> Er muß wissen wen, was und wie oft er messen soll. Bei nur einem Kanal
> reicht ein "Init" zu beginn, (z.B. Schreibadresse,$01,0C,23, Repstart
> Schreibadresse , 0) später nur noch das Ergebnis abhohlen. (Leseadresse,
> Highbyte,Lowbyte)

Ich lasse ihn frei laufen, das geht auch mit allen Kanälen. Nicht 
vergessen, einen passenden Meßbereich einzustellen, der Kamerad hat 
einen internen Verstärker.

Vereinfacht ausgedrückt, betrachte ich ihn als eigenständiges Voltmeter, 
wo der angeschlossene µC jederzeit aufs Display gucken kann.

Ich habe ihn an einem Arduino-Nano und finde die Library vom lygte.dk 
sehr freundlich: https://lygte-info.dk/project/ADS1115Library%20UK.html

> Die offenen Eingänge müssen nicht belegt werden.

Dafür -1. Das gehört sich nicht, Eingänge werden definiert beschaltet. 
Es drängt sich auf, seine eigene Betriebsspannung zu messen, die des 
versorgenden Akkus oder was sonst noch interessant sein kann.

Peter D. schrieb:
>> ich möchte die Schaltung von Olli G nachbauen, kenne den ADS1115 aber
>> nicht.
> Man braucht keinen überkandidelten 16Bit-ADC, der interne 12Bit des
> ESP32 reicht völlig.

Die A/D der ESP stehen in dem Ruf einer sehr schlechten Linearität. Der 
ADS1115 ist preisgünstig und liefert hervorragend gute Werte. Die 16bit 
vergessen wir mal, im Standard gibt es nur 15.

von Maria P. (maria_p)


Lesenswert?

Gibt es eigentlich Langzeiterfahrungen zur Wasserdichtigkeit des TL-136? 
Der Preis ist ja wirklich sehr gut, aber nur, wenn der Sensor wirklich 
wasserdicht über lange Zeit ist. Einen Hinweis auf Undichtigkeiten habe 
ich hier gefunden:
https://www.reddit.com/r/homeassistant/comments/11c6ew8/tl136_depth_probe_failures/
Das kann natürlich ein Einzelfall sein.

von Rainer W. (rawi)


Lesenswert?

Maria P. schrieb:
> Das kann natürlich ein Einzelfall sein.

Auf dem Photo sehe ich schon mal zwei verschiedene.

von Friedhelm K. (fiete11)


Lesenswert?

Hallo Olli,
Hast Du deine Schaltung inzwischen fertiggestellt? Ich bin am gleichen 
Problem am tüfteln. Ich habe 2 Drop-Down für 5V und 24V versorgt mit 
einem 24 V Steckernetzgerät. Einen Arduino Micro pro mit I2C-Anzeige 
20x4 und den ADS1115. Jetzt bin ich unsicher wie ich den AD beschalten 
muss. Im Test habe ich jetzt nur den A0 benutzt A1-A3 ist offen?! Als 
Anzeige erhalte ich 8191 unabhängig von der Eingangsspannung des AD. Wie 
hast Du das gelöst?
Grüße vom Fiete

von Rainer W. (rawi)


Lesenswert?

Friedhelm K. schrieb:
> Ich habe 2 Drop-Down für 5V und 24V versorgt mit einem 24 V
> Steckernetzgerät.

Was ist ein "Drop-Down"?
Zeige doch einmal, was du da zusammen gestöpselt hast ( Schaltplan).

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Friedhelm K. schrieb:
> Hallo Olli,
> Hast Du deine Schaltung inzwischen fertiggestellt?
Schick ihm besser eine PN, denn:
"**Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.**"

Kann also gut sein, dass der Olli gar nicht mehr mitliest. Immerhin hat 
er vor 2 Jahren 2 Beiträge verfasst.

> Als Anzeige erhalte ich 8191 unabhängig von der Eingangsspannung des AD.
Das ist 2^13-1, also einfach nur irgendein "Vollanschlag".
MNit welcher Software erhältst du diese Anzeige? Was hast du anstelle 
dieser Anzeige erwartet?

Rainer W. schrieb:
> Was ist ein "Drop-Down"?
Vermutlich das, was andere als Step-Down kennen.

Rainer W. schrieb:
> Schaltplan
Ja, genau. Und zwar am besten in einem eigenen, neuen Thread, denn
"**Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen 
einen neuen Beitrag erstellen.**"

: Bearbeitet durch Moderator
von Friedhelm K. (fiete11)


Lesenswert?

Um dem Vorwurf zu entgehen, dieses Thema gibt es bereits seid langem, 
habe ich keinen neuen Beitrag erstellt.
Nun zum Problem. Aufbau und Schaltplan wie von Olli beschrieben. 
Lediglich kein Step-Up Baustein, sondern eine zweite Stromquelle über 
einen weiteren Step-Down Regler (24V). Software aus der 
Arduino-Beispiel-Bibliothek:
ADS1115-Driver / ReadSingleValue. Displayanzeige über I2C auf LCD 20x4.
1
  #include <Wire.h>
2
  #include <time.h>
3
  
4
  #include <LiquidCrystal_I2C.h>
5
  LiquidCrystal_I2C lcd(0x27,20,4);
6
7
  #include "Arduino.h"
8
  #include "ADS1115-Driver.h"
9
  ADS1115 ads1115 = ADS1115(ADS1115_I2C_ADDR_SDA);
10
11
  uint16_t readValue(uint8_t input) {
12
    ads1115.setMultiplexer(input);
13
    ads1115.startSingleConvertion();
14
15
    delayMicroseconds(25); // The ADS1115 needs to wake up from sleep mode and usually it takes 25 uS to do that
16
17
    while (ads1115.getOperationalStatus() == 0);
18
19
    return ads1115.readConvertedValue();
20
  }
21
22
 
23
// ********************************* Setup *************************************
24
25
  void setup() {  
26
27
    lcd.begin(20,4);              // LCD-Panel 4-Zeilig
28
    lcd.init();
29
    lcd.backlight();
30
31
      Serial.begin(9600);
32
33
      ads1115.reset();
34
      ads1115.setDeviceMode(ADS1115_MODE_SINGLE);
35
      ads1115.setDataRate(ADS1115_DR_250_SPS);
36
      ads1115.setPga(ADS1115_PGA_4_096);
37
    }  
38
39
40
  void loop() {
41
42
  uint16_t value0 = readValue(ADS1115_MUX_AIN0_GND);
43
  uint16_t value1 = readValue(ADS1115_MUX_AIN1_GND);
44
  uint16_t value2 = readValue(ADS1115_MUX_AIN2_GND);
45
  uint16_t value3 = readValue(ADS1115_MUX_AIN3_GND);
46
    
47
    lcd.setCursor(0, 0);
48
    lcd.print (" Fuellstandsanzeige ");
49
    lcd.setCursor(1, 2);
50
    lcd.print(value0);
51
    lcd.setCursor(6, 2);
52
    lcd.print("Ltr =");
53
    lcd.setCursor(12, 2);
54
    lcd.print("     %");        
55
    lcd.setCursor(2, 3);
56
    lcd.print(value1);         
57
    lcd.setCursor(8, 3);
58
    lcd.print(value2);        
59
    lcd.setCursor(14, 3);
60
    lcd.print(value3);
61
62
  delay(100);
63
64
  }
Wenn ich jetzt am A0 Eingang des ADC eine Spannung (2-4V) verändere 
sollte doch sich doch auch die Anzeige verändern? Oder ist der ADC 
möglicherweise defekt?

: Bearbeitet durch Moderator
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Friedhelm K. schrieb:
> Um dem Vorwurf zu entgehen, dieses Thema gibt es bereits seid langem,
> habe ich keinen neuen Beitrag erstellt.
Ja, wenn jeder seine Fragen zu LEDs im selben Thread stellen würde, dann 
wäre der schnell unübersichtlich.

> Aufbau und Schaltplan wie von Olli beschrieben. Lediglich kein Step-Up
> Baustein, sondern eine zweite Stromquelle über einen weiteren Step-Down
> Regler (24V).
Du hast ein Problem mit deiner Schaltung und/oder deinem Aufbau. Also 
zeig deinen Schaltplan und deinen Aufbau.

> Oder ist der ADC möglicherweise defekt?
Hast du mit einem Oszi oder Logikanalyzer kontrolliert, ob die 
Kommunikation überhaupt funktioniert?

von Friedhelm K. (fiete11)


Angehängte Dateien:

Lesenswert?

Einen Ozi müsste ich mir erst besorgen. Die Schaltung (auch von Olli) 
liefert 24V an den ADS? Das ist mir etwas suspekt. Deshalb nächster 
Versuch mit neuem ADS1115 und Einspeisung einer Spannung von 1-4V an A0. 
Leider ohne Änderung der Anzeige. Jetzt bin ich mit meinem Latein am 
Ende.

von Helmut -. (dc3yc)


Lesenswert?

Hat der Leonardo Pullup-Widerstände an SDA und SCL?

von Obelix X. (obelix)


Lesenswert?

75 Ohm in Reihe zum ADC-Eingang ist wohl nicht ganz richtig.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Helmut -. schrieb:
> Hat der Leonardo Pullup-Widerstände an SDA und SCL?
Irgendwer muss an diesem I2C Pullups haben, denn sonst würden nicht 
lauter Einsen eingelesen werden (Stichwort 2^13-1 = 8191 = 
0b11111111111111).

Friedhelm K. schrieb:
> Deshalb nächster Versuch mit neuem ADS1115 und Einspeisung einer
> Spannung von 1-4V an A0.
Wie wäre es, wenn du da mal der Einfachheit halber auch mal 0V 
einspeisen würdest?

> Die Schaltung liefert 24V an den ADS?
Korrekt: dine Schaltung ist so falsch und bringt den ADC über seine 
Absolute Maximum Ratings hinaus (so kann man ICs ganz leicht kaputt 
machen). Richtig müsste das so aussehen:
1
  24V --TL136----o------ A0 ADC I2C ------ µC
2
                 |          GND            |
3
                75R          |             |
4
                 |           |             |
5
  GND -----------o-----------o-------------o---
Und dann fallen bei 4mA am Bürdewiderstand 0,3V ab und bei 20mA sind es 
1,5V.

> Die Schaltung (auch von Olli)
Die vom Olli ist übrigens grundlegend anders, denn da ist 1 Widerstand 
mehr drin.

Friedhelm K. schrieb:
> Einen Ozi müsste ich mir erst besorgen.
Tu das. Es ist mir ein absolutes Rätsel, wie man eine serielle 
Schnittstelle ohne ein solches Gerät in Betrieb nehmen oder gar debuggen 
will. Das ist doch wie "Autofahren nach Gehör".

: Bearbeitet durch Moderator
von Obelix X. (obelix)


Lesenswert?

Schon mal die Spannung mit einem Multimeter am ADC gemessen?. Du 
solltest dein Problem nicht mit herumprobieren (try and error) lösen, 
sondern mit systematischem herangehen.

von Friedhelm K. (fiete11)


Angehängte Dateien:

Lesenswert?

Danke für Eure Hilfe und Anregungen. Inzwischen habe ich einen Ozi 
aufgetrieben und die Signale von SDA und SCL am ADS1115 aufgezeichnet. 
Die Signale auf diesem etwas älteren Ozi sehen zwar kurios aber m.E. 
nicht schlecht aus. Dafür spricht auch das über die I2C-Leitung immerhin 
der Wert 8191 angezeigt wird. Aus der Fahrt nach Gehör wird jetzt 
vielleicht eine Fahrt durch den Nebel? Den A0 Eingang auf Null zu legen 
hat das Ergebnis nicht verändert. Die Spannungswerte am A0 habe ich 
bislang nicht gemessen, da ich das Problem schrittweise lokalisieren 
möchte, also zunächst mal ohne den Sensor sondern mit Fremdspannungen 
ansteuern. Mir kommt es so vor, als wenn der AD überhaupt nicht 
arbeitet. Es ist ihm völlig egal welche Spannung angelegt wird. Und das 
bei einem fabrikneuen ADS1115. Zur Vervollständigung noch die 
HEX-Adressen vom LCD 0x27 und ADS1115 0x48.

von Manfred P. (pruckelfred)


Lesenswert?

Friedhelm K. schrieb:
> Die Spannungswerte am A0 habe ich
> bislang nicht gemessen, da ich das Problem schrittweise lokalisieren
> möchte,

Das kann kann ich hier nich mal ansatzweise erkennen.

> also zunächst mal ohne den Sensor sondern mit Fremdspannungen
> ansteuern.

Zu der ADS1115-Library gibt es sicherlich auch fertige 
Programmbeispiele. Also den Arduino mit nur dem ADS1115 verbinden, den 
Eingang per Drehpoti zwischen seiner Betriebsspannung und GND speisen. 
Natürlich sind alle vier Eingänge beschaltet, offen ist unzulässig. Es 
sollte auch klar sein, dass Eingangsspannungen oberhalb seiner 
Versorgung verboten sind und zum Tode führen könnnen.

Die ausgelesenen Werte werden per serial.print zum PC geschickt.

Erst, wenn das Programmbeispiel sinnvolle Werte liefert, kommt der Rest 
der Umgebung hinzu.

von Obelix X. (obelix)


Lesenswert?

Friedhelm K. schrieb:
> Die Spannungswerte am A0 habe ich
> bislang nicht gemessen, da ich das Problem schrittweise lokalisieren
> möchte, also zunächst mal ohne den Sensor sondern mit Fremdspannungen
> ansteuern.

Ja genau, und da steht an Punkt eins der Liste Spannung am ADC messen! 
Was ist das für eine Fremdspannung?

Friedhelm K. schrieb:
> Dafür spricht auch das über die I2C-Leitung immerhin
> der Wert 8191 angezeigt wird.

Schreibe dir diese Zahl mal in Binär auf ein Blatt Papier. Fällt dir 
etwas auf?

: Bearbeitet durch User
von Friedhelm K. (fiete11)


Lesenswert?

So, ich habe Manfreds Vorschlag folgend zunächst ein Poti auf den A0 
gelegt. Ohne Erfolg. Dann habe ich nach anderen Libaries gesucht. Hier 
hatte ich dann mit ADS1115_WE aus Wolles Elektronikkiste einen Treffer. 
Jetzt habe ich variable Wertanzeigen und kann das Projekt fertig 
stellen.
Euch Allen Vielen Dank für die Tipps und Ratschläge!
Gruß Fiete

von N. M. (mani)


Lesenswert?

Mh OK. Auch eine Möglichkeit.
Hoffentlich handelt die auch die Rückgabewerte der Wire Bibliothek 
einigermaßen.
Ich vermute dass die alte Library den Sensor nicht richtig gefunden 
hatte.

In ADS1115::readRegister wird, wenn nicht available, eine -1 zurück 
gegeben.
Finde ich schonmal verdächtig bei deinen "Messwerten".
Allgemein gab sich die alte Library nicht gerade Mühe.
Rückgabewerte prüfen ist da nur eins. Wenn ich sehe dass in 
ads1115.readConvertedValue() groß mit float gerechnet wird und das dann 
implizit über readValue auf uint16_t gecastet wird Frage ich mich, 
warum!?

von Wulf D. (holler)


Lesenswert?

Mal einen eher allgemeinen Kommentar zum Thema Füllstandsensor in einer 
Wasserzisterne. Habe meine immerhin schon seit fast 30 Jahren in 
Betrieb.

Eine Zisterne ist eine ziemlich lebensfeindliche Umgebung für viele 
Metalle in Verbindung mit Strom, insb. für Elektronik. Mit der Zeit 
dringt fast überall Feuchtigkeit ein und es gammelt überall. Im harten 
Wintern, abhängig von der Konstruktion der Zisterne, friert zudem der 
Bereich oberhalb der Wasserlinie und es bilden sich überall 
zerstörerische Eiskristalle aus.

Ich würde jede Elektronik aus dem Einflussbereich des Wassers 
fernhalten, wenn es mehr als nur ein Demonstrator werden soll, der 
vielleicht ein paar Wochen funktioniert.

Wenn möglich, eine mechanische oder noch besser, eine hydraulische 
Lösung verwenden.

Ich hatte damals beim Bau eine simple Widerstandsmessung mit Drähten 
(Endpunkten) in verschiedenen Höhen vorgesehen und die Elektronik im 
trockenen Keller verstaut. Aber selbst die simplen Drähte muss ich alle 
10 Jahre auswechseln.

Wulf

: Bearbeitet durch User
von Manfred P. (pruckelfred)


Lesenswert?

Friedhelm K. schrieb:
> So, ich habe Manfreds Vorschlag folgend zunächst ein Poti auf den A0
> gelegt. Ohne Erfolg. Dann habe ich nach anderen Libaries gesucht. Hier
> hatte ich dann mit ADS1115_WE aus Wolles Elektronikkiste einen Treffer.

Also hat der leichte Tritt in den ... auf den Weg geholfen, freut mich.

Mal gucken: https://wolles-elektronikkiste.de/ads1115
Oh ja, mit der Beschreibung hat er sich ja richtig viel Mühe gegeben, 
gut gemacht.

Ich nutze die vom Akku-Dänen und lasse meinen ADS1115 frei laufen:
http://lygte-info.dk/project/ADS1115Library%20UK.html

Friedhelm K. schrieb:
> Jetzt habe ich variable Wertanzeigen und kann das Projekt fertig
> stellen.

Jetzt auch nachgemessen sinnvoll korrekte Werte?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.