74hc595n error de registro de desplazamiento

Quiero poner en serie 2 74hc595N. Hice el esquema desde aquí :

Figura 1

Cuando envío un valor el primer registro lo envía también al segundo. Tengo el mismo valor en ambos. Los cambio (maestro/esclavo) pero el resultado es el mismo. Lo que estoy haciendo mal porque hace varios días lo hice y funcionó.... No puedo resolverlo.

Respuestas (3)

heladería alberto

Albert, Bob, Charlene y Daisy están alineados en orden alfabético.

Albert está en el papel de la CPU, sirviendo el helado. Primero saca el helado de dátiles y pasas y se lo da a Bob, ¡aunque Bob odia las pasas! Luego, Albert saca el helado con trocitos de chocolate y también se lo da a Bob. Finalmente, Albert saca un flotador de vaca marrón y también se lo entrega a Bob.

Bob, Charlene y Daisy están en el papel de la cola de la cadena de margaritas '595. Funciona como una cinta transportadora. Si todo sale bien, Daisy obtiene el helado de pasas y dátiles, Charlene obtiene el helado con trocitos de chocolate y Bob obtiene el flotador de vaca marrón.

Ocasionalmente, la CPU impulsa una transición positiva en el "pin del pestillo", también llamado "pin del reloj del registro de almacenamiento", en el pin 12 del '595. Esto es como si Albert gritara: "Todo listo. ¡Disfruta del helado que tienes delante!".

Entonces todos son felices. (Incluso Bob, que odia las pasas, está feliz).

hardware

Parece que su hardware está bien: la salida MOSI de la CPU (en su caso, el pin 2 de Arduino) está conectada a la entrada MOSI del primer pin 14 del '595; y la salida MISO en cadena del primer pin 9 del '595 está conectada a la entrada MOSI del segundo pin 14 del '595.

software

Estoy bastante seguro de que estamos viendo un error de programación menor o un error conceptual menor: ¿Por qué algunas personas piensan que "255" es algo especial?

Parece que el software está enviando 8 bits al primer chip '595 sin problemas.

Cada vez que envía un byte al primer '595 con shiftRegister.send(), los datos que se encuentran actualmente en ese primer '595 se eliminan y se colocan en el segundo '595. Esa es la forma en que se supone que funcionan los registros de desplazamiento en cadena . El segundo '595 de la cadena siempre está activo.

A menudo tenemos una larga cadena de fichas '595 y solo queremos actualizar el valor en la primera de la cadena. La única forma de hacerlo con la configuración normal de conexión en cadena es que el programa en la CPU recuerde cada valor en cada chip '595 y vuelva a enviar todos los valores. El programa de registro de turnos de johnny-cinco probablemente necesite hacer algo como:

var first_595 = 24;
var second_595 = 10;
var third_595 = 5;
// ...
// Always send all three values, in this order:
shiftRegister.send(third_595);
shiftRegister.send(second_595);
shiftRegister.send(first_595);

A algunas personas les parece un poco al revés que el primer valor que saca la CPU es el valor del último chip '595 de la cadena; y el último valor que saca la CPU es el valor del primer chip '595 conectado directamente a la CPU.

¿Qué puedo decir? Así funciona la heladería de Albert.

Estás enviando los mismos datos seriales a ambos. No hagas eso. En su lugar, conecte la salida serial del primero a la entrada serial del segundo.

Conecté q7' (9 pines) al pin de datos en el segundo (14 pines).
¿Y estás enviando dos bytes diferentes seguidos?
No. Envío solo un valor. como 24.... hasta 255 el segundo no debe estar activo...
¿Lo estás enviando como un byte o como dos?
No sé, uso johnny cinco (node.js) para hacer eso. es como shiftRegister.send(24);
¿Qué es lo que estás tratando de hacer que suceda?

Esta pregunta muestra un esquema para conectar varios 595 en serie o en paralelo. Si desea que esos chips se conecten en serie, Q0-Q7 solo debe ir al primer chip y Q7 'del primer chip al pin de datos del segundo chip. En su esquema, Q0-Q7 están conectados a ambos chips 595.

En el lado del software, debe enviar a bytes. El primero establece los valores en el segundo chip en serie y el segundo byte en el primer chip. (Es como si se pasaran bits de un chip a otro). Luego, debe lanzar el pestillo para establecer esos valores en las salidas del 595s.

La mayoría de las veces, algo está mal conectado, hay una mala conexión o incluso más probablemente un simple error en el software.