Estoy planeando encadenar 40 x 74HC595 registros de desplazamiento. Toda la cadena de 74HC595s será controlado por un microcontrolador 5 V, que generará los SDI
, CLOCK
y LATCH
señales.
Cada registro de desplazamiento y el microcontrolador tendrán su propia PCB, como se ilustra en el siguiente diagrama:
Debido a restricciones mecánicas, la distancia entre cada registro de desplazamiento será de aproximadamente 30 cm (12 pulgadas), por lo que las señales de control viajarán a lo largo de una distancia de aprox. 12 m (40 pies). Además de eso, todo el sistema se montará en un entorno muy ruidoso (cerca de luces fluorescentes, cables de alimentación, etc.)
Mi preocupación es que las señales de control serán muy ruidosas y los registros de desplazamiento pueden generar cosas incorrectas. Estaba pensando en:
- Usando un buffer IC en cada placa, para amortiguar las señales de control. ¿Cuál recomendarías?
- Usando cables blindados entre los tableros para las señales
- Bajando la
CLOCK
frecuencia tanto como sea posible. Solo necesito actualizar el contenido de los registros varias veces al día.
¿Son buenas las soluciones anteriores? ¿Qué más puedo hacer para mantener el ruido (potencial) en los cables de señal al mínimo?
fuente
Respuestas:
Utilice buffers de disparador Schmitt en las entradas de cada placa. Limpiarán las señales para que cualquier ruido no dé pulsos falsos en el reloj, por ejemplo. El 74LVC3G17 es un buffer triple no inversor.
Además, pase las señales almacenadas al siguiente tablero. De lo contrario, todas las entradas serían paralelas y es posible que exceda el despliegue del microcontrolador de conducción (especialmente estoy pensando en la carga capacitiva total). La cadena tipo margarita de las señales de reloj y pestillo generará un retraso de onda en toda la cadena, pero los datos también lo harán, y de todos modos planeas ir a baja velocidad.
fuente
El problema que puede ocurrir es que algunos relojes SR antes de los siguientes relojes SR, por lo que el siguiente SR registrará los datos incorrectos. Una solución (¿estándar?) Para esto es conectar el reloj a partir del último SR.
Consideraría agregar un búfer (schmit-trigger?) En cada placa para las 3 líneas de señal.
(editar) Reducir la frecuencia del reloj no ayudará (a menos que sea demasiado alto para empezar). Los problemas que puede tener ocurren en los bordes del reloj, que tendrá de todos modos, sin importar cuán baja elija la frecuencia de su reloj.
fuente
El mayor problema al encadenar registros de turnos es garantizar que la relación de tiempo entre el reloj utilizado por cada placa utiliza para recibir datos y el cambio en los datos de la placa anterior es predecible. El hecho de que la salida del 74HC595 cambie en el mismo borde que el reloj es un poco molesto en ese sentido. Sugeriría que la señal del reloj se proteja a medida que pasa por cada placa y que la señal de datos que sale del 74HC595 de una placa se transfiera a un búfer que la retrasará un tiempo un poco más que el búfer del reloj.
Alternativamente, podría usar un registro de desplazamiento como el 74HC4094 que tiene su cambio de salida de datos en el borde del reloj descendente, o podría agregar un flip flop entre la salida del último 74HC595 en el tablero y el siguiente tablero, y tener ese flip flop bloquee su salida en el borde descendente del reloj que acciona los 74HC595 (tal vez pase el reloj a través de dos inversores para protegerlo y alimentar la señal del reloj invertido al flip flop).
Si el número de salidas 74HC595 que usará es uno (o más) menor que el número suministrado por sus chips (por ejemplo, en una placa con dos 74HC595, en realidad solo necesita 15 salidas), puede alimentar el último 74HC595 en una placa con un reloj invertido de los demás, pero eso le costaría el uso de una salida 74HC595 por cada vez que la señal pase entre un reloj no invertido 74HC595 y un reloj invertido 74HC595.
fuente