Mejor usa un registro de desplazamiento, gastas menos pines.
Desde que empezó este tema ya Scooter al principio y varios de ustedes me recomendaros los registros de desplazamiento y fue algo que me quedo picando. Efectivamente la idea de un demultiplexador BUENO es que justamente con la menor cantidad de pines del µC pueda controlar la mayor cantidad posible de salidas.
Así que me dediqué a revisar el catálogo de la casa de componentes local y a donde encontraba algo que pudiese mejorar este sistema revisaba datasheet. Vi como 40
, pero mis esfuerzos fueron fructíferos porque creo haber encontrado lo que estaba buscando.
1. Vamos a hacer algunos ensayos con otro integradito simpático, morocho y cuadradito que se llama HEF4094:
Éste es un registro de desplazamiento SIPO (Serial In-Parallel Out), posee cuatro entradas: DATA, CLOCK, OUTPUT ENABLE y STROBE. Además hay 8 salidas paralelas (QP0 a QP7) y 2 salidas seriales que por el momento ignoraremos (QS1 y QS2, son para ponerlos en cascada).
2. Alimentemos al chiquitín:
3. Colocamos a un lateral las salidas en orden desde QP0 (a la izquierda) hasta QP7 (derecha):
4. Incorporamos 8 resistores de 470Ω:
5. Agregamos 8 LED para saber que pasa adentro del aparato:
6. Por el momento vamos a dejar las salidas constantemente habilitadas, para lo cuál tiramos el pin 15 a V+ (en este caso 5V) mediante un resistor de 10KΩ:
7. El pin de STROBE al estar en estado alto transfiere los datos desde cada registro de desplazamiento a la memoria interna. En este caso vamos a dejarlo constantemente habilitado, de modo que los datos solo
pasen:
8. Por lo tanto solo vamos a pilotear dos pines de control: el CLOCK y el DATA (y si, lo mínimo
). Accedamos a ellos mediante dos resistores de 1KΩ:
9. Para controlar nuestro engendrillo necesitamos generar señales lógicas, por lo que volveré a repetir el flip-flop del 555 que use antes para manejar que DATA mando. Para el clock voy a usar otro injerto quinientoscincuentesco, el sensor táctil:
Mucho más cómodo y elegante para darle pulsos al engendrillo
A la derecha he dispuesto el flip-flop de DATA (LED amarillo) y a la izquierda tengo el sensor táctil, del cual cuelga el cable verde que usaré para activar el CLOCK.
10. Conectamos las salidas de los 555 a los resitores de 1KΩ que nos están esperando en el 4094 (DATA cable azul, CLOCK cable amarillo):
11. Bueno, el ensayo es simple. Dejé en estado alto DATA y dí tres pulsos de CLOCK:
12. Cambié el estado de DATA y dí tres pulsos más de CLOCK:
13. Volví a cambiar DATA y dos pulsilios más
:
Y me armé mi bus de 8 bit
El razonamiento de esto es que al incorporarlo a lo que tenemos (ojo, aún quiero probarlo con el Arduino) podríamos generar con 4 pines del µC 40 salidas. Más aún si conseguimos un contador de 16, que sé que los hay.
Ventajas: ahorramos pines, tenemos constante control de las salidas.
Desventajas: perdemos velocidad ya que no solo hay que comerse el escribir dato por dato
y dar el reloj para cada dato
sino que además tenemos que comernos contar dos veces
y resetear ese contador
(cuatro palmazos).
Lo que sigue es un ensayo del conjunto completo.
Y capaz que después me copo en ir para el otro lado y vemos de hacer un multiplexador piola