El multiplexor, el demultiplexor y el primo que te cae mal
Hey! Qué tal por el mundo? Junio te está tratando bien? Llega el verano, las rebajas, la extra… digo yo que si no lo está haciendo ya lo hará pronto….
También en Junio empieza la vorágine de eventos a los que asistir con esto del verano. Y a veces tienes que partirte en dos para ir al concierto que te gustaba y a la boda del primo que nunca te cayó bien… pues de eso va hoy la cosa… de dividirse, de multiplicarse…
Y es que en la electrónica hay unos pequeños chips llamados multiplexores y demultiplexores que pueden ayudarte a estar en más de un sitio a la vez…
Multiplexando el mundo entero
Cuando a un pc le mandamos muchas órdenes, el pc no las hace todas a la vez. Aunque nos lo parezca… no las hace. Lo que realmente hace es atender durante muy poco tiempo a cada uno de los procesos. Primero está con un proceso una milésima de segundo, luego pasa al segundo proceso y así hasta que ha trabajado un poco con cada uno de ellos y vuelve a empezar desde el inicio.
Esto, al ser tan rápido, nos da la sensación que las cosas se hacen paralelamente, pero no es así. Pues eso es lo que se llama multiplexar, multiplicarse por muchos cuando en realidad solo eres uno. Una imagen de un multiplexor (De Wojciech mula (original); Skrzeczu (versión vectorizada) con una licencia CC-BY-SA-3.0 en Wikimedia Commons) sería algo así:
Los multiplexores pertenecen a la electrónica digital, por lo que vienen regidos por señales de 5 Voltios y 0 Voltios. Como puedes ver en la imagen, tienes una serie de cables a la izquierda (x). Esto son las entradas, los procesos a atender. A la derecha solamente hay un cable (y), el del procesador en nuestro ejemplo.
Lo que hace el multiplexor es ir cambiando la señal de entrada según se necesite. Entonces en cada momento te permite leer una señal. Por ejemplo, si tienes 20 sensores y quieres saber en cada momento qué valor tienen no puedes leerlos todos a la vez ya que no te caben en Arduino. Pero sí te caben unos cuantos cables que vayan al multiplexor. De esta manera, tienes los 20 sensores conectados al multiplexor y en cada momento sale un cable a Arduino que mide el valor de cada uno de los sensores.
Así, puedes leer rápidamente los 20 valores y hacer creer al usuario final que lo estás haciendo en tiempo real, cuando seguramente tengas un retraso de unos 20ms…
Las direcciones de los multiplexores
Cuando te he dicho que necesitarías unos cuantos cables es porque no solo hay un cable que es el que llega a Arduino con la señal que queremos, sino que hay algunos más que indican el cable a leer. En el caso de leer 8 señales tendríamos 3 cables que corresponderían con la letra a de la imagen anterior.
Sé que suena raro que en 3 cables podamos elegir el cable de entrada que necesitamos pero es así. Por estos cables se manda la dirección al multiplexor. Esa dirección es un número del 0 al 7 (en nuestro ejemplo) en binario. Entonces un cable estará a 0 y otro a 1 o cosas así. Por ejemplo, si el primero es 0, el segundo 1 y el tercero 0 tenemos que se activará el cable número 2 (que es el tercero si tenemos en cuenta el número 0).
De esta manera, Arduino va enviando unos y ceros y el multiplexor va detectando a quién tiene que darle paso. Se puede programar un bucle que vaya variando el número binario automáticamente para que se recorran todos los canales y así poder ir mirando el valor de todos los sensores fácilmente y casi en tiempo real.
En cuanto a la S que puedes ver en la imagen anterior, es un selector. Para empezar a utilizar el multiplexor hay que enviarle una señal de 5 Voltios de que avise de que vamos a empezar a utilizarlo. Así no pasan cosas extrañas al cambiar la dirección cuando no queríamos, o simplemente para cuando no queremos leer nada más.
Información básica sobre Proteción de datos
Responsable ➥ Sergio Luján Cuenca
Finalidad ➥ Gestionar el envío de correos electrónicos con artículos, noticias y publicidad. Todo relacionado con los temas de rufianenlared.com
Legitimación ➥ Consentimiento del interesado
Destinatarios ➥ Estos datos se comunicarán a MailRelay para gestionar el envío de los correos electrónicos
Derechos ➥ Acceder, rectificar y suprimir los datos, así como otros derechos, como se explica en la política de privacidad
Plazo de conservación de los datos ➥ Hasta que se solicite la supresión por parte del interesado
Información adicional ➥ Puedes encontrarla en la política de privacidad y el aviso legal
El hermano antagónico: el demultiplexor
Luego están los demultiplexores… Estos granujas tienen una forma tal que así (Imagen de Wojciech mula (original); Skrzeczu (versión vectorizada) con una licencia CC-BY-SA-3.0 en Wikimedia Commons):
Si te fijas, es la situación inversa. Tenemos una entrada y múltiples salidas. ¿Para qué sirve esto? Tienes una señal de, por ejemplo, un motor. Con esa señal lo enciendes y lo apagas. Pero tienes varios motores. Lo que haces es utilizar un demultiplexor (demux para los más modernos).
Así puedes enviar la señal de encendido o apagado cuando quieres que el motor se encienda o se apague y enviando la dirección al demultiplexor puedes elegir cuál es el motor que se encenderá o se apagará. Fácil, ¿eh?
Al final es siempre que quieras repartir una señal por distintos componentes utilizarás un demultiplexor. Cuando son muchas señales que quieres ver tú en tu propio sistema, entonces multiplexarás.
Qué mareo… y aún tienes que ir a la boda del primo ese que tanto odias…
Multiplexar, demultiplexar… cuando tengas que hacer muchas tareas dí que vas a multiplexarte, que queda más cool. No sé de dónde salen estos vocablos pero molan para decirlos con tus colegas una noche así piripis, seguro que piensan que los estás insultando…
Bueno, a lo que voy, ya sabes que puedes multiplicar las salidas de tu Arduino y manejar o leer más cosas que pines hay en la placa. Y tranquilo, los multiplexores y demultiplexores son pequeños componentes, cajas negras, baratos y fáciles de conseguir.
Que se me iba… aquí tienes un ejemplo de demultiplexor y aquí otro de multiplexor. Por si alguna vez tienes que comprarte alguno o por si quieres entender su datasheet.
Si tienes alguna duda, déjame un comentario ahí debajo y hablamos de todo un poco 😉