MULTIPLEX LED 16F887

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

MULTIPLEX LED 16F887

Mensagempor eloyfm » 09 Ago 2014 13:45

Ola Pessoal.
Perciso controlar o acendimento de 30 LEDs para um painel,mas não consegui usar a mesma tecnica de 7 segmentos pois preciso controlar eles separadamente. ou seja, acender e apagar qualquer a qualquer momento. Isso seria usado para sinalizar chaves ligadas. Estou usando o 887 porque preciso das outras portas para outras coisas. O circuito usa 10 (iOS) em ter colunas, ou seja. 3 x 10.. alguem poderia me dar uma luz de qual seria a maneira mais correta ou confiável para fazer isso ? Obrigado...
eloyfm
Bit
 
Mensagens: 37
Registrado em: 03 Jul 2014 14:29

Re: MULTIPLEX LED 16F887

Mensagempor EvandrPic » 09 Ago 2014 16:30

*
Editado pela última vez por EvandrPic em 10 Ago 2014 00:52, em um total de 1 vez.
EvandrPic
Dword
 
Mensagens: 2116
Registrado em: 31 Mar 2010 15:05

Re: MULTIPLEX LED 16F887

Mensagempor ze » 09 Ago 2014 17:07

com 10 io disponíveis vc consegue acionar 30 leds.. uma matriz tridimensional 5x3x2 p.ex. (me lembro de ter feito isso num attiny26 com 6 displays de 7seg). me lembro também de um an da microchip que ensina vc a contolar vários leds com poucos io's. vc coloca leds entre um pino e outro e controla o tris também... algo assim. depois procuro...
Mas se vc tiver 11 io's é muito + fácil: matriz 5x6. e com +1 vc consegue ler + 6 chaves usando a varredura dos 6 (de fato estou fazendo isso AGORA.. sério kk)
abç
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Re: MULTIPLEX LED 16F887

Mensagempor eloyfm » 09 Ago 2014 17:19

O projeto deve usar o 16F887. Ele tem muito mais que 10 iOS, mas comentei que tenho 13 disponíveis para essa multiplexação dos LEDs
Gostaria que alguem pudesse me dizer qual seria uma forma eficáz e facil de fazer. Gostaria de fazer 3 colunas com 10 linhas.
Obrigado
eloyfm
Bit
 
Mensagens: 37
Registrado em: 03 Jul 2014 14:29

Re: MULTIPLEX LED 16F887

Mensagempor andre_luis » 09 Ago 2014 17:30

eloyfm,


Eu também já tive a necessidade de expandir a capacidade de IO´s de um microcontrolador, e usei o 74LS373 pra isso. Dá uma olhada no circuito abaixo que utiliza 2 desses CI´s para duplicar a capacidade de uma porta de 8bits, mas voce pode usar quantos mais quizer, sendo necessário 1 pino de saída extra para cada 8 bits adicionais:

Se quizer mais detalhes, pode obter nesse artigo: Projeto experimental de lavadora de roupas
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: MULTIPLEX LED 16F887

Mensagempor eloyfm » 09 Ago 2014 17:48

Entendi Andre, mas eu preciso de um circuito bem pequeno pro falta de espaço e custo. Gostaria se possivel de uma ideia de programa para usar somente
( 10 ) iOS em linhas e (3) iOS em colunas, e só.. Tentei a tecnica de display de 7 segmentos pois não conheço muito e preciso copiar algum bloco pronto
e assim aprender tambem. Ai segue o circuito
eloyfm
Bit
 
Mensagens: 37
Registrado em: 03 Jul 2014 14:29

Re: MULTIPLEX LED 16F887

Mensagempor andre_luis » 09 Ago 2014 19:09

Bom, o que eu sugeri foi a abordagem classica com o 74LS373, que realmente ocupa espaço, pois os pinos são duplicados, ou seja, a mesma quantidade usada na entrada, também para a saida. No caso de menor espaço, teria de uzar alguma solução baseada em entrada serial e saída paralela, mas eu pessoalmente não gosto muito de trabalhar com shift registers.

Já pensou em algo baseado em I2C ?
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: MULTIPLEX LED 16F887

Mensagempor eloyfm » 09 Ago 2014 19:57

Ola Andre. Eu estou usando um PIC 16F887. Ele tem ( iOS sobrando ). Veja bem o que eu estou precisando.. Tenho 10 Botoes. Esses eu vou ligar direto em IOs.. casa um e um IO.. Os LEDs são 30.. então, se eu usar uma multiplexação de 3 colunas e 10 Linhas são 13 iOS.. isso tudo soma 23 iOs e aind asobra um montão de iO.. Por isso escolhi o 887.. Para não ter que colcoar mais componentes. Se pudesse usar outro eu poderia usar até um 12F629, mas eu preciso usar o 887, que da mais iOS de sobra pra fazer tudo o que quero.. O que eu preciso é um programa, ou bloco, que me ajude a entender com multiplexar esses 13 iOS em 30 LEDs.. Obrigado...
eloyfm
Bit
 
Mensagens: 37
Registrado em: 03 Jul 2014 14:29

Re: MULTIPLEX LED 16F887

Mensagempor ze » 09 Ago 2014 20:51

ok. entendi. isso é relativamente fácil. vc vai ter que lançar mão de algum conhecimento de interrupt por timer. possui? vislumbro superficialmente 4 bytes sendo que seus bits controlam os leds. não tenho os programas (compilador + proteus) aqui mas pretendo instalar em breve. vou ver que posso fazer ok? a propósito que tal uma matriz 4x8? basta desprezar 2 leds.
em tempo... tenho phd em pisca led para mc e este lance de minimalismo em hw é meu mundo também. wellcome à selva
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Re: MULTIPLEX LED 16F887

Mensagempor andre_luis » 09 Ago 2014 21:01

eloyfm escreveu:Por isso escolhi o 887.. Para não ter que colcoar mais componentes
eloyfm escreveu:O que eu preciso é um programa, ou bloco, que me ajude a entender com multiplexar esses 13 iOS em 30 LEDs


O problema é que as especificações acima parecem estar conflitantes, ou então ainda não entendi direito, mas o fato é que para multiplexar os IOs, será necesário a adição de componentes externos, seja de maior quantidade de pinos ( serial ) ou menor quantidade de pinos ( paralelo ) não dá pra fazer isso apenas com os 13 pinos do microcontrolador.
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: MULTIPLEX LED 16F887

Mensagempor eloyfm » 09 Ago 2014 22:23

Eu vi uma infinidade de videos e outros mais onde fazem multiplex de LEDs até de 30 LEds com 6 iOS.. Só que fica muito complicado. Ou seja. Se eu não consigo fazer com 3 colunas e 10 linhas, certamente vu fritar o pouco que resta do meu cerebro pra fazer um modo mais avançado.. aparentemente deve ser ligando e desligando colunas e linhas, numa velocidade de aprox. 10ms, mas eu nao consigo fazer a parte que acende e apaga e continua nesse loop para os 30 leds.. Eu estou tentando aqui fazer com um mesmo programa para display de 7 segmentos (adaptar ), mas nem sei se servirá no final.. obrigado....
eloyfm
Bit
 
Mensagens: 37
Registrado em: 03 Jul 2014 14:29

Re: MULTIPLEX LED 16F887

Mensagempor ze » 09 Ago 2014 23:23

particularmente vejo coerência e não conflito. enfim... só 1 lôco entende outro...
"aparentemente deve ser ligando e desligando colunas e linhas, numa velocidade de aprox. 10ms,..."
amigo é exatamente isso que uma interrupção por timer deve fazer. Veja isso (digito online portanto não nos importemos com enganos):
catodos em RA3...0, anodos em RB7...0
Código: Selecionar todos
unsigned char a[4],k=1,i=0;
...
static void interrupt timer1() //10ms ou menos
{
PORTB=a[i];//nem
PORTA=~k;// preciso
i++;// comentar nada
k<<=1; if(k>8) {k=1;i=0;} //pois é autoexplicativo... espero
}

void main(void)
{
//...inicializa hw, timer1 principalmente
//teste
a[0]=0b10101010;
a[1]=0x55;
a[2]=0x0f;
a[3]=0xf0;
for (;;)
{
//...
//...
}
}

consegue enxergar os leds dentro de a[3...0]? bit=1=aceso. esta é a essência da coisa (senão a coisa toda). como disse está 8x4. (mc de 8 bits se dá bem com ... 8 bits). se insistir nos 3x10, depois de entender o treco deve fritar muito menos os miolos...Julgo não precisar explicar mais além disso e muito menos como inicializar o timer para interrupt, né? mas se necessário, não se acanhe (em implorar de joelhos. kk )

creio que vc pode ligar os 30 leds direto (com resistor, claro) nos pinos sem buffer. Sugiro que sejam de alto brilho
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Re: MULTIPLEX LED 16F887

Mensagempor eloyfm » 10 Ago 2014 00:27

Zé, agradeço.. como disse, sou bastante novo no assunto, e o pouco que aprendi foi no CCS então demoro um pouco para enteder os codigos . quem sabe consigo colocar essa ideia para funcionar. Sei que o Timer0 deve ser usado para varrer as colunas e estou tentando pro aqui. Eu estive olhando o codigo para display de 7 seg. 4x8 e parece que da para adaptar . Vou queimando os miolos por aqui.. obrigadão..
eloyfm
Bit
 
Mensagens: 37
Registrado em: 03 Jul 2014 14:29

Re: MULTIPLEX LED 16F887

Mensagempor andre_luis » 10 Ago 2014 07:48

Pessoal,


Entendi agora, eu realmente estava enganado. Olhando o código acima...realmente usando apenas 4 transistores externos ( e mais alguns resistores adicionais ) para multiplexar uma porta de 8 bits, seria a solução perfeita, pois como exclareceu o Zé, no total iria consumir uma porta de 8 bits mais 4 pinos de uma outra porta. Esse conceito também tá no esquemático de um outro artigo publicado aqui no forum, conforme a seguir: Painel de LED publicitário baseado no PIC16F877.
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: MULTIPLEX LED 16F887

Mensagempor vtrx » 10 Ago 2014 10:35

André,não sei se é mesquinharia minha,mas é interessante postar um projeto destes completo,caso seja seu?
Tem tanta gente na net ,hoje em dia,que só quer levar vantagem.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Próximo

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x