Arduino misura livello liquidi


Arduino misura livello liquidi con un sensore galleggiante

KAOLALI è la marca del Sensore di Livello di liquidi, che unito ad Arduino, e ad un sistema di trasmissione dati, può essere usato per monitorare il livello di un liquido in un serbatoio.
Come si legge sullo shop online (il più grande di tutti, e non faccio nomi), il sensore con galleggiante ha una struttura in acciaio inox 316, ed è adatto per carburante, acqua, cherosene, prodotti chimici e molti altri tipi di liquido, senza introdurre impurità.
Per l'installazione ci sono 5 fori standard SAE, ed è completo di flangia di montaggio e guarnizione di tenuta.

La prima prova è stata fatta con un semplice tester, misurando la resistenza ai capi del sensore.
Il sensore non ha una indicazione lineare e continua della posizione del galleggiante, ma ha 11 step resistivi fissi, che consentono comunque di capire i1 livello del liquido con una precisione sufficiente a quasi tutte le applicazioni.
Muovendo il galleggiante lungo tutta la corsa, iniziando dal punto piu' alto, per poi scendere, si rilevano i seguenti valori di resistenza (ohm): 190, 171, 152, 133, 114, 95, 76, 57, 38, 19, 0 .

I due terminali del sensore sono stati connessi uno a GND, ed uno al pin A0 di Arduino, insieme ad un pullup da 200ohm, cosa che crea un partitore di tensione, con una tensione in ingresso all'ADC pari a circa 2,5v con il galleggiante in alto, che scende a 0volt con il galleggiante tutto in basso.

Arduino con una semplice istruzione ci restituisce un numero intero che indica il livello del liquido.
Il sensore viene venduto con aste di diverse lunghezze, che vanno da 100 a 600mm.
La prova è stata fatta sul modello da 175mm, che ha una corsa netta di circa 140mm, pari a una risoluzione di 13/14mm per ogni step.

Caricando lo sketch presente negli "esempi", "AnalogInOutserial.ino" , possiamo immediatamente leggere sul terminale un valore numerico che ci indica in qualche modo la posizione del galleggiante.
Da qui in poi la strada è tutta in discesa, ed è semplice usare il numero risultante, comunicandolo nel modo che si preferisce, tipo LoRa, oppure come nel mio caso, via SMS utilizzando una scheda Sim900.

Questi sono i valori di ADC rilevati muovendo il galleggiante con le istruzioni:
sensorValue = analogRead(analogInPin);
Serial.println(sensorValue);
step 10: 502 bit
step 9: 459 bit
step 8: 408 bit
step 7: 385 bit
step 6: 360 bit
step 5: 326 bit
step 4: 288 bit
step 3: 246 bit
step 2: 199 bit
step 1: 111 bit
step 0: 2 bit

Per evitare false indicazioni ho impostato tante soglie, all'incirca a metà tra due valori adiacenti
const int Soglia10 = 480 bit ;
const int Soglia9 = 433 bit ;
const int Soglia8 = 396 bit ;
const int Soglia7 = 372 bit ;
const int Soglia6 = 343 bit ;
const int Soglia5 = 307 bit ;
const int Soglia4 = 267 bit ;
const int Soglia3 = 222 bit ;
const int Soglia2 = 155 bit ;
const int Soglia1 = 56 bit ;

A questo punto lo sketch risulta molto semplice, nel loop mettiamo una serie di if ed esle if:
if (sensorValue > Soglia10){
  Serial.println("Il livello è oltre lo step10");
}
else if (sensorValue > Soglia9){
  Serial.println("Il livello è oltre lo step9");
}
else if (sensorValue > Soglia8){
  Serial.println("Il livello è oltre lo step8");
}
else if (sensorValue > Soglia7){
  Serial.println("Il livello è oltre lo step7");
}
else if (sensorValue > Soglia6){
  Serial.println("Il livello è oltre lo step6");
}
else if (sensorValue > Soglia5){
  Serial.println("Il livello è oltre lo step5");
}
else if (sensorValue > Soglia4){
  Serial.println("Il livello è oltre lo step4");
}
else if (sensorValue > Soglia3){
  Serial.println("Il livello è oltre lo step3");
}
else if (sensorValue > Soglia2){
  Serial.println("Il livello è oltre lo step2");
}
else if (sensorValue > Soglia1){
  Serial.println("Il livello è oltre lo step1");
}
else {
  Serial.println("Il livello è inferiore allo step 1");
}

Ovviamente, oltre al Serial.print, nei vari if ci possiamo mettere qualsiasi cosa, tipo attivazione di rele', cicalini, invio di messaggi sms, o quant'altro.


I banner pubblicitari contenuti in questa pagina sono noiosi, ma ci consentono di pagare le spese del server. Se clicchi su uno di essi, contribuirai anche tu al mantenimento del sito. GRAZIE




Cerca 


Categorie Articoli

Ultimi articoli

Vantaggi_Alim._Controllo_Corrente   APRI 

Camping-La-Secca-Moneglia   APRI 

Safety-Relays   APRI 

Rele-di-sicurezza   APRI 

Internal-or-External-Watchdog   APRI 

Watchdog-interno-o-esterno   APRI 

Ripetitore-di-allarme-su-Whatsapp   APRI 

Bufala-in-crosta   APRI 

Home-Automation-ESPeriment   APRI 

ESPerimento-Domotica   APRI 

Arduino-measures-liquid-level   APRI 

Arduino-misura-livello-liquidi   APRI 

finder   APRI 

LORA-english-version   APRI 

Pluviometro-LORA   APRI 

Pillole_di_Promessi_Sposi   APRI 

LORA   APRI 

promessisposi-riscrittura   APRI 

Arduino_crashes   APRI 

Arduino_si_blocca   APRI 

Arduino_e_Trenino   APRI 

millis_no_overflow   APRI 

millis   APRI 

Arduino_millis_no_Overflow   APRI 

millis   APRI 

Impara-Giocando   APRI 

Corso-di-elettrotecnica-ed-elettronica-3-volumi   APRI 

Libro-tutto-sull-audio---inglese   APRI 

Libro-ELETTRONICA-FONDAMENTALE   APRI 

Il-timer-NE555   APRI