Connessione USB che si interrompe

Questo non è l'ennesimo post su Arduino che si resetta, ma sulla connessione USB che si interrompe in presenza di disturbi (il PC non vede più la periferica che ricompare dopo un po' con un altro nome, mentre il programma su Arduino continua a funzionare regolarmente).

Antefatto: una configurazione di test come quella in figura, con un circuito X e un circuito Y entrambi optoisolati e alimentati separatamente tramite un alimentatore ausiliario:

Fatto: basta accendere / spegnere l'alimentatore ausiliario tramite il suo interruttore per bloccare (resettare?) il modulino FTDI.

Su Linux basta chiudere il monitor seriale, scegliere nell'IDE il nuovo nome della porta assegnato dal sistema, riaprire il monitor seriale e tutto funziona come prima, Arduino non ha perso un colpo.

Ricerca: diverse prove per identificare "il colpevole" evidenziano che il problema si manifesta solo quando è collegato il circuito Y, anche con un solo filo lato alimentatore e un solo filo lato Arduino.

Il circuito Y è il solito modulino a quattro relé 5Vcc da pochi euro. Il circuito X invece è una millefori assemblata da me medesimo che non presenta alcun problema.

Visto che entrambi i "front-end" sono completamente optoisolati, che differenza c'è?

Nel mio circuito il lato 5V Arduino e il lato 10V, sono fisicamente separati in ogni punto da una distanza (creepage) di almeno 8mm, invece nel modulino relé commerciale le due sezioni sono embeddate una dentro l'altra (benché elettricamente isolate tra loro) con le relative piste a una frazione di mm di distanza.

Verifica: Ipotizzando, tra le altre cose, un accoppiamento capacitivo effettuo il seguente test:

Con la vicinanza delle masse di sole quattro strisce di contatti di una breadboard (6..30pF totali), il problema si manifesta nello stesso identico modo.

**Soluzione:**La vera soluzione sarebbe buttare a mare questi modulini e farsi le proprie schede come l'elettronica comanda. La soluzione intermedia è stata invece optoisolare anche il lato FTDI:

A questo punto anche provando a unire tutte le masse (e, orrore, collegando a terra per creare loop di terra) non si resetta più niente. Qualche altro raro caso di blocco FTDI si è avuto per accensioni/spegnimenti di apparecchi li vicino, blocchi che sono scomparsi aggiungendo un'ulteriore ferrite attorno al cavo USB in prossimità del convertitore FTDI.

Ci ho perso due serate, magari a qualcuno può servire.

That's all folks :slight_smile:

Bel lavoro ...
... quando dici "La vera soluzione sarebbe buttare a mare questi modulini" immagino parli dei modulini con i relé, giusto?

Lato FTDI, hai optoisolato anche il segnale che da il reset (nel caso tu voglia riprogrammare la Pro Mini) ?

Guglielmo

Il problema è sempre il solito, non serve a nulla usare i foto accoppiatori quando i 5V per farli funzionare e azionare le bobine dei relè arrivano dall'alimentazione di Arduino.
Sul lato relè tutta la relativa alimentazione deve essere totalmente separata da quella di Arduino, non ci deve essere nulla in comune, ovviamente parliamo di sistemi dotati di foto accoppiatori.
Immagino che i problemi li hai avuti durante la commutazione dei relè, sopratutto se ci sono scintillii su i contatti visto che creano enormi quantità di "schifezze" elettriche di tutti i generi.

gpb01:
immagino parli dei modulini con i relé, giusto?

Giusto. Quando avrò un po' di tempo proverò un circuito rele` equivalente (quindi sempre totalmente optoisolato) ma realizzato "mantenendo le distanze".

Lato FTDI, hai optoisolato anche il segnale che da il reset (nel caso tu voglia riprogrammare la Pro Mini) ?

Al momento no, è una soluzione per sola comunicazione (il reset si può comunque dare a mano tentando di imbroccare la temporizzazione giusta dell' l'IDE)

astrobeed:
Il problema è sempre il solito

Stavolta non hai letto con attenzione :wink: E` tutto rigorosamente isolato, alimentato separatamente, e senza scintillazioni... se escludiamo quelle dell'interruttore dell'alimentatore ausiliario (con grosso trasformatore). Le scintillazioni sui contatti ovviamente producono anche loro il problema.

C'è da dire che anche il modulino FTDI è il solito da pochi euro, e che la prolunga USB usata è probabilmente pessima (molto sottile e prevista solo come supporto per una chiavetta WiFi).

Il succo del discorso è comunque che la sola separazione galvanica tramite optoisolatori è efficace per alcuni tipi di disturbo (condotti) ma per altri (induttivi, capacitivi, irradiati) non basta.

Claudio_FF:
Il succo del discorso è comunque che la sola separazione galvanica tramite optoisolatori è efficace per alcuni tipi di disturbo (condotti) ma per altri (induttivi, capacitivi, irradiati) non basta.

Il punto è sempre quello che abbiamo detto e ridetto mille volte ...

astrobeed:
[... omissis ...] In linea di massima, con Arduino puoi fare quello che ti pare a patto che rimane sul tavolo del laboratorio e non lo colleghi a nessun impianto [... omissi ...]

... e ancora ...

icio:
[... omissis ...] Arduino e la quasi totalità delle sue shield non sono fatti per impianti civili, automazione industriale , domotica etc, i fotoaccoppiatori in tutte queste schede sono totalmente assenti mentre in tutte le applicazioni suddette sono presenti e talvolta abbondanti.
Arduino è fatto per imparare, e tesi DI esame nei corsi scolastici, il tutto DEVE restare sul tavolo e i loro cavi MAI fatti girare in quadri, tubi e canaline [... omissis ...]

... il cui succo è ... arduino è una piccola scheda di prototipazione che NON ha alcun genere di protezione contro nessun tipo di disturbo, nata per studiare e NON e fatta per realizzare VERI impianti comandando relé, valvole e quanto altro.

Per quelle cose occorre disegnarsi la propria scheda fatta come si deve, con tutte le protezioni del caso, ecc. ecc.

Ma tanto, pur ripetendolo in continuazione, nessuno lo vuole capire ... ::slight_smile:

Guglielmo