fbpixel
Etiquetas: ,

O multiplexador é um circuito integrado composto por circuitos lógicos que permitem concentrar vários sinais na mesma saída (mutiplexagem ou mux) ou ligar uma entrada em uma de suas N saídas (demultiplexagem ou demux). Neste tutorial, veremos o funcionamento do circuito integrado IC CD4051, que pode ser utilizado como multiplexador e demultiplexador de um a oito canais. Com ele, é possível controlar LEDs ou obter o estado de vários sensores.

multiplexer-cd4051be Usar um multiplexador com o Arduino

Material

  • Computador
  • Arduino UNO
  • Cabo USB A Macho/B Macho
  • Multiplexador

Princípio de funcionamento

O multiplexador/demultiplexador é um componente eletrônico contendo um circuito lógico que permite selecionar entre 8 canais. Se o multiplexador for ativado, o common (IN/OUT) liga-se diretamente ao canal selecionado.

multiplexer-cd4051be-diagram Usar um multiplexador com o Arduino
multiplexer-cd4051be-logic-table Usar um multiplexador com o Arduino

Esquema

O multiplexador requer 3 pinos de saída de um microcontrolador, e mais um canal para ativar ou desativar o circuito integrado. Este sinal pode ser ligado à terra se o multiplexador estiver sempre conectado a um canal.

  • VSS terra do circuito integrado
  • Vcc pino de alimentação. Normalmente ligado em 5V
  • A,B,C Sinais de seleção de canais
  • CH0-CH7 canais de multiplexagem
  • COM common input/output. Common input/output. Pino no qual chega o sinal multiplexado ou o sinal a ser demultiplexado.
  • INH Inhibit, ativa LOW. Pino de ativação do circuito integrado.

Para aumentar ainda mais o número de entradas e saídas, é possível ligar outro multiplexador em paralelo (há várias montagens possíveis).

multiplexer-cd4051be-pinout Usar um multiplexador com o Arduino
arduino-multiplexer-cd4051-led_bb Usar um multiplexador com o Arduino
arduino-multiplexer-cd4051-x2_bb Usar um multiplexador com o Arduino

Código

Para selecionar os canais do multiplexador, temos de ativar o circuito integrado enviando um estado LOW para o pino INH e depois enviar um estado alto ou baixo para os canais A, B e C, seguindo a tabela lógica do componente.

//Constants
#define number_of_mux 1
#define numOfMuxPins number_of_mux * 8
#define enPin 2
#define channelA 4
#define channelB 7
#define channelC 8

//Parameters
const int comPin  = 3;

void setup(){
//Init Serial USB
Serial.begin(9600);
Serial.println(F("Initialize System"));
//Init CD4051B
  pinMode(channelA, OUTPUT);
  pinMode(channelB, OUTPUT); 
  pinMode(channelC, OUTPUT); 
  pinMode(enPin, OUTPUT);
  digitalWrite(channelA, LOW);
  digitalWrite(channelB, LOW);
  digitalWrite(channelC, LOW);
  digitalWrite(enPin, LOW);
}

void loop(){
MuxLED();
}

void selectChannel(int chnl){/* function selectChannel */ 
//// Select channel of the multiplexer 
  int A = bitRead(chnl,0); //Take first bit from binary value of i channel.
  int B = bitRead(chnl,1); //Take second bit from binary value of i channel.
  int C = bitRead(chnl,2); //Take third bit from value of i channel.
  digitalWrite(channelA, A);
  digitalWrite(channelB, B);
  digitalWrite(channelC, C);
  
  Serial.print(F("channel "));Serial.print(chnl);Serial.print(F(" : "));
  Serial.print(C);
  Serial.print(F(","));
  Serial.print(B);
  Serial.print(F(","));
  Serial.print(A);
  Serial.println();
}

void MuxLED(){/* function MuxLED */ 
//// blink leds 
for(int i = 0; i <  numOfMuxPins; i++){
    selectChannel(i);
    Serial.print(F("LED "));Serial.print(i);Serial.println(F(" HIGH"));
    analogWrite(comPin,200);
    delay(200);
    Serial.print(F("LED "));Serial.print(i);Serial.println(F(" LOW"));
    analogWrite(comPin,0);
      }
}

Resultado

É possível multiplicar o número de entradas e saídas com este simples componente eletrônico. Experimente outras montagens e códigos para desenvolver as suas próprias funcionalidades. Tenha em mente que só se pode controlar um canal de cada vez, então certifique-se de que o componente corresponde à sua necessidade.

arduino-multiplexer-cd4051-result Usar um multiplexador com o Arduino

Aplicações

  • Gerir até 8 LEDS ou sensores usando 3 pinos de um microcontrolador

Fontes

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie