AUTOMATIZACIÓN - CURSO: 2010-2011- Práctica 4: Sistema de Monitorización de tiempo mediante Arduino



Documentos relacionados
BUS I2C. IES Los Viveros Sevilla Dpto. Electrónica. 1

AUTOMATIZACIÓN - CURSO: Práctica 3: Automatización de una Puerta de Garaje mediante Arduino

Curso sobre Microcontroladores Familia HC9S08 de Freescale

I2C. Ing. Pablo Martín Gomez

Actividad 4: Comunicación entre PLC s vía Ethernet

PROYECTO DE ELECTRÓNICA

El módulo LCD Ejemplos de funcionamiento

SPI. Teoría y Aplicaciones. INGENIERIA EN MICROCONTROLADORES Protocolo SPI( Serial Peripherical Interface) Protocolo

COMUNICACIÓN I2C (INTER-INTEGRATED CIRCUIT)

Comunicación Serie IIC: Inter-Integrated Circuit

BUS I2C: IMPLEMENTACIÓN PRÁCTICA CON MICROCONTROLADORES PIC MEMORIAS EEPROM SERIE

Memoria 24LC256 I. I NTRODUCCIÓN

El Protocolo SPI. IES Juan de la Cierva. Aprendizaje de la Electrónica a través de la Robótica. Fernando Remiro Domínguez

COMUNICACION DE PLC S MEDIANTE EL PUERTO RS- 485 Y MONITOREADO POR PANTALLA.

Manual de Instalación y Programación

Manual de software. Dynamic Cloud. 10/2014 MS-Dynamic_Cloud v1.2

Utilización de los puertos serial y paralelo de una PC usando LabView

MANUAL DE USUARIO Sensor de temperatura y humedad digital MCI-SEN REV. 1.0

TEMA EL BUS I 2 C (Inter Integrated Circuit Bus) I2C EN C

SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA

Instalación y Programación Módulo Voyager-NET

GedicoPDA: software de preventa

Direcciones IP IMPLANTACIÓN DE SISTEMAS OPERATIVOS 1º ASIR. En redes IPv4.

3. Transforma los siguientes cronogramas en tablas de verdad. (E=Entrada, S=Salida). a) b)

Anexo B. Comunicaciones entre mc y PC

REGISTROS DE DESPLAZAMIENTO

Pantalla HMI como maestro 3 PLC esclavo

INSTRUMENTACIÓN AVANZADA Departamento de Ingeniería Eléctrica y Electromecánica Facultad de Ingeniería Universidad Nacional de Mar del Plata

EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET

Práctica 2NivelFisico: Estudio del nivel físico en la RS232 y en la RS485

DISPLAYS DE CRISTAL LIQUIDO

KW x hora. on/off

EB ES. Appendix 1 Circuit Diagram Hoja de datos de la placa LCD EB Contenido - 1 -

ArduLab. 1. Qué te pasa Nerea? 2.Este robot no funciona bien y no sé que le pasa

64 x 8 Serial Real Time Clock

LBRTU Características

Práctica 1. Programación y Simulación de un PLC

PIC MICRO ESTUDIO Timer Monoestable/Biestable ajustable hasta 99H 59M 59S Timer 2T Clave:

5.4. Manual de usuario

NOTA DE APLICACIÓN AN-P002. Programando Wiring con NXProg

GENERACIÓN DE TRANSFERENCIAS

Práctica 4 Diseño de circuitos con puertas lógicas.

Capítulo Comunicaciones de datos 1. Conexión de dos unidades 2. Conectando la unidad con una computadora personal

Edición de Ofertas Excel Manual de Usuario

Manual de software. MP GAS Tools. Software para marcadores de gasolineras. 07/2014 MS-MPGasTools_v1.4

TRABAJO PRÁCTICO Nº 6: PUERTO SERIE

Alarma Comunitaria Nt-Com ACM

Sistema de Detección de Robo de Cable

La forma de manejar esta controladora es mediante un ordenador utilizando algún lenguaje de programación (Por ejemplo.: C, Visual Basic, Logo,...).

Conexión inalámbrica a un CNC (con puerto Serie RS232C)

Apuntes de ACCESS. Apuntes de Access. Campos de Búsqueda:

TEMA7. SISTEMAS SECUENCIALES

Control Teaching de un Brazo Robot de Cinco Grados de Libertad

Información sobre la configuración de una aplicación para transmitir datos ASCII por puerto serie, con pantallas terminales Magelis.

SISTEMA CAN-BUS en las Carretillas Elevadoras

GVisualPDA Módulo de Almacén

ELECTRÓNICA DIGITAL. Una señal es la variación de una magnitud que permite transmitir información. Las señales pueden ser de dos tipos:

3. FUNCIONAMIENTO DE LA FUNCIONES TXD Y RXD 4. EJEMPLO DE ENVÍO DE SMS DESDE EL PLC 5. EJEMPLO DE RECEPCIÓN DE SMS EN EL PLC

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD

La informática es el conjunto de técnicas y conocimientos necesarios para el tratamiento automático de la información mediante el ordenador.

INGENIERIA EN MICROCONTROLADORES. Protocolo RS-485. Introducción

Instalación y Registro Versiones Educativas 2013

NANO GRABADOR OCULTO EXTENDED TS9680

UNLaM REDES Y SUBREDES DIRECCIONES IP Y CLASES DE REDES:

En el presente capítulo se describe la programación del instrumento virtual y cómo

ACTIVIDADES TEMA 1. EL LENGUAJE DE LOS ORDENADORES. 4º E.S.O- SOLUCIONES.

2 Entrada binaria, 4 canales, DIN

COMUNICACIÓN HYPERTERMINAL CON DELTA PLC.

Especificación para el Sistema de administración de datos y monitoreo en línea de baterías para sistema de UPS

Guía rápida de CX-Programmer

Manual AGENDA DE RESPALDO

Tema 7. SISTEMAS SECUENCIALES SISTEMAS SECUENCIALES SÍNCRONOS

CENTRO DE PROFESORES Y DE RECURSOS DE TERUEL

Protocolo PPP PPP Protocolo de Internet de línea serie (SLIP)

Central de incendios convencional Serie 500 Más fácil, imposible

Características. Especificaciones técnicas

Tema: Códigos de Línea.

podemos enfocar al funcionamiento del robot, es decir la parte de electrónica. Para que el

Tecnología IP para videovigilancia... Los últimos avances han hecho posible conectar cámaras directamente a una red de ordenadores basada en el

VideoSoftPHONE Active Contact

V W V W

El protocolo IMAP ofrece la descarga de correos en modo sólo lectura, es decir descarga sólo una copia del correo y no permite el borrado.

Comunicación CPU S Vs CPU S por TCP

Temporizadores y contadores en tiempo real: El módulo Timer0 y el prescaler del PIC

MANUAL DE USUARIO ARDUINO DMX MASTER SHIELD MCI-TDD REV. 1.0

TEMA 2: FUNCIONAMIENTO DE INTERNET.

ELECTRONICA ESTUDIO MODULO TRASMISOR-RECEPTOR DE RF A RS232 BIDIRECCIONAL Clave: 875

Centro Universitario de Ciencias Exactas e Ingenierías DIVISION DE ELECTRONICA Y COMPUTACION

Practica de Control y Programación de Robots ROBOT HERMES. Curso

GENERACIÓN DE ANTICIPOS DE CRÉDITO

Programación de dispositivos Arduino Asignatura Sistemas Digitales!

DESCRIPCION DEL SITEMA MASTER.

Módulo Colector de Datos:

INTRODUCCION A LOS SISTEMAS R.F.I.D.

Conexionado del módulo LCD para ser controlado por conexión serie: Instrucciones para el control del LCD(comandos de control):

TEMA 4. Unidades Funcionales del Computador

PLAN DE PRUEBAS DE LA SKILLS 16 ELECTRÓNICA

Constructor Virtual y Simulador de Circuitos Digitales con Chips TTL

EJERCICIO Nº 12: COMUNICACIÓN DE SEÑALES DIGITALES ENTRE EL INSTABUS EIB Y EL LOGO

PS.Vending Almacén Pocket PC

Transcripción:

AUTOMATIZACIÓN - CURSO: 2010-2011- Juan Antonio Corrales Ramón Carlos Alberto Jara Bravo Fernando Torres Medina Grupo de Innovación Educativa en Automática Departamento de Física, Ingeniería de Sistemas y Teoría de la Señal Universidad de Alicante Práctica 4: Sistema de Monitorización de tiempo mediante Arduino Objetivos Conocer un circuito integrado RTC (Real-Time Clock). Conocer el funcionamiento del bus I 2 C para la conexión de sensores a microcontroladores. Conocer cómo utilizar una pantalla LED con Arduino. Desarrollar un programa en Arduino para gestionar el tiempo y generar eventos. Realización de la práctica Conexión de una pantalla LED a Arduino Una forma de mostrar información procedente de un microcontrolador es mediante la utilización de una pantalla LED. En esta práctica se utilizará una pantalla LED DisplayTech162C con interfaz paralela, que se muestra en la siguiente figura: Identifica los pines de la pantalla consultando su hoja de especificaciones. Conecta los distintos pines de la pantalla a la placa Arduino como se indica en la siguiente figura:

Ten en cuenta que es necesario añadir un potenciómetro al pin V 0 para regular el contraste de la pantalla. Las dos patillas exteriores del potenciómetro irán conectadas a 5V y 0V respectivamente, mientras que la patilla central irá conectada al pin V 0. En la siguiente figura se muestra una fotografía de un potenciómetro. Después de conectar el potenciómetro, se deberá encender el Arduino para regular el contraste de la pantalla. Gira el potenciómetro hasta que se comiencen a ver unos cuadrados oscuros en la pantalla. La visualización de estos cuadrados identifica la correcta configuración del contraste. A continuación, es necesario programar la pantalla para visualizar caracteres en ella. Para ello, es necesario enviar los valores correctos de voltaje (HIGH o LOW) a los pines RS, E, DB4, DB5, DB6 y DB7, siguiendo las especificaciones de la pantalla. Para simplificar esta operación, utilizaremos la librería LiquidCrystal, que viene incluida en la distribución Arduino. Abre el ejemplo HelloWorld de la librería y comprueba su funcionamiento. Analiza la funcionalidad de las funciones lcd.setcursor() y lcd.print(). El Circuito Integrado RTC DS1307 y su Conexión a Arduino Un chip RTC (Real-Time Clock) es un circuito integrado que implementa las funciones de un reloj en tiempo real, manteniendo tanto el tiempo (horas, minutos y segundos) como la fecha (día, mes y año) actuales. Las principales ventajas de este chip son: la larga duración de su batería (hasta 10 años) y la gestión automática del número de días de los meses, teniendo en cuenta los años bisiestos. Además, el modelo DS1307 que usaremos en prácticas tiene un pin de salida SQW/OUT con una señal cuadrada de 1 Hz (donde se podría conectar un LED como indicador de segundos) y una memoria RAM de propósito general de 56 bytes. En la siguiente figura se muestra una fotografía del chip RTC DS1307: Identifica los distintos pines del circuito integrado en la hoja de especificaciones del componente.

Conecta el chip al Arduino siguiendo el siguiente esquema. Ten en cuenta que los pines SDA y SCL deberán ir conectados al Arduino mediante sendas resistencias de pull-up (cualquier valor entre 1K y 10K). A los pines X1 y X2 deberemos conectar un cristal de cuarzo de 32,768kHz, como el que se muestra en la siguiente figura: La Comunicación I 2 C y su Programación en Arduino El reloj DS1307 se comunica con el Arduino a través del bus I 2 C. El bus I 2 C es un tipo de bus serie que permite la interconexión de dispositivos mediante dos únicas líneas, una de datos (SDA, serial Data) y otra de reloj (SCL, serial Clock). La principal ventaja de este bus es el ahorro de cables y de conexiones en comparación con una conexión paralela (como, por ejemplo, la conexión de la pantalla LED que vimos en el apartado anterior). A un mismo bus I 2 C pueden haber conectados múltiples dispositivos. Estos se identificarán por una dirección única (0x68 en el caso del RTC DS1307) y actuarán en el bus como maestros (Master) o como esclavos (Slave). El maestro es el dispositivo que inicia la transferencia en el bus y el que genera la señal de reloj SCL. El esclavo es el dispositivo direccionado que recibirá la orden del maestro y responderá en consecuencia. En nuestro caso, la placa Arduino actuará como maestro mientras que el reloj DS1307 actuará como esclavo. La secuencia de transmisión en un bus I 2 C es la siguiente: 1. El maestro comienza a transmitir mandando un bit de START (condición de START), seguido de la dirección de 7 bits del esclavo con el que desea comunicarse y seguido finalmente de un único bit R/W que representa si desea escribir (0) o leer (1) del esclavo.

2. El esclavo envía un bit de ACK para indicar al maestro que existe un dispositivo conectado al bus con la dirección solicitada. 3. El maestro comienza entonces a transmitir información al esclavo o a recibir información de él dependiendo del modo R/W indicado en el paso 1. El esclavo funcionará en el modo complementario (es decir, modo recepción o modo transmisión, respectivamente). En el caso de que el maestro sea transmisor, éste enviará byte a byte mientras que el esclavo responderá con un bit ACK. En el caso de que el maestro sea receptor, el esclavo enviará byte a byte mientras que el maestro responderá con un bit ACK. 4. El maestro terminará la conexión con un bit de STOP (condición de STOP) o volverá enviar otro bit de START para realizar otra transferencia. En la siguiente figura se muestra la secuencia de bits/bytes enviados a través del bus I 2 C cuando el maestro está en modo de transmisión y el esclavo en modo de recepción. En la siguiente figura se muestra la secuencia de bits/bytes enviados a través del bus I 2 C cuando el maestro está en modo de recepción y el esclavo en modo de transmisión. Este protocolo de comunicación es implementado en Arduino en la librería Wire. Esta librería utiliza las siguientes funciones para implementar dicho protocolo: Wire.begin(): Inicializa la librería Wire. Se coloca en la función setup(). Wire.beginTransmission(address): Comienza una transmisión al dispositivo esclavo cuya dirección es pasada como parámetro. Esta función enviará el bit START, la dirección del dispositivo esclavo y el bit R/W para escritura. Wire.send(byte): Prepara los bytes de datos que enviará el maestro al dispositivo esclavo. Wire.endTransmission(): Envía al esclavo los bytes que fueron preparados con la función send() y finaliza la transmisión con la condición de STOP. Wire.requestFrom(address,num_bytes): Inicia una recepción del dispositivo esclavo cuya dirección es pasada como parámatro. Esta función enviará el bit START y la dirección del dispostivo esclavo junto

con el bit R/W para lectura. El maestro esperará recibir del esclavo el número de bytes especificado como segundo parámetro. Cuando se reciba dicho número de bytes, el maestro automáticamente cerrará la conexión con el bit STOP. byte b= Wire.receive(): Recupera un byte b que fue transmitido desde el esclavo al maestro después de la llamada requestfrom. Lectura y Visualización de la Hora de Chip RTC con Arduino (Parte I) En esta primera parte de la práctica, se deberá desarrollar un programa en Arduino que acceda a la información de hora del reloj DS1307 y la muestre por la pantalla LCD. Para ello, en primer lugar se deberá consultar las especificaciones del reloj DS1307. En particular, se deberá comprender cómo organiza la información de tiempo en sus registros internos (página 8 del datasheet), analizando el siguiente diagrama: A continuación, se deberá analizar qué información tiene que enviar a través de I 2 C la placa Arduino (que actuará como maestro) al reloj (que actuará como esclavo). En particular, se debe analizar el protocolo de comunicación entre ambos que se describe en la página 12 del datasheet. Serán necesario los dos modos de comunicación que implementa el reloj: modo de escritura (el esclavo es receptor de información y el maestro es el transmisor) y modo de lectura (el esclavo es el transmisor de información y el maestro es el receptor). A partir de la información anterior, se deberán implementar en Arduino las siguientes dos funciones para gestionar el reloj: void setdateds1307(byte second, byte minute, byte hour, byte dayofweek, byte dayofmonth, byte month, byte year): Esta función utilizará el modo de escritura I 2 C del reloj para establecer la hora inicial del chip. Esta función deberá seguir los siguientes pasos: 1. Iniciar la transmisión desde el maestro con la función Wire.beginTransmission(addr). 2. Enviar como primer byte el puntero del registro interno del reloj donde se empezará a escribir (registro 0 en este caso). Se utilizará la función Wire.send(byte).

3. Enviar byte a byte los 7 parámetros pasados a la función setdateds1307. Los bytes de segundos y minutos estarán comprendido en el rango 0-59, el byte de horas estará comprendido en el rango 0-23. El byte del día de la semana estará comprendido entre 1-7, el byte del día del mes estará comprendido entre 1-31, el byte del mes estará comprendido entre 1-12 y el byte del año estará comprendido entre 0-99. 4. Cerrar la transmisión I 2 C con la función Wire.endTransmission(). void getdateds1307(byte *second, byte *hour, byte *dayofweek, byte *dayofmonth, byte *month, byte *year): Esta función utilizará el modo de lectura I 2 C del reloj para que el maestro lea la hora/fecha que tiene almacenada el reloj. Se ejecutará en la función loop() antes de mostrar los datos. Esta función deberá seguir los siguientes pasos: 1. El maestro deberá indicar al esclavo cuál es el puntero del registro sobre el que se va a empezar a leer datos. Para ello, deberá abrir una transmisión como en la función anterior, enviar un único byte con el puntero del registro y cerrar la transmisión. En este caso, el primer registro del que se empezará a leer será el 0 (registro interno de segundos). 2. El maestro deberá solicitar al reloj la lectura de 7 bytes mediante la función Wire.requestFrom(addr,num_bytes). 3. El maestro utilizará la función Wire.receive() para leer byte a byte los datos del reloj. Se debe tener en cuenta que en el caso del byte de segundos se deberá aplicar una máscara de bits para descartar el bit 7 (bit CH, que se encarga de activar o desactivar el cristal oscilador). En el caso del byte de las horas se deberán descartar los bits 7 y 6 y considerar que el formato de las horas es de 24H. Todos los datos que se envíen y reciban del reloj deberán estar en formato binario BCD. Se podrán utilizar las siguientes funciones para su transformación: // Convierte numeros normales decimales a BCD (binario decimal codificado) byte dectobcd(byte val) { return ( (val/10*16) + (val%10) ); } // Convierte BCD (binario decimal codificado) a numeros normales decimales byte bcdtodec(byte val) { return ( (val/16*10) + (val%16) ); } La función setup() deberá invocar a la función setdateds1307() para establecer el valor inicial de la hora/fecha del reloj. La función loop() deberá invocar a la función getdateds1307() para leer en tiempo real la hora/fecha actuales y utilizará funciones de la librería LiquidCrystal para mostrar dichos datos en la pantalla LCD. Como recomendación, se podría mostrar en la primera fila de la pantalla la hora con el formato: HH:MM:SS. No es necesario mostrar la información de fecha.

Gestión de una Alarma en Arduino para el Reloj (Parte II) Se deberá añadir al código Arduino desarrollado en la práctica anterior la gestión de una alarma. El alumno definirá una alarma en un determinado instante HH:MM. El programa Arduino deberá mostrar la hora actual (tal como hacía en la parte I de la práctica) pero también deberá verificar si la hora actual se corresponde con la hora de la alarma. En el caso de que se corresponda, se deberá activar un zumbador piezoeléctrico que estará conectado a una salida digital del Arduino. En la siguiente figura se muestra un ejemplo de este zumbador. Esta alarma se deberá apagar automáticamente cuando la hora del sistema ya no se corresponda con la hora de la alarma (es decir, 1 minuto después de su activación). Además, se deberá añadir un pulsador en una entrada digital del Arduino para desactivar la alarma. De este modo, si el usuario del reloj desea desactivar la alarma antes del minuto de duración, deberá pulsar dicho pulsador. Es recomendable utilizar la librería Bounce para evitar los rebotes del pulsador. Como parte opcional, el alumno podrá añadir un segundo pulsador que permita al usuario cambiar la hora de la alarma, mostrando dicho cambio en la pantalla LCD. Este segundo pulsador podría ser utilizado para iniciar el modo de cambio de alarma (pasando de cambio de hora de alarma a cambio de minutos de alarma cada vez que se pulse). El primer pulsador podrá ser utilizado para ir incrementando las horas o los minutos de la alarma (dependiendo de si se está en el modo de cambio de minutos de alarma o en el modo cambio de horas de alarma ). Si se implementa esta funcionalidad, será necesario utilizar la librería Bounce para eliminar los rebotes del pulsador y detectar correctamente los flancos (cambios de voltaje) en las entradas digitales correspondientes del Arduino.