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.

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.