Forum: Analoge Elektronik und Schaltungstechnik Analoge Bestimmung der Leitfähigkeit


You were forwarded to this site from EmbDev.net. Back to EmbDev.net
von Felix W. (felix_w291)


Angehängte Dateien:

Lesenswert?

Moin moin,

seit einiger Zeit arbeite ich an einer Platine zur Auslesung 
verschiedener Sensoren. Zweck ist es ein Hydroponiksystem (Pflanzen 
wachsen in Nährlösung) zu überwachen. Hierfür ist insbesondere die 
Leitfähigkeit der Nährlösung bzw. des Wassers zu bestimmen, der 
sogenannte eC- oder Tds-wert.

Bisher hat die Messung eben dieses Wertes super mit dem Breakoutboard 
von DFRobot geklappt. Es beinhaltet einen CD4060 und einen 4er OP-amp, 
sowie diverse Kleinteile, welche die Probe (eigentlich bloß zwei Drähte 
mit bekanntem Abstand) mit einer Sinusförmigen Spannung versorgen. 
Soweit ich es verstanden habe, wird über die Stromstärke berechnet 
welcher Widerstand zwischen den Drähten herrscht. Die Sinuswelle ist 
nötig, um die Korrosion an den Elektroden im Schach zu halten.

Hier ein Link zum Breakoutboard und dem Schaltbild:

https://wiki.dfrobot.com/Gravity__Analog_TDS_Sensor___Meter_For_Arduino_SKU__SEN0244

https://raw.githubusercontent.com/Arduinolibrary/Gravity_Analog_TDS_Sensor_For_Arduino/master/Analog%20TDS%20Sensor(V1.0)%20Schematic.pdf

Das Board gibt an seinem Ausgang eine Spannung von 0-2.3V aus und 
spiegelt dabei mehr oder weniger linear den Tds-Wert von 0-1000 ppm 
(parts per milliopn) wieder.

Nun habe ich versucht das Schaltbild von DFRobot in mein eigenes 
Platinendesign zu integrieren und somit die restliche Sensorik zu 
ergänzen.
Obwohl ich mich besten Gewissens an das Schaltbild gehalten habe kommt 
es z folgendem Fehlverhalten:

Meine Platine spuckt bei minimaler Leitfähigkeit (Probe in der Luft) die 
eine Spannung von 2.5v aus und reagiert auch nicht auf Änderungen.

So schrecklich kompliziert sollte die Schaltung für jemanden mit ein 
bisschen mehr Erfahrung nicht sein. Kann da mal jemand rübergucken?
Den Widerstand R7 habe ich bereits abgelötet und durch einen 10K 
widerstand ersetzt - ohne Erfolg. Kann es sein, das der CD4060 dadurch 
schon kaputtgegangen ist?

Die Platine ist mit EasyEDA designed und ich kann gerne die JSON files 
teilen.

Vielen Dank für eure Zeit,

Felix

von Werner H. (werner45)


Lesenswert?

Einen 4060 bekommt man nicht so schnell kaputt.
Ein Sinus kommt da aber nicht raus, sondern ein Rechteck (das geht aber 
auch).
Die Ausgabe Null ist richtig, da Du einen unendlichen Widerstand (= 
Leitfähigkeit Null) am "Sensor" hast. Schalte mal verschiedene 
Widerstände von 1 MOhm abwärts bis 1 kOhm anstelle des Sensors. Ein 
Scope ist hilfreich bei der Fehlersuche.
Eine ppm-Angabe ist Unfug, da die Leitfähigkeit eines Ionengemischs 
angezeigt wird, da kann man keine ppm guten Gewissens angeben. H+ oder 
OH- Ionen haben den größten Effekt.

von Roland E. (roland0815)


Lesenswert?

Geht so, ist aber viel zu aufwendig gelöst.
1 RtR OPV, 2 Kondensatoren, drei Widerstände einen ADC und einen 
Treiberpin.
Fertig.

von MaWin (Gast)


Lesenswert?

Felix W. schrieb:
> Meine Platine spuckt bei minimaler Leitfähigkeit (Probe in der Luft) die
> eine Spannung von 2.5v aus

Da geht wohl ein Gleichrichter-OpAmp an den positiven Anschlag. Pins 
vertauscht ?

1M nicht an GND sondern -3V ?

So doll sind die -3V aus einem LTC1044 auch nicht.

Insgesamt ist die Schaltung steinzeitlich. Wen man schon einen uC 
verwendet mit Analogeingang,  nutzt  man den auch  als Takterzeuger und 
Synchrongleichrichter.

Zur Leitwertmessung benötigt man gleichspannungfreie Wechselspannung. 
Die kann ein uC heute einfacher liefern als alte Analogelektronik, und 
auch gleich noch den Messbereich umschalten: An PA0 liegt eine exakt 50% 
PWM, und an EINEM der PA3, PA4, PA5 oder PA6, die anderen sind Eingänge.
1
----+  Probe
2
 PA0|---o o--+
3
    |        |
4
 PA1|---<|---+ Buffer-OpAmp falls A/D-Eingang niederohmige Quelle haben will
5
    |        |
6
 PA2|-+      |
7
    | |      |
8
 PA3|-+-10R--+
9
uC  |        |
10
 PA4|---1k---+
11
    |        |
12
 PA5|--100k--+
13
    |        |
14
 PA6|--10M---+
15
----+

Beitrag #6827857 wurde vom Autor gelöscht.
von Felix W. (felix_w291)


Angehängte Dateien:

Lesenswert?

Guten Abend,

vorerst vielen Dank für die schnellen Antworten!

Werner H. schrieb:
> Schalte mal verschiedene
> Widerstände von 1 MOhm abwärts bis 1 kOhm anstelle des Sensors. Ein
> Scope ist hilfreich bei der Fehlersuche.

Wird heute Abend gemacht!

Roland E. schrieb:
> Geht so, ist aber viel zu aufwendig gelöst.
> 1 RtR OPV, 2 Kondensatoren, drei Widerstände einen ADC und einen
> Treiberpin.
> Fertig.

Also einen externen ADC oder kann ich gleich den ausm ESP32 nehmen? Wie 
wird das ganze denn geschaltet? Bräuchte ich nicht einen Pin am ESP der 
ein PWM-Signal erzeugt und einen weiteren der es wieder empfängt nachdem 
es durch die Probe gegangen ist und vom OP-Amp verstärkt wurde?
Alles in allem würde ich die Komplexität des Projektes natürlich gerne 
reduzieren, aber habe die PCBs jetzt schon bestückt hier liegen und 
möchte auch unbedingt meinen Fehler finden.

MaWin schrieb:
> Da geht wohl ein Gleichrichter-OpAmp an den positiven Anschlag. Pins
> vertauscht ?
>
> 1M nicht an GND sondern -3V ?

Ich habe mich da völlig auf das Schaltbild von DFRobot verlassen. Da ist 
1M an GND, aber werde das später mal durchritzen und auf -3V legen. Die 
Platinen habe ich hier in DE bestücken lassen und bin zuversichtlich, 
dass da alles stimmt. Im Anhang ein PDF meines Platinenlayouts.
verbaut ist ein LMV324DR2G von ON Semicon:

https://www.mouser.de/datasheet/2/308/1/LMV321_D-2314806.pdf

Siehe Pinbelegung auf Seite 2 (SOIC-16). Stimmt mit dem Footprint in 
EasyEDA überein.

MaWin schrieb:
> So doll sind die -3V aus einem LTC1044 auch nicht.

In der Tat habe ich das auch schon festgestellt. Als ich die 
Spannungsversorgung von vorne bis hinten durchmessen wollte fiel mir 
auf, dass am Ausgang des Torex XC6421AB26ER-G voltage converters nicht 
die vorgesehenen 3V sondern nur 2.64V anliegen. Das ändert sich, sobald 
ich die Last abnehme. Ist der Arme Konverter vielleicht einfach überm 
Limit? Der LTC1044 spuckt auch keine -3V raus, sondern nur -1V. Habe den 
Torex mal abgetrennt und bin mit einem externen 3V Netzteil an den 
LTC1044 gegangen - auch nur -1.25V am Ausgang. Dabei bin ich mir auch 
hier sicher, das Teil richtig angeschlossen zu haben.
Ich habe zum LTC1044 schon ein Ticket offen und warte auf Rückmeldung, 
will aber nicht glauben, dass eine Reihe kaputter Chips verantwortlich 
ist.

MaWin schrieb:
> Zur Leitwertmessung benötigt man gleichspannungfreie Wechselspannung.
> Die kann ein uC heute einfacher liefern als alte Analogelektronik, und
> auch gleich noch den Messbereich umschalten: An PA0 liegt eine exakt 50%
> PWM, und an EINEM der PA3, PA4, PA5 oder PA6, die anderen sind
> Eingänge.----+  Probe
>  PA0|---o o--+
>     |        |
>  PA1|---<|---+ Buffer-OpAmp falls A/D-Eingang niederohmige Quelle haben
> will
>     |        |
>  PA2|-+      |
>     | |      |
>  PA3|-+-10R--+
> uC  |        |
>  PA4|---1k---+
>     |        |
>  PA5|--100k--+
>     |        |
>  PA6|--10M---+
> ----+

Das klingt sehr interessant, ich habe es aber leider nicht ganz 
durchschaut. Wie ich das verstehe würde der  uC an PA0 50%PWM ausgeben, 
die durch die Probe mit unbekanntem Widerstand gehen, vom OP-Amp wieder 
verstärkt werden und dann an PA1 gemessen? PA3-6 sind dann jeweils 
unterschiedliche Messbereiche? Was ist mit PA2?

Werde das auf jeden Fall weiter verfolgen, aber momentan möchte ich vor 
allem heraus finden was hier nicht stimmt.

Nochmals vielen Dank für eure Zeit! Ich melde mich, wenn ich eure 
Vorschläge umgesetzt habe!

Beste Grüße,
Felix

von MaWin (Gast)


Lesenswert?

Felix W. schrieb:
>> 1M nicht an GND sondern -3V ?
>
> Ich habe mich da völlig auf das Schaltbild von DFRobot verlassen. Da ist
> 1M an GND,

Das ist ja auch richtig, die Vermutung war, dass du es falsch verdrahtet 
hast.

Felix W. schrieb:
> Der LTC1044 spuckt auch keine -3V raus, sondern nur -1V.

Da ist dein Problem.

von Felix W. (felix_w291)


Angehängte Dateien:

Lesenswert?

Schönes Wochenende zusammen,

MaWin schrieb:
> Felix W. schrieb:
>> Der LTC1044 spuckt auch keine -3V raus, sondern nur -1V.
>
> Da ist dein Problem.

Ich habe versucht den Fehler durch Messungen weiter einzugrenzen, 
allerdings habe ich noch nicht herausfinden können, was wirklich falsch 
ist.

Im Anhang ist ein kleines .PNG um zu veranschaulichen, was ich wo 
gemessen habe.

Der LTC1044A ist nach Vorbild im Datenblatt verschaltet (siehe Figure 6. 
Seite 8. - Negative voltage inverter).

https://www.analog.com/media/en/technical-documentation/data-sheets/1044afa.pdf

als Kondensatoren, welche im Datenblatt als nicht kritisch deklariert 
werden, habe ich mich für WE: 865090340002 von Würth elektronik 
entschieden:

https://www.we-online.com/katalog/de/WCAP-ASLU?sq=865090340002&sp=https%3A%2F%2Fwww.we-online.com%2Fweb%2Fde%2Fwuerth_elektronik%2Fsearchpage.php%3Fsearch%3D865090340002#865090340002

Bei meiner ersten Messung habe ich die Platine im Originalzustand 
durchgemessen: Zwischen 1. und 4. liegen 2.64 statt der gewünschten 3.0V 
und zwischen 2. und 3. lediglich -1V.

Für die zweite Messung habe ich an den grünen Markierungen die 
Leiterbahnen durchgetrennt um den LTC von der Versorgung und Last zu 
trennen. Anschließend habe ich an punkt 1. und 4. eine externe 3V 
Versorgung angelötet.

Das Ergebnis: -0.88V zwischen 2. und 3.

Als drittes habe ich dann noch den BOOST-Pin des LTC auf +3V gelegt. 
Ohne Veränderung.

Hat da jemand eine Idee, woran es liegen könnte? Ist der LTC vielleicht 
durch irgendeine statische Entladung kaputt gegangen? Auf dem Mainboard 
habe ich mittlerweile einen ESD-Schutz, den sollte ich auf dem 
Sensorboard auch nachrüsten.

Sind die Kondensatoren vielleicht zu "langsam"?

Der Support von Analog Devices hat sich leider noch nicht gemeldet, aber 
ich hoffe auf ein paar schlaue Ideen von euch!

Werner H. schrieb:
> Schalte mal verschiedene
> Widerstände von 1 MOhm abwärts bis 1 kOhm anstelle des Sensors. Ein
> Scope ist hilfreich bei der Fehlersuche.

Ein Scope habe ich leider nicht, aber ich mein Multimeter spuckt 
folgende werte aus:

Original DFRobot Platine:

1MOhm: 0V am Ausgangspin
470KOhm: 0V am Ausgangspin
220KOhm: 0V am Ausgangspin
100KOhm: 0V am Ausgangspin
47KOhm: 0.01V am Ausgangspin (Yay!)
22KOhm: 0.04V am Ausgangspin
4.7KOhm: 0.23V am Ausgangspin
2.2KOhm: 0.49V am Ausgangspin
1KOhm: 1.1V am Ausgangspin
470Ohm: 2.3V am Ausgangspin

Es sieht also so aus als würde sich der Messbereich zwischen 22KOhm und 
470 Ohm abspielen.

Die eigene Platine spuckt folgendes aus:

1MOhm: 2.41V am Ausgangspin
470KOhm: 2.38V am Ausgangspin
220KOhm: 2.39 am Ausgangspin
100KOhm: 2.40V am Ausgangspin
47KOhm: 2.38V am Ausgangspin
22KOhm: 2.38V am Ausgangspin
4.7KOhm: 2.39V am Ausgangspin
2.2KOhm: 2.38V am Ausgangspin
1KOhm: 2.42V am Ausgangspin
470Ohm: 2.42V am Ausgangspin

(nicht so yay..)

Die Differenzen sind denke zu vernachlässigen.

Ich bin planlos.

Irgendwelche Ideen?

Beste Grüße und ein schönes Wochenende,

Felix

von jemand (Gast)


Lesenswert?

Ich würde nochmal den Teil der Schaltung nachlöten, hat bei mir schon 
den einen oder anderen Fehler gelöst. Auch wenn (leider) es kein 
Allheilmittel ist.

von jemand (Gast)


Lesenswert?

Und dabei insbesondere den IC

von Roland E. (roland0815)


Lesenswert?

Felix W. schrieb:
> Guten Abend,
>
> vorerst vielen Dank für die schnellen Antworten!
>
> Werner H. schrieb:
>> Schalte mal verschiedene
>> Widerstände von 1 MOhm abwärts bis 1 kOhm anstelle des Sensors. Ein
>> Scope ist hilfreich bei der Fehlersuche.
>
> Wird heute Abend gemacht!
>
> Roland E. schrieb:
>> Geht so, ist aber viel zu aufwendig gelöst.
>> 1 RtR OPV, 2 Kondensatoren, drei Widerstände einen ADC und einen
>> Treiberpin.
>> Fertig.
>
> Also einen externen ADC oder kann ich gleich den ausm ESP32 nehmen?

Wenn du es richtig machst, kannst du den ADC deines beliebigen MuC 
nehmen, wenn du es kompliziert machts, musst du differentiell messen.

> Wie
> wird das ganze denn geschaltet? Bräuchte ich nicht einen Pin am ESP der
> ein PWM-Signal erzeugt und einen weiteren der es wieder empfängt nachdem
> es durch die Probe gegangen ist und vom OP-Amp verstärkt wurde?

Nein. Du brauchst nur ein Pin für die PWM, und ein ADC-Pin um das 
Ergebnis zu messen.
Die Luxusvariante verwendet einen weiteren ADC, um die Qualität des 
Eingangspulses zu bewerten.

Hinweis: Deine Messung wird sinnvollerweise potentialfrei umgesetzt 
(Dafür die Kondesatoren). Messungen in Flüssigkeiten mit 
Gleichstromanteil führen sonst zwangsläufig zu galvanischen Effekten im 
Medium bis hin zum Abtrag der Elektroden.

Ich werde hier keine Schaltung skizzieren oder weitere Versuche 
kommentieren, um keinen Ärger mit Patentinhabern zu bekommen.

Roland

von Wolfgang (Gast)


Lesenswert?

Felix W. schrieb:
> Was ist mit PA2?

Der soll wohl PA3 unterstützen.
Ob das bei 10Ω im Spannungsteiler ausreichend hilft, wage ich hier mal 
zu bezweifeln. Zumindest kommt man dabei nicht ohne Kalibrierung aus, 
weil die Ausgänge des µC nicht beliebig niederohmig sind.

von MaWin (Gast)


Lesenswert?

Roland E. schrieb:
> Ich werde hier keine Schaltung skizzieren oder weitere Versuche
> kommentieren, um keinen Ärger mit Patentinhabern zu bekommen.

LOL

von Felix W. (felix_w291)


Angehängte Dateien:

Lesenswert?

Hallo leute,

MaWin schrieb:
> Roland E. schrieb:
>> Ich werde hier keine Schaltung skizzieren oder weitere Versuche
>> kommentieren, um keinen Ärger mit Patentinhabern zu bekommen.
>
> LOL

Ich hätte nicht gedacht, dass eine Leitwertmessung so kompliziert und 
Patentwürdig ist. Wie wichtig ist denn die Potentialfreiheit, wenn man 
schon mit Wechselstrom arbeitet?

Leider konnte ich den Fehler mit dem LTC1044A bis jetzt nicht lösen.

Aber ich habe einiges zu den Alternativen gelesen und flott eine ganz 
simple Schaltung realisiert (Siehe Anhang). Bei einem 50% Dutycycle des 
PWM-Signals (DS) sollte an der Probe ein rechteckiger Wechselstrom 
fließen.
Gemessen wird direkt mit dem ADC des ESP32-Wrover-IE (EC).

Das Messergebnis scheint soweit zuverlässig und stabil zu sein.

Dem Kribbeln nach auf meiner Zunge fließt aber auch ordentlich Strom. 
Ist das, in Anbetracht der Tatsache, dass der Sensor permanent im Wasser 
sein soll, nicht bedenklich?

außerdem würde ja auch ohne anliegendes PWM-Signal ein Strom von min. 
3.3V/440ohm = 7.5mA fließen, oder nicht?

Nun habe ich die Idee gehabt  einfach einen Mosfet vor bzw. hinter die 
Widerstände im Spannungsteiler zu schalten und diese nur anzusprechen, 
wenn auch ein PWM-Signal ausgegeben wird bzw. wenn gemessen wird (alle 
paar Sekunden oder so.) Unangesprochen wäre die Probe dann nur mit dem 
Trigger-pin (DS) und dem ADC pin (EC) verbunden und es sollten im 
Ruhezustand keine ströme fließen.

Ist das Unfug?

Wäre es hier evtl. Sinnvoll vor die Probe noch einen Kondensator zum 
Filtern von Gleichstromanteilen in Serie zu schalten? Wie würde ich den 
Dimensionieren? Sollte es mein Ziel sein den Blindwiderstand möglichst 
gering zu halten, sprich hohe Kapazität und Frequenz im PWM-Signal?

Was das Thema Potentialfreiheit angeht stehe ich noch ein wenig auf dem 
Schlauch. Bräuchte ich dann nicht irgendeine DC/DC Quelle mit getrenntem 
GND-Level für die Messung?

Vielen Dank und beste Grüße,

Felix

von Felix W. (felix_w291)


Angehängte Dateien:

Lesenswert?

Moin Leute,

also ich habe herausgefunden, dass der LMV324 mit 6V nominaler Spannung 
überfordert ist. Ist ja auch nur bis 5,5 ausgelegt.

Kurzer Hand mal den von der DFRobotplatine runter gelötet und auf meine 
eigene gepackt - Zack, schon liegen die richtigen spannungen an.

Der LTC1044A spuckt seine gewohnten -3V aus und ich kann mittels 
Widerständen  das gleiche verhalten nachmessen, wie mit der 
Originalplatine von DFRobot.

Allerdings reagiert die Probe nicht auf wasser, egal wie salzig es auch 
seien mag.

Jemand eine Idee?

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.