La forma más fácil de leer un gran banco de LED

Tengo una pregunta bastante sencilla, pero cada respuesta que se me ocurre parece demasiado complicada o simplemente incorrecta. Estoy diseñando un registrador de datos/sistema de detección de fallas para ser utilizado en una gran pieza de equipo industrial. La esencia es que la única salida para el estado actual de esta máquina es un gran banco de LED (> 64) iluminados en ROJO, VERDE o AMBOS (luces LED comunes de cátodo o ánodo) y nos gustaría hacer que esta salida sea accesible de forma remota . No tengo acceso al sistema de control de la máquina, por lo que no puedo acceder a la señal que controla qué luces están encendidas o apagadas, pero tengo la capacidad de leer la caída de voltaje en cada LED con respecto al cátodo usando un microcontrolador. Imagine que el circuito para los LED es solo una conexión de cátodo común de todos los LED y luego>

Mi pregunta para usted es ¿cómo haría para determinar si cada uno de los LED tiene luces ROJAS, VERDES o AMBAS encendidas para que un microcontrolador pueda leerlas?

Mi pensamiento actual es tomar un banco masivo de multiplexores analógicos y luego simplemente multiplexar el voltaje de cada LED (> 128 voltajes diferentes para leer) en un ADC y usar un umbral de software para determinar si está encendido o no, sin embargo, este método parece una forma de complicado y caro y estoy seguro de que hay una mejor opción. Sé que conectar en cadena un montón de expansores de E/S y conectar los voltajes con el cátodo funcionaría, pero los voltajes parecen demasiado bajos para TTL (1,65 V y 2,5 V) y probablemente no funcionarían para producir un '1' cuando el LED esta prendido.

¿Podría sugerir un circuito o IC o una combinación de ambos para que esto funcione? ¡Gracias!

Esto suena como una pesadilla. ¿Puede acceder a los ánodos/cátodos de diferentes colores? Probablemente usaría comparadores temprano en lugar de enrutar un montón de señales analógicas. Eso o configurar, uno de esos dispositivos de visualización remota, una cámara.
¿Todos los LED están cableados con cátodo común o ánodo? Esto marca la diferencia a la hora de encontrar una solución efectiva pero de bajo costo. Y: ¿con qué frecuencia se deben leer todos estos LED?
@Samuel: ¡Gracias por simpatizar! El acceso a cada uno de los pines del LED es todo lo que tengo.
@DwayneReid: Todos los LED son de cátodo común, por lo que afortunadamente puedo conectar el GND a mi circuito y simplemente leer todos los voltajes positivos de los ánodos. Preferiblemente, me gustaría saber cuándo uno de los LED cambia de color lo más rápido posible, ya que podría indicar algo realmente malo.
¿Consideró una cámara web?
Lo hice, pero mi conocimiento de analizar imágenes a través de un programa para eliminar la información no es muy bueno. Decidí crear un expansor IO masivo con el TI TCA9534

Respuestas (4)

Si un expansor de IO le parece bien, no veo el problema. Puede obtenerlos en varios voltajes de suministro, incluidos 1,8 y 2,5 voltios. Entonces, si usó 1.8 unidades para los LED rojos y 2.5 para los verdes, creo que estaría en el negocio. Un TI TCA9534 parecería funcionar, y puede obtener 64 bits en un bus I2C con ellos. Entonces, en realidad necesitaría dos juegos de expansores IO, uno para rojo y otro para verde. Pero parece mucho mejor que el enfoque de fuerza bruta.

Me gusta mucho esta idea, gracias por la respuesta! No sabía que podía cambiar los niveles digitales de los expansores IO tan fácilmente, pero mi único temor es que al reducir Vcc para compensar los LED, será necesario agregar un búfer para las líneas I2C o SPI, pero eso es solo un chip más.

Esto parece ser bastante fácil, pero sospecho que será doloroso instalarlo. Hay varios enfoques diferentes que deberían funcionar. Uno de ellos es usar los expansores de E/S como lo menciona WhatRoughBeast. Lo que no me gusta de esos son los umbrales de nivel lógico.

Voy a sugerir algo un poco diferente. Me gustan los multiplexores analógicos CMOS realmente antiguos como el CD4051. Estos son muy baratos y fácilmente disponibles de varios fabricantes en paquetes SOIC y DIP. Cada uno de estos manejará 8 entradas.

Usted menciona que desea monitorear 128 LED. Le sugiero que use 7 de estos chips mux 4051. Cada uno tiene varias líneas de control y 3 pines de alimentación. Vee va a tierra, al igual que Ground. !Ena también va a tierra (el "!" indica activo-LO). Las 3 líneas de control A, B, C están conectadas entre sí en cada uno de los chips y provienen de su micro.

Soy partidario de la familia PIC de Microchip. Una especificación interesante y muy útil es que para un PIC PIC16F que se ejecuta desde un suministro de 5 V, el umbral lógico HI para las entradas TTL es de aproximadamente 1,3 V. Pero tenga cuidado: algunos pines tienen entradas ST (Schmitt Trigger), estos tienen una entrada lógica HI ​​de aproximadamente el 80% de Vdd (alrededor de 4V). NO desea utilizar un pin de entrada ST para monitorear la salida del mux.

De todos modos, conecte el pin "Z" de cada mux a un pin de entrada PIC que tenga umbral TTL. Conduzca todas las líneas A, B, C en los multiplexores desde el PIC. Tenga en cuenta que esto le permite leer 7 bits de entrada de una sola vez.

Esto le dará una capacidad de lectura muy rápida. Configure la dirección "000" en las líneas A, B, C y lea los 7 muxes a la vez. Guarde estos datos, luego configure la dirección "001" en las líneas de control y vuelva a leer. Y otra vez. 8 lecturas más tarde, ya está. Haz con los datos lo que necesitas hacer.

Este enfoque no solo es más rápido que usar I2C, sino que requiere un código mucho más simple y los chips 4051 cuestan significativamente menos que los chips expansores I2C.

Un punto final: no sé qué está impulsando los LED de su controlador original. Si provienen de chips lógicos de accionamiento simétrico, no hay problema. Pero si provienen de un controlador de fuente abierta o de drenaje abierto, es posible que tenga problemas con el voltaje en cada LED que se encuentra justo por debajo del voltaje de umbral del LED. Esto le causará todo tipo de dolor.

La cura es simple: solo use resistencias desplegables medias-altas en las entradas MUX. Voy a sugerir que en algún lugar entre 10k y 47k debería ser bueno. También tenga en cuenta que estos pueden ser físicamente bastante pequeños: simplemente use una red de resistencia SIP con bus de 10 pines. Un paquete pequeño por chip MUX.

Aunque no se especifica, parece que tiene una pantalla LED multiplexada. Si ese es el caso, entonces solo es necesario leer los voltajes en las líneas periféricas a los buses LED xy. Habrá tres estados +V.-V. y casi ningún V. La luz externa puede hacer que un LED actúe como una fotocélula, por lo que un LED no activado puede mostrar algunos Mv debido a la luz externa. Use un microprocesador (su elección) para escanear los cables con un multiplexor analógico, como un CD4067B (16 x 1), a una velocidad más rápida que la velocidad de multiplexación LED. Dos CD4067B permitirían un escaneo de 16 x 16 o 256 puntos. Tres '67B podrían hacer 32 x 16, cuatro 32 x 32. . . con solo 9 (o 10) líneas de datos del microprocesador. Si el microprocesador tiene un convertidor analógico a digital de dos (o más) mux de 12 bits, podría ser posible solo con los chips mux y el microproc. Luego, el micro hace una tabla de búsqueda binaria para los patrones y genera datos ascii, 232, 485, o lo que sea a través de optoacopladores o wifi. Un Atmel328 podría ser correcto. . .

¡Gracias por la respuesta! Las señales de control de LED provienen de una PCB y se enrutan a los LED a través de cables planos ICD de 3x 20 hilos y otro cable ICD de 60 hilos, pero no puedo acceder a la PCB (principalmente por temor a estropear una placa patentada de más de $ 3000) de lo contrario gran idea. También gracias por señalar que los LED pueden actuar como una fotocélula, ¡habría estado rascándome la cabeza durante días tratando de averiguarlo!

Señalaré que un cable plano idc permite presionar en otro conector que luego se puede conectar a la tarjeta de su PC. Después de que respondí por primera vez, me di cuenta de que una cámara de video de 5 megapíxeles con una Raspberry Pi también podría reconocer caracteres enfocándose en la pantalla, pero creo que es una respuesta "tramposa". El software sería un material para una disertación.

Sí, pensé en agregar otro conector IDC a la mezcla, pero me preocupaba que si por casualidad cortaba accidentalmente uno o más cables, tendría que llamar a un técnico para que lo arreglara ($1000+), especialmente porque hay tantos que cruzan dos los cables harían que se encendiera el LED incorrecto. La idea de la cámara fue una gran idea, sin embargo, mis habilidades de programación DSP no son las que solían ser e incluso si hubiera una biblioteca, me preocuparía por muchos falsos positivos o fallas perdidas en ciertas circunstancias (luces de la habitación encendidas o apagadas, alguien golpea accidentalmente la cámara, etc.)