miércoles, 22 de julio de 2015

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;
case 7:
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