9
UNIVERSIDAD POLITÉCNICA DE MADRID Grado en Ingeniería Agroambiental Asignatura Hidráulica e Hidrología ambiental, 3 er curso, 5º semestre. Documentación sobre actividad práctica (noviembre de 2013) Taller sobre uso de sensores y adquisición de datos en Hidráulica e Hidrología Palabras clave: sensor, microcontrolador, Arduino, LCD, datos, calibración Autores: Raúl Sánchez, Leonor Rodríguez-Sinobas 1. Introducción En el ámbito de la Hidráulica y la Hidrología, como en el resto de ramas de la Ingeniería, el uso de sensores es generalizado. Los sensores proporcionan información en forma de medidas de magnitudes físicas. Dicha información puede ser procesada con objeto de actuar para controlar una o varias variables de un sistema. El control requiere de actuadores y, por supuesto de sensores, mientras que la medida requiere solamente estos últimos. La rama de conocimiento que estudia el control de procesos y sistemas es la Ingeniería de Control, y la que estudia los métodos y sistemas de medida es la Metrología. 2. Sensores Los sensores son dispositivos electrónicos que responden frente a magnitudes físicas, tales como la presión o la temperatura, y la convierten en una señal eléctrica de corriente continua. Los sensores también reciben el nombre de transductores, en alusión al proceso de conversión de un tipo de energía en otra. Para recoger la señal es necesario construir un circuito entre el sensor el dispositivo de medida, que se verá en el apartado siguiente. Los sensores pueden ser de tipo digital o analógico. En los primeros, la señal de salida sólo toma dos valores, alto o bajo, y es típico que sea 5 V y 0 V, respectivamente. Un sensor de este tipo puede ser el que detecta si una llave está completamente cerrada, si una tapa de una arqueta está cerrada, si dos elementos están alineados,El sensor digital como tal puede consistir en un conjunto de elementos que conmuta entre dos ramas de un circuito eléctrico, una conectada al nivel bajo de tensión y otra conectada con el alto, aunque hay otros procedimientos como p. ej. los basados en el efecto Hall. El procesado en el tiempo de señales de sensores digitales permite medir frecuencias, como p. ej. ocurre con los tacómetros, anemómetros, contadores volumétricos,… Los sensores analógicos proporcionan una señal continua entre dos límites que definen el rango de medida del sensor. Es decir, cualquier valor dentro del rango es posible. La amplitud de dicho rango se conoce como fondo de escala. Generalmente la señal es lineal, es decir, la conversión entre la magnitud física y la señal eléctrica se corresponde con la ecuación de una recta. Las señales eléctricas más sencillas de procesar son las de tensión e intensidad. Son típicas las señales 0-1 V, 0-5 V y 4-20 mA, aunque algunos sensores no cuentan con

Sens Arduino 2013

Embed Size (px)

DESCRIPTION

sens

Citation preview

Page 1: Sens Arduino 2013

UNIVERSIDAD POLITÉCNICA DE MADRID

Grado en Ingeniería Agroambiental

Asignatura Hidráulica e Hidrología ambiental, 3er curso, 5º semestre.

Documentación sobre actividad práctica (noviembre de 2013)

Taller sobre uso de sensores y adquisición de datos en Hidráulica

e Hidrología Palabras clave: sensor, microcontrolador, Arduino, LCD, datos, calibración

Autores: Raúl Sánchez, Leonor Rodríguez-Sinobas

1. Introducción

En el ámbito de la Hidráulica y la Hidrología, como en el resto de ramas de la Ingeniería, el uso

de sensores es generalizado. Los sensores proporcionan información en forma de medidas de

magnitudes físicas. Dicha información puede ser procesada con objeto de actuar para

controlar una o varias variables de un sistema. El control requiere de actuadores y, por

supuesto de sensores, mientras que la medida requiere solamente estos últimos. La rama de

conocimiento que estudia el control de procesos y sistemas es la Ingeniería de Control, y la que

estudia los métodos y sistemas de medida es la Metrología.

2. Sensores

Los sensores son dispositivos electrónicos que responden frente a magnitudes físicas, tales

como la presión o la temperatura, y la convierten en una señal eléctrica de corriente continua.

Los sensores también reciben el nombre de transductores, en alusión al proceso de conversión

de un tipo de energía en otra. Para recoger la señal es necesario construir un circuito entre el

sensor el dispositivo de medida, que se verá en el apartado siguiente.

Los sensores pueden ser de tipo digital o analógico. En los primeros, la señal de salida sólo

toma dos valores, alto o bajo, y es típico que sea 5 V y 0 V, respectivamente. Un sensor de este

tipo puede ser el que detecta si una llave está completamente cerrada, si una tapa de una

arqueta está cerrada, si dos elementos están alineados,… El sensor digital como tal puede

consistir en un conjunto de elementos que conmuta entre dos ramas de un circuito eléctrico,

una conectada al nivel bajo de tensión y otra conectada con el alto, aunque hay otros

procedimientos como p. ej. los basados en el efecto Hall. El procesado en el tiempo de señales

de sensores digitales permite medir frecuencias, como p. ej. ocurre con los tacómetros,

anemómetros, contadores volumétricos,…

Los sensores analógicos proporcionan una señal continua entre dos límites que definen el

rango de medida del sensor. Es decir, cualquier valor dentro del rango es posible. La amplitud

de dicho rango se conoce como fondo de escala. Generalmente la señal es lineal, es decir, la

conversión entre la magnitud física y la señal eléctrica se corresponde con la ecuación de una

recta. Las señales eléctricas más sencillas de procesar son las de tensión e intensidad. Son

típicas las señales 0-1 V, 0-5 V y 4-20 mA, aunque algunos sensores no cuentan con

Page 2: Sens Arduino 2013

Taller sobre uso de sensores y adquisición de datos

HeHA 2012 2

amplificador y proporcionan señales muy bajas, generalmente del orden de magnitud de mV.

Son señales que pueden requerir amplificación para adecuarlas a los dispositivos de medida.

Los sensores requieren una fuente de alimentación eléctrica comprendida dentro de un

intervalo de tensión especifico de cada sensor, como p. ej. 7-24 V. Luego la alimentación del

sensor requiere construir otro circuito entre la fuente y el sensor.

Por último, es necesario tener presente que antes de trabajar con un sensor determinado es

necesario informarse sobre qué alimentación necesita y el tipo de salida que proporciona,

además del rango de valores de la magnitud física en el que funciona. Hoy en día, gracias a

Internet esto no es un obstáculo insalvable.

3. Adquisición de señales y procesado de datos mediante

dispositivos electrónicos

La adquisición de señales se realiza mediante dispositivos electrónicos que muestrean la señal

y registran y/o procesan los valores resultantes. Entre estos destacan las tarjetas de

adquisición de datos TAD (data acdquisition card DAQ) que trabajan como elementos

periféricos de un ordenador y los dataloggers, que trabajan de manera autónoma. El elemento

común de estos equipos es el microcontrolador, precisamente el elemento con el que vamos a

trabajar en este taller.

Un microcontrolador es un circuito integrado programable capaz de ejecutar el programa

grabado en su memoria. Está compuesto de varios bloques funcionales, cada uno de los cuales

cumple una tarea específica. Un microcontrolador comprende las tres partes principales de un

ordenador: unidad central de procesamiento, memoria y periféricos de entrada/salida.

En 2005, en el núcleo de la empresa Olivetti y a raíz de una tesis doctoral, comenzó a gestarse

lo que hoy es el proyecto Arduino, que es una plataforma de software y hardware tipo open-

source y, sobre todo, fácil de usar. De hecho, esta última característica es la motivación por la

que surgió Arduino1 y por la que se usa en este taller, que unido a su relativo bajo coste lo

hacen ideal para que los estudiantes puedan crear sus propios desarrollos en trabajos fin de

carrera o similares.

Los microcontroladores que se pueden programar en el entorno Arduino son los Atmel AVR.

Microcontrolador Atmega328

En la figura siguiente se muestra el microcontrolador Atmega328P en formato para inserción

en placa base. Puede observarse que dispone de 14 patillas, o pines, en cada una de las dos

filas.

1Antes de Arduino, los microcontroladores debían ser programados en lenguajes de bajo nivel

demasiado especializados para el público en general o mediante costosos compiladores para lenguajes de alto nivel.

Page 3: Sens Arduino 2013

Taller sobre uso de sensores y adquisición de datos

HeHA 2012 3

Figura 1. Microcontrolador Atmega328P para inserción en placa base.

El punto grabado en una esquina (ver esquina inferior izquierda en la foto superior) marca el

pin número 1.

Cada una de las patillas puede tener varias funciones, como puede verse en el esquema de la

figura siguiente, donde entre paréntesis se muestran las abreviaturas que se refieren a las

funciones que puede realizarse a través de cada patilla.

Figura 2. Esquema de correspondencia entre funciones del microcontrolador Atmega328P y las patillas (enumeradas de la 1 a la 28).

Los requisitos de este microcontrolador y las funciones que va a realizar, particularizados para

el dispositivo que se va a usar durante la práctica, se describen a continuación:

- La alimentación: debe suministrarse mediante una fuente estable de corriente

continua de 5 V entre las patillas 7 y 8. En la primera se conectará el polo positivo y en

la segunda el negativo. Este último servirá también, como hablamos en mecánica, de

plano de comparación, que en el campo de la electricidad se llama tierra, en inglés

ground, de ahí la abreviatura GND. La patilla 7 debe unirse con la 20 mediante una

conexión externa (Atmel, 2012).

- La sincronización de los procesos: entre las patillas 9 y 10 debe conectarse un cristal de

cuarzo. Tiene como misión la de marcar el ritmo para poder controlar el momento en

el que debe realizarse cada acción. Establece físicamente la base del tiempo. El

dispositivo a usar en el taller cuenta con uno que tiene frecuencia de 16 MHz, y al que

acompañan dos condensadores para mejorar la regularidad de la frecuencia.

Page 4: Sens Arduino 2013

Taller sobre uso de sensores y adquisición de datos

HeHA 2012 4

- Entrada de señales analógicas: entre la patilla 22 y la 23 se pueden medir señales

analógicas en tensión con rango máximo de 5 V. En la primera se conecta en polo

negativo y en la segunda el positivo. Pueden medirse otras 5 señales adicionales

mediante conexiones análogas entre las patillas 22, por un lado, y la 24, 25, 26, 27 o

28, por el otro. Las entradas analógicas se identifican desde A0 (patilla 23) hasta A5

(patilla 28).

Las señales captadas mediante las entradas analógicas se convierten en digitales a

través de su correspondiente convertidor analógico-digital de 10 bits, lo que implica

que el valor mínimo de diferencia de tensión que puede ser apreciado es la amplitud

del rango dividido entre 210. Este valor recibe en nombre de resolución, y en nuestro

caso, dicha resolución viene dada por 5 V / 1024 = 4,9 mV. Es decir, el tercer decimal

de la señal del sensor expresada en V es incierta debida al proceso de conversión

analógico-digital de 10 bits. Además, cada sensor tiene su resolución2 específica y en

ocasiones dicha incertidumbre podría verse incrementada.

- Puertos digitales: pueden usarse como entradas o salidas y dispone de un total de 14.

En el dispositivo preparado para usar en el taller, estos puertos se van a usar para

proporcionar la lectura en una pantalla LCD 16x2 (con caracteres en 16 columnas y 2

filas). Las patillas 4, 5, 6 y 11 permiten enviar los datos y las instrucciones a la pantalla,

las 17 habilita/deshabilita la escritura en la pantalla y la 18 indica si se envían

instrucciones o datos.

Los puertos de las patillas 3, 5, 6, 9, 10 y 11 pueden trabajar como salidas analógicas,

aunque realmente no lo son. La modulación de la tensión es conseguida a través de la

generación de una onda rectangular permanente de frecuencia constante. La

proporción de nivel alto en cada ciclo de la onda es proporcional al valor de tensión

eficaz. La resolución de estas salidas es de 8 bits.

La programación del microcontrolador Atmega328

Se ha usado el software Arduino, disponible en www.arduino.cc. Es software libre, usa un

lenguaje de alto nivel y relativamente sencillo de entender y de usar, ya que tiene una sintaxis

similar a la de otros lenguajes de programación. La documentación sobre el uso y la instalación

de dicho software está también en la dirección mencionada.

Los 14 puertos digitales se identifican con los números 0 al 13, y, de acuerdo con la Fig. 2, se

corresponden con los ocho puertos PD0 al PD7 y con los seis PB0 al PB5. La correspondencia

entre el identificador del puerto digital y su patilla correspondiente se muestra en la tabla

siguiente.

Id. puerto digital 0 1 2 3 4 5 6 7 8 9 10 11 12 13

Patilla 2 3 4 5 6 11 12 13 14 15 16 17 18 19 Tabla 1. Correspondencia entre el indicador del puerto digital y la patilla.

2 En un sensor, se entiende por resolución la mínima variación de la magnitud de entrada que puede

apreciarse a la salida.

Page 5: Sens Arduino 2013

Taller sobre uso de sensores y adquisición de datos

HeHA 2012 5

Cada microcontrolador se va a programar mediante inserción en una placa Arduino UNO, que

dispone de conexión a ordenador mediante USB-serial. Una vez programado se inserta en el

dispositivo de la práctica.

4. Los dispositivos del taller

Se han montado los circuitos necesarios para alimentar, recoger la señal de un sensor y

transmitir la información a una pantalla LCD mediante las conexiones del esquema de la Fig. 3.

Las conexiones son específicas tanto para el hardware, es decir, el microcontrolador

Atmega328 y la pantalla LCD 1602a, como para el software. El programa en cuestión se

encuentra más adelante en este mismo apartado.

(a)

Page 6: Sens Arduino 2013

Taller sobre uso de sensores y adquisición de datos

HeHA 2012 6

(b)

Figura 3. Esquema de conexiones (a) a mano alzada (b) con software libre Fritzing.

El montaje está inspirado en Paperduino, publicado por Martins (2009) en su web.

(a)

(b)

Page 7: Sens Arduino 2013

Taller sobre uso de sensores y adquisición de datos

HeHA 2012 7

(c) (d)

Figura 4. Cuatro vistas del dispositivo a usar en taller, (a) aspecto general del dispositivo, (b) conexiones en el reverso, (c) pantalla LCD desenchufada, (d) dispositivo alimentado por pila de 9 V en funcionamiento.

El coste aproximado del material del dispositivo es de 16 €, y se desglosa por componentes

individuales en:

- Microcontrolador Atmega328P 8,5 €

- Pantalla LCD 1602a 4,5 €

- Pines de conexión 0,5 €

- Zócalo para inserción del microcontrolador 0,4 €

- Cristal cuarzo, regulador tensión, potenciómetro y condensadores 1,5 €

- Portapila y cable de cobre unifilar 0,3 €

Existen placas de desarrollo comerciales, como Arduino UNO, cuyo precio está alrededor de los

25 € y que incluye todo lo anterior menos la pantalla LCD, el potenciómetro y el portapila. Son

interesantes para aprender a programar y abordar con inmediatez los montajes. En este caso,

sin embargo, se ha optado por el desarrollo de una “placa” propia con objeto de que los

desarrollos propios puedan adaptarse a condicionantes de espacio3, de coste u otros.

Los sensores

En el Laboratorio de Hidráulica, se van a usar sensores diversos, tanto amplificados, con

señales en los rangos 0-5 V, 4-20 mA, como no amplificados, con salida en mV. Se van a usar

señales de diversos equipos, entre los que se encuentran transductores de presión,

limnímetros de ultrasónicos, sensores de temperatura, de humedad relativa del aire, de

humedad del suelo, caudalímetros de ultrasonidos,…

A pesar de que el microcontrolador sólo puede medir señales en tensión eléctrica, las

corrientes en intensidad eléctrica pueden ser medidas: hacer pasar la corriente a medir por

una resistencia conocida permite transformar la intensidad en tensión. Tiene interés usar una

resistencia de 250 Ω para transformar el rango 4-20 mA en el rango 1-5 V.

La alimentación

El microcontrolador requiere una alimentación estable a 5V, lo que se realiza mediante un

circuito con dispositivo regulador de tensión 7805. La tensión de entrada de una pila de 9V o

de un transformador de corriente continua es reducida a 5V por dicho regulador.

3 Los componentes SMC (surface mount components) han permitido reducir el tamaño de los circuitos

electrónicos. El microcontrolador Atmega 328 también está disponible en versión SMC.

Page 8: Sens Arduino 2013

Taller sobre uso de sensores y adquisición de datos

HeHA 2012 8

El programa

A continuación se muestra el código4 en Arduino que ha sido transferido a cada uno de los

microcontroladores. En dicho programa, y tras la calibración en laboratorio de cada sensor,

podría incluirse la transformación entre la señal eléctrica y la variable física correspondiente.

Es decir, la variable señalSensor puede transformarse a valores de presión y expresarse en kPa,

bar, mca,… o a valores de altura de vertido y expresarse en mm, cm,… O, incluso, en el caso de

ésta última transformarla en valores de caudal y expresarlos en L/s, m3/h,…

/*

Práctica sobre uso de sensores y adquisición de datos con Arduino.

Asignaturas “Hidráulica e Hidrología ambiental” e “Ingeniería del

Riego y el drenaje”.

*/

// Librería de comandos para la pantalla LCD

#include <LiquidCrystal.h>

// Especificación de los puertos digitales empleados en la

//comunicación con la librería.

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

//LiquidCrytal lcd(RS, E, D4, D5, D6, D7)

//Rutina de configuración.

void setup()

// configuración del número de columnas y filas:

lcd.begin(16, 2);

// Muestra el mensaje:

lcd.print("C. Continua (V)");

//pausa de 5s

delay(5000);

//pone el cursor en carácter de la segunda fila y la primera columna

//(se comienza a contar en 0, e indica el primer elemento)

lcd.setCursor(0, 1);

//Muestra el mensaje:

lcd.print("A0(V)");

/*

Rutina tipo bucle que se repite indefinidamente hasta que el

microprocesador es reiniciado.

*/

void loop()

//pone el cursor en la columna octava y la fila segunda

lcd.setCursor(7, 1);

//lee la señal de la entrada analógica 0.

int señalSensor = analogRead(A0);

//Conversión de la lectura analógica a tensión.

//El rango de enteros entre 0 a 1023 pasa a 0-5 V.

float voltaje = señalSensor * (5.0 / 1023.0);

//Muestra el valor de la variable voltaje.

lcd.print(voltaje);

//pausa de 1s

delay(1000);

4 Se ha optado por la máxima sencillez en el código. P. ej. la rutina “delay” impide que el

microcontrolador realice procesos durante la pausa. Existen alternativas que resuelven este inconveniente.

Page 9: Sens Arduino 2013

Taller sobre uso de sensores y adquisición de datos

HeHA 2012 9

5. Cuestiones a realizar por el estudiante

En el Laboratorio de Hidráulica se va a proceder a medir el valor de una magnitud física, p.ej.

presión, y el de la señal proporcionada por un sensor. La relación entre ambas observaciones

se conoce como curva de calibración. Dicha curva suele ser una relación lineal.

El estudiante, con ayuda del ordenador, mediante hoja de cálculo p.ej., deberá:

a) representar en gráfico cartesiano los pares de valores observados. En el eje de abcisas

se representará la señal (V) y en el de ordenadas en valor de la magnitud física medida.

b) determinar los coeficientes de la recta de ajuste, es decir, la ordenada en el origen y la

pendiente.

c) determinar, de acuerdo con la resolución del dispositivo de medida, el cambio mínimo

de la magnitud medida que puede apreciarse.

6. Referencias

Atmel, 2012, “ATmega48A/PA/88A/PA/168A/PA/328/P [DATASHEET SUMMARY]”,

8271ES-AVR-07/2012

Martins G., 2009, “PAPERduino’s design”,

http://lab.guilhermemartins.net/2009/05/06/paperduino-prints/

7. Bibliografía

Evans B., 2011, “Beginning Arduino programming”, Ed. Apress, distributed by Springer Science

+ business media, New York.

Faludi R., 2010, “Building wireless sensor networks”, Ed. O’Really, Sebastopol (CA).

Igoe T., 2011, “Making things talk”, 2nd edition, Ed. O’Really, Sebastopol (CA).

Karvinen K., Karvinen T., 2011, “Make: Arduino bots and gadgets”, Ed. O’Really, Sebastopol

(CA).

Karvinen T., Karvinen K., 2011, “Make a mind-controlled Arduino robot”, Ed. O’Really,

Sebastopol (CA).

Margolis M., 2011, “Arduino cookbook”, Ed. O’Really, Sebastopol (CA).

Monk S., 2010, “30 Arduino projects for the evil genius”, Ed. McGraw-Hill, New York.

Schmidt M., 2011, “Arduino. A quick-start guide”, the pragmatic bookshelf, Ed. The pragmatic

programmers, Rayleigh (NC).

www.arduino.cc