Misurazione del pH con Arduino UNO R4 Minima: La Guida Completa

Articolo riservato agli utenti registrati

Utilizziamo il nuovo Arduino UNO R4 Minima per misurare il pH di liquidi e visualizzare il valore rilevato su un display OLED.

In questo articolo, vi presentiamo un pH-metro in grado di misurare accuratamente il pH di una soluzione utilizzando un sensore dedicato, la board Arduino UNO R4 Minima e un piccolo display OLED da 0,96โ€.

La versatilitร  di questo sistema permette di applicarlo in diversi ambiti, fornendo risultati affidabili e di facile consultazione.

Per comprendere appieno lโ€™importanza di questo progetto, รจ fondamentale considerare lโ€™acqua come fattore cruciale in molti contesti lavorativi.

Ad esempio, nel settore dellโ€™agricoltura idroponica, in cui le piante vengono coltivate senza lโ€™utilizzo del terreno, il pH dellโ€™acqua gioca un ruolo fondamentale nel garantire lโ€™ottimale assorbimento dei nutrienti da parte delle piante.

Monitorare costantemente il pH dellโ€™acqua consente agli agricoltori e agli operatori di regolare i livelli di aciditร  o alcalinitร , creando cosรฌ un ambiente ideale per la crescita e lo sviluppo delle piante.

Ma non รจ solo lโ€™agricoltura idroponica che potrebbe beneficiare di questa progetto. Pensiamo anche al settore delle piscine, in cui la corretta misurazione del pH dellโ€™acqua รจ essenziale per garantire un ambiente salubre e sicuro per i nuotatori. Un pH sbilanciato puรฒ causare irritazione agli occhi e alla pelle dei bagnanti, oltre a favorire la proliferazione di batteri e alghe.

Grazie al nostro progetto, sarร  possibile monitorare costantemente il pH dellโ€™acqua e intervenire tempestivamente per mantenere condizioni ottimali di balneabilitร .

Inoltre, il nostro sistema di misurazione del pH puรฒ trovare applicazione anche negli acquari, dove la qualitร  dellโ€™acqua รจ di vitale importanza per la salute dei pesci e degli organismi marini presenti. Un pH scorretto puรฒ compromettere lโ€™equilibrio dellโ€™ecosistema acquatico, causando stress e malattie ai suoi abitanti.

Con il nostro pH-metro, gli appassionati di acquari potranno monitorare in tempo reale il pH dellโ€™acqua e apportare eventuali correzioni per garantire un ambiente ideale per la vita marina.

Cosโ€™รจ il pH

Prima di procedere con il progetto vediamo cosโ€™รจ il pH.

Il pH (potential of Hydrogen) รจ una scala di misura utilizzata per indicare il livello di aciditร  o alcalinitร  di una soluzione. Questa scala va da 0 a 14, dove il valore 7 rappresenta la neutralitร , mentre i valori inferiori a 7 indicano unโ€™aciditร  e quelli superiori a 7 indicano una basicitร  (Fig. 1).

Fig. 1 La scala utilizzata per indicare il livello di aciditร  o alcalinitร  di una soluzione.

 

Il pH viene determinato dalla concentrazione di ioni idrogeno (H+) presenti nella soluzione. Quando una sostanza si scioglie in acqua, puรฒ liberare ioni idrogeno che determinano lโ€™aciditร  della soluzione. Se la concentrazione di ioni idrogeno รจ alta, il pH sarร  basso, indicando unโ€™aciditร  elevata. Al contrario, se la concentrazione di ioni idrogeno รจ bassa, il pH sarร  alto, indicando una basicitร  maggiore.

Coma giร  accennato, il pH รจ un parametro importante in molti campi scientifici e industriali. Ma รจ anche fondamentale per la salute umana, poichรฉ diversi sistemi biologici richiedono un ambiente con un pH specifico per funzionare correttamente.

La misurazione del pH puรฒ essere effettuata utilizzando indicatori chimici o strumenti elettronici chiamati pH-metri. I pH-metri forniscono una lettura precisa del pH della soluzione e sono comunemente impiegati nei laboratori di chimica e nelle analisi ambientali.

Sonda per la misurazione del PH

Nel nostro progetto utilizzeremo una sonda elettronica per misurare il pH (Fig. 2).

Fig. 2 Sonda elettronica per misurare il pH.

Il funzionamento della sonda di un pH-metro elettronico si basa su principi elettronici e chimici.

Eโ€™ composta da un elettrodo di vetro sensibile al pH e un elettro di riferimento. Il primo contiene un vetro speciale che reagisce con gli ioni idrogeno presenti nella soluzione.

Quando lโ€™elettrodo di vetro viene immerso nella soluzione, si crea una differenza di potenziale elettrico in base al pH della soluzione. Lโ€™elettrodo di riferimento fornisce un punto di riferimento stabile per la misurazione del pH.

Solitamente, viene utilizzato un elettrodo di riferimento a gel o a soluzione salina.

La sonda per pH รจ in grado di rilevare la differenza di potenziale elettrico tra lโ€™elettrodo di vetro e lโ€™elettrodo di riferimento. Questo potenziale viene convertito in un valore di pH tramite un circuito elettronico.

Prima dellโ€™uso, รจ necessario calibrare lo strumento utilizzando soluzioni di pH noto (solitamente pH 4 e pH 7) per garantire accuratezza nelle misurazioni.

Particolare attenzione deve essere posta per la cura dellโ€™elettrodo in vetro che deve essere conservato in una soluzione specifica e periodicamente pulito per rimuovere depositi che potrebbero influenzare le misurazioni.

La sonda non puรฒ essere collegata direttamente alla nostra scheda Arduino UNO R4, ma il segnale deve essere elevato e reso leggibile dal microcontrollore tramite una scheda di condizionamento del segnale (Fig. 3).

Fig. 3 La scheda che permette ad Arduino UNO R4 di interfacciarsi alla sonda per pH.

 

La sonda pH viene collegata al modulo di condizionamento attraverso un connettore BNC, che assicura una connessione stabile e affidabile.

Il modulo รจ dotato di unโ€™uscita di tensione proporzionale al livello di pH misurato. Questo pin puรฒ essere collegato allโ€™ingresso analogico di una scheda, come, nel nostro caso, Arduino UNO. Per il corretto funzionamento il modulo deve essere alimentato con una tensione di 5 Vdc e dato il basso consumo (tra i 5 e 10 mA) possiamo alimentarlo direttamente dal pin 5V della nostra UNO R4.

Per il corretto funzionamento รจ necessario attendere almeno 60 secondi per avere delle letture accurate.

Arduino UNO R4 Minima

La quarta versione dellโ€™Arduino UNO, lโ€™Arduino UNO R4 Minima, rappresenta un importante passo avanti nel campo del fai-da-te e dellโ€™elettronica (Fig. 4).

Fig. 4 La board Arduino UNO R4 Minima.

 

Questa nuova versione monta un processore Arm Cortex-M4 a 32 bit, che garantisce una maggiore potenza di calcolo, e una quantitร  di memoria 16 volte superiore rispetto alle versioni precedenti.

Nonostante questi miglioramenti, le dimensioni e la compatibilitร  dei pin con i 5V rimangono invariate.

Ciรฒ garantisce una transizione senza soluzione di continuitร  per gli shield e i progetti esistenti, sfruttando lโ€™ecosistema esteso e unico giร  creato per lโ€™Arduino UNO (Fig. 5).

Fig. 5 La pinout del nuovo Arduino รจ identica a quella della versione precedente.

 

La nuova versione offre anche un clock piรน veloce, consentendo di eseguire calcoli piรน precisi e gestire progetti complessi e sofisticati. Inoltre, รจ dotata di un connettore USB-C, che rappresenta uno standard piรน piccolo, potente e resistente rispetto ai connettori precedenti.

Per utilizzare la scheda Arduino UNO R4 Minima, รจ necessario installare il pacchetto della scheda UNO R4 Minima, che fa parte del core di Arduino per i dispositivi Renesas.

Per installarlo, sarร  necessario disporre di una versione dellโ€™IDE di Arduino, che รจ possibile scaricare dalla pagina del software di Arduino (https://docs.arduino.cc/software/ide-v2).
In questo articolo utilizzeremo lโ€™ultima versione dellโ€™IDE 2 (Fig. 6).

 

 

Fig.6 Lโ€™ultima versione dellโ€™IDE disponibile รจ la 2.1.0.

 

Per installare il pacchetto della scheda, aprire il โ€œGestore Schedeโ€ dal menu a sinistra, cercare UNO R4 Minima e installare lโ€™ultima versione (o la versione desiderata) (Fig. 7).

 

Fig. 7 Il pacchetto Arduino UNO R4 Boards da installare.

 

A questo punto collegando la board al computer verrร  creata una porta seriale virtuale che potrete utilizzare per la programmazione dellโ€™Arduino.

Il collegamento del micuratore di PH con Arduino R4

In questo progetto abbiamo utilizzato diversi componenti per creare un sistema di rilevazione del pH. Il componente principale, ovvero la sonda in grado di rilevare il pH, รจ stato collegato al suo circuito di condizionamento tramite connettore BNC. Come giร  accennato il circuito di condizionamento prende lโ€™alimentazione direttamente dai pin 5V e GND della scheda Arduino UNO R4.

Il pin P0 del modulo di rilevazione pH รจ stato collegato al pin analogico A0 della scheda Arduino. Questa connessione consentirร  alla main board di leggere i valori di pH rilevati dal sensore.

Il display OLED utilizzato prevede una connessione I2C che permette, con soli due fili, oltre allโ€™alimentazione, di controllare il display.

I pin SDA e SCL del display sono stati quindi collegati ai pin SDA e SCL della scheda Arduino UNO R4, mentre lโ€™alimentazione รจ stata presa dai pin 3,3V e GND.

Questa configurazione ci permetterร  di rilevare il pH utilizzando la sonda e visualizzare i risultati sul display OLED. รˆ importante seguire attentamente le istruzioni e i collegamenti riportati nello schema di cablaggio per garantire un corretto funzionamento del sistema.

schema di CABLAGGIO

Il firmware

Il codice scritto per Arduino UNO R4 permette di leggere i valori del sensore di pH e visualizzarli sul display OLED.

Vediamo il codice nel dettaglio.

Le prime righe di codice includono le librerie necessarie per il funzionamento del programma, in particolare viene inclusa la libreria Wire per lโ€™I2C e le librerie di Adafruit Adafruit_GFX e Adafruit_SSD1306 per la gestione del display OLED.

Successivamente, sono definite alcune costanti e variabili utilizzate nel programma (Listato 1).

Listato 1

#define SensorPin 0 // il pin analogico di output del sensore di pH รจ collegato allโ€™ingresso analogico 0 dellโ€™Arduino
unsigned long int avgValue; // memorizza il valore medio dei feedback del sensore
float b;
int buf[10],temp;

#define SCREEN_WIDTH 128 // larghezza dello schermo OLED in pixel
#define SCREEN_HEIGHT 64 // altezza dello schermo OLED in pixel
#define OLED_RESET -1 // pin di reset (o -1 se la gestione del reset รจ condivisa)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

La funzione setup() viene eseguita allโ€™avvio e svolge un ruolo cruciale nellโ€™inizializzazione del programma (Listato 2).

Listato 2

void setup() {
  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);
}

 

Prima di tutto, viene impostato il pin digitale 13 come output per controllare un LED. Successivamente, viene inizializzata la comunicazione seriale attraverso il monitor seriale a una velocitร  di trasmissione di 9600 baud.

Successivamente, il programma verifica se รจ possibile allocare correttamente la memoria per il display OLED SSD1306. Se la memoria non puรฒ essere allocata, viene visualizzato un messaggio di errore e il programma si interrompe.

Se invece il display puรฒ essere inizializzato correttamente, vengono eseguite una serie di comandi per configurarlo.

Viene effettuata una breve pausa, quindi il display viene cancellato e viene impostata la dimensione del testo su 2 e il cursore viene posizionato alla coordinate (10,5) del display.

Successivamente, viene visualizzato il testo โ€œPH Sensorโ€ chiamando la funzione display.display(). Viene inserita una pausa di 3 secondi per consentire allโ€™utente di leggere il messaggio sul display prima che il programma passi alla funzione loop().

La funzione loop() รจ il cuore del programma Arduino e viene eseguita continuamente dopo la fase di setup (Listato 3).

Listato 3

void loop() {
    for (int i = 0; i & lt; 10; i++) //Ottenere 10 valori campione dal sensore per ottenere una misura piรน precisa
    {
      buf[i] = analogRead(SensorPin);
      delay(10);
    }
    for (int i = 0; i & lt; 9; i++) //Ordinare i valori analogici dal piรน piccolo al piรน grande
    {
      for (int j = i + 1; j & lt; 10; j++) {
        if (buf[i] & gt; buf[j]) {
          temp = buf[i];
          buf[i] = buf[j];
          buf[j] = temp;
        }
      }
    }
    avgValue = 0;
    for (int i = 2; i & lt; 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);

 

Allโ€™interno del loop, vengono acquisiti 10 valori campione dal sensore di pH tramite il pin analogico 0. Questi valori vengono successivamente ordinati in ordine crescente per poter calcolare il valore medio dei 6 campioni centrali al fine di ridurre il rumore.

Questo valore viene quindi convertito in millivolt e successivamente questi vengono trasformati nel valore di pH corrispondente.

Il valore di pH viene quindi stampato sul monitor seriale con due cifre decimali di precisione e visualizzato sul display OLED.

Infine, viene accesa e spenta una luce collegata al pin digitale 13 per fornire un feedback visivo. Il programma poi si mette in pausa per 800 millisecondi prima di iniziare un nuovo ciclo di loop, eseguendo le stesse operazioni di acquisizione e calcolo dei valori di pH. Questo ciclo si ripete indefinitamente finchรฉ lโ€™Arduino rimane alimentato.

Conclusioni

In questo articolo รจ stato presentato un sistema di misurazione del pH utilizzando un sensore dedicato, la board Arduino UNO R4 Minima e un display OLED.

Il sistema offre una soluzione versatile per misurare accuratamente il pH di una soluzione in diversi contesti, come lโ€™agricoltura idroponica, le piscine e gli acquari.

Si tratta di unโ€™ottima base di partenza da adattare alla vostra specifica applicazione.

2 Commenti

  1. Per capire mi manca un dato: il range del segnale analogico in uscita dalla sonda in corrispondenza di pH =0 e pH = 14. Un'altra domanda: il segnale รจ lineare con il pH? Grazie
    • Nella pagina del sensore trovi alcune info https://futuranet.it/prodotto/modulo-per-sensore-ph-2/ Questo รจ la formula per ricavare il PH. Nell'esempio abbiamo fatto anche una media dei valori letti: avgValue = 0; for (int i = 2; i & lt; 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

Lascia un commento

Il tuo indirizzo email non sarร  pubblicato.

Menu