Pull up no funciona

1

Tengo un tablero con algo de lógica en él. Incluyendo su propio poder. Está conectado a mi Arduino Mega 2560 para llenar un registro de desplazamiento con algunos bits. Cada vez que mi arduino se encuentra en un estado no definido, quiero que los registros de desplazamiento estén desconectados para evitar riesgos en el hardware. Undefind significa cuando está apagado. Como la lógica tiene su propia fuente de alimentación, podría dañar parte del hardware que alterno con los registros. (alternar transistores con muchos leds en él)

Así que agregué un tirón hacia arriba al "pin en blanco" del registro de cambios (2k 10k 18k). Pero no funciona como se esperaba. En este caso, no dice nada (los leds de prueba todavía están en algún tipo de estado no definido cuando apago el arduino). Si elimino la línea gnd entre el arduino y la placa de base, funciona.

Así que aquí hay un pequeño shematic (No está completo, pero sí lo importante):

¿Quéestoyhaciendomal?

Editar.Losiento,nosoytanbuenoeneldibujodeestosesquemas...

    
pregunta BennX

1 respuesta

2

El pin "OE" no funciona tan bien como crees. No establece todas las salidas en "off" como esperaría. En su lugar, establece todas las salidas a "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.

Debes conectar resistores de pull-up o pull-down (según el estado predeterminado que quieras) a todas las salidas para que cuando el OE esté deshabilitado, los transistores pasen al estado correcto.

Actualización:

Después de una discusión, esto suena como que el Arduino, cuando está apagado, está interfiriendo con el voltaje en el pin OE. El efecto se llama "back powering" (potencia de retorno), donde la energía fluye de su circuito a un circuito sin alimentación, lo que puede dañar uno o ambos circuitos. La energía fluye hacia atrás en el pin IO del Arduino, luego sube a través de los diodos ESD a su bus Vcc interno, luego a través de sus internos en GND.

Al desconectar el suelo de Arduino, estás rompiendo ese circuito, por lo que la potencia no fluye.

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

simular este circuito : esquema creado usando CircuitLab

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

simular este circuito

    
respondido por el Majenko

Lea otras preguntas en las etiquetas