Tirar hacia arriba no funciona

Tengo una placa de prueba con algo de lógica. Incluyendo su propia fuente de alimentación. Está conectado a mi Arduino Mega 2560 para llenar un registro de desplazamiento con algunos bits. Cada vez que mi arduino está en un estado indefinido, quiero que los registros de desplazamiento se desactiven para evitar que el hardware sufra peligros. Undefind significa cuando está apagado. Dado que la lógica tiene su propia fuente de alimentación, podría dañar parte del hardware que alterno con los registros. (Alternando transistores con muchos LED)

Así que agregué un pull up al "pin en blanco" del shiftregister (2k 10k 18k). Pero no funciona como se esperaba. En este caso, no arroja nada (¡Los LED de prueba todavía están en algún tipo de estado indefinido cuando apago el arduino)! Si elimino la línea gnd entre el arduino y el protoboard, funciona.

Así que aquí hay un pequeño esquema (no completo, pero las cosas importantes):

ingrese la descripción de la imagen aquí

¿Qué estoy haciendo mal?


Editar. Lo siento, no soy tan bueno dibujando estos esquemas...ingrese la descripción de la imagen aquí

No estoy seguro de lo que quiere decir con pin "en blanco", pero creo que está hablando del pin OUTPUT ENABLE del 74HC595. Entonces, ¿haces esto bajo con el arduino, y quieres que el pull-up lo lleve a lo alto mientras el arduino está apagado? ¿Ha verificado cuál es el voltaje entre este pin y su riel GND cuando el arduino está apagado? Si ese pin es alto, debería poner las salidas en alta impedancia. Tal vez ese voltaje no sea tan alto como crees. No estoy muy seguro de en qué estado se encuentran los pines de arduino cuando están apagados, pero la corriente podría estar pasando a través de su pull up y de regreso a través de arduino...
Lo siento, eso no es un esquema, es un diagrama de cableado, y es casi imposible de seguir para nosotros. Cree un esquema adecuado (Fritzing tiene un modo esquemático).
... y fuera del arduino GND de regreso al protoboard GND. Por lo tanto, al quitar el cable de arduino GND a Breadboard GND, efectivamente lo abrió y luego el voltaje del pin subió. Me imagino que eso es lo que está sucediendo, pero debe verificar el voltaje entre su riel GND y el pin OE como dije.
tienes razón en lo que piensas. Lo jalo hacia abajo para habilitar la salida. Entre el riel gnd y el pin no tengo potencial si no hay resistencia en él. si le pongo 2k tengo 1,6V. a los 4k cae. Voy a agregar un esquema.
Esquemas agregados

Respuestas (1)

El pin "OE" no funciona como crees. No establece todas las salidas en "apagado" como cabría esperar. En su lugar, establece todas las salidas en "alta impedancia". Esto es como desconectar todos los cables de las salidas que se conectan a los transistores, dejando las bases de los transistores flotando, en un estado indefinido.

Debe conectar resistencias pull-up o pull-down (según el estado predeterminado que desee) a todas las salidas, de modo que cuando OE esté deshabilitado, los transistores se coloquen en el estado correcto.


Actualizar:

Después de la discusión, parece que el Arduino, cuando está apagado, está interfiriendo con el voltaje en el pin OE. El efecto se llama "retroalimentación", en el que la energía sale de su circuito y regresa al circuito sin alimentación, lo que puede dañar uno o ambos circuitos. La energía fluye de regreso al pin IO del Arduino, luego sube a través de los diodos ESD a su bus Vcc interno, luego a través de sus partes internas a GND.

Al desconectar la tierra del Arduino, estás rompiendo ese circuito, por lo que la energía no fluye.

La solución más simple es probablemente colocar un pequeño diodo en serie con el pin OE:

esquemático

simular este circuito : esquema creado con CircuitLab

Otra forma, quizás mejor, sería cambiar el OE usando un transistor NPN:

esquemático

simular este circuito

De acuerdo, eso es un problema, ya que ya no puedo agregar un pull up a todos los pnps. (75 en total en 10 registros) Supongo que necesito encender el arduino antes de encender la lógica... Me pregunto porque puedo deshabilitar todos mis pines poniendo el OE en alto cuando todo funciona. Siempre hago esto antes de agregar nuevos datos a los registros. Cuando termino, los habilito de nuevo. Y puedo deshabilitar todo levantando manualmente el OE cuando el arduino está fuera de línea ...
Tener OE bajo y MR bajo (baje MR con resistencia, manténgalo alto con Arduino) forzará todas las salidas a 0. MR establece el contenido de SR en 0, y OE low emite todo ese 0 a las salidas, aunque eso requiere alternar el pin STCP, así que olvídalo;)
Puede hacer que Arduino controle la potencia de la sección de registro de desplazamiento (Relé, FET, lo que sea adecuado para sus corrientes).
Eso podría funcionar como dices con eh MR. ¿Estás seguro sobre el OE? el Datashet dice algo más si lo hago bien: cdn-reichelt.de/documents/datenblatt/A240/74HC595%23STM.pdf Y me pregunto por qué puedo deshabilitar todas las salidas levantándolas.
No es una buena hoja de datos. Pruebe esta: nxp.com/documents/data_sheet/74HC_HCT595.pdf . Consulte la tabla de verdad .
Pero, ¿por qué funciona si el arduino está activo y no lo está, puedo habilitarlos así? El MR bajo y el OE bajo tampoco funcionan. Parece que tengo que habilitar/deshabilitar el Vcc de la placa. 5V y 6A algo alrededor de esto.
Intente ponerlo en su estado "apagado" con el Arduino, luego haga cosquillas en sus bases / puertas con el dedo; vea si se produce un cambio aleatorio.