Präziser Arduino pH-Meter mit Atlas Scientific Sensor – Bauanleitung
Komponenten und Zubehör
| Arduino UNO | × | 1 |
| Atlas Scientific Gravity™ Analog pH Sensor | × | 1 |
| Atlas Scientific Consumer Grade pH-Elektrode | × | 1 |
| 20×4 LCD-Modul (mit I²C-Adapter empfohlen) | × | 1 |
| Gehäuse 158×90×60 mm (ABS) | × | 1 |
| Mini-Steckbrett | × | 1 |
| Widerstand 220 Ω | × | 1 |
| Widerstand 1 kΩ | × | 1 |
| 11 mm Distanzbolzen & Schrauben (beiliegend zum pH-Sensor) | × | 4 |
| Jumper-Kabel | × | 1 |
| Acrylglasplatte (für Basisplatte) | × | 1 |
Benötigte Werkzeuge
- Bohrmaschine, Bohrer, Trockenbau-Fräser, Feilen, Schraubendreher, Schraubstock, Bandsäge, Heißklebepistole, Lötkolben, Digitalmessschieber, Lineal
- Schutzbrille, Handschuhe, Atemschutz!
Software
Projektbeschreibung
Bau eines **Tisch-pH-Meters** mit Atlas Scientific Gravity Analog pH-Schaltung & Elektrode, Arduino Uno und LCD-Anzeige.
- Entwickelt unter Windows – Mac nicht getestet
- Gehäuse ist nicht wasserdicht
Schritt 1: Gehäuse vorbereiten
LCD-Ausschnitt (Deckel)
- Rechteck 98 × 40 mm mittig auf Deckel anzeichnen
- 3,2 mm Pilotbohrung in einer Ecke
- Mit 3,2 mm Fräser (Handbohrmaschine) Innenausschnitt fräsen
- Mit Feile nacharbeiten auf Endmaß
BNC- & Arduino-Ausschnitte (Boden, Seitenwand)
- Per Schablone (siehe Bilder) Mittelpunkt für BNC-Kreis & zwei Rechtecke für USB/Strom anzeichnen
- Ausschnitte fräsen/bohren (Kreis: Bohrer; Rechtecke: wie LCD)
Basisplatte (Acrylglas 3,2 mm)
- Auf 135 × 62,5 mm zuschneiden (Bandsäge)
- 4 Montagelöcher Ø 2,38 mm (3/32″) bohren, eine Seite senken (Ø 4,4 mm, 3 mm tief) für flachen Auflag
- 11 mm Distanzbolzen anschrauben (2 für Arduino, 2 für pH-Sensor – vom Sensor mitgeliefert)
Schritt 2: Elektronik einbauen
- Basisplatte in Gehäuseunterteil setzen (Schrauben oder Heißkleber)
- pH-Sensor auf Distanzbolzen schrauben
- Arduino Uno auf Distanzbolzen schrauben
- Mini-Steckbrett aufkleben
- LCD: Header-Pins anlöten, in Deckel-Ausschnitt einsetzen, mit Heißkleber fixieren
Schritt 3: Verdrahtung
Gemäß Schaltplan (Bild) verdrahten. Mini-Steckbrett für 1 kΩ & 220 Ω Widerstände sowie 5 V / GND Verteilung nutzen. Die beiden Widersteller bilden einen Spannungsteiler für den LCD-Kontrasteingang (VO).
Schritt 4: Endmontage
- Deckel & Boden mit Gehäuseschrauben verbinden
- pH-Elektrode an BNC-Buchse anschließen
Schritt 5: Code aufspielen
- Arduino per USB verbinden, IDE öffnen, Board „Arduino/Genuino Uno“ & Port wählen
- LiquidCrystal-Bibliothek installieren (Bibliotheksverwalter: „liquidcrystal“ → „LiquidCrystal Built-in by Arduino, Adafruit“)
- Atlas Gravity Library als ZIP hinzufügen: GitHub Atlas Scientific → Sketch → Bibliothek einbinden → .ZIP-Bibliothek hinzufügen
- pH-Meter-Code kopieren & hochladen (siehe Code-Bereich)
- Serieller Monitor (9600 Baud, „Carriage Return“) zeigt Messwerte & dient zur Kalibrierung
Schritt 6: pH-Sensor kalibrieren
Unterstützt **1-, 2- oder 3-Punkt-Kalibrierung** mit Pufferlösungen pH 4, 7, 10. Kalibrierdaten werden im EEPROM gespeichert.
Kalibrierbefehle (Serieller Monitor)
- Low-Point:
cal, 4 - Mid-Point:
cal, 7 - High-Point:
cal, 10 - Löschen:
cal, clear
Ablauf
- Schutzflasche entfernen, Elektrode spülen
- pH-4-Puffer in Becher, Elektrode eintauchen, rühren (Luftblasen entfernen)
- Werte im seriellen Monitor beobachten, bis stabil (kleine Schwankungen normal)
- Befehl
cal, 4senden → „LOW CALIBRATED“ - Für pH 7 & 10 wiederholen (zwischenzeitlich Elektrode spülen!)
Temperaturkompensation
Sensor-Genauigkeit ±0,2 % im Bereich 7–46 °C. Außerhalb muss Temperaturkompensation ergänzt werden. Elektrode selbst verträgt 1–60 °C.
Arduino-Code
/* pH-Meter mit Atlas Scientific Gravity pH Sensor
Serielle Befehle: "cal,4" "cal,7" "cal,10" "cal,clear"
Baud: 9600, Carriage Return
*/
#include "ph_grav.h" // Atlas Gravity pH Library
#include "LiquidCrystal.h" // LCD Library
String inputstring = "";
boolean input_string_complete = false;
char inputstring_array[10];
Gravity_pH pH = A0; // pH-Sensor an A0
LiquidCrystal pH_lcd(2, 3, 4, 5, 6, 7); // LCD: RS=2, E=3, D4-D7=4-7
void setup() {
Serial.begin(9600);
pH_lcd.begin(20, 4);
pH_lcd.setCursor(0,0); pH_lcd.print("--------------------");
pH_lcd.setCursor(0,3); pH_lcd.print("--------------------");
pH_lcd.setCursor(5, 1); pH_lcd.print("pH Reading");
if (pH.begin()) Serial.println("Loaded EEPROM");
Serial.println(F("Use commands \"CAL,4\", \"CAL,7\", \"CAL,10\" to calibrate"));
Serial.println(F("Use command \"CAL,CLEAR\" to clear calibration"));
}
void serialEvent() {
inputstring = Serial.readStringUntil(13);
input_string_complete = true;
}
void loop() {
if (input_string_complete) {
inputstring.toCharArray(inputstring_array, 30);
parse_cmd(inputstring_array);
input_string_complete = false;
inputstring = "";
}
Serial.println(pH.read_ph());
pH_lcd.setCursor(8, 2);
pH_lcd.print(pH.read_ph());
delay(1000);
}
void parse_cmd(char* string) {
strupr(string);
if (strcmp(string, "CAL,4") == 0) {
pH.cal_low(); Serial.println("LOW CALIBRATED");
} else if (strcmp(string, "CAL,7") == 0) {
pH.cal_mid(); Serial.println("MID CALIBRATED");
} else if (strcmp(string, "CAL,10") == 0) {
pH.cal_high(); Serial.println("HIGH CALIBRATED");
} else if (strcmp(string, "CAL,CLEAR") == 0) {
pH.cal_clear(); Serial.println("CALIBRATION CLEARED");
}
}
Schaltplan

Herstellungsprozess
- Bluetooth-gesteuerter Arduino-Spybot bauen – Überwachungsroboter mit IP-Kamera
- FlickMote: Gestensteuerung per Ultraschall & IR für Smart Home (Arduino 101)
- DIY Arduino TV-B-Gone: Universelle TV-Aus-Fernbedienung
- Einen eigenen LED-Master-Clock mit Alarm bauen – aus 12 Metern Entfernung ablesbar
- Find Me: Smarter Gegenstands-Finder mit Arduino und Bluetooth
- Optimierte Stromversorgungslösungen für Arduino-Projekte
- Arduino Tic Tac Toe mit MAX7219 LED-Matrix und Karton-Gehäuse
- Intelligenten Arduino-Vierbeiner-Roboter bauen: Schritt-für-Schritt-Anleitung
- DIY Arduino Lenkrad / Joystick für Rennspiele – USB-HID-Umbau
- Eine voll funktionsfähige CNC-Maschine mit Arduino Nano R3 bauen