fbpixel
Etiquetas: ,

El multiplexor es un circuito integrado formado por circuitos lógicos que permite concentrar varias señales en una misma salida (mutiplexación o mux) o conectar una entrada a una de sus N salidas (demultiplexación o demux). En este tutorial, veremos el uso del circuito integrado CD4051 que puede ser utilizado como multiplexor y demultiplexor de uno a ocho canales. Se puede usar para impulsar los LEDs o para recuperar el estado de varios sensores.

multiplexer-cd4051be Usando un multiplexor con Arduino

Hardware

  • Computadora
  • ArduinoUNO
  • Cable USB A macho a B macho
  • Multiplexor

Principio de funcionamiento

El multiplexor/demultiplexor es un componente electrónico que contiene un circuito lógico que permite la selección entre 8 canales. Si se activa el miltiplexor, el común (IN/OUT) se conecta directamente al canal seleccionado.

multiplexer-cd4051be-diagram Usando un multiplexor con Arduino
multiplexer-cd4051be-logic-table Usando un multiplexor con Arduino

Esquema

El multiplexor requiere 3 pines de salida de un microcontrolador. Más un canal para activar o desactivar el circuito integrado. Es posible conectar esta señal a tierra si el multiplexor está siempre conectado a un canal.

  • Tierra del circuito integrado del VSS
  • Clavija de energía de Vcc. Normalmente se conecta a 5V
  • Señales de selección de canal A, B, C
  • Los canales de multiplexación del CH0-CH7
  • COM Entrada/salida común. Entrada/salida común. Clavija a la que llega la señal multiplexada o la señal a ser desmultiplexada.
  • INH Inhibit, active LOW. Broche d’activation du ciruit intégré.

Para aumentar aún más el número de E/S, es posible conectar otro multiplexor en paralelo (son posibles varias configuraciones).

multiplexer-cd4051be-pinout Usando un multiplexor con Arduino
arduino-multiplexer-cd4051-led_bb Usando un multiplexor con Arduino
arduino-multiplexer-cd4051-x2_bb Usando un multiplexor con Arduino

Código

Para seleccionar los canales del multiplexor, necesitamos activar el circuito integrado enviando un estado BAJO a la clavija INH y luego enviar un estado alto o bajo a los canales A, B y C siguiendo la tabla lógica del 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

Il est possible de multiplier le nombre d’entrées et de sorties en utilisant ce simple composant électronique. Vous pouvez imaginer d’autres assemblages et codes qui vous permettent de développer vos propres fonctionnalités. Notez que vous ne pouvez gérer qu’un seul canal à la fois. Vous devez donc veiller à ce que le composant corresponde à vos besoins.

arduino-multiplexer-cd4051-result Usando un multiplexor con Arduino

Aplicaciones del multiplexor

  • Gestiona hasta 8 LEDs o un sensor con tres pines de un microcontrolador

Fuentes

Encuentre otros tutoriales y ejemplos en el generador de código automático
Arquitecto de Código