Buongiorno a tutti!
Questo è il mio primo post qui.
Di scacchiere con sensori Hall si è già parlato infinite volte, ma non ho trovato soluzione al mio problema.
Circuito
Ho realizzato il circuito come da schema allegato:
- uno shift register 74HC595 alimenta una per una le righe di sensori
- una volta alimentata ogni riga, "scansiono" colonna per colonna per vedere dove è presente un magnete
Codice
Sempre in allegato l'estratto del codice:
- tolgo l'alimentazione a tutte le righe e aspetto blank_time
- alimento la riga 0 e attendo activate_time
- scansiono le colonne da 0 a 7 (corrispondenti agli input da 5 a 12) attendendo read_time tra una e l'altra
- passo alla riga successiva
Test
Se io provo il circuito in condizioni statiche, senza utilizzare il 74HC595 (per esempio alimentando direttamente da Arduino la riga 0 e lasciando le altre righe spente) tutto funziona: avvicino un magnete e Arduino legge il segnale corretto.
Se invece utilizzo lo shift register, il sistema va in tilt e alcuni sensori (solo alcuni, circa una decina) restituiscono valori in cambiamento quasi casuale.
Ho provato anche diversi delay per l'attivazione delle righe, fino anche a 5000 ms (in pratica, equivalente a spostare i cavi a mano), per vedere se il problema stava nel transitorio.
Poi, vedendo che la singola uscita del 74HC595 aveva una tensione di 3 V invece che 5 V, ho ipotizzato avesse problemi ad alimentare 8 sensori Hall contemporaneamente. Ho quindi inserito 8 transistor NPN pilotati dalle 8 uscite del 74HC595.
Alla fine però il problema si ripropone uguale.
Possibili cause valutate
a. sensori Hall difettosi. Ma nel funzionamento statico funzionano correttamente
b. transitori troppo veloci, e quindi tensioni che non si aggiornavano in modo sufficientemente veloce. Ma anche inserendo dei delay il problema si ripresenta.
c. Assorbimento di 8 sensori troppo elevato. Ma neanche i transitor hanno risolto.
Quale potrebbe essere il problema? Cosa mi consigliate di provare per individuarlo e risolverlo?
Grazie!
Schema scacchiera.pdf (75.1 KB)
Codice scacchiera.pdf (22.9 KB)