Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16504
Don't know what I do
|
 |
« Reply #15 on: February 27, 2013, 03:29:35 pm » |
Forse allora nella combinazione delle 21:19 c'è un "incrocio pericoloso". E' già un punto di partenza.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 12
|
 |
« Reply #16 on: February 27, 2013, 04:07:38 pm » |
L'orario delle 21:19 era solo un esempio. Si verifica con ogni orario questa accensione non richiesta dei LED.
E' più chiaro ciò che avviene?
|
|
|
|
|
Logged
|
|
|
|
|
Tuscany
Offline
Edison Member
Karma: 20
Posts: 1054
|
 |
« Reply #17 on: February 27, 2013, 04:08:44 pm » |
Gli integrati che utilizzo sono:
Due DEMULTIPLEXER HC 74LS154 Due INTEGRATI NOT 74LS04 110 LED ad alta luminosità Alimentazione a 5V (Arduino) mi stavo chiedendo perche' non hai menzionato delle resistenze... e ora ho capito perche' guarda che stai usando ( sarebbe meglio dire Sovracaricando )integrati che come corrente ne erogano pochina. E sicuramente stai lavorando oltre i limiti di ciascun IC comunque nello specifico si tratta del 74LS154 collegato ai catodi, in cui le porte poste a livello HIGH ( Led spento ) causa sovrassorbimento non si trovano a 5V ma a un livello indefinito Se fai una routine di prova e accendi un led alla volta, vedrai che si illumina solo quello richiesto In pratica e' quasi un miracolo se fa' quello che fa'
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 12
|
 |
« Reply #18 on: February 27, 2013, 04:31:02 pm » |
Difatti ho utilizzato gli Integrati HC proprio per permettere un maggior flusso di corrente. Poiche l'alimentazione dei DEMUX HC è 5V, la tensione in uscita è circa 3V per questo non utilizzo resistenze. Comunque hai ragione, accendendo LED per LED non riscontro problemi, ma devi considerare che l'accensione e singola, ma ad altissime frequenze! Vale a dire che tu percepisci più LED accesi come se fossero alimentati in DC, ma in realtà i DEMUX stanno accendendo lettera per lettera ad una velocità di 100 microsecondi ogni LED all'interno del loop, controllati da un Onda Quadra ad altissima frequenza. Ne consegue che i DEMUX non sono mai sovraccaricati, almeno da specifiche tecniche forniscono un corretto funzionamento fino all'ordine dei Nanosecondi. Intendevi questo? Hai qualche soluzione che non richieda una totale riprogettazione? Fammi sapere se necessiti altri chiarimenti.
|
|
|
|
|
Logged
|
|
|
|
|
BZ (I)
Offline
Brattain Member
Karma: 162
Posts: 15749
+39 349 2158303
|
 |
« Reply #19 on: February 27, 2013, 05:59:17 pm » |
Ci vogliono resistenze per limitare la corrente sui LED indipendentemente se usi integrati LS o HC. Ho capito perché hai dei LED fanstasma: Prendiamo un esempio se accendi il led 2-2 e poi il led 4-4 perché devi illuminare quelle due lettere una dopo l'altra in binario sono 2-2: B00100010 prima lettera 4-4: B01000100 seconda lettera Tu modifichi con digitalWrite non tutto il Byte ma Bit per Bit. Metto i passi intermedi aggiornando i bit da sx a dx e uso "o" e "i" per i bit modificati in quel momento: B o010 0010 B 0i10 0010 B 01o0 0010 B 010o 0010 B 0100 o010 B 0100 0i10 B 0100 01o0 B 0100 001o pausa o in LED per righe e colonne sono 2-2 6-2 4-2 4-2 4-2 4-6 4-4 4-4 pausa. O in altre parole parto dal LED 2-2 per accender per brevi tempi (per il tempo necessario per eseguire un o piú digitalread() ) i led 6-2, 4-4, 4-6 e arrivare al LED 4-4 Soluzione: Il 154 ha le due entrate G1 e G2 che mettono in H tutte le uscite indipendentemente dai dati presenti sui pin A, B, C, D. Prima di variare le entrate del 154 spegni tutte i LED mettendo sul demux positivo il G1 o G2 a H e percui tutte le uscite a H. Setti i dati e dopo attivi le uscite del demux. http://www.datasheetcatalog.org/datasheets/134/231586_DS.pdfL'altra possibilitá é non usare digitalWrite ma il Port Manipulation ( http://playground.arduino.cc/Learning/PortManipulation ) Usando i pin da 0 a 7 che sono del PORT D puoi mettere i dati tutti in una volta e cosí non hai transiszioni intermedie. Questo avrebbe anche il vantaggio che al posto di 10000 funzioni per settare un LED Ti servirebbe solo una funzione alla quale dai un numero di 8 bit. E metti resistenze sui LED!!!! Ciao Uwe
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 12
|
 |
« Reply #20 on: February 28, 2013, 03:15:08 am » |
Ciao, ho letto cosa hai scritto, solo che il codice non prevede questa accensione sequenziale aggiornata BIT by BIT, ma il codice viene direttamente caricato sui DEMUX. Per transizione intendi quello stato indefinito che viene inviato al DEMUX tra i vari digitalWrite?Effettivamente, l'accensione dei LED indesiderati riscontrata, volendo accendere i LED 2-2 e 4-4 è quella dei LED: [riga-colonna] 6-2 4-2 4-6 come dicevi tu. Ma anche: 2-6 4-6 Ti allego la foto: http://www.mediafire.com/?94a1bfb4b64pa61Potresti approfondire uno delle due soluzioni? Ad esempio cosa intendi per settare G1 o G2, devo cambiare lo stato una volta per ogni cambio? E nella seconda soluzione, come si usa il PORT D? Quale pensi sia la migliore? Grazie dell'aiuto, ci hai preso in pieno! 
|
|
|
|
|
Logged
|
|
|
|
|
BZ (I)
Offline
Brattain Member
Karma: 162
Posts: 15749
+39 349 2158303
|
 |
« Reply #21 on: February 28, 2013, 06:06:13 am » |
Per transizione intendi quello stato indefinito che viene inviato al DEMUX tra i vari digitalWrite? Tu per variare i valori inviati ai due Demux usi 8 digitalWrite. Per arrivare dal stato di partenza al stato di arrivo ci sono 7 stati intermedi che accendono per brevi tempi altri led. Effettivamente, l'accensione dei LED indesiderati riscontrata, volendo accendere i LED 2-2 e 4-4 è quella dei LED: [riga-colonna] 6-2 4-2 4-6 come dicevi tu. Ma anche: 2-6 4-6 Non conoscendo bene il circuito e non avendolo analizzato fino in fondo é possiblie che si accendono anche altri LED. Il mio era un esempio per spiegare la situazione di transito che comporta l'accensione involuta di altri LED. L' uso del port manipulation é descritto nel link dato. G1 e G2 sono piedini del DEMUX 154 vedi datasheet allegato alla precedente risposta. È preferibile la prima soluzione perché é piú veloce e puoi anche toglere una sacco di funzioni inutili. Ciao Uwe
|
|
|
|
« Last Edit: February 28, 2013, 06:07:52 am by uwefed »
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16504
Don't know what I do
|
 |
« Reply #22 on: February 28, 2013, 09:50:27 am » |
Ok, ho capito. Quindi devo fare in modo che i 4 BIT vengano caricati assieme, senza transizioni di BIT, ma con un' unica transizione di una WORD da 4 BIT. Come se gli dovessero arrivare in contemporanea. Quindi per fare questo unico blocco di istruzioni, in arrivo tutte insieme, tenendo nel frattempo G1 e/o G2 a livello HIGH, come posso fare? Nel senso, per evitare questa transizione di stati, e ottenere un unico invio.
Potresti darmi un esempio da codice su come intenderesti fare? Grazie ancora dell'aiuto!
Devi collegare i pin G1 e/o G2 dei Demux ad uno/due pin dell'Arduino e poi devi mettere uno di entrambi a livello High prima di impostare le porte dell'Arduino, poi dopo quest'operazione, riporti quel piedino a Low per attivare le uscite sul Demux.
|
|
|
|
|
Logged
|
|
|
|
|
BZ (I)
Offline
Brattain Member
Karma: 162
Posts: 15749
+39 349 2158303
|
 |
« Reply #23 on: February 28, 2013, 04:53:22 pm » |
G1 e G2: basta uno dei due e l' altro puó rimanere in modo fisso su LOW. Ciao Uwe
|
|
|
|
|
Logged
|
|
|
|
|
BZ (I)
Offline
Brattain Member
Karma: 162
Posts: 15749
+39 349 2158303
|
 |
« Reply #24 on: February 28, 2013, 05:01:37 pm » |
gears_math cancelli le Tue risposte? Quella delle 03:31:17 PM che ha citato Leo72 dove é rimasta? Ciao Uwe
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 12
|
 |
« Reply #25 on: March 02, 2013, 05:55:45 pm » |
Il progetto funziona e alla perfezione! Alla fine ho seguito il secondo consiglio di uwefed, ovvero l'utilizzo del PORTD, anche per snellire il programma, che adesso conta 1900 righe anzichè le precedenti 2700! Il problema erano proprio le transizioni intermedie! Adesso è perfetto. Ringrazio ancora una volta uwefed per l'illuminazione! Complimenti per aver beccato subito l'intoppo, senza avere il progetto tra le mani, che occhio! Ringrazio anche leo72 e brunello.PS: Volevo modificare il messaggio, ma l'ho eliminato. Comunque il "Quote" di leo72 riporta la mia domanda, così come era. Devo ripostarla? A fine progetto posterò il programma con schema elettrico e realizzazione sulla sezione "Progetti", se magari siete interessati a realizzarlo! Grazie ancora! 
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16504
Don't know what I do
|
 |
« Reply #26 on: March 02, 2013, 06:04:50 pm » |
Non importa che ripubblichi il post, era per capire se era stato una cancellazione volontaria o meno 
|
|
|
|
|
Logged
|
|
|
|
|
BZ (I)
Offline
Brattain Member
Karma: 162
Posts: 15749
+39 349 2158303
|
 |
« Reply #27 on: March 02, 2013, 06:14:13 pm » |
Il problema erano proprio le transizioni intermedie! Adesso è perfetto.
Ringrazio ancora una volta uwefed per l'illuminazione! Complimenti per aver beccato subito l'intoppo, senza avere il progetto tra le mani, che occhio!
Ringrazio anche leo72 e brunello.
PS: Volevo modificare il messaggio, ma l'ho eliminato. Comunque il "Quote" di leo72 riporta la mia domanda, così come era.
Se era una cancellazione per errore non é grave. Leo avendola citata ha creato una copia e la discussione resta leggibile. Grazie dei complimenti. Ciao Uwe
|
|
|
|
|
Logged
|
|
|
|
|
|