Tutorial 3 – Entradas Analógicas

Lectura de un valor de tensión en un pin analógico y escritura en puerto serie

Vamos a continuar con la serie de tutoriales de Arduino dedicados a tomar contacto con los comandos más básicos, así como con los distintos tipos de pines de los que disponemos. A partir de este y el siguiente tutorial, nos centraremos más en el uso de determinados shields, la conexión de algunos componentes concretos, etc, pero sin dejar de lado algunas de las particularidades/curiosidades de Arduino.

Introducción al tutorial

En este típico tutorial de iniciación a Arduino combinaremos el uso de los pines analógicos con la impresión de datos por el puerto serie.

Colocaremos un potenciómetro para variar la tensión en un pin analógico, imprimiendo por el puerto serie el valor que nos proporciona Arduino, observando así la escala empleada para cuantificar este valor de tensión. El siguiente vídeo muestra el resultado final que debemos conseguir.

Lista de componentes

Componentes para el montaje
Componentes para el montaje

Montaje del diseño

El montaje es tremendamente simple. Tan sólo debemos conectar un pin del potenciómetro a una fuente de tensión positiva, otro pin a uno de los pines analógicos de arduino, y el último pin lo conectaremos a masa:

Diagrama conexiones eléctricas Entradas Analógicas
Diagrama conexiones eléctricas Entradas Analógicas

Podemos apreciar que la entrada analógica utilizada es la etiquetada como A0, y que se emplean los pines de 5v y gnd del propio arduino como fuente y referencia de tensión, respectivamente.

Esquema gráfico Entradas Analógicas
Esquema gráfico Entradas Analógicas

Escribiendo el programa

En una primera aproximación, podemos crear un sketch simple y totalmente funcional, como el siguiente.

AnalogIN (1773 descargas )

El programa es muy sencillo, aunque detengámonos en algunas lineas.

– En primer lugar, tal y como observamos en la línea int entradaDatos = A0;   los pines analógicos se enumeran como los digitales, anteponiéndolos la letra A. En este caso, nos referimos al pin analógico 0 (A0). Observad cómo después, en el bucle setup, no es necesario establecer estos pines como entradas tal y como lo hacíamos con los digitales. Aunque los pines analógicos se pueden emplear como pines de propósito general en caso de ser necesario, por defecto actuarán como entradas.

– La linea Serial.begin(9600);   activa las comunicaciones poner el puesto serie, y establece la velocidad de transmisión a 9600 baudios. En el vídeo podemos apreciar cómo en el monitor serial del ordenador (donde vemos imprimidos los valores disponibles en A0) la velocidad ha de coincidir con la establecida en el programa para que los valores sean visibles.

– La función analogRead(entradaDatos)  va a devolver un número entero comprendido en el rango de valores 0-1023, ambos inclusive. En nuestro caso, 1023 se corresponderá con el valor máximo de tensión (5v) suministrado al pin A0, y 0 con el valor mínimo de tensión (0v).

– Por último, el comando empleado para escribir una nueva línea y mandarlo por el puerto serie es la última linea destacada, es decir, Serial.println(valorDatos);   .


Últimas consideraciones

Hasta aquí hemos visto tanto el rango de valores que vamos a tener en una entrada analógica, como el uso del puerto serie para enviar datos al ordenador y visualizarlos.

En el vídeo sobre el resultado final del tutorial podéis ver cómo en la primera tanda de valores, aunque la rueda del potenciómetro no gire, los valores van cambiando constantemente. Esto es debido a factores tales como el ruido.

Sin embargo, si pensamos en una aplicación en la que se genere un nuevo registro cada vez que un valor en una entrada analógica varíe, estaremos creando nuevas líneas de registro cuando en realidad esas variaciones no se están produciendo.

Una solución rápida y sencilla es la inclusión de una condición. Por ejemplo, vamos a establecer un umbral de tal forma que, hasta que el valor a la entrada del pin A0 no varíe en más de 2 unidades, no se registre ese dato (en nuestro caso que no se imprima por el puerto serie). El código sería el siguiente.

AnalogINumbral (1581 descargas )

Tan sólo hay que destacar 3 aspectos de este sketch:

– Incluimos una nueva variable que servirá como referencia para comprobar cuánto ha variado A0. Es necesario inicializar esta variable a un valor distinto de  pues que si no noe

–  abs(valorDatos - valorAnterior) va a proporcionarnos el valor absoluto de la resta del valor de referencia con respecto al valor actual en A0.

– Si el resultado de la resta es mayor que dos, if (abs(valorDatos - valorAnterior) > 2) , es entonces cuando imprimimos el valor y actualizamos el valor de referencia al valor actual.

Como siempre, esperamos que el tutorial os sirva de ayuda. Hasta otra!


3 Comentarios

  1. Que buen Aporte a la comunidad, corto y muy bien explicado, gracias por el aporte me justo lo que necesito para mi proyecto de DImmer.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies