stefano_ Inserito: 10 marzo 2005 Segnala Share Inserito: 10 marzo 2005 salve a tutti,il problema è che dovrei gestire molte uscite circa 30 / 40 con un pic 16f84 o 16f628 .avevo pensato di utilizzare un demultiplexer del tipo 74154 ma ha solo 16 uscite !!come posso fare per aumenterle ??Grazie 1000 come sempre a tutto il forumciao ciao Link al commento Condividi su altri siti More sharing options...
Cesco Inserita: 10 marzo 2005 Segnala Share Inserita: 10 marzo 2005 Ciao Stefano,potresti usare una rete di 74154 fino a raggiungere il numero di uscite da te desiderato.Poi dovresti implementare un minimo di logica di indirizzamento,in modo da riuscire a selezionare (tramite i PIN G1 e G2 (che dalla tabella di verità, devono essere entrambi bassi per poter pilotare le uscite) ) quale DEMUX effettivamente pilotare.Ciao e buon lavoro,Cesco. Link al commento Condividi su altri siti More sharing options...
k6233 Inserita: 10 marzo 2005 Segnala Share Inserita: 10 marzo 2005 (modificato) Ci sono degli integrati che hanno 8 I/O che vengono pilotati tramite i2c.Li ho utilizzati e sono una bomba, naturalmente le velocità di gesitione degli I/O diminuisce.Prova qui:http://www.i2cchip.com/pcf8574.htmlCiaoMarco Modificato: 10 marzo 2005 da k6233 Link al commento Condividi su altri siti More sharing options...
stefano_ Inserita: 10 marzo 2005 Autore Segnala Share Inserita: 10 marzo 2005 ciao,vi ringrazio per la vostra tempestivita e per il vostro aiuto,l'unica cosa che non mi è chiara è questa:i pin G1 e G2 mi servono per decidere su quale uscita indirizzare l'ingresso con che cosa attivo un demux piuttosto che un'altro ??e poi :il 74154 ha 4 ingressi c'è qualche integrato che ne ha solo 1 ma con 16 o più uscite ??Grazie 1000ciao ciao Link al commento Condividi su altri siti More sharing options...
Cesco Inserita: 10 marzo 2005 Segnala Share Inserita: 10 marzo 2005 (modificato) i pin G1 e G2 mi servono per decidere su quale uscita indirizzare l'ingresso Modificato: 10 marzo 2005 da Cesco Link al commento Condividi su altri siti More sharing options...
Matik Inserita: 10 marzo 2005 Segnala Share Inserita: 10 marzo 2005 Potresti usare l' M5450: due ingressi seriali e 34 out, tipicamente usato per i segmenti dei display degli orologi ( 8 segmenti per 4 cifre + i 2 punti intermittenti).Se cerchi con google trovi schemi e sorgenti.Ciao Link al commento Condividi su altri siti More sharing options...
stefano_ Inserita: 10 marzo 2005 Autore Segnala Share Inserita: 10 marzo 2005 scusa la domanda banale, ma allora a cosa servono G1 e G2 ?? in pratica se utilizzo un solo 74154 devono sempre essere collegati a massagiusto ? Link al commento Condividi su altri siti More sharing options...
lucadep Inserita: 10 marzo 2005 Segnala Share Inserita: 10 marzo 2005 Si. I pin G1 e G2 servono per abilitare il funzionamento del demultiplexer nel caso tu abbia bisogno di disabilitare tutte le uscite o se ne usi piu di uno con gli indirizzi A-B-C-D in parallelo.Se non sei in nessuno dei due casi sopra, li colleghi a massa e va piu che bene.Comunque non penso che questo integrato faccia al caso tuo, visto che è possibile attivare una sola uscita per volta e con logica negata, ossia quando la attivi va a zero mentre quando è a riposo è alta.Se hai bisogno di così tante uscite, se non hai particolari problemi di tempistiche sulle uscite, ti consiglio una serie di shift register in cascata. In genere sono shift register da 8 uscite e li piloti con 2 linee clock e dato.Io uso molto i 74HC4094. Questo lo preferisco a quelli I2C per il semplice motivo che non hai da gestire il protocollo I2C. Mandi via solo il dato che deve essere caricato sullo shift register.Ciao Link al commento Condividi su altri siti More sharing options...
Cesco Inserita: 10 marzo 2005 Segnala Share Inserita: 10 marzo 2005 Comunque non penso che questo integrato faccia al caso tuo, visto che è possibile attivare una sola uscita per volta e con logica negata, ossia quando la attivi va a zero mentre quando è a riposo è alta. Link al commento Condividi su altri siti More sharing options...
stefano_ Inserita: 10 marzo 2005 Autore Segnala Share Inserita: 10 marzo 2005 giusto....a questo non avevo pensato !!!!!!adesso mi studio un pò il 74HC4094 e poi mi faccio risentire.Grazie 1000 e.... a tra poco. Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 10 marzo 2005 Segnala Share Inserita: 10 marzo 2005 ci sono i PCF8574 della Philips che in I2C ti espandono fino 8 i/o ogni chipciao walter Link al commento Condividi su altri siti More sharing options...
stefano_ Inserita: 12 marzo 2005 Autore Segnala Share Inserita: 12 marzo 2005 salve, e scusate se vi rompo di nuovo ma non penso che mi siano di aiuto i registri a scorrimento !!!probabilmente mi sono spiegato male io:mi spiego meglio,io ho 30 led e li devo comandare con un pic 16f84 o 16f628 che hanno 13 I/O !!!Il punto è che vorrei comandare ogni singola uscita indipendentemente dalle altr e quindi vorrei per esempio accendere il primo led aspettare 30 secondi accendere il 4 aspettare 1 minuto accendere il 24 ecc.......a parte il propblema del software che gestisce il tutto quali componenti hardware possono fare al caso mio ???grazie 1000 a tutti e scusate se non sono stato chiaro Link al commento Condividi su altri siti More sharing options...
giacomo56 Inserita: 12 marzo 2005 Segnala Share Inserita: 12 marzo 2005 Dato che parli di tempi dell'ordine dei secondi, gli shift registers possono andare bene. Se, per esempio, ne colleghi 4 in cascata puoi avere 32 uscite indipendenti. Poichè il caricamento avviene serialmente, volendo cambiare anche una sola uscita devi ricaricare tutti e 4 i bytes facendo 32 shift. Mentre avviene lo shift le uscite del 4094 non cambiano se l'ingresso strobe (STR) è basso. Quindi durante il caricamento tieni basso STR, poi lo porti alto, per aggiornare le uscite, e quindi di nuovo basso.Chi lo ha già usato potrà confermarti quanto descritto, se non ho letto male il data sheet.Ciao. Link al commento Condividi su altri siti More sharing options...
stefano_ Inserita: 13 marzo 2005 Autore Segnala Share Inserita: 13 marzo 2005 grazie per la risposta allora si vede proprio che non ho capito nulla dei registri a scorrimentoricomincio il capitolo da zero !!!!!ciao ciao Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 13 marzo 2005 Segnala Share Inserita: 13 marzo 2005 Mi sa che non ha capito nulla nessunoSecondo quanto ho capito io :vuoi pilotare uscite in numero superiore di quante ne forniscano i microcontrollori da te utilizzati ?La risposta e' si?-Esiste il "sistema" di usare dei chip in bus , per esempio pcf8574 che ti danno 8 I/O configurabili come uscite o ingressi .Dal pic esci in bus I2C , che e' un bus seriale sincrono (con una linea di clock e una di dati )In questa maniera puoi pilotare n ingressi ed uscite con 2 pin del micro .Esistono anche per il bus SPI .Se poi vuoi multiplexare o shifatere o altro non so , ma cosi ho fatto delle prove e funziona tutto regolarmenteSe il tuo micro dispone della peroferica I2C bene , seno' ti implementi una libreria come ho fatto io e molti altri ciao walter Link al commento Condividi su altri siti More sharing options...
Claudio F Inserita: 13 marzo 2005 Segnala Share Inserita: 13 marzo 2005 I 4094, se non ci fossero bisognerebbe inventarli: LINK E un gioco luci con PIC fatto proprio con questi: LINKciao Claudio F Link al commento Condividi su altri siti More sharing options...
giacomo56 Inserita: 13 marzo 2005 Segnala Share Inserita: 13 marzo 2005 Certamente esiste più di una soluzione del problema. Per esempio si possono usare dei 74HC259 che sono dei demultiplexer a 8 uscite con memoria. Con 8 pins del pic si possono controllare 4 demultiplexer e quindi 32 uscite con poche e semplici istruzioni in assembly, C o Basic. La scelta dipende dal costo, dalla reperibilità, dalla facilità d'uso, ecc. Ciao. Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 13 marzo 2005 Segnala Share Inserita: 13 marzo 2005 be , io non sono abituato a fare gare per le donne , figuriamoci per sapere il chip miglioreciao walter Link al commento Condividi su altri siti More sharing options...
stefano_ Inserita: 14 marzo 2005 Autore Segnala Share Inserita: 14 marzo 2005 si, è proprio come hai detto tugrazie ancora Link al commento Condividi su altri siti More sharing options...
lucadep Inserita: 14 marzo 2005 Segnala Share Inserita: 14 marzo 2005 E' vero... soluzioni ce ne sono a centinaia... il discorso sta appunto a scegliere quella che fa meglio al proprio caso, alla reperibilità dei componenti ed eventualmente anche al costo.Sono d'accordo che usando il PCF8574 hai a disposizione 8 linee di I/O per ogni unità aggiunta, come per lo shift register, ho comunque considerato i seguenti punti:[*] Da quanto avevo capito da stefano e che poi ha confermato, ha bisogno SOLO di uscite[*] Per carica 40 uscite con lo shift register basta inviare 5 byte e dare lo strobe. Per quanto riguarda 40 uscite con il PCF8574 bisogna comandare 5 unità e inviare 2 byte ogni una, per un totale di 10 Byte, senza contare la gestione del protocollo I2C ( Start, stop, reset ) Con lo shift register hai un caricamento molto piu veloce.[*] Lo shift register costa meno! Link al commento Condividi su altri siti More sharing options...
stefano_ Inserita: 17 marzo 2005 Autore Segnala Share Inserita: 17 marzo 2005 ciao,ho fatto alcune prove col 4094 e vi dico come è andata:ho gestito il tutto con un pic programmato in basic con picbasic.prima di tutto ho inviato 5v sul pin "serinput" poi, all'interno di un ciclo infinito ho inviato 5v al pin di "clock" per 250 nsquindi ho azzerato il pin di "clock" ed il pin "serinput" ho aspettato mezzo secondo e quindi ho inviato 5v al pin "strobe"per aggiornare l'uscita.Ho tenuto alto strobe per 100 ms e poi l'ho riazzerato.Ricapitolando:serinput = 1for a = 1 to infinito clock = 1 aspetto 250 ns serinput = 0 aspetto 500 ms clock = 0 aspetto 500 ms strobe = 1 aspetto 100 ms ' piccolo ritardo strobe = 0next aFacendo così voleva far accendere un led alla volta in modo sequenziale, dal led collegato a Q1 fino al ledcollegato a Q8 e poi di nuovo dall'inizio.Il problema è che ........ non funzia.... si accendono tutti i led contemporaneamente e poi si spegne il primo Q1 ed inoltre se tolgo l'alimentazione e poi la ripristino lo stato delle uscite del 4094 cambia, come se rimanesse in memoria qualcosa !!!Che per case il 4094 ha pure una memoria ?!?!?!?!Ho sbagliato tutto o c'è qualcosa di buonoGrazie 1000 a tutti Link al commento Condividi su altri siti More sharing options...
lucadep Inserita: 17 marzo 2005 Segnala Share Inserita: 17 marzo 2005 Sembra corretto... la linea serinput e clock le hai messe in uscita? Il motivo che se spegni trovi lo shift register sporco è normale. QUando lo accendi ha uno stato ignoto. Basta che al RESET del micro carichi a zero tutti gli shift register. Link al commento Condividi su altri siti More sharing options...
stefano_ Inserita: 17 marzo 2005 Autore Segnala Share Inserita: 17 marzo 2005 ... la linea serinput e clock le hai messe in uscita?Non ho capito cosa significa grazie. Link al commento Condividi su altri siti More sharing options...
stefano_ Inserita: 17 marzo 2005 Autore Segnala Share Inserita: 17 marzo 2005 ok ok caricando a zero tutti i registri va quasi bene, l'unico problema è che per caricare a zero tutti e 8 i registri ( oppure 32 se ho 4 4094 !!) impiego in tot di tempo durante il quale le uscite si attivano a caso e questo è un problema.come lo posso risolvere ?? Avete qualche idea ?!grazie ancora. Link al commento Condividi su altri siti More sharing options...
lucadep Inserita: 18 marzo 2005 Segnala Share Inserita: 18 marzo 2005 stefano+-->(stefano)Il dubbio era che i pin che avevi usato per comandare i 4094 fossero configurati come ingressi.comunque ok, visto che funziona, sono configurati giusti!serinput = 1 for a = 1 to infinito clock = 1 aspetto 250 ns serinput = 0 aspetto 500 ms clock = 0 aspetto 500 ms strobe = 1 aspetto 100 ms ' piccolo ritardo strobe = 0 next a shiftLoad: mask=1 for i=0 to 7 next i Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora