Este proyecto trata de realizar un reloj de mesa, donde los dígitos son VFD (vacuum fluorescent display). Este tipo de display se usaba mucho antes, sobre todo en radios y coches. Por aquí os dejo un ejemplo:
Sin embargo, nosotros vamos a usar unos 7-segmentos VFD que le van a dar a nuestro reloj un toque vintage y que a mí, personalmente me gusta mucho. Además, voy a intentar darle un acabado molón para que además de ser algo maker sea decorativo 🙂
Parte 1: Encendiendo los VFD
Lo primero que tenemos que hacer tras recibir los VFD’s es encenderlos! En mi caso compre los IV-6 (ИВ-6) en ebay que son unos VFDs rusos con un brillo azul verdoso. El problema para trabajar con estos dispositivos es que son muy antiguos y el datasheet está en ruso y es una foto del original…
- Especificaciones del VFD IV-6 en Ruso
- Pinout del VFD IV-6 en Ruso
Pero tranquilos que después de mucho tiempo y paciencia he traducido lo principal y os dejo aquí como encenderlos, qué voltajes y corrientes soportan y como se tienen que conectar.
Descripción | Valor | |
---|---|---|
Límites | ||
Voltaje de los dígitos | 50 | V |
Voltaje de la rejilla | 50 | V |
Voltaje del cátodo/filamento | 1.15 | V |
Modo estático | ||
Voltaje de los dígitos | 25 | V |
Voltaje de la rejilla | 25 | V |
Voltaje del cátodo/filamento | 1.0 | V |
Corriente del cátodo/filamento | 50 | mA |

Esquema de pines del IV-6
En el vídeo de más arriba tenéis una explicación de cómo funcionan, así que esa parte la pasaremos por alto. Así que lo siguiente que necesitamos, es generar nuestros voltajes para poner a funcionar nuestros VFD IV-6. En nuestro caso vamos a partir de una fuente de 9V, pero debería funcionar igual con cualquier otra fuente. Vamos a necesitar, además de nuestra fuente de 9v, un step up, para elevar el voltaje de 9v a 25v, y un step down, para bajar de los 9v hasta 1v. Os recuerdo que para optimizar las compras en Aliexpress os recomiendo pasaros por mi post sobre Como usar Aliexpress para empezar un laboratorio de electrónica
- Step up XL6009: Link Aliexpress (aprox 0.6€)
- Step down mini 360:(Link Aliexpress)
Bien, una vez que tenemos nuestros Steps Up/Down, lo que vamos a hacer es conectarlo de manera muy sencilla. Simplemente tenemos que conectar 25V a la malla y poner 1V entre las entradas del filamento. A continuación os dejo un esquema de como se tendría que conectar. Las líneas discontinuas vienen siendo cables opcionales, con esto me refiero a que no son necesarios para que funcionen, pero si no ponemos esos 25V en alguna de las patas de los dígitos, no se va a encender nada.

Conexión de un VFD básica
Y el resultado, si conectáis los pines: 1,2,3,4 y 10; a 25V, lo podéis ver a continuación.

Un dígito VFD funcionando
Parte 2: Interfaz con Arduino (UDN2981)
Ya os adelanto que si intentamos trabajar con 25V y el Arduino, sin poner nada entre medias, vamos a invocar a nuestro querido magic smoke. Así, si no quieres ver como tu Arduino pasa a mejor vida, vamos a tener que hacer algún interfaz.
El objetivo del interfaz es poder controlar señales de 25V cuando la entrada es de tan solo 5V. Hay dos tipos de drivers para esta función: los sink drivers y los source drivers. Los primeros se ponen entre la carga y la tierra, mientras que los últimos se ponen entre la fuente de voltaje y la carga.
En nuestro caso vamos a usar los source drivers ya que es la única manera de poder poner a 0V o a 25V las entradas de los segmentos. Como además, necesitamos que las salidas suban hasta 25V vamos a usar el driver UDN2981 (datasheet). El UDN2981 es un chip muy sencillo de usar, y lo podemos entender fácilmente con el diagrama interno que podemos encontrar en el datasheet, que os dejo a continuación.
Básicamente, tenemos las conexiones de entrada, que se “amplifican” hasta el nivel de Vs. Por lo que si en la entrada IN1 tenemos 5V, en la salida de “en frente” tendremos 25V. De esta manera, el circuito que nos queda sería muy sencillo, os lo dejo a continuación, pero simplemente, las entradas IN del UDN2981 se conectarían directamente a un Arduino. El resto de conexiones del VFD las dejamos como en el primer post y con las 8 salidas digitales del Arduino, ya podríamos controlar qué símbolo mostrar en el dígito.

Interfaz para Arduino con el UDN2981.
Demasiados cables: Serie-Paralelo
Llamadme loco de la eficiencia si queréis, pero esto de tener 8 salidas del Arduino ocupadas para esto… No me mola un pelo… Yo uso el Arduino Nano y tenerlo así me supone gastar un porcentaje muy alto de todas sus salidas. Además, que lo guay de todo esto es romperse la cabeza para hacer las cosas mejor y más elegantemente.
Para ello, lo que vamos a usar, como os ha espoileado el título, es usar un conversor serie a paralelo. Esto lo que nos va a permitir es, Sorpresa: enviar los datos en serie y obtenerlos en paralelo. Así, solo necesitaremos 2 conexiones del Arduino: una para los datos y otra para el reloj.
Funcionamiento básico
El funcionamiento de todos estos integrados es muy parecido. Todos ellos se basan en puertas lógicas Flip-Flop con 3 entradas: La primera los datos, la señal de reloj y por último el reset. Estas puertas lógicas, cuando reciben una señal de reloj, leen el valor a su entrada y lo pasan a la salida. La salida solo lee el dato de entrada cuando se recibe el pulso de reloj, y la salida cambia al recibirse el pulso de reloj, o activar el reset.
Si la salida de uno de los Flip-Flop es la entrada del siguiente, entonces podemos ir pasando los datos entre las puertas lógicas y avanzando el dato, de uno a otro, en cada ciclo de reloj.
Chips Serie-Paralelo: 74HC595 vs 74HC164
Generalmente nos podemos encontrar dos tipos de conversores serie-paralelo: los no latched y los latched. He intentado traducirlo al castellano, pero sería algo así como “con interruptor”, y me gusta más como queda en inglés. Total, que me voy por las ramas, los conversores no latched son los más sencillos, de este tipo tenemos los 74HC164 (link aliexpress).
74HC164 sin latch
Como hemos visto en la sección del funcionamiento básico, si encadenamos varias puertas lógicas, y conectamos la señal de reloj a todas ellas, podemos ir pasando el dato que esté en el primer Flip-Flop, hacia “delante” en cada ciclo. Y esto es exactamente lo que hace el 74HC164.
En el siguiente esquema tenéis el interior del 74HC164, para que podáis entender el comportamiento. Aunque este chip tiene una puerta AND en la entrada de DSA y DSB, se puede conectar una entrada a HIGH y usar solo la otra, o interconectar las dos y ya funcionaría como si no estuviese esa puerta lógica.

Puertas lógicas del 74HC164
74HC595 Latched
Por otro lado tenemos el 74HC595 (link Aliexpress) que es igual que el 74HC164 solo que en este caso, las salidas del integrado no están directamente conectadas a las salidas de las puertas lógicas. Estos chips incluyen un paso de complejidad más, añadiendo una etapa de salida, con la que podemos controlar cuando vamos a sacar los datos hacia el exterior.

Puertas Lógicas Internas del 74HC595
Como podemos ver en el esquema, la primera parte, es decir, la conexión de serie a paralelo básica, es igual que en el 74HC164, pero este además tiene dos entradas más de control: RCLK y nOE. RCLK es la encargada de, cuando los datos de la primera etapa están listos, los pasa a la salida. Mientras que nOE activa las salidas.
Las comparaciones son odiosas
Aunque son dos integrados muy parecidos, puede ser que uno sea o no sea útil para tu proyecto. Por eso vamos a ver cuales son las ventajas y desventajas de cada uno, y así que puedas elegir el mejor para ti. Aunque, ya te adelanto que en muchos casos, son intercambiables y ambos pueden valer para lo mismo, con cambios menores.
- 74HC164 Gana en:
- Interfaz más sencilla, solo se necesitan 2 salidas de Arduino.
- Más simple y fácil de entender
- pero…
- Las salidas se van actualizando según los datos van pasando.
- Además, no se pueden cortar las salidas y ponerlas en alta impedancia
- 74HC595 es mejor en:
- Capacidad de controlar mejor las salidas del integrado
- Se puede “convertir” en algo parecido a un 74HC164 juntando las señales de reloj (esto es un poco más avanzado)
- pero…
- El interfaz y código son un poco más complejos
- Se necesitan más pines del Arduino/uC para controlarlo
Añadimos el Serie-Paralelo
En nuestro caso, hemos elegido el 74HC164 por una sencilla razón, el latch lo podemos hacer con la rejilla del dígito. Es decir, si queremos que no se vaya viendo como los datos van saliendo por las salidas del integrado, podemos desactivar la malla del VFD, y así no se iluminará nada.
El circuito queda como en el siguiente esquema. En este, ya podemos manejar, con tan solo 2 pines del Arduino, todos los segmentos de nuestro display fluorescente. En nuestro caso hemos optado por poner nMR y DSA a 5V para así que nunca se borren los datos de los registros.
Aunque en el diagrama aparezca ‘Serial Data’ y ‘Serial_CLK’ no son pines de I2C o SPI del Arduino, vale con cualquier Pin digital.

Conexión completa con el Serie-Paralelo, luego interfaz de alto voltaje y el VFD
El código fuente en Arduino
Para manejar los diferentes dígitos y usar el Serie-Paralelo, vamos a usar la función de arduino ‘ShiftOut’. Además vamos a poner el ejemplo de pintar un ‘2’. Mirando el diagrama del principio del post, vemos que para iluminar el ‘2’ necesitamos encender los segmentos: 2,3,4,6 y 10;
En la función ‘shiftOut’ tenemos que definir en que orden vamos a enviar el dato. Si definimos el numero como 01110110, de manera que el primer bit de la izquierda sea lo que salga por el OUT1 del serie-paralelo, necesitaremos enviar primero el LSB.
int DataPin = 8; // Serial_Data (D8) int ClockPin = 7; // Serial_CLK (D7) int data = 0b01110110; void setup(){ pinMode(DataPin, OUTPUT); pinMode(ClockPin, OUTPUT); } void loop(){ shiftOut(DataPin, ClockPin, LSBFIRST, data); delay(1000); }