Cuándo usar resistencias pull-down vs. pull-up

42

Después de aprender y experimentar con microcontroladores, he entendido el concepto de resistencias pull-up y pull-down. Ahora entiendo cuándo y cómo usarlos, y cómo funcionan. Principalmente he usado pull-ups porque me lo enseñaron, pero siempre me ha parecido un poco hacia atrás, ya que al cerrar el interruptor, la entrada de MCU está en BAJA. Creo que tendría más sentido usar una resistencia desplegable, de modo que la entrada sea BAJA cuando el interruptor esté abierto, pero esa es solo mi forma de pensar.

¿Debo subir o bajar mis entradas de un solo tiro? ¿Cuándo se prefiere tirar hacia abajo sobre tirar hacia arriba y viceversa?

osvein
fuente
3
Como (otra) electrónica nueva abeja, tengo que decir que esta pregunta no es estúpida. No sé tampoco, pero porque: "Visto: 1989 veces".
steenhulthin
* porque * 12998 veces
Mike Causer

Respuestas:

29

La respuesta depende de lo que desee que sea la configuración "predeterminada". Por ejemplo, supongamos que tiene un MOSFET de canal N descendente y desea que esté desactivado por defecto. Luego usaría una resistencia desplegable para garantizar este comportamiento si la entrada se convierte en alta impedancia.

esquemático

simular este circuito : esquema creado con CircuitLab

Por otro lado, suponga que tiene un MOSFET de canal P ascendente y desea que esté desactivado por defecto. Esta vez se requiere una resistencia pull up para crear este comportamiento.

esquemático

simular este circuito

También existe el caso alternativo en el que desea que un dispositivo esté encendido por defecto, en cuyo caso los dos casos anteriores se invertirían (pull-up para el MOSFET de canal N, desplegable para el MOSFET de canal P).

Algunas otras consideraciones:

  1. Las líneas I2C especifican resistencias pull-up porque se "espera" que los dispositivos tengan un drenaje abierto a tierra, y por lo tanto necesitan alguna forma de aumentar el potencial de la línea.

  2. Los comparadores analógicos generalmente se configuran como dispositivos de drenaje abierto y, por lo tanto, también necesitan resistencias pull up para obtener una salida de alto potencial.

  3. Puede dibujar más corriente usando resistencias pullup / pulldown, dependiendo de lo que esté conectado a la entrada / salida.

  4. Cualquiera de las configuraciones podría funcionar igualmente bien en su aplicación (es decir, no hay una ventaja significativa de una forma u otra).

... Y cualquier número de razones muy específicas de la aplicación por las que se puede preferir una configuración.

helloworld922
fuente
16

Si la señal aún no tiene una especificación, use la que tenga más sentido para usted. Es su elección hacer una entrada activa-alta o activa-baja .

Si se trata de botones, asegúrese de usar un circuito antirrebote (o hágalo en el software).

esquemático

simular este circuito : esquema creado con CircuitLab

Samuel
fuente
+1 para la única comparación lado a lado de activo-alto versus activo-bajo que he visto. Agradable, aclara las cosas.
TomServo
15

Si el diseño de su circuito es tal que puede elegir, en otras palabras, el resto del circuito no le exige usar un pull up o pull down, entonces debe considerar la seguridad en caso de falla.

Si su microcontrolador falla, o solo falla esa salida, el pull up o pull down estará en vigor. ¿Cómo cambiará esto el funcionamiento de su dispositivo? ¿Pondrá al usuario en peligro, por ejemplo al forzar un elemento calefactor? ¿Afectará la seguridad, como deshabilitar la cerradura de una puerta?

Las resistencias pull up / down determinan el estado predeterminado del cable. Decidir cuál debería ser el estado predeterminado depende de la seguridad y, finalmente, de la funcionalidad deseada del circuito.

Adam Davis
fuente
5

Si está trabajando con un Arduino / ATmega328, puede usar la resistencia pull-up incorporada .

Hay 20K resistencias pullup integradas en el chip Atmega a las que se puede acceder desde el software. Se accede a estas resistencias pullup incorporadas configurando el pinMode () como INPUT_PULLUP. Esto invierte efectivamente el comportamiento del modo ENTRADA, donde ALTO significa que el sensor está apagado y BAJO significa que el sensor está encendido.

El valor de este pullup depende del microcontrolador utilizado. En la mayoría de las placas basadas en AVR, el valor está garantizado entre 20kΩ y 50kΩ. En el Arduino Due, está entre 50kΩ y 150kΩ. Para conocer el valor exacto, consulte la hoja de datos del microcontrolador en su placa.

Al conectar un sensor a un pin configurado con INPUT_PULLUP, el otro extremo debe estar conectado a tierra. En el caso de un interruptor simple, esto hace que el pin lea ALTO cuando el interruptor está abierto, y BAJO cuando se presiona el interruptor.

La Raspberry Pi también los tiene .

laktak
fuente
4

Con frecuencia, desea pull-ups o down - a menudo down - en las salidas de dispositivos programables como microcontroladores para definir su estado durante las secuencias de encendido. Tales salidas son a menudo de alta impedancia al encender, y los dispositivos conectados pueden recibir señales no deseadas si esto no se hace. Si, por ejemplo, están involucrados múltiples suministros, es mejor diseñar cada sección como segura con cero voltios en las entradas y usar pull-down.

Un poco más oscuro que las otras respuestas, pero he visto ejemplos que involucran humo azul y amenazas de acciones legales.

Dave B
fuente
Aclaración: la pregunta no era por qué uno debería usar resistencias pull-up o pull-down, sino si uno debería subir o bajar.
osvein