Misuratore di flusso con allarme

Innumerevoli sono le applicazioni in cui è opportuno tenere sotto controllo il flusso di un liquido e attivare un allarme nel caso in cui la portata esca da livelli impostati.

In particolare questo progetto è nato dal bisogno di assicurare il corretto raffreddamento (ad acqua) del mio vecchio amplificatore per i 1296MHz.

Solo un decennio fa il compito sarebbe risultato “non banale” e avrebbe richiesto una spesa ingente in sensori e controllore. Per fortuna lo sviluppo di piattaforme programmabili open, quali ad esempio Arduino e l'ampia disponibilità di sensori di ogni tipo a basso costo destinati al mercato Makers, permettono oggi di sviluppare il progetto in semplicità, economia e divertendosi.

Funzioni desiderate

Prima di cominciare a definire il circuito ed i componenti, è opportuno come sempre descrivere gli obiettivi che si vogliono raggiungere. Nel nostro caso, l'elenco è il seguente:

  • misurare la portata di liquido di raffreddamento

  • attivare un allarme sonoro ed inibire il PTT se la portata è superiore o inferiore a due soglie definibili, mettendo così in sicurezza l'amplificatore

  • riconoscere per quanto possibile situazioni di errore di lettura della portata dovute a disturbi (i.e. EMC)

Il circuito idraulico

Schematizzando molto, il mio circuito di raffreddamento è composto dai seguenti elementi:

  • Illustrazione 1: Esempio di schema idraulico del circuito di raffreddamento

    un serbatoio di liquido refrigerante

  • una pompa di circolazione

  • un sensore di portata

  • condotta di mandata (fredda)

  • dispositivo da raffreddare

  • condotta di ritorno (calda)

Come ogni circuito idraulico anche questo ha una sua curva (portata/pressione) che ne descrive le perdite di carico in funzione della portata di fluido (concetto in qualche modo analogo a quello di resistenza in elettrotecnica). Anche la pompa di circolazione ha una sua curva di portata in funzione della prevalenza. L'incrocio di queste due curve ci dà il punto di lavoro del sistema, inteso come portata e pressione alla bocca d'uscita della pompa.

Illustrazione 2: Esempio di curve di carico e funzionamento del circuito.

Nel grafico pressione/portata sono indicati i tre punti caratteristici:

  • punto di funzionamento nominale

  • punto di portata limite inferiore, Qmin

  • punto di portata massima, Qmax

Ora è possibile identificare due valori di portata minima e massima che rappresenteranno i limiti di buon funzionamento del sistema.

Una portata superiore al valore Qmax, potrebbe essere ad esempio dovuta a:

  • sovralimentazione della pompa

  • tubazione aperta con spillamento di fluido (che fa crollare quindi la contro pressione in mandata)

mentre una portata inferiore al valore Qmin potrebbe essere causata da:

  • mancanza/insufficiente alimentazione della pompa

  • pompa bloccata

  • insufficiente liquido di raffreddamento (serbatoio vuoto in toto o in parte, fenomeni di cavitazione, etc.)

  • tubazione ostruita

L'hardware necessario

Il circuito è estremamente semplice e prevede l'impiego di pochi componenti di facile reperibilità:

  • Illustrazione 3: I componenti necessari per questo progetto

    il sensore di flusso

  • una board Arduino (in questo caso un “nano”)

  • il cicalino d'allarme

  • il relè per inibire il PTT

  • il led con la sua resistenza di caduta

  • il microamperometro per indicare la portata

  • un paio di diodi e resistenze

Il codice

Illustrazione 4: Flow chart sintetico del codice Arduino

Il codice, liberamente scaricabile dal sito di Radio Kit Elettronica (con licenza CC BY-NC-SA 4.0 ed ampiamente documentato), si compone di sei blocchi funzionali.

Inizializzazioni

in questa sezione del codice, eseguita solo all'avvio, vengono “preparate” tutte le costanti usate nel seguito. Vediamo quelle più importanti:

flowsensor = 2 è il numero del pin della board Arduino a cui collegare il sensore di flusso

meter = 3 è il numero del pin della board Arduino a cui collegare lo strumento indicatore

Buzzer = 4 è il numero del pin della board Arduino a cui collegare il cicalino d'allarme

PTTrelay = 5 è il numero del pin della board Arduino a cui collegare il relé del PTT

errorLED = 6 è il numero del pin della board Arduino a cui collegare il led di errore lettura

minflow = 5.0 limite inferiore di portata in l/min, al di sotto del quale viene attivato l'allarme

maxflow = 20.0 limite superiore di portata in l/min, al di sopra del quale viene attivato l'allarme

fullscale = 30 valore di fondo scala dello strumento, in l/m

maxreadingerror = 5 soglia di errore di lettura, superata la quale si attiva il led di segnalazione

Oltre a costanti e variabili vengono definiti ed inizializzati registri, ingressi, uscite e comunicazione seriale (USB)

Misura flusso

in questa sezione viene valutato il flusso tramite una routine di misura del tempo fra due fronti del segnale del sensore. Il valore viene poi messo in scala tramite un coefficiente (7,5 in questo caso) tipico del sensore utilizzato. La misura espressa in l/min viene memorizzata nella variabile float “flow”.

Gestione errore di lettura

Illustrazione 5: Tre esempi di gestione dell'errore di lettura da parte della routine

Come anticipato, una delle funzioni desiderate è la capacità di riconoscere errori di lettura del sensore e reagire opportunamente. Considerando la semplicità del sistema, l'unica diagnosi possibile è riconoscere letture fuori dal campo tipico del sensore. Ad esempio, se usassimo un sensore da 30l/min fondo scala in un sistema che normalmente porta 10l/min e leggessimo dalla routine precedente una portata di 50l/min, dovremmo concludere che “qualcosa” non sta funzionando correttamente, in quanto il valore non è plausibile. Questa situazione di sovrastima della lettura è verosimilmente prodotta dalla lettura di fronti spuri del segnale, ovvero di disturbi (ad esempio indotti nel cablaggio dal trasmettitore che stiamo raffreddando) che alzano la frequenza apparente del segnale del sensore. Una singola lettura anomala, occasionale, non è certo un problema per il sistema e quindi non deve dare origine ad allarmi, ma se la situazione perdura per un tempo “troppo lungo” oppure accade con una frequenza “troppo elevata” è opportuno informare l'operatore attivando un allarme specifico e porre in sicurezza il sistema. La routine in questo blocco si occupa proprio di questo, caricando un contatore in caso di errori, decrementandolo invece ad ogni lettura corretta. Con le definizioni di default (vedi “maxreadingerror), l'allarme si attiva al raggiungimento di una soglia di cinque unità. Vista la specificità della condizione, oltre alle azioni sotto definite in caso di portata fuori soglia viene anche attivato un led specifico per indicare il particolare stato del sistema. Tarando opportunamente la soglia di intervento si può adattare facilmente la reattività del controllo alle caratteristiche del sistema monitorato.

Pilotaggio strumento

Questo blocco si occupa di pilotare lo strumentino (microamperometro) tramite una uscita digitale il cui PWM è scalato proporzionalmente al fondo scala definito nelle inizializzazioni.

Output dati su USB

In questa sezione, completamente commentabile e modificabile senza alterare la funzionalità del codice, i dati più interessanti (i.e. portata, stato allarmi, etc.) vengono trasmessi sulla seriale USB in modo da aiutare tanto il debug quanto permettere una analisi più raffinata dello stato di funzionamento del sistema di raffreddamento.

Test limiti di flusso ed attivazione allarmi

Questa ultima routine confronta il valore di portata letto con i limiti (vedi “minflow” e “maxflow”) definiti nella inizializzazione e, nel caso esca dalle soglie impostate, attiva due allarmi: uno sonoro e uno elettrico costituito dall'interruzione della linea PTT (tramite uscita relè a contatto pulito) per mettere in sicurezza il sistema e avvisare l'utente del problema in corso.

Illustrazione 6: Esempio di costruzione. A sinistra la morsettiera per i collegamenti a PTT, alimentazione e sensore, al centro lo strumento indicatore, al suo fianco il led di allarme errore lettura, in basso il cicalino d'allarme. Sullo sfondo, arancione, la pompa di circolazione

Un esempio di realizzazione

Presentiamo a questo punto un esempio pratico di realizzazione, approfondendo alcuni aspetti della scelta di alcuni componenti.

Il sensore di flusso

È il componente “chiave” del progetto. La scelta nel mio caso è caduta sul dispositivo Elecrow SOT80012WF. Ha attacchi da 1/2” e una portata massima di 30litri/minuto, più che sufficiente per raffreddare anche grandi tubi (che non ho).

Illustrazione 7: Connessioni consigliate e specifiche del sensore Elecrow. Fonte: sito Homotix

L'alimentazione è a 5V e viene erogata direttamente dalla board Arduino. Questo sensore di flusso acqua è composto da nucleo magnetico, da una girante e da un sensore ad effetto Hall. Quando l'acqua scorre attraverso la girante pone in rotazione il nucleo facendo produrre al sensore ad effetto Hall un segnale in uscita con frequenza proporzionale alla portata dell'acqua.

Di questi sensori ne esistono varie versioni di ingombro e portata massima crescente, il progetto è quindi facilmente scalabile secondo le esigenze. Molto interessante la sua capacità di operare anche con acqua calda, fatto che lo rende idoneo ad applicazioni quali ad esempio il monitoraggio di sistemi di riscaldamento.

La board Arduino

Il cuore del sistema è ovviamente la board di Arduino. Non vi sono requisiti stringenti in nessun senso e praticamente qualunque versione recente può essere impiegata. Se si vogliono mantenere compatte le dimensioni, la versione “nano” è la più indicata e offre prestazioni più che ridondanti, lasciando così spazio per espansioni ed elaborazioni future del progetto.

Il cicalino d'allarme

Non vi sono caratteristiche particolari da verificare per questo componente. L'importante è che con 5V, “suoni” ad un volume adeguato al bisogno. E' collegato direttamente fra il pin4 di ArduinoNano e la massa.

Il relè per inibire il PTT

Questo componente deve avere la bobina a 5V e con una resistenza da almeno 120Ω per non eccedere la capacità di erogare corrente del modulo ArduinoNano. In parallelo alla bobina è opportuno collocare un diodo per evitare sovratensioni in fase di apertura. Un comunissimo 1N4148 o equivalente va benissimo.

Il led con la sua resistenza di caduta

Un comune led rosso da 5mm va benissimo, collegato fra il pin6 di ArduinoNano e massa. Occorre ovviamente una resistenza in serie per limitare la corrente: un valore di 150Ω è in genere adeguato e non critico.

Il microamperometro per indicare la portata

La scelta di questo componente è molto libera e soggettiva, in base a ingombro e disponibilità. Se non occorre una indicazione sul dispositivo, magari perché la stessa viene fatta via USB, può anche non essere installato. Qualunque strumento con una portata di fondo scala compresa fra 50μA e 10mA assolverà egregiamente il compito. Anche in questo caso occorre una resistenza in serie il cui valore va determinato con la seguente formula:

dove:

Rs = resistenza da porre in serie allo strumentino

Ifs = corrente di fondo scala dello strumento

Rm = resistenza dello strumento

Nel mio prototipo ho recuperato da un vecchio registratore uno strumentino da 100μA fondo scala e quindi ho impiegato 4700Ω di resistenza in serie.

Alimentazione

La board Arduino (e con essa i vari sensori ed attuatori) può essere alimentata sia tramite la porta USB (magari dal PC che esegue il monitor dei dati, oppure da un comune alimentatore 5V USB) sia a 12V, magari usando la stessa fonte di alimentazione del trasmettitore.

Conclusioni

Credo che questo studio possa essere facilmente generalizzato per moltissime altre applicazioni di controllo. Il codice è facilmente modificabile, così come l'ampia gamma di sensori oggi disponibili a basso costo ne permettono il riutilizzo in ambiti molto differenti. Buona sperimentazione a tutti!

Bibliografia

www.arduino.cc

www.homotix.eu

www.elecrow.com

 

By iw4blg

Pierluigi Poggi since his childhood has been attracted from technical stuffs and gears, being a very curious guy. He built his first Xtal radio when he was just 9. Today, we would call him “maker”. When he turned to 21 became radio amateur, with call sign iw4blg. Since then, he developed many radio gears and felt in love with space communication, becoming an EMErs and a satellite enthusiast. His great passion led him to experiment a lot on the higher bands, up to pioneering several THz (lightwaves) QSOs on the early ’90. Beside to this passion to the radio communication and modern technologies, he like to study, experiment, understand-why, then, write and share, or better, spread the knowledge. This fact led him to became a well renowned contributor of electronics magazines with more than 95 articles published and author of 14 science books.

Related Post

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.