pH Messen - phidgets 1130

Hallo in die Runde,

aktuell versuche ich mittels dieses Produktes: http://phidgets.de/Phidgets-pH-ORP-Adapter
Product Manual: http://www.robotshop.com/media/files/PDF/product-manual-1130.pdf

den pH Wert zu messen. Funktionieren tut dies, nur leider entsprechen die gemessenen Werte nicht exakt dem der Kalibrierungsflüssigkeit.

Ich habe mir zum kalibrieren pH 7 und pH 4 gekauft.
Hiermit kann ich die Referenzwerte für die Spannung bestimmen.

Leider mangelt es mir dann an dem Wissen, wie ich die in dem Product Manual angegebene Formel anpassen muss, damit die Sonde kalibriert ist.

Vielleicht kennt sich jemand mit pH Messungen und deren Berechnung aus und kann mir hier ein wenig unter die Arme greifen.

Im Phidgets Forum habe ich diesen Beitrag gefunden: https://www.phidgets.com/phorum/viewtopic.php?f=7&t=5673

leider helfen die Aussagen dort mir nicht wirklich weiter, da ich nicht so recht verstehe, wie ich vorgehen soll.

Grüße
Tonno

Was genau hast Du gekauft, und wie an den (welchen?) Arduino angeschlossen?

Hallo DrDiettrich,

gekauft habe ich Phidgets pH/ORP Adapter und das habe ich an mein Arduino Mega an den analogen Eingang angeschlossen.

Grüße

Dann gibt es vor allem zwei mögliche Ursachen für Abweichungen:

Eine ungenaue Referenzspannung für den ADC - welche verwendest Du?

Die geringe Auflösung des ADC (10 Bit).

Tonno:
den pH Wert zu messen. Funktionieren tut dies, nur leider entsprechen die gemessenen Werte nicht exakt dem der Kalibrierungsflüssigkeit.

Was verstehst Du mit "exakt"? Wieviel falsch sind die Werte?
Grüße Uwe

Hallo,

@DrDiettrich - Das Arduino Mega hängt an einem 9V Netzteil. Um die Werte auszulesen, ist es noch über USB mit dem PC verbunden.

@uwefeld - Der Fehler beläuft sich maximal auf 1 pH-Wert abweichung. Meist jedoch im Nachkommastellenbereich (wenn die Sone länger in der Flüssigkeit war).

Mir geht es eigentlich darum zu verstehen wie dieser Passus in dem Handbuch zu verstehen sein soll:

Other Interfacing Alternatives
If you want maximum accuracy, you can use the RawSensorValue property from the PhidgetInterfaceKit. To adjust a
formula, substitute (SensorValue) with (RawSensorValue / 4.095)
If the sensor is being interfaced to your own Analog to Digital Converter and not a Phidget device, our formulas can
be modified by replacing (SensorValue) with (Vin * 200). It is important to consider the voltage reference and input
voltage range of your ADC for full accuracy and range.

Liebe Grüße
Tonno

PH-Sensoren brauchen einige Zeit bis sie ins Gleichgewicht kommen und richtig messen. Es sollte aber nicht länger als 30 S dauern.

Die Formel bezieht sich auf ein 12 Bit ADC. Der Arduino hat 10 Bit. Du mußt die Faktoren einer Kalibrationsgerade berechnen. Du mißt pH1 = 4 und pH2 = 7 und erhälst 2 ADC-Werte. Da erhälst Du die beiden Punkte ( ADC1 | 4 ) und ( ADC2 | 7 )
http://www.arndt-bruenner.de/mathe/9/geradedurchzweipunkte.htm

Mit den gefundenen Konstanten von Steigung und Offset kannst Du dann aus den gemessenen ADC einer Probelösung den PH-Wert ausrechnen.

Ungenauigkeiten können aus mehreren Quellen kommen:

  • der ADC des Arduino hat wenig Auflösung
  • die Ausgangsspannung bei Maximalwert des Verstärkers ist klein
  • die Temperatur hat einen Einfluß auf den pH Wert des Kalibrators
  • Verstärkung des pH-Verstärkers streut
  • Referenzspannung des Arduino weicht vom Sollwert ab

Welche ADC Werte Bekommst Du für die beiden Kalibratoren?
Welchen pH-Meßbereich willst Du abdecken?

Grüße Uwe

Am einfachsten berechnest Du SensorValue = analogRead(pin) * 200.0 * Aref /1024, wobei Aref die eingestellte Referenzspannung des ADC ist. Mit Aref=Vcc hängt der Messwert von Vcc ab, deshalb sollte für genaue Messungen eine stabilere Referenz verwendet werden. Wenn Du die eingebaute 1,1V Referenz verwendest, siehe analogReference(), muß vermutlich ein Spannungsteiler die Eingangsspannung herunterteilen. Bei der 2,56V Referenz des Mega könnte es auch ohne gehen - in welchem Bereich liegt denn die zu messende Spannung?

Wie mißt Du die Temperatur der Flüssigkeit? Ohne die Temperaturkorrektur mußt Du Dich über größere Fehler nicht wundern.

Frag mal Deinen Apotheker, was die Haltbarkeit Deiner Lösungen betrifft. Ich könnte mir vorstellen, daß die schon durch Kontakt mit der Luft (CO2...) unbrauchbar werden können.

Erstmal vielen Dank für die Antworten.

@uwefeld: Wenn ich es richtig verstehe, ich messe also die Spannungen meiner beiden Referenzlösungen pH-4 und pH-7 und berechne mit Hilfe der gemessenen Werte meine Gerade y = mx + b. Wobei x meine Spannung ist, m meine Steigung und b der Offset.

@DrDiettrich:

Das wäre die Funktion zum berechnen der Spannung.

float measurePHVolts()
{
    float phADC = analogRead(analogPin);
    float phVolts = (phADC/1024.0)*5.0;
    return phVolts;
}

Hier habe ich allerdings jetzt nicht wie in der Anleitung die *200 eingefügt. Vermutlich brauche ich das allerdings noch, auch wenn ich nicht weis wozu.

Außerdem steht in der Anleitung folgende:
Die Formel für den pH-Wert ist angegeben mit: pH = 0.0178 * SensorValue - 1.889
In der Anleitung sagen sie dann auch, "einfach" SensorValue durch Vin200 ersetzen. Zu pH = 0.0178 * (Vin200) - 1.889.

Ich jetzt erstmal testen, was ich denn für Spannungswerte messe, damit man hier mal zunächst einen Anhaltspunkt hat.

Zum Thema Referenzspannung: Hier nutze ich einfach die 5V. In welchem Bereich die Spannung liegt messe ich die Tage aus.

Die Temperatur der Flüssigkeit wollte ich nicht messen, sondern nur die Umgebungstemperatur mit einem DHT22. Falls dies immer noch zu ungenau ist, muss ich ein Temperaturfühler kaufen, der sich in Flüssigkeiten nutzen lässt.

Grüße
Tonno