
Multiplexor analógico 74hc4067
- Charly
- 18 Nov 2015
- Sin categoría
- 11
Muy a menudo nos preguntan qué podemos hacer cuando nos quedamos sin puertas digitales disponibles con nuestro Arduino, o como leer más de las 6 puertas analógicas de un UNO o 16 de un MEGA.
Y parece que existe la sensación extendida de que esto es un problema de imposible solución, pero nada más alejado de la realidad.
En esta ocasión os hemos traído una forma de resolver este tipo de problemas mediante un sencillo integrado de multiplexor / demultiplexor 74hc4067 que os liberará de estas restricciones.
Aquí os dejo el link:
También así, aprovechamos para presentar la idea de lo que es un multiplexor y de cómo podemos usarla para seleccionar una entrada externa de 16 y dirigirla a una única puerta de nuestro Arduino, ampliando enormemente sus posibilidades.
Este es un integrado que nos resolverá la papeleta en multitud de ocasiones y conviene tenerlo en vuestro arsenal electrónico.
Espero que os resulte útil.

Buenas.
Justo hoy he probado el 74HC4067 con el código del artículo relacionado.
Creo que es un buen ejemplo para poder usar los puertos, ¿qué opinas?
void setup()
{
// Seleccionamos el estado de los pines
// del puerto B
DDRB = B00101111;
Serial.begin(9600);
}
void loop()
{
// Selecciona la puerta a pasar (15)
PORTB = B00001111;
// Ya hemos selccionado la puerta: print valores
Serial.print(PORTB, BIN);
Serial.print(‘\t’) ;
Serial.println(analogRead(A1)) ;
delay (250);
}
Muchas gracias por todos los tutoriales, son realmente buenos.
Un placer Roberto
Hola Admin.
Con vistas a intentar domotizar la casa (como lo de las estufas controladas con relés) se me ocurrió que sería muy chulo activar cosas en casa con comandos de voz (sin móvil). He visto que existen shields sintetizadores de voz (para que responda a tus ordenes y te confirme si entiende o no los comandos), pero no he encontrado ejemplos con el shield que reconoce tu voz. ¿Podéis hablar de ellos algún día?, muchas gracias.
Hola Xivo, se me habia olvidado que me envió un ejemplo de esto Suso y lo debo tener por el correo. A ver si lo localizo y hacemos una seison con el tema que es de lo mas interesante
Un saludo
Hola Admin. Creo que Xivo se refiere al módulo EasyVR3, que también lo hay en shield para Arduino, y que acepta varios idiomas, entre ellos el español.
Saludos.
Tiene buena pinta este shield EasyVR3, pero en principio aquel mensaje que me enviaste usaba un telefono android para hacer algo similar , no Jesus?
Exacto, me refería al EasyVR3 y al SOMO 14D. Los vi en la página de bricogeeck: http://blog.bricogeek.com/noticias/tutoriales/tutorial-arduino-audio-y-reconocimiento-de-voz-parte-i-somo-14d/
Pero nunca terminaron el ejemplo.
Muchas gracias.
Correcto, Admin. Te indicaba este módulo porque Xivo lo quería sin tlf móvil. Conentar que la librería para el EasyVR trae dos ejemplos, y me pareció ver que solo debes cambiar “english” en una instrucción por el idioma que deseas. Aunque hay que probarlo.
Gracias Admin. Buscaré sobre ésto.
Saludos.
Hola Admin. No conocía este chip. En el tutorial, lees una de las entradas, la 15 y la envías al pin A1. ¿Cómo sería para leer todas las entradas casi al mismo tiempo, y poder mostrarlas a la vez? Me refiero a hacer lo mismo que se hace con el 74HC595, que activamos secuencialmente todas sus salidas y visualmente nos parece que están todas encendidas al mismo tiempo. No sé si me he explicado bien.
Saludos y gracias.
Hola Jesus,
Podriamos simular que vamos leyendo todas las entradas ala vez con algo asi:
unsigned int S0, S1, S2, S3, k, p ;
digitalWrite( Enable , LOW ); // Active Low
for (int k= 0 ; k<16 ; k++) // Selecciona la puerta a leer
{
S0 = k & B00000001 ; digitalWrite ( 8 , S0) ; //Solo quiero el ultimo bit
S1 = ( k >> 1 ) & B00000001 ; digitalWrite ( 9 , S1) ;
S2 = ( k >> 1 ) & B00000001 ; digitalWrite (10 , S2) ;
S3 = ( k >> 1 ) & B00000001 ; digitalWrite (11 , S3) ;
Serial.print (k); Serial.print(‘\t’) ;
Serial.println(analogRead(A1)) ;
}
Serial.println(“…………………….”);
Pero no es de verdad, sino que vamos leyendo cada entrada en secuencia. Pero si lo hacemos los suficientemente rapido parecera que todas las salidas se leen o muestran a la vez, pero el shift register mantiene la tension digital activa simultaneamente en todas las salidas y en el caso de este chip la tension solo es activa en 1 /16 partes del tiempo.
Si por alguna razon necesitamos que estas salidas sean estables hay unos circuitos que no he usado nunca, llamados Sample & Hold que se usan para cosas asi, reciben la señal analogica y la enclavan aunque la entrada se vaya, y en su version mas simple podria ser un condensador y resistencia