Come monitorare il pH e il livello di umidità del terreno
Contributo di Editori nordamericani di DigiKey
2018-03-29
Mantenere un'umidità e un pH adeguati nel suolo è fondamentale per la salute delle piante, che si tratti di agricoltura su larga scala o di piccoli orti domestici. Per misurare queste caratteristiche del suolo, tuttavia, gli sviluppatori devono progettare catene di segnali analogici di precisione economiche, capaci di convertire dati grezzi in informazioni utili richieste per applicazioni specifiche di monitoraggio e misurazione.
Un possibile approccio per raggiungere questi obiettivi di precisione è quello di utilizzare un progetto di riferimento con software opportunamente flessibile. Un buon esempio di tale soluzione è l'abbinamento della scheda e del pacchetto software EVAL-CN0398-ARDZ di Analog Devices.
Prima di introdurre la scheda e il progetto di riferimento di Analog Devices CN0398, questo articolo tratta delle applicazioni e dei requisiti associati al monitoraggio dell'umidità e del pH del terreno. L'articolo spiega come i principali componenti utilizzati nel progetto CN0398 siano in grado di risolvere i requisiti progettuali chiave ed esamina il loro ruolo nell'applicazione complessiva. L'articolo termina mostrando come gli sviluppatori possono utilizzare la scheda CN0398 e il pacchetto software associato per valutare e personalizzare rapidamente le applicazioni di monitoraggio del terreno.
Misurare accuratamente le caratteristiche del terreno è importante
La necessità di mantenere un adeguato contenuto di acqua nel terreno e un adeguato livello di pH è un requisito fondamentale per i coltivatori di piante in qualsiasi scala di produzione. Qualsiasi pianta, in presenza di una carenza di acqua nel terreno, riduce il processo di fotosintesi, oltre a mettere in sofferenza altri processi biologici come la fissazione dell'azoto in leguminose importanti come la soia.
Analogamente, i cambiamenti nel terreno dovuti alla fertilizzazione o a fenomeni naturali possono avere un impatto enorme sul suo pH, con conseguente riduzione dei microbi essenziali e delle sostanze nutritive. In alcune colture, un pH del terreno inadeguato nelle fasi iniziali della crescita della pianta porta a tassi di sviluppo e rendimento finale inferiori.
Senza sistemi di monitoraggio adeguati, l'umidità e il pH del terreno possono cadere a valori sfavorevoli, determinando un deterioramento della salute delle piante. La scheda e il pacchetto software di Analog Devices EVAL-CN0398-ARDZ costituiscono un progetto completo per il monitoraggio del terreno che gli sviluppatori possono utilizzare direttamente o modificare per soddisfare esigenze specifiche.
La scheda CN0398 e il progetto di riferimento di Analog Devices sono stati realizzati appositamente per l'uso con sensori esterni di umidità, pH e temperatura proprio nelle applicazioni di misurazione delle caratteristiche del terreno. La circuiteria della scheda prevede la presenza di più sensori, ed è essenziale per produrre dati di uscita di umidità e pH accessibili attraverso l'interfaccia seriale. Nonostante le sue svariate caratteristiche, il progetto consuma al massimo 1,95 milliampere (mA) e fornisce funzioni di risparmio energetico, tra cui l'uso della modulazione della larghezza di impulso (PWM) per l'alimentazione di sensori esterni.
Gli sviluppatori possono utilizzare CN0398 come punto di partenza per progetti hardware personalizzati o utilizzarla con la scheda base compatibile Arduino EVAL-ADICUP360 di Analog Devices. Progettata come shield Arduino, CN0398 si innesta direttamente nella scheda base dando origine a una piattaforma idonea a un veloce sviluppo dell'applicazione.
Per accelerare lo sviluppo del software, gli ingegneri possono trarre vantaggio dal pacchetto software open-source ADuCM360_demo_cn0398 di Analog Devices, progettato per l'uso con la scheda sensori CN0398, la scheda base ADICUP360 e CrossCore Embedded Studio di Analog Devices. Oltre ai driver di base e alle utility di supporto di sistema, il pacchetto software include file sorgente completi in C++ e file header, tra cui un'applicazione software completa per la misurazione delle caratteristiche del terreno.
La combinazione del set di schede di Analog Devices e del pacchetto software fornisce agli sviluppatori un progetto hardware completo e un'applicazione software pronta per l'uso immediato in queste applicazioni. Altrettanto importante, il progetto di riferimento hardware CN0398 e il software di esempio forniscono una traccia per un rapido sviluppo di sistemi di misurazione del terreno personalizzati in grado di soddisfare anche requisiti specifici tipici di queste applicazioni.
Elaborazione del segnale dei sensori
Il progetto hardware CN0398 comprende tre sottocircuiti separati per sensori esterni di umidità, pH e temperatura. Ogni sottocircuito fornisce tutti i circuiti necessari per interfacciarsi con ciascun tipo di sensore. Agli sviluppatori è richiesto solo di collegare ogni sensore al connettore corrispondente sulla scheda CN0398 e fornire l'alimentazione necessaria per iniziare a lavorare con i sensori. Questa funzionalità è costruita intorno ad AD7124-8 di Analog Devices, che combina un front-end di condizionamento esteso del segnale con convertitore analogico/digitale (ADC) sigma-delta (Σ-Δ) a 24 bit (Figura 1).

Figura 1: Con la sua catena di segnali integrata e l'ADC, AD7124-8 di Analog Devices semplifica la progettazione dei sistemi multisensore necessari per la misurazione delle caratteristiche del terreno. (Immagine per gentile concessione di Analog Devices)
Il multiplexer di segnale di AD7124-8 può instradare otto ingressi differenziali o 15 ingressi a terminazione singola attraverso la sua catena di segnali programmabile integrata verso l'ADC Σ-Δ su chip e il filtro digitale per la conversione e il condizionamento. Gli sviluppatori utilizzano l'interfaccia seriale dell'AD7124-8 per collegare il dispositivo a un host MCU per il controllo e la conversione dei dati.
Grazie alle sue numerose funzionalità, gli sviluppatori possono soddisfare una vasta gamma di requisiti di progettazione con pochi componenti aggiuntivi, oltre ai circuiti dei sensori e a una fonte di tensione stabile. Per il progetto di riferimento CN0398, Analog Devices usa il suo riferimento di tensione ADR3433 come alimentazione analogica (AVDD) e il riferimento di tensione (REFIN1) (Figura 2). Come descritto di seguito, i progetti per ciascuno dei tre circuiti sensore richiedono solo pochi componenti aggiuntivi.

Figura 2: Utilizzando AD7124-8 di Analog Devices, gli sviluppatori possono implementare progetti di sensori con pochi componenti aggiuntivi oltre a circuiti di ingresso sensore specifici e un riferimento di tensione di precisione come ADR3433 di Analog Devices. (Immagine per gentile concessione di Analog Devices)
Misurazione dell'umidità
I sistemi di rilevamento dell'umidità del terreno determinano tipicamente il contenuto di acqua sfruttando la differenza della costante dielettrica dell'acqua (80) rispetto all'aria (1). Per questi sistemi, agli sviluppatori basta pilotare un semplice sensore trifilare come HPP809A033 di TE Connectivity Measurement Specialties con una sorgente di tensione per generare una tensione di uscita proporzionale al contenuto d'acqua del terreno.
Nel progetto CN0398, il front-end dell'umidità si avvale di un regolatore lineare a bassa caduta di tensione (LDO) ADP7118-2.5 di Analog Devices, per fornire al sensore una sorgente di tensione stabile (Vsensor) (Figura 3). Per alimentare l'LDO, gli sviluppatori possono prelevare energia dalla scheda base ADICUP360 o da loro progetti personalizzati.

Figura 3: Il progetto CN0398 di Analog Devices utilizza il suo regolatore lineare a bassa caduta di tensione (LDO) ADP7118-2.5 per fornire una sorgente di tensione stabile Vsensor a un sensore di umidità capacitivo. (Immagine per gentile concessione di Analog Devices)
Sebbene ADP7118 possa fornire al sensore un livello di tensione continuo, i problemi di consumo energetico e i requisiti specifici di alcuni sensori di umidità impongono l'uso di una sorgente pulsata per pilotare il sensore. Per soddisfare tali requisiti, gli sviluppatori possono fornire al sensore impulsi di tensione pilotando la porta di abilitazione (EN) dell'LDO con un'uscita PWM dell'MCU.
Tramite un circuito di condizionamento del segnale integrato e l'ADC, AD7124-8 è in grado di campionare e convertire in modo affidabile l'uscita di tensione di un sensore di umidità. Per le applicazioni di misurazione del terreno, tuttavia, la relazione tra i dati convertiti dei sensori e l'umidità del terreno può essere complessa.
Per la valutazione dell'umidità del terreno, gli esperti del settore confrontano di solito i livelli di umidità del suolo in termini di contenuto volumetrico di acqua (VWC), ovvero il rapporto tra il volume d'acqua e il volume totale del suolo. I produttori di sensori di umidità forniscono normalmente equazioni per la conversione in VWC dell'uscita dei loro sensori. Tuttavia, le condizioni del terreno o la natura stessa dell'applicazione possono richiedere l'uso di un'equazione di conversione più adatta ad una specifica situazione.
Analog Devices dimostra l'uso di entrambi gli approcci nel suo pacchetto software di esempio. Abilitando USE_MANUFACTURER_MOISTURE_EQ da definire nel file header CN0398.h, gli sviluppatori possono scegliere di utilizzare le formule di conversione consigliate dal produttore o un'equazione di conversione standard fornita nel software. Qui, la routine di esempio read_moisture() genera un'uscita di umidità in base all'intervallo di tensione di uscita del sensore se è definito USE_MANUFACTURER_MOISTURE_EQ (Listato 1). Se la definizione viene trasformata in commento nell'header CN0398.h, la routine può convertire la tensione in umidità utilizzando l'espressione matematica fornita.
float CN0398::read_moisture()
{
float moisture = 0;
#ifdef MOISTURE_SENSOR_PRESENT
DioSet(ADP7118_PORT, ADP7118_PIN);
set_digital_output(P3, true);
timer.sleep(SENSOR_SETTLING_TIME);
int32_t data = adcValue[MOISTURE_CHANNEL]= read_channel(MOISTURE_CHANNEL);
DioClr(ADP7118_PORT, ADP7118_PIN);
float volt = voltage[MOISTURE_CHANNEL - 1] = data_to_voltage_bipolar(data, 1, 3.3);
#ifdef USE_MANUFACTURER_MOISTURE_EQ
if(volt <= 1.1) {
moisture = 10 * volt - 1;
} else if(volt > 1.1 && volt <= 1.3) {
moisture = 25 * volt - 17,5;
} else if(volt > 1.3 && volt <= 1.82) {
moisture = 48,08 * volt - 47,5;
} else if(volt > 1.82) {
moisture = 26,32 * volt - 7,89;
}
#else
moisture = -1.18467 + 21.5371 * volt - 110.996 * (pow(volt, 2)) + 397.025 * (pow(volt, 3)) - 666.986 * (pow(volt, 4)) + 569.236 * (pow(volt, 5)) - 246.005 * (pow(volt, 6)) + 49.4867 * (pow(volt, 7)) - 3.37077 * (pow(volt, 8));
#endif
if(moisture > 100) moisture = 100;
if(moisture < 0 ) moisture = 0;
#endif
set_digital_output(P3, false);
return moisture;
}
Listato 1: Il pacchetto software CN0398 di Analog Devices fornisce una routine di umidità di esempio che dimostra come gli sviluppatori possono utilizzare formule di conversione o equazioni del produttore per convertire la tensione del sensore di umidità in dati di umidità utili. (Codice per gentile concessione di Analog Devices)
Misurazione del pH
Un tipico sensore di pH come quello del kit SEN-10972 di SparkFun Electronics è dotato di un circuito equivalente caratterizzato da una sorgente di tensione ad alta impedenza. In queste situazioni, anche utilizzando un ADC con un front-end integrato di condizionamento del segnale, gli sviluppatori esperti in genere aggiungono un buffer tra l'uscita del sensore e l'ingresso ADC.
Infatti il circuito sensore di pH nel progetto CN0398 include un amplificatore operazionale ADA4661-2 di Analog Devices (Figura 4). Adatto per applicazioni a bassa potenza come i circuiti dei sensori, ADA4661-2 è un amplificatore operazionale di precisione, funzionante con alimentazione singola, a basso consumo energetico e bassa tensione di offset su tutto l'intervallo di tensione di funzionamento.

Figura 4: Nel progetto CN0398 di Analog Devices, un amplificatore operazionale ADA4661-2 della stessa Analog Devices, ha il ruolo di buffer tra un tipico sensore di pH ad alta impedenza e l'ingresso analogico AD7124-8 di Analog Devices. (Immagine per gentile concessione di Analog Devices)
Sebbene la progettazione si basi su una singola tensione di alimentazione, i sensori di pH generano tipicamente un'uscita di tensione bipolare. In questo caso, tuttavia, AD7124-8 fornisce un modo semplice per polarizzare il sensore ad un livello adeguato rispetto alla terra. AD7124-8 integra un generatore di tensione di polarizzazione interno che imposta la tensione di modo comune di un canale su AVDD/2. Come in questo caso, i progettisti possono utilizzare un pin di uscita di AD7124-8 per fornire questa tensione di polarizzazione sul lato basso del sensore di pH (VBIAS in Figura 4). Gli sviluppatori possono facilmente riportare l'ingresso polarizzato in un risultato digitale bipolare nel software.
Il pacchetto software open-source ADuCM360_demo_cn0398 include una routine di esempio read_ph() che illustra il processo di conversione della tensione di uscita del sensore pH in valori di pH. Come per la routine dell'umidità del terreno, la routine del pH dimostra l'uso di due approcci diversi per generare valori di pH (Listato 2).
float CN0398::read_ph(float temperature)
{
float ph = 0;
#ifdef PH_SENSOR_PRESENT
int32_t data;
set_digital_output(P2, true);
adcValue[PH_CHANNEL] = data = read_channel(PH_CHANNEL);
float volt = voltage[PH_CHANNEL - 1] = data_to_voltage_bipolar(data, 1, 3.3);
if(use_nernst)
{
ph = PH_ISO -((volt - ZERO_POINT_TOLERANCE) / ((2.303 * AVOGADRO * (temperature + KELVIN_OFFSET)) / FARADAY_CONSTANT) );
}
else
{
float m = (calibration_ph[1][0] - calibration_ph[0][0]) / (calibration_ph[1][1] - calibration_ph[0][1]);
ph = m * (volt - calibration_ph[1][1] + offset_voltage) + calibration_ph[1][0];
}
set_digital_output(P2, false);
#endif
return ph;
}
Listato 2: La routine di esempio di Analog Devices per la lettura dei valori del sensore di pH illustra l'uso dell'equazione standard di Nernst, o dei valori di calibrazione incorporati per convertire la tensione di uscita del sensore di pH in valori di pH. (Codice per gentile concessione di Analog Devices)
Impostando una variabile use_nernst su true nel pacchetto di esempio, gli sviluppatori possono generare il pH usando l'equazione standard di Nernst. Se impostata su false, la variabile fa sì che la routine utilizzi i valori creati durante una procedura di calibrazione a due punti, generalmente eseguita utilizzando soluzioni tampone di pH di riferimento come quelle del kit pH SEN-10972 di SparkFun. Le routine del software di esempio vengono fornite con valori di calibrazione predefiniti impostati utilizzando le tabelle di ricerca NIST per diverse soluzioni tampone di pH e valori di pH corretti in base alla temperatura, compresi tra 0 °C e 95 °C. Gli sviluppatori possono sostituire i valori predefiniti con i propri dati di calibrazione personalizzati o modificare facilmente il codice per supportare sia i valori predefiniti che quelli personalizzati.
Misurazione di temperatura
Come illustrato sopra nel listato 2, il pH dipende dalla temperatura, sia esplicitamente come nell'equazione di Nernst, sia implicitamente nei valori di calibrazione personalizzati. Inoltre, la temperatura influisce sulla sensibilità del sensore e sulla catena di segnali. Sebbene il sensore di temperatura integrato in AD7124-8 (rivedere la Figura 1) possa risolvere alcuni di questi problemi, l'affidabilità della misurazione del terreno dipende dalla precisione delle letture di temperatura. Per cui, il canale del sensore di temperatura CN0398 è progettato per garantire letture accurate da un sensore di temperatura esterno a resistenza (RTD) PT100 trifilare, ad esempio il 3290 di Adafruit Industries.
Come per qualsiasi sensore resistivo, gli RTD richiedono una corrente di eccitazione per poter misurare le variazioni di tensione dipendenti dalla temperatura. In genere, gli sviluppatori che utilizzano sensori resistivi devono ampliare i loro progetti di sensori con driver esterni, regolatori e sensori di corrente per mantenere la corrente di eccitazione a livelli precisi. Con AD7124-8, tuttavia, devono solo aggiungere le reti passive appropriate, necessarie per supportare una configurazione trifilare (Figura 5).

Figura 5: Per pilotare un rilevatore di temperatura resistivo trifilare (RTD), il progetto CN0398 di Analog Devices utilizza sorgenti di corrente costante programmabili integrate in AD7124-8 di Analog Devices. (Immagine per gentile concessione di Analog Devices)
Integrata in AD7124-8, una coppia di generatori di corrente costante fornisce l'eccitazione a vari livelli fissi da 50 a 1000 microampere (µA), compreso il livello di 500 μA utilizzato nel progetto CN0398. Gli sviluppatori impostano il livello di corrente e il pin di uscita programmando rispettivamente i bit IOUTx e IOUTx_CH nel registro di configurazione IO_CONTROL del dispositivo. Come parte della sua routine di inizializzazione, il pacchetto software CN0398 imposta i canali ADC AIN11 e AIN12 come pin di uscita per due correnti di eccitazione da 500 μA, IOUT1 e IOUT2.
Anche se i generatori di corrente sono sufficientemente precisi per molte applicazioni, gli sviluppatori possono facilmente annullare l'impatto di variazioni di corrente utilizzando una tecnica di misura raziometrica. Il circuito del sensore hardware di temperatura CN0398 mostrato in Figura 5 utilizza questo approccio. Qui, la stessa corrente IOUT1 passa attraverso l'RTD e un resistore di riferimento di precisione RREF, dando luogo a una misura raziometrica. Allo stesso tempo, IOUT2 produce una caduta di tensione attraverso la resistenza del terminale RTD SENSE dell'RDT che annulla la caduta di tensione attraverso la resistenza del terminale RTD+.
Come per i sensori di umidità e di pH, la conversione dei valori di resistenza in temperatura richiede un'adeguata funzione di trasformazione. Per un RTD tipico, la relazione tra temperatura e resistenza può essere espressa in modo matematico e affidabile. Ciononostante, è necessario utilizzare due diverse espressioni matematiche per temperature superiori e inferiori a 0 °C. Il pacchetto software open-source ADuCM360_demo_cn0398 supporta entrambi i metodi oltre a una semplice conversione lineare (Listato 3).
float CN0398::read_rtd()
{
float temperature = 0;
int32_t data;
adcValue[RTD_CHANNEL] = data = read_channel(RTD_CHANNEL);
float resistance = ((static_cast<float>(data) - _2_23) * RREF) / (TEMP_GAIN * _2_23);
#ifdef USE_LINEAR_TEMP_EQ
temperature = PT100_RESISTANCE_TO_TEMP(resistance);
#else
#define A (3.9083*pow(10,-3))
#define B (-5.775*pow(10,-7))
if(resistance < R0)
temperature = -242.02 + 2.228 * resistance + (2.5859 * pow(10, -3)) * pow(resistance, 2) - (48260.0 * pow(10, -6)) * pow(resistance, 3) - (2.8183 * pow(10, -3)) * pow(resistance, 4) + (1.5243 * pow(10, -10)) * pow(resistance, 5);
else
temperature = ((-A + sqrt(double(pow(A, 2) - 4 * B * (1 - resistance / R0))) ) / (2 * B));
#endif
return temperature;
}
Listato 3: Per convertire i valori di resistenza in temperatura, una routine di esempio di Analog Devices illustra il modello di progetto di base per la selezione del metodo appropriato basato su definizioni statiche (USE_LINEAR_TEMP_EQ) o su valori dinamici (resistance < R0). (Codice per gentile concessione di Analog Devices)
Come mostrato nel listato 3, la routine read_rtd() permette di selezionare una semplice macro di conversione lineare, PT100_RESISTANCE_TO_TEMP, definita nel modulo CN0398.cpp. In alternativa, gli sviluppatori possono usare le espressioni matematiche più complesse fornite nella routine di esempio read_rtd(). In questo caso, il punto di inflessione di 0 °C per scegliere l'espressione appropriata è implicito in R0, che è la resistenza di RTD a 0 °C.
Conclusione
Per costruire sistemi di misurazione delle caratteristiche del terreno, gli ingegneri devono affrontare una serie di sfide sia a livello hardware che software. I progetti hardware devono soddisfare i requisiti di interfaccia dei sensori, mentre il software deve adattarsi a diversi approcci per la conversione dei dati grezzi in informazioni utili.
La scheda CN0398 e il pacchetto software open-source ADuCM360_demo_cn0398 di Analog Devices affrontano entrambi gli aspetti della progettazione di sistemi di misurazione delle caratteristiche del terreno. Utilizzati in combinazione con la scheda base ADICUP360 compatibile Arduino di Analog Devices, la scheda CN0398 e il software pertinente forniscono una soluzione completa per la misurazione delle caratteristiche del terreno.
Gli sviluppatori possono utilizzare questa soluzione chiavi in mano per creare applicazioni di misurazione delle caratteristiche del terreno o ampliare il software di riferimento e di campionamento associato per creare soluzioni personalizzate.
Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di DigiKey o le sue politiche.




