Ho un dramma in corso.
Situazione:
arduino mega 256 con collegati 3 display a led TM1637, scheda a un relè con optoisolatori, tre 2n2222 che controllano altrettanti erogatori di scontrini a 12V, il tutto collegato a un PC via USB.
Ogni erogatore di scontrini è collegato a un'interrupt di arduino (che ne verifica la fuoriuscita).
Arduino e gli erogatori sono alimentati dall'alimentatore del PC.
Funzionamento:
il computer invia ad arduino due caratteri circa 20 volte al minuto, arduino li interpreta, incrementa il numero nel rispettivo display, eroga lo scontrino.
Tutto funziona perfettamente in laboratorio, e per circa 2 mesi è stato fatto il debug lasciando tutto in opera 24 su 24 senza il minimo problema.
Installato il tutto, iniziati i problemi.
Questa installazione è vicina a due motori e a un maleddo grosso solenoide che apre e chiude uno sportello (nulla di fisicamente collegato alla mia installazione, condividono "solo" la rete 220V).
Da subito ho notato che all'apertura e ancora peggio, alla chiusura di quello sportello, i display visualizzavano "caratteri strani" e il tutto smetteva di funzionare.
Ho provveduto a filtrare gli interrupt (in PULLUP esterno da 10 k) con resistenze e condesatori, ho quindi filtrato tutte le alimentazioni con dei filtri (FN2030-16-06, Schaffner) compreso il solenoide, ho parzializzato il solenoide inserendo con un condensatore da 0,47 uf in modo che sia sempre lievemente alimentato, ho avvolto tutti i cavi che arrivano ad arduino a dei nuclei di ferrite e la situazione è migliorata, ma il problema permane.
Non capendo cosa smettesse di funzionare, ho collegato un led ad arduino in modo che ogni 10.000 cicli del loop cambiasse lo stato, così da controllare se fosse lui ad andare in crash: il led lampeggia sempre, e risulta pure collegato alla USB (gestione periferiche lo vede), ma il PC e arduino non comunicano più.
L'unico modo per ripristinare la situazione è scollegare arduino dalla USB e ricollegarlo.
Le altre periferiche collegate alle altre USB del PC invece non risentono di nessun problema, quindi presumo che vada in crash la seriale di arduino.
Ora sono collegato a 19.200 e provvederò ad abbassare drasticamente la velocità di comunicazione "sperando" si tratti di quello, ma ne dubito fortemente.
Quindi cortesemente chiedo:
-
i disturbi possono entrare anche dai pin che ho usato per i DIO e CLK dei TM1637, e se si, come posso filtrare tali disturbi ? Condensatori da 100nf a massa interferirebbero con la comunicazione ?
-
i disturbi generalmente posso entrare anche dai pin di uscita ?
Devo trovare una soluzione al più presto, questa installazione è a 300 km di distanza, devo organizzarmi e portarmi tutto il possibile immaginabile e risolvere questo dramma !
Grazie per l'aiiuto.