Aiuto per progetto verifica cavi per trasformatori

Ciao a tutti,
come preannunciato nella mia presentazione eccomi a chiedere il vostro aiuto per il mio primo progetto con Arduino.

Piccola premessa per introdurre il mio progetto: Lavoro in una azienda che produce trasformatori di potenza. Negli avvolgimenti attraversati da valori importanti di corrente vengono utilizzati dei particolari conduttori chiamati Continuously Transposed Cables (CTC), si tratta di fasci di piattine in parallelo smaltate e trasposte, fatti come in questa foto:

Anche se le piattine sono collegate tra loro ai due capi dell’avvolgimento, per particolari applicazioni vogliamo comunque assicurarci che all’interno dell’avvolgimento non vengano mai in contatto tra loro. Finora questa attività veniva svolta usando un semplice cicalino (una scatoletta artigianale con due led, un cicalino che suona quando c’è il corto e due puntali), connettendo ogni piattina ad una morsettiera, e verificando l’assenza di continuità provando ciascun terminale della morsettiera rispetto gli altri, tutto manualmente.

Scopo del progetto: dal momento che la verifica con il cicalino di cui sopra è molto dispendiosa sia in termini di tempo che di “sanità mentale” di chi la deve fare, ho pensato di realizzare un circuitino con Arduino che permettesse di fare il controllo in automatico.

La logica è, tramite dei cicli “for”, di settare su HIGH uno alla volta i vari pin digitali, e leggere lo stato dei rimanenti. Dal momento che i cavi in questione possono avere molte piattine, ho utilizzato degli MCP 23017 (nello specifico 5, per avere un totale di 80 pin disponibili).

Circuito: non ho uno schema da allegare, ma come dicevo prima ho utilizzato 5 MCP 23017, impostati con indirizzi diversi ovviamente, e i pin di I/O collegati a terra con delle resistenze di pull-down da 10k. Gli MCP sono collegati ad Arduino tramite i pin I2C. Ho utilizzato un pulsante che avvia il controllo tra i vari pin I/O; a seguire l’esito del controllo viene stampato su monitor seriale.

EDIT: Aggiungo lo schema (si vede un po’ piccolo, fatemi sapere eventualmente vedo di fare in modo di ingrandirlo):

Veniamo al mio problema: circuito e codice (che includo sotto) sono realizzati e funzionanti, cioè se non collego nulla ai pin di I/O il codice dice tramite monitor seriale che non sono stati rilevati corti. Se metto in corto dei pin tramite jumpers o cavetti, lui mi fornisce correttamente il numero dei pin in corto. Questo però facendolo funzionare “a banco” diciamo, nel momento in cui lo collego ad un avvolgimento di un trasformatore (ovviamente l’avvolgimento non è collegato a nulla, cioè su un capo gli collego i pin del circuito e l’altro capo rimane aperto), Arduino rileva dei corti che in realtà non ci sono, o almeno non sono dovuti a corti tra le piattine.
Testando con il cicalino artigianale i vari terminali, sempre con Arduino collegato, i corti vengono rilevati, ma non sono netti, infatti i led a malapena si illuminano, e il segnale acustico è debole e tremolante, come se il “corto” non fosse netto.

A cosa potrebbe essere dovuto questo problema? Il mio sospetto è che l’induttanza dell’avvolgimento possa disturbare il comportamento del circuito, o magari qualche accoppiamento capacitivo (tipo tra le piattine del cavo). Come mi suggerite di procedere?

Mi scuso se mi sono dilungato troppo o se ho dimenticato di descrivere qualcosa.
Allego per completezza lo sketch che ripeto funziona correttamente (il led sul pin 4 l’ho inserito quando ho iniziato a scrivere il codice per verificare che partissero i cicli, perchè avevo avuto dei problemi; poi non l’ho più tolto, diciamo che non ha nessuna particolare funzione se non una sorta di debugging).

Grazie mille!
Andrea

sketch_cable_test_MCP23017_v3.0.ino (8.06 KB)

... credo che lo schema di collegamento, con tutti i componenti, sia d'obbligo per capire dove può essere il problema, quindi, forza e coraggio, butta giù lo schema esatto e vediamo se aiuta a risolvere ... ::slight_smile:

Guglielmo

Ciao
Prova a fare la lettura degli ingressi 50ms dopo l'attivazione dell'uscita. Aspetta anche 50ms tra l'attivazione di un'uscita e della successiva.

gpb01:
... credo che lo schema di collegamento, con tutti i componenti, sia d'obbligo per capire dove può essere il problema, quindi, forza e coraggio, butta giù lo schema esatto e vediamo se aiuta a risolvere ... ::slight_smile:

Guglielmo

OK, fatto, fammi sapere se dovesse essere troppo piccolo

Datman:
Ciao
Prova a fare la lettura degli ingressi 50ms dopo l'attivazione dell'uscita. Aspetta anche 50ms tra l'attivazione di un'uscita e della successiva.

Grazie mille, provo a modificare lo sketch e vedere se cambia qualcosa

Errata corrige: Aspetta anche 50ms tra la DISattivazione di un'uscita e l'attivazione della successiva.

Grandissimo! Ora funziona, almeno per il momento. Ho inserito un delay praticamente tra ogni operazione (anche tra un controllo di un'uscita e la successiva), sono bastati 10 ms per farlo funzionare. Ora ovviamente dovrò testarlo su avvolgimenti con caratteristiche diverse (numero di spire, dimensioni ecc.).

Posso chiederti cosa ti ha fatto pensare di inserire questi ritardi? Questione di transitori?

Per capacità passano impulsi da un conduttore all'altro, quindi bisogna fare le lettore dopo la fine di tali impulsi. Sia per l'induttanza dell'avvolgimento che per la capacità verso gli altri conduttori che stanno a livello basso, poi, il gradino di tensione applicato sale (o arriva all'altro capo, se la lettura viene effettuata all'altro capo) in ritardo: bisogna, quindi, aspettare che la tensione salga.

Capito, grazie mille per l'aiuto e la spiegazione

Prego :slight_smile:

interessante, ho scoperto un'altra cosa da mettere nel cassetto.