8

Usare una sonda pH con Arduino

Di sonde per misurare il pH ce ne sono molte ma sono tutte spesso molto care. Ecco una soluzione low-cost per misurare il pH sfruttando Arduino e una sonda a basso costo.

La sonda che utilizzeremo è quella prodotto dalla DFRobot venduta da robotics-3d, si può acquistare da questo link.

 

Il contenuto della confezione al momento dell'acquisto

Il contenuto della confezione al momento dell’acquisto

 

In ogni caso, se trovate altrove il prodotto, occorrerà:

  • La sonda pH ( con connettore BNC connector )
  • La scheda del sensore che converte il segnale proveniente dal connettore BNC ad analogico
  • Cavetti

 

Specifiche prodotto

  • Tensione di funzionamento: 5.00V
  • Range di pH misurato: 0-14
  • Temperatura di funzionamento: 0-60℃
  • Precisione: ± 0.1 (25 ℃)
  • Tempo di risposta: ≤ 1min
  • Sensore pH con connettore BNC
  • PH2.0 Interface
  • Potenziometro on board
  • Indicatore LED ON/OFF

 

Come procedere

Il procedimento è molto semplice, si devono collegare la sonda e la scheda con il connettore BNC. Il tutto avviene incastrando le due parti facendo in modo che il dente di una delle due entri nel solca dell’altra.

Punto di unione scheda e sonda

Punto di unione scheda e sonda

 

Una volta fatto questo dovrete connettere i cavetti alla scheda.

Scheda e cavi

Scheda e cavi

 

Il gioco è fatto.

Ora è il momento di usare la sonda e di calibrarla.

 

Come usare la sonda

 

Per utilizzare la sonda si può usare il codice che trovate sul sito del produttore e che vi copio nelle righe sottostanti:

 

/*
 # This sample code is used to test the pH meter V1.0.
 # Editor : YouYou
 # Ver    : 1.0
 # Product: analog pH meter
 # SKU    : SEN0161
*/
#define SensorPin A0            //pH meter Analog output to Arduino Analog Input 0
#define Offset 0.00            //deviation compensate
#define LED 13
#define samplingInterval 20
#define printInterval 800
#define ArrayLenth  40    //times of collection
int pHArray[ArrayLenth];   //Store the average value of the sensor feedback
int pHArrayIndex=0;    
void setup(void)
{
  pinMode(LED,OUTPUT);  
  Serial.begin(9600);  
  Serial.println("pH meter experiment!");    //Test the serial monitor
}
void loop(void)
{
  static unsigned long samplingTime = millis();
  static unsigned long printTime = millis();
  static float pHValue,voltage;
  if(millis()-samplingTime > samplingInterval)
  {
      pHArray[pHArrayIndex++]=analogRead(SensorPin);
      if(pHArrayIndex==ArrayLenth)pHArrayIndex=0;
      voltage = avergearray(pHArray, ArrayLenth)*5.0/1024;
      pHValue = 3.5*voltage+Offset;
      samplingTime=millis();
  }
  if(millis() - printTime > printInterval)   //Every 800 milliseconds, print a numerical, convert the state of the LED indicator
  {
    Serial.print("Voltage:");
        Serial.print(voltage,2);
        Serial.print("    pH value: ");
    Serial.println(pHValue,2);
        digitalWrite(LED,digitalRead(LED)^1);
        printTime=millis();
  }
}
double avergearray(int* arr, int number){
  int i;
  int max,min;
  double avg;
  long amount=0;
  if(number<=0){
    Serial.println("Error number for the array to avraging!/n");
    return 0;
  }
  if(number<5){   //less than 5, calculated directly statistics
    for(i=0;i<number;i++){
      amount+=arr[i];
    }
    avg = amount/number;
    return avg;
  }else{
    if(arr[0]<arr[1]){
      min = arr[0];max=arr[1];
    }
    else{
      min=arr[1];max=arr[0];
    }
    for(i=2;i<number;i++){
      if(arr[i]<min){
        amount+=min;        //arr<min
        min=arr[i];
      }else {
        if(arr[i]>max){
          amount+=max;    //arr>max
          max=arr[i];
        }else{
          amount+=arr[i]; //min<=arr<=max
        }
      }//if
    }//for
    avg = (double)amount/(number-2);
  }//if
  return avg;
}

 

Questo codice si può copiare e caricare in Arduino. Per far funzionare la sonda poi si deve collegare i cavi in questo modo:

  • + con il pin 5V
  • – con il pin GND
  • A con il pin A0

 

Come si può notare, alla riga 9, c’è la seguente scritta

#define Offset 0.00

L’utilità di questa riga sarà chiara quando parleremo della calibrazione della sonda.

 

Come calibrare la sonda (IMPORTANTE)

La calibrazione della sonda è necessaria per essere sicuri che essa misuri correttamente. Per calibrare la sonda useremo il potenziometro posto sulla scheda della sonda e delle soluzioni a pH noto.

Consiglio di usare almeno 2 o 3 soluzioni per calibrare la sonda.

Io ne ho usate 2:

  • una a pH 6,864
  • una a pH 4,003
Soluzioni usate per la calibrazione

Soluzioni usate per la calibrazione

 

la prima cosa da fare è togliere il tappo di protezione alla sonda pH

tappo di protezione della sonda

tappo di protezione della sonda

 

e la si deve immergere nella prima soluzione, io ho scelto quella a pH 4.

IMG_20160321_221038

Calibrazione

 

Una volta collegato Arduino al PC, controllare nel monitor Seriale il valore restituito del pH. Iniziamo a calibrare la sonda agendo sul potenziometro e variando il valore della variabile offset che abbiamo visto prima.

Una volta che il valore misurato dalla sonda è uguale (o quasi) al valore del pH noto della soluzione allora laviamo la sonda e passiamo alla seconda soluzione.

Lavare la sonda prima di immergerla nella seconda soluzione

Lavare la sonda prima di immergerla nella seconda soluzione

 

Continuiamo a variare offset e potenziometro e continuando a provare le varie soluzioni fino a che non otteniamo una situazione che ci soddisfa.

 

Siamo ora pronti ad usare la sonda pH.

 

 

Possibili usi

Io ho deciso di usarla nel mio acquario (leggi qui l’articolo) ma si potrebbe usare per molto altro, ad esempio un orto idroponico.

IMG_20160324_141132

 

Acquisti alternativi

Se si dispone già della scheda sulla quale connettere il connettore BNC e si vuole acquistare la sola sonda si potrebbe pensare a questo prodotto (per fare un esempio), magari anche solo come sostituzione in caso di rotture.

 

 

Share This:

Simone

Studente Data di nascita: 12/07/1990 - Parma, IT Hobbies: Informatica, acquariofilia, viaggi, tecnologia, aria aperta, sport, web.

8 Comments

  1. Una volta calibrata la sonda, per quanto tempo si può ritenere valida la sua misurazione?

  2. ciao scusa la domanda ma io ne capisco poco ma mi interessa l’articolo visto la passione per l’acquario , mio figlio ha fato diversi progetti con l’arduino ma ha avuto sempre problemi con il display , nel programma che hai scritto è gia compreso anche il funzionamento del display, oppure dammi un consiglio grazie mille

    • Ciao scusa il ritardo, per quanto riguarda il display non è disponibile in questo sketch. Lo trovi nel progetto più completo e complesso dell’acquario: qui
      Il consiglio che posso darti è di usare un display I2C. alcune info

  3. Ciao Simone !
    Cercavo proprio un progetto del genere , ti volevo chiedere ma nel programma che hai messo c’è anche compreso la programmazione del display?
    Grazie in anticipo

    • Ciao, per quanto riguarda il display non è disponibile in questo sketch. Lo trovi nel progetto più completo e complesso dell’acquario: qui

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *