Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Controlador de pantalla fluorescente al vacío

Componentes y suministros

Arduino UNO
... o lo que sea Arduino de 8 Bits
× 1
Pantalla VFD
nuestro amigo
× 1
CD4094
circuito integrado DIP
× 2
CD4017
circuito integrado DIP
× 2
BC557
... o transistor equivalente (2N3906, 2SA733, ecc) o PNP de voltaje superior
× 17
BC547
... o transistor equivalente (2N3904, 2SC945, ecc)
× 2
PC817
optoacoplador ubicuo que se encuentra en la mayoría de las fuentes de alimentación conmutadas, parte del resultado final
× 1
1N4007 - Diodo nominal de alta tensión y alta corriente
× 4
Condensadores electrolíticos
ver el esquema de valores y voltajes
× 4
Condensador 470nF
cualquier tipo es bueno
× 1
Perfboard
también conocido como:cartón, protoboard, o en caso de que sea su solución de montaje preferida
× 1
Resistencias de 1 / 4W
ver el esquema para ver los valores
× 24
Dupont Jumpers
... o tus conexiones y publicaciones preferidas
× 1
Wire
cables delgados para la parte trasera del circuito y también para conectar la pantalla, no use conectores allí porque pin el espaciado es variable y una soldadura rápida es más fácil
× 1

Herramientas y máquinas necesarias

Soldador (genérico)
Alambre de soldadura
cómpralo en una tienda local, no hay cosas baratas para esto, se prefiere 0.5 mm
Cortacables

Acerca de este proyecto

¿Cuál es el uso?

Las pantallas VFD ya no son tendencia por algunas razones obvias, están hechas de vidrio ("¡uh genial!"), Tienen un filamento incandescente ("¿de verdad?"), Son básicamente tubos de vacío ("¡interesantes!"), Hacen una luz tan brillante, a veces coloreada, que necesita un plástico oscuro encima ("¡uh, enfríe de nuevo!").

Por lo general, necesita un chip dedicado para manejarlo, la mayoría de los módulos / dispositivos vienen con este chip que puede controlar de forma independiente a través de I2C o SPI (que es mucho mejor en términos de facilidad), en caso de que compre o tenga una de esas pantallas y no tenga tal chip no es tan fácil de "conectar y listo", lo ideal sería comprar ese chip (que normalmente viene en formato SMD). Este circuito ofrece una interfaz bastante decente como un Arduino y puede manejar cualquier VFD, incluidos los voluminosos "tubos" antiguos, pero las pantallas de matriz con muchos segmentos no son una buena idea, por cierto, puede expandir el circuito. pero MILES ... mhhh, tal vez no.

Pros y contras

Pros

  • costo casi nulo (con suerte)
  • piezas fáciles de encontrar
  • capacidad de alto voltaje (hasta cientos de voltios en los ánodos)
  • rejillas independientes y voltajes de ánodos
  • solo se necesitan 3 líneas de datos digitales
  • expandible (requiere más trabajo de CPU en caso de que)
  • el código está listo para cada Arduino de 8 bits

Contras

  • requiere una gran cantidad de voltajes y suministros diferentes (no es extraño para los VFD)
  • sin función de atenuación (excepto por voltaje)
  • utiliza dos recursos de Arduino, SPI y timer1
  • no puede colgar el microcontrolador, de lo contrario, el escaneo se congela en una cuadrícula
  • no es un par de resistencias y LED, requiere un poco de trabajo

Principio de funcionamiento

Un VFD generalmente funciona de manera multiplexada, como una matriz 2D con ejes X e Y, necesitas calentar el filamento (el cátodo, ves esos cables delgados frente a él), conectar la tierra en ese filamento también, un voltaje positivo a una rejilla (rejilla de control, un punto del eje X) y nuevamente un voltaje positivo en un pin de segmento (el ánodo, un punto del eje Y), en este punto se enciende un segmento (solo uno). Para iluminar cualquier segmento y cualquier combinación, y teniendo "pocos" cables alrededor, el multiplexado selecciona una cuadrícula por tiempo y al mismo tiempo configura los ánodos para iluminar los segmentos correspondientes debajo de esa cuadrícula, un momento después, selecciona otra cuadrícula y configura los ánodos esta vez para tener los segmentos correspondientes correctamente iluminados bajo esa segunda rejilla. Acelerar este escaneo continuo y repetitivo da como resultado un movimiento tan rápido que, bajo nuestros ojos, no selecciona una cuadrícula por vez, sino que parece impulsado a la vez, este es el llamado POV (Persistencia de la visión).

Este circuito usa dos tipos de circuitos integrados de la misma familia, dos CD4094 y dos CD4017, el 4094 maneja los ánodos y el 4017 maneja las rejillas en su lugar, el 4094 puede almacenar una configuración alta / baja en sus salidas y son buenos para los ánodos Por otro lado, los 4017 son los chips clásicos con 10 salidas de secuenciación, perfectos para las cuadrículas. Una vez que el 4094 está cargado con la configuración de ánodos de momento, la señal "ok" (estroboscópico) aplica esta configuración y al mismo tiempo cambia el 4017 en un paso, lo que permite una secuencia automática.

La parte de potencia es básicamente solo algunos transistores BC557 (o equivalentes) que permiten un cambio de voltaje más amplio en los ánodos, porque estas pantallas requieren un voltaje más alto que los 5V del Arduino. Las redes son impulsadas directamente por el 4017, un optoacoplador PC817 permite un voltaje mayor que 5V alrededor del 4017 y también un nivel de voltaje diferente del CD4094, esto simplifica MUCHO el conjunto.

El Arduino debe proporcionar toda la orquestación, significa que debe almacenar toda la configuración de los segmentos y cargar el circuito con la configuración del ánodo en cada conmutador de red, esto significa que realmente requiere un código inteligente para hacerlo más allá de la acción del usuario. El código que hice configura una interrupción basada en temporizador que recarga los chips 4094 en cada paso, en realidad alrededor de 1000 veces por segundo, por lo que para 10 cuadrículas da una frecuencia de actualización de 100Hz, eso es bueno. Hay una matriz de datos que almacena la configuración de los segmentos y se puede modificar en el código, sin procedimientos particulares o acciones posteriores, la rutina de interrupción cargará los datos por sí misma.

Fuentes de alimentación

El voltaje de la red en los chips 4017 puede ser de 5Vdc a 18Vdc y al menos 50mA de corriente, no necesita ser regulado. Por lo general (por lo que vi) 12V será suficiente para cada situación, aumentarlo no parece aumentar mucho el brillo (si es un tubo de vacío, la rejilla no requiere grandes voltajes).

El voltaje de los ánodos puede ser desde literalmente 0V hasta lo que sea que sus transistores puedan soportar (50Vdc para el BC557), por lo general, si la pantalla es perfecta, un 20-30Vdc funcionará perfectamente, no regulado es bueno. Para una configuración normal, 50 mA de suministro es más que suficiente.

La potencia digital puede ser 5Vdc o también 3.3Vdc en el caso de esos tipos de Arduinos o MCU (aún no probados), esto requiere como 100mA de potencia (con suerte menos), en caso de que el CD4094 se vuelva lento, puede reducir el reloj SPI en código y \ o use la salida "Q'S" del primer 4094 para una comunicación más consistente.

El suministro de filamento debe proporcionar al menos 5V 200-300mA de corriente, si ya tiene una fuente de CC, puede evitar el puente rectificador y el condensador de 1000uF, pero NO PUEDE usar el mismo suministro digital para \ del Arduino. El filamento real en el caso de una pantalla de aparato no tan grande funciona como 3V y puede consumir 150mA.

Consejos y notas

  • antes de conectar los cables, si no sabe qué pin hace qué, es mejor probar primero la pantalla, por lo general, un par de baterías AA en serie funcionarán bien para el filamento (generalmente son los contactos laterales), mientras que un par de bloques de 9V en serie proporcionarán la polarización positiva tanto para las rejillas como para los ánodos; las cuadrículas y los ánodos a menudo se agrupan, una buena idea es encontrar el "ánodo cero" real porque es muy probable que sea el primer segmento en la parte numérica o alfanumérica, a menudo el mismo y con el mismo orden para todas las cuadrículas, colocando los cables en el orden inverso por accidente hace que el software sea más torpe al final, las cuadrículas en su lugar, aparentemente, siguen el orden de los pines
  • modere el suministro de filamentos, aumente la corriente poco a poco, permanezca en la oscuridad y en el momento en que comience a ver que los filamentos se vuelven ligeramente incandescentes, simplemente reduzca un poco y ya está, un potenciómetro de potencia es perfecto, a veces se encuentran en televisores antiguos, pero es difícil hoy en día
  • aumente los voltajes en las rejillas y ánodos de una manera sensata, los fósforos pueden arder irreparablemente, el circuito también funciona escaneando, por lo que si el sistema se cuelga, proporcionará demasiada energía en una sola sección de la rejilla continuamente
  • jugar con un compromiso en los voltajes de las redes \ ánodos, tenga en cuenta que las redes podrían consumir algo de corriente, no vale la pena seguir adelante, mejor cuidado con los ánodos
  • usar un solo transformador para todo su proyecto \ configuración es ideal, también se pueden usar algunas soluciones mixtas, pero cambiar las PSU y especialmente las conectadas a tierra puede jugarle una mala broma, por eso, para experimentar, SIEMPRE es una buena idea usar el clásico suministros para transformadores
  • puede expandir este controlador agregando algunos CD4094 y \ o CD4017, por supuesto, si necesita 8 ánodos o menos, puede deshacerse del segundo 4094, el mismo escenario para el 4017, pero si desea que el controlador esté listo, simplemente compile lo más completo posible
  • no hay resistencias en las bases de los transistores de ánodos como puede ver, esto le da un impulso superrápido y reduce la lista de partes pero hace que el CD4094 consuma algo de energía, no se calentarán casi en absoluto, pero algunas muestras de chips pueden tiene una salida demasiado fuerte, verifique el consumo de corriente en caso de que los chips no exploten, porque la potencia disipada está DENTRO del máximo permitido, la corriente puede estar en el rango de 4 mA por pin a una fuente de 5 V
  • Las pantallas viejas y cansadas pueden renovarse con algunos golpes actuales en los filamentos, si es toda la pantalla la que está oscura y no solo un segmento quemado, dicen que los cables se llevan visiblemente incandescentes (amarillos) como cinco veces seguidas por un par de segundos cada vez, nunca lo probé pero puede requerir el doble del voltaje nominal del filamento, esto los limpia pero aparentemente es más útil para los muy viejos \ antiguos ... y es arriesgado, esos no son bombillas, podrías romper los cables

Código

  • Código Arduino con rutina de trabajo
Código Arduino con rutina de trabajo Arduino
 / * Interfaz Hrdware de pantalla VFD versátil Programa Arduino Copyright (C) 2019 Genny A. Carogna Este programa es software gratuito:puede redistribuirlo y / o modificarlo según los términos de la Licencia Pública General GNU publicada por Free Software Foundation, ya sea la versión 3 de la Licencia o (a su elección) cualquier versión posterior. Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA; incluso sin la garantía implícita de COMERCIABILIDAD o APTITUD PARA UN PROPÓSITO PARTICULAR. Consulte la Licencia pública general GNU para obtener más detalles. Debería haber recibido una copia de la Licencia Pública General GNU junto con este programa. De lo contrario, consulte . * // * este código usa recursos de Arduino de una manera "detrás de las cortinas", los módulos timer1 y SPI están usados ​​y ocupados * , por lo que es posible que tenga grandes problemas al usar SPI, pines SPI y algunas funcionalidades basadas en el temporizador1 ... el circuito propuesto * no tiene una memoria integrada, por lo que la configuración del segmento debe "escanearse" continuamente, cada cuadrícula, 100 veces por segundo *, de la matriz de segmentos de Arduino, esto se traduce también en el llamado trabajo de CPU "revisado", que, para que lo sepas, * no es más que el uso regular de un micro al final, puede llegar a alrededor de 3 % del trabajo de la CPU en términos de tiempo ocupado, también puede intentar * usar las herramientas SPI regulares de Arduino, pero necesita un análisis en profundidad de la toma y el procedimiento * * este código funciona con cualquier Arduino de 8 bits, también 3.3V debería funcionar ok, tal vez reduzca la frecuencia SCK, considerando que los CD4094 están * alimentados y pueden "subvoltaje" (sí, exactamente los principios de overclock para freír a su amada PC) * / # define ledLed 13 // es el pin de led que lleva un led encendido a led sabes que un led encendido significa algo relacionado con el led (mumbojumbo científico, por supuesto) #define strobePin 4 // el pin de Arduino para dedicarlo la línea "estroboscópica" # definir estroboscópico Mantenga 10 // microsegundos // tiempo de espera para cambiar el optoacoplador ... no megahertz-rápido pero aceptable // datos para mis pantallas (una grabadora de video, un lector de CD de audiophoolery y un estéreo compacto) ... no te preocupes, elimina y simplemente define "gridAmount" y "anodeAmount" #define JVC # define mitsubishiGrids 10 # define mitsubishiAnodes 9 # define marantzGrids 9 # define marantzAnodes 14 # define JVCGrids 11 # define JVCAnodes 19 # si se define mitsubishi # definir gridAmount mitsubishiGrids # definir anodeAmount mitsubishiAnodes # elif definido marantz # definir gridAmount marantzGrids # definir anodeAmount marantzAnodes # elif definido JVC # definir gridAmount JVCGrids # definir anodeAmount JVCAnodes # endif // esta matriz, segmentos [x], almacena los bits de segmento // [0] significa cuadrícula cero, y el bit menos significativo es el segmento cero en esa cuadrícula // puede acceder y modificar esta matriz como desee, desde cualquier lugar, sin hacer nada más, el efecto es inmediatamente visible en // la pantalla y permanece encendido mientras no lo haga No cambie los bits, para más de 8 segmentos por visualización de cuadrícula, necesita un // contenedor de 16 o 32 bits por cuadrícula, esto se administra automáticamente desde el #define (s) arriba # if anodeAmount> 16volatile uint32_t segmentos [gridAmount] ={0}; // más de 16 segmentos por cuadrícula (se necesitan 32 bits) #elif anodeAmount> 8volatile uint16_t segmentos [gridAmount] ={0}; // más de 8 segmentos por cuadrícula (16 bits, transferencia gemela) #elsevolatile uint8_t segmentos [gridAmount] ={0}; // 8 o menos segmentos por cuadrícula (8 bits) #endifvoid setup () {// convierte los pines SPI y algunos funcionales como salida de una manera rápida \ directa * portModeRegister (digitalPinToPort (PIN_SPI_SS)) | =digitalPinToBitMask (PIN_SPI_SS); * portModeRegister (digitalPinToPort (PIN_SPI_MOSI)) | =digitalPinToBitMask (PIN_SPI_MOSI); * portModeRegister (digitalPinToPort (PIN_SPI_SCK)) | =digitalPinToBitMask (PIN_SPI_SCK); * portModeRegister (digitalPinToPort (strobePin)) | =digitalPinToBitMask (strobePin); * portOutputRegister (digitalPinToPort (strobePin)) &=~ digitalPinToBitMask (strobePin); // ponerlo bajo * portModeRegister (digitalPinToPort (ledLed)) | =digitalPinToBitMask (ledLed); * portOutputRegister (digitalPinToPort (ledLed)) &=~ digitalPinToBitMask (ledLed); // ponerlo bajo delay (800); // algo de retraso para esperar a que se complete el reinicio del CD4017 (debe ejecutar el código DESPUÉS de encender el 4017, esto lo hace automático en caso de que encienda todo de una vez) cli (); // deshabilita las interrupciones para permitirnos modificar algunas cosas sin que los perros y gatos se escapen por todas partes // configuración del temporizador1, hace que ocurra una interrupción "cuadrículas por 100" por segundo ... esto da una actualización total de 100Hz que está bien TCCR1A =0; TCCR1B =0; TCNT1 =0; OCR1A =160000 / gridAmount; TCCR1B | =(1 < 24 SPDR =~ uint8_t (segmentos [turno]>> 24); // necesitamos bits negados en el CD4094 (cos de la disposición de los transistores) while (! (SPSR &(1 < 16 SPDR =~ uint8_t (segmentos [turno]>> 16); // necesitamos bits negados en el CD4094 (cos de la disposición de los transistores) while (! (SPSR &(1 < 8 SPDR =~ uint8_t (segmentos [turno]>> 8); // necesitamos bits negados en el CD4094 (cos de la disposición de los transistores) while (! (SPSR &(1 < 2) pos ++; uint16_t máscara =0xFF80; uint8_t números [] ={B00111111, B00000110, B01011011, B01001111, B01100110, B01101101, B01111101, B00100111, B01111111, B01101111, B00000000}; switch (pos) {caso 0:caso 1:caso 4:caso 5:caso 6:caso 7:caso 8:segmentos [pos] &=máscara; segmentos [pos] | =números [val]; descanso; caso 2:if (val ==1) segmentos [1] | =(1 <<8); más segmentos [1] &=~ (uint16_t (1) <<8); descanso; caso 9:segmentos [9] &=0xFFF0; if (val ==1) segmentos [9] | =3; si no (val ==2) segmentos [9] | =B1101; }} // fácil visualización de números de siete segmentosvoid marantzPrintNum (uint8_t val, uint8_t pos) {if (pos> 5) return; pos ++; pos ++; uint16_t máscara =0xFF80; // máscara de bits para borrar el dígito uint8_t números [] ={B00111111, B00000110, B01011011, B01001111, B01100110, B01101101, B01111101, B00100111, B01111111, B01101111, B00000000}; segmentos [pos] &=máscara; // eliminar cualquier segmento de dígitos [pos] | =números [val]; // establecer dígitos} // fácil visualización de números de siete segmentosvoid JVCPrintNum (uint8_t val, uint8_t pos) {// por venir (realmente no te importa)} // 

Esquemas

Evité dibujar TODOS los transistores BC557 porque están conectados allí en todas las salidas CD4094, de todos modos.

Hay un selector de puentes (que se ejecuta en la línea roja) que debe configurar en los chips 4017, restablece los dos 4017 al completar el escaneo de las cuadrículas, debe conectar (o soldar) el puente volador en el pin de salida DESPUÉS de la última cuadrícula , por lo que si su pantalla tiene 10 cuadrículas, el puente pasa a la undécima salida.

Las conexiones de Arduino están delineadas en rojo, puede usar la alimentación USB para ello, pero se recomienda encarecidamente usar un transformador normal de estilo antiguo para los suministros restantes si ya tiene una fuente de alimentación con conexión a tierra como su PC. Estos suministros deben ser todos de CC, excepto tal vez el suministro de filamento, agregué algunos diodos porque es probable que necesite un transformador separado con un secundario de bajo voltaje. La potencia del filamento suele rondar los 3 V 150 mA, un transformador de 5 V CA será suficiente. Lo del "balasto" posiblemente sea un potenciómetro de potencia con cable de 100 ohmios, o una resistencia fija, o también algunos diodos 1N4007 para reducir el voltaje.

Los transistores BC557 elevan los ánodos hasta un voltaje anódico y las resistencias de 100 kohmios permitirán que la unidad de voltaje caiga cuando el segmento esté apagado, mientras que el CD4094 permanecerá a 5 V normalmente.

Los CD4017 se alimentarán con voltaje de red y no requieren transistores adicionales. Hay un circuito de reinicio "ghetto" para el 4017 que dura como una décima de segundo, tienes que esperar a que se asiente antes de ejecutar el código.
El esquema "original" para conectar en cascada algunos CD4017 requería otros chips de puertas lógicas, utilicé en su lugar un transistor NPN y el propio optoacoplador para replicar una puerta AND, es lo suficientemente rápido para cerrar, por lo que es perfecto para la tarea, al liberarlo es un poco más lento pero no nos importa, especialmente porque las entradas de reloj en el 4017 se activan schmitt y la velocidad requerida no es "aterradora" allí.

Hay varios motivos para las fichas y esas cosas, como puede ver, fíjense bien.

Proceso de manufactura

  1. Construcción de Squid Games Doll usando Arduino UNO
  2. Animación de mapa de bits en ILI9341 TFT Touchscreen Display Shield
  3. Controlador DMX operado por la web
  4. Juego Arduino Pong - Pantalla OLED
  5. Controlador de juego Arduino
  6. Unopad - Controlador MIDI Arduino con Ableton
  7. Arduino Temp. Monitor y reloj en tiempo real con pantalla 3.2
  8. Jugando con Nextion Display
  9. Voltímetro de bricolaje con Arduino y una pantalla Nokia 5110
  10. BME280 Temperatura, humedad y presión en la pantalla Nextion
  11. Sonda usando arduino y visualización en procesamiento IDE