Artículos recientes

Novedades

Resistencias Pull-Up y Pull-Down

Resistencias Pull-Up y Pull-Down

Cuando en nuestros proyectos tenemos la necesidad de utilizar entradas digitales debemos tener presentes términos como resistencias pullup o pulldown. Los pulsadores o push buttons son un tipo de entrada digital muy utilizados, su función es cambiar de estado (abierto/cerrado) cuando es presionado. Con este cambio de estado podemos hacer que en la entrada del microcontrolador o Arduino tengamos 0V o 5V, pero para eso es necesario agregar además una resistencia en configuración pull-up o pull-down de acuerdo a nuestro criterio. Estas configuraciones son necesarias pues de otra manera el Arduino no sería capaz de distinguir correctamente el voltaje en la entrada, esto porque cuando el pulsador está abierto, el voltaje en la entrada no está determinado y puede ser leído como un 0 o un 1. Las resistencias pull-up y pull-down nos permiten establecer voltajes de reposo para cuando el pulsador no está presionado y asegurar una correcta lectura.

Resistencia Pull-Up

Como su nombre indica esta resistencia tiene la función de “jalar” hacia “arriba”, lo que significa que polariza el voltaje hacia el voltaje de fuente (VDD) que puede ser +5V o +3.3V. De esta forma cuando el pulsador está abierto o en reposo, el voltaje en la entrada del Arduino siempre será de +5V. Las entradas del Arduino son de alta impedancia lo que significa que la corriente que circulará por esa línea sea mínima en el orden de los micro-amperios, por lo que el voltaje que “cae” en la resistencia pull-up es mínimo y tenemos casi el mismo voltaje de fuente en la entrada del Arduino.

Cuando el pulsador es presionado, la corriente circula por la resistencia y luego por el pulsador, de esta forma tenemos que el voltaje en la entrada del Arduino es Tierra o 0V.

Entonces en la configuración pull-up cuando el pulsador está en reposo el Arduino lee 1 y cuando presionamos leerá 0.

Resistencia Pull-Down

De forma similar la resistencia pull-down “jala” el voltaje hacia “abajo” o “0V”. Cuando el pulsador está en reposo, el voltaje en la entrada del Arduino será 0V. Cuando presionamos el pulsador la corriente fluye de +5V por el pulsador hacia la resistencia y termina en 0V, de esa forma tenemos +5V en la entrada del Arduino.

Entonces en la configuración pull-down cuando el pulsador está en reposo el Arduino lee 0 y cuando presionamos leerá 1.

 

¿Cuál configuración debo usar?

Esto depende del criterio del diseñador, no existen mayores diferencias técnicas. La configuración más popular es la de tipo pull-up, debido a que muchos microcontroladores incluido Arduino poseen resistencias pull-up internas, las cuales pueden ser activadas utilizando un comando en el programa del microcontrolador y así ahorrar el uso de resistencias. Se debe tener en cuenta que para la configuración pull-up se lee “0” cuando el pulsador es presionado.

¿Qué valor de resistencia debo utilizar?

Podemos utilizar resistencias con valores entre 1K y 10K, esto dependerá de algunos factores como la frecuencia de variación, longitud del cable. Sin embargo hay que destacar que cuanto mayor sea la resistencia para el pull-up, más lento es el pin en responder a los cambios de voltaje. Esto es debido a que el sistema que alimenta el pin de entrada es esencialmente un condensador junto con la resistencia pull-up, formando de esta manera un filtro RC, y filtros RC tardan tiempo para cargarse y descargarse. Si tienes una  señal de cambio muy rápido (como USB), un alto valor de resistencia de pull-up puede limitar la velocidad a la que el pin puede cambiar de estado. Por lo que es más común encontrar valores de pull-up entre 1KΩ y 4.7KΩ.

Activar Pull-up interno en Arduino

Muchos microcontroladores incluyen resistencias pull-up internas, las cuales se puede activar mediante instrucciones en el programa.Para el caso de Arduino solo se tiene declarar al momento del setup:

pinMode(pin, INPUT_PULLUP);           //declara un pin como entrada y activa la resistencia pullup interna para ese pin

Esta técnica es muy utilizada tanto para conectar pulsadores como para circuitos I2C.

2 Comments

    • Avatar
      Giovany Arana Loaiza
      nov 20, 2017

      Muy buen artículo. Una explicación muy fácil de entender. Muchas gracias.

    • Avatar
      Ernesto Beltran
      ene 17, 2018

      Muchas gracias, con ese valor de resistencia fue que funcionó, sos muy amable, larga vida

Leave a Reply

* Name:
* E-mail: (Not Published)
   Website: (Site url withhttp://)
* Comment: