Überprüfen Sie die Qualität Ihres Wassers: pH-Wert-Messung mit dem Arduino UNO R4
über
In diesem Artikel stellen wir ein pH-Meter vor, das den pH-Wert einer Lösung genau messen kann. Wir verwenden dazu einen speziellen Sensor, das Arduino-UNO-R4-Minima-Board und ein kleines 0,96-Zoll-OLED-Display. Dank seiner Vielseitigkeit kann dieses System in verschiedenen Bereichen eingesetzt werden und liefert zuverlässige Ergebnisse auf eine benutzerfreundliche Weise.
Wasser ist in vielen Zusammenhängen ein entscheidender Faktor. In der hydroponischen Landwirtschaft zum Beispiel, wo Pflanzen ohne Erde angebaut werden, spielt der pH-Wert des Wassers eine Schlüsselrolle für die optimale Nährstoffaufnahme der Pflanzen. Die ständige Überwachung des pH-Werts des Wassers ermöglicht es Landwirten und Betreibern, den Säure- oder Alkaligehalt anzupassen und so ein ideales Umfeld für das Wachstum und die Entwicklung der Pflanzen zu schaffen. Aber nicht nur die hydroponische Agrarwirtschaft profitiert von diesem Projekt. Die Aufrechterhaltung des korrekten pH-Werts des Wassers ist beispielsweise auch bei der regelmäßigen Wartung von Schwimmbädern von wesentlicher Bedeutung - eine Voraussetzung, um den Badegästen eine gesunde, sichere und stets schwimmfähige Bade-Umgebung zu bieten. Ein unausgewogener pH-Wert kann zu Augen- und Hautreizungen bei den Badegästen führen und die Vermehrung von Bakterien und Algen fördern.
Darüber hinaus findet dieses pH-Messsystem auch in Aquarien Anwendung, wo die Wasserqualität für die Gesundheit der Fische und aller anderen im Aquarium lebenden Lebewesen von entscheidender Bedeutung ist. Ein falscher pH-Wert kann das Gleichgewicht des aquatischen Ökosystems stören und Stress und Krankheiten bei den Bewohnern in ihrem Lebenselement verursachen. Man stelle sich vor, die Luft, die wir alle atmen müssen, wäre mit Feinstäuben und gesundheitsschädlichen Abgasen verseucht. Würden Sie sich das gefallen lassen? Mit diesem pH-Messgerät können Sie den pH-Wert des Wassers in Echtzeit überwachen und eventuelle Korrekturen vornehmen, um einen idealen Wert für jede Anwendung zu gewährleisten.
Was ist der pH-Wert?
Bevor es an die Elektronik geht, sollten wir uns ansehen, was der pH-Wert überhaupt ist. Der pH-Wert (Wasserstoffpotenzial, englisch: potential of Hydrogen) ist eine Messskala, die den Grad der Säure oder Alkalität einer Lösung angibt. Diese Skala reicht von 0 bis 14, wobei ein Wert von 7 Neutralität bedeutet, während Werte unter 7 Säure und Werte über 7 Alkalität anzeigen (Bild 1).
Der pH-Wert wird durch die Konzentration der in der Lösung vorhandenen Wasserstoffionen (H+) bestimmt. Wenn sich ein Stoff in Wasser auflöst, kann er Wasserstoffionen freisetzen, die den Säuregrad der Lösung bestimmen. Wenn die Konzentration dieser Ionen hoch ist, ist der pH-Wert niedrig, was auf einen sauren Zustand hinweist. Umgekehrt ist der pH-Wert hoch, wenn die Wasserstoffionenkonzentration niedrig ist, was auf Alkalität hindeutet.
Wie bereits erwähnt, ist der pH-Wert ein wichtiger Parameter in vielen wissenschaftlichen und industriellen Bereichen. Aber auch für die menschliche Gesundheit ist er von grundlegender Bedeutung, da verschiedene biologische Systeme eine Umgebung mit einem bestimmten pH-Wert benötigen, um richtig zu funktionieren. Die Messung des pH-Werts kann mit chemischen Indikatoren (Lackmus-Papier) oder mit elektronischen Instrumenten, den so genannten pH-Metern, erfolgen, die den pH-Wert einer Lösung genau ablesen und in Chemielabors und bei der Umweltanalyse eingesetzt werden.
Sensor zur pH-Messung
In unserem Projekt verwenden wir einen elektronischen Fühler zur Messung des pH-Werts (Bild 2). Die Funktionsweise einer elektronischen pH-Messsonde beruht auf elektronischen und chemischen Prinzipien. Sie besteht aus einer pH-empfindlichen Glaselektrode und einer Referenzelektrode. Erstere enthält ein spezielles Glas, das mit den Wasserstoffionen in der Lösung reagiert.
Wenn die Glaselektrode in die Lösung eingetaucht wird, entsteht eine elektrische Spannung, die dem pH-Wert der Lösung entspricht. Die Referenzelektrode bietet einen stabilen Referenzpunkt für die pH-Messung. In der Regel wird eine Gel- oder Salzlösungs-Referenzelektrode verwendet. Die pH-Sonde kann die Differenz der elektrischen Potentiale zwischen der Glaselektrode und der Referenzelektrode erfassen. Diese Spannung wird mithilfe einer elektronischen Schaltung in einen pH-Wert umgewandelt.
Vor dem Gebrauch muss das Gerät mit bekannten pH-Werten (normalerweise pH 4 und pH 7) kalibriert werden, um die Messgenauigkeit zu gewährleisten. Besondere Vorsicht ist bei der Glaselektrode geboten, die in einer speziellen Lösung gelagert und regelmäßig gereinigt werden sollte, um Ablagerungen zu entfernen, die die Messungen beeinträchtigen könnten. Die Sonde kann nicht direkt an unser Arduino-UNO‑R4-Board angeschlossen werden; das Signal muss über eine Signalverarbeitungsschaltung verstärkt und für den Mikrocontroller lesbar gemacht werden (Bild 3).
Die pH-Sonde wird über einen BNC-Stecker mit dem Modul zur Signalverarbeitung verbunden, was eine stabile und zuverlässige Verbindung verspricht. Das Modul verfügt über einen Spannungsausgang, der einen Pegel proportional zum gemessenen pH-Wert ausgibt. Dieser Pin kann an einen Analogeingang eines Controllerboards angeschlossen werden, wie in unserem Fall an den Arduino UNO. Für den ordnungsgemäßen Betrieb muss das Modul mit einer Gleichspannung von 5 V versorgt werden, und angesichts seines geringen Strombedarfs (zwischen 5 mA und 10 mA) können wir es direkt über den 5‑V-Pin unseres UNO-R4-Boards versorgen. Für einen ordnungsgemäßen Betrieb ist es notwendig, vor der Messung mindestens 60 Sekunden zu warten, um genaue Messwerte zu erhalten.
Arduino UNO R4 Minima
Die vierte Version des Arduino UNO, der Arduino UNO R4 Minima, ist für Maker ein großer Schritt vorwärts (Bild 4). Diese neue Version verfügt über einen 32-Bit-Arm-Cortex-M4-Prozessor, der mehr Rechenleistung und 16-mal mehr Speicher als die Vorgängerversionen bietet. Trotz dieser Verbesserungen bleiben die Größe und die 5-V-Kompatibilität gleich. Dies gewährleistet einen nahtlosen Übergang für bestehende Shields und Projekte und nutzt das umfangreiche und einzigartige Ökosystem, das bereits für den ursprünglichen Arduino UNO geschaffen wurde (Bild 5).
Die neue Version bietet außerdem einen schnelleren Takt, wodurch genauere Berechnungen durchgeführt und komplexe und anspruchsvolle Programm verarbeitet werden können. Außerdem verfügt es über einen USB-C-Anschluss, der kleiner, leistungsfähiger und haltbarer ist als frühere Anschlüsse. Um den Arduino UNO R4 Minima zu verwenden, muss man das Boardpackage für den UNO-R4-Minima installieren, das Teil des Arduino-Kerns für Renesas-Controller ist. Um es zu installieren, benötigen Sie natürlich die Arduino-IDE, die Sie von der Arduino-Download-Seite herunterladen können.
In diesem Artikel verwenden wir die neueste Version der IDE 2 (Bild 6). Um das Board-Paket zu installieren, öffnen Sie den Boardverwalter im Menü auf der linken Seite, suchen nach UNO R4 Minima und installieren Sie die neueste (oder Ihre gewünschte) Version (Bild 7). Wenn Sie nun das Board an den Computer anschließen, wird eine virtuelle serielle Schnittstelle eingerichtet, die Sie zur Programmierung des Arduino verwenden können.
Anschlüsse
In diesem Projekt haben wir mehrere Komponenten zum Bau eines pH-Erfassungssystems verwendet, wie Sie im Schaltplan sehen können (Bild 8). Das Hauptbauteil ist natürlich die Sonde, die den pH-Wert messen kann, und über einen BNC-Stecker mit zunächst der Signalverarbeitungselektronik und dann mit dem Controllerboard verbunden wird. Wie bereits erwähnt, wird diese Signalverarbeitungsschaltung direkt über die 5-V- und GND-Pins des Arduino UNO R4 mit Strom versorgt. Pin P0 der Signalverarbeitung wurde am Analogeingang (Pin A0) des Arduino-Boards angeschlossen. Diese Verbindung ermöglicht es der Hauptplatine, die vom Sensor erfassten pH-Werte zu lesen.
Das verwendete OLED-Display verfügt über eine I2C-Verbindung, die es ermöglicht, mit nur zwei Drähten (abgesehen von der Stromversorgung) das Display zu steuern. Die SDA- und SCL-Pins des Displays sind daher mit den SDA- und SCL-Pins des Arduino-R4-Boards verbunden, während die Stromversorgung von den 3,3-V- und GND-Pins übernommen wurde. Mit diesem Aufbau können wir den pH-Wert mit der Sonde messen und die Ergebnisse auf dem OLED-Display anzeigen. Es ist wichtig, die Anweisungen sowie die im Schaltplan gezeigten Anschlüsse sorgfältig zu befolgen, um den ordnungsgemäßen Betrieb des Systems zu gewährleisten.
Die Firmware
Der für den Arduino UNO R4 geschriebene Code zur Messung des pH-Wertes und zur Anzeige auf einem kleinen OLED-Display kann von der Elektor-Labs-Webseite dieses Projekts heruntergeladen werden. Schauen wir uns den Code im Detail an. Die ersten Zeilen des Codes binden die Bibliotheken ein, die für das Funktionieren des Programms benötigt werden, insbesondere die Wire-Bibliothek für I2C und die Bibliotheken Adafruit_GFX und Adafruit_SSD1306 von Adafruit für die Verwaltung des OLED-Displays. Als nächstes werden einige Konstanten und Variablen definiert, die im Programm verwendet werden (Listing 1).
unsigned long int avgValue; // stores the average value of the sensor feedbacks
float b;
int buf[10],temp;
#define SCREEN_WIDTH 128 // OLED screen width in pixels
#define SCREEN_HEIGHT 64 // OLED screen height in pixels
#define OLED_RESET -1 // reset pin (o -1 if the reset handling is shared)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
Die Funktion setup() wird beim Start des Programms ausgeführt und spielt eine entscheidende Rolle bei der Initialisierung des Programms (Listing 2). Zunächst wird der digitale Pin 13 als Ausgang für die Steuerung einer LED festgelegt. Als nächstes wird die serielle Kommunikation über den Seriellen Monitor mit einer Baudrate von 9.600 initialisiert. Danach prüft das Programm, ob der Speicher für das OLED-Display SSD1306 ordnungsgemäß zugewiesen werden kann. Wenn dies nicht der Fall ist, erscheint eine Fehlermeldung und das Programm bricht ab.
{
pinMode(13,OUTPUT);
Serial.begin(9600);
Serial.println(“Ready”);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C))
{
Serial.println(F(“SSD1306 allocation failed”));
for(;;);
}
display.display();
delay(2);
display.clearDisplay();
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(10,5);
display.print(“PH Sensor”);
display.display();
delay(3000);
}
Kann das Display hingegen korrekt initialisiert werden, wird eine Reihe von Befehlen zur Konfiguration des Displays ausgeführt. Es wird eine kurze Pause eingelegt, dann wird die Anzeige gelöscht. Die Textgröße wird auf den Wert 2 eingestellt und der Cursor auf die Anzeigekoordinate (10,5) gesetzt. Anschließend wird der Text PH Sensor durch Aufruf der Funktion display.display() angezeigt. Es wird eine Pause von drei Sekunden eingefügt, damit der Benutzer die Meldung auf dem Display lesen kann, bevor das Programm zur Funktion loop() übergeht. Die loop()-Funktion ist das Herzstück des Arduino-Sketches und wird nach der Setup-Phase kontinuierlich ausgeführt (Listing 3).
{
for(int i=0;i<10;i++) //Get 10 sample values from the sensor to get a more accurate measurement
{
buf[i]=analogRead(SensorPin);
delay(10);
}
for(int i=0;i<9;i++) //Sort the analog values from smallest to largest
{
for(int j=i+1;j<10;j++)
{
if(buf[i]>buf[j])
{
temp=buf[i];
buf[i]=buf[j];
buf[j]=temp;
}
}
}
avgValue=0;
for(int i=2;i<8;i++) //take the average value of 6 center sample
avgValue+=buf[i];
float phValue=(float)avgValue*5.0/1024/6; //convert the analog into millivolt
phValue=3.5*phValue; //convert the millivolt into pH value
Serial.print(“ pH:”);
Serial.print(phValue,2);
Serial.println(“ “);
display.clearDisplay();
display.setTextSize(2);
display.setCursor(20,5);
display.println(“Ph Value”);
display.setTextSize(3);
display.setCursor(30,35);
display.print(phValue);
display.display();
digitalWrite(13, HIGH);
delay(800);
digitalWrite(13, LOW);
}
Innerhalb von loop() werden zehn Abtastwerte vom pH-Sensor über den analogen Pin 0 erfasst. Diese Werte werden dann in aufsteigender Reihenfolge sortiert, um den Mittelwert der mittleren sechs Abtastwerte zu berechnen. Dieses Vorgehen eliminiert den Einfluss eventueller Ausreißer. Dieser Wert wird dann in Millivolt und anschließend in den entsprechenden pH-Wert umgerechnet. Letzten Endes wird der pH-Wert auf dem Seriellen Monitor mit einer Genauigkeit von zwei Dezimalstellen geschrieben und auch auf dem OLED-Display angezeigt.
Dann wird die an den digitalen Pin 13 angeschlossene LED ein- und ausgeschaltet, um eine visuelle Rückmeldung der Messung zu geben, und schließlich macht das Programm eine Pause von 800 ms, bevor es die Schleife erneut startet und die gleichen Vorgänge zur Erfassung und Berechnung der pH-Werte durchführt. Diese Schleife wird unendlich oft wiederholt, solange der Arduino mit Strom versorgt wird. Bild 9 zeigt den fertigen, funktionsfähigen Prototyp.
Prüfen wir das Wasser!
In diesem Artikel wurde ein pH-Messsystem vorgestellt, das einen speziellen Sensor, das Arduino-UNO-R4-Minima-Board und ein OLED-Display verwendet. Das System bietet eine vielseitige Lösung für die genaue Messung des pH-Werts einer Lösung in verschiedenen Kontexten, zum Beispiel in der Hydrokultur, in Schwimmbädern und Aquarien. Es ist ein hervorragender Ausgangspunkt für die Anpassung an Ihre spezifische Anwendung.
Über den Autor
Boris Landoni ist Experte für Elektronik und ein echter Enthusiast auf diesem Gebiet. Seine Leidenschaft hat ihn zum Geschäftsführer von Elettronica In gemacht, der populärsten Elektronikzeitschrift in Italien. Außerdem ist er Kurator von open-electronics.org, einer Plattform für Open-Source-Projekte, die Enthusiasten und Fachleute zusammenbringt.
Editor’s notes: This project originally appeared in Elettronica IN.
Diskussion (6 Kommentare)