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!
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.
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. . .
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.
Samuel
Dwayne Reid
TrapLevel
TrapLevel
aaron mcmillin
TrapLevel