Problema con elettrovalvole 12V - crash microcontrollore. -RISOLTO-

Buongiorno a tutti.

Da appassionato birrofilo e curioso di elettronica, ma incompetente in maniera esagerata, mi sono imbarcato in un progetto di "Riempitore automatico di bottiglie di birra" che prevede un serbatoio collegato ad un manicotto con due uscite governate da due elettrovalvole che si dovrebbero aprire a seconda del tempo impostato singolarmente per ognuna di esse.

Tramite Keypad seleziono le durate di ogni singola apertura e con un tasto ne comando la stessa.

HARDWARE IN GIOCO:

-Clone Arduino UNO Kuman
-Modulo 4 Relay 5V.
-Espansione di porte mcp23017
-keypad 16 tasti
-2 elettrovalvole 12V.
-2 moduli 4-digit display

Arduino UNO alimentato da presa USB di un PC
Modulo Relay alimentato da altra presa USB dello stesso PC
Elettrovalvole alimentate da trasformatore 220v ac / 12 dc (onestamente è cinese)

Orbene.
La parte software funziona come un violino.
La parte hardware risponde altrettanto bene finchè le elettrovalvole non sono sotto tensione.
Appena le collego al trasformatore fanno il loro dovere di apertura e chiusura per una o due volte e poi mandano in crash il microcontrollore.

Prima di usare i 4-digit display, usavo un display LCD che andava in tilt per poi risistemarsi da solo, ma Arduino non ne risentiva. Il sistema di apertura e chiusura continuava a funzionare sena problemi.

Pensando (e leggendo) che il display LCD fosse più sensibile di un 4-digit ho modificato tutto lo sketch implementandoli, ma ora la risposta del sistema all'apertura delle valvole è globale (cioè si impalla).

l' mcp23017 l'ho dovuto aggiungere visto che non avevo abbastanza pin a disposizione (solo 8 ne vuole il keypad e di 4 ne hanno bisogno i 4-digit).

Aggiungo che mcp23017 è collegato come da istruzioni "base" con resistore da 10 k -> 5vcc sul pin di reset ma senza nessun resistore in parallelo sui pin dati e clock (come ho da qualche parte letto).

Prima di postare ho cercato e trovato altre persone che avevano problemi simili dovuti agli spike delle elettrovalvole, ma le soluzioni proposte erano da "adeguare" al mio problema. Ad esempio si parla di snubber tarati però per valvole 24v.
Siccome non mi sembra prorpio il caso di improvvisare o andare per tentativi, mi son permesso di cecare qui qualcuno di buon cuore che possa approfondire la questione e darmi una mano.

Immagino che non ho dato tutti gli elementi necessari all'esame del problema e me ne scuso. Sono un novizio e piano piano prometto di imparare. :slight_smile:

Grazie in anticipo per l'aiuto.

  1. quale è il modulo relè (metti un link a dove lo hai comprato).

  2. come lo hai collegato ed alimentato (metti uno schema dettagliato).

2.1 hai separato le alimentazioni ?

Guglielmo

Grazie della risposta.
Allora

Il Modulo è questo:

Il modulo, come ho accennato, è collegato ad una presa USB dello stesso pc che alimenta il microcontroller.

Ho tolto il ponticello ed ho collegato JD-VCC li il positivo della presa USB, ho collegato il GND al pin omonimo (sempre della USB) , mentre da arduino ho preso i 5v e L ho collegato a VCC. Il GND di arduino scollegato.
Poi ovviamente ho I due cavi che partono da Due Output del mcp23017 per pilotare il segnale di apertura.

Garantisco che a valvole non alimentate il modulo funziona perfettamente, cioè si accede, attacca e stacca a comando.

Ma tu le VALVOLE come le alimenti, ossia come sono collegate alla relay board?
Il circuito è COMPLETAMENTE separato da tutto questo che ci hai descritto, ossia non ha NULLA in comune, neanche il GND dell'alimentazione delle valvole?

posto una foto del modulo rele e delle elettrovalvole collegate così si capisce qualcosa di più.

Rispondo prima alla domanda: NO le valvole hanno alimentatore a parte e sono collegate al resto solo tramite i due cavi che portano il segnale di apertura e chiusura delle stesse.

Arduino ed il modulo rele hanno due alimentatori separati (nel senso che sono due porte USB dello stesso PC, quindi non so quanto siano separati effettivamaente)

GUARDANDO LA FOTO:

Il cavo rosso è il positivo 12V che arriva dall'alimentatore.
Il cavo arriva al comune del rele 1 e con un ponticello va al comune del rele2

il positivo delle due valvole è collegato al relè tramite il NC mentre il loro negativo è comune (cappuccetto verde a destra nella foto) e ovviamente collegato al GND dell'alimentatore.

la relay board è collegata con:

cavo viola: 5vcc da presa USB
cavo arancio: 5vcc da arduino
cavo verde e giallo: pin per apertura rele del mcp23017
cavo nero: GND della presa USB

perdonatemi ancora se non riesco a postare uno schema fatto come si deve. Mi attrezzo per farlo.

Allora, la prima cosa è avere DUE alimentazioni, totalmente separate e distinte, per Arduino e per la parte relè.

Lo schema esatto di collegamento del modulo relè (© Brunello), usando un alimentatore seprarato (e NON i 5V che prendi da Arduino):


... e vedrai che già questo toglie buona parte dei problemi.

Dopo di che, un diodo in antiparallelo sui contatti del relé con un bel paio di condensatori, uno più grosso, es. 47μF ed un 100nF, anche loro in parallelo ai contatti e i problemi dovrebbero sparire ... ::slight_smile:

Guglielmo

P.S.: Con il collegameto suddetto i relè funzionano in modalità inversa ... pin HIGH -> relè NON eccitato, pin LOW -> relè eccitato.

Grazie per la risposta.
Attualmente la Scheda relè è alimentata così come dice lo schema che hai postato, ed infatti funziona se non ha carichi attaccati.

Per prima cosa metterò un alimentatore separato per uno dei due (arduino e relè), poi provo la soluzione del diodo e dei condensatori....

... Sarebbe bellissimo poi se mi facessi uno schema di quanto suggerito così da evitare esplosioni e danni strutturali al palazzo :wink:

Grazie Guglielmo, sei stato molto gentile.

Piemme:
Attualmente la Scheda relè è alimentata così come dice lo schema che hai postato, ed infatti funziona se non ha carichi attaccati.

NON mi sembra dato che tu dici :

cavo viola: 5vcc da presa USB
cavo arancio: 5vcc da arduino
cavo verde e giallo: pin per apertura rele del mcp23017
cavo nero: GND della presa USB

... ti ho detto che devi usare un'altro alimentatore, TOTALMENTE separato, e NON prendere alimentazione con qualche cosa in comune con Arduino !!!

... se invece sono VERAMENTE due alimentazioni separate, allora spiega meglio perché NON si capisce bene ... ::slight_smile:

Guglielmo

Capisco quello che dici ma ho un dubbio.

Se collego un'alimentazione esterna a jd-vcc e Gnd( così come ho fatto), la 5vcc che viene indicata nello schema che posti da dove devo prenderla?
Devo avere un altro alimentatore ancora oppure va bene quello che uso per alimentare la scheda su jd-vcc?
L'alternativa è prendere i 5v da arduino (ed è quello che ho fatto)

Piemme:
Se collego un'alimentazione esterna a jd-vcc e Gnd( così come ho fatto), la 5vcc che viene indicata nello schema che posti da dove devo prenderla?

Quella che colleghi a jd-Vcc e a GND NON deve avere nulla in comune con quella che va ad Arduino.

Il Vcc, che nulla ha che vedere con jd-Vcc (sono due cose diverse) va giustamente ad Arduno, assieme ai segnali di controllo in1, in2, in3 e in4, ma NON GND.

E' così che hai fatto il collegamento ?

Guglielmo

Esatto.
I 5vcc che vanno a jd-vcc ed il GND che porto alla board li prendo da una presa USB diversa rispetto a quella che alimenta arduino.
Diversa, ma sempre dallo stesso computer.

I 5vcc ed i comandi in1, in 2 etc. Ovviamente partono da arduino.
Dici che può essere questo il problema?

brunello22:

Grazie Brunello22

Piemme:
Esatto.
I 5vcc che vanno a jd-vcc ed il GND che porto alla board li prendo da una presa USB diversa rispetto a quella che alimenta arduino.
Diversa, ma sempre dallo stesso computer.

... e quindi l'alimentatore è UNICO con tutto in comune.
Quindi NON va bene ... la separazione delle alimentazione si fa con DUE alimentazioni indipendenti ...

Prova prima la soluzione diodi/condensatori ... se hai ancora problemi, l'unica è la separazione anche della alimentazioni.

Guglielmo

gpb01:
... e quindi l'alimentatore è UNICO con tutto in comune.
Quindi NON va bene ... la separazione delle alimentazione si fa con DUE alimentazioni indipendenti ...

Sospettavo....

Grazie anche a te.

Ora provo entrambi e vi aggiorno.

Piemme:
I 5vcc che vanno a jd-vcc ed il GND che porto alla board li prendo da una presa USB diversa rispetto a quella che alimenta arduino.
Diversa, ma sempre dallo stesso computer.

...e quindi hanno GND in comune visto che le prese USB non sono mica alimentate tutte separatamente ma sono in PARALLELO dallo stesso circuito di alimentazione.

Per le elettrovalvole quindi usa un alimentatore separato (e senza niente in comune) come hai scritto anche tu e credo anche io che risolverai i problemi.

Però, quando fai un progetto ti consiglio di farti SEMPRE uno schema, possibilmente con Fritzing o altri tool utili. Non solo ti serve per avere un quadro d'insieme del TUO progetto, e per poterlo rivedere anche a distanza di mesi, ma anche per poterlo condividere con altri (noi del forum in questo caso).

PS: e, perdonami la battuta, chiedere a NOI di farti uno schemino di connessione per i relè quando tu non l'hai fatto neanche su nostra richiesta, è un po' come se il concessionario non ti consegnasse il manuale d'uso dell'auto che hai acquistato ma ti chiedesse di fargli una relazione scritta del problema che stai segnalando :slight_smile:

Buongiorno a tutti.
Mi scuso per l'assenza ma l'arduino UNO che usavo è saltato (è possibile che sia spirato per averlo avvicinato troppo ad un trasformatore??? ) e ho dovuto aspettare un nuovo MEGA che mi permetteva di evitare l'aggiunta del mcp23017.
Ebbene, seguendo i vostri consigli...HO RISOLTO

Nell'ordine ho:

  1. separato tutte le alimentazioni
  2. aggiunto solo i diodi in atiparallelo (4007) senza i condensatori, ma solo perchè introvabili in città e da ordinare in quantità industriali su internet...

da stamattina innesco e disinnesco sena alcun problema quindi penso proprio di aver risolto.

Approfitto per ringraziare tutti i partecipanti al forum.