Definitivamente, puede utilizar el TPIC6A596 de Texas Instruments.
Sus salidas son más que capaces de conducir sus relés, para tener 150 salidas, necesitará conectar en cadena 19 de ellas.
El chip cuenta con un registro de desplazamiento de ocho bits, cronometrado por el pin SRCK
. Este registro de desplazamiento se puede cargar de una vez en el registro de salida, para que los relés siempre se activen.
Para conectar en cadena los chips, deberá conectar el pin SER OUT
del primer chip al pin SER IN
del segundo, y así sucesivamente. El último SER OUT
se puede dejar desconectado, mientras que el primer SER IN
debe estar conectado al Arduino.
Los pines SRCK
, RCK
, /SRCLR
y /G
se pueden conectar entre sí y a otras cuatro salidas del Arduino, por lo que necesitará un total de cinco pines para impulsar su cadena.
A continuación, una pseudo rutina para gestionar todo esto:
En el encendido, desea mantener ambas entradas de reloj bajas mientras se reinicia tanto el registro de desplazamiento como el registro de salida que atan /SRCLR
low. Probablemente sea una buena idea mantener la etapa de salida deshabilitada también, manteniendo /G
alto.
Ahora que los chips están en un estado conocido, suelte el reinicio y ate la habilitación alta. Todos los relés están desactivados y está listo para marcar en la primera sesión.
152 bits.
Para hacerlo, simplemente comienza a alternar el pin SRCK
mientras colocas los datos en el pin de salida del Arduino. Los datos son muestreados por los chips en el flanco ascendente del reloj. Para obtener el tiempo adecuado, consulte la hoja de datos, la frecuencia máxima de reloj es de 10MHz, un cambio completo requiere aproximadamente 15.2us.
Cuando todos los datos están sincronizados, deje de alternar SRCK
, manténgalo bajo y produzca un solo pulso de reloj en RCK
: los registros de salida se cargan simultáneamente con sus datos.
Cuando desee cambiar algo, solo marque los nuevos bits y solo cuando haya terminado de dar un toque de RCK
: al hacerlo, se asegura de que se conoce el estado de los relés en un momento dado.
Se trata de eso, pero hay un par de comentarios:
Deberá agregar diodos de protección a sus relés. Este sitio está lleno de ejemplos al respecto, por lo que no profundizaré en el problema.
El RdsON típico es \ $ 1 \ Omega \ $. Sus relés son 50mA, ocho de ellos suman 400mA, esto es 400mW disipados en el chip. Tiempos 19 fichas que suma hasta 7.6W. Esto es bastante poderoso, y el diseño de su placa debería tener esto en cuenta. Hay algunas sugerencias térmicas en la hoja de datos, léalas y entienda las implicaciones. Sin un disipador de calor de cobre, la resistencia térmica es de 80 ° C / W, a 0,4 W, 32 ° C por encima de la temperatura ambiente. Dependiendo de su aplicación, esto podría ser aceptable o no.
La frecuencia máxima de funcionamiento es de 10MHz, pero tengo la sensación de que no es necesario que vaya tan rápido. Tenga en cuenta también que manejará 19 entradas con una única salida Arduino para los pines comunes. Probablemente esté bien, pero la carga capacitiva puede ser bastante alta, por lo que el tiempo de subida y bajada será largo. No estoy seguro de si esto es un problema, esto requiere algunas mediciones, pero si mantiene su reloj más lento, estará más seguro y probablemente cumpla con sus especificaciones de tiempo de todos modos.