Decodificador binario a 7 segmentos

ElectrónicaTinkercadKarnaughBinarioDecodificadorCompuertas lógicas
Circuito del decodificador binario a 7 segmentos en protoboard

Uno de mis lados favoritos de la programación es cuando se cruza con el hardware. Y este proyecto, pequeño pero muy satisfactorio, nació de una llamada telefónica.

Era el Día del Maestro, dos meses después de que la pandemia nos encerrara a todos en cuarentena. Yo llevaba ya un par de meses dando clases en línea. Marqué a un profesor de la universidad —nunca me dio clase, pero nos hicimos buenos amigos— para felicitarlo. En la plática le pregunté cómo le estaba haciendo con sus alumnos, porque él da Circuitos lógicos. Me contó que les pasaba toda la información que podía, que ellos armaban los circuitos en casa y se los mostraban por cámara. A mí me pareció bastante complicado, sobre todo para evaluar.

Le platiqué que con mis alumnos de secundaria (robótica con Arduino) yo estaba usando Tinkercad, y que estaba casi segura de que ahí también se podían simular compuertas lógicas. En eso quedó la charla —y obviamente nunca me hizo caso ni revisó la plataforma, jajaja—, pero a mí me quedó la cosquilla.

Sobre todo porque en la universidad nunca viví ese proyecto. La profesora que me dio la clase era buenísima, pero nunca nos pidió el típico decodificador. El mío lo armé con una sola compuerta que ya hacía toda la lógica, así que me perdí la experiencia de conectar montones de integrados AND, OR, NOR y demás para construir un decodificador grandote sobre dos protoboards unidas. Así que me lo prometí: iba a hacer el mío. Y en dos días armé este que tengo en Tinkercad, el mismo que verás aquí.

El problema

Un display de 7 segmentos tiene siete leds (a, b, c, d, e, f, g) que, combinadas, forman los dígitos del 0 al 9. La entrada es un número en binario de 4 bits (A, B, C, D) y la salida es qué segmentos deben encenderse. El reto: encontrar la expresión lógica de cada segmento.

La tabla de verdad

Empecé mapeando, para cada número del 0 al 9, qué segmentos van encendidos (1) o apagados (0). Como con 4 bits caben 16 combinaciones pero solo uso 10, del 10 al 15 los marqué como condiciones "no importa" (X) — y esos comodines son justo lo que después ayuda a simplificar.

Tabla de verdad del decodificador binario a 7 segmentos

Simplificación con mapas de Karnaugh

Para cada uno de los siete segmentos armé un mapa de Karnaugh y agrupé los unos (aprovechando las X como comodín) para obtener la expresión booleana más simple. Cada color es una agrupación distinta:

Mapa de Karnaugh del segmento aMapa de Karnaugh del segmento bMapa de Karnaugh del segmento cMapa de Karnaugh del segmento dMapa de Karnaugh del segmento eMapa de Karnaugh del segmento fMapa de Karnaugh del segmento g

De la lógica al circuito

Con las ecuaciones de cada segmento, armé el circuito en Tinkercad para comprobar que, al meter cada número, el display lo dibujara correctamente. Puedes jugar con la simulación aquí mismo:

También puedes abrirlo directo en Tinkercad.

Lo que me llevo

Lo curioso es que este proyecto, a pesar de tener casi seis años, sigue teniendo vida propia. De vez en cuando alguien lo copia en Tinkercad, y cada tanto me escribe gente pidiéndome ayuda, o preguntando si tengo los mapas o la tabla para armar su propio decodificador.

Por eso, desde hace años me prometí que algún día haría un blog en mi página y subiría esto aquí: para quien llegue a necesitarlo, quizás aterrizando en este post directo desde Tinkercad. Si eres una de esas personas, bienvenida — aquí está todo.

Proyectos así me recuerdan que detrás de cada interfaz, por simple que parezca, hay lógica que alguien tuvo que diseñar. Y que a veces la mejor forma de entender algo es construirlo.