Está en la página 1de 9

LEER UN PULSADOR CON

ARDUINO

Para leer el estado de un interruptor o pulsador con Arduino necesitaremos


realizar correctamente un montaje específico 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 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, por lo que utilizaremos dos
montajes incorrectos que nos ayudarán a entender el papel de cada elemento en el
montaje definitivo.

Por tanto, empezamos con el primer intento de realizar una lectura del estado
del pulsador.
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.

¿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 fija 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 fija 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.

¿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 significa
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 definitivo.

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 Down y
Pull Up. Estas dos resistencias son un mecanismo básico, muy habitual dentro del
mundo de la electrónica y automatización.

Fig. 1 Resistencias de pull-up y pull-down

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 final en vista esquemática (la conexión de


puede realizar en empleando cualquiera de los PIN digital).

Fig. 2 Resitencias de Pull-UP y Pull-Down, respectivamente conectadas a un arduino.


Y así el cableado en una placa de prototipos:

Pendiente interpretar Fig. 1 de la página 4 para realizar el montaje por parte del
alumno de la práctica usando la plataforma TinkerCAD Circuits.

Usa el Código de clase: EDAC-IPEQ-BGH en https://www.tinkercad.com/joinclass


para entrar a la clase y realizar as prácticas:

Para leer el valor alto del pulsador “1” o el valor bajo del pulsador “0” del
ARDUINO tenemos varias opciones. LA primera es acceder directamente al puerto
de entrada donde hemos conectado la salida del pulsador (PIN_xx). Donde xx es el
puerto de entrada de ARDUINO por donde queremos que entre nuestra señal del
pulsador. El valor por leer puede ser analógico o digital.

¿Cuál será la diferencia de que el valor sea analógico o digital?

Fig. 3. Valores de entrada de Puertos o Pines digitales/analógicos.


En la anterior figura tenemos acceso al puerto de entrada (PIN) seleccionado
en TinkerCAD pero para poder ver qué valor tiene ese puerto de entrada o PIN,
debemos mostrarlo por pantalla de alguna manera. Para ello tenemos varias
opciones. Un de ellas es usar el monitor serie de TinkerCAD, que mostrará en dicha
ventana los valores que le digamos.

Debemos activar el monitor serie y encontrar las piezas que nos permitan
programar dicho monitor serie para que nos muestre el PIN_xx que queremos. Ver
Figura a continuación:
En modo ARDUINO (archivo *.ino) el código quedaría de esta forma:

1 const int inputPin = 2;


2
3 int value = 0;
4
5 void setup() {
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 configuramos incorrectamente desde el programa, podemos generar


un cortocircuto, por lo que es preferible conectara físicamente para verificar
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.
FUENTE: https://www.luisllamas.es/leer-un-pulsador-con-arduino/

También podría gustarte