Controleer de waterkwaliteit: Zuurgraad meten met de Arduino UNO R4
op
In dit artikel stellen we een pH-meter voor die nauwkeurig de pH-waarde van een vloeistof kan meten. We gebruiken een speciale sensor, het Arduino UNO R4 Minima-board en een klein 0,96" OLED-display. Door de flexibiliteit van dit systeem is het veelzijdig bruikbaar met betrouwbare en gebruiksvriendelijke resultaten.
Water is een cruciale factor in veel productieomgevingen. Bij landbouw op basis van hydrocultuur, waarbij planten worden geteeld zonder grond, speelt de pH-waarde van water bijvoorbeeld een sleutelrol bij het zorgen voor een optimale voedselopname door de planten. Door het continue monitoren van de pH van water kunnen landbouwers en beheerders de zuurgraad of alkaliniteit aanpassen en zo een ideale omgeving creëren voor de groei en ontwikkeling van planten. Maar niet alleen hydrocultuur profiteert van dit project. Het op peil houden van de juiste pH-waarde van water is ook essentieel bijvoorbeeld bij het onderhoud van zwembaden – een eerste vereiste voor gezond, veilig en continu te gebruiken zwemwater voor badgasten. Een incorrecte pH-waarde kan irritatie veroorzaken van de ogen en huid van zwemmers en de groei van bacteriën en algen stimuleren.
Daarnaast is dit pH-meetsysteem ook te gebruiken voor aquaria, waar de waterkwaliteit van levensbelang is voor de gezondheid van vissen en alle andere waterorganismen. Een onjuiste pH-waarde kan de balans van het waterecosysteem verstoren, met stress en ziekte voor de bewoners tot gevolg. Met deze pH-meter kunt u de pH-waarde van water in real time monitoren en correcties toepassen om de ideale waarde voor iedere toepassing te garanderen.
Wat is pH
Voordat we verder gaan met de beschrijving van het project, kijken we eerst wat pH nu eigenlijk is. pH (waterstofpotentiaal) is een maatstaf die wordt gebruikt om aan te geven hoe zuur of alkalisch een oplossing is. De schaal loopt van 0 tot 14, waarbij de waarde 7 aanduidt dat de oplossing neutraal is. Daaronder is de oplossing zuur en daarboven is deze alkalisch (figuur 1).
De pH hangt af van de concentratie van waterstofionen (H+) die in de oplossing aanwezig zijn. Wanneer een stof oplost in water, kan deze waterstofionen vrijmaken die de zuurgraad van de oplossing bepalen. Als de concentratie van deze ionen hoog is, zal de pH laag zijn, wat duidt op een zure oplossing. Omgekeerd, als de concentratie van waterstofionen laag is, zal de pH hoog zijn, wat wijst op een alkalische oplossing.
Zoals al opgemerkt, is pH een belangrijke parameter op veel wetenschappelijke en industriële terreinen. Maar het is ook van belang voor de menselijke gezondheid, omdat verschillende biologische systemen een omgeving met een specifieke pH-waarde vereisen om goed te kunnen functioneren. Voor het meten van de pH-waarde bestaan er chemische indicatoren of elektronische instrumenten die pH-meters worden genoemd. Deze maken een nauwkeurige meting van de pH-waarde van een oplossing mogelijk en worden in het algemeen gebruikt in chemische laboratoria en bij milieuonderzoek.
Sonde voor de pH-meting
In ons project zullen we een elektronische sonde gebruiken om de pH te meten (figuur 2). De werking van zo'n sonde is gebaseerd op elektronische en chemische principes. Hij bestaat uit een pH-gevoelige glaselektrode en een referentie-elektrode. De eerste bevat speciaal glas dat reageert met de waterstofionen in de oplossing.
Wanneer de glaselektrode in de oplossing wordt ondergedompeld, ontstaat er een elektrisch potentiaalverschil dat overeenkomt met de pH van de oplossing. De referentie-elektrode biedt een stabiel referentiepunt voor de pH-meting. Meestal wordt een referentie-elektrode met een gel of zoutoplossing gebruikt. De pH-sonde kan het verschil in elektrisch potentiaal tussen de glaselektrode en de referentie-elektrode detecteren. Deze potentiaal wordt omgezet in een pH-waarde via een elektronische schakeling.
Vóór gebruik moet het instrument voor een accurate meting gekalibreerd worden met bekende pH-waarden (meestal pH 4 en pH 7). Speciale zorg moet worden besteed aan de glaselektrode, die in een specifieke oplossing moet worden bewaard en regelmatig moet worden schoongemaakt om afzettingen te verwijderen die de metingen kunnen beïnvloeden. De sonde kan niet rechtstreeks worden aangesloten op ons Arduino UNO R4-board, want het signaal moet eerst worden versterkt en leesbaar gemaakt voor de microcontroller via een interfaceboard (figuur 3).
De pH-probe wordt aangesloten op de interfacemodule via een BNC-connector, voor een stabiele en betrouwbare verbinding. De module heeft een uitgangspin die een spanning levert overeenkomstig de gemeten pH-waarde. Deze pin kan aangesloten worden op een analoge ingang van een microcontrollerboard, zoals in ons geval een Arduino UNO. Voor de juiste werking moet de module voorzien worden van een spanning van 5 VDC, en, gegeven zijn geringe stroomverbruik (5...10 mA), kunnen we die rechtstreeks halen van de 5V-pin van ons UNO R4-board. Voor een correcte werking is een wachttijd van tenminste 60 seconden noodzakelijk om accurate metingen te krijgen.
Arduino UNO R4 Minima
De vierde versie van de Arduino UNO, de Arduino UNO R4 Minima, is een grote stap vooruit op het gebied van zelfbouw en elektronica (figuur 4). Deze nieuwe versie heeft een 32-bit Arm Cortex-M4 processor die meer rekenkracht biedt en 16 keer meer geheugen heeft dan voorgaande versies. Ondanks deze verbeteringen zijn de afmetingen en de 5V-compatibiliteit hetzelfde gebleven. Dit zorgt voor een naadloze overgang voor bestaande shields en projecten, waarbij gebruik wordt gemaakt van het uitgebreide en unieke ecosysteem dat al voor de originele Arduino UNO was gemaakt (figuur 5).
De nieuwe versie heeft ook een snellere klok, waardoor hij nauwkeuriger berekeningen kan maken en complexe en geavanceerde projecten kan uitvoeren. Hij heeft ook een USB-C-aansluiting, die een kleinere, krachtigere en duurzamere standaard is dan voorgaande aansluitingen. Om de Arduino UNO R4 Minima te gebruiken moet u het UNO R4 Minima board-package installeren. Dit is een onderdeel van de Arduino-core voor Renesas-chips. Om het te installeren heeft u een versie van de Arduino IDE nodig, die u kunt downloaden van de Arduino-downloadpagina .
In dit artikel zullen we de laatste versie van IDE 2 gebruiken (figuur 6). Open Boards Manager in het menu links om het board-package te installeren, zoek naar UNO R4 Minima en installeer de laatste versie (of de versie die u wilt; figuur 7). Wanneer u vervolgens het board aansluit op de computer wordt er een virtuele seriële poort aangemaakt voor het programmeren van de Arduino.
Aansluitingen
In dit project gebruikten we verschillende onderdelen om een pH-meetsysteem te maken, zoals te zien is in het aansluitschema (figuur 8). Het belangrijkste onderdeel, de probe die de pH kan detecteren, werd aangesloten op interfacemodule via een BNC-connector. Zoals eerder gezegd kan deze schakeling zijn voeding rechtstreeks van de 5V- en GND-pinnen op het Arduino UNO R4-board krijgen. Pin P0 van de pH-detectiemodule werd aangesloten op de analoge pin A0 van het Arduino-board. Via deze aansluiting kan het hoofdboard pH-waarden uitlezen die gemeten zijn door de sensor.
Het gebruikte OLED-display heeft een I2C-aansluiting met slechts twee draden (behalve de voeding) om het display aan te sturen. De SDA- en SCL-pinnen van het display zijn daarom verbonden met de SDA- en SCL-pinnen op het Arduino R4-board, waarbij de voeding komt van de 3,3V- en GND-pinnen. Op deze manier kunnen we de pH meten via de probe en de resultaten laten zien op het OLED-display. Voor een goede werking van het systeem is het belangrijk om de instructies nauwkeurig uit te voeren, evenals de aansluitingen zoals te zien in het aansluitschema.
De firmware
De code is geschreven voor de Arduino UNO R4, kan worden gedownload van de website van Elektor Labs op de projectpagina , en maakt het mogelijk de waarden van de pH-sensor uit te lezen en weer te geven op het display. Laten we de code eens bekijken. De eerste regels integreren de bibliotheken die nodig zijn om het programma te laten werken, met name de Wire-bibliotheek voor I2C en de Adafruit_GFX- en Adafruit_SSD1306-bibliotheken voor het aansturen van het OLED-display horen daarbij. Daarna worden enkele constanten en variabelen gedefinieerd, die in het programma worden gebruikt (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);
De functie setup() wordt uitgevoerd bij het starten en speelt een belangrijke rol bij het initialiseren van het programma (listing 2). Eerst wordt de digitale pin 13 ingesteld als uitgang voor het aansturen van een LED. Vervolgens wordt de seriële communicatie via Serial Monitor geïnitialiseerd op een baudrate van 9.600. Daarna controleert het programma of geheugen correct kan worden toegewezen voor het SSD1306 OLED-display. Als het geheugen niet kan worden toegewezen, wordt er een foutmelding getoond en stopt het programma.
{
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);
}
Maar als het display wel correct kan worden geïnitialiseerd, wordt er een reeks commando’s uitgevoerd om het te configureren. Er wordt een korte pauze ingelast, waarna het scherm wordt gewist. De tekstgrootte wordt ingesteld op 2, en de cursor wordt op de displaycoordinaten (10, 5) geplaatst. Vervolgens wordt de tekst “PH Sensor” weergegeven door het aanroepen van de functie display.display(). Een pause van 3 seconden wordt ingesteld zodat de gebruiker de melding op het display kan lezen voordat het programpa overgaat naar de loop()-functie. De functie loop() is het hart van de Arduino-sketch en wordt oneindig uitgevoerd na de setup-fase (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);
}
Binnen loop() worden tien samplewaarden uitgelezen van de pH-sensor via de analoge pin 0. Deze waarden worden vervolgens in oplopende volgorde gesorteerd om de gemiddelde waarde van de middelste zes samples te berekenen voor ruisonderdrukking. Deze waarde wordt vervolgens geconverteerd naar millivolts en daarna naar de overeenkomstige pH-waarde. Aansluitend wordt de pH-waarde geprint op de seriële monitor met een precisie van twee cijfers achter de komma en weergegeven op het OLED-display.
Vervolgens wordt als visuele feedback een LED die verbonden is aan digitale pin 13 aan- en na 800 ms weer uitgezet, waarna de lus weer overnieuw begint met dezelfde operaties om pH-waarden uit te lezen en te berekenen. Deze lus blijft oneindig doorlopen zolang de Arduino wordt gevoed. Figuur 9 laat het complete werkende prototype zien.
Controleer de waterkwaliteit
Dit artikel introduceerde een meetsysteem voor pH-waarden op basis van een speciale sensor, het Arduino UNO R4 Minima-board en een OLED-display. Het systeem biedt een veelzijdige oplossing voor het nauwkeurig meten van de pH-waarde van een oplossing voor verschillende doeleinden, zoals hydrocultuur, zwembaden en aquaria. Het is een uitstekend uitgangspunt voor aanpassing aan uw specifieke toepassing.
Over de auteur
Boris Landoni is an electronics expert and a true enthusiast in the field. His dedication led him to become the managing director of Elettronica In, the most popular electronics magazine in Italy. He is also the curator of open-electronics.org, a platform dedicated to open-source projects that brings together enthusiasts and professionals. He is also the technical manager of Futura Elettronica, a leading company in supplying electronic components for the world of makers and professionals.
Opmerkingen van de redactie: Dit project verscheen oorspronkelijk in Elettronica IN.
Discussie (0 opmerking(en))