You are on page 1of 34

SERVICIO NACIONAL DE ADIESTRAMIENTO EN TRABAJO

INDUSTRIAL

ESCUELA DE ELECTROTECNIA

CURSO: PLANTAS INDUSTRIALES

SEMESTRE V

PROYECTO SEMESTRAL:

DATALOGGERS DE TEMPERATURA, HUMEDAD E


INTENSIDAD LUMINOSA

HECHO POR:

SOTO SALAZAR JUNIOR MAURICIO

AREQUIPA - PERÚ

2018

pág. 1
GLOSARIO
 DHT - 11: Sensor de temperatura y humedad.
 BH-1750: Sensor de luz.
 Arduino UNO
 HC – 06: Bluetooth
 LUX: Intensidad de la Luz
 Temp: Temperatura del ambiente medida en °C
 HUM: Humedad del ambiente representada en porcentaje

pág. 2
PLANTEAMIENTO DEL PROBLEMA
Antecedentes

No contamos con un registrador de datos capaz de sensar


magnitudes físicas que se encuentran inmersas en nuestro entorno
es por eso que nos vemos en la necesidad de elaborar un
datalogger para que se faciliten las tareas en el área de trabajo.

Definición del Problema

Nuestra área de trabajo no cuenta con un sistema electrónico que


en forma autónoma, segura y confiable realice las labores de
registro de la magnitud física con el fin de evitar tareas repetitivas y
rutinarias en la empresa.

Objetivo general

Realizar el dimensionamiento e instalación de un sistema de


almacenamiento datalogger en la intemperie para el estudio de
impacto ambiental.

Objetivos específicos

 Recopilar datos reales del ambiente de estudio.


 Realizar el diseño y montaje del circuito autónomo de
almacenamiento de datos.
 Diseñara y fabricar la carcasa para la ubicación de los
elementos necesarios para el almacenamiento de datos.

Limitaciones

El proyecto está limitado a ambientes sumamente húmedos y con


iluminación precaria.

pág. 3
MARCO TEÓRICO

DATALOGGER

Un Datalogger es un registrador de datos que opera en forma


independiente y puede leer varios tipos de señales eléctricas o
magnitudes físicas y almacenar los datos en la memoria interna
para su posterior descarga a una computadora.

La ventaja de los registradores de datos es que pueden operar


independientemente de una computadora, a diferencia de muchos
otros tipos de dispositivos de adquisición de datos. Los
registradores de datos están disponibles en varias formas y
tamaños. La gama incluye registradores de función fijos económicos
simples de un solo canal a dispositivos programables más potentes
capaces de manejar cientos de entradas.

El datalogger, conocido también como sistema de adquisición de


datos y control, es el corazón de una estación de medida. Mide las
señales eléctricas de sensores a una velocidad de muestreo
determinada, procesa y almacena los datos, y dispone de
comunicación capaz de hacer la transferencia de los datos hacia
una PC.

pág. 4
CARACTERÍSTICAS DE UN DATALOGGER

Señal de entrada

Algunos dataloggers están dedicados a un cierto tipo de entrada


mientras otros son programables para diferentes tipos de entradas.
Las magnitudes físicas más sensadas son temperatura, humedad,
sonido, iluminación, nivel, frecuencia, velocidad del viento, dirección
del viento, voltaje o corriente de paneles solares, etc

Número de entradas
Los dataloggers están disponibles en diseños de un solo canal y
multicanal. Algunos dataloggers son capaces de manejar hasta 32
canales.

Tamaño

En muchas aplicaciones el espacio es una limitante. En esos casos


el tamaño del datalogger puede ser un parámetro de selección
crucial. Se espera que un datalogger tenga un montaje
extremadamente compacto.

Velocidad/memoria

En comparación con los sistemas de adquisición de datos en tiempo


real, los dataloggers en general tienen bajas velocidades de
muestreo. Esto se debe normalmente a que almacenan datos en
memoria interna, que es limitada. Los datos normalmente se
recopilan en memoria no volátil para descargar posteriormente a un
computador. Cuantas más altas son las velocidades de datos más
memoria se requiere. Por lo tanto, al especificar un datalogger es
importante determinar la tasa de muestreo y la duración de la
muestra que se puede usar para calcular la memoria requerida. Por

pág. 5
ejemplo, si una aplicación requiere tasas de muestreo de 1 por
segundo y la prueba debe durar una hora, el datalogger debe poder
almacenar 3600 muestras (1 muestra/segundo x 1 hora x 3600
segundos/hora).

Operación en tiempo real

En algunas aplicaciones puede ser deseable mostrar los datos que


se están recopilando en tiempo real en un ordenador.

Tasa de muestreo

La tasa de muestreo depende del modelo específico. Algunos data


loggers ofrecen tasas de hasta una muestra cada 24 horas en sus
valores máximos hasta tasas de más de 100 muestras por
segundo.

Alimentación

Casi todos los dataloggers funcionan con baterías aunque algunos


ofrecen también una opción para energía externa

Memoria de datos

Casi todos los dataloggers usan memoria no volátil para el


almacenamiento de datos. Esto significa que los datos no se
perderán si la energía falla.

pág. 6
Tiempo de registro

La duración del registro depende de la capacidad de memoria del


datalogger y la tasa de muestreo deseada. Para determinar la
duración, divida la capacidad de la memoria (número de muestra
que el dispositivo puede registrar) entre la tasa de muestreo. Por
ejemplo, supongamos que un datalogger dado puede almacenar
hasta 10,000 muestras. Si se desea registrar 2 muestras cada
minuto, el datalogger puede funcionar durante 10,000/2 o 5,000
minutos (unos 3.5 días). Si la tasa de muestreo se recortara a la
mitad (1 muestra por minuto), el periodo de registro se duplicaría a
7 días.

ARDUINO

Arduino es una plataforma de prototipos electrónica de código


abierto (open – source) basada en hardware y software flexibles
y fáciles de usar. Está orientado para un uso en el campo de la
computación o robótica y entornos interactivos. La placa de Arduino
es multiplataforma pues su software funciona en los sistemas
operativos Windows, Macintosh OSX y Linux. El software que lo
opera es ampliable y de código abierto, esta publicado bajo una
licencia libre y preparado para ser ampliado por programadores. El
lenguaje puede ampliarse a través de librerías de C++, con el
lenguaje AVR C en el que está basado. Por otro lado su hardware
también es ampliable y de Código abierto, Arduino está basado en
los microcontroladores ATMEGA168, ATMEGA328 y
ATMEGA1280. Los planos de los módulos están publicados bajo
licencia de Creative Commons, por lo que se puede realizar
versiones propias del módulo, ampliándo u optimizándolo.

pág. 7
Placa Arduino Uno

Hardware

Arduino Uno es una placa electrónica basada en el micro


controlador ATmega328. Cuenta con 13 entradas/salidas digitales,
de las cuales 6 se pueden utilizar como salidas PWM (Modulación
por ancho de pulso) y otras 6 son entradas analógicas. Además,
incluye un cristal o resonador cerámico de 16 MHz, un conector
USB, un conector de alimentación, una cabecera ICSP y un botón
de reseteado. Se conecta a una PC por medio de un cable USB
para alimentación e intercambio de datos o a la corriente eléctrica a
través de un adaptador AC/DC.

pág. 8
Software

Arduino utiliza un lenguaje de programación que sirve para controlar


los distintos sensores y actuadores que se encuentran conectados a
la placa. Este lenguaje se llama Wirirng, basado en la plataforma
Processing y primordialmente en el lenguaje de prograación
C/C++, de este lenguaje derivan otros más que son muy utilizados
en el ámbito de Ingeniería y desarrollo, como C#, Java, BASIC,
Php, Phytom, JavaScript, Perl, entre otros más. Para poder trabajar
desde el nivel programación del procesador, debe descargarse el
software que incluye las librerías necesarias para poder utilizar el
lenguaje de manera completa. Una ventaja de este software es que
puede descargarse desde el sitio web oficial de Arduino, pues es
open source.

Características generales de la placa Arduino

 Opera con el microprocesador ATmega328


 13 pines para entradas/salidas digitales (programables) de los
cuales 6 pueden operarse como salidas analógicas del tipo
PWM
 6 pines para entradas analógicas
pág. 9
 Voltaje de operación 5V
 Voltaje de entrada (recomendado) 7-12 V
 Voltaje de entrada (limite) 6-20 V
 Corriente DC I/O Pin 40 mA
 Corriente DC 3.3V Pin 50 mA
 Memoria Flash 32 KB (2 KB para el bootloader)
 SRAM 1 KB
 EEPROM 512 byte
 Velocidad de reloj 16 MHz
 Lenguaje Wiring

Conexión del Sensor de Temperatura DHT11

El DHT11 es un sensor que mide humedad y temperatura. Es ideal


para sistemas de medición climatológicos o para controles de
temperatura y humedad. Este sensor además incluye un transductor
interno de temperatura del tipo NTC. También el módulo tiene una
gran relación señal a ruido ante la interferencia. Por ejemplo cada
circuito, se calibra estrictamente en el laboratorio. Esto permite que
sea extremadamente preciso en calibración de humedad. Los
coeficientes de calibración se almacenan como programas en la
memoria OTP, que son utilizados por el proceso de detección de la
señal interna del sensor.

CARACTERÍSTICAS

 Voltaje de Alimentación: 3V-5.5V


 Corriente de Alimentación: en medición de 0.5mA-
2.5mA
 Stand by: 100uA-150uA
 Alcance de medición: 20-90% humedad/ 0-50°C
 Temperatura de precisión: ±2°
pág. 10
Protocolo de transmisión digital del DHT11

El DHT11 es un sensor que presenta una salida digital en forma de


un tren de pulsos que se enviará al microcontrolador. La trama de
datos es de 40 bits correspondiente a la información de humedad y
temperatura del DHT11.

El primer grupo de 8-bit es la parte entera de la humedad y el


segundo grupo la parte decimal. Lo mismo ocurre con el tercer y
cuarto grupo, la parte entera de la temperatura y la parte decimal.
Por último los bits de paridad para confirmar que no hay datos
corruptos.

Estos bits de paridad lo único que hacen es asegurarnos de que la


información es correcta, sumando los 4 primero grupos de 8-bit.
Esta suma debe ser igual a los bits de paridad. Si nos centramos en
la imagen anterior y sumamos los bits, comprobamos que todo está
correcto.

0011 0101 + 0000 0000 + 0001 1000 + 0000 0000 = 0100 1101

Conexión del DHT11 a Arduino

 Conexionado DHT11 sin PCB

Para conectar el circuito con un DHT11, necesitaremos tener una


resistencia que ayude a conformar el nivel alto (pull-up) conectada a
la salida digital. La recomendación es utilizar una resistencia de
5 kΩ. Se dispone de 4 pines el VCC (de 3,5V a 5V), la salida digital
I/O, el pin no conectado NC y la toma de tierra GND.

pág. 11
El esquema eléctrico del DHT11 sería el siguiente:

 Programación del DHT11 en el IDE de Arduino

En este ejemplo, se va a obtener 3 valores del DHT11:

 Humedad relativa: describe la cantidad de agua que se


transporta por el aire, es importante para determinar el
desarrollo de las nubes y el factor precipitación.
 Temperatura ambiente: temperatura en un determinado
lugar.

 Almacenamiento en memoria de los datos leídos

Los datos que se pueden almacenar en una memoria pueden ser de


1 byte u 8 bits, y almacenan valores entre 0y 255, los datos
proporcionados por los sensores son datos que ocupan 2 bytes (16
bits) y se puede almacenar valores entre 0 y 216 – 1.

pág. 12
Capacidad de la memoria EEPROM de Arduino

Cada modelo de placa posee una EEPROM distinta. La tabla a

continuación brinda información al respecto:

Para programar la memoria EEPROM se debe utilizar la librería


EEPROM.h (Se encuentra por defecto en la IDE).

En la memoria del Arduino se debe trabajar por direcciones y byte a


byte tanto para leer como para escribir. Esto significa que para una
memoria de 1kB se tendrá desde la dirección 0 hasta la 999 y se
puede utilizar valores para almacenar desde 0 a 255. En caso de
que se requiera guardar valores mayores como los leídos por los
sensores, se tendrá que dividirlos por bytes.

 Sensor de Luz BH1750

El módulo BH1750 es un sensor de iluminación digital para


medición de flujo luminoso (iluminancia) de la empresa Rohm
Semiconductor. Posee un conversor interno de 16-bit, por lo que
entrega una salida digital en formato I2C. Su desempeño es mejor
pág. 13
al de un Foto-Resistor (LDR), pues no es necesario realizar
conversiones de voltaje para obtener datos interpretables.

El BH1750 entrega la intensidad luminosa directamente en


unidades Lux (Lx). El lux es la unidad derivada del S.I. de Unidades
para la iluminancia o nivel de iluminación. Equivale a un lumen /m².
Se usa en la fotometría como medida de la luminancia, tomando en
cuenta las diferentes longitudes de onda según la función de
luminosidad, un modelo estándar de la sensibilidad a la luz del ojo
humano.

Ejemplos de iluminación (Lux):

Noche: 0.001-0.02
Luz de medianoche: 0.02-0.3
Interior nublado: 5-50
Exterior nublado: 50-500
Soleado Interior: 100-1000
Bajo el sol de verano: alrededor de 10^6
Recomendado para lectura de libros: 50-60;
Estándar de video casero: 1400

Características

1) I2Interfaz de bus C (Soporte de modo f / s)


2) La responsabilidad espectral es aproximadamente la respuesta
del ojo humano
3) Iluminancia al convertidor digital
4) Amplia gama y alta resolución. (1 - 65535 lx)
5) Baja corriente por la función de apagado
6) Función de rechazo de ruido de luz 50Hz / 60Hz
7) interfaz de entrada lógica 1.8V
8) No necesita ninguna parte externa
9) La dependencia de la fuente de luz es pequeña. (por ejemplo,
lámpara incandescente, lámpara fluorescente, lámpara halógena,
LED blanco, luz solar)
10) Es posible seleccionar 2 tipos de I2
C dirección de esclavo.
11) resultado de medición ajustable para la influencia de la ventana
óptica
pág. 14
(Es posible detectar mín. 0,11 lx, máximo 100000 lx usando esta
función).
12) Pequeña variación de medición (+/- 20%)
13) La influencia del infrarrojo es muy pequeña.

Calificaciones máximas absolutas


Parámetro Símbolo Calificaciones Unidades

Voltaje de suministro V max 4.5 V

Temperatura de Topr -40 ~ 85 ℃


funcionamiento

Temperatura de Tstg -40 ~ 100 ℃


almacenamiento

SDA Sink Current I max 7 mA

Disipación de Pd 260 mW
potencia

Dirección para usar el sensor:

Modo de Resolución:

El pin ADDR internamente en el módulo tiene una resistencia a GND, por


lo que si dejamos sin conectarlo la dirección será 0x23.

pág. 15
Podemos configurar también la resolución del sensor, el cual también
afecta a la velocidad de medición; tenemos 3 modos de resolución:

Estas tres configuraciones se subdividen en dos, en modo


CONTINUOUS y ONE_TIME, con el primero es para cuando se
realizan mediciones constantemente, el segundo para cuando no se
necesitan realizar medidas de forma constante, cuando está
configurada como ONE_TIME, el modulo se apaga después de
realizar la medida, y para volver a leer es necesario volver a
configurar.

 Librería BH1750

Nosotros usaremos una de varias librerías que podemos encontrar


en internet, usaremos la librería BH1750 escrita por Christopher
Laws, librería que lo pueden descargar en:
https://github.com/claws/BH1750

 Conexiones entre Arduino y el módulo BH1750

Las conexiones del módulo son como cualquier conexión con buz
I2C:

pág. 16
El pin ADDR lo dejamos sin conectar puesto que la librería que
usamos trabaja con la dirección 0x23

pág. 17
Módulo bluetooth HC-06
EL modulo Bluetooth HC-05 viene configurado de fábrica como
Esclavo, pero se puede cambiar para que trabaje como maestro,
además al igual que el hc-06, se puede cambiar el nombre, código
de vinculación velocidad y otros parámetros más.
Definamos primero que es un dispositivo bluetooth maestro y
dispositivo esclavo:
Modulo bluetooth hc-06 como esclavo:
Cuando está configurado de esta forma, se comporta similar a un
HC-06, espera que un dispositivo bluetooth maestro se conecte a
este, generalmente se utiliza cuando se necesita comunicarse con
una PC o Celular, pues estos se comportan como dispositivos
maestros.
Modulo bluetooth hc-06 como Maestro:
En este modo, EL HC-05 es el que inicia la conexión. Un dispositivo
maestro solo se puede conectarse con un dispositivo esclavo.
Generalmente se utiliza este modo para comunicarse entre módulos
bluetooth. Pero es necesario antes especificar con que dispositivo
se tiene que comunicar, esto se explicará más adelante
El módulo HC-06 viene por defecto configurado de la siguiente
forma:
- Modo o role: Esclavo
- Nombre por defeco: HC-06
- Código de emparejamiento por defecto: 1234
- La velocidad por defecto (baud rate): 9600
EL Modulo HC-06 tiene 4 estados los cuales es importante
conocer:
Estado Desconectado:
- Entra a este estado tan pronto alimentas el modulo, y cuando no
se ha establecido una conexión bluetooth con ningún otro
dispositivo
- EL LED del módulo en este estado parpadea rápidamente
- En este estado a diferencia del HC-06, el HC-05 no puede
interpretar los comandos AT.

pág. 18
Estado Conectado o de comunicación
- Entra a este estado cuando se establece una conexión con otro
dispositivo bluetooth.
- El LED hace un doble parpadeo.
- Todos los datos que se ingresen al HC-06 por el Pin RX se
trasmiten por bluetooth al dispositivo conectado, y los datos
recibidos se devuelven por el pin TX. La comunicación es
transparente
Modo AT 1
- Para entrar a este estado después de conectar y alimentar el
modulo es necesario presionar el botón del HC-06.
- En este estado, podemos enviar comandos AT, pero a la misma
velocidad con el que está configurado.
- EL LED del módulo en este estado parpadea rápidamente igual
que en el estado desconectado.
Modo AT 2
- Para entrar a este estado es necesario tener presionado el botón
al momento de alimentar el modulo, es decir el modulo debe
encender con el botón presionado, después de haber encendido se
puede soltar y permanecerá en este estado.
- En este estado, para enviar comandos AT es necesario hacerlo a
la velocidad de 38400 baudios, esto es muy útil cuando nos
olvidamos la velocidad con la que hemos dejado configurado
nuestro modulo.
- EL LED del módulo en este estado parpadea lentamente.
Entendido lo anterior vamos realizamos las conexiones para
configurar el HC-05.
Para configurar el modulo necesitamos enviar los comandos AT
desde una computadora, esto lo podemos hacer de dos formas:
Hacer la comunicación entre la PC y el módulo de forma
indirecta a través de un Arduino:

pág. 19
Las conexiones serían las siguientes:

pág. 20
Ahorro de energía
El Arduino UNO tiende a consumir uso 45 mA en vacío, mientras
que un Arduino Nano llega a los 15 mA, el problema consiste en
que una aplicación como Datalogger implica operación
independiente y autónoma por lo que el uso de baterías para
alimentar el circuito es obligatorio y la condición de ahorro de
energía es indispensable.

Para lograr este ahorro se utiliza la función sleep, para ello es


necesario descargar la librería.

La función sleep trabaja con el Watchdog Timer del Arduino, el


Watchdog Timer no es más que un temporizador que cuando se lo
utiliza con un valor de tiempo preestablecido, empieza a realizar
una cuenta descendente respecto al tiempo prefijado, al llegar a
cero, este Watchdog Timer activa una interrupción Hardware sobre
el Arduino, es decir interrumpe cualquier labor que estuviese
haciendo el Arduino y lo direcciona a realizar una tarea específica.
Normalmente el watchdog se utiliza como una condición de
preeemergencia, digamos que se hacen labores repetitivas que
“duran” un periodo de tiempo, se activa el watchdog con cada labor
repetitiva con un tiempo prefijado mayor al periodo que
supuestamente demora la labor repetitiva, el objetivo es que
Arduino realice una tarea de emergencia cuando la labor específica
dure más de su tiempo normal, esto es de bastante utilidad en
algunos casos.

El consumo para cada modo de los sleep son:

 Sleep modo IDLE: 15 mA


 Sleep modo ADC: 6.5 mA
 Sleep modo POWER SAVE: 1.62 mA
 Sleep modo EXT STANDBY: 1.62 mA
 Sleep modo STANDBY : 0.84 mA
 Sleep modo POWER DOWN : 0.36 mA

Entonces estamos consumiendo con el modo utilizado sólo 0,36


mA.

pág. 21
Ahora respecto al dato SLEEP_8S, éste va directo al Watchdog
Timer y sera el tiempo que dormira el arduino hasta que lo despierte
la interrupción activada por el watchdog cuando la cuenta regresiva
del tiempo programado (8 segundos) llegue a cero.

Este tiempo puede variar de acuerdo a la tabla siguiente:

 SLEEP_15MS
 SLEEP_30MS
 SLEEP_60MS
 SLEEP_120MS
 SLEEP_250MS
 SLEEP_500MS
 SLEEP_1S
 SLEEP_2S
 SLEEP_4S
 SLEEP_8S
 SLEEP_FOREVER

Se debe tener cuidado con SLEEP FOREVER pues el Arduino


“dormira” por siempre si es que no se ha establecido el
procedimiento de hardware o software para “despertarlo”

Respecto al tiempo, vemos que el mayor disponible es el de 8


segundos, pero esto puede extenderse realizando bucles anidados
que prolongan la cantidad de estos periodos de “sueño”.

Interrupciones

Las interrupciones son útiles para hacer que las cosas sucedan
automáticamente en un programa de un microcontrolador y pueden
ayudar a resolver problemas de tiempo. Una tarea adecuada para
usar una interrupción pueden incluir leer un sensor eventualmente o
monitorear algún puerto de entrada.

Si se desea asegurar de que un programa siempre capte los


impulsos proporcionados por el rotor de una turbina giratoria, para
que nunca falle la recepción del pulso se tendría que realizar un
complicado programa para hacer que el microcontrolador haga algo
adicional a eso, puesto que el programa necesitaría sondear
constantemente al sensor, procesar la señal obtenida, etc. Otras
pág. 22
situaciones en las que se utilicen sensores también tienen una
dinámica de interfaz similar, como tratar de leer un sensor de sonido
que está tratando de captar un clic, o un sensor de ranura infrarroja
(fotointerruptor) que intenta capturar una caída de moneda. En
todas estas situaciones, usar una interrupción puede liberar el
microcontrolador para realizar otro trabajo sin perder la entrada.

Una interrupción se puede llamar de varias formas:

 Un Timer ( Un Watch Dog, es un caso particular de Timer)


 Una interrupción hardware.
 Una señal UART

Un ejemplo de interrupción por hardware lo implementamos a


continuación:

Primero se tiene que elegir la placa arduino que se utiliza, en el


caso que fuese Arduino UNO el pin digital 2 será por donde se
habilite la interrupción 0, y el pin digital 3 será por donde se habilite
la interrupción 1. Para otras placas se puede revisar la tabla
siguiente:

pág. 23
Placa
INT.0 INT.1 INT.2 INT.3 INT.4 INT.5
Arduino
Uno, nano,
mini, 2 3
Ethernet
Mega, Número
mega2560, 2 3 21 20 19 18 del pin
megaADK de la
Basados en placa
el 32u4
3 2 0 1 7
(ej.Leonardo,
Micro)

Como tenemos en nuestro desarrollo el puerto digital 2 ocupado por el


DHT11, utilizamos el pin 3 o interrupción 1 para la prueba respectiva:

Para poder utilizar interrupciones con Arduino no necesitamos


incorporar ningún tipo de librería al programa, únicamente se
necesita hacer referencia a las funciones que trabajan con ello:

attachInterrupt(pin, ISR, modo)

pág. 24
Esta función nos va a permitir definir o configurar uno de los pines
como un puerto de interrupción. Los tres parámetros que admite
son:

Pin: debemos llevar especial cuidado con este parámetro, no se


refiere al pin utilizado para la interrupción sino al numero de
interrupcion asociado al pin utilizado, (ver la tabla previa).por
ejemplo si trabajamos con Arduino UNO tenemos dos pines para
interrupciones el 2 y el 3. Si queremos utilizar el 2 debemos poner
un 0 y si queremos utilizar el 3 debemos poner un 1. Esto se
resuelve muy fácilmente utilizando otra función,
digitalPinToInterrupt(pin), que devuelve el ordinal del pin que
queremos utilizar. Por ejemplo, en el caso anterior, si queremos
utilizar el pin 2 llamaríamos a la función digitalPinToInterrupt(2).
Esto nos devolverá un 0 y es el método recomendado por Arduino
para pasar este parámetro.

ISR: es una abreviatura de Interrupt Service Routine y no es más


que la función o método que se llama cuando se produce la
interrupción. Es de un tipo particular ya que no admite parámetros y
tampoco devuelve ningún valor. En general, se debe hacer métodos
o funciones ISR lo más cortas y rápidas posibles. Se puede producir
un bloqueo entre los diferentes ISR. Lo que sucede en estos casos
es que solo se ejecuta una a la vez quedando en cola el resto de
interrupciones.

Dentro de las interrupciones no funciona el delay() (retardo) por lo


tanto no se debe utilizar. Si se requiere un retardo dentro de un ISR
se puede utilizar la función delayMicrosends(), que funciona con
normalidad. Tambien ocurre que los datos recibidos por el puerto
serie se pueden perder mientras se está en la función llamada por
la interrupción.

Las variables que se vayan a utilizar tanto dentro de los métodos


ISR como fuera, ya sea en el loop() o en cualquier otra función,
deben ser declararlas como volatile. Esta palabra reservada le dice
al compilador que estas variables pueden cambiar de valor en
cualquier momento y, por lo tanto, el compilador debe volver a
cargar la variable cada vez que se hace referencia en algún sitio a
ella. Al contrario que ocurre con otras variables donde el compilador
confía en alguna copia que pueda tener en algún registro del
procesador.
pág. 25
Modo: define cuando debe ser disparada la interrupción. Puede
tomar cuatro valores constantes dependiendo de lo que se quiera
hacer:

 LOW: se lanzará la interrupción cuando el pin esté en estado


bajo.
 CHANGE: se lanzará la interrupción cuando el pin cambie de
valor de alto a bajo, o de bajo a alto.
 RISING: se lanzará la interrupción cuando el pin cambie de
estado de bajo a alto.
 FALLING: se lanzará la interrupción cuando el pin cambie de
estado de alto a bajo.
 Existe un quinto estado que solo los Arduino Due, Zero y
MKR1000 permiten:
 HIGH: se lanzará la interrupción cuando el pin esté en estado
alto.

pág. 26
Metodología
Esta metodología realizada en ambiente de trabajo de la empresa
xxxxxxx ha comprendido de una primera etapa donde se han
realizado el muestreo de los datos de iluminación y la lectura de los
mismos. En base a estos valores previos se ha procedido a realizar
el dimensionamiento del sistema, determinándose de una
datalogger necesario autónomo para el registro de datos.

 Plan de trabajo

Semana Semana Semana Semana Semana Semana


Actividad 1 2 3 4 5 6
Muestreo de datos X X
Dimensionamiento X X
Montaje de las bases X
Montaje sistema
automático X X
Montaje de los sensores X
Instalación del sistema X
Cronograma de actividades

pág. 27
 Listado de los materiales, equipos, maquinarias y
herramientas

1 Arduino uno

1 Sensor de luz BH1750

1 Sensor de temperatura BHT11

1 Módulo Bluetooth HC-06

2 Resistencias (10k ohm; 330 ohm)

2 Led 3-Pin Switch-Mode

1 Pulsador

1 Batería

1 Switch On-Off

1 router (para usarlo de carcasa)

Varios cablecitos hembra-macho

1 laptop

pág. 28
Métodos y técnicas utilizadas
Este tipo de sistema que se ha utilizado es el almacenamiento de
datos sensados datalogger.

Para el encendido y apagado del sistema autónomo se utiliza el


interruptor de dos posiciones y para el inicio del censado se utiliza
el pulsador.

Desarrollo de las etapas del proyecto

Se desarrolló en ambientes húmedos y secos, y en donde la


temperatura alcanzaba su máximo valor. Para el desarrollo del
luxómetro se hizo en ambientes tanto húmedos como temperaturas
elevadas.

Muestreo de Datos
Se muestreo los parámetros medidos con el Datalogger.

Datalogger

Durante el lapso de unas 08 horas de trabajo, los datos obtenidos


se muestran a continuación:

pág. 29
PRUEBAS Y RESULTADOS

Medición de resultados

pág. 30
CONCLUSIONES Y RECOMENDACIONES

Los resultados de este proyecto se pueden dividir, de acuerdo a las


partes de las que consta el desarrollo del datalogger, en tres:
hardware, firmware y software.

En primer lugar, en la parte de hardware se consiguió realizar el


diseño óptimo de un datalogger para la adquisición de datos de dos
variables meteorológicas y una variable de intensidad: temperatura
ambiente, humedad e intensidad de luz. Para lograr lo anterior se
diseñaron los distintos circuitos de acondicionamiento para los
sensores y el circuito digital para el registro de estas variables.
Adicionalmente, dados los requerimientos de la aplicación, se puso
especial énfasis en la implementación de técnicas para la
disminución del consumo de los componentes usados. En cuanto a
los medios de interacción entre el usuario y el datalogger, se
implementaron controles simples para su uso en sitio y, en la
comunicación entre éste y la PC, se implementó un protocolo de
comunicación (bluetooth), dando con ello una mayor versatilidad de
uso al usuario. En cuanto al consumo de energía, aunque no se
pudieron realizar pruebas que confirmen cuál será la duración de la
batería, se estimó que ésta fácilmente podrá alcanzar para que el
datalogger opere mínimamente 12 horas. En la parte del firmware
se logró crear un programa en el microcontrolador (Arduino) que
manejara tanto los módulos de éste como los distintos dispositivos
externos que componen el datalogger. Mediante este manejo se
logró adquirir, guardar y trasmitir a una PC las mediciones de las
dos variables meteorológicas y la intensidad de luz que se
plantearon adquirir. Adicionalmente a la adquisición de las variables
se logró que el programa desarrollado contribuyera a disminuir el

pág. 31
consumo de energía del datalogger, esto también en gran parte
ayudado por los componentes de hardware seleccionados. El
programa en la PC (Putty) se convirtió en una herramienta muy
importante dado que éste permitió una distribución de tareas entre
el datalogger y la computadora, con lo cual se logró superar las
deficiencias en el procesamiento de la información del
microcontrolador. El programa está desarrollado para que fungiera
como un ambiente para el uso de distintos dataloggers, lo cual
permite mantener la información colectada por cada uno de ellos de
manera separada.

En cuanto a la comunicación entre el datalogger y la computadora


se logró, a través de la implementación de una serie de comandos,
establecer funcionales adicionales en el datalogger que no hubiera
sido posible implementar con los pocos controles en sitio que
cuenta éste. Finalmente, se espera que una vez que un datalogger
sea instalado en un lugar adecuado, los datos adquiridos por éste
puedan servir tanto para tomar decisiones en sitio, como para
realizar estudios sobre al aire libre. El datalogger, además de que
contribuirán al mejoramiento de la calidad, poseerá ventajas sobre
la calidad de luz en el ambiente, tanto en su facilidad de uso como
en la utilidad de la información adquirida. Por citar un ejemplo, los
datos de precipitación de calor pueden ser considerados para
realizar estudios sobre la temperatura de un lugar en específico,
estudio que no se podría realizar con datos obtenidos de un simple
termómetro.

Conclusiones

Basándonos en el objetivo de este proyecto, como conclusión


general se puede decir que dicho objetivo fue cumplido. Se logró
pág. 32
obtener un sistema capaz de realizar las mediciones deseadas y
que dichas mediciones fueran presentadas al usuario de manera
adecuada. De las cosas que me gustaría destacar en cuanto el
desarrollo del proyectos es que si bien había encontrado equipos
desarrollados que hicieran uso de memorias EEPROM para el
guardado de los datos adquiridos, éstos no contemplan, en primer
lugar, lo que sucede con la información almacenada en éstas
cuando el equipo era completamente desenergizado y en segundo
lugar, la degradación que sufren las celdas de memoria después de
múltiples ciclos de escritura. El algoritmo desarrollado para el
grabado de datos contempla ambos aspectos, además de organizar
de un mejor modo la memoria y por ende hacer más eficiente el uso
de la cantidad de almacenamiento disponible. El proyecto
desarrollado deja una base de conocimiento que puede servir para
la realización de proyectos futuros y para la incorporación de
nuevas características a éste.

Este proyecto sin duda está sujeto a mejoras entre las cuales
destaco: La parte de hardware puede en cierta medida ser
integrada de mejor manera, utilizar, por ejemplo, un lm35, lo cual
nos daría el promedio de temperatura con el DHT11.

En caso de querer mejorar la resolución del datalogger, en cuanto a


la adquisición de los valores de temperatura ambiente se requeriría
un convertidor de mayor resolución.

Lo anterior podría ser logrado mediante el uso de un convertidor


externo o incluso mediante el remplazo del microcontrolador por
uno con mejores características, entre ellas un convertidor A/D de
mayor resolución.

pág. 33
En cuanto al firmware es de todas las partes del proyecto la que
más satisfacción nos dio tanto en su desarrollo como en el resultado
final, aun así todo código está sujeto a ser optimizado y nuevas
características podrían serle dadas al datalogger a través de la
modificación del firmware. Dentro de estas nuevas características,
la que consideramos la más importante, es la implementar junto con
el programa de un método para la detección de errores en la
transmisión de los datos.

Las recomendaciones del software se enfocan en mejorar el código


del programa, dado que es nuestra primera experiencia
desarrollando un programa como el aquí mostrado, sin duda deben
de existir formas de hacer el desarrollo del mismo más compacto y
eficiente.

Por último, en cuanto a una recomendación general para el


proyecto nos gustaría mencionar que al datalogger se le es posible
incrementar el número de sensores. Este aspecto requeriría de la
modificación de todos los elementos del mismo, pero dada la
experiencia que se logró, no existiría mayor problema en realizarlo.
De igual forma para mejorar su versatilidad, a éste se le podrían
agregar un medio más de comunicación inalámbrica (Wi-Fi), ya sea
entre el datalogger y la PC o la nube o incluso entre el datalogger y
los sensores.

Finalmente, quiero agregar que este proyecto significó una gran


experiencia para nosotros. Contribuyó no sólo a que póngamos en
práctica conocimientos del curso de Plantas Industriales sino
también a emplear las habilidades desarrolladas durante la misma.

pág. 34

You might also like