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):
¿Qué estoy haciendo mal?
Editar. Lo siento, no soy tan bueno dibujando estos esquemas...
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:
simular este circuito : esquema creado con CircuitLab
Otra forma, quizás mejor, sería cambiar el OE usando un transistor NPN:
krb686
Majenko
krb686
bennx
bennx