Arduino si blocca con innesco elettrovalvole, come risolvere?

Ciao, sono Andrea e per il mio impianto di homebrewing ho usato Arduino UNO secondo il collegamento indicato in figura (schema tratto dal sito easybrew.it come anche skecth e software di controllo).

Arduino è collegato via USB al PC su cui gira il software che lo controlla (il software non l'ho scrrito io e non è open source per cui non posso pubblicare nulla).

Le due uscite della scheda rele sono collegate a due SSR che comandano rispettivamente un'elettrovalvola da 12V uno ed un'elettrovalvola da 220V l'altro.

Il problema (riscontrato su 3 PC diversi con due schede UNO diverse, una genuina ed un "clone") è che quando parte il software dopo un tempo "random" ma breve succede che improvvisamente le letture di temperatura si bloccano oppure improvvisamente le letture danno i numeri (tipo 80-90 gradi) per un secondo, tornano normali e dopo due o tre volte di questo giochetto il tutto comunque si blocca. Se chiudo il software e apro l'IDE di Arduino e provo a premere il monitor seriale appare nella console il messaggio : "Errore durante l'impostazione dei parametri della porta seriale: 9.600 N 8 1" devo quindi disconnettere il cavo USB, il tutto riprende a funzionare ma all'avvio del software e delle elettrovalvole (la colpevole è quella da 220V) siamo punto e a capo....nel sito dello sviluppatore del software c'è scritto che il problema è noto con le valvole a 220V e suggerisce un modello di solenoide da acquistare: BOBINA PER ELETTROVALVOLA GAS BRAHMA E6G SR10 1/2 13762002 18811001 220 VALVOLA | eBay
quella che ho io è uguale a questa solo che nella sigla invece di esseri SR10 cè solo 10...io non vorrei spendere soldi in altri tentativi (ho già preso una seconda scheda UNO pensando che il problema fosse della prima scheda) per cui vorrei sapere se qualcuno mi può aiutare a risolvere il problema....se avete bisogno di chiarimenti o altri dettaglio io sono qua....
Grazie
Andrea

ascolta, io sono un principiante ma... secondo me il solenoide centra molto poco...
Nel senso che tu hai già una scheda relay, c'hai messo pure un ssr che poi comanda il solenoide: non vedo come un'uscita "normalissma" possa bloccarti l'arduino.

Vedo invece che usi 2 sensori 1-wire della dallas... questi si se il software è scritto male e/o con collegamento deficitario possono darti problemi di errata misurazione.
Quello che penso è che per qualche motivo, forse anche il disturbo del solenoide a questo punto, il collegamento 1-wire cada ed il software non sia in grado di riconoscere questo stato (mancanza di un timeout o cose simili) e quindi arduino cada in un'attesa critica.
Certo che se il software non c'è non si può neanche dire tanto.
D'istinto proverei a vedere se si può collegare in modo più affidabile le sonde, magari un cavo schermato... ma mi pare che ci sono anche degli schemi con dei filtri per delle distanze maggiori.

(aggiunta): ho visto che qualcuno suggerisce di diminuire lievemente la resistenza. Comunque io proverei ad installare un programma di esempio per leggere ripetutamente le temperature... a vedere se ogni tanto sballa e cosa succede nel caso...
Altra prova che puoi fare è "staccare" il collegamento alla scheda relay e lasciare li il sistema senza la parte attuativa... magari fai scattare il solenoide a mano (occhio...220... per motivi di sicurezza/regolamento interno non sarebbe neanche da parlarne in questo forum) per creare qualche interferenza aerea e vedi se si blocca lo stesso.

qsecofr:
ascolta, io sono un principiante ma... secondo me il solenoide centra molto poco...

Non ci giurerei ... ::slight_smile:

>the_dragonlord: hai già provato a mettere uno snubber (R-C) in parallelo alla bobina del solenoide (... nell'immagine rappresentata dal blocchetto "Last") per eliminare eventuali disturbi ?

... puoi arrivare sia per R che per C a 100nF, 100Ω.

Guglielmo

P.S.: Mi raccomando fai attenzione ... che, come dice giustamente "qsecofr" ... bisogna sempre tenere presente il punto 15 del regolamento ...

... non metto in dubbio che la bobina possa creare dei disturbi ma quasi certamente con un altra bobina è lo stesso inoltre se il sistema non gestisce il disturbo del solenoide domani tua moglie t'accende il phon mentre tu stai facendo birra nella vasca da bagno e ti manda in fumo la birra? il problema imho è da risolvere a valle ed a monte.
a valle: il filtro di Guglielmo... utilissimo, mettilo, tieni però presente, anche secondo il discorso della sicurezza che fa passare continuamente un minimo di corrente (se ipotesi metti una lampada fluorescente al posto della bobina questa potrebbe lampeggiare).

Altra cosa: il progetto non è "proprietario", è open. Si possono scaricare i sorgenti tranquillamente.

... e però io non capisco bene cosa faccia... mi sono un po' arenato... però ho notato che legge le temperature e poi più di passarle alla seriale non fa. Ed usa un delay sempre nel ciclo loop, Inoltre legge dalla seriale ma sempre senza il "serial.avaiable": io quello che posso dire è che secondo me ogni tanto o i sensori o la serial torna un ben "-1" (...timeout) o "-2 i sensori") e poi non so cosa succeda nel codice... per me s'in-looppa da qualche parte.

(il software non l'ho scrrito io e non è open source per cui non posso pubblicare nulla).

Controllare 2 elettrovalvole con 2 OUTPUT sai che software segreto può mai essere !!!! ahahahahahaha Siete mitici con queste uscite ... Grandi ... grandi davvero!!! Scusate sto ridendo da solo da 5 minuti e non riesco a smettere :slight_smile:
...
...
...
Ok passato ... mi asciugo gli occhi..... no niente ricomincio a ridere !!!! vabbè passerà ...

Io avrei degli schemi sopressori per disturbi causati da carichi induttivi però non sono miei :slight_smile: :slight_smile: ti conviene cercare su google e su questo forum qualcuno che ha reso pubblico lo schema e i componenti adatti lo trovi.

pablos:
Controllare 2 elettrovalvole con 2 OUTPUT sai che software segreto può mai essere !!!! ahahahahahaha Siete mitici con queste uscite ... Grandi ... grandi davvero!!! Scusate sto ridendo da solo da 5 minuti e non riesco a smettere :slight_smile:
...
...
...
Ok passato ... mi asciugo gli occhi..... no niente ricomincio a ridere !!!! vabbè passerà ...

Io avrei degli schemi sopressori per disturbi causati da carichi induttivi però non sono miei :slight_smile: :slight_smile: ti conviene cercare su google e su questo forum qualcuno che ha reso pubblico lo schema e i componenti adatti lo trovi.

il sarcasmo è quantomai fuori luogo...è triste vedere che si comporta secondo le regole viene deriso...comunque grazie dell'aiuto

gpb01:
Non ci giurerei ... ::slight_smile:

>the_dragonlord: hai già provato a mettere uno snubber (R-C) in parallelo alla bobina del solenoide (... nell'immagine rappresentata dal blocchetto "Last") per eliminare eventuali disturbi ?

... puoi arrivare sia per R che per C a 100nF, 100Ω.

Guglielmo

P.S.: Mi raccomando fai attenzione ... che, come dice giustamente "qsecofr" ... bisogna sempre tenere presente il punto 15 del regolamento ...

grazie! in effetti per mea culpa non avevo letto bene il regolamento riguardo alla sicurezza. In ogni caso ho deciso di sostituire l'elettrovalvola 220V con una a 12VDC. Lo snubber si può adattaree anche a tale tensione? Immagino che con 12VDC il transiente che si crea all'innesco possa essere diverso quindi magari anche il dimensionamento del filtro dovrebbe esserlo?
Comunque grazie!
Andrea

mah. Sullo snubber ti farai aiutare da chi è più esperto di me ma secondo me ribadisco che ci sono problemi nel codice e nella comunicazione seriale che il tuo programma mette in atto.... non ci sono controlli di nessun genere sugli errori ed il processore va in loop o in attesa critica di qualcosa che non avverrà mai...

Ma c'era un progetto in giro per fare la birra in casa con arduino... mi sbaglio? è questo?

ciao, no non è questo...che tipo di controllo mi consiglieresti di inserire nel codice? Conosco un po'il C++ per cui un po' dovrei cavarmela...

comunque lo skecth lo posso anche allegare, da quello che ho visto è stato tratto da un esempio contenuto nelle librerie dallas e l'ho già modificato per inserire due offset per la taratura delle sonde

OnOff_v2_6_offset.ino (7.66 KB)

p.s.
qsecofr sei anche tu un programmatore iSeries? sai il tuo nick.... :slight_smile:

the_dragonlord:
p.s.
qsecofr sei anche tu un programmatore iSeries? sai il tuo nick.... :slight_smile:

stato, e a volte lo sono ancora... addirittura 36 più che ile....girano ancora, non si piantano, belli non sono, tanto non fanno ma tant'è.

Si il codice .ino l'avevo già visto comunque hai fatto bene a linkarlo perchè nessuno si sarebbe messo a scaricarlo... sarà che ho anche io il mio bravo kit domestico per la birra e qualche birra l'ho fatta ed allora mi sono incuriosito.
Il codice di se secondo me ha qualche lacuna lo ripeto... forse sono io che non capisco la logica profonda di questo sistema ma arduino è usato come un mero esecutore delle volontà di un pc: ed invece per controllare un timer ed un relay ce la possiamo fare anche senza un i7 attaccato.
Succede secondo me che o ci sono errori di lettura delle temperature o qualche errore di comunicazione della seriale ed il programma di arduino va in attesa critica. Purtroppo non avendo l'hardware da provare e neanche la parte software del pc (e ne il tempo sinceramente) non posso più di tanto aiutarti ma ti suggerirei di fare una versione "prova" di questo programma che semplicemente legga ripetutamente le sonde di temperatura e le spari con un serial.print sulla seriale.
Dal lato pc aprirai il monitor seriale dell'ide di arduino (non il programma di homebrew) e controllerai se arrivano sempre dati di temperatura affidabili o di tanto in tanto vengono passati dei -1 o -2
Per il resto se sai di c++ --->aggiungi un display con un encoder e riscrivilo di sana pianta... cerca di svincolarti dal pc se no avrai sempre un ambaradan dietro che non finisce più.
Ti faccio notare che se il controllo dura parecchie ore anche ammesso che il codice sia ineccepibile non è detto che una comunicazione usb/seriale risulti affidabilissima nel lungo periodo: questa è una delle ragioni per cui nelle stampanti 3d (che ricevono comandi per ore ed ore) o si monta una comoda SD o, chi non può, di tanto in tanto si lamenta e cerca di tenere il filo corto.
...Passo a bere birra dopo è ! :smiley:

"viene deriso" ohhh esagerato, sei stato divertente e mi sono fatto una risata, non sei stato deriso, fine.

Comunque il problema potrebbe essere uno come più di uno e si procede a step
pilotare un relè direttamente con i 5v di un pin non è mai buona cosa è normale che in quel momento i volori analog saltano a 90 - 100 gradi condiderando che arrivano da un usb del pc (se lo hai fatto)

l'alimentazione data dall usb del pc potrebbe non essere sufficiente anzi molto probabile.
Si verifica il prototipo con dei led se si ha il sospetto che siano i relays, si fanno un po' di test e poi si aggiungono uno alla volta
In questo modo verifichi il software, se si ripete senza relè vul dire che il software ha dei problemi, una volta sistemato si passa all'hardware
L'alimentazione dei relè deve essere separata e non prelevata dai pin.

pablos:
"viene deriso" ohhh esagerato, sei stato divertente e mi sono fatto una risata, non sei stato deriso, fine.

ok, ho interpretao male, meglio così!!

pablos:
pilotare un relè direttamente con i 5v di un pin non è mai buona cosa è normale che in quel momento i volori analog saltano a 90 - 100 gradi condiderando che arrivano da un usb del pc (se lo hai fatto)

Ma la scheda relè prevede che sia collegata proprio ai pin out di Aruduino, non potrei fare altrimenti...poi i rele 5V comandano gli SSR da 12V. Il discroso dell'analog non l'ho capito sinceramente, io non uso gli ingressi analogici perchè ho i sensori Dallas collegati in one wire ad un pin digitale dell'arduino direttamente

pablos:
l'alimentazione data dall usb del pc potrebbe non essere sufficiente anzi molto probabile.

Quindi mi consigli di alimentare Arduino anche con una fonte esterna? Se non erro posso alimentarlo sia a 9 che 12V, vero? Io avrei disponibili i 12V ma in caso con un partitore resistivo posso portarli a 9V

pablos:
L'alimentazione dei relè deve essere separata e non prelevata dai pin.

Come sopra, credo di non potere con questa scheda...

In ogni caso ho preso la palla al balzo per "eliminare" la 220V dal mio pannello ed ho preso un'elettrovalvola a 12V, secondo te/voi potrei avere gli stessi problemi di disturbo?

Grazie
Andrea

the_dragonlord:
Io avrei disponibili i 12V ma in caso con un partitore resistivo posso portarli a 9V

NO, non puoi farlo ... se proprio vuoi devi usare uno step-down

the_dragonlord:
Come sopra, credo di non potere con questa scheda...

"questa scheda" a noi non dice nulla, metti il link esatto alla scheda e vediamo che tipo di scheda relè è

Guglielmo

gpb01:
NO, non puoi farlo ... se proprio vuoi devi usare uno step-down

Grazie della dritta e del link, l'ho preso subito!

gpb01:
"questa scheda" a noi non dice nulla, metti il link esatto alla scheda e vediamo che tipo di scheda relè è

azz...hai ragione sono proprio addormentato....ecco il link: http://www.ebay.it/itm/291760309278?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

Grazie ancora!
Andrea

the_dragonlord:
ecco il link: http://www.ebay.it/itm/291760309278?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

Con quei relè, non solo si può avere un'alimentazione separata, ma SI DEVE !!!

Ecco come devi collegare :


Guglielmo

... si deve prima di tutto perché 4 relè attivati assorbono ciascuno minimo 70/80 mA e quini un totale di circa 300 mA che è già troppo per Arduino, inoltre in questo modo, con due alimentazioni separate, non porti i disturbi dell'uno dentro l'altro.

Guglielmo

gpb01:
... si deve prima di tutto perché 4 relè attivati assorbono ciascuno minimo 70/80 mA e quini un totale di circa 300 mA che è già troppo per Arduino, inoltre in questo modo, con due alimentazioni separate, non porti i disturbi dell'uno dentro l'altro.

Guglielmo

Grazie!! Sono davvero un cane....purtroppo mi sono fidato dello schema del tizio che ha "ideato" il tutto che in fatto di "bau bau" se la giocava con me...

Grazie davvero!! Quindi quando mi arriva lo step down ne sdoppio l'uscita e alimento sia Arduino che la scheda relè...una sola cosa: dallo step down regolato a 5V non vado all'ingresso Jack di Arduino vado direttamente ai pin 5V, giusto?

Andrea

NO, t'ho detto che servono DUE alimentazioni SEPARATE porprio per NON avere nulla in comune e non portarsi dentro i disturbi !!! Se vedi bene lo schema, il pin GND NON va ad Arduino e i GND NON devono essere messi in comune. Ci sono apposta degli accoppiatori ottici, proprio per tenere tutto separato.

Ti occorre un alimentatore a 5V per il modulo relè (o con lo step-down abbasi quello che hai) ed un altro, separato, per Arduino (va bene un alimentatore 9V 1A ... così entri dal Jack nero e ti eviti un secondo setp-down).

Oppure quello che hai + lo step-down lo usi per alimentare Arduino e prendi un 5V 1A per alimentare il modulo relè.

Ah, la scheda lavorerà a logica inversa ... con LOW attivi il relè, con HIGH lo disattivi.

Guglielmo