Universidad Carlos III de Madrid
Repositorio institucional e-Archivo http://e-archivo.uc3m.es
Trabajos acadmicos Proyectos Fin de Carrera
2013-05
Sistemas de adquisicin de datos
basados en la plataforma Arduino :
aplicaciones a Matlab, Simulink y Android
Horra Kllmer, Mario de la
http://hdl.handle.net/10016/17166
Descargado de e-Archivo, repositorio institucional de la Universidad Carlos III de Madrid
Departamento de Ingeniera de Sistemas y Automtica
PROYECTO FIN DE CARRERA
INGENIERA INDUSTRIAL
Sistemas de Adquisicin de Datos basados en la
plataforma Arduino. Aplicaciones a Matlab, Simulink y
Android.
Autor: MARIO DE LA HORRA KLLMER
Director: RAMN IGNACIO BARBER CASTAO
Legans, Mayo 2013
Ttulo:
Autor: Mario De la Horra Kllmer
Director: Ramn Ignacio Barber Castao
Tutor: Ramn Ignacio Barber Castao.
EL TRIBUNAL
Presidente: .
Vocal: .
Secretario: .
Realizado el acto de defensa y lectura del Proyecto Fin de Carrera el da __ de _______
de 20__ en Legans, en la Escuela Politcnica Superior de la Universidad Carlos III de
Madrid, acuerda otorgarle la CALIFICACIN de
VOCAL
SECRETARIO PRESIDENTE
Agradecimientos
Escribo stas lneas gracias a quienes lo han hecho posible, Familia, Amigos, Profesores
y Compaeros. Este trabajo es vuestro.
En Madrid, a 7 de Mayo del 2013,
Mario
Universidad Carlos III de Madrid
Resumen
En este Proyecto se desarrolla un sistema de adquisicin de datos de bajo coste con el
doble objetivo de que por un lado sea muy sencillo de usar para un destino educativo
y, por otro lado, de que se pueda conectar mediante la arquitectura cliente-servidor a
otros dispositivos de forma inalmbrica o cableada para realizar el control.
En el sistema prima la interfaz microcontrolador-cliente, de forma que busca de forma
intensiva diferentes caminos para conectar ambos, bien a travs del ordenador o
dispositivo mvil.
Adems de toda la investigacin y el desarrollo del sistema tanto en la parte hardware,
que ha consistido en el acondicionamiento de la seal obtenida de los sensores y
proporcionada a los actuadores, del cual se ha llevado a cabo su implantacin fsica
haciendo uso de microcontroladores (Arduino MEGA y Arduino UNO) y mdulos de
expansin de comunicaciones (Ethernet Shield); como de la parte software, mediante
el lenguaje de programacin de la plataforma, muy similar a C, y Simulink, para
implementar los sistemas de control. Tambin se han desarrollado pruebas para
validar el sistema.
Al final se propone, resuelve y prueba un ejercicio prctico de laboratorio.
7
De la Horra Kllmer, Mario
8
Abstract
This Project develops a low cost Data Acquisition System with the double goal that
would be easy to use for learners and easy to connect through several systems.
The system highlights the microcontroller-client interface, so propose several ways to
connect both, through a computer or a mobile device.
Also it develops on one hand the hardware interface that consist of signal conditioning,
from sensors and to actuators, physical implementation using Arduino
microcontrollers and shields. On the other hand the mobile interface is developed and
several tests are done to verify the whole system.
Finally a practice exercise is proposed, solved and tested.
ndice
1. Introduccin ........................................................................................................................ 19
1.1. Motivacin .................................................................................................................. 19
1.2. Objetivos del proyecto ................................................................................................ 20
1.3. Partes del documento ................................................................................................. 21
2. Estado del Arte .................................................................................................................... 23
2.1. Microcontrolador ........................................................................................................ 23
2.1.1. Hardware ............................................................................................................. 25
2.1.2. Software .............................................................................................................. 26
2.2. Tarjetas de adquisicin de datos................................................................................. 30
2.2.1. Arduino mega ...................................................................................................... 31
2.2.2. Arduino uno......................................................................................................... 33
2.2.3. Ethernet shield .................................................................................................... 35
2.3. Matlab ......................................................................................................................... 36
2.3.1. Arduino IO ........................................................................................................... 36
2.3.2. Soporte Arduino Simulink ................................................................................... 39
2.3.3. Comunicacin serie ............................................................................................. 44
2.4. Interfaz Arduino Android ............................................................................................ 47
2.4.1. Bluetooth: Amarino ............................................................................................. 47
2.4.2. Audio: Androino .................................................................................................. 48
De la Horra Kllmer, Mario
2.4.3. Cable USB ............................................................................................................ 48
3. Diseo de la Tarjeta de Adquisicin de Datos ..................................................................... 51
3.1. Descripcin del sistema............................................................................................... 51
3.2. Especificaciones .......................................................................................................... 53
3.3. Acondicionamiento de la seal ................................................................................... 53
3.3.1. Acondicionamiento de la seal de entrada a la maqueta ................................... 54
3.3.2. Acondicionamiento de la seal de salida de la maqueta .................................... 54
3.4. Diseo electrnico....................................................................................................... 55
3.4.1. Filtro .................................................................................................................... 55
3.4.2. Amplificacin de la seal ..................................................................................... 59
3.4.3. Acondicionamiento de la seal de salida del motor ........................................... 60
3.5. Pruebas del circuito electrnico .................................................................................. 62
3.5.1. Prueba realizada con Arduino IO ........................................................................ 62
3.5.2. Soporte Simulink con Arduino............................................................................. 66
3.5.3. Control de motor de corriente continua en bucle abierto. Prueba de lectura de
acondicionamiento de la entrada al Arduino ...................................................................... 68
3.6. Estudio de Arduino como Tarjeta de Adquisicin de datos ........................................ 70
3.6.1. Soporte Simulink ................................................................................................. 70
3.6.2. Paquete Arduino IO ............................................................................................. 74
4. Interfaz con Arduino............................................................................................................ 77
4.1. Introduccin ................................................................................................................ 77
4.2. Conexin...................................................................................................................... 78
4.2.1. Servidor ............................................................................................................... 78
4.2.2. Cliente ................................................................................................................. 80
5. Resultados experimentales: Control de un motor de Corriente Continua ......................... 85
5.1. Mtodo de Ziegler-Nichols .......................................................................................... 86
5.2. Ajuste emprico del regulador ..................................................................................... 87
5.3. Prueba del regulador................................................................................................... 89
6. Conclusiones y trabajos futuros .......................................................................................... 93
6.1. Conclusiones................................................................................................................ 93
6.2. Trabajos futuros .......................................................................................................... 94
7. Referencias .......................................................................................................................... 95
Anexos ......................................................................................................................................... 99
12
Universidad Carlos III de Madrid
A. Hojas de caractersticas de los componentes ............................................................... 101
A.1. LDR ............................................................................................................................. 101
B. Cdigo ............................................................................................................................... 103
B.1. Comunicacin Serie. Cdigo Arduino ......................................................................... 103
B.2. Arduino IO. Funcin Matlab ...................................................................................... 104
B.3. Cdigo Servidor .......................................................................................................... 106
B.4. Cdigo Aplicacin Android ......................................................................................... 110
C. Presupuesto .................................................................................................................. 127
D. Glosario ......................................................................................................................... 129
13
De la Horra Kllmer, Mario
14
Universidad Carlos III de Madrid
ndice de figuras
Figura 1 Placa Arduino ensamblada artesanalmente ................................................................. 24
Figura 2 Arduino Nano ................................................................................................................ 24
Figura 3 Esquema bsico Arduino ............................................................................................... 25
Figura 4 Cristal 16Mhz ................................................................................................................. 26
Figura 5 Entorno de desarrollo.................................................................................................... 27
Figura 6 Seleccin de placa ......................................................................................................... 28
Figura 7 Esquema de adquisicin de datos ................................................................................. 30
Figura 8 Advantech 1711S ........................................................................................................... 31
Figura 9 Arduino Mega ................................................................................................................ 32
Figura 10 Arduino UNO ............................................................................................................... 34
Figura 11 Mdulo Ethernet ......................................................................................................... 35
Figura 12 Esquema comunicacin mdulo Ethernet .................................................................. 35
Figura 13 Librera Arduino IO ...................................................................................................... 38
Figura 14 Arduino IO Setup ......................................................................................................... 38
Figura 15 Libreria Simulink de Arduino ....................................................................................... 40
Figura 16 Bloque: Entrada analgica........................................................................................... 40
Figura 17 Conexin AREF............................................................................................................. 41
Figura 18 Configuracin de la seal de referencia ...................................................................... 41
Figura 19 Bloque entrada digital ................................................................................................. 42
Figura 20 Bloque Salida PWM ..................................................................................................... 43
Figura 21 Bloque Salida Digital .................................................................................................... 44
Figura 22 Comunicacin serie Matlab-Arduino........................................................................... 45
Figura 23 Flujograma comunicacin serie................................................................................... 46
Figura 24 Mdulo Bluetooth Mate Gold ..................................................................................... 47
Figura 25 Conexin por cable audio ............................................................................................ 48
Figura 26 Esquema descriptivo del sistema ................................................................................ 51
Figura 27 Motor CC ..................................................................................................................... 52
15
De la Horra Kllmer, Mario
Figura 28 Panel de control de la maqueta .................................................................................. 52
Figura 29 Esquema acondicionamiento entrada a maqueta ...................................................... 54
Figura 30 Acondicionamiento de la salida de la maqueta .......................................................... 54
Figura 31 Filtro RC ....................................................................................................................... 55
Figura 32 Rectificacin de onda senoidal .................................................................................... 56
Figura 33 Respuesta en frecuencia del filtro ............................................................................... 57
Figura 34 Simulacin respuesta filtro a entrada escaln ............................................................ 57
Figura 35 Filtro: Ciclo PWM ......................................................................................................... 58
Figura 36 Filtro Onda cuadrada ................................................................................................... 58
Figura 37 Filtro. Onda Senoidal ................................................................................................... 58
Figura 38 Amplificador no inversor ............................................................................................. 59
Figura 39 Acondicionamiento de la seal PWM ......................................................................... 59
Figura 40 Acondicionamiento salida PWM -> Salida Filtro -> Amplificacin: Seal de referencia
de la maqueta ............................................................................................................................. 60
Figura 41 Esquema electrnico acondicionamiento de la seal de salida de la maqueta .......... 60
Figura 42 Implementacion de las etapas de acondicionamiento sobre protoboard .................. 61
Figura 43 Implementacin sobre baquelita ................................................................................ 62
Figura 44 Circuito para el test de conectividad ........................................................................... 63
En la Figura 45 se representa en rojo la seal leda por el potencimetro y en azul, la seal
enviada al LED. ............................................................................................................................ 63
Figura 46 Test de comunicacin .................................................................................................. 63
Figura 47 Flujograma control mediante Arduino IO ................................................................... 64
Figura 48 Control luz ................................................................................................................... 65
Figura 49 Muestreo de seales mediante Arduino IO ................................................................ 65
Figura 50 Esquema conexin pruebas Simulink .......................................................................... 66
Figura 51 Esquema prueba de generacin de onda cuadrada.................................................... 67
Figura 52 Onda Cuadrada ............................................................................................................ 67
Figura 53 Generacin senoide..................................................................................................... 67
Figura 54 Generacin onda escaln ............................................................................................ 68
Figura 55 Bloque "Tarjeta Arduino" ............................................................................................ 69
Figura 56 Control de motor con una seal senoidal ................................................................... 70
Figura 57 Esquema lectura soporte Simulink .............................................................................. 71
Figura 58 Seal contra tiempo. Tiempo de muestreo = 0.02s .................................................... 71
Figura 59 Seal contra nmero de muestra. Tiempo de muestreo = 0.02s................................ 72
Figura 60 Seal frente a tiempo. Tiempo de muestreo = 0.002s ................................................ 72
Figura 61 Seal frente a nmero de muestra. Tiempo de muestreo = 0.002s ........................... 73
Figura 62 Esquema lectura Arduino IO ....................................................................................... 74
Figura 63 Seal frente a tiempo de muestreo. Tiempo de muestreo = 0.01s ............................ 75
Figura 64 Seal frente a nmero de muestra. Tiempo de muestreo = 0.01s ............................. 75
Figura 65 Seal frente a tiempo. Tiempo de muestreo = 0.001s ................................................ 75
Figura 66 Seal frente a nmero de muestra. Tiempo de muestreo = 0.001s ........................... 76
Figura 67 Esquema de conexin ................................................................................................. 77
Figura 68 Flujograma programa servidor .................................................................................... 79
Figura 69 Aplicacin cliente ........................................................................................................ 80
Figura 70 Mtodo Actividad principal, conecta la interfaz de usuario con los objetos .............. 81
16
Universidad Carlos III de Madrid
Figura 71 Mtodo clicBotonConexion, llamado cuando el usuario pulsa el botn
conectar/desconectar ................................................................................................................. 81
Figura 72 Mtodo movimientoBarraActuador, llamado cuando el usuario desplaza la
barraActuador ............................................................................................................................. 82
Figura 73 Metodo onProgressUpdate, llamado cada vez que se recibe una cadena ................. 83
Figura 74 Mtodo sendDataToNetwork, llamado cada vez que se mueve la barraActuador .... 83
Figura 75 Especificacin del mtodo Ziegler-Nichols.................................................................. 86
Figura 76 Plataforma experimental ............................................................................................ 87
Figura 77 Esquema para ajuste Ziegler-Nichols en bucle cerrado .............................................. 88
Figura 78 Ganacia crtica. ............................................................................................................ 88
Figura 79 Implementacin PID .................................................................................................... 89
Figura 80 Resultado implementacin PID ................................................................................... 90
Figura 81 Regulador Proporcional............................................................................................... 90
Figura 82 Regulador Proporcional-Integral ................................................................................. 91
17
De la Horra Kllmer, Mario
18
Universidad Carlos III de Madrid
1. Introduccin
1.1. Motivacin
El origen de este trabajo se encuentra en la bsqueda de sistemas de adquisicin de
datos de bajo coste que permitan por un lado integrar la experimentacin en el
aprendizaje y por otro ampliar las interfaces con dichos sistemas buscando la
movilidad y la sencillez de uso.
En relacin a la bsqueda de la movilidad, la motivacin parte de la necesidad de que
si bien la medida de una magnitud fsica en innumerables ocasiones se realiza en el
sitio, los datos adquiridos deben ser ubicuos, es decir estar disponibles en cualquier
momento y lugar. De esta manera, ya se est midiendo el ritmo cardiaco de un
paciente, la velocidad de un motor, o la temperatura de un horno, aunque el paciente,
el motor o el horno no cambien de ubicacin, el mdico, la persona o el programa que
recoge los datos no slo podrn no estar en la misma habitacin o laboratorio, sino
que adems los datos se encontrarn desde dnde sean solicitados.
19
De la Horra Kllmer, Mario
Por otra parte la integracin con el entorno educativo requiere unas caractersticas
especiales, la principal de ellas es la sencillez, debe de tratar con sistemas muy
intuitivos de forma que el alumno pueda dirigir toda su energa al aprendizaje
mediante la experimentacin y desarrollar en el mismo sus habilidades. La segunda
caracterstica crucial es el coste, que deberemos minimizar para evitar crear barreras
de entrada, por lo que nuestro esfuerzo se dirigir a crear un lugar para la
experimentacin muy asequible.
1.2. Objetivos del proyecto
A raz de las motivaciones surgen los objetivos. Satisfacer las motivaciones implica
desarrollar un sistema sencillo, cuya interaccin sea intuitiva. Adems debe ser
modular, para permitir su comunicacin con el exterior, y el aadido caractersticas
con facilidad a coste reducido, de forma que su adopcin tenga las mnimas barreras
de entrada.
Los objetivos del proyecto se concretan en:
Realizar un sistema basado en Arduino que permita controlar un sistema fsico
mediante Matlab o Simulink.
Implementacin de etapa de acondicionamiento de la seal entre el
microcontrolador y el mundo fsico.
Implementacin de una interfaz mvil sobre la plataforma Android.
En primer lugar ser elegida una plataforma que permita cumplir con las
especificaciones dadas por la maqueta de un motor que har de mundo fsico del que
los datos sern adquiridos, tras esto se realizarn pruebas en el laboratorio con la
maqueta del motor de corriente continua. Para ello, desde la tarjeta de adquisicin de
datos, teniendo en cuenta la plataforma experimental utilizada ser realizada una
20
Universidad Carlos III de Madrid
etapa de acondicionamiento de la seal. Por el lado del ordenador se utilizar una
interfaz de conexin.
Para el desarrollo de una solucin mvil, se investigarn las posibilidades de la
tecnologa web, y realizar una aplicacin para una plataforma mvil.
1.3. Partes del documento
A continuacin se presentan los contenidos de ste documento.
En el Captulo Segundo trata sobre el estado del arte y de la tcnica junto a las
soluciones propuestas, en los campos de tarjetas de adquisicin de datos, arduino,
Matlab y Android.
En el Captulo Tercero se explica la tarjeta de adquisicin de datos empleada basada en
Arduino. Se desarrolla el sistema de acondicionamiento entre un sistema fsico y el
microcontrolador, y se realizan las pruebas de verificacin del sistema. Tambin se
analiza la validez de Arduino como tarjeta de Adquisicin de datos.
En el Captulo Cuarto se desarrolla e implementa una interfaz mvil sobre la
plataforma Android que se comunica con el microcontrolador.
En el Captulo Quinto se muestran como resultados experimentales una prctica de
laboratorio donde se muestra el uso del sistema experimentado.
Por ltimo, en el Captulo Sexto se comentan las conclusiones y se muestran las
posibles lneas de ampliacin y mejora del sistema propuesto.
21
De la Horra Kllmer, Mario
22
Universidad Carlos III de Madrid
2. Estado del Arte
En este captulo se presenta el estado tecnolgico en relacin a las plataformas
disponibles e interfaces existentes para la implementacin de Tarjetas de Adquisicin
de Datos de bajo coste.
2.1. Microcontrolador
Arduino es una plataforma de electrnica abierta para la creacin de prototipos
basada en software y hardware flexibles y fciles de usar. Se cre para artistas,
diseadores, aficionados y cualquiera interesado en crear entornos u objetos
interactivos [1].
Dicha plataforma consiste en un soporte hardware formado por una placa que
proporciona la alimentacin, el oscilador, y la carga del programa en
microcontroladores de la serie 8 bit de Atmel y soporte software formado por un
entorno de desarrollo basado en Wiring [2], que es un framework abierto para la
programacin de microcontroladores; y un lenguaje llamado Processing [3], usado
para el aprendizaje, realizacin de prototipos y productos (Figura 1).
23
De la Horra Kllmer, Mario
En este trabajo se ha optado por adquirir las placas ensambladas, sin embargo gracias
a que toda la documentacin se encuentra disponible de forma abierta, las placas
pueden ser ensambladas manualmente y que sean compatibles con dicha plataforma
como se muestra en la Figura 1.
Figura 1 Placa Arduino ensamblada artesanalmente
En la familia de placas oficiales Arduino, adems del Arduino MEGA y UNO que se
analizarn posteriormente, hay una gran variedad de tarjetas como Arduino Bluetooth
o Nano preparadas para usar directamente en placas de desarrollo, (ver Figura 2).
Figura 2 Arduino Nano
24
Universidad Carlos III de Madrid
Se puede encontrar tambin placas con caractersticas nicas como Arduino Mini, la
menor en tamao; Mega ADK, extensin de Arduino Mega para conectarse
directamente por USB a mviles Android; Arduino Lili, para aplicaciones sobre ropa [4],
etc.
Complementariamente a las placas, hay mdulos de expansin conocidos como
shields que aaden funcionalidades a las mismas, como la comunicacin Wifi,
Bluetooth, o GSM.
2.1.1. Hardware
En primer lugar se describir la parte del sistema electrnico correspondiente al
soporte hardware (Figura 3):
Figura 3 Esquema bsico Arduino
Desde la parte izquierda, de arriba hacia debajo se observa con la marca X1 un
conector serie que usa el estndar RS-232 que se utiliza para conectar la placa al
ordenador y cargar los programas. A continuacin, debajo se encuentra la
25
De la Horra Kllmer, Mario
alimentacin por un Jack centro-positivo que puede funcionar entre 7-20V aunque lo
recomendado es mantenerse en un rango de 9-12V.
A ambos lados, en la parte superior e inferior de la imagen, estn las regletas de pines
de entradas/salidas digitales en la parte superior, y analgicas en la inferior.
Debajo de los pines digitales 9-10-11 se puede ver el cristal de 16Mhz, Figura 4.
Figura 4 Cristal 16Mhz
En la parte derecha, de arriba hacia debajo se tiene marcado como JP0, la parte que
habilita/deshabilita la comunicacin serie. Y a continuacin el ICSP que se puede
utilizar para grabar un gestor de arranque a travs de un programador externo. Por
ltimo el interruptor S1 que resetea el Atmega.
2.1.2. Software
Arduino proporciona un entorno de desarrollo basado en Wiring, Figura 5, el cul se
trata de un framework abierto para la programacin de microcontroladores y est
constituido por un editor de texto para escribir cdigo y debajo de ste un rea de
mensajes.
En la parte superior se tiene una barra de herramientas con las funciones bsicas de
verificar/compilar el programa, volcado en la placa Arduino, etc. La herramienta ms
til ser el monitor serie con el que se podr estar en contacto continuo con la placa.
26
Universidad Carlos III de Madrid
Figura 5 Entorno de desarrollo
Antes de volcar un programa, se deber configurar la placa a usar y el puerto donde se
encuentra conectada, para ello en la barra de mens seleccionar Tools > Board se
escoge la placa, y despus en Tools > Serial Port, el puerto en el que est conectada
(Figura 6).
Al seleccionar la placa que va a ser usada, en realidad se est configurando la CPU,
velocidad, el fichero y la configuracin del bootloader.
27
De la Horra Kllmer, Mario
Figura 6 Seleccin de placa
Para volcar un programa, por defecto se utiliza el bootloader de Arduino, que es un
programa precargado en el Arduino y permite subir el cdigo sin utilizar hardware
adicional. Este se inicia justo tras el reseteo de la placa y hace parpadear el LED 13.
Tras esto se inicia el programa que haya sido cargado en el microcontrolador.
Estructura de un programa
Un programa para Arduino comienza incluyendo las libreras que van a ser utilizadas,
esto es la forma de extender la funcionalidad de nuestros programas. Para utilizar una
librera simplemente insertamos en nuestro programa la directiva:
#include <miLibreria.h>
Esto ser descrito ms tarde, cundo al conectar el mdulo de expansin Ethernet, que
como se conecta a travs del puerto SPI, se utilizarn las directivas:
#include <SPI.h>
#include <Ethernet.h>
Otras libreras de las que disponemos oficialmente son la librera EEPROM, para
leer/escribir en memorias permanentes; Firmata, para comunicacin con aplicaciones
en el ordenador a travs del protocolo Serial; Servo, para controlar servomotores;
LiquidCrystal para controlar pantallas LCD; etc. [5]
28
Universidad Carlos III de Madrid
A continuacin aparece la funcin setup(), cuyo cdigo slo se ejecutar una vez. Es el
lugar dnde inicializar y configurar variables y programas.
Despus se encuentra la funcin loop(), que se ejecutar en un bucle continuo
mientras la placa est alimentada.
Tras la funcin loop(), pueden aparecer las funciones llamadas por el programa, si las
hay.
De esta forma el esquema de un programa en Arduino, tambin llamado sketch, se
construye a partir de las siguientes lneas:
#include <miCabecera.h>
void setup()
//
void loop()
... funcion_1();
int funcion_1()
{}
Otro punto destacable, adems de la familia de placas Arduino, es que gracias a su
popularidad y a su carcter abierto se ha creado una gran comunidad en torno a estas
placas, que proporciona mdulos, accesorios para su expansin, libreras y en general
mucha documentacin y ayuda para realizar las interfaces con otro software y
hardware. Estas caractersticas de modularidad y expansin harn que esta plataforma
sea una opcin ideal para ste proyecto.
29
De la Horra Kllmer, Mario
Entre las placas sern sealadas Arduino UNO, y Arduino MEGA, que son las que
utilizadas; y entre los mdulos de expansin, el mdulo de conexin Ethernet, con el
que se proporcionar la interfaz de uso mvil.
2.2. Tarjetas de adquisicin de datos
En el mundo real nos encontramos con magnitudes fsicas como la temperatura o la
humedad en una habitacin, el peso de los alimentos que compramos, o la velocidad a
la que nos movemos. La forma de interactuar con estas variables ocurre en dos
sentidos, por un lado las medimos a travs de sensores, como por ejemplo un
termmetro, y por otro actuamos sobre ellas mediante actuadores como un aparato
de calefaccin.
Estos sensores o actuadores, Figura 7, para informar de la magnitud que estn
midiendo proporcionan una seal en forma de tensin o corriente, en el caso de los
actuadores, les es proporcionada. Por otra parte, para comunicar con un ordenador se
deben seguir unos protocolos que le sean comprensibles, es decir, que la seal de
tensin obtenida de un sensor no puede ser conectada directamente al ordenador,
sino que debe ser conectada antes a un intermediario que la presentar al mismo u a
otro dispositivo en una forma que pueda ser procesada. Este intermediario es la tarjeta
de adquisicin de datos, TAD o DAQ en ingls.
Mundo Sensor/ Adquisicin Dispositivo
Actuador de datos
Figura 7 Esquema de adquisicin de datos
30
Universidad Carlos III de Madrid
La etapa de adquisicin de los datos se puede subdividir en dos subetapas, una de
acondicionamiento de las seales de los sensores y otra la Tarjeta de Adquisicin de
Datos en s.
Actualmente en las aulas de laboratorio se encuentran instaladas las tarjetas
Advantech 1711S (Figura 8) que consisten en una tarjeta PCI con 16 entradas/salidas
analgicas y otras 16 entradas/salidas digitales. Las desventajas de estas tarjetas son,
por una parte que para realizar las prcticas con ellas se depende del ordenador de
sobremesa en el que se encuentran instaladas, y por otra su coste, actualmente unas 6
veces superior al de la placa Arduino Mega.
Figura 8 Advantech 1711S
2.2.1. Arduino mega
Esta placa utiliza el microcontrolador ATmeg1280, tiene 54 entradas/salidas digitales, -
de las cules 14 pueden proporcionar una seal PWM- y 16 pines de entradas/salidas
analgicas. En la Figura 9 se muestra la placa Arduino Mega empleada en este trabajo.
31
De la Horra Kllmer, Mario
Figura 9 Arduino Mega
Entre otras caractersticas destacan:
- Intensidad por pin: 40mA
- Memoria Flash: 128KB
- EPROM: 4KB
- Velocidad del reloj: 16Mhz
- Tensin de funcionamiento: 5V
- Tensin de entrada recomendado: 7-12V
- Tensin de entrada lmite: 6-20V
Alimentacin
Puede realizarse por USB o con una fuente de alimentacin externa, que a su vez
puede ser mediante un conector macho centro-positivo de 2.1mm o mediante
conexin directa a los pines Vin y GND (toma de tierra) de la placa que vienen
marcados como POWER (pines en la parte inferior izquierda de la Figura 9).
Desde el pin Vin, si se est alimentando a travs de un transformador en el conector
centro-positivo, se puede acceder al voltaje que proporciona.
Junto a los pines Vin, y GND se encuentran los pines 5V y 3.3V que proporcionan una
fuente de tensin a la dicha tensin indicada, siendo la corriente mxima soportada de
50mA.
32
Universidad Carlos III de Madrid
Memoria
La placa incorpora 128KB de memoria Flash, de los que 4KB son utilizados por el gestor
de arranque, y que para acceder a la memoria EEPROM debemos aadir las libreras
EEPROM [6] a nuestro cdigo.
Entradas/Salidas Digitales
Operan a 5V y pueden recibir una intensidad mxima de 40mA. Los pines del 0 al 13
pueden funcionar adems de generador de onda PWM, y en el pin 13 hay adems un
LED integrado en la placa.
Los pines 0(Rx0)-1(Tx0), 14(Tx3)-15(Rx3), 16(Rx2)-17(Tx2), 18(Tx1)-19(Rx1) se pueden
utilizar para transmitir/Recibir (Tx)/(Rx) datos por el puerto serie.
Los pines de interrupciones externas son el 2(INT0), 3(INT1), 18(INT5), 19(INT4),
20(INT3) y 21(INT2). Para utilizarlos se debe utilizar la funcin:
attachInterrupt(interrupcin, funcin, modo);
dnde modo puede ser LOW (dispara la interrupcin en cualquier momento que el pin
est a nivel bajo), CHANGE(cuando ocurre el cambio de valor), RISING(cambio de valor
Bajo a Alto), FALLING(cambio de valor Alto a Bajo).
Entradas/Salidas Analgicas
Las 16 entradas/salidas analgicas tienen una resolucin de 10 bits, y por defecto
miden de 0 a 5V. Este valor de referencia puede ser cambiado suministrando una
tensin en el pin AREF.
2.2.2. Arduino uno
Esta placa, ms modesta que la anterior, est basada en el microcontrolador
Atmeg328. En la Figura 10 se muestra la placa ms sencilla que proporciona Arduino.
33
De la Horra Kllmer, Mario
Figura 10 Arduino UNO
Presenta 14 entradas/salidas digitales, de las que 6 pueden ser utilizadas para generar
ondas PWM, y otras 6 analgicas. Salvo por la memoria, las caractersticas son muy
similares a las del Arduino Mega:
- Intensidad por pin: 40mA
- Memoria Flash: 32KB
- EEPROM: 1KB
- Velocidad del reloj: 16Mhz
- Tensin de funcionamiento: 5V
- Tensin de entrada recomendado: 7-12V
- Tensin de entrada lmite: 6-20V
Puede observarse que es muy similar al Arduino Mega, las caractersticas y pines de
alimentacin son idnticos; y respecto de la memoria, en esta placa el gestor de
arranque ocupa 0.5KB frente a los 4KB del MEGA.
En el apartado de entradas/salidas, tienen tambin las mismas limitaciones de
corriente que la placa anterior. Incorpora 14 entradas/salidas digitales, de las cules
slo pueden usarse para comunicacin serie la 0(Rx) y 1(Tx); y para interrupciones
externas el 2(INT0) y el 3(INT1).
34
Universidad Carlos III de Madrid
2.2.3. Ethernet shield
Se trata de un mdulo que proporciona conexin de Arduino con internet [7]. En la
Figura 11 se muestra el mdulo empleado para realizar la comunicacin.
Figura 11 Mdulo Ethernet
Este mdulo se conecta por un lado a un router a travs de un cable RJ45; y por el otro
se conecta con Arduino a travs del puerto SPI. Viene ya ensamblado con las
dimensiones del Arduino, por lo que la conexin con l consiste en acoplarlo sobre la
placa Arduino usada. Esta extensin provee de una direccin IP al Arduino y soporta
hasta 4 conexiones simultneas.
Router Mdulo Mdulo
Internet Ethernet Arduino
Figura 12 Esquema comunicacin mdulo Ethernet
El controlador Ethernet de ste mdulo es el W5100 y utiliza la librera Ethernet. A
ste mdulo le puede ser aadido a su vez un mdulo PoE (Power over Ethernet). Se
ha utilizado el modelo sin PoE, dado que para las necesidades es suficiente y adems
ms barato.
35
De la Horra Kllmer, Mario
En el mdulo de expansin hay un lector de tarjetas SD integrado que se puede utilizar
para almacenar archivos, para utilizarlo se debe usar la librera SD.
Adems ste mdulo contiene varios LEDs de informacin:
- ON: Indica que al mdulo le llega energa.
- LINK: Indica la presencia de una red, parpadea cuando se emiten/reciben
datos
- RX: Parpadea al recibir datos
- TX: Parpadea al enviar datos
- 100M: Indica que est conectado a 100Mb/s en lugar de a 10Mb/s
2.3. Matlab
El enlace Matlab-Arduino se puede realizar de tres formas, dos especficas para
Arduino y una general utilizando el puerto serie. Se analizarn por separado.
2.3.1. Arduino IO
Esta forma de realizar la interfaz Matlab-Arduino consiste en un programa que,
cargado en el microcontrolador por medio del entorno de desarrollo de Arduino, hace
que ste se comporte como un servidor que recibe las instrucciones a travs del
puerto serie, ejecuta los comandos, y si es necesario devuelve un resultado [8].
Este programa, ADIOSRV.pde (Analogic Digital Input Output SeRVer), viene con el
paquete de Arduino IO, y est continuamente corriendo en el microcontrolador a la
escucha de instrucciones.
36
Universidad Carlos III de Madrid
Las ventajas de ste paquete son:
- Es compatible con Arduino UNO, Mega 2560, y Duemilanove.
- Es compatible con versiones Matlab anteriores.
- Es compatible con sistemas Mac OS y Linux.
Otra de las ventajas, que se analizar en detalle en el apartado Estudio de Arduino
como Tarjeta de Aquisicin de Datos se basa en que como el microcontrolador se
encuentra corriendo siempre el mismo programa, tendremos una frecuencia de
muestreo constante e independiente del modelo que estemos simulando.
Sin embargo, el coste es que al no estar ejecutando el modelo sino un servidor,
necesitar en todo momento tener conectado un ordenador corriendo Matlab para
que le indique los comandos.
Los pasos a seguir para ejecutar nuestro modelo, sern pues en primer lugar cargar el
programa adiosrv.pde en el microcontrolador. A continuacin, simular nuestro model,
o programa Matlab que se conecta a Arduino.
La librera Arduino de Simulink contiene los bloques que permiten la lectura y escritura
y otras funcionalidades (Figura 13).
37
De la Horra Kllmer, Mario
Figura 13 Librera Arduino IO
El siguiente punto analizar la librera del Soporte Arduino Simulink, y dado que ambas
tienen un funcionamiento similar, en este punto, slo ser resaltado el bloque,
Arduino IO Setup, que es caracterstico de ste mtodo de comunicacin Simulink-
Arduino, ya que configura el puerto dnde se encuentra Arduino tal y como se muestra
en la Figura 14.
Figura 14 Arduino IO Setup
38
Universidad Carlos III de Madrid
En esta pantalla se configura la ruta del puerto serie donde se encontrar nuestro
Arduino ejecutando el servidor. La ruta ser COMx dnde x ser el nmero que
identifique el puerto en sistemas Windows, o /dev/tty en sistemas UNIX.
2.3.2. Soporte Arduino Simulink
El soporte oficial de Simulink para Arduino, apareci en la versin Matlab 2012b,
permite que los algoritmos desarrollados en Simulink, funcionen en Arduino.
Consiste en un traductor que convierte el esquema Simulink en cdigo ejecutable que
se carga en el microcontrolador para que lo ejecute ste directamente [9].
Sus caractersticas:
- El cdigo corre directamente en el microcontrolador, luego puede ser
desconectado del ordenador.
- Requiere al menos la versin de Matlab 2012b.
- Requiere Windows 7.
- El funcionamiento en modo externo requiere de la placa Arduino Mega 2560,
que aunque es ms potente, tambin es ms cara. (50 frente a los 25 de
Arduino UNO).
Para instalar el soporte se indica el destino de instalacin (targetinstaller) y selecciona
Arduino Simulink para instalar. En la librera se encuentran los bloques mostrados en la
Figura 15.
39
De la Horra Kllmer, Mario
Figura 15 Libreria Simulink de Arduino
A continuacin se describie en profundidad las caractersticas y limitaciones de los
bloques que han sido usados: entrada analgica, digital, salida analgica, y digital.
Analog Input
El voltaje de una entrada analgica se mide en relacin al voltaje de referencia de la
placa Arduino y se obtiene su valor como 10-bit en un rango de 0-1023, siendo 1023 si
la tensin medida es igual a la de referencia, y 0 si es igual a la de tierra. En la Figura 16
se muestra la pantalla de configuracin de la entrada analgica.
Figura 16 Bloque: Entrada analgica
El valor de referencia para la entrada de voltaje analgico por defecto es de 0 a 5V, sin
embargo este valor puede ser cambiado para el modelo, pudiendo ser seleccionada la
40
Universidad Carlos III de Madrid
referencia por defecto (5V), una interna de 2.56V, otra de 1.1V o una referencia
externa. La referencia externa deber conectarse al pin AREF de la placa, que se
encuentra en el mismo lugar para las dos placas utilizadas, es indicado en la Figura 17.
Figura 17 Conexin AREF
En Simulink, para ajustar la referencia externa se deber ir a Tools > Run On Target
Hardware > Options > Analog input reference voltaje que abrir la pantalla mostrada
en la Figura 18.
Figura 18 Configuracin de la seal de referencia
Dentro del bloque se ha de configurar el pin del que leemos la seal, y la frecuencia de
muestreo, que aunque en teora puede ser un valor tan pequeo como 0.000001s, en
41
De la Horra Kllmer, Mario
la prctica los valores a partir de 0.0001 congelan el ordenador debido a que utiliza el
procesador para procesar ms valores en menos tiempo. En la seccin de pruebas del
Captulo Tercero se analizar cmo se comporta en este sentido.
Digital Input
Permite configurar el valor de una entrada digital, si est en estado bajo, adquiere un
0, y si se encuentra en estado Alto un 1. El tipo de dato recibido es un entero sin signo
de 8 bits. Los parmetros nmero de pin y tiempo de muestro funcionan de la misma
forma que en el bloque anterior.
En la Figura 19 se muestra la pantalla de configuracin de las entradas digitales.
Figura 19 Bloque entrada digital
PWM
Este bloque genera una onda PWM (Modulacin por Ancho de Pulso) en el pin
especificado, con el porcentaje de ciclo indicado por el bloque anterior en un rango de
0 a 255, siendo 255 el 100% del ciclo a nivel alto. Este bloque hereda el tipo de dato
del bloque precedente e internamente lo convierte a entero sin signo de 8 bits.
La pantalla de configuracin de la seal PWM es mostrada en la Figura 20.
42
Universidad Carlos III de Madrid
Figura 20 Bloque Salida PWM
Para el Arduino UNO, aunque entre los pines de salida estn el 9 y el 10, lo cierto es
que si el modelo contiene un bloque Servo no podr utilizar ninguno de los dos.
Con el Arduino MEGA tiene una limitacin ms holgada y es que si el modelo
contuviera ms de doce bloques servo, no podra utilizar los pines 11 o 12 para generar
un PWM.
Digital Output
Este bloque establece un pin a un valor lgico. El valor lgico 1 hace que la salida se
ponga a nivel Alto, esto son 5V. El valor 0, 0V.
El bloque hereda el tipo de dato del bloque que lo precede y lo convierte a booleano.
En la Figura 21 se muestra la pantalla de configuracin de las salidas digitales, donde se
indica el nmero de pin a utilizar.
43
De la Horra Kllmer, Mario
Figura 21 Bloque Salida Digital
De los bloques descritos y del resto de bloques se puede obtener ms informacin y
demostraciones de uso escribiendo: 'Target for Use with Arduino en la consola de
Matlab.
2.3.3. Comunicacin serie
Esta se realiza por medio de los bloques de comunicacin serie de Simulink. La primera
ventaja es que es realizable con independencia de la placa Arduino que se encuentre
conectada, y tambin de la versin de Matlab instalada. Por otra parte, al comunicarse
con el programa que este corriendo en el microcontrolador, el momento en que los
datos se reciben depende de dicho programa. De esta manera la frecuencia de
adquisicin de los datos depender del regulador implementado salvo que mediante
un temporizador e interrupciones se obligue al microcontrolador a comunicarse en el
tiempo preciso.
Los bloques utilizados vienen en la librera de Simulink y son Serial Configuration,
Serial Send y Serial Receive. De acuerdo a cmo se establezcan los parmetros de
comunicacin del microcontrolador habrn de ser configurados los de Simulink.
44
Universidad Carlos III de Madrid
En el caso desarrollado como ejemplo de envo/recepcin de datos va puerto serie (
Figura 22), se genera una seal de pulsos que convenientemente escalada se convierte
a un tipo entero de 8 bits y se enva por el puerto serie. La recepcin cuando detecta la
llegada de datos, los convierte a un tipo para que sea mostrado en un bloque scope.
Figura 22 Comunicacin serie Matlab-Arduino
La configuracin de los parmetros del puerto serie es:
Puerto de comunicacin: /dev/tty.usbmodem621
Baudios: 9600
Bits por dato: 8
Paridad: no
Bit de parada: 1
Orden: Fila india
Por su parte, el programa cargado en el microcontrolador leer una seal analgica
simulada por medio de un potencimetro y enviar dicha lectura a travs del puerto
serie. Comprobar si ha llegado informacin en el puerto serie, y si la hay, actualizar
un actuador simulado con un LED- con dicho valor. En la Figura 23 se muestra el
Flujograma empleado para realizar la comunicacin serie y en el Anexo B.1 se
encuentra su cdigo.
Este programa es cargado en el microcontrolador, quin tras configurar el puerto serie
realiza la lectura de un sensor, enva su valor al programa que se est ejecutando en el
ordenador, si recibe la orden, actualiza el valor de un actuador. En las pruebas, la seal
proporcionada por el sensor fue simulada con un potencimetro mientras que el
actuador lo fue con un LED. El sistema funciona de la forma esperada.
45
De la Horra Kllmer, Mario
Inicializacin
Configuracin
puerto serie
Lectura seal
analgica
Molde byte para
variable a enviar
Envo de byte
No
Datos
recibidos?
Si
Leer
Actualizar luz LED
Figura 23 Flujograma comunicacin serie
46
Universidad Carlos III de Madrid
2.4. Interfaz Arduino Android
Actualmente, los mtodos oficiales para realizar la conexin entre una aplicacin
Android, y un microcontrolador Arduino que se encuentran documentados en la wiki
de Arduino [13]:
- Bluetooth: Amarino
- Audio: Androino
- Cable USB
Adems, aunque no documentado oficialmente, tenemos la posibilidad de programar
la placa Arduino como un servidor, y realizar una aplicacin cliente que se conecte a
Arduino como veremos en el captulo de Interfaz con Arduino.
2.4.1. Bluetooth: Amarino
Se trata de una herramienta para conectar dispositivos Android a placas Arduino por
medio de la tecnologa bluetooth [10], Figura 24.
Se basa en una aplicacin Android llamada Amarino y una librera Arduino llamada
MeetAndroid y soporta slo un mdulo bluetooth, aunque da referencias de otros 3
mdulos que pueden ser utilizados de forma ms complicada.
Figura 24 Mdulo Bluetooth Mate Gold
47
De la Horra Kllmer, Mario
El mdulo bluetooth en cuestin tiene un precio de 60, y en un espacio abierto sin
interferencias puede llegar a tener un alcance de 100m, que en edificios y en un
entorno real se supone quedan en 20m.
En principio esta opcin fue descartada por el precio del mdulo bluetooth.
2.4.2. Audio: Androino
Se trata de una librera que realiza la comunicacin Android-Arduino a travs del cable
de conexin de audio [11], Figura 25.
Figura 25 Conexin por cable audio
El proyecto actualmente permite el envo y recepcin de enteros del 0 al 31.
Esta opcin junto con la siguiente fueron descartadas debido a que requieren en todo
momento una conexin por cable con el dispositivo Android, lo que restringe la
movilidad.
2.4.3. Cable USB
Se trata de una librera para conectar cualquier hardware por USB a un dispositivo
Android. En Arduino existe una placa llamada Arduino Mega ADK que es compatible
con Android [12]. Es similar a la placa Arduino Mega. La diferencia est en que al
48
Universidad Carlos III de Madrid
contrario que cundo se conecta un accesorio a un ordenador y el ordenador provee la
energa, como un teclado, cuando se conecta un accesorio a Android, el accesorio
debe proveer la energa para todo el sistema.
49
De la Horra Kllmer, Mario
50
Universidad Carlos III de Madrid
3. Diseo de la Tarjeta de
Adquisicin de Datos
3.1. Descripcin del sistema.
El sistema sobre el cul se desarrollarn las pruebas consta de un motor de corriente
continua, una etapa de acondicionamiento de las seales proporcionadas desde y
hacia el motor, la tarjeta de adquisicin de datos y el ordenador o dispositivo que
procesa esta informacin. El esquema del sistema se muestra en la Figura 26.
Sensores Adquisicin
Mundo Dispositivo
/actuadores de los datos
Figura 26 Esquema descriptivo del sistema
En el trabajo con la tarjeta y experimentacin, el mundo consiste en una de las
plataformas experimentales de laboratorio, formada por un motor de continua con el
51
De la Horra Kllmer, Mario
correspondiente circuito de alimentacin CA-CC, un rectificador de onda, un filtro y un
encoder incremental que permite conocer la posicin del motor (Figura 27).
Figura 27 Motor CC
La interfaz fsica de control de la maqueta de la figura anterior consta del siguiente
panel, descrito en la Figura 28.
Figura 28 Panel de control de la maqueta
El motor permite dos modos de funcionamiento, a partir de una entrada en un rango
5V o 0-10V. Este modo se selecciona en la parte izquierda del panel, donde se puede
ver el interruptor de seleccin del rango de entrada. La seleccin del conmutador
depende del rango de la seal conectada.
A continuacin se describen el resto de bornes de control:
- Borne rojo: Es la entrada al sistema, a l se conecta la seal de referencia
proporcionada por la tarjeta de adquisicin de datos, previo
acondicionamiento.
- Borne amarillo: Se utiliza para comparar la seal referencia. En este trabajo
los reguladores se implementan por software, por este motivo y para evitar
interferencias, este borne se conectar a tierra.
52
Universidad Carlos III de Madrid
- Borne verde: Es la conexin que permite conocer la velocidad de giro del
motor.
- Borne azul: Proporciona la posicin resuelta por el encoder.
- Bornes negros: Masa de la maqueta.
Adems en el centro del panel aparece una rueda que permite ajustar una constante
K1 que multiplica la seal de referencia.
3.2. Especificaciones
A la entrada de la maqueta, la seal de referencia utilizada es una seal en tensin
continua, de 0-10V. Para controlar esta seal de referencia se parte de una seal PWM
del mdulo Arduino de 0-5V que ha de ser acondicionada.
A la salida, se tiene una seal que puede llegar a variar entre [-10, +10]V y que ser
necesario acondicionar a la entrada analgica del Arduino entre [0, 5]V.
3.3. Acondicionamiento de la seal
Es necesario distinguir entre el acondicionamiento de la seal de entrada a la maqueta,
y el de la seal de salida de la misma.
A continuacin se describirn el acondicionamiento de la seal de entrada y de salida
de la maqueta empleada como plataforma experimental.
53
De la Horra Kllmer, Mario
3.3.1. Acondicionamiento de la seal de entrada a la
maqueta
El microcontrolador crea la seal PWM en un rango de [0-5] V, por lo tanto la seal
deber ser filtrada para obtener una seal continua. Posteriormente deber ser
amplificada al rango [0-10] V, rango de entrada de la maqueta. En la Figura 28 se
muestra el esquema de acondicionamiento de esta seal.
Salida Amplificacin de Entrada
Filtro maqueta
TAD: PWM la seal
Figura 29 Esquema acondicionamiento entrada a maqueta
3.3.2. Acondicionamiento de la seal de salida de la
maqueta
Para acondicionar la seal de salida sern necesarias dos etapas. En la primera
mediante un divisor de tensin, se ajusta el rango de variacin de la seal de salida de
la maqueta al rango de entrada del microcontrolador. En la segunda etapa, con un
operacional en configuracin de sumador, se aade un offset a la seal para que
quede entre [0, 5] V.
En la Figura 30 se muestra el esquema de acondicionamiento de esta seal.
Salida Ajuste Suma de tensin Entrada
Maqueta rango continua maqueta
Figura 30 Acondicionamiento de la salida de la maqueta
54
Universidad Carlos III de Madrid
3.4. Diseo electrnico
A continuacin se describe el sistema electrnico desarrollado. Se han implementado
tres bloques, un filtro, y dos etapas de potencia.
3.4.1. Filtro
La conversin de la seal PWM en una seal analgica continua es realizada por medio
de un filtro paso bajo sencillo (Figura 31).
Figura 31 Filtro RC
Cuando se aplica una tensin a la entrada de R, el condensador comienza a cargarse
hasta que se encuentra cargado y deja de conducir corriente. Si la carga tiene una
impedancia muy alta, la tensin de entrada coincidir con la de salida. Como un
condensador se carga con la corriente variable, mientras la corriente de alta frecuencia
ser filtrada adecuadamente, la parte de continua pasar limpia. Sin embargo lo que
ocurre entre la baja y la alta frecuencia depende de la constante de tiempo.
El problema aparece en el tiempo de respuesta y la tensin de rizado. Ya que un
tiempo de respuesta pequeo implicar una tensin de rizado alta y viceversa, como
se observa en la Figura 32, que muestra la rectificacin de una onda senoidal.
55
De la Horra Kllmer, Mario
Figura 32 Rectificacin de onda senoidal
Idealmente, se elegira un filtro que dejase pasar la frecuencia baja con ganancia 1 se
trata de un filtro pasivo- para rpidamente dejar caer la ganancia. Para ello sera
necesario preparar un filtro con varios polos. Sin embargo esto volvera el circuito ms
complejo de lo necesario para su propsito. Adems de costoso. Como se ver ms
adelante, un filtro con un polo resuelve bastante bien el problema.
As se busca un compromiso entre un rizado bajo y una frecuencia de corte tambin
baja. Y para ello se va a utilizar un filtro paso bajo pasivo con polo simple.
Para minimizar el rizado optaremos por un condensador con relativa gran capacidad, el
mayor de los condensadores cermicos es de 0.1 F, el siguiente con el que podemos
probar sera el cermico multicapa de 1F. La alternativa sera utilizar un condensador
electroltico que tiene mayor capacidad. Sin embargo debemos recordar una mayor
capacidad implica un mayor tiempo de respuesta.
El siguiente paso ser elegir una frecuencia de corte baja, pongamos 10Hz. Esto resulta
en seleccionar los valores R=15k, C=1F para nuestra resistencia y condensador
respectivamente.
La funcin de transferencia del filtro quedar:
( )
Cuyos parmetros frecuencia de corte, tensin de rizado y tiempo de respuesta son:
- Frecuencia de corte = 10.61Hz
56
Universidad Carlos III de Madrid
- Tensin de rizado = V
- Tiempo de respuesta (tiempo en alcanzar el 90% de la seal) = 0.034s
En la Figura 33 se muestra la respuesta en frecuencia de dicho filtro.
Figura 33 Respuesta en frecuencia del filtro
En la Figura 34 se muestra la simulacin de la respuesta a escaln con el PWM
cubriendo el 90% del ciclo, que corresponde a 4.5V. Como se puede observar el
acondicionamiento de la seal es el esperado.
Figura 34 Simulacin respuesta filtro a entrada escaln
En la Figura 35 se muestra un solo ciclo de la seal PWM al 50% y la seal
acondicionada tras el filtro, mostrada como vlida para el trabajo de control.
57
De la Horra Kllmer, Mario
Figura 35 Filtro: Ciclo PWM
En la Figura 36 se observa como la seal PWM produce una onda cuadrada y como
queda tras el filtro. En este caso el rizado es algo mayor.
Figura 36 Filtro Onda cuadrada
La ltima prueba consiste en la produccin de una seal sinusoidal, tal y como se
muestra en la Figura 37.
Figura 37 Filtro. Onda Senoidal
Cmo se observa, la respuesta del filtro es adecuada.
58
Universidad Carlos III de Madrid
3.4.2. Amplificacin de la seal
Se realizar mediante un amplificador operacional en configuracin no inversora
colocado a la salida del filtro (Figura 38).
Cmo la maqueta funciona de 0-10V y la salida PWM se encuentra en el rango 0-5V, ha
de ser multiplicada por dos.
Figura 38 Amplificador no inversor
Con esta configuracin el clculo de la tasa de salida queda:
( ) { }
Uniendo el filtro con el amplificador, el siguiente esquema electrnico mostrado en la
Figura 39, esquema final implementado.
Figura 39 Acondicionamiento de la seal PWM
59
De la Horra Kllmer, Mario
En la Figura 40 se observa la secuencia completa de acondicionamiento de la seal de
referencia a la maqueta: un ciclo de la seal PWM, la misma seal filtrada y en ltimo
lugar, la seal amplificada.
Figura 40 Acondicionamiento salida PWM -> Salida Filtro -> Amplificacin: Seal de referencia de la maqueta
3.4.3. Acondicionamiento de la seal de salida del
motor
En la Figura 41 se muestra el esquema electrnico implementado para el
acondicionamiento de la seal de salida de la maqueta.
Figura 41 Esquema electrnico acondicionamiento de la seal de salida de la maqueta
La seal de salida del motor pasa a travs de un divisor de tensin para ajustar su
rango de variacin al de los 5V que acepta el microcontrolador. Tras l, se tiene una
tensin que vara entre [-2.5, 2.5]V. Se coloca un potencimetro para facilitar el ajuste.
60
Universidad Carlos III de Madrid
A continuacin se le suma un offset de tensin continua para situar la seal entre los
[0, 5]V que sern ledos por el microcontrolador.
El valor de la entrada analgica se calcular a partir del circuito como:
( )
{ }
Por tanto se concluye que:
( )
La primera implementacin del circuito es la mostrada en la Figura 42.
Figura 42 Implementacion de las etapas de acondicionamiento sobre protoboard
La siguiente versin se implement sobre una placa de baquelita con las dimensiones
de la placa de Arduino Mega, con el objeto de que quedar como un mdulo de
expansin (Figura 43).
61
De la Horra Kllmer, Mario
Figura 43 Implementacin sobre baquelita
En el siguiente apartado se mostrarn las pruebas realizadas con el conjunto.
3.5. Pruebas del circuito electrnico
A continuacin se describen los experimentos realizados para la determinacin del
funcionamiento de las 3 formas analizadas de implementacin Simulink-Arduino.
3.5.1. Prueba realizada con Arduino IO
Las pruebas realizadas con el paquete de Arduino IO, fueron realizadas sobre el
sistema operativo Mac OS X, con la placa Arduino UNO.
El objetivo de la primera prueba trata de simular un sistema formado por un sensor y
un actuador de manera que segn el estado del sensor se comporte el actuador
(Figura 44). A travs de ste test ser comprobada la conectividad Arduino-Matlab.
Para ello nuestro sensor ser simulado por una resistencia variable mientras que el
actuador consistir en un LED. Se trata de una prueba sencilla pero fundamental, que
confirmar la conectividad tanto en lectura como en escritura.
62
Universidad Carlos III de Madrid
Figura 44 Circuito para el test de conectividad
En la Figura 45 se representa en rojo la seal leda por el potencimetro y en azul, la
seal enviada al LED.
Figura 46 Test de comunicacin (Tensin frente a tiempo)
Una vez realizado el test de comunicacin se tratar de cerrar el bucle de control
aadiendo una resistencia fotosensible (PDV-P9203, Anexo A.1) y haciendo una
aproximacin lineal a su respuesta. Esta resistencia variable ser leda en la entrada
analgica 3.
La funcin Matlab empleada (Anexo B.2), recibe cmo parmetro el nmero de
muestras a tomar como se muestra en el flujograma de la Figura 47.
63
De la Horra Kllmer, Mario
Tras llamar a la funcin con un parmetro n referente al nmero de muestras a
tomar, se produce la inicializacin de las variables y la conexin. Se tomar una
muestra tras otra hasta alcanzar las n muestras solicitadas. En cada una de las
muestras proporcionadas por el sensor de luz, se compara sta con la seal de
referencia y se ajusta la seal de control. Finalmente se dibuja el grfico.
i = muestra
Inicializar variables
actual
n = total
muestras
Conexin a Arduino
No
i < n? Fin
Si
Tomar muestra
Comparar con referencia
Enva seal de control
Redibujar grfico
Figura 47 Flujograma control mediante Arduino IO
El resultado puede observarse en la Figura 48, dnde la lnea roja muestra la seal de
referencia, generada por el con ayuda del potencimetro; mientras que la lnea azul se
trata de la seal recogida por el LDR.
64
Universidad Carlos III de Madrid
Figura 48 Control luz. Luminosidad frente a tiempo
Como puede observarse, aunque con cierto retraso y margen de error en general se
produce un seguimiento de la luz emitida por el LED de acuerdo a una seal de
referencia y a la realimentacin proporcionada por el sensor de luz.
En la Figura 49 figura se pueden observar una onda senoidal y otra cuadrada
adquiridas y representadas mediante un cdigo similar al anterior, tomando unas 100
muestras por segundo.
Figura 49 Muestreo de seales mediante Arduino IO. Tensin frente a tiempo
Se concluye que puede utilizarse para la mayora de los sistemas de control.
65
De la Horra Kllmer, Mario
3.5.2. Soporte Simulink con Arduino
Las primeras pruebas realizadas tratan de mostrar el funcionamiento y la carga de
modelos de Simulink en Arduino. El objeto de las mismas es probar la generacin de
distintos tipos de ondas con el microcontrolador.
Las pruebas se han realizado con un LED conectado a travs de una resistencia de 1k
en la salida digital 3 del Arduino, como puede observarse en la Figura 50.
Figura 50 Esquema conexin pruebas Simulink
Se ha controlado el LED con las siguientes caractersticas:
- Modo Externo
- Tiempo de integracin infinito
Con el microcontrolador se ha generado una onda cuadrada, una seal senoidal y un
escaln.
Onda Cuadrada
El esquema de Simulink implementado genera una onda cuadrada en uno de los pines
de Arduino mediante una seal PWM como se observa en la Figura 51.
66
Universidad Carlos III de Madrid
Figura 51 Esquema prueba de generacin de onda cuadrada
Este programa que genera una onda cuadrada (Figura 52, izquierda) produce el
parpadeo intermitente del LED de acuerdo a la seal recibida (Figura 52, derecha).
Figura 52 Onda Cuadrada
Onda Senoidal
El esquema de Simulink implementado genera una onda senoidal en uno de los pines
de Arduino mediante una seal PWM como se observa en la Figura 53.
Figura 53 Generacin senoide
67
De la Horra Kllmer, Mario
Esta seal produce ahora un cambio continuo de la iluminacin ofrecida por el LED
desde el estado apagado hasta el de luz mxima.
Onda Escaln
Por ltimo se implementa la generacin de una seal escaln en uno de los pines de
Arduino mediante una seal PWM como se observa en la Figura 54.
Figura 54 Generacin onda escaln
En este caso se obtiene el encendido puntual del LED a los 3 segundos de acuerdo a la
seal escaln.
3.5.3. Control de motor de corriente continua en
bucle abierto. Prueba de lectura de
acondicionamiento de la entrada al Arduino
Esta prueba consiste en la implementacin del siguiente esquema en Simulink, donde
en el que se genera una seal de referencia senoidal y se lee la velocidad para
comprobar que el acondicionamiento a la entrada de la tarjeta Arduino funciona como
de acuerdo a lo previsto.
68
Universidad Carlos III de Madrid
Donde dentro del bloque Tarjeta Arduino se hace un ajuste por software de los
parmetros de forma que al usuario final le sea transparente todo el proceso; escoja
una seal de referencia sobre 5V y y vea la de lectura en los Voltios de la maqueta. La
composicin del bloque Tarjeta Arduino se puede ver en la Figura 55.
Figura 55 Bloque "Tarjeta Arduino"
El resultado de aplicar la seal de referencia al motor y la lectura de la seal de su
estado en velocidad se muestra en la Figura 56, donde se presenta la salida del bloque
Scope del esquema de Simulink que proporciona la velocidad frente al tiempo, en
amarillo se representa la seal de referencia provista al motor, y en rosa la lectura de
la velocidad.
69
De la Horra Kllmer, Mario
Figura 56 Control de motor con una seal senoidal
Como puede observarse, el motor gira en sincrona con la seal de referencia.
3.6. Estudio de Arduino como
Tarjeta de Adquisicin de datos
En este apartado es necesario diferenciar los mtodos de trabajo para integrar Arduino
y Simulink estudiados. Por un lado el soporte Simulink y por otro el paquete Arduino
IO. La conexin mediante la comunicacin serie explicada en el apartado 2.3.3
depende del programa que ejecute el microcontrolador y las interrupciones que se
aadan.
3.6.1. Soporte Simulink
Dado el soporte que traduce un esquema en Simulink a cdigo ejecutable en el
microcontrolador y que contiene la librera estudiada en el Captulo de Estado del Arte.
70
Universidad Carlos III de Madrid
Este apartado se centra en la frecuencia de muestreo que puede ofrecer la tarjeta
Arduino.
Tericamente y de acuerdo con la documentacin, el bloque de Entrada analgica de
la librera puede configurarse a un valor tan pequeo de tiempo de muestreo como
0.000001s, sin embargo este valor congela la mayora de los ordenadores. Un valor
razonable para el tiempo de muestreo es 0.02s, o lo que es lo mismo, 50 muestras por
segundo. Como se deducir despus, tiempos de muestreo menores (o frecuencias de
muestreo mayores) no aportan mayor nmero de muestras, sino que cambian la
escala temporal.
De acuerdo al esquema de la Figura 57 se llevan a cabo las pruebas para realizar el
estudio.
Figura 57 Esquema lectura soporte Simulink
La prueba consiste en la lectura de una onda cuadrada de frecuencia 1Hz en uno de los
pines de lectura analgica del Arduino.
Estableciendo el tiempo de muestreo en 0.02s y el tiempo de integracin en 10
segundos, se obtiene la seal mostrada en la Figura 58, que representa la seal frente
al tiempo.
Figura 58 Seal contra tiempo. Tiempo de muestreo = 0.02s
71
De la Horra Kllmer, Mario
Puede observarse que la seal queda bien definida, para analizar la adquisicin de esta
seal se representa en la Figura 59 la misma seal, esta vez frente al nmero de
muestra.
Figura 59 Seal contra nmero de muestra. Tiempo de muestreo = 0.02s
En esta prueba fueron tomadas exactamente 407 muestras, lo que implica en realidad
un tiempo de muestreo de 0.024s. Adems se puede observar que no tenemos tiempo
real.
Para amplificar ste efecto, se realiza la siguiente prueba con la misma seal cuadrada
a 1Hz, pero sta vez configurando el tiempo de muestreo en 0.002s, con tiempo de
integracin de 5 segundos. Se representa la seal adquirida frente al tiempo en la
Figura 60.
Figura 60 Seal frente a tiempo. Tiempo de muestreo = 0.002s
72
Universidad Carlos III de Madrid
Como puede deducirse en sta ltima figura, la escala temporal del eje x no es real
porque no trabaja en tiempo real. Para corroborarlo se representa en la Figura 61 la
seal frente al nmero de muestra.
Figura 61 Seal frente a nmero de muestra. Tiempo de muestreo = 0.002s
Fueron obtenidas 220 muestras en 5 segundos, lo que concluye un tiempo de
muestreo esta vez de 0.022s o unas 45 muestras por segundo.
Obviamente no hay tiempo real, y el hecho de incrementar la tasa de muestreo
conduce a tomar las mismas muestras, en el mismo espacio de tiempo, pero a
representarlas en un perodo de tiempo cmo si estuvieran siendo tomadas en el
tiempo de muestreo configurado.
Mediante ste mtodo de conexin a la tarjeta Arduino, la tasa de muestreo vara
segn el programa cargado en el microcontrolador.
Esto puede ser debido a que el traductor a cdigo no programa las interrupciones de
reloj para realizar la lectura y enviar el dato por el puerto serie, sino que ejecuta el
cdigo como un bucle infinito.
No obstante, en las pruebas realizadas, la frecuencia de muestreo siempre ha estado
por encima de las 40 muestras por segundo, lo que cumple la especificacin de 10
muestras por segundo para realizar el control del motor del laboratorio.
73
De la Horra Kllmer, Mario
3.6.2. Paquete Arduino IO
En este caso el microcontrolador contiene un servidor que se ejecuta continuamente,
por lo que en este caso como ser confirmado, la frecuencia de muestreo ser
independiente del esquema de Simulink.
Para realizar las pruebas, de forma similar al apartado anterior, se utiliza el esquema
de la Figura 62.
Figura 62 Esquema lectura Arduino IO
Con el generador de seales, se proporciona tambin una onda cuadrada de
frecuencia 1Hz conectada a uno de los pines de lectura analgica de Arduino.
Como puede observarse en las Figura 63 y Figura 64, que representan la seal
obtenida frente al tiempo en el primer caso, y frente al nmero de muestra en el
segundo, tampoco se est trabajando en tiempo real. Sin embargo el nmero de
muestras tomadas es superior y la frecuencia de muestreo constante, como se ver
posteriormente.
74
Universidad Carlos III de Madrid
Figura 63 Seal frente a tiempo de muestreo. Tiempo de muestreo = 0.01s
Figura 64 Seal frente a nmero de muestra. Tiempo de muestreo = 0.01s
Fueron tomadas 1001 muestras en 10 segundos, lo que arroja una tasa de muestreo
igual a 100 muestras por segundo. Superior al caso anterior.
A continuacin se confirmar la hiptesis realizada sobre que el nmero de muestras
se mantiene constante. Para ello si se aumenta el nmero de muestras por segundo
hasta 1000 se obtiene la seal representada en la Figura 65.
Figura 65 Seal frente a tiempo. Tiempo de muestreo = 0.001s
75
De la Horra Kllmer, Mario
Como puede observarse, la escala de tiempo sigue sin ser real, ya que se est
trabajando con una onda escaln a 1Hz.
Para analizar el nmero de muestras tomadas se recurre a la Figura 66 que representa
la misma seal frente al nmero de la muestra.
Figura 66 Seal frente a nmero de muestra. Tiempo de muestreo = 0.001s
En los 30 segundos de duracin del experimento fueron tomadas 3001 muestras, lo
que confirma la tasa de muestreo de 100 muestras por segundo.
76
Universidad Carlos III de Madrid
4. Interfaz con Arduino
4.1. Introduccin
La manera propuesta se basa en el comportamiento de la placa Arduino como servidor
que acepta conexiones de una aplicacin cliente en un telfono Android. Esta forma
que no aparece documentada oficialmente por Arduino, est sealada de forma no
oficial en algunos blogs en la web [14]. La placa se encuentra conectada a la red local
por medio de un cable Ethernet, y el dispositivo Android a travs de Wifi, tambin se
encuentra en la misma red local como ilustra el esquema de la Figura 67.
Microcontrolador Dispositivo
Mdulo
(Servidor) Router Android
Ethernet
(Cliente)
Cable ethernet Wifi
Figura 67 Esquema de conexin
Esta ha sido la opcin elegida para realizar la comunicacin, por los siguientes motivos:
- El reducido coste del mdulo ethernet.
77
De la Horra Kllmer, Mario
- El alcance dentro de todo un rea wifi, mayor que el bluetooth y que la
conexin por el cable de audio.
El precio del router no se computa aqu ya que con un router se podra dar servicio
varios microcontroladores, por lo que dependiendo del nmero de puestos de la
instalacin vara su precio unitario.
4.2. Conexin
Cmo se ilustra en la Figura 67, el microcontrolador se comporta como un servidor al
que se puede conectar una aplicacin cliente que se encuentra en un dispositivo
Android.
La aplicacin mvil, a travs de una interfaz grfica, inicia la conexin con el servidor,
enva peticiones al mismo y espera su respuesta para mostrarla tambin de forma
grfica.
Por otra parte, el microcontrolador realiza la tarea de control para la que haya sido
programado al tiempo que espera la peticin de un cliente. Cundo sta llega, la
procesa y enva la respuesta.
4.2.1. Servidor
Se trata de la parte que acepta las conexiones, y es ejecutado por el microcontrolador.
Cmo se muestra en el flujograma de la Figura 68, tras el inicio o reseteo del
microcontrolador, se produce la configuracin de la direccin IP, MAC y puerto para a
continuacin iniciar la conexin. Una vez haya un cliente conectado prosigue con la
lectura del sensor, y si ha cambiado respecto de su ltimo valor, enva el valor actual. A
78
Universidad Carlos III de Madrid
continuacin si ha recibido una peticin del cliente actualiza el valor del
actuador(Cdigo en Anexo B.3).
Inicio
Configurar IP, puerto y MAC
Iniciar conexin
Cliente No
conectado?
Si
Leer sensor
No
Ha
cambiado?
Si
Enviar valor sensor
Si Peticin
cliente? No
Leer peticin
Actualizar valor actuador
Cerrar conexin
Figura 68 Flujograma programa servidor
79
De la Horra Kllmer, Mario
4.2.2. Cliente
La aplicacin cliente (Figura 69) consiste en una interfaz Android que contiene, de la
parte superior a la inferior: un botn para conectar/desconectar al microcontrolador
(servidor); una barra con la que se enva una seal de referencia al sistema, es decir,
puede controlar un actuador variando el pulso PWM, -en las pruebas, el actuador ha
consistido en un LED-; otra barra que representa el estado del sistema, es decir, que
muestra la lectura de un sensor; a continuacin se encuentra un cuadro de texto que
muestra los mensajes de conexin/desconexin; y por ltimo una representacin
grfica de la lectura del sensor. El cdigo de la aplicacin se encuentra en el Anexo B.4.
Figura 69 Aplicacin cliente
La actividad es el componente de la aplicacin encargado de mostrar la interfaz de
usuario, es decir, es la ventana y sus elementos se encuentran definidos en el fichero
XML con nombre Main.
80
Universidad Carlos III de Madrid
La aplicacin (Figura 70) comienza definiendo los objetos que se muestran en la
pantalla (botones, barras, grfico, cuadros de texto, etc) y conecta dichos objetos a los
elementos de la interfaz. A continuacin se activan los eventos que indicarn a la
aplicacin cundo se ha pulsado el botn conectar, desplazado la barra de control de
un actuador o recibido un dato por la red. Una aplicacin Android se puede pensar
como una interfaz grfica a la espera de eventos, que son gestionados cundo se
producen.
Inicio
Definicin de objetos
Conexin interfaz - objetos
Activacin de Eventos
Figura 70 Mtodo Actividad principal, conecta la interfaz de usuario con los objetos
Tras el inicio de la aplicacin el usuario har clic en el botn conexin/desconexin,
que dispara el evento encargado de crear una conexin nueva si no hay ninguna
establecida o cerrar la actual si hay alguna en proceso (Figura 71).
Evento clicBotonConexion
Est
conectado?
No
Nueva Conexion Cerrar conexin
Cambiar nombreBoton: Cambiar nombreBoton:
Desconectar Conectar
Figura 71 Mtodo clicBotonConexion, llamado cuando el usuario pulsa el botn conectar/desconectar
81
De la Horra Kllmer, Mario
El siguiente elemento de la interfaz es una barra llamada barraActuador en el
programa, que est ligada a un evento (Figura 72) iniciado por el desplazamiento de la
misma, una vez que la conexin con el microcontrolador ha sido establecida, este
dispara la secuencia de acciones para tomar el valor de la barra, actualizar el cuadro de
texto que indica el valor actual de la misma y enviar la informacin posicin al
microcontrolador (Figura 74), que ajustar la seal PWM para satisfacer la orden.
Evento movimientoBarraActuador
Tomar valor de la barra
Actualizar texto
Enviar valor por la
tareaDeConexion
Figura 72 Mtodo movimientoBarraActuador, llamado cuando el usuario desplaza la barraActuador
La barra que representa la informacin de estado del sistema, seal proporcionada por
un sensor y se actualiza junto con el grfico cada vez que se reciben datos por la red.
Para ello la tarea de red una vez inicializada y configurados sus parmetros entra en
espera en otro hilo de ejecucin y cuando un byte es recibido, se llama a los mtodos
encargados de actualizar la barra y el grfico (Figura 73).
Por ltimo, el mtodo que enva los datos por la red (Figura 74) y comprueba que hay
una conexin establecida, si existe conexin enva el dato por la red y si no, enva una
excepcin al cuadro de texto que muestra los mensajes de la aplicacin.
82
Universidad Carlos III de Madrid
Inicio tareaDeConexion
Configuracin IP y puerto
Almacenar en Array entrada de datos
Recibido
1 byte?
Tomar dato
Actualizar barraSensor
Actualizar grfico
Figura 73 Metodo onProgressUpdate, llamado cada vez que se recibe una cadena
Inicio sendDataToNetwork
Socket
conectado?
Enviar dato Error de conexion
Figura 74 Mtodo sendDataToNetwork, llamado cada vez que se mueve la barraActuador
83
De la Horra Kllmer, Mario
Tal y como se muestra a lo largo de este captulo, una de las ventajas inmediatas de
este mtodo es su independencia de un sistema de comunicacin fsica, ya que no
requiere un cable USB o de audio conectado de forma permanente. Tambin se evitan
las limitaciones de distancia del bluetooth. Por otra parte permite la fcil extrapolacin
de esta arquitectura cliente-servidor a otros sistemas de comunicacin como podran
ser la sustitucin del mdulo Ethernet por uno Wifi y slo tener que cambiar los
parmetros de configuracin de la conexin.
84
Universidad Carlos III de Madrid
5. Resultados
experimentales: Control de
un motor de Corriente
Continua
En este captulo se procede a la implementacin de un regulador PID sobre el
microcontrolador para la maqueta del motor de corriente continua. Se realizar el
control en posicin del motor como propuesta de una prctica docente de Ingeniera
de Control.
A priori, la funcin de transferencia del sistema es desconocida, luego el ajuste de los
parmetros del regulador PID se realizar de forma emprica. Dado que el tiempo de
respuesta del sistema es inferior a un segundo, se podr hacer de forma rpida.
85
De la Horra Kllmer, Mario
5.1. Mtodo de Ziegler-Nichols
Se trata de dos mtodos empricos de ajuste de reguladores PID en los que a partir de
algunas caractersticas de respuesta del proceso se proponen los parmetros de dicho
regulador [19].
Las frmulas que permiten obtener los parmetros del regulador PID mediante este
mtodo, intentan conseguir que el sistema de lazo cerrado se aproxime al valor de
referencia con una sobreoscilacin inicial dada (no hay un valor mximo concreto sobre
este parmetro) y que la siguiente sobreoscilacin se reduzca a de la primera, tal y como
se muestra en la figura 75. De esta forma consiguen una solucin de compromiso entre el
transitorio y el permanente.
Figura 75 Especificacin del mtodo Ziegler-Nichols
Para ello, a partir de la respuesta del sistema en las condiciones que especifique cada
mtodo en concreto, se calculan los parmetros K, Td y Ti de un PID dado por:
( )
86
Universidad Carlos III de Madrid
En el siguiente apartado ser aplicado el mtodo de estimacin de estabilidad lmite.
Este mtodo se basa en llevar a la estabilidad lmite al sistema en cadena cerrada
mediante una accin proporcional y medir unos determinados parmetros de la respuesta
ante escaln del sistema en cadena cerrada. A partir de ellos se calculan los parmetros
del regulador.
5.2. Ajuste emprico del regulador
Para la prueba del sistema se hace el ajuste sobre la plataforma experimental que se
muestra en la Figura 76, dnde se puede ver la maqueta de pruebas que consiste en el
motor de CC, el panel de control de dicha maqueta, la etapa de acondicionamiento
diseada, la placa Arduino o microcontrolador y un ordenador comportndose como
cliente de la placa.
Figura 76 Plataforma experimental
87
De la Horra Kllmer, Mario
Se utilizar el mtodo de Ziegler-Nichols de la respuesta frecuencial o de cadena
cerrada. Para su implementacin se realiza el esquema de la Figura 77, en ella se
cierra el bucle de realimentacin con un regulador de tipo proporcional en Simulink.
Figura 77 Esquema para ajuste Ziegler-Nichols en bucle cerrado
La seal de referencia ser una onda cuadrada con la que se calculan los parmetros
del PID. Se aumenta la ganancia de dicho regulador desde ganancia 1 hasta obtener la
ganancia crtica en la que el sistema presenta una respuesta oscilatoria sostenida como
se ve en la Figura 78, que presenta la salida del bloque Scope de Simulink, y muestra
la posicin del sistema frente al tiempo. Para esta ganancia se determina el perodo
crtico de la seal de salida oscilatoria.
Figura 78 Ganacia crtica.
La salida oscilatoria mantenida se consigue con una ganancia crtica, . Para
ella, el perodo de dichas oscilaciones es:
0.14s
88
Universidad Carlos III de Madrid
Con los valores de los parmetros propuestos pos Ziegler-Nichols para el mtodo
frecuencial se obtienen los parmetros del regulador:
5.3. Prueba del regulador
Una vez obtenidos los parmetros del regulador se realiza la implementacin del
regulador del sistema en Simulink, como se observa en la Figura 79.
Figura 79 Implementacin PID
Ajustando el regulador con los parmetros obtenidos, se obtiene como respuesta del
sistema regulado la mostrada por el bloque Scope del esquema anterior, que
representa la posicin del sistema frente al tiempo, Figura 80.
89
De la Horra Kllmer, Mario
Figura 80 Resultado implementacin PID
De esta manera y mediante el sistema propuesto se ha podido realizar de forma fcil y
a muy bajo coste el control de un sistema fsico mediante un esquema de control
implementado a travs de Simulink.
Como ejemplo de otros reguladores se propone tambin la implementacin de
reguladores P o PI, donde se puede observar experimentando como influyen las
distintas variables proporcional, integral y derivativa en el control.
En la Figura 81 se muestra la respuesta de un regulador proporcional en el que no se
alcanza el seguimiento de la seal de referencia.
Figura 81 Regulador Proporcional
Tambin se ha realizado la implementacin de un regulador Proporcional-Integral cuya
respuesta se observa en la Figura 82 donde se representa la posicin frente al tiempo.
Como se puede ver se evitan las oscilaciones del PID de la Figura 79.
90
Universidad Carlos III de Madrid
Figura 82 Regulador Proporcional-Integral
Tal y como se demuestra con estos experimentos el sistema permite realizar esquemas
de control y prcticas docentes sobre Matlab y Simulink mediante el hardware de bajo
coste diseado.
91
De la Horra Kllmer, Mario
92
Universidad Carlos III de Madrid
6. Conclusiones y trabajos
futuros
6.1. Conclusiones
En este trabajo se ha desarrollado un sistema de adquisicin de datos de bajo coste
basado en la placa Arduino que trabaja como DAQ entre Simulink o una aplicacin
mvil y el mundo fsico. Se ha diseado y desarrollado la interfaz hardware para
adaptar las seales entre el microcontrolador y las maquetas de laboratorio, as como
una interfaz software para actuar sobre el sistema fsico.
Varias pruebas han sido realizadas para validar el sistema completo y se llevado a cabo
un estudio de la frecuencia de muestreo para conocer las posibilidades de esta
arquitectura. Se ha deducido que puede ser utilizado en la mayora de los sistemas
mecatrnicos.
Finalmente se ha propuesto, resuelto y probado un ejercicio prctico para validar la
propuesta.
93
De la Horra Kllmer, Mario
6.2. Trabajos futuros
En este apartado se proponen algunas posibles lneas de desarrollo para trabajos
futuros.
Respecto del uso de la plataforma Arduino como DAQs de bajo coste, tras ver las
limitaciones de las tarjetas probadas y para superarlas se propone la prueba de la placa
Arduino DUE, que con sus caractersticas permitir realizar una adquisicin de datos a
gran velocidad.
De manera similar se propone la prueba de Raspberry Pi, un pequeo ordenador con
un precio de 35$ capaz de correr Linux y realizar tareas multimedia, se le puede
adjuntar una cmara y tiene soporte de Simulink para la carga de algoritmos en los que
se capta audio y video.
En relacin a la aplicacin Android, la siguiente mejora podra ser la implementacin
de una interfaz grfica que gue al alumno en la realizacin de las prcticas al tiempo
que interacta con la maqueta. Otra opcin sera la posibilidad de aadir interfaces de
informacin de sensores y actuadores a la aplicacin para el control de sistemas de
mayor complejidad.
94
Universidad Carlos III de Madrid
7. Referencias
Enlaces web visualizados a Mayo 2013.
[1] Enlace web: http://arduino.cc
[2] Enlace web: http://wiring.org.co
[3] Enlace web: http://processing.org
[4] Enlace web: http://arduino.cc/es/Main/Hardware
[5] Enlace web: http://arduino.cc/es/Reference/Libraries
[6] Enlace web: http://arduino.cc/en/Reference/EEPROM
[7] Enlace web: http://arduino.cc/en/Reference/Ethernet
[8] Enlace web:
http://www.mathworks.com/matlabcentral/fileexchange/32374-matlab-
support-package-for-arduino-aka-arduinoio-package
[9] Enlace web: http://www.mathworks.es/academia/arduino-
software/arduino-simulink.html
[10] Enlace web: http://www.amarino-toolkit.net/
95
De la Horra Kllmer, Mario
[11] Enlace web: http://androino.blogspot.com.es/
[12] Enlace web: http://developer.android.com/tools/adk/index.html
[13] Enlace web: http://playground.arduino.cc//Main/InterfacingWithSoftware
[14] Enlace web: http://www.lauridmeyer.com/category/tutorials/arduino/
[15] Ned Moham, Tore M. Undeland y William P. Robbins Power Electronics.
Editorial JOHN WILEY & SONS, INC. ISBN: 0471584088. Fecha de publicacin:
2003.
[16] Andrs Barrado Bautista y Antonio Lzaro Blanco Problemas de
electrnica de Potencia. Editorial PEARSON. ISBN: 9788420546520. Fecha de
publicacin: 2001.
[17] Jorge Pleite Guerra, Ricardo Vergaz Benito y Jos Manuel Ruiz de Marcos
Electrnica analgica para ingenieros. Editorial MC GRAW HILL. ISBN:
9788448168858. Fecha de publicacin: 2009.
[18] Enlace web:
http://www.mathworks.es/es/help/simulink/slref/raspberrypiv4l2videocapture
.html
[19] Luis Moreno, Santiago Garrido y Carlos Balaguer Ingeniera de Control.
Editorial Ariel Ciencia. ISBN: 8434480557 Fecha de publicacin: 2003.
96
Universidad Carlos III de Madrid
97
De la Horra Kllmer, Mario
98
Universidad Carlos III de Madrid
Anexos
ndice de anexos:
Anexos ......................................................................................................................................... 95
A. Hojas de caractersticas de los componentes ............................................................... 101
A.1. LDR ............................................................................................................................. 101
B. Cdigo ............................................................................................................................... 103
B.1. Comunicacin Serie. Cdigo Arduino ......................................................................... 103
B.2. Arduino IO. Funcin Matlab ...................................................................................... 104
B.3. Cdigo Servidor .......................................................................................................... 106
B.4. Cdigo Aplicacin Android ......................................................................................... 110
C. Presupuesto .................................................................................................................. 127
D. Glosario ......................................................................................................................... 129
99
De la Horra Kllmer, Mario
100
Universidad Carlos III de Madrid
A. Hojas de caractersticas de los
componentes
A.1. LDR
101
De la Horra Kllmer, Mario
102
Universidad Carlos III de Madrid
B. Cdigo
B.1. Comunicacin Serie. Cdigo Arduino
//Pines
int outPin = 5; //Pin de salida
int inPin = A0; //Pin de entrada
//Variables
//int refPot;
byte deSimulink;
byte aSimulink;
void setup()
//
pinMode(outPin, OUTPUT);
pinMode(inPin, INPUT);
Serial.begin(9600);
103
De la Horra Kllmer, Mario
void loop()
//Leemos el potenciometro y lo envia
int refPot = analogRead(inPin);
aSimulink = map(refPot, 0, 1023, 0, 255);
Serial.write(aSimulink);
//Lee la seal para el led
if(Serial.available()){
deSimulink = Serial.read();
analogWrite(outPin, aSimulink);
delay(500);
B.2. Arduino IO. Funcin Matlab
function ConceptoTiempoReal(interv)
a = arduino('/dev/tty.usbmodem621');
% Inicializamos variables
%interv = 1000;
paso = 1;
t=1;
104
Universidad Carlos III de Madrid
x1=0;
x2=0;
base = 0;
%El bucle se realiza durante el numero de muestras interv
while(t<interv)
%Realizamos la lectura del potenci?metro que nos da la
referencia
referencia=a.analogRead(0);
%Leemos el sensor de luz
sensor = a.analogRead(3);
%Normalizamos las magnitudes de ambas lecturas
%para que puedan ser comparadas
ReferenciaMap = round((referencia/1023)*254);
SensorMap = round(((sensor-150)/ 850) * 254);
%Control del Led
diferencia = ReferenciaMap - SensorMap;
salida = ReferenciaMap + diferencia;
%La salida del LED est? limitada a 250
if(salida>250) salida = 250;
elseif(salida < 5) salida = 0;
end
a.analogWrite(3, salida);
105
De la Horra Kllmer, Mario
x1=[x1,referencia];
x2=[x2,sensor];
base = [base, t];
plot(base, x1, 'r', base, x2, 'b');
axis([0,interv,0,1200]);
grid
t=t+paso;
drawnow;
end
delete(a);
delete(a);
B.3. Cdigo Servidor
#include <SPI.h>
#include <Ethernet.h>
// Se introduce la direccion IP, MAC, y el puerto del servidor.
// La IP depende del servidor local
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x7A, 0x10 };
IPAddress serverIP(192,168,1,177);
int serverPort=8888;
int digPin=3;
106
Universidad Carlos III de Madrid
// Se inicializa la libreria ethernet
EthernetServer server(serverPort);
// Variable para almacenar el valor anterior de un sensor
analogico
// para saber si ha cambiado
int preValorSensor=0;
void setup()
// El puerto serie se configura para depurar el programa
Serial.begin(9600);
// Se comienza la conexion ethernet
Ethernet.begin(mac, serverIP);
server.begin();
Serial.println("Servidor iniciado. OK");// Para depurar
void loop()
// Escucha de conexion entrante
EthernetClient client = server.available();
if (client) {
String commandStr ="";//Almacena los comandos entrantes
// Si un cliente se conecta:
while (client.connected()) {
//Lee el sensor
int valorSensor = analogRead(A0);
// Comprueba si el valor ha cambiado +5, -5
107
De la Horra Kllmer, Mario
if(valorSensor>(preValorSensor+5) ||
valorSensor<(preValorSensor-5)){
// Para depurar, envia el valor por el puerto serie:
Serial.println("El valor del sensor ha
cambiado:"+String(valorSensor));
// Envia el valor:
server.println("Sensor:"+String(valorSensor));
// Actualiza el ultimo valor del sensor:
preValorSensor=valorSensor;
// Si el cliente envia una peticion:
if (client.available()) {
// Se lee dicha peticion
char c = client.read();
commandStr+=c;
// Si el comando se ha recibido por completo
if (c == '\n') {
// Se muestra por el puerto serie para depurar:
Serial.println("Comando Actuador:"+commandStr);
// Si el comando comienza por "set:", se establece el
actuador a dicho valor
if(commandStr.indexOf("Actuador:")==0){
String valor=commandStr;
valor.replace("Actuador:", "");
Serial.println("Establece actuador en:"+valor);
analogWrite(digPin, convertToInt(valor));
server.println("Actuador:"+valor);
// Se resetea el comando
108
Universidad Carlos III de Madrid
commandStr="";
delay(1);
// Se cierra la conexion
client.stop();
// Funcion para convertir una cadena en un entero
int convertToInt(String valor)
char buf[valor.length()];
valor.toCharArray(buf,valor.length());
return atoi(buf);
109
De la Horra Kllmer, Mario
B.4. Cdigo Aplicacin Android
Main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
<Button
android:id="@+id/connect"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="connect" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/actuador_nombre" />
110
Universidad Carlos III de Madrid
<SeekBar
android:id="@+id/seekbar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:max="250"
android:progress="0" />
<TextView
android:id="@+id/seekbarvalue"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="0" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/sensor_nombre" />
<ProgressBar
android:id="@+id/progressbar"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:max="1024"
android:progress="0"
111
De la Horra Kllmer, Mario
android:visibility="visible" />
<TextView
android:id="@+id/lecturapotenciometro"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/console" />
<TextView
android:id="@+id/textlog"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="4.68"
android:scrollbarStyle="outsideOverlay"
android:scrollbars="vertical" />
<com.lauridmeyer.tests.GraphView
android:id="@+id/graphView1"
android:layout_width="wrap_content"
android:layout_height="170dp" />
</LinearLayout>
112
Universidad Carlos III de Madrid
Strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Android <-> Arduino</string>
<string name="console">Consola:</string>
<string name="app_name">Arduino<->Android</string>
<string name="actuador_nombre">Salida (a LED):</string>
<string name="sensor_nombre">Entrada(de
Potenciometro):</string>
</resources>
TAD.java
/*
* Cliente TCP Arduino <-> Android
* Basado en "BidirectionalAndroidTCPClient":
* http://www.lauridmeyer.com
*/
package com.hk.mario;
import java.io.BufferedReader;
import java.io.IOException;
113
De la Horra Kllmer, Mario
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.SeekBar;
import android.widget.TextView;
public class mainActivity extends Activity {
int datoRecibido;
// Log conocer el estado de la app
TextView textlog;
// Se definen los objetos: Boton conexion/desconexion,
// barra para mover el actuador, valor de la barra,
// barra indicadora del sensor y valor de dicha barra.
Button botonConexion;
SeekBar barraActuador;
TextView valorBarraActuador;
114
Universidad Carlos III de Madrid
ProgressBar barraSensor;
TextView valorBarraSensor;
// Se almacena el estado de la conexion
Boolean bConexion=false;
// networktask es la clase que gestiona la conexion
NetworkTask networktask;
// Grafico:
private GraphView mGraph;
//private TextView mValueTV;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Se conectan los objetos con elementos de la interfaz
botonConexion = (Button)findViewById(R.id.connect);
textlog = (TextView)findViewById(R.id.textlog);
barraActuador = (SeekBar)findViewById(R.id.seekbar);
valorBarraActuador =
(TextView)findViewById(R.id.seekbarvalue);
barraSensor =
(ProgressBar)findViewById(R.id.progressbar);
valorBarraSensor =
(TextView)findViewById(R.id.lecturapotenciometro);
115
De la Horra Kllmer, Mario
mGraph = (GraphView)findViewById(R.id.graphView1);
//Maximo valor del grafico en eje 'y'
mGraph.setMaxValue(1024);
// Se comunica al usuario que la app esta funcionando
// y se pone el estadoConexion en 'desconectado'
textlog.setText("Encendiendo App Cliente");
cambiarEstadoConexion(false);
// Se establecen los metodos que escuchan los eventos,
// de esta forma la app sabe cuando se ha pulsado un
boton
// o desplazado una barra
botonConexion.setOnClickListener(eventoClicBotonConexion);
barraActuador.setOnSeekBarChangeListener(eventoMovimientoBarraAc
tuador);
// Se crea la instancia inicial de NetworkTask
networktask = new NetworkTask();
// ----------------------- barraActuador EVENTLISTENER -
Comienzo ----------------------------
SeekBar.OnSeekBarChangeListener
eventoMovimientoBarraActuador = new
SeekBar.OnSeekBarChangeListener(){
116
Universidad Carlos III de Madrid
// Este metodo se ejecuta cuando la barraActuador es
desplazada
// en ese momento se guarda el valor de la barra, se
actualiza el numero valorBarraAcuador
// y se envia al microcontrolador
//@Override
public void onProgressChanged(SeekBar seekBar, int
progress, boolean fromUser) {
String valueOfseekbar = String.valueOf(progress);
valorBarraActuador.setText(valueOfseekbar);
networktask.SendDataToNetwork("Actuador:"+valueOfseekbar+'
\n');
//@Override
public void onStartTrackingTouch(SeekBar seekBar) {
//@Override
public void onStopTrackingTouch(SeekBar seekBar) {
};
// ----------------------- barraActuador EVENTLISTENER - fin
----------------------------
// ----------------------- botonConexion EVENTLISTENER -
Comienzo ----------------------------
private OnClickListener eventoClicBotonConexion = new
OnClickListener() {
public void onClick(View v){
117
De la Horra Kllmer, Mario
// El botonConexion:
// Si no hay conexion, se conecta, crea una
instancia de networkTask
// y comunica al usuario que se esta conectando
// Si la hay, se desconecta y lo comunica.
if(!bConexion){
outputText("Conectando con Arduino");
networktask = new NetworkTask(); //New
instance of NetworkTask
networktask.execute();
}else{
outputText("Desconectando de Arduino...");
if(networktask!=null){
networktask.closeSocket();
networktask.cancel(true);
};
// ----------------------- botonConexion EVENTLISTENER - fin --
--------------------------
// ----------------------- NETWORK TASK - Comienzo -----------
public class NetworkTask extends AsyncTask<Void, byte[],
Boolean> {
118
Universidad Carlos III de Madrid
Socket nsocket; //Network Socket
InputStream nis; // Flujo de Entrada
OutputStream nos; // Flujo de Salida
// Los bytes de entrada son almacenados en el buffer de
entrada,
BufferedReader inFromServer;
@Override
protected void onPreExecute() {
// Cuando la tarea comienza se cambia el estado de
conexion a conectado
cambiarEstadoConexion(true);
@Override
// En otro hilo de ejecucion se lleva la conexion
protected Boolean doInBackground(Void... params) {
boolean result = false;
try {
// Se crea la instancia del socket de conexion
SocketAddress sockaddr = new
InetSocketAddress("192.168.1.177", 8888);
nsocket = new Socket();
// Se conecta con un tiempo limite de 5 segundos
nsocket.connect(sockaddr, 5000);
// Cuando se conecta obtiene los flujos de
entrada y salida
if (nsocket.isConnected()) {
119
De la Horra Kllmer, Mario
nis = nsocket.getInputStream();
nos = nsocket.getOutputStream();
// El flujo de entrada se adjunta al buffer
de lectura
inFromServer = new BufferedReader(new
InputStreamReader(nis));
// Mientras este conectado:
// Se leen las lineas que entran y almacenan
en un array
while(true){
String msgFromServer =
inFromServer.readLine();
byte[] theByteArray =
msgFromServer.getBytes();
publishProgress(theByteArray);
// Excepciones
} catch (IOException e) {
e.printStackTrace();
result = true;
} catch (Exception e) {
e.printStackTrace();
result = true;
} finally {
closeSocket();
return result;
//Metodo de cierre del socket
120
Universidad Carlos III de Madrid
public void closeSocket(){
try {
nis.close();
nos.close();
nsocket.close();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
// Metodo de envio de datos
public void SendDataToNetwork(String cmd) {
try {
if (nsocket.isConnected()) {
nos.write(cmd.getBytes());
} else {
outputText("SendDataToNetwork: No se puede
enviar mensaje. Socket cerrado");
} catch (Exception e) {
outputText("SendDataToNetwork: Error en envio de
mensaje. Excepcion");
121
De la Horra Kllmer, Mario
// Metodo llamado cada vez que un string es recibido por
el socket de conexion
@Override
protected void onProgressUpdate(byte[]... values) {
// Si el dato recibido tiene al menos un byte
if (values.length > 0) {
// Se obtiene la cadena de los valores recibidos
String command=new String(values[0]);
// Si la cadena comienza con "Sensor"
if(command.indexOf("Sensor:")==0){
// Se elimina la parte "Sensor:" y se toma el
dato recibido
command=command.replace("Sensor:", "");
datoRecibido = Integer.parseInt(command);
setBarraSensor(datoRecibido);
mGraph.addDataPoint(datoRecibido);
// Si la tarea se cancela, se establece el
EstadoConexion en desconectado
@Override
protected void onCancelled() {
cambiarEstadoConexion(false);
122
Universidad Carlos III de Madrid
// Tras la ejecucion de la conexion se llama a este
metodo
@Override
protected void onPostExecute(Boolean result) {
if (result) {
outputText("onPostExecute: Completado con un
Error.");
} else {
outputText("onPostExecute: Completado.");
// Por ultimo se cambia el estado de la conexion a
desconectado
cambiarEstadoConexion(false);
// ----------------------- NETWORK TASK - Fin --------------
--------------
// Metodo que efectua el cambio del estado de la conexion
public void cambiarEstadoConexion(Boolean isConnected) {
bConexion=isConnected;//change variable
// Habilita/deshabilita la barra Actuador
barraActuador.setEnabled(isConnected);
// Habilita/deshabilita la barra Sensor
barraSensor.setEnabled(isConnected);
// Si la conexion se establece o cierra,
123
De la Horra Kllmer, Mario
// Lo muestra en el log, y cambia el texto del
botonConexion
if(isConnected){
outputText("Conectado con Arduino");
botonConexion.setText("Desconectar");
}else{
outputText("Desconectado de Arduino!");
botonConexion.setText("Conectar");
// Metodo que cambia la barraSensora y su valor
public void setBarraSensor(int position) {
barraSensor.setProgress(position);
String valorDeDatoRecibido =
String.valueOf(datoRecibido);
valorBarraSensor.setText(valorDeDatoRecibido);
// Metodo que publica en el log todas las entradas
public void outputText(String msg) {
textlog.append(msg+"\n");
124
Universidad Carlos III de Madrid
// Metodo llamado cuando cierra la aplicacion
@Override
protected void onDestroy() {
super.onDestroy();
if(networktask!=null){//In case the task is currently
running
networktask.cancel(true);//cancel the task
125
De la Horra Kllmer, Mario
126
Universidad Carlos III de Madrid
C. Presupuesto
- Autor: Mario De la Horra Kllmer.
- Departamento: Automtica y electrnica.
- Descripcin del proyecto: Sistema de adquisicin de datos de bajo coste
- Duracin del proyecto: 6 meses.
- Desglose presupuestario:
Personal
Dedicacin Coste por
Apellidos y nombre Categora
(hombres mes)* mes ()
BARBER CASTAO, RAMN
Ingeniero Snior 0,80 4.289,54
IGNACIO
DE LA HORRA KLLMER, MARIO Ingeniero 3,00 2.694,39
Total 14.946,434
Equipos
% Uso dedicado Dedicacin Periodo de Coste imputable
Descripcin Coste ()
proyecto (meses) depreciacin ()**
Porttil
1100 5 4 60 9,33
MacBook
Porttil HP 700 5 2 60 3
Soldador 100 10 2 60 0,33
Total 12,67
Costes de materiales
coste
Descripcin Empresa unidades Total ()
imputable
Microcontrolador Arduino Uno 1 26 26
Entorno de desarrollo Arduino
1 50 0,00
(libre) Mega
Mdulo ethernet Arduino 1 39.325 39.325
Libreras ethernet.h (libre) GNU 1 0 0,00
Convertidor DC-DC sparkfun 1 12.43 12.43
Total 127,75
127
De la Horra Kllmer, Mario
Resumen de costes
Presupuesto Costes Totales Costes
Personal 14.946,43
Subcontratacin 12,67
Costes materiales 127,75
Total 15.086,85
NOTAS:
Presupuesto estimado para un sistema con 1 puesto.
* 1 Hombre mes = 131.25 horas. Mximo de dedicacin de 12 hombres mes
(1575 horas).
** Frmula de clculo de la amortizacin:
A = n de meses desde la fecha de facturacin en que el equipo es
utilizado.
B = periodo de depreciacin (60 meses).
B = periodo de depreciacin (60 meses).
D = % del uso que se dedica al proyecto.
128
Universidad Carlos III de Madrid
D. Glosario
DAQ Data Acquisition
IO Input/Output
LED Light Emitting Diode
LDR Light Dependent Resistor
USB Universal Serial Bus
RX Receive
TAD Tarjeta de Adquisicin de Datos
TX Transmit
WLAN Wireless Local Area Network
129
De la Horra Kllmer, Mario
130
Universidad Carlos III de Madrid
131
De la Horra Kllmer, Mario
132