Buscando IC de contador de eventos multicanal para verificar el funcionamiento del interruptor

Como parte de un proyecto, me gustaría probar el funcionamiento correcto de un conjunto de circuitos integrados de interruptores SPST (tal vez 8 o 16 más o menos). Cada dispositivo contiene seis interruptores independientes y se controlan a través de un bus SPI. Planeo operar los interruptores alrededor de 10 o 20 kHz. Estoy pensando en usar un microcontrolador económico (tal vez un Arduino MEGA) para ejercitar los interruptores y contar la cantidad de veces que están cambiando.

Creo que podría usar el temporizador/contador de 16 bits de Arduino, cronometrado externamente por los interruptores bajo prueba, para contar cuántos ciclos de interruptores están ocurriendo realmente. Sin embargo, la mayoría de MCU tienen un número limitado de periféricos de temporizador/contador. El ATmega2560 en Arduino MEGA tiene cuatro temporizadores de 16 bits, por ejemplo (suponiendo que pueda usarlos todos).

Como estoy monitoreando más de cuatro conmutadores (podríamos estar viendo algo así como 50 conmutadores individuales para ser monitoreados en 16 dispositivos, digamos), necesito otra solución. Esta puede ser una pregunta comercial, y es posible que solo necesite el nombre de lo que estoy buscando, pero ¿existen circuitos integrados de contador de eventos multicanal que puedan operar de forma independiente, con registros internos o memoria para almacenar los recuentos en cada canal y quizás ¿Generar una interrupción cuando se alcanza algún conteo o se desbordan? ¡Gracias!

Respuestas (2)

Su mejor apuesta es usar una placa de desarrollo FPGA barata. Aquí hay una lista de ellos en Digikey, ordenados por precio . Hay varios en el rango de $30.

Obtenga uno con suficientes E/S para manejar la cantidad de señales que necesita contar. Por ejemplo, la placa Lattice MACHXO2 tiene más de 100 E/S que van a encabezados de pines de 0,1". Es programable a través de USB y el software de desarrollo se puede descargar gratis.

En cuanto a la programación de la FPGA, en lugar de tratar de tener una gran cantidad de entradas de reloj externas que controlen directamente un montón de contadores, sería mejor usar un reloj fijo, muestrear las entradas externas e incrementar el contador cuando se detecte un flanco ascendente. . Se detecta un flanco ascendente cuando una muestra 0 es seguida por una muestra 1. La frecuencia del reloj debe ser al menos ~4X que la frecuencia de entrada y las entradas muestreadas deben pasar por un par de niveles de registros para evitar problemas de metaestabilidad .

También puede usar la lógica FPGA para implementar una interfaz SPI o I2C para leer contadores y estados, restablecer los contadores, etc.

Gracias. Esta sería mi primera incursión en el mundo de los FPGA, pero su enfoque parece bueno. Entonces parece que debería poder implementar todo en el FPGA. Tendré que ponerme al día con la programación de FPGA y aprender Verilog, supongo. Además de implementar el ciclo de eventos general, ¿tendría que modificar manualmente el protocolo SPI o puedo componer mi proyecto a partir de bloques prediseñados? (Probablemente solo necesito investigar más en este punto).
Aunque era un programador de C y Verilog es más parecido a C, encontré que VHDL era más fácil de aprender. Es un poco más detallado, pero una vez que aprende las estructuras básicas que se sintetizan en registros y máquinas de estado, en realidad no es tan difícil. Tanto en Verilog como en VHDL hay muchos bloques funcionales predefinidos que puede incluir en su código, como las interfaces SPI e I2C. El chip Lattice MACHXO2 incluso tiene una interfaz I2C codificada. Los entornos de desarrollo admiten tanto VHDL como Verilog y, por lo general, puede incluir bloques definidos en Verilog en código VHDL y viceversa.

Si lo que realmente está tratando de hacer es verificar la corrección a medida que aumenta la velocidad, por ejemplo, entonces puede adoptar el enfoque de análisis de firmas.

En cada conjunto de datos nuevos, enganche en los registros de desplazamiento (74hc165)

Cambie todo a través de un generador CRC (74F401).

Repita hasta que termine toda la prueba.

Lea la firma CRC en arduinos SPI.

(74F401 está obsoleto pero en eBay) La parte de Silego a continuación podría implementar un generador I2C CRC


Silego / Dialog SLG46824 es un dispositivo lógico simple y económico que puede implementar una serie de contadores (lo interpreto como 7x8 bit + 1x16bit, o 4.5x 16 bit) que puede leer desde el puerto I2C.

Son muy fáciles de acceder con programación de tipo esquemático y tienen un suministro de 2-5V.

Ahora tienen una versión de adaptador dip que es mucho más fácil de jugar que el pequeño y miserable qfn.