Resistencias pull-up y pull-down

Se que muchos piensan que soy un genio pero la verdad es que soy bastante torpe, os voy a contar una que hice hace poco: decidí utilizar un Joystick Shield para controlar un pequeño brazo robot y tras pasarme un rato soldándolo lo monté sobre un Arduino y el comportamiento de los botones era caótico, tras un rato de mirar y remirar di con el problema: los pulsadores no llevaban resistencia de pull-down. Me quedé desolado ¿tendría que soldarlas en el shield? No quedaría bonito ¿no las traía en el Shield? Que chapuza!!, madre de Dios con los que he vendido de esos ¿mis clientes habrán tenido ese mismo problema?.

Esa noche me acosté un poco agobiado por el tema pero a la mañana siguiente mi primer pensamiento fue: resistencias de pull-up internas, solo tenia que activarlas… no hay como dormir unas horas.

…Y pensé en hacer un tutorial sobre el Joystick Shield y las resistencias de pull-up internas …pero mejor explico antes que puñetas es una pull-up y una pull-down, que es un tema sobre el que hay muchas dudas entre los no iniciados.

Haciendolo fácil: todos hemos usado una resistencia de 10KOhms entre un pulsador y la masa para “filtrar” la señal y hacerla estable, o entre un sensor y la masa para lo mismo, e incluso alguno ha conectado ese sensor con la resistencia entre el y 5v y se ha dado cuenta que el funcionamiento del sensor era inverso, pues esas resistencias son las de pull y si se situan entre señal y masa (nivel bajo) son pull-down y entre señal y 5v (nivel alto) son pull-up.

pull-downCuando la resistencia está entre la señal y masa (pull-down) el pin de lectura está conectado, en reposo, a masa por lo que lee un nivel bajo y cuando se acciona el pulsador al pin de entrada le llegan los 5v y pasa a leer un nivel alto. De esta forma es como se suelen conectar todos los pulsadores por ser la más intuitiva.

 

pull-upEl caso inverso se produce cuando la resistencia esta montada entre 5v y el pin de lectura, entonces los 5v llegan al pin a través de la resistencia y se lee un nivel alto cuando el pulsador está en reposo. Cuando se acciona el pulsador toda la intensidad de la alimentación va directa a masa y a través del pin de entrada se lee un nivel bajo, sería el equivalente a un pulsador Normalmente Cerrado que al accionarse se abre, pero hecho con un pulsador Normalmente Abierto.

Esto sucede también cuando en lugar de un pulsador se conecta un sensor que nos da una salida analógica (como una LDR), pero como no hay un todo o nada el sensor se comporta de un modo “normal” con la configuración pull-down y se comporta “invertido” en la configuración pull-up, os invito a que hagáis la prueba.

Llegados a este punto ya podemos pasar al Joystick Shield pues lleva los pulsadores conectados a entradas digitales sin resistencia alguna… y puede ser también útil para cuando queramos disparar una acción con un simple puente entre 5v (o GND) y un pin digital sin utilizar un pulsador.

Arduino lleva instaladas en todos los pines resistencias de pull-up internas (que en la página oficial no se aclara bien si son de 100MOhms o 20KOhms) que están desconectadas por defecto. Para activarlas basta con hacer lo siguiente en el momento de declarar el pin como entrada:

1
2
3
pinMode(pin, INPUT);

digitalWrite(pin, HIGH);

Es decir, declaramos el pin como entrada y seguidamente escribimos un nivel alto en el.

Desde la versión 1 del IDE está disponible una forma más directa de hacerlo:

1
pinMode(pin, INPUT_PULLUP);

Haciendo esto cuando conectamos un pulsador al pin o cuando o lo dejamos sin conectar al hacer una lectura digital leeremos un nivel alto y al accionar el pulsador o poner un puente a GND la lectura cambiará a nivel bajo. A partir de aquí ya podemos trabajar.

Como está quedando largo mejor hago el tutorial sobre el Joystick Shield en otro tuto.


Si este tutorial te ha sido de utilidad puedes considerar hacerme un donativo, por pequeño que sea estarás contribuyendo a que siga con esta labor.


Deja un comentario

Campos requeridos marcados con *.


Una estúpida ley me obliga a molestarte con algo obvio: este sitio utiliza cookies. Aquí tienes el ladrillo en cuestión por si quieres leerlo