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.
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.
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).
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.
Aplicaciones del multiplexor
- Gestiona hasta 8 LEDs o un sensor con tres pines de un microcontrolador
Fuentes
- https://fr.wikipedia.org/wiki/Multiplexeur
- http://www.ti.com/lit/ds/symlink/cd4051b.pdf
- https://www.aranacorp.com/fr/programmez-avec-arduino/
Encuentre otros tutoriales y ejemplos en el generador de código automático
Arquitecto de Código