Bouw een Precieze Arduino pH-meter met Atlas Scientific Sensor – Onderdelen & Handleiding
Onderdelen en benodigdheden
| Onderdeel | Aantal |
|---|---|
| Arduino UNO | 1 |
| Atlas Scientific Gravity™ Analog pH Sensor | 1 |
| Atlas Scientific Consumer Grade pH Probe | 1 |
| 20×4 LCD Module (met I2C-adapter) | 1 |
| Behuizing 158×90×60 mm | 1 |
| Mini breadboard | 1 |
| Weerstand 220 Ω | 1 |
| Weerstand 1 kΩ | 1 |
| 11 mm afstandshouders en schroeven (bij pH-sensor meegeleverd) | 4 |
| Jumper draden | 1 set |
| Acrylplaat (plexiglas) voor basisplaat | 1 |
Benodigde tools en machines
- Boormachine, boorbouten, gipsknipperbits, vijlen, schroevendraaiers, bankschroef, bandsaag, lijmpistool, soldeerbout & tin, digitale schuifmaat, liniaal
Apps en online diensten
- Arduino IDE
Over dit project
In dit project bouwen we een lab-pH-meter met de Gravity analoge pH-circuit en -probe van Atlas Scientific en een Arduino Uno. Meetwaarden worden weergegeven op een LCD-display (20×4).
Let op:
- Ontwikkeld op Windows; niet getest op Mac.
- De behuizing is niet waterdicht.
Stap 1: Behuizing voorbereiden
Veiligheid: draag beschermingsbril, handschoenen en adembescherming bij het werken met machines.
De behuizing is een ABS-kunststof doos die aangepast moet worden.
Opening voor LCD zagen
- Centreer een rechthoek van 98 × 40 mm op het deksel (bovenste deel).
- Spannen in de bankschroef en boor een 3,2 mm (1/8″) loodgat in de rechthoek.
- Gebruik dit gat als startpunt voor een 3,2 mm gipsknipperbit op de boormachine. Werk aan de binnenkant van de getekende lijnen.
- Werkt de overige restafval af met een handvijl tot de juiste maat.

Opening voor BNC-connector en Arduino-poorten
Deze openingen zitten in de zijkant van het onderste deel.
- Markeer middelpunt voor cirkel en rechthoeken op basis van de afmetingen.
- Zaag/boor de openingen (cirkel met boorbouten, rechthoeken zoals bij LCD).

Basisplaat uitrusten voor componentmontage
De basisplaat (3,2 mm acryl) draagt de Arduino, pH-sensor en mini-breadboard.
- Zaag acrylplaat op maat: 135 × 62,5 mm.
- Markeer 4 gatposities, boor Ø 2,38 mm (3/32″). Kontersenk de gaten aan één kant 3 mm diep, Ø 4,4 mm (11/64″) – voor vlakke onderkant bij schroeven.
- Bevestig de 11 mm afstandshouders met meegeleverde schroeven. Gebruik er 2 voor de Arduino.

Stap 2: Electronica in behuizing monteren
- Plaats basisplaat in onderkant behuizing, fixeren met schroeven of lijmpistool.
- Monteer pH-sensor op basisplaat, vastzetten op afstandshouders.
- Monteer Arduino Uno op basisplaat, vastzetten op afstandshouders.
- Plaats mini-breadboard op basisplaat.
- Soldeer header-pinnen aan LCD (meegeleverd). Zet LCD in deksel, fixeren met wat lijm.

Stap 3: Electronica bedraden

Bedraad volgens het schema. Gebruik het mini-breadboard voor de 1 kΩ en 220 Ω weerstanden en voor verdeling van 5V en GND van de Arduino. De twee weerstanden stellen de LCD-contrast in.

Datasheets: Gravity pH sensor, pH probe.
Stap 4: Montage afronden
- Schroef deksel en onderkant samen met meegeleverde schroeven.
- Sluit de pH-probe aan op de BNC-connector.

Stap 5: Code uploaden naar Arduino Uno
De code gebruikt aangepaste bibliotheken en header-bestanden. Deze moeten je Arduino IDE toegevoegd worden.
- Sluit Arduino aan, open IDE. Tools → Board → Arduino/Genuino Uno. Tools → Port → selecteer juiste poort.
- LiquidCrystal-bibliotheek: Sketch → Include Library → Manage Libraries → zoek „liquidcrystal” → installeer „LiquidCrystal Built-in by Arduino, Adafruit”.
- Atlas Gravity sensor bibliotheek: Download zip van de Atlas Scientific GitHub. Sketch → Include Library → Add .ZIP Library → selecteer
Atlas_gravity.zip. - Kopieer de pH-meter code (zie Code-sectie) in de IDE.
- Compileer en upload.
- pH-waarden verschijnen op LCD. Ook zichtbaar via Serial Monitor (Tools → Serial Monitor of Ctrl+Shift+M). Baudrate: 9600, „Carriage return” selecteren.
Stap 6: pH-sensor kalibreren
Let op: als je een externe voeding gebruikt, sluit die aan voor kalibratie, zodat referentieniveaus correct zijn.
De meter ondersteunt 1-, 2- of 3-punts kalibratie. Standaard bufferoplossingen (pH 4, 7, 10) zijn vereist.
Kalibratie verloopt via de Serial Monitor. Je ziet de waarden stabiliseren en stuurt dan de commando's.
Kalibratiegegevens worden opgeslagen in de EEPROM van de Arduino.
Kalibratie-commando's
- Laag punt:
cal,4 - Midden punt:
cal,7 - Hoog punt:
cal,10 - Wissen kalibratie:
cal,clear
Stappen
- Verwijder bewaarflesje en spoel de probe af.
- Giet pH 4-oplossing in een beker (genoeg om de meetzone te bedekken).
- Plaats probe in de beker, roer om luchtbellen te verwijderen. Waarneem waarden op Serial Monitor. Wacht tot stabilisatie (kleine wisselingen zijn normaal).
- Na stabilisatie: typ
cal,4in Serial Monitor. Laag-punt kalibratie klaar.
Herhaal voor pH 7 en pH 10. Spoel probe tussen elke oplossing af.
Temperatuurcompensatie?
De sensor heeft een nauwkeurigheid van ±0,2%. De meter werkt binnen deze nauwkeurigheid bij 7–46 °C. Buiten dit bereik is aanpassing voor temperatuurcompensatie nodig. De probe zelf kan 1–60 °C aan.
Code
Arduino pH meter code C/C++
/* Once uploaded, open the serial monitor, set the baud rate to 9600 and append "Carriage return"
The code allows the user to observe real time pH readings as well as calibrate the sensor.
One, two or three-point calibration can be done.
Calibration commands:
low-point: "cal,4"
mid-point: "cal,7"
high-point: "cal,10"
clear calibration: "cal,clear"
*/
#include "ph_grav.h" // header file for Atlas Scientific gravity pH sensor
#include "LiquidCrystal.h" // header file for liquid crystal display (lcd)
String inputstring = "";
boolean input_string_complete = false;
char inputstring_array[10];
Gravity_pH pH = A0; // assign analog pin A0 to class Gravity_pH
LiquidCrystal pH_lcd(2, 3, 4, 5, 6, 7); // 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\", and \"CAL,10\" to calibrate the circuit to those respective values"));
Serial.println(F("Use command \"CAL,CLEAR\" to clear the calibration"));
}
void serialEvent() {
inputstring = Serial.readStringUntil(13);
input_string_complete = true;
}
void loop() {
if (input_string_complete == true) {
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");
}
}
Schema's

Productieproces
- Bluetooth-gecontroleerde Arduino Spybot bouwen
- FlickMote: Gebarengecontroleerde IR-afstandsbediening voor Slimme Huizen
- DIY Arduino TV-B-Gone: Universele TV-uit-schakelaar
- Bouw een Aangepaste LED Hoofdklok met Alarm – Zichtbaar vanaf 12 Meter
- Find Me: Slimme Item Locator met Arduino en Bluetooth
- Geoptimaliseerde Voedingsoplossingen voor Arduino Projecten
- Arduino Boter-Kaas-Eieren met MAX7219 LED Matrix en Kartonnen Behuizing
- Bouw een Slimme Arduino Vierpotige Robot: Stap-voor-Stap Handleiding
- Bouw een Aangepaste Arduino Joystick Stuurwiel voor Gaming
- Bouw een Volledig Functionele CNC-machine met Arduino Nano R3
- Earth Analyzer: Geavanceerde IoT Sensor Kit voor Milieumonitoring