Problemi alimentazione strumento per verifica piattine in corto

Ciao a tutti,
apro questo nuovo topic, che però è collegato al progetto di cui parlavo in questo topic precedente:

Lo strumento che ho costruito serve per verificare eventuali corti tra piattine in parallelo negli avvolgimenti di trasformatori.
Ho utilizzato 5 MCP23017 per arrivare fino ad 80 pin digitali.
Poi con dei cicli “for” imposto ciascun pin su HIGH e vado a leggere lo stato dei pin rimanenti.
L’ultima volta, quando ho scritto qua nel forum, avevo il problema che lo strumento (a quel tempo ancora sperimentale su breadboard) funzionava benissimo simulando i corti direttamente sui pin, se però lo collegavo ad un avvolgimento venivano rilevati dei corti “inesistenti”.
Su suggerimento del gentilissimo Datman ho aggiunto dei ritardi tra l’applicazione degli impulsi e la lettura degli ingressi in modo da eliminare disturbi introdotti dai transitori, e questo ha risolto il mio problema di allora.

Ora ho realizzato il dispositivo definitivo, migliorandolo aggiungendo un piccolo display oled con un menù:

Gli ingressi/uscite degli MCP li ho collegati a dei connettori D-Sub a 25 pin.
Arduino è alimentato tramite un cavetto USB che ho riportato fuori dalla scatola. Questo perchè la mia idea era di alimentarlo con qualsiasi semplice alimentatore “da telefonino” che fornisse i 5 V e renderlo indipendente dal pc, visto che dovrà essere utilizzato dagli operatori in fabbrica.

Il problema che mi si presenta ora è che a connettori lasciati aperti, quindi con nessun corto e nessun avvolgimento collegato, rilevo ancora dei corti inesistenti, e la cosa strana è che questo fenomeno accade non sempre ma in base a come alimento Arduino. Cioè se lo alimento con l’USB del portatile del lavoro lui funziona bene (ed è questo che mi ha sempre tratto in inganno), se lo alimento con l’USB del mio portatile mi dà falsi corti. Con vari alimentatori da telefonino dà falsi corti, con l’USB frontale del pc fisso dà falsi corti, con l’USB del pc fisso posteriore riportata su un HUB invece funziona perfettamente, non sbaglia un colpo.
I falsi corti vengono dati anche inserendo il delay di cui parlavo prima, ed ogni volta sono diversi (cioè ogni test che faccio mi dà corti su pin diversi), quindi il fenomeno è praticamente random.

Qualcuno ha qualche idea su quale potrebbe essere la causa, e come poter alimentare Arduino per essere sicuro di avere un risultato affidabile?

Allego schema di principio e sketch.

Ho cercato di sintetizzare il problema limitando le informazioni a quelle che ritengo siano collegate al mio problema, per es. ho omesso la descrizione del menù. Se serve aggiungo tutto quello che mi chiedete.

Grazie
Andrea

sketch_cable_test_MCP23017_v4.1.ino (16.2 KB)

Tutti quei fili sono spaventosi! Dovevi incastrare le millefori tra le due file dei contatti dei connettori e poi collegare i pin agli integrati con dei corti e sottili fili per wrappare, mantenendo larghezza e altezza delle millefori entro le dimensioni delle aperture sul pannello.

Capisco, il problema è che i connettori sono da 25 pin, gli MCP sono da 16 uscite, per cui comunque alcuni connettori avrebbero dovuto condividere alcune uscite tra più MCP...
Dici che è quel casino il problema?
Al momento ho tamponato la cosa modificando lo sketch e applicando una specie di "filtro software": sfruttando il fatto che i falsi corti sembrano essere random, faccio eseguire il test 3 volte, confronto i risultati, e tengo buoni solo i corti che vengono rilevati da tutti 3 i test; non so quanto sia una soluzione elegante però...

Mi sembra che manchino le resistenze di pull-up sul bus i2c. Magari la minima differenza della Vcc fornita dai vari alimentatori è sufficiente a rendere il segnale non ben riconoscibile da Arduino.

Sì, confermo che non ho messo le resistenze di pull-up sull'I2C, ammetto che, causa anche inesperienza, non sapevo ci andassero. Potrei fare un tentativo con delle resistenze da 10K e vedere come si comporta...