Multiplexor y Demultiplexor
Un multiplexor o demultiplexor
le permite ampliar la de entrada y salidas en su placa Arduino. El 4051 es de 8
canales analógicos ya sea multiplexor o demultiplexor.
Si utiliza el 4051 como un
multiplexor, se puede elegir entre 8 entradas diferentes y seleccionar que solo
una se lea en el momento.
Si utiliza el 4051 como un
demultiplexor se puede elegir una entreda y tener 8 salidas en las que se desea escribir en el momento.
Multiplexor analógico / demultiplexor - 4051
Un multiplexor o demultiplexor le permite ampliar la de entrada y salidas en su placa Arduino. El 4051 es de8 canales analógicos multiplexor / demultiplexor.
Ø Si
utiliza el 4051 como un multiplexor: Se puede elegir entre 8 entradas
diferentes y seleccionar sólo uno desea leer en el momento.
Ø Si
utiliza el 4051 como un demultiplexor se puede escribir pulsos en una sola entrada y tendra 8 salidas para leer.
Circuito integrado, el 4051 es capaz de trabajar con valores
analógicos; en el caso de la Arduino, que son capaces de utilizar las entradas
analógicas con una tensión entre 0-5V y encaminarlos a un Analog-In Pin en tu
Arduino.
Para seleccionar el Pin en el que vamos a escribir,
tenemos que usar los tres Seleccionar Pins (S0, S1 y S2). Cada uno de estos
pines tienen que ser conectado a un pasador digital en el Arduino. Cada pin
está representando a un número (S0 = 1; S1 = 2; S2 = 4) y si establecemos una
de estas Seleccione pines a HIGH, el número del pin está representando será
transmitida al 4051. Por ejemplo:
Ø Si S0
y S1 son HIGH y S2 es y3 pin LOW se selecciona (1 + 2 + 0 = 3).
Ø Si S0
y S2 es HIGH y se selecciona S1 pin LOW y5 (1 + 0 + 4 = 5).
No es posible leer o escribir más de un pin en el 4051, al
mismo tiempo, porque sólo se puede seleccionar un pin a la vez. Pero usted
puede leer y escribir a los pines bastante rápido. No hay retraso necesario
entre la selección y leer o escribir el pasador.
Z ----- de entrada común /
salida (conectado a Arduino de entrada / salida)
E ----- entrada de
habilitación (LOW activo) (conectado a tierra (GND))
Vee --- tensión de
alimentación negativa (conectado a tierra (GND))
GND --- tierra (0 V)
S0-S2 - entradas de selección
(conectado a tres arduino DIGITALOUT Pins)
y0-y7 - entradas / salidas
independientes
Vcc --- tensión de
alimentación positiva (5v)
Materiales a utilizar:
Ø 2
Circuitos integrados (HCF4051 Multiplexor/Demultiplexor)
Ø 16
led´s
Ø 16
Resistencias de 330 Ω
Ø 1
Protoboard
Ø 1
Arduino
Cuando se necesita multiplexar más de 8 entradas se pueden
utilizar dos IC 4051
Por medio de la entrada ENABLE (pin 6 del 4051)
Simultáneamente por medio de las entradas análogas.
En el diagrama se ven los dos multiplexores 4051 conectados
a los pines digitales 5,6 y 7 que son los que controlan la cuenta en binario
del 0 hasta el 15, cuando la cuenta
Alcanza el 7, el enable ( naranja ) del primer Mux se pone
en estado HIGH y el enable del multiplexor 2 (morado) se pone en estado LOW por
que trabajan con lógica inversa.
En el diagrama la entrada ( pin 3) de ambos Multiplexores está
conectada a 5 volts para que multiplexe
El encendido de los 16 leds, si se necesita multiplexar 16
sensores analogos se conectan esos pines a una entrada análoga de arduino y
listo, al armar el circuito cuidado con las salidas de los multiplexores son 4
de cada lado y no están en orden ( ver alambres gris y cafe)
A continuación el sketch para el control de los 2
multiplexores 4051:
int s0 = 5; // primer
digito binario, verde, pin 11 ambos multiplexores
int s1 = 6; //
segundo digito binario, amarillo, pin 10 ambos multiplexores
int s2 = 7; // tercer
digito binario, azul, pin 9 ambos multiplexores
int m0 =
2; // enable mux1, pin 6 multiplexor 1
int m1 =
3; // enable mux2, pata 6 multiplexor 2
int rowTTL = 0;
int binTTL [] = {
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};//
digitos de cuenta
int inPin = 0;
int pinled = 8; // pin de salida cuando la lectura analoga
este por debajo
//de un rango este pin se pone en HIGH
int result = 0; //declaracion de variable para lectura
analoga
void
setup(){
pinMode(s0,
OUTPUT);
pinMode(s1,
OUTPUT);
pinMode(s2,
OUTPUT);
pinMode(m0,
OUTPUT);
pinMode(m1,
OUTPUT);
pinMode(pinled,
OUTPUT);
//
pinMode(inPin, INPUT);
Serial.begin(9600);
}
void
loop(){
for(int
i=0; i<16; i++){
result = 0;
rowTTL =
binTTL[i];
sendABCTTL(rowTTL);
result = analogRead(inPin);
if(result > 600) { // parte lógica para manipular
motores, comentar cuando calibress
Serial.println(0);
digitalWrite
(pinled, HIGH);
}
else {
Serial.println(1);
// contact!
digitalWrite
(pinled, LOW);
}
delay(300);
Serial.print(binTTL[rowTTL]);
Serial.print(” “);
// Serial.println( result ); // instruccion para calibrar
}
}
void
sendABCTTL(int rowTTL){
switch
(rowTTL >> 3) {
case 0:
digitalWrite(m0,LOW);
// this enables mux 1 HIGH
digitalWrite(m1,HIGH);
break;
case 1:
digitalWrite(m0,HIGH);
// this enables mux 2
digitalWrite(m1,LOW);
break;
}
switch(rowTTL & 7)
//transformacion de cuenta en digitos binarios
{
case 0:
digitalWrite(s0,
LOW);
digitalWrite(s1,
LOW);
digitalWrite(s2,
LOW);
break;
case 1:
digitalWrite(s0,
HIGH);
digitalWrite(s1,
LOW);
digitalWrite(s2,
LOW);
break;
case 2:
digitalWrite(s0,
LOW);
digitalWrite(s1,
HIGH);
digitalWrite(s2,
LOW);
break;
case 3:
digitalWrite(s0,
HIGH);
digitalWrite(s1,
HIGH);
digitalWrite(s2,
LOW);
break;
case 4:
digitalWrite(s0,
LOW);
digitalWrite(s1,
LOW);
digitalWrite(s2,
HIGH);
break;
case 5:
digitalWrite(s0,
HIGH);
digitalWrite(s1,
LOW);
digitalWrite(s2,
HIGH);
break;
case 6:
digitalWrite(s0,
LOW);
digitalWrite(s1,
HIGH);
digitalWrite(s2,
HIGH);
break;
digitalWrite(s0,
HIGH);
digitalWrite(s1,
HIGH);
digitalWrite(s2,
HIGH);
break;
}
}
Conclusion
Conclusion
Mi conclusión de este componente es que es muy útil porque
ya en dado caso hay veces que nos faltan salidas en nuestro Arduino y con este
multiplexor y demultiplexor puedes con una sola salida puedes sacar 8 salidas más con el
circuito integrado que utilizamos hay muchos más circuitos integrados con más salidas que se usan según
los requerimientos del proyecto que vallas construir es un poco difícil solo
tienes que poner atención en el diagrama de salidas, entras y saber que
compuertas lógicas utiliza.
No hay comentarios.:
Publicar un comentario