-
Notifications
You must be signed in to change notification settings - Fork 83
VIDEO 14: Mezclando circuitos: Multiplexor
Haz click en la imagen para ver el vídeo en Youtube
Los multiplexores nos permite combinar circuitos que usan las mismas salidas. Veremos el funcionamiento de dos tipos: los multiplexores 2:1 y los 4:1
Academia-Jedi-HW-14.zip: Colección para este tutorial. Descargar e instalar
- Combinando circuitos
- Multiplexor 2 a 1
- Multiplexor 4 a 1
- Ejercicios propuestos (14 Bitpoints)
- Ejercicios entregados
- Autor
- Licencia
- Enlaces
- Preguntas frecuentes
Ya conocemos una forma de combinar circuitos: la superposición. Cuando tenemos dos circuitos independientes, que funcionan correctamente de forma separada, los podemos meter en la misma FPGA y funcionarán los dos a la vez, aprovechando el paralelismo que hay en el hardware
Pero... ¿Y si los circuitos NO son independientes y acceden por ejemplo al mismo LED? ¿Cómo los combinamos?
Por separado funcionan correctamente, pero como acceden al mismo LED0 no podemos aplicar la superposición directamente
Una forma de solucionarlo es mediante multiplexación. El acceso al LED0 no lo pueden hacer a la vez, sino que lo tendrán que hacer por turnos. El LED0 estará disponible durante un tiempo para el circuito 1 y otro tiempo para el circuito 2. Mediante una entrada especial, llamada entrada de selección, se indicará cuál de los dos circuitos es el que puede acceder al LED0
Mientras el bit de selección esté a 0, será el circuito 1 el que enviará bits al LED0. Cuando el bit de selección se pone a 1, es el circuito 2 el que se conecta. En esta animación se muestra la idea
Este tipo de combinación de circuitos se llama multiplexación, y el elemento que permite hacerlo se llama Multiplexor
En general los multiplexores tienen N canales de entrada, además de las entradas de selección, y una salida. Empezaremos por el multiplexor más sencillo: Multiplexor de 2 a 1
Un multiplexor de 2 a 1 tiene 2 canales de entrada, una entrada de selección y una salida
Su funcionamiento está definido por esta tabla de verdad simplificada. Las Xs representan cualquier bit, que puede estar a 1 ó 0. Cuando por la entrada de selección hay un 0, por la salida sale el canal 0 (los bits verdes). Cuando la entrada de selección es 1, lo que sale son los bits del canal 1 (grises)
En este primer ejemplo tenemos dos corazones, de 1Hz y 4Hz, asociados a los canales 0 y 1 respectivamente. Mediante un interruptor externo seleccionaremos manualmente qué canal accede al LED externo, haciéndolo parpadear. El resultado será un LED que parpadea a dos velocidades, según la posición del interruptor
Este es el montaje físico
Para crear el circuito en Icestudio nos aseguramos de que tenemos la colección Academia-Jedi-HW-14.zip instalada y nos vamos al menú Varios/Mux. Elegimos el componente Mux-2-1
Y nos aparece el Multiplexor de 2 a 1. Esta es la pinta que tiene en icestudio
En la izquierda están las tres entradas, denominadas i1 (canal1), i0 (canal0) y sel (selección). La salida, como en todos los componentes de icestudio, está a la derecha
También podemos elegir el otro modelo que hay: mux-2-1-flip. Es exactamente igual, pero con las entradas cambiadas de orden. El canal 0 está arriba y el canal 0 abajo. Pero por lo demás son exactamente iguales:
Creamos este circuito:
Lo cargamos en la placa para probarlo. En esta animación vemos su funcionamiento
Crearemos una sirena usando un único zumbador. Ahora el multiplexor 2:1 se conmutará automáticamente para seleccionar qué tono suena. Este es el montaje
En las salidas D13 y D12 se han conectado 2 LEDs externos para generar una sirena luminosa, y en el D0 está conectado el zumbador
Este es el circuito en Icestudio. Por el canal 0 del multiplexor se introduce la nota alta, y por el canal 1 la nota baja (daría igual si se hace al revés). La selección del canal se hace automáticamente, utilizando un corazón de 1Hz. De esta forma durante medio segundo suena la nota baja y durante el otro medio la alta
Cargamos el circuito y lo probamos:
Escucharemos la sirena y veremos cómo se alternan los LEDs externos
Los multiplexores 4 a 1 tienen 4 canales de entrada y 2 bits de selección. El funcionamiento es el mismo que el de los multiplexores 2:1, pero ahora se selecciona entre los cuatro canales
La tabla de verdad simplificada se muestra a continuación. El valor de los dos bits de selección determinan cuál de los canales es el que se saca por la salida. Por cada uno de estos canales llegan bits genéricos, que pueden estar a 1 ó 0 (por eso lo representamos con una X)
El funcionamiento se muestra gráficamente en esta animación
Se ha representado un ejemplo en el que se van seleccionando los 4 canales secuencialmente, sin embargo se puede hacer en el orden que se quiera y asignar el tiempo que se quiera a cada canal
Vamos a utilizar un multiplexor 4 a 1 para seleccionar el estado que queremos para un LED externo: apagado, encendido, parpadeo lento y parpadeo rápido. Este modo se configura con dos interruptores externos. Este es el montaje:
El multiplexor 4:1 lo encontramos en el mismo menú que el Mux 2:1: Varios/Mux
Lo colocamos. Esta es la pinta que tiene:
Los 4 entradas superiores se corresponden con los canales 3,2,1 y 0. Las dos inferiores son los dos bits de selección. También tenemos la versión mux-4-1-flip, que es igual pero con las entradas ordenadas en orden inverso
Conectamos las dos entradas de selección a los pulsadores externos, y la salida al LED externo. Por los canales de entrada conectamos un bit a 0, otro a 1, un corazón a 1Hz y otro a 4Hz. Esto se corresponde con los 4 modos de funcionamiento que queremos para el LED. El circuito es el siguiente:
Inicialmente, cuando los dos interruptores están a cero, el LED está apagado. Al activar el interruptor de la derecha, el LED se enciende. Si activamos también el de la izquierda, el LED parpadea rápido. Al desconectar el de la derecha el LED parpadea lento y finalmente al desconectar el de la izquierda, se apaga. Cargamos el circuito y vemos su funcionamiento
Como último ejemplo usaremos un multiplexor 4:1 para tocas las notas DO-RE-MI (y un silencio) consecutivamente, con un zumbador. Usaremos dos LEDs externos para mostrar el canal que está seleccionado. El montaje es el siguiente:
Por los canales 0,1,2 y 3 del multiplexor introduciremos, respectivamente, un cero (silencio), y las notas DO, RE y MI. Por su salida conectamos el zumbador. La selección se hace automáticamente mediante dos corazones de 1 y 2Hz, lo que le asigna un tiempo de 250ms a cada nota (ahora veremos por qué). Este es el circuito:
El corazón de 1Hz está conectado a la entrada de selección s1. Esto significa que cada medio segundo (500ms) habrá un cambio en esa entrada. El corazón de 2Hz se conecta a la entrada s0, y en este caso habrá un cambio cada 250ms. Esa información la representamos en el siguiente dibujo
Inicialmente los dos corazones están a 0, por lo que s1 y s0 valen cero, y en el multiplexor se selecciona el canal 0. Al cabo de 250ms, cambia s0 a 1, pero s1 todavía sigue en 0, por lo que se selecciona el canal 1. Al transcurrir otros 250ms, s0 cambia a 0 nuevamente, pero ahora s1 se pone a 1, seleccionándose el canal 2. Y por último, al pasar los siguientes 250ms, s0 se pone nuevamente a 1 y s1 continúa con 1. El canal 3 se selecciona. Todo este ciclo ha durado 1 segundo, y se vuelve a repetir
Cargamos el circuito en la placa y lo probamos
Ver los detalles de los ejercicios y las entregas en el menú Archivos/Ejemplos/2-Ejercicios de la colección de este tutorial
Resumen:
-
Ejercicio 1 (Total 3 Bitpoints): Limpiaparabrisas a dos velocidades. Usar un servo para simular un limpiaparabrisas de un coche, que se mueva a dos velocidades: lenta y rápida, determinadas por un interruptor externo. En el modo lento el servo permanecerá 2 segundos en cada posición, y en el modo rápido medio segundo (Freq. de 1Hz)
-
Ejercicio 2 (Total 3 Bitpoints): Sirena configurable. Sirena que funciona en dos modos, según la posición de un interruptor externo, usando un único zumbador. Además, tiene un pulsador externo, que al apretarlo debe sonar la sirena, y al soltarlo se apaga. En el modo 1 se emiten alternativamente tonos de 1Khz y 2Khz, cada uno durante medio segundo. En el modo 2 se emiten alternativamente las notas DO y Mi, con duraciones de 250ms cada una.
-
Ejercicio 3 (Total 5 Bitpoints): Franky en modo automático y manual. Este es un ejercicio de COMPLEJIDAD MEDIA. Hay que entender bien los detalles del enunciado para implementarlo, que se encuentran en los ejercicios de esta colección. Aquí se puede ver un vídeo de Franky funcionando en los dos modos, automático y manual:
- Ejercicio 4 (3 Bitpoints). Ejercicio Libre. Premiar la creatividad. Entregar por redes sociales o github: Pantallazos, enlaces, vídeos, etc...
- Vídeo en Youtube:
- Vídeo en Youtube:
- Vídeo en Youtube:
- Vídeo en Youtube:
- Vídeo en Youtube:
- Vídeo en Youtube:
- Vídeo en Youtube:
- Vídeo en Youtube:
- Vídeo en Youtube:
- Juan González-Gómez (Obijuan)
- Repositorio con las colecciones de la Academia Jedi de Hardware
- BricoGeek. Tienda Friki donde comprar componentes electrónicos
- Repositorio de la Icezum Alhambra
- Documentación de la Icezum Alhambra: (PNG)(SVG)(PDF)
- Icestudio
- Monedas Bit imprimibles
- Printbot Beetle
- Ultimate Gripper
- Pinza paralela
- Robot Educativo Zowi
- Qué es PWM y para qué sirve. Entrada en el bloq de Rincón Ingenieril
- Repositorio de PCBPrints
- PCBPrint Alhambra-Button
- PCBPrint Alhambra Switch
- Soporte Icezum Alhambra
- Soporte para Servo Futaba 3003
- Puntero para servo Futaba 3003
- Clavijas de amarre para servos
- Tablero indicador binario para servo
- Fijador de esquinas
- Fijador de cables
- Fijador de placas
- Octopus passive buzzer, de Elecfreak
- Kit de sensores para Arduino. BricoGeek. Dentro del kit con 37 módulos, hay uno con zumbador
- ¿Dónde puedo conseguir la placa Icezum Alhambra?
Pueden conseguir una desde Alhambrabits
-
¿Dónde puedo comprar material electrónico?. Hay muchos sitios. Uno muy bueno es Bricogeek
-
¿Cómo aprendo a manejar github?
Hay mucha información en internet. En su momento hice este Tutorial: Github y FreeCAD para enseñar a manejarlo. Los ejemplos están hechos con ficheros de FreeCAD, sin embargo, lo que se enseña es genérico. También vale para las entregas de los ejercicios del tutorial de Electrónica digital para makers
- Los pulsadores de la Icezum Alhambra no me funcionan
Eso es debido a que se han metido restos de flux y no hacen buen contacto. En el apartado ¡No me funcionan los pulsadores! del Tutorial 9 se indica cómo solucionarlo fácilmente
- ¿Dónde puedo encontrar más información sobre las señales PWM?
Echa un vistazo a este post de Rincón Ingenieril sobre el tema
- He conectado un pulsador externo pero no me funciona. He hecho un circuito para conectar el botón con un led, y al apretar se enciende el LED, pero luego no se apaga. NO funciona bien
Los pulsadores externos que se conecten a los pines de 5v de la Alhambra (D0 - D13) tiene que llevar una resistencia de pull-up o pull-down con valores entre 460 ohm y 2K. Típicamente usamos 1K. Esto hace que los conversores de nivel se configuren como entradas y que el pulsador funcione correctamente. Puedes encontrar más información En este enlace
- ¿Donde puedo conseguir el switch que habéis usado en la PCBprint Alhambra switch? Es el mismo switch que se ha usado en la propio Icezum Alhambra (aunque la versión sin acodar). Los fabricantes los puedes encontrar en la lista de componentes de la propia icezum Alhambra. La referencia del componente en concreto es esta: Slide Switch, SPDT, On-On, Through Hole, WS-SLTV Series, 500 mA. Yo te recomiendo que uses la PCBprint de Diego Lale, que usa interruptores que puedes conseguir en Bricogeek: Mini-interruptor de 3 pines
- Electrónica digital para todos
- Poniendo en marcha Icestudio
- La Icezum Alhambra y otras placas con FPGAs libres
- Mi primer circuito. Encendiendo un led
- Colecciones en Icestudio
- Bombeando bits
- Manipulando bits: Puerta NOT
- Pines y LEDs externos
- Pulsadores y entradas
- ServoBit
- Puertas AND. Habilitando circuitos
- Interruptores y pulsadores externos
- Periféricos: Leds externos y zumbadores
- Mezclando circuitos: Multiplexor
- Servos de rotación continua
- Sensores de Infrarrojos
- Puertas Lógicas: OR
- Bloques con parámetros
- Circuitos combinacionales
- Buses y Números
- Mi primer bloque
- Circuitos combinacionales con varias salidas
- Mi primera colección
- Display de 7 segmentos
- Biestables y notificaciones
- Tiempo, tics y temporizadores
- Contando eventos
- Biestables de datos y cambio
- Registros y comparadores
- Puerto serie
- Despedida de la Temporada I