Orto idroponico verticale con Arduino – seconda parte

Nell’introduzione pre-pasquale dell’Orto idroponico verticale con Arduino ho accennato all’uso di alcuni sensori che ti permettono di monitorare le condizioni climatiche dell’ambiente e le proprietà dell’acqua di irrigazione.

Sensore EC montato

in questo articolo riprendo con l’analisi del primo dei sensori che abbiamo utilizzato: il sensore EC.

Il primo passo che ho fatto quando ho sentito parlare di questo sensore è stato ricercare su wikipedia cosa fosse un sensore EC e cosa potesse misurare, ho trovato:

An electrical conductivity meter (EC meter) measures the electrical conductivity in a solution. It is commonly used in hydroponics, aquaculture and freshwater systems to monitor the amount of nutrients, salts or impurities in the water.

Compreso, almeno a grandi linee, quale fosse lo scopo del sensore e la sua utilità nell’Orto idroponico verticale con Arduino ho iniziato a pensare come realizzarne uno o dove acquistarne uno già pronto.

Nella ricerca di informazioni e di chiarimenti ho scoperto che tra i frequentatori di WeMake ed al progetto dell’orto c’e Paolo Bonelli un appassionato arduino e conoscitore di chimica Ph, EC, ecc.. autore di un progetto “Acid Carousel” per il monitoraggio accurato delle acque, interamente realizzato con arduino e tagliato a laser.

Tornando al sensore EC ho chiesto a Paolo dei consigli ed ho ottenuto le risposte ed il sensore finito .. in pieno stile maker e con grande spirito di condivisione.

Cosa occorre per realizzare il tuo sensore EC laser cut

Paolo ha realizzato il sensore utilizzando:

  • n.1 resistenza da 470 ohm;
  • n.1 basetta di plexyglass tagliata ed incisa a laser;
  • n.2 viti di acciaio inossidabile;
  • n.2 bulloni di acciaio inossidabile;
  • n.1 cavo trifilare;
  • n.1 bacchetta di colla a caldo per sigillare il retro del sensore;

Il sensore EC per l’orto idroponico verticale con arduino

Per la realizzazione del sensore EC, Paolo, ha disegnato e tagliato a laser le basette necessarie, puoi scaricare qui i due file condivisi da Paolo:

Sensore EC preparazione

spiegandomi che la distanza tra i due bulloni influenza il comportamento del sensore come i materiali impiegati ed il tipo di vite, tolleranza della resistenza e cavi utilizzati.

Per scongiurare almeno il primo fattore ha preferito affidare al taglio laser la basetta in modo da essere certo che tra due sensori la distanza tra le viti sia sempre uguale.

Con l’uso della funzione engrave del laser ha anche realizzato degli incavi nelle basette in cui alloggiare i cavi di connessione e la resistenza:

Sensore EC resistenza 470ohm

poi ha assemblato il tutto:

Sensore EC engrave

sigillando con la colla a caldo il retro del sensore per renderlo isolato e lasciare che solo la parte esposta delle viti sia in contatto con il liquido da misurare:

Sensore EC isolamento

Un po di teoria prima dei test

Paolo ha dedicato alcune ore non solo alla costruzione dei sensori per l’orto idroponico verticale ma sopratutto alla taratura del sensore ed a spiegare il principio di funzionamento e le formule che poi ha applicato allo sketch:

Sensore EC calcoli Paolo Bonelli Orto idroponico verticale

E’ questo che accade quando si incontrano appassionati con grandi conoscenze e voglia di condividerle con chi è disposto ad accrescere le proprie conoscenze.

Lo sketch di test

Paolo ha realizzato uno sketch di test per due sensori, i due che avremmo utilizzato nell’Orto Idroponico e me lo ha dato perché potessi adattarlo all’orto.

Iniziamo dallo sketch di Paolo, l’originale:

/*   Conduttimetro
Collegamenti hardware
sensore    rosso              blu                bianco
           P1 ------O  O------P2-----RRRRR-------P3        Lato sensore
   0       D2    elettrodi    A0    470 ohm      D3        Lato Arduino
   1       D8    elettrodi    A1    470 ohm      D9        Lato Arduino
*/ 
byte nsens = 2;
byte P1[] = {51,50};
byte P2[] = {A15,A14};
byte P3[] = {53,52};
// parametri di taratura in uS/cm
float A[] = {870.43,822.71};
float B[] = {-1.194,-1.190};
//  resistenza fissa tra P1 e P3
float R1 = 470.;  // ohm
//  inizializzo resistenza tra i due elettrodi
float RS[] = {0,0};
//  inizializzo conducibilità specifica
float CS[] = {0,0};
//  variabili di lavoro
byte isens = 0;
byte n = 50;

#define ECHO;

void setup () {  
    Serial.begin(9600);
    delay(100);
    //  setta come output le  porte digitali
    for(byte isens = 0; isens < nsens ; isens++){
      pinMode(P1[isens],OUTPUT);
      pinMode(P3[isens],OUTPUT);
    }
}

//////////////////////////////////////////////////////////
void loop () {
  
  Serial.print( "Loop sensore 1: " );
  Serial.println( readEC( 0 ) );
  Serial.print( "Loop sensore 2: " );
  Serial.println( readEC( 1 ) );
 
  delay( 100 );
}

//////////////////////////////////////////////////////////
float readEC( byte isens ) {
  
  float RS1 = 0.;
  float RS2 = 0.;
  float VCC = 5000.;
  float Vconv = VCC/1024.;
  float V1 = 0.;
  float V2 = 0.;
  float VSG = 0.;
  
  float runningAvg1 = 0.;
  float runningAvg2 = 0.;
  float runningAvg3 = 0.;
  
  //  ciclo di misura su un sensore
  for(byte i = 0; i < n; i++) {
    digitalWrite(P1[isens],HIGH);
    digitalWrite(P3[isens],LOW);
    runningAvg1 = runningAvg1 + Vconv*analogRead(P2[isens]);         
    digitalWrite(P1[isens],LOW);
    runningAvg2 = runningAvg2 + Vconv*analogRead(P2[isens]);         
    digitalWrite(P3[isens],HIGH);
    runningAvg3 = runningAvg3 + Vconv*analogRead(P2[isens]);         
  }
  VSG = runningAvg2/n;
  V1  = runningAvg1/n;      
  V2  = runningAvg3/n;      
  //  compute RH and VS
  if(V1 < 2.){
    RS[isens] = 60000.;
    CS[isens] = 0.;
  } else {
    //  correggo con la galvanica
    V1 = V1-VSG;
    V2 = V2-VSG;
    //  primo calcolo di RS
    RS1 = R1*(VCC-V1)/V1; 
    //  secondo calcolo di RS e media tra i due (RS in kohm)
    RS2 = R1*V2/(VCC-V2);
    RS[isens] = (RS1 + RS2)/2000.;
    //  calcolo CS secondo i parametri di taratura
    if( RS[isens] < 0.5) { CS[isens] = 1300; } 
    else{ CS[isens] = A[isens]*pow(RS[isens],B[isens]); }          
  }
    
  #ifdef DEBUG
      Serial.print(" sensore # ");
      Serial.print(isens);
      Serial.print("  Galvanica: ");
      Serial.print(VSG,2);
      Serial.print("  V1 = ");
      Serial.print(V1,0);
      Serial.print(" V2 = ");
      Serial.print(V2,0);
      Serial.print("  RS1 = ");
      Serial.print(RS1,0);
      Serial.print("  RS2 = ");
      Serial.print(RS2,0);
      Serial.print("  RS = ");
      Serial.print(RS[isens],3);
      Serial.print("  CS = ");
      Serial.print(CS[isens],0);
      Serial.println();
  #endif  
  
  return CS[isens];
}

le righe di commento 001-007 contengono delle informazioni importanti in merito alla connessione di ciascun sensore ad arduino. Nota che nessun pin è connesso a +5v o Gnd ma ogni pin estremo è connesso ad un pin digitale ed i pin di misura sono connessi a pin analogici, il motivo è che nessun terminale del sensore deve sempre essere connesso all’alimentazione positiva o negativa del circuito ma dovrai alternare l’alimentazione positiva e negativa sugli elettrodi per evitare gli errori dovuti alla corrente galvanica ( approfondimento );

linee 008-011: definisci delle variabili di tipo byte in cui specifichi il numero di sensori ( nel nostro caso 2 ) e i pin a cui sono connessi i rispettivi P1,P2 e P3 ( ricorda che per il progetto Orto Idroponico Verticale abbiamo utilizzato un Arduino Mega sia per necessità di più ingressi sia per la sua maggiore memoria );

linee 013-014: imposta due parametri di taratura per ciascun sensore: parametro A e B che ti serviranno poi per il corretto calcolo di EC rilevato dal sensore, per la taratura Paolo ha utilizzato diversi tipi di acque di cui erano note le caratteristiche EC eseguite in laboratorio;

linea 016: definisci il valore della resistenza che hai utilizzato sui sensori, nel nostro caso sono entrambe da 470ohm;

linea 018: inizializza il valore di resistenza dei due elettrodi a 0;

linea 020: inizializza il valore di conducibilità specifica di ciascun sensore a 0;

linee 022-023: imposta il contatore isens a 0 con cui partirai nei cicli for su tutti i sensori e la variabile n con cui definisci il numero di misurazioni da eseguire;

linee 027-035: la funzione setup() non è complessa e oramai, se hai seguito i miei appunti su corso base sai anche cosa accade senza necessità che te lo rispieghi;

linee 038-046: anche le linee della loop() sono molto chiare e semplici per cui evito di ripetere sempre le medesime informazioni, le uniche linee su cui puoi soffermarti sono la linea 041 e la linea 043 che richiamanlo la funzione readEC() ciascuna passando l’indice del sensore che desideri sia interrogato e del quale ti interessa il valore misurato;

linee 051-061: sei già all’interno della funzione readEC il cui compito è eseguire la misurazione e restituire alla loop() il valore EC misurato dal sensore richiesto. In queste linee definisci alcune delle variabili di tipo float che ti serviranno per calcolare il valore EC da restituire;

linea 064: imposta un ciclo for che eseguirà una sequenza di operazioni, descritte nelle linee sotto, da 0 ad n dove n è il numero di campionamenti che ti interessa e che hai definito alla linea 023;

linee 065-066: imposta ad HIGH il P1 ed a LOW il P3;

linea 067: misura e calcola il valore runningAvg1 come somma del suo precedente valore misurato nel ciclo for e del prodotto tra Vconv ed il valore letto sul pin analogico P2 relativo al sensore di cui ti interessa la misura;

linea 068: imposta a LOW il valore del pin relativo al contatto P1;

linea 069: misura e calcola il valore runningAvg2 similmente a come hai già fatto per runningAvg1 in quanto in questa condizione la polarizzazione di P1 è LOW come quella di P3;

linea 070: imposta ad HIGH P3;

linea 071: misura e calcola il valore runningAvg3 similmente a come hai già fatto per runningAvg1 in quanto in questa condizione la polarizzazione di P1 è LOW e quella di P3 è HIGH;

linee 073-075: calcola il valore reale di VSG,V1 e V2 dividendo i rispettivi runningAvg per il numero di campionamenti;

linee 077-080: se il valore di V1 è inferiore a 2.0 imposta sia RS sia CS ai rispettivi valori indicati, RS = 60000 e CS = 0;

linee 082-083: se il valore di V1 è maggiore di 2 correggi la misura influenzata dalla corrente galvanica sottraendo sia da V1 sia da V2 il valore VSG;

linea 085: calcola il valore di RS1 come il prodotto della resistenza per il rapporto tra la differenza di potenziale VCC-V1 e V1 stesso;

linea 087: esegui un calcolo simile per RS2 invertendo la posizione di V2 nel rapporto;

linea 088: esegui la media tra RS1 ed RS2 riassegnando il valore alla variabile RS;

linea 090: se il valore di RS è inferiore 0.5 allora il valore di CS è il massimo misurabile ossia 1300 Siemens ( 1.3 microSiemens )

linea 091: con un valre di RS maggiore di 0.5 applichi la formula:

CS[isens] = A[isens]*pow(RS[isens],B[isens]);

ossia CS è uguale al prodotto del valore di taratura A, relativo al sensore di cui ti interessa la misura, per RS elevato alla potenza del suo corrispettivo B. La funzione pow restituisce il valore del primo parametro elevato alla potenza del secondo;

linee 094-112: invia al monitor seriale il risultato dei valori letti e dei calcoli eseguiti per poter fare un debug dei parametri prima di inserire lo sketch in quello dell’Orto idroponico verticale con arduino;

linea 114: restituisci alla funzione loop() il solo risultato relativo al valore di CS richiesto.

Ora sei pronto per eseguire il test dei tuoi sensori EC autocostruiti e passare al test.

Buon orto idroponico verticale.

  • Questo sito ed i suoi contenuti è fornito "così com'è" e Mauro Alfieri non rilascia alcuna dichiarazione o garanzia di alcun tipo, esplicita o implicita, riguardo alla completezza, accuratezza, affidabilità, idoneità o disponibilità del sito o delle informazioni, prodotti, servizi o grafiche correlate contenute sul sito per qualsiasi scopo.
  • Ti chiedo di leggere e rispettare il regolamento del sito prima di utilizzarlo
  • Ti chiedo di leggere i Termini e Condizioni d'uso del sito prima di utilizzarlo
  • In qualità di Affiliato Amazon io ricevo un guadagno dagli acquisti idonei qualora siano presenti link al suddetto sito.

Permalink link a questo articolo: https://www.mauroalfieri.it/elettronica/orto-idroponico-verticale-con-arduino-seconda-parte.html

47 commenti

2 ping

Vai al modulo dei commenti

    • cristian il 7 Maggio 2015 alle 12:51
    • Rispondi

    Salve, stavo studiando il codice dello sketch e non capisco dove il signore prende il valore di RS=60000 alla riga 078 ..
    grazie mille

    1. Ciao Cristian,
      alla linea 75 la variabile RS[isens] non viene presa ma impostata a 60000. è un assegnazione di valore fisso.

        • cristian il 8 Maggio 2015 alle 15:14
        • Rispondi

        Si scusami mi sono espresso male io, volevo sapere da dove ricava il valore di 60000 che utilizza come costante
        grazie ancora.

      • Giovanni il 29 Dicembre 2019 alle 13:27
      • Rispondi

      Scusa è possibile avere le misure precise per realizzare il conduttimetro.

      1. Ciao Giovanni,
        nell’articolo trovi sia il file in formato dxf sia svg da cui puoi prendere le misure che cerchi.

    • Luca il 8 Maggio 2015 alle 12:33
    • Rispondi

    Ciao Mauro,
    Intanto complimenti, ti seguo da un po’ e spesso hai risolto dei miei rompicapi quindi colgo l’occasione per ringraziarti.
    Ora vorrei cimentarmi con la costruzione di questo sensore EC ma per la realizzazione avrei bisogno di sapere l’interasse da centro vite e centro vite per avere la stessa distanza di quello che hai presentato, inoltre mi sarebbe di aiuto sapere che viti hai usato se M4 o M5.

    Grazie in anticipo e ancora complimenti.

    1. Ciao Luca,
      lascio il tuo commento on-line in quanto essendo stato realizzato a laser da Paolo non so con precisione che interasse e tipo di viti abbia utilizzato.
      Se incontro Paolo mi faccio fornire i disegni o dare le info che mi chiedi.

        • Paolo il 14 Maggio 2015 alle 12:33
        • Rispondi

        Ciao a tutti. I bulloncini in acciaio inox sono M4 e la loro distanza è 20 mm. Lo spessore della basetta in metacrilato è 6 mm. Adesso non ho per le mani un bullone di quelli per dirvi la lunghezza, però posso dirvi che dopo aver infilato il bullone sulla basetta e serrato con il suo dado, la parte filettata sporge di poco fuori dal dado.
        Oggi passo a Mauro il file del disegno per la lasercut.
        Una cosa importante da tener presente è che questo sensore va bene per conducibilità non superiori a 1300 microSiemens/cm, perchè la resistenza tra gli elettrodi diventa troppo piccola. Per andare oltre questo valore bisogna aumentare la distanza tra i bulloni o diminuire la superficie immersa degli elettrodi e ovviamente rifare la taratura. Ci sto lavorando.
        A presto e buon lavoro
        Paolo

        1. Grazie Paolo,
          disegni inseriti nell’articolo per il download

    • Francesco raso il 12 Maggio 2015 alle 10:33
    • Rispondi

    Salve sono un appassionato di elettronica e da qualche tempo mi sono avvicinato ad arduino. Sto lavorando su un progetto ma ho qualche difficoltà mi potreste dare una mano. Grazie in anticipo

    1. Ciao Francesco,
      questo non è un forum ma un blog, se commenti l’articolo che stai leggendo per chiedere aiuto o chiarimenti sarò il primo a offrirtene.

    • cicciom il 8 Giugno 2015 alle 11:03
    • Rispondi

    Quando si cerca di scaricare i file “conducibilimetro dxf” e “conducibilimetro svg” da errore 403.

    1. Ciao CiccioM,
      grazie per la segnalazione, corretto il bug.

  1. Ciao! Sto cercando di riprodurre lo schema elettrico come illustrato nelle prime righe di commento dello sketch ma non riesco a riproporlo sulla mia basetta, potresti condividere uno schematico disegnato, una foto oppure anche semplicemente aiutarmi a nella sua interpretazione?
    Grazie 🙂

    1. Ciao Alain,
      lo schema è molto semplice ed è riportato in formato ascii nelle prime linee dello sketch:

      sensore rosso blu bianco
      P1 ——O O——P2—–RRRRR——-P3 Lato sensore
      0 D2 elettrodi A0 470 ohm D3 Lato Arduino

      Trovi la descrizione nella spiegazione dell’articolo.

    • giuseppe il 1 Ottobre 2015 alle 14:45
    • Rispondi

    Buongiorno Mauro,

    complimenti per gli articoli e grazie per la condivisione.
    Una domanda sugli elettrodi: sto lavorando ad un sensore per il mio orto idroponico e già dalle prime prove ho notato un problema che dopo 2 giorni di lettura è diventato evidente. Premetto che voglio rifare il sensore con materiali diversi (le viti in inox del “brico” forse non sono di prima qualità e il dubbio rimane). Le letture sono coerenti e corrette e ho provato in piu’ campioni.

    – Elettrodo P2/P3 –> arrugginita la parte finale del filetto e parte del dado
    – Elettrodo P1 —> è diventato bianco opaco come se il “calcare” presente nell’acqua di fosse depositato.

    E’ capitato anche a Voi un fenomeno simile?
    Grazie mille

    Giuseppe

    p.s. risolta questa ho un secondo problema che credo sia dovuto alla massa, un’interazione con la sonda PH. Ma lasciamo la domanda per il seguito!

    1. Ciao Giuseppe,
      il fenomeno che osservi è l’ossido-risuzione dovuta all’elettrolisi, dovresti trovare su wikipedia una esauriente spiegazione.
      Hai usato come sketch quello proposto nell’articolo?
      Paolo, coautore dell’orto idroponico e fisico, ha scritto uno sketch proprio in grado di rallentare questo fenomeno.
      Il nostro sensore a mesi di distanza dall’installazione risulta ancora pulito e funzionante.

    • Toni il 19 Ottobre 2015 alle 23:32
    • Rispondi

    Salve, vorrei sapere come si stabiliscono i parametri di taratura alle linee 13 e 14.
    grazie!

    1. Ciao Toni,
      lascio a Paolo la risposta avendo lui provveduto a fornirmeli.

      • Paolo Bonelli il 5 Novembre 2015 alle 15:56
      • Rispondi

      Scusate Toni e Mauro se rispondo solo ora!
      I parametri di taratura del conduttimetro sono ricavati con un metodo molto semplice ed economico. Ho preso 5-6 bottiglie di acqua minarale non gassata con Conducibilità specifiche diverse. Questo parametro è infatti riportato sull’etichetta e riguarda la Conducibilità Specifica a 20°C. Le acque in commercio hanno questo parametro molto diverso, si va da 15 a 1200 uS/cm (microSiemens su cm). La procedura è descritta in un pdf che ho scritto e che chiedo a Mauro di allegare.

      1. Grazie Paolo,
        il file che descrive tutto è già linkato in altri articolo che raccontano il progetto di Paolo, sempre u questo blog.
        Inserisco il link anche in questo commento: http://media.wix.com/ugd/a251d5_2f5b617f91fc43e291db46600b5c6a10.pdf

    • Fabio il 5 Novembre 2015 alle 13:17
    • Rispondi

    Salve ho riportato il codice come nell’esempio cambiando solo i parametri dei pin avendo un Arduino UNO
    e un sensore solamente

    byte P1 [] = {12};
    byte P2 []= {A0};
    byte P3 [] = {13};

    mi restituisce un errore quando vado a compilare su questa riga

    runningAvg3 = runningAvg3 + Vconv*analogRead(P2{isens});

    l’errore e’:

    sketch_nov05a:73: error: expected ‘;’ before ‘]’ token
    expected ‘]’ before ‘{‘ token

    dove sto sbagliando?

    1. Ciao Fabio,
      l’errore che stai usando le parentesi {} al posto delle parentesi [] leggi la medesima linea sul mio sketch non usa le parentesi graffe

    • Luca il 4 Febbraio 2016 alle 23:23
    • Rispondi

    Perdonatemi la grande ignoranza in materia ma ho molti dubbi:
    – cambiando i materiali usati (grandezza dei bulloni, distanza tra gli stessi) quali valori cambierebbero?
    – la taratura va rifatta da noi, con lo stesso procedimento spiegato da Paolo?
    – ho letto sul PDF che ci sarebbe la possibilità di correggere i valori con la temperatura dell’acqua. Come si può includere tale valore?

    Spero di poter risolvere i miei dubbi perchè la prima prova non mi da valori possibili (nell’ordine di massimo 10 per acque che riportano oltre 100 in etichetta).

    Grazie mille.

    1. Ciao Luca,
      per tutte le modifiche devi far riferimento al PDF di Paolo.
      I sensori sono stati costruiti, calcolati e tarati da Paolo che è un Fisico Ambientale ed io non sarei in grado di darti delle risposte in tale direzione.

    • Francescantonio il 22 Aprile 2016 alle 00:33
    • Rispondi

    Salve,

    non predisponendo di un taglio laser , signor. Mauro Alfieri , può indirizzarmi da chi può effettuare un taglio in modo da creare la basetta del sensore EC ?

    1. Ciao Francesco,
      solitamente io mi rivolgo ad un FabLab.
      Se proprio non ne hai nessuno in zona posso chiedere a Paolo quanto costerebbe realizzare per te il numero di sensori che mi indicherai.

    • Cristian il 21 Febbraio 2017 alle 14:58
    • Rispondi

    Buona sera Mauro, al momento utilizzo un solo sensore, ma solo variando nello sketch il campo nsens da 2 a 1, I valori che mi da non sono corretti.
    Bisogna eseguire altre variazioni di codice se si utilizza un solo sensore?
    Grazie mille

    1. Ciao Cristian,
      tu possiedi il medesimo sensore realizzato da Paolo? Se si devi eseguire le tarature previste nel documento rilasciato oda paolo sul proprio sito.
      Sono le tarature a rendere il sensore funzionante.
      Se solo un micron di distanza tra le viti cambia o il materiale di cui sono fatte va rieseguita la taratura

  2. Buongiorno,
    davvero complimenti per il progetto e mille grazie per averlo condiviso, sto pensando di realizzare un progetto molto simile al vostro orto idroponico e sarei stato perso senza il vostro esempio.

    Una domanda, i sensori EC e PH sono stati testati per un uso continuativo?
    Ho trovato diverse fonti che sostengono che, per lasciare i sensori perennemente in acqua (e quindi poter fare le misure senza intervento umano) questi devono essere di tipo industriale, più costosi e meno comuni di quelli per laboratorio. Anche nel link alla pagina della sonda PH che avete postato nella prima parte del tutorial è indicato “This is a laboratorial probe, it can’t be immersed in the liquid for too long time. You can check here for the whole Industrial kit or a spare Industrial Probe as replacement”.

    Nella vostra esperienza, per quanto è stata usata senza interruzioni?
    Stesso discorso per la sonda EC artigianale, è affidabile nel tempo?
    Grazie

    1. Ciao Daniele,
      le tue osservazioni sono corrette. Per un uso intensivo della sonda Ph dovrai orientarti verso prodotti adatti a tale uso, anche come segnalato nel sito del venditore.
      Considera che il mio esperimento, in quanto tale, è stato scopo di laboratorio ed ha funzionato per circa un anno prima di essere dismesso.
      In merito ai sensori EC posso dirti che, al contrario del ph metro, alla fine dell’esperimento risultava solo leggermente intaccato dall’uso grazie al modo in cui i poli vengono polarizzati.

      1. Grazie mille Mauro, la tua risposta conferma in parte i miei sospetti ma anche mi conforta per l’aspetto EC.

        Purtroppo avevo già dovuto scartare la vostra soluzione EC perché i valori che devo leggere superano quelli che indichi, ho però trovato questo tutorial https://hackaday.io/project/7008-fly-wars-a-hackers-solution-to-world-hunger/log/24646-three-dollar-ec-ppm-meter-arduino che sfrutta lo stesso vostro concetto (data la misura e sapendo la distanza tra gli elettrodi…), usa una presa standard (quindi dimensioni standard = letture unificate e in più facilmente reperibile) e restituisce il range di valori ideale per il mio caso.
        A questo punto tenterò di seguire il tutorial e testerò io stesso l’affidabilità nel tempo, un anno sarebbe più che gradito.

        L’unico dubbio che ho è che nel tutorial usa la sonda °C DS18B20 e dicono di utilizzare una resistenza di circa 500 Ohm perché è quella che dà un più ampio range ma in rete trovo sempre indicato di utilizzare, con la DS18B20, resistenza da 4,7K Ohm o 10K Ohm.
        Ho capito male qualcosa o lui usa proprio una resistenza da 0,5K invece di una da 10k? Se è così, comporta problemi?

        1. Ciao Daniele,
          anche io la DS18B20 la uso sempre con una resistenza da 10K.
          Se ti occorrono maggiori info sul tutorial che hai trovato e chiarimenti sulle scelte fatte dall’autore ti consiglio di scrivergli sarà certamente più chiaro, veloce e preciso rispetto a delle ipotesi che potrei fare io.

          1. Grazie Daniele.

    • Gabriele il 24 Maggio 2017 alle 14:02
    • Rispondi

    Grazie Mauro, bel progetto!

    avrei qualche domanda: lasciando il circuito in azione dopo secondi si iniziano a formare bollicine sugli elettrodi per fenomeni di elettrolisi; non sarebbe meglio una volta effettuate tutte le 50 misure riportare entrambe le uscite a 0? successivamente ho portato il tempo del ciclo a 1000, in pratica così ogni secondo la misura e quindi la corrente passa solo per qualche millesimo di secondo.

    Non ho ben capito il passaggio da resistenza in ohm a microsiemens:
    CS[isens] = A[isens]*pow(RS[isens],B[isens])
    la conduttività in siemens non dovrebbe essere l’inverso della resistenza moltiplicata la distanza degli elettrodi e divisa per la superficie degli elettrodi stessi?
    qui nella correzione vedo un coefficiente e la resistenza elevata a una potenza negativa!?

    grazie in anticipo!

    1. Ciao Gabriele,
      lascio il tuo commento on-line perché Paolo, fisico ed autore dei sensori e del codice ad essi relativi, possa darti info in merito.

        • Gabriele il 25 Maggio 2017 alle 08:19
        • Rispondi

        Grazie!
        tra l’altro ieri ho attivato la modalità debug dove mostra le correnti galvaniche; portando P3 a LOW dopo la riga 71 le correnti galvaniche mi passano da circa 500 che avevo prima a 0 e le bollicine sugli elettrodi praticamente spariscono

        1. Ottimo Gabriele.

    • Giovanni il 2 Dicembre 2019 alle 14:26
    • Rispondi

    Salve, sto riproducendo il tuo progetto di conduttimetro

    Solo che verificando il codice risulta questo errore :
    ———————————————————————————–
    C:\Users\giova\Desktop\sketch_nov29a\sketch_nov29a.ino:25:13: warning: ISO C++11 requires whitespace after the macro name
    #define ECHO;
    ^
    sketch_nov29a:10:14: error: ‘A15’ was not declared in this scope
    byte P2[] = {A15,A14};
    ^~~
    C:\Users\giova\Desktop\sketch_nov29a\sketch_nov29a.ino:10:14: note: suggested alternative: ‘A5’
    byte P2[] = {A15,A14};
    ^~~
    A5
    sketch_nov29a:10:18: error: ‘A14’ was not declared in this scope
    byte P2[] = {A15,A14};
    ^~~
    C:\Users\giova\Desktop\sketch_nov29a\sketch_nov29a.ino:10:18: note: suggested alternative: ‘A4’
    byte P2[] = {A15,A14};
    ^~~
    A4
    exit status 1
    ‘A15’ was not declared in this scope
    ———————————————————————————–
    Penso che ci sia qualche problema con il parametro A14 in riga 3
    byte P2[] = {A15, A14};
    Come posso risolvere, grazie in anticipo.

    1. Ciao Giovanni,
      l’errore dice chiaramente che A15 non è definito, che board arduino stai utilizzando ?
      Il progetto prevede una Mega in quanto dotata di 16 pin Analogici ( quindi anche A15 )

      Se usi una scheda differente devi adattarti lo sketch.

    • Mac il 28 Dicembre 2019 alle 02:17
    • Rispondi

    Ciao Mauro, grazie al tuo blog trovo sempre utili spunti e suggerimenti per i miei progetti!
    Ho provato a replicare il sensore EC che sono riuscito a far funzionare abbastanza bene, non possedendo una fresa cnc l’ho realizzato a mano ed ora avrei la necessità di tararlo! Ho visto i pdf di Paolo che appunto suggerivano di procurarsi delle bottiglie d’acqua con valori di conducibilità noti, ma non è spiegato come ricavare il valori di taratura da inserire nelle righe 12 e 13, cioè ci sarà una formula immagino dove io inserisco i valori di resistenza letti dal sensore il valore di conducibilità e ricavo il dato mancante?
    Grazie

    1. Ciao Massimiliano,
      non ricordo di aver utilizzato formule differenti da quelle riportate da Paolo nel PDF, se hai dubbi puoi scrivergli e sono certo che saprà darti buone indicazioni sulla taratura.

    • Giovanni il 5 Aprile 2020 alle 12:45
    • Rispondi

    Salve vorrei fare due domande, ho provato a costruire il sensore segundo alla lettera le misure e le indicazioni… solo che mettendolo alla prova non riesce a leggere un valore superiore a 1500 / 1600 certe volete anche non oltre 1300. Come posso fare ad aumentare questo limite ? Domanda n,2 , c’è un modo per verificare se il sensore è correttamente connesso ad arduino ? Tipo voglio fare una funzione sensore_available() che ritorna true se è connesso correttamente e false se non lo è. Grazie mille in anticipo

    1. Ciao Giovanni,
      il sensore è stato realizzato da Paolo B. che penso possa darti maggiori informazioni di quanto sarei capace di fare io.
      Puoi seguire il suo progetto http://www.coscienzambientale.com e scrivere direttamente a Paolo.

    • Maurizio il 10 Novembre 2021 alle 17:03
    • Rispondi

    Mauro, questo articolo mi interessa molto, ma trovo delle difficoltà ad applicarlo.
    E’ possibile capire meglio come fare la taratura del sistema? Perchè penso che nel tempo i sensori debbano essere tarati o compensati per il degrado naturale, un po’ come la sonda pH.
    E’ possibile avere anche lo schema di come collegare i sensori ad arduino?
    Grazie.

    1. Ciao Maurizio,
      qui trovi tutti gli articoli di questa serie: https://www.mauroalfieri.it/?s=Orto+idroponico+verticale

  1. […] è un fisico ed è l’autore del conduttimetro, utilizzato nell’orto idroponico, per cui le prime trasmissioni abbiamo deciso di eseguirle […]

  2. […] all’amico Paolo Bonelli, già noto per progetti come il sensore EC, pubblicato qualche mese fa saremo presenti con un progetto dal titolo “CoScienza […]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.