Sei sulla pagina 1di 11

27/11/2017 Leer un pulsador con Arduino

       

LUIS LLAMAS
Ingeniería, informática y diseño

TUTORIALES ARDUINO TUTORIALES ARDUINO BASICOS

LEER UN PULSADOR CON ARDUINO

2 SEPTIEMBRE, 2014

     

En el tutorial entradas digitales en Arduino vimos como leer un sensor


que proporcione una señal digital con dos niveles de tensión LOW y HIGH.
Nos quedó pendiente aprovechar las entradas digitales para leer el estado
de un interruptor o pulsador con Arduino.

Para ello necesitaremos realizar correctamente un montaje especí co


y la ayuda de dos nuevas amigas las resistencias de Pull Down y Pull Up.
Aunque ambos casos son muy similares, el montaje y el tipo de resistencia

https://www.luisllamas.es/leer-un-pulsador-con-arduino/ 1/11
27/11/2017 Leer un pulsador con Arduino

a usar dependerá de si queremos que al accionar el pulsador o interruptor


leamos un valor LOW o HIGH.

Para entender el funcionamiento de ambos montajes vamos a


presentar el razonamiento lógico por el cuál se llega al mismo, para lo
cuál utilizaremos dos montajes incorrectos que nos ayudarán a entender el
papel de cada elemento en el montaje de nitivo.

Por tanto, empezamos con el primer intento de realizar una lectura del
estado del pulsador.

Otra forma más avanzada de leer un pulsador es emplear


 interrupciones y aplicar un debounce para ltrar la entrada, como
vemos en esta entrada

PRIMER INTENTO, CONEXIÓN DIRECTA


Nuestra primera idea para leer un pulsador podría ser conectar
directamente un PIN digital de Arduino a un valor de tensión de
referencia, ya sea este 0V o 5V. Al cerrar el pulsador la tensión en el PIN
sería el valor de referencia (0V o 5V depende del montaje) y podríamos
realizar la lectura como en cualquier entrada digital.

https://www.luisllamas.es/leer-un-pulsador-con-arduino/ 2/11
27/11/2017 Leer un pulsador con Arduino

¿Cuál es el problema? Bueno, esto funcionará cuando el interruptor


está cerrado. Pero, ¿Qué pasa cuando el interruptor está abierto? En
este caso estamos dejando el PIN totalmente desconectado de cualquier
tensión, algo que denominaremos estado de alta impedancia.

¿Qué valor registra un autómata si realizamos la medición en estado


de alta impedancia? Pues depende de varios factores, como la
construcción interna del autómata o el último estado al que haya estado
conectado. Pero, en resumen, la entrada está en un estado
indeterminado, es decir, que puede asumir cualquier valor. Por tanto es
necesario evitar esta situación en nuestros diseños.

¿Cómo podemos resolver este estado de indeterminación? Bueno,


esto nos lleva directamente a nuestro segundo intento.

MEJORANDO NUESTRA SOLUCIÓN, DOBLE


CONEXIÓN
Lo siguiente que podríamos pensar es conectar el PIN a dos
referencias de tensión, alternadas en función del estado del interruptor:

Para medir un valor LOW al accionar el interruptor, podemos conectar el


PIN de forma ja a 5V, y a 0V a través del interruptor. Con el interruptor
abierto leeríamos HIGH, y al cerrar el interruptor se forzaría 0V en el PIN,
por lo que leeríamos LOW.

Para medir un valor HIGH al accionar el interruptor, podemos conectar el


PIN de forma ja a 0V, y a 5V a través del interruptor. Con el interruptor
abierto leeríamos LOW, y al cerrar el interruptor se forzaría 5V en el PIN,
por lo que leeríamos HIGH.

https://www.luisllamas.es/leer-un-pulsador-con-arduino/ 3/11
27/11/2017 Leer un pulsador con Arduino

¿Cuál es el problema de este montaje? Pues que al pulsar el


interruptor estamos conectando directamente los valores de 0V y 5V, lo
que signi ca que estamos causando un cortocircuito. Esto provocaría el
paso de un elevado de corriente y un rápido calentamiento de
componentes y conductores.

¿Cómo evitar este cortocircuito? Bueno, estamos cerca. Esto lo


veremos a continuación en el montaje de nitivo.

Los cortocircuitos son fallos peligrosos. Además de dañar algún


 componente podéis llegar a provocar un incendio. Ser cuidadosos.

El montaje tampoco funcionaría porque estaríamos conectando el


PIN simultáneamente a 0V y 5V, por lo que tendríamos nuevamente
 una indeterminación, y la medición real dependería de la resistencia
de los conductores a ambos niveles de tensión.

MONTAJE CORRECTO, RESISTENCIAS DE


PULL-DOWN O PULL-UP
Como habíamos adelantado, para resolver el montaje correctamente
necesitaremos la presencia de dos nuevas amigas, las resistencias de Pull

https://www.luisllamas.es/leer-un-pulsador-con-arduino/ 4/11
27/11/2017 Leer un pulsador con Arduino

Down y Pull Up. Estas dos resistencias son un mecanismo básico, muy
habitual dentro del mundo de la electrónica y automatización.

Las resistencias de Pull-Down y Pull-Up se conectan entre el PIN


digital y una de las tensiones de referencia (0V o 5V) y “fuerzan” (de ahí
su nombre) el valor de la tensión a LOW o HIGH, respectivamente.

La resistencia de Pull-Up fuerza HIGH cuando el pulsador está abierto.


Cuando está cerrado el PIN se pone a LOW, la intensidad que circula se ve
limitada por esta resistencia

La resistencia de Pull-Down fuerza LOW cuando el pulsador está


abierto. Cuando está cerrado el PIN se pone a HIGH, y la intensidad que
circula se ve limitada por esta resistencia

Así es como quedaría el montaje nal en vista esquemática (la


conexión de puede realizar en empleando cualquiera de los PIN digital).

https://www.luisllamas.es/leer-un-pulsador-con-arduino/ 5/11
27/11/2017 Leer un pulsador con Arduino

Y así el cableado en una placa de prototipos.

Por último, la lectura del estado del PIN se realiza normalmente, tal y
como vimos en el tutorial entradas digitales en Arduino.

1 const int inputPin = 2;


2
3 int value = 0;
4
5 void setup() {
https://www.luisllamas.es/leer-un-pulsador-con-arduino/ 6/11
27/11/2017 Leer un pulsador con Arduino
6 Serial.begin(9600);
7 pinMode(inputPin, INPUT);
8 }
9
10 void loop(){
11 value = digitalRead(inputPin); //lectura digital de pin
12
13 //mandar mensaje a puerto serie en función del valor leido
14 if (value == HIGH) {
15 Serial.println("Encendido");
16 }
17 else {
18 Serial.println("Apagado");
19 }
20 delay(1000);
21 }

Arduino dispone de resistencias de Pull Up internas de 30k pero no


suelen ser usadas por dos motivos.

Tienen poca autoridad (valor de resistencia demasiado alto)



Si la con guramos incorrectamente desde el programa, podemos
generar un cortocircuto, por lo que es preferible conectara
físicamente para veri car que no nos la hemos dejado.

¿QUÉ VALOR DE RESISTENCIA ELEGIR?


El valor de la resistencia viene condicionado por la intensidad que
pasa al accionar el interruptor, y por un concepto llamado la “autoridad
del Pull Down/up” que está relacionado con el ruido en la medición.

Una resistencia muy pequeña, tendrá mucha autoridad, pero permitirá el


paso de una mayor corriente, lo que supone mayor consumo y mayor
calentamiento.

Una resistencia muy grande, dejará pasar poca corriente, pero tendrá poca
autoridad, por lo que será más susceptible a mediciones incorrectas
debidas a ruido.

Si te ha gustado esta entrada y quieres leer más sobre Arduino


 puedes consultar la sección Tutoriales de Arduino

https://www.luisllamas.es/leer-un-pulsador-con-arduino/ 7/11
27/11/2017 Leer un pulsador con Arduino

 Arduino,Arduino basico,Controles,Digitales,Entradas,I/O

PREVIOUS

REINAUGURACIÓN DE GUARDERÍA ANGELITOS EN EL ACTUR


ZARAGOZA

NEXT

¡CUMPLIMOS TRES AÑOS!

TAMBIÉN TE PUEDE GUSTAR

LIBRERÍA ARDUINO ASYNCSTEPPER

https://www.luisllamas.es/leer-un-pulsador-con-arduino/ 8/11
27/11/2017 Leer un pulsador con Arduino

TORRETA SERVO CONTROLADA POR ARDUINO: PROGRAMACIÓN

LIBRERÍA ARDUINO SIMPLESTEPPER

https://www.luisllamas.es/leer-un-pulsador-con-arduino/ 9/11
27/11/2017 Leer un pulsador con Arduino

TORRETA SERVO CONTROLADA POR ARDUINO: MONTAJE Y CONEXIÓN

LIBRERÍA ARDUINO ASYNCSERVO

TORRETA SERVO CONTROLADA POR ARDUINO: PRESUPUESTO

https://www.luisllamas.es/leer-un-pulsador-con-arduino/ 10/11
27/11/2017 Leer un pulsador con Arduino

¡DEJA UN COMENTARIO!...

Join the discussion

Sort by:  newest|oldest|most voted

Victor Aguilar 

Por n alguien que explica correctamente porqué se debe


Guest conectar un interruptor a + y -, el motivo, su función y porqué
colocar una resistencia. Llevo días en otros blogs buscando la
respuesta. Un diez amigo. Un abrazo de un principiante.

 0     REPLY  1 year 10 months ago 

luisllamas 

Me alegro de que te haya servido, gracias a ti por tu


Guest comentario!

 0     REPLY  1 year 10 months ago

Cristian Veloso 

Muy bueno Luis, lo voy a tomar como base para un estudio que
Guest estoy realizando. un abrazo desde argentina!

 0     REPLY  1 year 7 months ago

jorge 

Estimado Luis, gracias por compartir estas librerias….. el tiempo


Guest que nos ahorras.

 0     REPLY  5 months 29 days ago

https://www.luisllamas.es/leer-un-pulsador-con-arduino/ 11/11

Potrebbero piacerti anche