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:
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.
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!
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):
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:
Para ello, basta con especificar el modo del pin de la siguiente manera:
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:
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.
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: