Controllo Filtro Acqua

Acqua filtrata con Arduino

Descrizione

In casa si usa bere acqua filtrata. Infatti si riscontra che a volte pulendo la cartuccia del filtro dimostra una patina melmosa e per questo c’è la preferenza a filtrare l’acqua da bere.

L’anno scorso si è presentato il problema che il flusso passante per il filtro fosse talmente lento che per un litro d’acqua si doveva aspettare oltre un quarto d’ora. Con la conseguenza che alcune volte ci siamo assentati dimenticando il filtro aperto, cosicché alcune volte ha lasciato il segno di allagamento in cucina.

Il filtro consiste di una cartuccia ceramica di una determinata porosità. La durata è tale fintanto che passa l’acqua attraverso. Per questo più si intasa e più filtrerebbe bene.

Per questo, ho scelto di aggiungere una pompetta che accelerasse l’erogazione. Inoltre ho scelto una che elevasse la pressione almeno a 0,7 Mpa (7 bar) con un portata di 4 litri/minuto. Ho fatto bene che ho trovato una che funziona a 12 V e quindi posso usare un alimentatore vecchio di un computer portatile (14 V 42 Watt).
Ora con il sistema nuovo la bottiglia si riempie in un quarto di minuto. Un miglioramento di oltre sessanta volte .

Progetto

Il progetto fa un po più del necessario, perché potrebbe anche bastare un semplice pulsante e avviare l’ erogazione. Tanto per divertimento e per comodità il controllo ha la peculiarità di tenere un conteggio in modo che informerà quando l’erogazione ha raggiunto un certo volume dispensato.

All’inizio ho pensato di mettere il tutto dentro ad un contenitore, non volevo lasciare troppe connessione idriche ed elettriche allo sbaraglio infatti, ho preso il CAD e ho studiato il modo di disporre i componenti.
Quello del CAD pubblicato non ha il controllo montato, visto che ci sono state diverse revisioni, dopo lo studio di implementazione spaziale dei componenti.
Alla fine ho dovuto fare un po i conti con le dimensioni del contenitore, che speravo di poter sistemare in uno più economico.

Lo schema

È stato progettato di poter eliminare i disturbi che il motore e l’ elettrovalvola causano. Infatti il display è incline a perdere la sincronizzazione e i caratteri apparirebbero sballati. Per questo ho adottato transil, MOV, snubbers e anche l’ aggiornamento del display.

Il display che ho utilizzato è un 8×2 blu. S’è previsto che si può programmare per il controllo della retroilluminazione, ma con il blu non è fattibile. Come hardware si può implementare il PWM, ma non c’è previsto l’ingresso per la fotoresistenza. Visto che con il mio display non ho optato alla regolazione in PWM.

Come hardware si può anche optare per qualche altro tipo di controllo, una parte è prevista come interfaccia operatore tramite manopola con encoder e display, una parte permette la comunicazione tramite seriale e una parte prevista per controllare due uscite. Una delle quali può funzionare in modulazione d’ampiezza.

C’è un ponticello che permette di separare l’alimentazione di arduino dal resto del circuito. È previsto per poter programmare arduino senza spostarlo dalla sede e senza strani effetti della alimentazione al di fuori di arduino.

I punti verdi sono connettori del tipo FASTON, in modo da poter rimuovere intervenire rapidamente al circuito.

 

Per montare il display ho preferito usare dei connettori a tulipano e saldare dei piedini nella posizione delle connessioni. Con questo metodo sarà possibile rimuovere per eseguire modifiche proprio nella sua area sottostante, o sostituire il display.
Si può notare un LED bianco che viene appoggiato sul frontalino trasparente che sta davanti al display. Quando il display è spento si nota sempre un bordino illuminato intorno al display e fa un bell’effetto.


Lista materiale

Category Quantity References Value Stock Code Unit Cost
Capacitors 2 C1-C2 330nF
Capacitors 1 C3 220uF
Capacitors 1 C4 33nF
Capacitors 1 C5 22nF
Capacitors 1 C6 1000uF
Resistors 3 R1,R9-R10 10k
Resistors 2 R2,R6 3300
Resistors 2 R3-R4 22
Resistors 1 R5 1800
Resistors 1 R7 2k
Resistors 1 R8 270
Integrated Circuits 1 U1 7805
Transistors 1 Q1 IRL540
Transistors 1 Q3 2N3705
Diodes 2 D1,D5 1N4148
Diodes 2 D2-D3 1N5404
Diodes 1 D4 1N4007
Diodes 1 D6 LED-RED
Diodes 1 D7 TVS17V
Miscellaneous 6 14VA,14VB,EV_OUT,GNDIN,PUMP,V14IN
Miscellaneous 1 ARD1 arduino
Miscellaneous 1 FU1 3A
Miscellaneous 1 H1 100mH M82R
Miscellaneous 1 J1 ENC
Miscellaneous 1 J3 BT
Miscellaneous 1 J4 SENSOR
Miscellaneous 1 JP1 JUMPER
Miscellaneous 1 LCD1 LM802
Miscellaneous 1 RL1 W117SIP-1
Miscellaneous 1 RV1 5K Digikey 3352T-502LF-ND
Miscellaneous 1 VR1 S14K17

Il software

Istruzione di utilizzo del firmware

Premessa:

Il sorgente del programma è commentato abbondantemente per aiutare capire cosa si é scritto, e magari, in un periodo successivo eseguirne la manutenzione.

Nell’ultima versione ho dovuto aggiustare molto e aggiunto anche un help online per ricordare le operazioni disponibili.

I messaggi sul display sono in inglese, perché la famiglia non conosce la mia lingua. Rimane la comunicazione tramite seriale che è in italiano. È per altro possibile escludere la compilazione con l’uso della seriale.

Da notare le definizioni all’inizio che determinano una compilazione in modo differenziato di utilizzo dell’hardware.

Le opzioni sono:

SEP_EV

Serve per utilizzare le uscite in modo separato. Altrimenti si dovrebbe cablare per collegare l’elettrovalvola e la pompa insieme.

USE_SERIAL

Determina l’aggiunta di comunicazione seriale ai piedini TXD e RXD.

L’ assegnazione dei piedini da usare con la seriale sono quelli della seriale hardware di arduino. Meglio rimuovere il modulo Bluetooth se si vuole programmare senza disturbi. Non ho avuto effetti contrari, durante le mie prove.

BLCTRL

Serve per controllare la retroilluminazione del display con l’ausilio di una fotoresistenza. In modo da avere una illuminazione proporzionale.

DIRTYCTRL

Opzione che permette di controllare se il flusso degrada eccessivamente dovuto dalla sporcizia. Di solito si permette di lavare bene e rimontare la cartuccia.

Modalità di utilizzo


Primo metodo
Comandi dal dispositivo.

Un ingresso unico è governato da una manopola con encoder. Le operazioni preliminari sono tre:

  • Girare la manopola, comporta di portarsi alla selezione di un programma di erogazione

  • Premere a lungo, permette d’ iniziare l’erogazione fin tanto che si tiene premuto

  • Un doppio click, fa commutare l’utilizzo della pompa.

Di seguito ci sono alte opzioni, dopo aver effettuato il primo comando. Infatti si presentano le 10 programmazioni di erogazione. É stato previsto un limite di 10 litri massimo. Si inserisce il valore in decilitri. Comunque si può modificare per un massimo di 255 decilitri.

Quando si vede un programma, si può accedere alla modifica con un doppio click. Oppure una pressione lunga per abbandonare e ritornare al menu principale.

Esiste anche l’ undicesima opzione, che permette di entrare nella fasi di impostazione/informazione. Sempre tramite un doppio click si attua per entrare nel menu. Le spiegazione dei commenti forse rendono meglio l’idea di come funziona.

Io non ho visto la necessità di una misura di 25 litri, tanto di solito si riempie una bottiglia da mettere in fresco al frigo, al massimo qualcun altro membro della famiglia riempie la padella per bollire l’acqua. In ogni caso 4 litri è il limite comunemente raggiungibile.

Nella fase SETTINGS, ci sono cinque opzioni. Azzerare i due allarmi del filtro, modificare gli impulsi per litro del sensore di flusso, modificare il livello di allarme (sempre che sia stato compilata l’opzione), infine azzerare il contatore di avviamenti.

Secondo metodo Comandi da seriale.

È stato previsto la comunicazione con l’arduino tramite seriale. Questa può essere un adattatore USB-RS232 e compatibile coi livelli di tensione del micro. Sarà possibile anche utilizzare un modulo Bluetooth, che magari necessita una attenzione sui livelli di tensione del micro. Io ho messo un partitore di tensione per adattare ai 3,3 Volt del piedino RX del modulo Bluetooth. Il piedino TX non crea problemi severi.

Elenco Comandi da seriale

Il modello dei comandi si basa su una lettera iniziale seguita da cifre, se sono necessarie. La lettera iniziale non ha importanza se maiuscola o minuscola.

Comandi in dettaglio dalla seriale:

Cn

Cancella una locazione di programma. Con n si determina quale memoria.

Fnnnnn

Si imposta la frequenza limite di allarme filtro sporco

H

Presenta l’ help in linea con i dettagli dei comandi

I

Una lista d’ informazioni di comune utilizzo. Potrebbe essere utile l’associazione con il sistema di domotica.

N

Disattiva il segnale di comando della pompa. Quella del piedino che comanda il MOSFET.

Pn

Seleziona un programma di erogazione. L’ n determina quale locazione di programma. Comunque è solo possibile davanti al dispositivo, dato che viene richiesto di inserire il numero casuale che si vede al display. Di seguito inizia l’erogazione.

Q

Non fa quasi nulla. A secondo se si ha un terminale che supporta i comandi escape ANSI, allora dovrebbe cancellare la schermata.

T

Attiva o meno il modo ANSI del terminale, se supportato.

R(n)

Si sceglie di effetturare uno dei tre reset disponibili. Se n è presenti si sceglie direttamente quale dei tre. In sequenza sono Filtro Sporco, Filtro Esaurito, Numero conteggi.

Snnnnn

Si imposta il valore di impulsi per litro, per fare il calcolo dei litri da erogare.

W#,nn

Scrive un programma di erogazione. Con # si determina quale memoria, con nn si stabilisce quanti decilitri impostare. Tra # e nn ci deve essere un carattere di separazione, ma non è determinante quale.

Messaggio di fine comando:

Alla fine di ogni comando appare un messaggio d’informazione. Leggendo il sorgente si riesce a comprendere quali sono e come si presentano.

NOTA

Ci possono essere alcune sviste o miglioramenti da apportare e mi farebbe piacere sapere come fare meglio.

Usare il progetto implica le proprie responsabilità, che l’ autore non assume per cause di danno a persone o cose.

Il pacchetto da scaricare se vi interessa.

VOTO
5 commenti
  1. Picmicro675
    Picmicro675 dice:

    Per la lettura dell’encoder ho visto diversi metodi, incluse un paio di librerie. La mia preoccupazione che il numero di interrupts fosse eccessivo, mi ha fatto scegliere in quel modo. Infatti la seriale prende un interrupt per il dato ricevuto, il setup prende un altro interrupt per la funzione millis(), c’è un interrupt quando il timer1 raggiunge la fine del conteggio.
    Ho provato altri metodi, ma il numero di interrupts mi ha fatto desistere.

    Approvazioni
  2. Picmicro675
    Picmicro675 dice:

    Il motore non è distante, magari si vede dal progetto del CAD. In pratica sono 30 cm di fili.
    Non so se potrei risolvere, forse dovrei separare l’alimentazione del display e mettere un diodo con di seguito un condensatore in tampone. Ma già c’è su tutto il ramo del Nano e display. Magari sono picchi negativi sulla alimentazione.
    Solo che il comportamento è anomalo, visto che non è ripetitivo.
    In un altro tentativo, da farsi, sarebbe di reinizializzare il display appena dopo che il motore si avvia, almeno da rimettere in ordine la CGRAM, che perde i sincronismi.
    Del resto la via software è quella meno laboriosa…

    Approvazioni
    • Amilcare
      Amilcare dice:

      Potrebbe essere una buona idea reinizializzare il display in maniera preventiva.
      Per la sensibilità probabilmente occorre usare il comando di interrupt al cambio di stato anziché testare in continuazione i due pin
      Avresti subito una risposta istantanea. Forse la soluzione meno invasiva sarebbe il diminuire il tempo di attesa per l’antirimbalzo. Naturalmente con moderazione per avere falsi positivi.
      Al momento sto preparando la seconda parte della descrizione degli IGBT, non si direbbe ma è una delle pagine sul sito più lette quotidianamente.

      Approvazioni
  3. Amilcare
    Amilcare dice:

    Per i display la vedo dura a meno di non avere proprio qualche metro di filo tra scheda e motore. In passato con un pic ho dovuto cablare la alimentazione del motore e quella della scheda in maniera distinta partendo dalla batteria.

    Approvazioni
  4. Picmicro675
    Picmicro675 dice:

    Aggiungo delle note:
    Dopo un po di esperimenti e qualche temporale malefico, riscontro dei misfatti.

    1) La misura degli impulsi varia di entità tra il metodo senza pompa e con la pompa. Direi che c’è un 20% in meno con la pompa, che magari conta meglio gli impulsi. Facilmente il dispositivo preferisce misure più sostenute, infatti si dichiara una misura da 1 a 30 L/min. Possibile che si possa intervenire per ricalcolare gli impulsi per litro in base al livello di frequenza del sensore.

    2) il display mostra caratteri sballati, sembra che le precauzioni sulla alimentazione non hanno avuto abbastanza effetto. Specialmente avviando la pompa. Forse ci son stati fattori peggiorativi, nel periodo che non eravamo a casa.
    Penso che dovrei reinizializzare il display appena possibile.

    3) Nel menù delle impostazioni manca una voce, sebbene meno interessante, perché ho dimenticato di variare il numero massimo di conteggio degli impulsi dell’encoder.

    4) Non ho capito quale fattore mi impedisce di attuare subito. Quando giro la manopola non appare il menù e si deve ripetere. Quanto meno non riesco a trovare il modo di accentuare la sensibilità degli impulsi. Molte volte bisogna ripetere per aver il cambio di posizione.

    Gradito se qualcuno può fare qualche esperimento.

    Approvazioni

Lascia un Commento

Vuoi partecipare alla discussione?
Fornisci il tuo contributo!

Lascia un commento