Mehr Tanksensoren

Hallo zusammen

Mein Projekt wächst und wächst.
Mittlerweile habe ich 4 Tanksensoren angeschlossen. Bräuchte jedoch noch einen weiteren :see_no_evil:.

Ich habe im Forum nichts gefunden, aber würde es eine Möglichkeit geben?
Evt mit einem D1 Mini per MQTT?

Der 5. Sensor auf dem Pekaway Display würde mir in den User Data reichen. Dashboard brauche ich fast nicht.

@Tobi
Geht nir auch so :slight_smile:
Schau mal, hier ist die Lösung : Mopeka Gas Füllstandsanzeige - #15 by Mikel

Werde mir somit einen ADS1115 bestellen!
Danke :+1:

Doch noch eine Frage.
Ich habe mir den ADS1115 jetzt ein bisschen angeschaut.
Dieser hat 4 analoge Eingänge. Also brauche ich einen Votronic Sensor der die Spannung liefert?
Oder geht hier auch ein Widerstandsensor?

Das geht auch mit Widerstanssensoren
Wenn du dir den Schaltplan vom Relayboard anschaust kannst du sehen wie der Widerstand vom Spannungsteiler verschaltet ist

@Mikel @Tobi
Eigentlich wollte ich mir ja einen 2. Shunt zulegen, daher hatte ich noch einen ADS1115 hier.
Nun ist der ADS halt erst mal ein Tanksensor geworden :joy:
Und das ist der Testaufbau. :joy: :joy:

Mit der Python Datei hat leider irgendwie nicht funktioniert, daher habe ich die Palette um node-red-contrib-ads1x15_i2c erweitert, der Rest ist fast nur eine Kopie des Vorhandenen.

Es gibt ein Seite mit Anzeigen, und eine Seite für die Konfiguration.


Tanksensor.json (96,8 KB)

Bin mal gespannt wie viele Mopeka Gassensoren hier angeschlossen werden :smiley:
Gruß Arno

1 Like

@ahtdf
Hi Arno, einmal mehr: vielen Dank!!!
Bin gerade am neuen Sensor. Hast du Widerstände zwischen dem Sensor und den Verbindungen? Ist das ein MUSS? Wenn ja, könntest du die Bezeichnung der Widerstände nennen. Ich habe jetzt nur den ADS1115 hier liegen.

@Mikel
ist das so eine Platine???


da sind alle Wiederstände drauf, du brauchst lediglich die Wiederstände für den Spannungsteiler. Das ist ein 1Kohm Wiederstand

die 10K und der Kondensator wären auf dieser Platine drauf.
für Adresse 49 musst du nur den VCC mit dem Adresspin verbinden.

Wenn du einen Kapazitiven Sensor hast Votronic oder ähnliches gest du ohne den Spannungsteiler direkt auf AINx Achtung MAX 3,3V
Gruß
Arno

@ahtdf
Ja, genau diesen Sensor habe ich (wenigstens etwas richtig gemacht :slight_smile: )
Aber ob der Mopeka, oder der baugleiche Livello, Gasinhaltsmesser kapazitiv arbeitet??? Keine Ahnung.

Hatte der nicht einen 90Ohm Wiederstand???
War das nict der???


dann gehts über der Spannungsteiler

1 Like

@ahtdf Die Lieferung de Widerstände hat länger gedauert.
Ich muss nochmal fragen, der Gassensor in deiner Zeichnung hat nur 2 Leitungen? Ich denke die 12 Volt zufuhr hast du ausser Acht gelassen.
Also schliesse ich die vier Kabel vom ADS an den I2C Bus an, 12 Volt vom Sensor und Masse an Batterie - und dem grünen führe an A0 und setze den unter 3,3 Volt Spannung mit dem Widerstand dazwichen?
Möchte nix schrotten!!!

Hey Mikel
auf dem Kabelplan sehe ich halt nur den grünen und den Masse Draht.
dazwischen sollten 0-90 Ohm sein.
Das ist der Sensor auf meiner Zeichnung, wenn der Sensor noch 12 Volt hat??? Stimmt da sicher was nicht.
In dem anderen Bericht war die Rede von einem Wiederstandsfühler.
wenn du die Originalanzeige parallel zum Relayboard schaltest, dann schrottest du sicher was.
An den ADS1115 kommen 3,3v GND und SDA, SCL.

Hi Arno.
Wenn du auf dem Bild über deiner Zeichnung bei Wiring Instructions auf die linke Bildhälfte schaust, siehst du das dritte Kabel “12 volt red”

AHHHHHHHHH, mein Fehler!
Die 12 Volt gehen an mein Anzeigepanel! Der Sensor selbst hat kein 12 Volt Anschluss!!

hier hat sich der Fehlerteufel eingeschlichen :frowning:
Den Bereich einfach austauschen

global-set_5-8.json (9,6 KB)

So, hat ein wenig gedauert, aber jetzt bin ich fertig. Funktioniert genial!
Musste an dem Flow von @ahtdf noch etwa rumdoktorn, da die Spannungswerte vom Spannungsteiler meines Gastanksensors nicht linear verlaufen! Musste somit eine Funktion zur Linearen Interpolation ergänzen, habe dazu 9 Spannungswerte vorgegeben und jetzt passt es von den %-Werten.
Hier mal der geänderte Flow, falls irgendwann mal jemand auf die gleichen Ideen kommt.

Danke Arno!!!

[ { "id": "a6d91c46c7952ad8", "type": "function", "z": "85d1ca8b7292bbe8", "name": "Berechnung Füllstand", "func": "const voltage = msg.payload; // Spannung in mV\n\n// Definiere die bekannten Spannungs- und Prozentwerte\nconst points = [\n { voltage: 2.2, level: 0 },\n { voltage: 38, level: 10 },\n { voltage: 75, level: 28 },\n { voltage: 110, level: 40 },\n { voltage: 153, level: 52 },\n { voltage: 181, level: 64 },\n { voltage: 212, level: 76 },\n { voltage: 244, level: 88 },\n { voltage: 275, level: 100 },\n];\n\n// Funktion zur linearen Interpolation\nfunction interpolate(value, x1, x2, y1, y2) {\n return y1 + ((value - x1) * (y2 - y1)) / (x2 - x1);\n}\n\nlet level = 0;\n\n// Finde die passenden Punkte für die Interpolation\nfor (let i = 0; i < points.length - 1; i++) {\n const p1 = points[i];\n const p2 = points[i + 1];\n\n if (voltage >= p1.voltage && voltage <= p2.voltage) {\n level = interpolate(voltage, p1.voltage, p2.voltage, p1.level, p2.level);\n break;\n }\n}\n\n// Sicherheitshalber Grenzen setzen\nlevel = Math.max(0, Math.min(100, level));\n\n// Runde den Wert und setze ihn als Payload\nmsg.payload = { level: Math.round(level), voltage };\n\nreturn msg;", "outputs": 1, "timeout": "", "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 780, "y": 360, "wires": [ [ "33d4206d85bc0259" ] ] }, { "id": "33d4206d85bc0259", "type": "function", "z": "85d1ca8b7292bbe8", "name": "function 41", "func": "msg.payload = msg.payload.level;\nreturn msg;", "outputs": 1, "timeout": 0, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 910, "y": 440, "wires": [ [ "871cccfead552109" ] ] }, { "id": "871cccfead552109", "type": "ui_gauge", "z": "85d1ca8b7292bbe8", "name": "", "group": "28bc464cc0904581", "order": 6, "width": "3", "height": "3", "gtype": "gage", "title": "Gastank", "label": "", "format": "{{msg.payload}} %", "min": 0, "max": "100", "colors": [ "#b30036", "#e6e600", "#3acb5e" ], "seg1": "20", "seg2": "50", "diff": false, "className": "", "x": 1160, "y": 440, "wires": [] }, { "id": "28bc464cc0904581", "type": "ui_group", "name": "Strom", "tab": "deee53a800de461d", "order": 2, "disp": true, "width": "6", "collapse": false, "className": "" }, { "id": "deee53a800de461d", "type": "ui_tab", "name": "Info", "icon": "mi-info", "order": 1, "disabled": false, "hidden": false } ]

Moin Mikel
das sieht gut aus, so in der Art habe ich das mit dem Radkasten Tank gemacht.
Nur deine Berechnung ist wesentlich aufgeräumter, werd ich übernehmen :wink:
Gruß Arno

1 Like

Guten Morgen Arno.

Das macht mich jetzt schon ein wenig Stolz!

LG
Mikel

1 Like

Wenn ich die Node “Berechnung Füllstand” sehe, dann komme ich zum Programmieren zu dir in die Lehre. Das einzige was fehlt, ist das man die Werte von aussen eingeben kann :stuck_out_tongue_winking_eye:
Bist du wieder in der Sonne???
Oder frierst du noch???
LG