Cuándo usar resistencias de pull-down contra pull-up

40

Después de aprender y experimentar con microcontroladores, he entendido el concepto de resistencias de pull-up y pull-down. Ahora entiendo cuándo y cómo usarlos y cómo funcionan. Principalmente utilicé pull-ups porque me enseñaron a hacerlo, pero siempre me ha parecido un poco hacia atrás, ya que al cerrar el interruptor, la entrada de MCU está en LOW. 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 mis entradas de un solo tiro hacia arriba o hacia abajo? ¿Cuándo es mejor tirar hacia abajo que tirar hacia arriba y viceversa?

    
pregunta osvein

5 respuestas

29

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

simular este circuito : esquema creado usando CircuitLab

Por otro lado, suponga que tiene un MOSFET de canal P en sentido ascendente, y desea que esté desactivado de forma predeterminada. Esta vez se requiere una resistencia de extracción para crear este comportamiento.

simular este circuito

También existe el caso alternativo en el que desea que un dispositivo esté activado de forma predeterminada, en cuyo caso los dos casos anteriores se revertirían (pull-up para el MOSFET de canal N, menú 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, necesiten 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 de extracción para obtener un alto potencial de salida.

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

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

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

    
respondido por el helloworld922
15

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 active-high o active-low .

Si son botones, asegúrate de usar un circuito de rebote (o hacerlo en software).

simular este circuito : esquema creado usando CircuitLab

    
respondido por el Samuel
15

Si el diseño de su circuito es tal que puede elegir, en otras palabras, el resto del circuito no le obliga a usar un tirón hacia arriba o hacia abajo, entonces debe considerar la protección y la seguridad en caso de falla.

Si su microcontrolador falla, o solo esa salida falla, la activación o desactivación estarán vigentes. ¿Cómo cambiará esto el funcionamiento de su dispositivo? ¿Pondrá al usuario en peligro, por ejemplo, forzando un elemento de calefacción? ¿Afectará la seguridad, como deshabilitar el bloqueo de una puerta?

Las resistencias de subida / bajada determinan el estado predeterminado del cable. Decidir cuál debe ser el estado predeterminado depende de la seguridad, la protección y, finalmente, la funcionalidad deseada del circuito.

    
respondido por el Adam Davis
5

Si está trabajando con un Arduino / ATmega328, puede utilizar la resistencia desplegable incorporada .

  

Hay resistencias pullup de 20K 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 tarjetas basadas en AVR, el valor se garantiza entre 20k 20 y 50kΩ. En el Arduino Due, está entre 50kΩ y 150kΩ. Para obtener el valor exacto, consulte la hoja de datos del microcontrolador en su tablero.

     

Al conectar un sensor a un pin configurado con INPUT_PULLUP, el otro extremo debe conectarse 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 .

    
respondido por el laktak
4

A menudo, usted desea desplegar o bajar, a menudo bajadas, en salidas de dispositivos programables como microcontroladores para definir su estado durante las secuencias de encendido. Estas salidas suelen ser de alta impedancia en el encendido, y los dispositivos conectados pueden obtener señales involuntarias si esto no se hace. Si, por ejemplo, hay varios suministros involucrados, es mejor diseñar cada sección como segura con cero voltios en las entradas y usar menús desplegables.

Un poco más oscuro que las otras respuestas, pero he visto ejemplos relacionados con humo azul y amenazas de acción legal.

    
respondido por el Dave B

Lea otras preguntas en las etiquetas