martedì 10 gennaio 2017

Come aggiungere il controllo wireless ad una valvola termostatica TM3030 - Progetto Walvola - HW

In questo post descrivo come ho realizzato una valvola per termosifoni controllabile via Internet denominata Wireless Valvola (Walvola). Qui descrivo la versione 4 in quanto le versioni precedenti sono obsolete causa problemi legati al layout del PCB ed ai consumi della batteria.

Il post e' strettamente collegato ad un mio progetto precedente (post originali Controllo Remoto per Caldaia - HW e Controllo Remoto per Caldaia - Raspberry e Client SW)





Background

Come spiegato nei post menzionati sopra, fino ad ora ho avuto la possibilita' di accendere/spegnere la caldaia per riscaldamento tramite un paio di app web (una solo accendi e spegni e la seconda un calendario per programmazione giornaliera/settimanale).
Questo e' molto funzionale con il mio stile di vita e con la mia presenza/assenza in casa.

Tuttavia un problema che ho riscontrato e' la necessita' disincronizzare esattamente le valvole con l'accensione della caldaia onde evitare che la caldaia vada in blocco. (se tutte le valvole sono chiuse ed il bruciatore parte l'acqua va in ebollizione in pochissimi istanti e la caldaia va in blocco - almeno nel mio impianto).

Anche dopo un'accurata pianificazione e sincronizzazione il sistema, benche' funzionante, e' poco flessibile generando degli sprechi di energia o comunque riscaldando la casa quando non necessario.

Per esempio se programmo la valvola camera letto e la caldaia per accendersi alle 21 ma sono in pizzeria e tardo e rientro alle 23 con il sistema attuale non posso fare nulla in quanto la valvola si apre automaticamente alle 21. Questo perche' non ho controllo sulla valvola da remoto.

Questo progetto ha come obiettivo l'eliminazione del problema descritto sopra rendendo cosi' il mio sistema di riscaldamento casalingo completamente controllabile da remoto e quindi altamente flessibile.

Valvola Termostatica

Ho applicato su ogni termosifoni di casa una valvola termostatica elettronica della Technoline modello TM3030 








Questa valvola e' un oggettino molto interessante.
Si puo' aprire e chiudere come una qualsiasi valvola termostatica in base alla temperatura. Inoltre puo' essere programmata fino a 5 chiusure/aperture giornaliere in base ad un calendario settimanale.
Quest'ultima funzionalita' e' stato il motivo principale della mia scelta.

Come spiegato sopra nonostante siano ottime funzionalita', non sono abbastanza flessibili per il mio scopo.

In questo articolo spiego come rendere qusta valvola wireless e controllabile da remoto con pochissimi euro (circa 3/4 euro per valvola).


Lista Materiali

Per questo progetto ho utilizzato i seguenti componenti


Basetta ramata




Basetta ramata singola faccia dalle dimensioni di 45mm x 48mm


Transistor PNP



Due (2) transistor PNP tipo 2N3906 o simile


Transistor NPN






Quattro (4) transistor NPN tipo BC547 2N3904 o simile


Resistenze



8 resistenze da 10K ohm e 1 resistenza da 470 ohm


Condensatori





1 Condensatore elettrolitico da 100uF e 1 Condensatore da 470 pF o simile


Modulo ESP8266-12





Modulo wireless ESP8266-12 per connessione remota

Fili



1 piccolo pezzo di filo (circa 0,5 centimetri)  da usare come ponticello per il PCB
4 spezzoni di filo per connettere la nuova scheda di controllo alla valvola.



Schema Circuito v4

La valvola TM3030 e' composta essenzialmente da un motore elettrico DC alimentato da due pile AA (3V), da un meccanismo di riduzione della velocita' e di sollevamento/abbassamento pistoncino e da una piccola scheda di controllo.

In questo progetto la scheda di controllo viene completamente rimossa e sostituita da una progettata appositamente.





Il circuito implementa un Half Bridge  a 6 transistor, in modo da poter pilotare il motore e farlo girare in entrambe le direzioni per sollevare/abbassare il pistoncino della valvola e quindi chiudere/aprire il termosifone.

Il funzionamento e' semplicissimo e viene controllato dai piedini 4 e 5 del modulo EPS8266-12 in base al seguente schema


  • pin4 = ON e pin 5= OFF -> motore gira in una direzione
  • pin4 = OFF e pin 5= ON -> motore gira in nella direzione opposta
  • pin4 = OFF e pin 5= OFF -> motore fermo
  • pin4 = ON e pin 5= ON -> non ammesso

In questo modo posso azionare e fermare il motore via wireless e quindi da remoto (Internet).


Schema PCB v4

Ho realizzato il seguente PCB posizionando i componenti in modo da lasciare quanto piu' spazio possibile per il motore della valvola. sul lato componenti della basetta.

Qui potete vedere tutti i passi su come realizzare il PCB a casa in maniera autonoma.







Il progetto fritzing completo e' disponibile sul mio github.




Come si vede sul lato destro ho posizionato le piazzole per la saldatura del modulo ESP8266-12. Pertanto il modulo viene saldato lato rame, lasciando ampio spazo sul latocomponenti per poter alloggiare il motore della valvola.

Il PCB e' stato intenzionalmente realizzato senza piano di massa per semplificare il PCB e la realizzazione casalinga. Chi vuole puo' aggiungerlo da se. In ogni caso non e' strettamente necessario per quetso tipo di circuito in quanto non ci sono segnali critici da veicolare.




Circuito e PCB v5

Su github e' presente la versione 5 della scheda che aumenta la stabilita' al risveglio del deep sleep.










Scheda di controllo

Qui la scheda che implementa il circuito visto prima (v4)





Qui il PCB completamente montato con tutti i componenti








Come si vede ho docuto sagomare la basetta per poterla alloggiare nello spazio ridotto presente nel'involucro della valvola TM3030.
Sul lato componenti e' rimasto lo spazio necessario per alloggiare il motore della valvola.


Modifica valvola

Una volta realizzato il PCB e saldato i componenti e' necessario aprire la valvola e sostituire la scheda di controllo per rendere la valvola Wireless.

L'obiettivo e' rimpiazzare la scheda di controllo originale con quella descritta in questo progetto in modo reversibile e quindi lasciando la valvola in uno stato che mi permetta di tornare alla configurazione originale in caso sia necessario (obiettivo non comprarne una nuova se necessario :) ).

Ecco i passi che ho seguito io:


Inizio




Rimozione del coperchio e manopola di programmazione laterale





Rimozione delle 4 viti per poter aprire la valvola





Le viti sono di tipo Torx  e quindi serve un cacciavite adattto, tipo questo



Rimozione delle 4 viti che fissano la scheda di controllo al corpo della valvola






Dissaldatura e Taglio Fili

Dissaldatura di questi 3 fili (sono collegati ad un encoder per misurare la posizione della ghiera dentata e quindi del pistoncino). La valvola implemeta una funzione di autocalibrazione e quindi ha bisogno dell'encoder.

Nella mia versione non ho bisogno di questa funzionalita', inq uanto coem si vedra' nella parte software la valvola si apre e si chiude con un tempo prestabilito.

E' importante ricordarsi l'ordine di saldatura dei fili per poter ripristinare correttamente la valvola in caso sia necessario.





A questo punto la scheda di controllo e' collegata all'alimentazione (vano batterie) ed al motore, quindi dobbiamo rimuovere questi collegamenti.

Mi sono segnato con un pennarello il polo positivo e negativo dei morsetti di alimentazione. (Passo non obbligatorio)



Con pazienza ho dissaldato i fili evitando di rimuovere troppo stagno dai morsetti.




Come si vede il modulo di controllo originale non e' piu' collegato all'alimentazione




mentre e' ancora collegato al motore.




Per evitare di rovinare il modulo di controllo non ho dissaldato i fili del motore ma ho deciso di tagliarli a meta'. Se dovessi ripristinare la valvola non sara' troppo difficile ricongiungere i fili rispettando i colori.

Nota: In alcune versioni che ho implementato anziche' tagliare i fili li ho dissaldati dalla baseta originale. Entrambi i metodo portano allo stesso risultato





Prolunga fili motore


Ho spellato  i fili che fuoriescono dal motore




Ora ho spellato due fili della lunghezza di circa 3 centimetri




e li ho saldati a quelli che fuoriescono dal motore rendendoli cosi' piu' lunghi




A questo punto ho isolato la giunzione dei fili (l'applicazione del nastro isolante non e' il massimo ma non sono un buon elettricista :) )
Ho anche saldato i fili dal motore (la prolunga) alla nuova scheda di controllo creata nei passi precedenti.


I fili vanno saldati in base al seguente schema:





dove

  • M+ corrisponde al filo rosso del motore
  • M-  corrisponde al filo nero del motore





Prolunga fili alimentazione


Adesso ho preparato altri due fili di circa 3 centimetri e li ho saldati ai morsetti di alimentazione.
Se avessi avuti fili di colore diverso li avrei usati, ma ho usato cio' che avevo in casa :)






Adesso ho saldato i fili di alimentazione negli appositi fori nella nuova scheda di controllo





A questo punto la scheda di controllo originale e' stata completamente rimpiazzata dalla nuova scheda di controllo.
Ho inserito la scheda nel vano batteria e l'ho fissata con una vite (la seconda in basso a sinistra non sono riuscito siccome ho sagomato male la scheda :) )






Ora posso finalomente richiudere la valvola.
Riposiziono il motore con le ghiere nell'apposito spazio usando le guide originali.





Come si vede la nuova scheda con il modulo wireless (lato rame) si adatta perfettamente alla valvola occupando solo lo spazio disponibile permettendo un corretto posizionamentio del motore della valvola.





Adesso richiudo il corpo principale con le 4 viti rimosse all'inizio ed inserisco nuovamente la manopola laterale.





Adesso la valvola termostatica e' pronta ed e' ora una Wireless Valvola (Walvola) :)






Non mi resta che installarla sul termosifone ed iniziare ad usarla :)





Qui un breve video che mostra che la valvola funziona. Si vede solo che il pistoncino va su (gira a destra) e va giu' (gira a sinistra). Il pistoncino si muove solo di pochi millimetri e quindi non si vede benissimo nel video.





Conclusioni

Come descritto nel post ho trasformato con successo una valvola termostatica gia' molto buona in qualcosa di altamente flessibile.
Il processo descritto si puo' applicare enza troppi problemi ad altre valvole. Il circuito rimane lo stesso. E' possibile che altre valvole abbiano PCB di dimensioni diverse, ma l'adattamento dovrebbe non essere complesso.

Se sperimentate altre valvole sarei molto curioso di ricevere il vostro feedback






9 commenti:

  1. Ciao Antonio,
    complimenti per il post ma sopratutto per il blog...

    Volevo chiederti una cosa.... sono interessato alla modifica della testa termostatica da te indicata,
    pensi che poi sia possibile gestirla anche con Home Assistant?

    Grazie per un tuo riscontro....

    RispondiElimina
    Risposte
    1. Ciao, secondo me basandosi su un esp8266 potresti caricare tasmota, impostare il modulo generico e settare i pin 4 e 5 come switch1 e switch2. Smanettando un po' con gli switchtopic e impostando delle rules tasmota potresti usarlo in homeassistant

      Elimina
    2. non e' negli obiettivi di questo progetto.
      se hai guardato il blog ho creato anche il software sia lato ESP che lato mobile app...

      :)

      pero' certamente e' utilizzabile con altri firmware.
      lascio al lettore fare le proprie prove.

      Elimina
  2. ciao,
    certo ma non con il mio codice descritto nel post della parte software

    devi scriverti il codice per home assistant

    RispondiElimina
  3. Ciao, bellissimo progetto. Volevo chiederti con l'aggiunta del modulo wifi come varia la durata della batteria
    Grazie e complimenti

    RispondiElimina
  4. ciao,
    purtroppo ESP8266 e' energivoro e consuma molto.

    in origine con 2 batterie AA, la valvola dura circa 1 anno.

    il progetto descritto qui le batterie durano 20 giorni.

    nella version 6 (non documentata qui) durano 3 mesi

    RispondiElimina
  5. ma il motore è agganciato ad una valvola normale o anche la valvola fa parte del pacchetto?

    RispondiElimina
  6. Buongiorno Antonio, sto cercando di compilare il codice della valvola ma ricevo questo errore:

    mqtt.cpp:12:68: error: no matching function for call to 'PubSubClient::PubSubClient(WiFiClient&, String&, int)'
    12 | PubSubClient mqtt_client(wifi_client, mqtt_server, MQTT_BROKER_PORT);
    | ^
    In file included from /Users/nick/Documents/Arduino/Walvola/Walvola.h:26,
    from /Users/nick/Documents/Arduino/Walvola/mqtt.h:4,
    from /Users/nick/Documents/Arduino/Walvola/mqtt.cpp:1:
    /Users/nick/Documents/Arduino/libraries/PubSubClient/src/PubSubClient.h:129:4: note: candidate: 'PubSubClient::PubSubClient(const char*, uint16_t, std::function, Client&, Stream&)'
    129 | PubSubClient(const char*, uint16_t, MQTT_CALLBACK_SIGNATURE,Client& client, Stream&);
    | ^~~~~~~~~~~~
    /Users/nick/Documents/Arduino/libraries/PubSubClient/src/PubSubClient.h:129:4: note: candidate expects 5 arguments, 3 provided

    Francamente non so cosa fare, potresti suggerirmi come risolvere e riuscire a compilare? Grazie Giuseppe

    RispondiElimina