Resistencias pullup y pulldown: su importancia y Arduino

Seguramente te hayas encontrado con valores de voltaje que no esperabas y no deberían ser los que son según tus cálculos, o has visto hablar de resistencias pullup y pulldown pero no has acabado de entender por qué ni cómo se utilizan.

En este artículo te explicaré la razón por la que son importantes y como implementarlas tanto externamente como con ayuda de un Arduino, ¡vamos allá!

Señales fuertes y débiles

Tenemos que empezar explicando por qué son importantes las resistencias pullup y pulldown repasando el concepto de señales fuertes y débiles:

Cuanta más pequeña sea la impedancia (la resistencia) del camino a un voltaje de referencia, más fuerte es la señal forzada por este camino. En otras palabras, un voltaje que tiene fácil llegar a un punto llegará con más fuerza.

Esto es muy importante a la hora de determinar a qué voltaje estará un punto en concreto del circuito. A continuación expongo una lista con circuitos con señales fuertes a débiles:

  • Cortocircuito o interruptor ideal cerrado;
  • interruptor cerrado;
  • resistencia mediana;
  • resistencia grande;
  • interruptor real abierto;
  • circuito abierto o interruptor ideal abierto.

Este concepto es importante cuando nos encontramos con señales de fuerza diferente que “pelean” por un punto en el circuito. A continuación puedes ver 3 ejemplos de circuitos que mezclan señales, iguales o diferentes:

Si cerramos más de un interruptor, el valor será de voltaje tierra, sin conflictos.

En este circuito vemos señales fuertes actuando sobre un mismo punto, pero son del mismo valor (tierra), por lo que no hay conflicto y el voltaje en el punto de intersección es claramente tierra.

¡Este caso es inaceptable!

En este ejemplo vemos que dos señales fuertes discuten por el punto intermedio. Una tiene valor Vcc y la otra tierra, creando un conflicto eléctrico. ¡Esta situación no debe darse nunca!

Si cerramos cualquiera de los interruptores, tendremos un valor de voltaje bajo. Si ambos están abiertos, un valor alto.

En este circuito vemos conflicto de señales, pero tienen diferente fuerza. Impera la señal fuerte y por lo tanto sabemos a qué voltaje estará el punto señalado.

Pullup y pulldown

Siguiendo el concepto anterior, las resistencias pullup y pulldown (en castellano, tirar hacia arriba y tirar hacia abajo) se utilizan para proveer a un camino de una señal débil, que únicamente será relevante cuando no exista una señal fuerte. De esta manera, podemos asegurar un estado de bajo voltaje (pulldown), o de alto voltaje (pullup) en el estado de reposo del circuito (por ejemplo, cuando un interruptor esté abierto o un sensor no proporcione una señal alta):

Pullup, arriba, y pulldown, debajo.

En la práctica, una resistencia de 10kΩ suele ser apropiada para esta función.

En Arduino

Arduino, como siempre, nos ayuda en esto aportando resistencias pullup (las pulldown deberíamos implementarlas nosotros externamente) a las que podemos acceder por software:

Digital Pins | Arduino Documentation
Discover how digital pins work and how they can be configured.

Para ello, basta con especificar el modo del pin de la siguiente manera:

pinMode(pin,INPUT_PULLUP);
Donde "pin" es nuestro puerto con el pullup.

De esta manera, cuando no llegue una señal fuerte a este pin, leerá un valor alto.

En versiones anteriores de Arduino, antes de la versión 1.0.1, era posible acceder a esta funcionalidad de la siguiente manera:

pinMode(pin, INPUT);           
digitalWrite(pin, HIGH);       
Versión antigua.

Conclusiones

Espero que hayas encontrado de utilidad este artículo, y te recomiendo que lo tengas siempre en cuenta, pues muchas veces un conflicto de señales fuertes es el causante de errores de otra forma inexplicables.


💡
En calidad de Afiliado de Amazon, obtengo ingresos por las compras adscritas que cumplen los requisitos aplicables

Si estás buscando una alternativa económica a Arduino, sobre todo si es la segunda o tercera placa, recomiendo las alternativas económicas de Elegoo que puedes encontrar en Amazon, tal y como explico en mi guía de compras:

Elegoo compatible Arduino UNO

Ver en Amazon