Cómo leer valores de 7 segmentos SAA1064

Tengo un sistema de calefacción central que muestra su información y códigos de error en 4 pantallas de 7 segmentos. Estas pantallas son impulsadas por un SAA1064, así:Aplicación SAA1064

Este SAA1064 ( hoja de datos aquí ) recibe su información a través de I2C desde la computadora principal y las pantallas se multiplexan.

Aquí está mi problema: tengo una raspberry pi (cuyo bus I2C ya está en uso, a 100 KHz) y quiero usarlo para leer los valores que se muestran. Preferiría no usar un microcontrolador adicional solo para analizar lo que se muestra o para olfatear el bus I2C dentro del sistema de calefacción central (ya que tengo poca o ninguna experiencia en programarlos). ¿Sería una idea usar expansores I2C IO? Si es así, ¿cómo se conectaría esto?

Hack rápido: use uno de esos módulos CCD de "cámara de seguridad" baratos, una entrada de video para el Pi y un script de Python para tomar una foto de la pantalla de vez en cuando, procese un poco y finalmente OCR la imagen para escupir un número.
Si agregar componentes electrónicos al circuito no funciona, ciertamente echaré un vistazo a esto. Ya pensé en usar una cámara, pero más en broma, porque no había considerado OCR, ¡así que gracias!

Respuestas (1)

SAA1064 proporciona comandos para escribir valores de visualización, pero son de solo escritura y no se pueden volver a leer a través de I 2 C **. Incluso si fuera posible volver a leer a través de I 2 C, tendría que implementar un milti-master de modo que no interfiera con la actividad original de I 2 C dentro del sistema de calefacción. Eso puede o no ser sencillo.

Entonces, ¿qué se puede hacer?

El OP menciona agregar un microcontrolador (μC), que escucharía en el bus I 2 C. Hay productos existentes para hacer esto; ya están programados para olfatear y no deberían requerir la programación del μC.

  • Bus Pirate es una herramienta de código abierto de bajo costo
  • Total Phase Beagle es una herramienta comercial. Hay muchas más herramientas comerciales como esta.

Sin embargo, no sé qué tan fácil o desafiante sería conectarlos a una Raspberry Pi.

Otro enfoque sería recopilar el número en la salida del SAA1064, que va a los caracteres LED. SAA1064 se multiplexa entre personajes y eso presenta cierto desafío, porque necesitas saber qué personaje estás leyendo. Idealmente, usaría MX1 y MX2 como disparadores y bloquearía los valores en el bus digital. Luego podría leerlos a través de un expansor de E/S.

** Detalles en las páginas 5-6 de la hoja de datos . Además de la hoja de datos, primero tuve experiencia con SAA1064. Lo he diseñado en 2 instrumentos comerciales. Para mí, esta falta de capacidad de lectura es una falta de función. Pero entonces, SAA1064 era una parte antigua (1991).
Por cierto, SAA1064 ha sido descontinuado.

Esa última parte también fue idea mía, pero ¿cómo bloquearía los valores? ¿Existe algo así como un circuito integrado de búfer? O tendria que recurrir a una uC? (Realmente me gustaría evitar esto último) Probablemente usaré MCP23017, estos tienen una interrupción para cada puerto de 8 bits que tienen. ¿Se puede usar junto con un CI de registro o de búfer?