Salve a tutti, ho un piccolo problema e spero in un vostro aiuto.
Devo costruire per un piccolo progetto una matrice led 8x8, dopo essermi documentato in giro su internet, credevo di aver trovato la soluzione ai miei problemi usando due shift register 74hc595 uno per controllare le colonne e l'altro per le righe della matrice. Un amico mi ha fatto notare che questa soluzione non andava bene perche' la corrente era troppa per controllare i led di una riga, 160mA contro i 30mA dello shift register, e visto che di elettronica non ne capisco molto ho cercato su internet uno shift register adatto per controllare questo carico. Ho trovato questo TPIC6A596NE (javascript:openreq('http://www.datasheetcatalog.org/datasheet2/4/08qtqlzqi5xo3s8wzidx7y9lod7y.pdf')). E' arrivato ieri ho provato un primo circuito di prova (controllare 8 led) ma zero risultati. Ho fatto la prova 74hc595 per eliminare la possibilita di aver sbagliato il codice o qualche collegamento sbagliato, e tutto funzionava correttamente. Ho rimontato il TPIC6A596NE, ho controllato con il tester tutti i collegamenti ed era tutto a posto, ma i led non ne vogliono sapere.
Il TPIC6A596NE ha uscite open Drain percui puó portare l' uscita a massa e non a +5V. Non puoi usarlo con i led messi a massa ma i LED devono andare a +5V.
Per una matrice 8x8 usa un MAX7219.
Ciao Uwe
Il la La serie MAX6960-MAX6963 non puó semplicemente pilotare una matrice 8X8 RGB ma con dei Transistori ( non ho capito come)
L' alimentazione é a 3,3V e non viene venduto nel Involucro DIP.
flameman:
Ad ogni modo adattare I2C o SPI da 3.3V a 5V non cambia: si risolve sempre con transistor mos.
Assolutamente no, I2C e SPI sono due cose molto diverse come esigenze hardware, la prima è molto tollerante su fronti di salita e discesa dei segnali, e anche sul timing in generale, la seconda richiede segnali con fronti molto ripidi e molto precisi come timing, anche per via dei 4 possibili modi di funzionamento dati da polarità e fase.
La SPI non si può traslare di livello con un semplice mos come affermi tu, occorre usare gli appositi IC come il SN74LVCC3245.
flameman:
Perche' internamente un SN74LVCC3245 come credi che sia fatto ?
Non con un singolo mos da due cent per canale.
Lo replichi e per bit rate bassi va + che bene (e se guardo i fronti, non sono nemmeno male)
Non funziona nemmeno a bit rate bassi, non è quello il problema.
La SPI richiede specificatamente fronti di salita e discesa non superiori a 15 ns indipendentemente dal bit rate, il motivo è semplice i fronti, sia rise che fall, sono usati come trigger per le varie operazioni e se non sono corretti il tutto funziona male generando errori a non finire.
flameman:
e infatti sia SPI che I2C li implementi anche su un GPIO
Ti faccio notare che un GPIO di un micro ha tipicamente fronti minori di 10ns il che soddisfa le esigenze della SPI e, a maggior ragione, della I2C, tutto il resto è aria fritta.
Le regole dell'elettronica non le stabilisco io, le stabiliscono la fisica, i produttori dei componenti e chi stabilisce i vari protocolli.
Se non ti attieni alle regole è anche possibile che le cose funzionino lo stesso, ci sono sempre ampi margini di tolleranza/sicurezza, ma non è la regola e tanto meno il modo corretto di procedere.
Ritengo un comportamento corretto, in un forum tecnico quale quello di Arduino, spiegare le cose per come devono essere e non per come forse possono essere.
flameman:
ora ne sto approfittando
per chiederi come ti spieghi il comportamento della FRAM SPI, allora ?
sta lavorando con fronti a 60nsec
Prima di tutto vorrei vedere come li misuri quei 60 ns visto che lo strumento stesso introduce errori di suo.
Anche se sono corretti questo non significa che non funziona per forza, come ho già detto le tolleranze sono generose, significa che sei fuori specifiche con tutte le considerazioni del caso.
astrobeed:
Se non ti attieni alle regole è anche possibile che le cose funzionino lo stesso, ci sono sempre ampi margini di tolleranza/sicurezza, ma non è la regola e tanto meno il modo corretto di procedere.
Ritengo un comportamento corretto, in un forum tecnico quale quello di Arduino, spiegare le cose per come devono essere e non per come forse possono essere.
Sono pienamente d'accordo con astrobeed che i consigli devono essere giusti e non solo cosí-cosí che funzionano per caso o per fortuna.
flameman:
La discussione e' utile a tutti perche' mette in evidenza cio' che spesso nei forum si salta in tronco
fornendo al posto del consiglio la ricettina gia' bella fatta e confezionata
della serie "se fai cosi', funziona, fai esattamente cosi' come ti dico"
Qui non è questione del "lo dico io", è questione che esistono specifiche e protocolli a cui ci si deve attenere, non c'è nulla da discutere in merito.
Se non ti attieni alle specifiche dei produttori il tutto può anche funzionare, ma può anche funzionare male o non funzionare del tutto come può benissimo rompersi e la colpa è solo "tua" perché non hai seguito le regole.
Te l'ho già detto, l'elettronica prevede sempre larghi margini di tolleranza perché non esistono i componenti ideali e tantomeno i valori esatti al millesimo.
Comunque sia i conti si fanno lo stesso al millesimo e si scelgono componenti e soluzioni circuitali che permettono di soddisfare le regole in modo da essere certi che al lato pratico nonostante le tolleranze, i parametri parassiti, i valori approssimati alla disponibilità di mercato, etc alla fine si riesce a rimanere dentro le specifiche e il tutto funziona in modo affidabile.
Ehm... dopo aver letto tutto (anche se dopo il terzo post mi sono perso) mi sento un po' pirla per la domanda che sto per fare, ma prima di tutto vi ringrazio per i suggerimenti.
Da quello che ho capito l'anodo del led lo devo collegare ai 5v e il catodo a un uscita del TPIC6A596NE (in effetti cosi ho avuto un debole segnale di vita, qualche led si e' acceso + o -). Se e' cosi allora potrei usare il 74hc595 per controllare le colonne della matrice, e il TPIC6A596NE per controllare le righe, e' giusto o sto viaggiando troppo con la fantasia?
Metti le resitenze il 595 e tutti gli anodi dei LED di una riga. Accendendo una colonna col TPIC6A596NE e i LED che vuoi accendere nella colonna col 595. Poi cambi la colonna ecc. Cosí stai dentro nelle correnti massime.
flameman:
...
Sarei concoderde anche io, se non fosse che il mio non e' un consiglio
il consiglio si ferma nel suggerire un integrato, e li finisce.
Della serie, io ti do una idea, gratuita, oppure apro un concetto e ne discutiamo
non devo portare avanti io il tuo progetto, ho gia' i miei.
...
Se non vuoi aiutare a risolvere il problema di kvsd, ma solo dare idee che non sono attinenti alla domanda o non realizzabili o non spiegati come possono essere realizzati per risovere il problema allora Ti prego di non rispondere.
Quelle che non vuoi leggere, ma è un problema tuo non mio.
Non risponderò ulteriormente sia perché siamo ot in questo thread sia perché non mi interessa fare a gara a chi è più bravo, anzi non interessa proprio a nessuno.
astrobeed:
Quelle che non vuoi leggere, ma è un problema tuo non mio.
Non risponderò ulteriormente sia perché siamo ot in questo thread sia perché non mi interessa fare a gara a chi è più bravo, anzi non interessa proprio a nessuno.
Astrobeed sei un signore perché altri al tuo posto avrebbero già perso la pazienza. E quoto a pieno la tua ultima frase: