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

2

Tengo una pregunta bastante directa, pero cada respuesta que se me ocurre parece complicada o simplemente errónea. Estoy diseñando un registrador de datos / sistema de detección de fallas que se utilizará para un equipo industrial grande. Lo esencial es que la única salida para el estado actual de esta máquina es un gran banco de LED (> 64), ya sea ROJO, VERDE o AMBOS (luces de led de cátodo común o ánodo) y nos gustaría hacer esta salida de forma remota accesible. 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 sí 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 los cables > 128 que entran en la conexión de los ánodos (sin acceso a la resistencia limitadora de corriente).

Mi pregunta para usted es ¿cómo haría usted para determinar si cada uno de los LED tiene luces ROJAS, VERDES o AMBOS 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, esto El método parece muy complicado y costoso y estoy seguro de que hay una mejor opción. Sé cómo encadenar un montón de expansores de E / S juntos y conectar los voltajes w.r.t. el cátodo funcionaría pero los voltajes parecen demasiado bajos para TTL (1.65 V y 2.5 V) y probablemente no funcionen para producir un '1' cuando el LED está encendido.

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

    
pregunta TrapLevel

4 respuestas

6

Si un expansor IO le parece bien, no veo el problema. Puede obtenerlos en varios voltajes de suministro, incluidos 1.8 y 2.5 voltios. Entonces, si usaste 1.8 unidades para los LED rojos y 2.5 para los greens, creo que estarías en el negocio. Un TI TCA9534 parece hacer el truco, y puede obtener 64 bits en un bus I2C con ellos. Así que realmente necesitarías dos conjuntos de expansores de IO, uno para rojo y otro para verde. Pero parece mucho mejor que el enfoque de fuerza bruta.

    
respondido por el WhatRoughBeast
2

Esto parece ser bastante fácil, pero sospecho que será difícil de instalar. Hay varios enfoques diferentes que deberían funcionar. Una de ellas 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, como el CD4051. Estos son muy económicos y están disponibles para varios fabricantes en paquetes SOIC y DIP. Cada uno de estos manejará 8 entradas.

Mencionas que quieres monitorear 128 LEDs. Estoy sugiriendo que uses 7 de estos 4051 chips mux. Cada uno tiene varias líneas de control y 3 pines de alimentación. Vee va al suelo, al igual que el suelo. ! Ena también va a tierra (el "!" Indica active-LO). Las 3 líneas de control A, B, C están conectadas juntas en cada uno de los chips y provienen de su micro.

Soy parcial a la familia PIC de Microchip. Una especificación interesante y muy útil es que, para un PIC PIC16F que se ejecuta desde una fuente de 5V, el umbral lógico de HI para las entradas TTL es de aproximadamente 1.3V. Pero tenga cuidado, ya que algunos pines tienen entradas ST (Schmitt Trigger), tienen una entrada HI lógica del 80% de Vdd (aproximadamente 4V). Usted NO quiere usar 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 un umbral TTL. Conduzca todas las líneas A, B, C en los muxes del PIC. Tenga en cuenta que esto le permite leer 7 bits de entrada de una sola vez.

Esto te dará una capacidad de lectura muy rápida. Establezca la dirección "000" en las líneas A, B, C y lea los 7 muxes a la vez. Almacene estos datos, luego establezca la dirección "001" en las líneas de control y lea nuevamente. Y otra vez. 8 lecturas después, has terminado. Haz con los datos lo que necesitas hacer.

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

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

El curado es simple: solo use resistencias de bajada media-alta 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 pueden ser físicamente bastante pequeños, simplemente use una red de resistencias SIP con bus de 10 pines. Un paquete pequeño por chip MUX.

    
respondido por el Dwayne Reid
1

Aunque no está especificado, suena como si tuviera 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 x-y de LED. Habrá tres estados + V.-V. y casi ninguna 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 de LED. Dos CD4067B permitirían un escaneo de 16 x 16 o 256 puntos. Tres '67B's podrían hacer 32 x 16, cuatro 32 x 32. . . con solo 9 (o 10) líneas de datos desde el microprocesador. Si el microprocesador tiene un convertidor de analógico a digital de 12 bits de dos (o más) muxed, podría ser posible solo con los chips de mux y el microproc. El micro luego hace una tabla de búsqueda binaria para los patrones y genera datos ASCII, 232, 485, o lo que sea a través de un optoacoplador o wifi. Un Atmel328 podría tener razón. . .

    
respondido por el wa9vez
1

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

    
respondido por el wa9vez

Lea otras preguntas en las etiquetas