Devido a mais uma necessidade de projeto desenvolvi esse código, o grande problema atualmente é a necessidade de uma quantidade cada vez maior de saídas na maioria dos projetos.

No meu caso resolvi com o cascateamento de alguns CD4094, que não são nada mais que shift-registers, com eles podemos aumentar significamente a quantidade de saidas.

Nesse caso estou demonstrando com led’s, mas com algumas adaptações é possivel o aumento da potencia das saidas, ex: uln2003.

Para fazer essa expansão utilizei somente código e 3 pinos do microcontrolador, assim sendo, pode se utilizar com micrcontroladores de pequena pinagem para acionar um grande numero de cargas.

Segue também os arquivos junto com um arquivo do proteus para testes.

Usar no Proteus 7.8 ou superior.


Fazer o download: [PIC] Múltiplas Saídas com o CD4094


Até o próximo post e não esqueçam de comentar…

[sections] [section title=”Código Fonte”] [codesyntax lang=”c”] /*
DATEK Tecnologia
Exemplo: Cascateando o CD4094[shift-register] Data: 08/01/2012

Compilador: MikroC PRO 5.4.0

Bibliotecas utilizadas:

*/
unsigned long imgSaidasBKP,imgSaidas;
unsigned char Tecla,Tecla_ant,cont;
//=== DECLARAÇÃO DE ALIASES DOS PINOS ==========================================
// CONTROLE DOS LEDS
sbit SHIFT_DATA at RC1_bit; // PINO DE DADOS
sbit SHIFT_CLK at RC0_bit; // PINO DE CLOCK
sbit SHIFT_STB at RC2_bit; // PINO DE STROBE

sbit SHIFT_DATA_Direction at TRISC1_bit; // PINO DE DADOS
sbit SHIFT_CLK_Direction at TRISC0_bit; // PINO DE CLOCK
sbit SHIFT_STB_Direction at TRISC2_bit; // PINO DE STROBE

//################## FUNÇÃO MAIN() #############################################
void main() {

// ROTINAS
//————————————–
// Desabilita todas as interrupções
//————————————–
INTCON = 0; // Desabilita GIE, PEIE, TMR0IE,INT0IE,RBIE
INTCON2 = 0xF5;
INTCON3 = 0xC0;
PIE1 = 0;
PIE2 = 0;
PIR1 = 0;
PIR2 = 0;
RBPU_bit = 0; // PULLUP INTERNO LIGADO

// CONFIGURAÇÃO DOS PORTS
SHIFT_DATA_Direction = 0; // PINO DE DADOS
SHIFT_CLK_Direction = 0; // PINO DE CLOCK
SHIFT_STB_Direction = 0; // PINO DE STROBE

while(1)
{
Tecla=~PORTB;
if((Tecla_ant!=Tecla))
{
switch(Tecla)
{
case 0x01:
imgSaidas<<=1;
imgSaidas|=1;
if(imgSaidas>0x00ffffff)
{
imgSaidas=0x00ffffff;
}
break;
case 0x02:
imgSaidas>>=1;
if(imgSaidas<=0)
{
imgSaidas=0;
}
break;
case 0x04:
imgSaidas=0;
break;
}
Tecla_ant = Tecla;

imgSaidasBKP = imgSaidas;
for(cont=0;cont<32;cont++)
{
SHIFT_DATA = !((imgSaidasBKP & 0x80000000)==0x80000000);
SHIFT_CLK = 1;
Delay_us(1000);
SHIFT_CLK = 0;
imgSaidasBKP<<=1;
Delay_us(1000);
}
SHIFT_STB = 0;
Delay_us(1000);
SHIFT_STB = 1;
}
}
}
[/codesyntax] [/section] [section title=”Esquema Elétrico”]

Esquema elétrico Múltiplas Saídas com CD4094
Esquema elétrico Múltiplas Saídas com CD4094
[/section] [/sections]
Obrigado e até o próximo post.

DATEK Tecnologia Eletrônica
[PIC] Múltiplas Saídas com o CD4094
Tags:             

Deixe uma resposta

%d blogueiros gostam disto: