Sonda pH cz.2

Sonda pH

A co jeśli byśmy chcieli sterować automatycznie dozowaniem CO2 oraz opcjonalnie uruchamiać napowietrzacz jeśli pH spadło by do granicy zagrażającej rybom? Rozwiązaniem jest modyfikacja kodu, podłączenie do arduino dwóch przekaźników.

Do stworzenia sterownika kontrolującego pH potrzebne nam będą:

  • arduino (może być nano),
  • przekaźnik podwójny,
  • sonda pH wraz z modułem dostępna na sklepie Kamami.pl
  • kable połączeniowe

Poniżej przedstawiony został schemat który widzieliście w części pierwszej – został on zmodyfikowany aby była możliwość podłączenia właśnie za pomocą przekaźników elektrozaworu sterującego dozowania dwutlenku węgla oraz drugiego sterującego napowietrzaczem.

Zasada działania powyższego urządzenie jest bardzo podobna do poprzednich schematów dotyczących termostatu oraz automatycznej dolewki wody. w sketchu najważniejszymi i w zasadzie jedynymi do modyfikacji częściami są trzy zmienne pHd, pHs, pHg. Odpowiadają one nasypującym wartościom:

  • pHd – dolna wartość pH. Po jej osiągnięciu której uruchamiany jest napowietrzacz,
  • pHs – środkowa wartość która po przekroczeniu której (zarówno podczas spadku jak i podczas zwiększania się pH) wyłączane są obydwa przekaźniki (podczas zwiększania jest to przekaźnik odpowiadający za napowietrzacz a podczas spadku przekaźnik odpowiadający za dozowanie CO2)
  • pHg – górna wartość pH. Po jej przekroczeniu następuje uruchomienie elektrozaworu.

int S1 = 2; 
int S2 = 3;
int O2; 
int CO2;
int pHd = 6.5; //tu deklarujemy dolną wartość pH
int pHs = 7; //tu deklarujemy środkową wartość pH 
int pHg = 7.5; //tu deklarujemy górną wartość pH
float pH;
float pHHist;

void setup() 
  {
    pinMode(S1, OUTPUT); //elektrozawór CO2
    pinMode(S2, OUTPUT); //napowietrzacz
    Serial.begin(9600);
  }

void loop() 
  {
    int analog7 = analogRead(A7);
    int Volty = analogRead(A7);
    float V =(float) Volty * 5.0 / 1024.0;
    float pH =(float) V*3.5;

    if(pH<pHd)
      {
        O2 = 1;
      }
    else if(pHs<=pH)
      {
        O2 = 0;
      }
    else
      {
      }

    if(pH<pHs)
      {
        CO2 = 0;
      }
    else if(pHg<=pH)
      {
        CO2 = 1;
      }
    else
      {
      }

    if(O2 == 1)
      { 
        digitalWrite(S1,LOW);
        Serial.print("co2- on ");
      }
    if(O2 == 0)
      { 
        digitalWrite(S1,HIGH);
        Serial.print("co2-off ");
      }
    else
      {
      }

    if(CO2 == 1)
      { 
        digitalWrite(S2,LOW);
        Serial.print("O2- on ");
      }
    if(CO2 == 0)
      { 
        digitalWrite(S1,HIGH);
        Serial.print("O2-off ");
      }
    else
      {
      } 
    delay(500); 
   //site mn-tech.pl
   //youtube https://www.youtube.com/user/mntechpl
   //facebook https://www.facebook.com/mntechpl
  }

Powyższy program w dość znaczący sposób został uproszczony oraz zmodyfikowany. Jego minusem jest duża podatność na wahania wyników które pojawiają się podczas zanurzania sondy w wodzie która nie jest „stojąca”. Wahania te można zniwelować łącząc ze sobą powyższy skrypt ze skryptem który pojawił się w pierwszej części artykułu. Dzięki temu wahania które się pojawią zostaną zmniejszone do minimum (warto pamiętać iż można zwiększyć ilość pomiarów branych do średniej co jeszcze bardziej zwiększy odporność na błędne wyniki. 

Program ten poza sterowaniem dwoma przekaźnikami wyświetla informacje na serial monitorze. Informuje on który z przekaźników aktualnie działa. Program ten można połączyć także z programami które były prezentowane w tym dziale. Na przykład z wyświetlaczem LCD, aby uzyskać stały podgląd informacji o aktualnym pH lub też z termometrem, żeby dodatkowo sterować temperaturą w akwarium.

W kolejnej trzeciej części test urządzenia, skrypty oraz objaśnienia. Zapraszam do lektury