Vai al contenuto
PLC Forum


Gestione Di Moolte Uscite 30/40 Con Pic - con un demultiplexer


stefano_

Messaggi consigliati

Ho fatto casino con il post precedente e non me lo lascia modificare - Riscrivo tutto

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!

' *** Azzera tutte le uscite degli shift
serinput = 0

for i=1 to 32 ' *** SE HAI 4 SHIFT
   clock=1
   clock=0
next i

strobe = 1
strobe = 0

Questo lo metti all'inizio del programma. Chiaramente gli shift devono essere in cascata, cioè serinput del micro deve essere collegato al primo shift, il secondo shift ha l'ingresso (D pin 2) collegato al QS2 ( pin 10 ) del primo shift, l'ingresso D del terzo shift collegato al QS2 del secondo shift... tutti i pin di clock collegati insieme come anche tutti i pin di strobe.

Ciao

Link al commento
Condividi su altri siti


ho già provato....

per fare quello che dici tu devo prima di tutto alimentare il 4094 (o no !!!!!!) ed appena lo alimento mi attiva le uscite casualmente.

Sbaglio ??

Link al commento
Condividi su altri siti

Non sbagli... se non vuoi che le uscite si muovano casualmente allo start, puoi mettere un RC sull' OE ( Output enable ) in modo che rimangano disabilitate per un po all'accensione e in quel tempo carichi a zero il registro.

Io di solito qua collego l'OE ad una linea di reset ritardata rispetto a quella del micro, in modo che prima che salga e attivi il 4094 ho già pulito gli shift.

Altra soluzione è quella di comandare l'OE da micro direttamente e abilitarlo solamente gli shift sono carichi con quello che vuoi alla partenza.

Link al commento
Condividi su altri siti

ciao,

scusa se ti rompo ancora ma la voglia di capirci qualcosina a molta ( come l'ignoranza !! )

ho provato di tutto ,

ho provato a collegare il pin OE diretto all'alimentazione tramite un resistenza da 10 K ( avevo lo schema fatto così)

poi ho provato come dici tu, cun un circuito rc ho provato con R da 10K e C da 4.7uF fino ad arrivare R = 100 K

e C 2200 uF ma non cambia nulla, anche se il pin OE lo lascio scollegato è lo stesso non fa aluna differenza !!!!!

Dove sbaglio ?!?!

Link al commento
Condividi su altri siti

device = 16f84

CONFIG XT_OSC , WDT_OFF , PWRTE_ON , CP_OFF
' dichiarazioni variabili
dim a as byte

' Settaggi I/O
trisa = %10000
trisb = %11000000

' Definizione simboli
symbol clock = portb.0
symbol serinput = portb.1
symbol strobe = portb.2

' Inizializzazione
portb = 0
serinput = 0 
strobe = 0
a = 0


'per 10 volte azzero ( visto che serinput è basso ) l'uscita ed eseguo lo shift ho 8 uscite con 10 shift vado sul sicuro 
for a = 0 to 10
    clock = 1
    delayus 0.01
    clock = 0     
    delayus 0.01
next a  

' Ora dovrebbe essere tutto pulito ( tutto a zero )


serinput = 1    ' acquisisco l'ingresso
clock  = 1  ' 1° shift
delayus 0.02
serinput = 0    ' disattivo l'ingresso
clock = 0 
delayus 0.02
clock = 1    ' 2° shift
delayus 0.02
clock =0
delayus 0.02
clock = 1    ' 3° shift
delayus 0.02
clock = 0  
strobe = 1    ' Riporto lo stato dei bit sulle uscite

end

Dimande:

1) vista che faccio 3 shift mi si dovrebbe accendere il led collegato sul pin 6 invece si accende quello collegato sul pin 5... come mai ?

2) un altro problema è come ti dicevo che prima di accendersi il led collegato al pin5 tutti gli altri si accendono in maniera random

per una tempo brevissimo che però vorrei annullare !!! ho provato a cambiare le pause ma non è cambiato nulla,

ho provato con un circuito R C ma niente da fare !!!!

Mi sta fregando..... ma non riesco a capire dove

grazie 1000 per il tuo aiuto

ciao ciao

Link al commento
Condividi su altri siti

per lucadep:

scusa se ti disturo ma mi hai chiesto di postare il codice ti sei perso la discuzzione oppure non utilizzi il basic ??

scusami ancora se ti scrivuo nuovamente , ciao e

buona pasqua a tutti

Link al commento
Condividi su altri siti

Ciao... scusami tu, ma sono stato un po incasinato con il lavoro... siccome il forum lo guardavo solamente dall'ufficio, non sono riuscito a postare.

Mi sembra comunque tutto corretto. A parte che non so quanto precisi possano essere i ritardi che hai inserito nel primo loop .... quello che dovrebbe azzerare lo shift register. Prova a togliere i ritardi, tanto il componente è sufficientemente veloce.

L'RC che hai usato per ritardare l'accensione delle uscite da quanto era? Un paio di cose... considera che quando accendi la scheda, il micro non parte subito, ma aspetta un piccolo ritardo, che si stabilizzino i 5 volt, e che vada a regime l'oscillatore. Se hai calcolato l'RC troppo al limite, è possibile che non sia sufficiente. Prova a mettere un RC che ti dia un ritardo di 400-500 mS, e ricorda che quando spegni e riaccendi l'RC potrebbe essere ancora carico e abilitare subito l'uscita. Per provare potresti usare una linea del micro che pilota l'OE dopo che hai azzerato lo shift register.

Ciao e buona pasqua a tutti!!!!

Link al commento
Condividi su altri siti

Ciao a tutti,

scusate se mi intrometto...hai pensato ad una soluzione diversa da un pic??? Per esempio un bella CPLD (logica programmabile) Altera? Asseconda della CPLD che scegli avrai tanti di quelli input/output che ti verrà il mal di mare :D

oppure potresti collegare due 89C51 con la seriale, questa funzionalità di collegamento (89c51 to 89c51) è prevista nell'hardware del micro e tutto facilita le cose, avresti a disposizione una sessantina di input/output :P

Ciao

Macbet

Link al commento
Condividi su altri siti

scusa, ma non sono un grande esperto nel settore mi potresti dare qualche info più precisa su cosa si tratta !!!

Cosa un CPLD come si programma e l' 89c51 ?? cosa è !!! Scusa l'ignoranza e

grazie 1000 per il tuo consiglio.

Ciao

Link al commento
Condividi su altri siti

x lucadep:

risoltoooooooooooooooooooo !!!!!!1

era solamente che l'uscita del pic che mi comanda lo strobe non aveva uno sttao ON / OFF ben definito,

mi è bastato mettere una resistenza di Pull down (si dice così no ?? ) da 10K che mi

tiene l'uscita a massa fino a quando non viene attivata.

Grazie per i tuoi preziosissimi consigli,

ciao ciao

Per MacBet:

sono sempre interessato alla tua idea ....

grazie 1000

Link al commento
Condividi su altri siti

Salve a tutti

Stò adoperando anche io il cd4094 in un progetto con pic a display led ad alta luminosità.

questi led penso che assorbino 30-40mA , ed ho constatato che alimentandoli direttamente a 5Volt con la pic la loro luminosità è ancora bassa

Ho pensato di alimentare separatamente la pic (5volt) e il cd4094 con 12volt,

ovviamente poi con adeguate resistenze di caduta,

può funzionare? se si il cd4094 quanti milliampère sopporta?

chi è il + robusto: hef4094B, hcf4094BE ecc.

Ringrazio anticipatamente

Rocco

Link al commento
Condividi su altri siti

scusate se vado un pò fuori argomento, e se ho già fatto questa domanda ma non avendo ricevuto una risposta riprovo qui visto che lucadep utilizza il basic o almeno sper....

non sono ancora riuscito a capire ancora come gestire l'interrupt del pic utilizzando pic basic sapete dirmi / darmi qualcosa ???

Ringrazio tutti

ciao ciao

Link al commento
Condividi su altri siti

... beh ... stasera controllo... mi spiace, ma il basic lo conosco in altri ambiti, con il pic sto usando il C. Il mio socio lo ha usato, ma mi pare abbia avuto lo stesso problema di non riuscire a gestire correttamente gli interrupt.

Link al commento
Condividi su altri siti

X rocco66

i modelli da te indicati hanno uscite che sia in source che in sink arrivano a piu o meno 1mA.

Il 74HC4094 invece arriva a 25mA. Non ho trovato le curve di carico e non so dirti che tensione hai in uscita alla corrente massima, ma dovresti ottenere una buona luminosità anche a 10mA senza avere un'eccessiva caduta sull'uscita. ( ATTENTO che questo non lo puoi alimentare a 12V )

In alternativa, se non hai troppe uscite da pilotare, potresti usare dei transistor per aumentare la corrente sul led.

N.B. Se alimenti lo shift a 12V e il pic a 5V senza circuiti di adattamento, potresti avere problemi nel caricamento dello shift register a causa dei livelli diversi.

Link al commento
Condividi su altri siti

Ciao Lucadep

Ho alimentato il HCF4094BE con 8 Volt e ovviamente la Pic a 5Volt

(hai ragione se lo alimento a 12 Volt il circuito si blocca)

sulle uscite per i segmenti ho 3,8Volt e dopo le res. 1,75Volt

(mi sembra che possono funzionare fino a 2,2Volt)

Adesso per ogni segmento vi scorrono 10mA, con res.di caduta di 220ohm

il 4094 scalda un po ma funziona.

il display in prova è un SC08-11SRWA: http://chdist35.distrelec.com/distrelec/da...1208-661215.pdf

Penso per questi tipi di display si potrebbe ancora aumentare la corrente per far in modo da essere letti anche con luminosità esterna eleveta (luce diurna)

ovvio che proverò i 74HC4094, a proposito a quanti Volt viene alimentato?

ringrazio anticipatamente per la risposta

Rocco

Link al commento
Condividi su altri siti

5V, max 6V.

Il display che adoperi dovrebbe sopportare fino a 30mA di corrente. comunque considera che se piloti i led direttamente, senza adoperare altri componenti esterni allo shift register a parte la resistenza di limitazione, piu sali con la corrente da erogare, piu bassa diventa la tensione sull'uscita. Quindi raggiungi un limite dove anche abbassando la resistenza, oltre a mettere in crisi lo shift register, non aumenta la luminosità.

Link al commento
Condividi su altri siti

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...