Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TFG GarciaFerrinPatricia
TFG GarciaFerrinPatricia
Egilea/Autor/a:
Patricia García Ferrín
Zuzendaria/Director/a:
Javier Echanobe Arias
0. Introducción y Objetivos 1
4. Conclusiones 46
i
5. Referencias 47
ii
0. Introducción y Objetivos
El objetivo de este trabajo es el desarrollo de una aplicación para el Microcontrolador XMC4500 de
Infineon Technologies AG instalado en el Kit de Desarrollo Hexagon Application Kit, cuya finalidad sea la
adquisición, procesamiento y representación de parámetros ambientales.
Se utilizarán los periféricos de comunicaciones, para adquirir los datos tanto digitales como analógicos
de los sensores de Presencia, Temperatura, Humedad y Luminosidad de los que disponemos.
Por otra parte, se hará uso de la Interfaz Humano-Máquina de la que dispone el Kit de Desarrollo para
representar los datos adquiridos y permitir la interacción con el usuario dando la posibilidad de cambiar
la medida que se muestra por pantalla mediante los botones táctiles que incorpora la placa.
En el primer capítulo se hará una introducción a los microcontroladores. Partiendo desde la historia
de estos dispositivos electrónicos, se hablará de las características más generales en cuanto a arquitectura
interna, de sus múltiples aplicaciones, y se compararán características de diferentes modelos.
En el segundo capítulo se entrará a conocer en detalle las características del Microcontrolador XMC4500
y del kit de desarrollo Hexagon Application Kit con el cual se ha realizado este trabajo. Por otro lado, se
dará a conocer el programa DAVE creado por la empresa Infineon para el desarrollo de aplicaciones para
los microcontroladores de la familia XMC.
1
1. Introducción a los Microcontroladores
1.1. Introducción
Un microcontrolador (MCU) es un circuito integrado programable que en su interior contiene, como
mínimo, una unidad central de procesamiento (CPU), unidades de memoria (RAM y ROM), periféricos
programables de entrada/salida. Estas partes están interconectadas dentro del microcontrolador, y en
conjunto forman lo que se le conoce como microcomputadora. Por lo que en el caso de un microcontrolador
se trata de una microcomputadora encapsulada en un circuito integrado [4] [20].
Sin embargo, estos dispositivos requerían chips externos para implementar un sistema funcional, au-
mentando el precio del sistema completo. En 1974 se crearía el primer microcontrolador, llamado TMS 1000
y fabricado por Texas Instruments; el cual incluía además del microprocesador, memoria ROM, memoria
RAM y un reloj integrado [20]. En 1977 se empezó a comercializar el Intel 8084 que llevaba integrados los
elementos fundamentales para que pudiera ser llamado microcontrolador: memoria ROM, memoria RAM
(en este caso de 64 bytes a 256 bytes) y una interfaz de entrada/salida [4].
De ahí en adelante, la incorporación de memorias EEPROM que permitían el borrado eléctrico rápido
de la memoria supuso un gran salto, sobre todo en reducción de costes. En 1993 la empresa Microchip
lanzó al mercado el PIC16x84, un microcontrolador de 8 bits que ya incluía este tipo de memorias. Ese
mismo año, Atmel da un paso más allá lanzando el primer microcontrolador con memoria flash [20].
Poco a poco se ha ido aumentando el tamaño de estas memorias y el número de periféricos integrados
en los microcontroladores, y reduciendo cada vez más el consumo de los mismos.
El µP es un circuito integrado que contiene la Unidad Central de Proceso o CPU, que el sistema encar-
gado de interpretar las instrucciones de un programa informático mediante la realización de operaciones
básicas aritmético-lógicas y de entrada/salida. A partir de ahí, el µP es un sistema abierto, al que externa-
mente se le pueden conectar los periféricos requeridos a través de los buses de direcciones, datos y control
que saca hacia el exterior.
El MCU por el contrario se trata de un sistema cerrado que contiene un computador completo encap-
sulado, con sus periféricos de memoria y los módulos de entrada/salida integrados [14].
2
Microcontroladores Microprocesadores
Los dispositivos genéricos son de 8bits, Tienen mayores longitudes de palabra
actualmente hay desarrollo de 16,32 y 64 bits. (16, 32, 64bits).
Incorpora en una misma pastilla capacidad Necesitan chips externos para apoyar las
de memoria y manejo de puertos. funciones de transferencia y almacenamiento.
La memoria es limitada aunque algunos Manejo de mayor capacidad
permiten incorporar KB externos. de memoria.
Tarjetas simples alojadas en espacios Gran volumen (físico) en su
pequeños. adecuación y funcionamiento.
Consumo de milivatios o unos pocos Consumo de potencia en cientos
vatios. Es posible alimentarlo con baterías. de vatios.
Dispositivos complejos de comunicación Manejo de dispositivos
que permiten control en tiempo real. periféricos informáticos.
Robustos e inmunes a ruidos industriales. Susceptibles a ruido industrial.
Sistemas mínimos. Sistemas informáticos.
1.2. Arquitectura
Las arquitecturas que pueden encontrarse en la CPU de un microcontrolador son las siguientes:
Arquitectura de Von Neumann [4]: En la arquitectura Von Neumann la CPU se conecta a una
memoria principal única, generalmente del tipo RAM, donde se almacenan los datos y el programa.
A estos se accede a través de un sistema de buses único, como son el bus de dirección, control y
datos. El ancho del bus que comunica la memoria con la CPU determina el tamaño de la unidad
de datos o instrucciones, por lo que para acceder a datos de mayor tamaño que este bus hará falta
acceder a memoria en más de un ciclo de reloj.
Arquitectura Harvard [4]: La arquitectura Harvard se caracteriza por tener separados los bloques
de memoria de datos e instrucciones y acceder a ellos por buses independientes de dirección, datos y
control. La independencia de buses permite tener accesos simultáneos e independientes a la memoria
de datos e instrucciones. El contenido y longitud de las direcciones de memoria pueden ser distintos
para los datos e instrucciones permitiendo una optimización en el uso de la memoria, ya que existe
la posibilidad de superponer los tiempos de acceso al acceder a la memoria de programa y de datos
en el mismo ciclo de reloj.
Arquitectura Reduced Instruction Set Computer (RISC) [3]: Esta arquitectura tiene dos
características principales:
• Las instrucciones tienen un tamaño fijo y están presentadas en un reducido número de formatos.
• Sólo las instrucciones de carga y almacenamiento acceden a la memoria de datos.
Esta estrategia de diseño de la CPU está basada en la idea de que un conjunto simple de instruc-
ciones en combinación con una arquitectura capaz de ejecutar esas instrucciones utilizando menos
ciclos de procesador, puede aportar un rendimiento mucho más alto. Otra característica de este tipo
de arquitectura es que solo se accede a la memoria a través de determinadas instrucciones, no es
accesible dentro de otras instrucciones o como parte de ellas.
Hoy en día esta es una de las arquitecturas más utilizadas para todos los microcontroladores del
mercado, ya que la mayoría de ellos integran un microprocesador con especificaciones funcionales de
tipo ARM
R
(Advanced RISC Machine).
Arquitectura Complex Instruction Set Computer (CISC) [4]: Esta arquitectura se basa en
el diseño de instrucciones que sean capaces de ejecutar varias operaciones de bajo nivel (como una
lectura de la memoria, una operación aritmética y una escritura en memoria) o que sean capaces de
ejecutar instrucciones más complejas en un sólo ciclo de CPU. Al contrario que la arquitectura RISC
tienen un conjunto de instrucciones que se caracteriza por ser muy amplio y permitir operaciones
3
complejas entre operandos situados en la memoria o en los registros internos.
A día de hoy y con el objetivo de conseguir paralelismo entre instrucciones, los sistemas con CISC de
alto rendimiento implementan sistemas que convierten instrucciones complejas en simples del tipo
RISC, denominadas microinstrucciones.
1.3. Aplicaciones
Cada vez existen más productos que incorporan un microcontrolador con el fin de aumentar sustan-
cialmente sus prestaciones, reducir su tamaño y coste, mejorar su fiabilidad y disminuir el consumo.
Sus aplicaciones son muy diversas, y varían desde las aplicaciones de uso industrial hasta otras de uso
doméstico y cotidiano como pueden ser las lavadoras o los televisores, y sistemas más grandes como los de
vigilancia y alarma, calefacción y aire acondicionado entre otros. Las comunicaciones y los productos de
consumo general absorben más de la mitad de la producción de microcontroladores; el resto se distribuye
entre el sector de automoción, la informática y los procesos industriales.
En cuanto al uso de estos dispositivos en la industria, se utilizan sobre todo para realizar funciones de
adquisición de datos y actuación gracias a los conversores A/D y D/A que incorporan la mayoría de los
dispositivos actuales. Se usan también para realizar el control secuencial de procesos automáticos debido
al gran número de entradas y salidas inmunes al ruido que poseen. Y por último, son muy utilizados en el
ámbito de la robótica, por ejemplo, para el control de motores y captura de señales de diferentes sensores
necesarios para el funcionamiento autónomo del sistema.
La industria informática acapara gran parte de la producción de microcontroladores, ya que casi to-
dos los periféricos del computador, desde el ratón o el teclado hasta la impresora, son regulados por un
microcontrolador. Las comunicaciones y sus sistemas de transferencia de información utilizan microcon-
troladores incorporándolos en los grandes automatismos y en determinadas partes de los teléfonos actuales.
Otra de las grandes industrias que hacen uso de estos dispositivos es la industria de la automoción,
donde se utilizan para aplicaciones esenciales como puede ser el control del motor o el sistema ABS, y en
otros más actuales como los sistemas de conducción autónoma y asistencia a la conducción.
Por último, uno de los campos en auge para este sector es el de las aplicaciones médicas, donde
la necesidad de instrumentación electrónica para el control de los procesos y el procesado de imágenes
obtenidas está impulsando cada vez más su utilización [2].
4
Toshiba Xemics XMOS
Ubicom Xilinx ZiLOG
En la Figura 1.1 se muestra una tabla creada por Infineon para la comparación de las características
de los diferentes dispositivos de esta familia.
Figura 1.1: Tabla comparativa de los dispositivos de la familia XMC4000 de Infineon [8].
5
2. Kit de Desarrollo Hexagon Application Kit
2.1. Hexagon Application Kit
El Kit de Desarrollo Hexagon Application Kit con el que se va a trabajar es una plataforma diseñada
para mostrar y probar las capacidades del Microcontrolador XMC45000 de Infineon. Consta de una pla-
ca central llamada CPU Board y tres tarjetas satélite (Automation I/O Card, Standard Human Machine
Interface Card y Ethernet/CAN/RS485 Interface Card) cuyas funciones son probar lo siguiente respec-
TM
tivamente: capacidades del ISOFACE de Infineon junto con el XMC4500 [9], capacidades de interacción
entre el humano y el XMC4500 [11] y capacidades de comunicación del XMC4500 [10].
A continuación se ofrece una descripción detallada del hardware y las características de las cuatro placas
que forman el Kit de Desarrollo y del Microcontrolador XMC4500.
Los dispositivos de la serie XMC4500 combinan la funcionalidad extendida y rendimiento del nucleo
ARM Cortex-M4, con potentes subsistemas de periféricos y unidades de memoria on-chip. A continuación
se muestran las características más importantes disponibles en los dispositivos de la serie XMC4500, y en
la Figura 2.1 se muestra un diagrama de bloques donde se esquematizan todas estas características del
Microcontrolador.
6
(Program Memory Unit).
La FPU realiza operaciones de acuerdo con el estándar para la aritmética en coma flotante IEEE 754
con precisión simple de 32 bits.
La MPU mejora la fiabilidad del sistema. Proporciona un control específico de la memoria, permitien-
do a las aplicaciones que utilicen múltiples niveles de privilegio, separando y protegiendo código, datos y
la pila basándose en una operación tarea a tarea (task-by-task). Es posible utilizar hasta ocho regiones
diferentes de memoria además de tener una región de fondo predefinida opcional.
7
32 KB de Comunicación de alta velocidad on-chip:
La memoria RAM de Comunicación (DSRAM2) es la utilizada por las unidades de la interfaz de
comunicación como el USB y Ethernet.
Además de estas memorias integradas, con el objetivo de cumplir las necesidades de ciertas operaciones
donde se requieren mas periféricos, la Unidad Externa de Bus o EBU (External Bus Unit) proporciona los
medios necesarios para añadir de forma opcional una amplia variedad de memorias externas.
• ROMs, EPROMs
• Flash tipo NOR y NAND
• RAMs y PSRAMs estáticas
• PC133/100 compatible con SDRAM
• Burst Flash
8
Canal Universal de Interfaz en Serie o USIC (Universal Serial Interface Channel):
El USIC es un módulo de interfaz flexible que cubre diversos protocolos de comunicación serie como
son ASC, LIN, SSC, I2C e I2S.
El XMC4500 tiene 3 módulos USIC con 2 canales independientes en cada uno de ellos. Se implementa
en cada uno un buffer FIFO para almacenar los datos de transmisión y hay disponibles varias señales
de selección de chip para permitir la comunicación con varios dispositivos utilizando un único canal.
Controller Area Network (CAN):
El módulo MultiCAN contiene tres nodos CAN independientes con total funcionalidad, capaces de
intercambiar Tramas de Datos y Tramas Remotas a través de una función puerta de enlace (gateway).
Cada nodo CAN puede recibir y transmitir tramas estándar con identificadores de 11 bits y tramas
extendidas con identificadores de 29 bits. Todas las tramas se tratan de acuerdo con la especificación
V2.0 B.
Conversor Analógico-Digital:
El módulo del Conversor Versátil Analógico-Digital (VADC) consiste en cuatro núcleos independien-
tes de 8 canales de entrada cada uno que operan de acuerdo con el principio de aproximaciones
sucesivas. La resolución es programable desde 8 hasta 12 bits con un tiempo total de conversión
inferior a 500ns para la resolución de 12 bits.
Cada núcleo proporciona una máquina de estados versátil que permite medidas complejas. Los nú-
cleos pueden sincronizarse y las conversiones se pueden realizar en segundo plano. Pueden priorizarse
múltiples eventos de trigger y permitir una medida exacta de señales temporalmente críticas. El
almacenamiento y manejo de los resultados evita la pérdida de datos y asegura la consistencia.
La estructura básica de este VADC permite que las tareas solo lean resultados válidos y no sea
necesario preocuparse por el inicio de las conversiones. Por otra parte, un conjunto de comparadores
on-chip para valores fuera de rango se encargan de monitorizar el posible sobrevoltaje en las entradas
del VADC.
Demodulador Delta-Sigma o DSD:
Los cuatro canales del DSD convierten los flujos de bits de entrada a valores discretos. Cada canal
del demodulador tiene dos filtros digitales programables de tipo SINC o COMB. El filtro rápido
puede usarse para comprobar los límites de la señal, mientras que el lento se utiliza para la medida
de la señal. Una etapa integradora se encarga de la cancelación de la frecuencia de la portadora y
otro mecanismo compensa la posible diferencia de fase entre dos canales. El generador de vectores
integrado genera un flujo de bits sinusoidal que puede utilizado en múltiples aplicaciones.
Conversor Digital-Analógico o DAC:
Este módulo consiste en 2 Conversores Digital-Analógico de 12 bits, convirtiendo dos señales de en-
trada digitales a dos señales de voltaje analógico a la salida a una frecuencia máxima de 5MHz.
El modo integrado de generación de ondas permite la generación de formas de onda entre varias a
elegir. Los valores introducidos en el DAC pueden llegar desde la CPU o el DMA directamente a uno
o ambos canales. Además es posible añadir un offset, escalar la amplitud y utilizar varias fuentes
diferentes como trigger del sistema.
9
potencia, en las que se necesitan temporizadores de propósito general para monitorizar y acondi-
cionar la señal y generación de señal por Modulación por Ancho de Pulsos o PWM (Pulse Width
Modulation).
Window Watchdog Timer (WDT) para aplicaciones que requieren mayor seguridad.
Sensor para la medición de temperatura interna crítica.
Módulo de Clock en Tiempo Real con soporte para alarma.
Unidad de Control del Sistema o SCU para configuración y control del sistema.
8 breakpoints
Arquitectura ARM CoreSight
Traza
Por otra parte, los intefaces que soporta este debugger son: ARM-JTAG, ARM-SWD (Serial Wire
Debugger) y single wire trace.
10
2.3.1. CPU Board XMC4500 General Purpose (CPU_45A-V3)
La descripción general de recursos es la siguiente [12]:
TM
Microcontrolador XMC4500 (basado en ARM
R
Cortex M-4), CPU a 120MHz, 1MB de memoria
Flash on-chip, 160KB de memoria RAM, empaquetado LQFP-144.
Tres conectores (ACT,HMI y COM) para conectar las tarjetas satélite.
Conector micro USB que soporta USB OTG Host/Device.
Opciones de depuración o debug:
• On-board Debugger mediante USB.
• Cortex Debug Connector (10 pines)
• Cortex Debug+ETM Connector (20 pines)
Reset mediante botón pulsador.
32 MBit de memoria Flash quad SPI.
Conector PowerScale específico para medir la potencia consumida por el MCU.
5 LEDs:
• 3 LEDs de encendido.
• 1 LED de Usuario.
• 1 LED de Reset.
• 1 LED de Debug.
Botón de Usuario.
Potenciómetro.
Alimentación:
• Mediante el conector Micro-USB.
• Mediante las tarjetas satélite.
• Mediante el conector Debug USB.
• Con una batería RTC de apoyo.
A continuación se da una descripción detallada del hardware y de su modo de funcionamiento, y una
imagen de dicha placa en la Figura 2.2:
Alimentación: La alimentación de esta placa se puede realizar a través del conector USB (5V), sin em-
bargo hay un límite de corriente que puede tomarse desde el PC a través del USB. Si la placa CPU_45A-V3
se utiliza para controlar otras placas y la corriente total necesitada excede los 500mA, entonces es necesario
alimentar la placa de la CPU con una fuente externa conectada al USB o a través de una placa satélite
que soporte fuentes de alimentación externas.
Reset: El pin de reset es bidireccional. Una resistencia interna pull-up mantendrá el pin en alto mien-
tras el funcionamiento sea normal, un nivel bajo de la señal en este pin forzará un reset del hardware.
Para el caso de un reset interno, el pin producirá una señal en bajo. En la placa CPU_45A-V3 es posible
encontrar un botón físico de reset que permite un reseteado de hardware durante la operación de la CPU.
La señal de reset está rutada a todos los conectores satélite que se resetearán a la vez que esta. El
estado del reset se indica en la placa a través del LED rojo (V407), el cual estará encendido durante el
proceso de reseteado y apagado en condiciones normales de operación.
11
Opción de arranque (Boot Option): Tiene cuatro modos de arranque o boot diferentes: El modo
normal que arranca desde la memoria Flash, otro que hace uso también del Canal Serie Asíncrono y otros
dos que utilizan en bus CAN, siendo uno de estos modos configurable en una sección de la memoria.
Interfaz de Debug : La placa CPU_45A-V3 soporta el debug JTAG mediante tres tipos de conectores
diferentes:
On-board Debugger : Este soporta Serial Wire Debug, Serial Wire Viewer y comunicación Full Duplex
UART (Universal Asynchronous Receiver Transmitter ) mediante un Virtual COM por USB, los
interruptores U301 y U303 se utilizan para configurar este tipo de comunicación.
Cortex Debug Connector (10 pines): La placa CPU_45A-V3 soporta la operación Serial Wire Debug
y Serial Wire Viewer a través del conector de 10 pines.
Cortex Debug+ETM Connector (20 pines): A través de este conector de 20 pines es posible utilizar
los dos modos de operación mecionados para el de 10 pines, además de la operación en Traza de
Instrucciones.
Si se utiliza cualquier debugger externo conectado a los conectores de 10/20 pines, el On-board de-
bugger se desconecta automáticamente.
Memoria Serial Flash: La placa CPU_45A-V3 proporciona una memoria Flash de 32Mbit utilizando
como interfaz con el XMC4500 la SPI (Serial Peripheral Interface), la cual puede ser configurada como
single, dual o quad.
USB: Es posible configurar esta interfaz como anfitrión, huésped o con función dual (OTG). Si está
configurado en modo huésped/OTG la placa es capaz de alimentar el dispositivo conectado siempre y
cuando no se requieran más de 500mA.
Reloj en Tiempo Real o RTC: La CPU del XMC4500 tiene dos dominios con necesidad de alimen-
tación, el dominio del núcleo y el de hibernación. El RTC se encuentra en el dominio de hibernación, el
cual puede operar si se encuentra alimentado a través del pin VBAT donde se puede conectar una batería
de 3V o bien si se le proporcionan 3.3V desde el dominio de núcleo y es capaz de "despertar” a todo el
sistema del modo hibernación. Sin ningún tipo de alimentación el dominio de hibernación podrá funcionar
durante 10 segundos aproximadamente.
LEDs de Usuario y Botones de Usuario: Existe un botón conectado directamente al pin 2.15 del
microprocesador y un LED de usuario en el pin 3.9.
Conectores satélite: La placa CPU_45A-V3 tiene 3 conectores satélite para conectar las placas de
extensión AUT_ISO-V1, HMI_OLED-V1 y COM_ETH-V1, de 80 pines cada uno.
12
Figura 2.2: Imagen de la placa satélite CPU_45A-V3 con la señalización de sus elementos más importantes
[12]
2 tipos de alimentación:
• Jack para alimentación externa de 24V.
• A través del conector ACT.
A continuación se da una descripción detallada del hardware y de su modo de funcionamiento, y una
imagen de dicha placa en la Figura 2.3:
ISOFACE OUT e ISOFACE IN : Ambos dispositivos están preparados como salida y entrada de
señales digitales respectivamente, alimentados con 3.3V por la parte de la CPU y 24V por la parte de las
salidas y entradas respectivamente.
Expansor IO: La placa AUT_ISO-V1 soporta una expansión de Entradas/Salidas de Propósito General
o GPIO a través del Expansor de entradas IO-Expander. Este utiliza el bus de datos serie I2C. La placa
satélite admite hasta 8 GPIOs.
Alimentación: La alimentación de esta placa proviene de los 5V aportados a través del conector sa-
télite, o bien de una fuente externa de 24V/1A conectada a un power jack que posee la placa el cual solo
13
será necesario en caso que el voltaje proveniente de la placa no sea suficiente.
Esta placa también tiene un conversor DC-DC que reduce los 24V a 5V. El voltaje de entrada puede
variar desde 12V a 24V. A su vez, en la placa se está generando un voltaje de 3.3V a partir de los 5V.
Conector satélite: Esta placa tiene un único conector satélite de 80 pines que sólo puede utilizarse
para su conexión con la placa de la CPU.
Figura 2.3: Imagen de la placa satélite AUT_ISO-V1 con la señalización de sus elementos más importantes [9]
Ranura para memoria MicroSD: La placa satélite HMI_OLED-V1 tiene un conector para MicroSD.
La interfaz SD/MMC del XMC4500 puede ser usada de 4 modos diferentes (modo SPI, SD de 1 bit, SD
de 4 bits, MMC de 8 bits). Esta placa permite la implementación del modo de 4 bits para la interfaz de la
SD.
14
Display OLED: La placa HMI_OLED-V1 tiene un display OLED de matriz pasiva (PMOLED) de Den-
sitron. Este display tiene una resolución de 160x128 píxels en una pantalla de 1.54".
La interfaz utilizada para conectar el display con el XMC4500 es la SPI. El Driver y Controlador del
Display PMOLED utilizado por este módulo es el Syncoam SEPS525F de 160 RVA x 128 Puntos, 262K
colores. La propia tarjeta implementa la alimentación (13V) para la retroiluminación del display, que se
indica con el LED VDD13.
Audio: La placa satélite HMI_OLED-V1 implementa una interfaz de audio con el códec de audio estéreo
TLV320AIC3204. El control del códec de audio se realiza mediante el bus I2C, mientras que los datos de
audio utilizan el bus I2S como interfaz con el XMC4500.
El pin GPIO P2.10 se utiliza para resetear el códec de audio, el cual tiene integrado un driver para
auriculares así como una entrada para micrófono analógico o digital. El receptáculo para los auriculares
integrado en la placa es estéreo de 4 pines y 2.5mm.
Expansor IO: Al igual que en la placa AUT_ISO-V1 existe un expansor de hasta 8 pines GPIO con
interfaz I2C.
Botones táctiles: La placa satélite HMI_OLED-V1 tiene dos botónes táctiles (TOUCH250 y TOUCH251)
que se conectan con la CPU a través del conector satélite. Estas señales están a su vez conectadas con los
LEDs V250 y V251 que pueden ser configurados.
Alimentación: Esta placa no tiene alimentación externa, se alimenta con 5V provenientes de la placa
de la CPU. Se generan 3.3V con el regulador integrado en la placa y los 13V mencionados anteriormente
para la retroiluminación del display.
Conector satélite: Esta placa sólo tiene un conector satélite que ha de ser conectado siempre con la
placa de la CPU.
Figura 2.4: Imagen de la placa satélite HMI_OLED-V1 con la señalización de sus elementos más importantes
[11]
15
Conexión a la placa CPU mediante el conector COM.
Ethernet (RJ45) 10/100Mbps.
2 tipos de alimentación:
• Jack para alimentación externa de 24V.
• A través del conector COM.
A continuación se da una descripción detallada del hardware y de su modo de funcionamiento, y una
imagen de dicha placa en la Figura 2.5:
Ethernet: La placa satélite COM_ETH-V1 incluye un jack RJ45 magnético para la comunicación con
Redes de Área Local. En la placa, el dispositivo de la capa física (PHY) DP83848CVV se conecta a la
CPU mediante la interfaz RMII (Reduced Media-Independent Interface). Esta interfaz requiere un clock
que se genera en la placa mediante un oscilador a cristal de 50MHz integrado.
CAN: La placa satélite COM_ETH-V1 soporta una interfaz de tipo CAN mediante un conector DE-9.
Un tarnsceptor CAN se conecta a la placa a través del conector satélite de 80 pines.
RS485/CAN Boot Loader : La placa COM_ETH-V1 soporta la interfaz RS485 a través del conector
DE-9. De nuevo, se utiliza un transceptor RS485 conectado a la CPU mediante el conector satélite. Es
posible elegir si se quiere la opción de arranque CAN o RS485 mediante los conectores X330 y X331 res-
pectivamente.
Expansor IO: Al igual que en las placas AUT_ISO-V1 y HMI_OLED-V1 se pueden añadir hasta 8 entra-
das o salidas de propósito general.
Alimentación: Esta placa satélite, al igual que la AUT_ISO-V1 cuenta con la posibilidad de alimenta-
ción externa de 24V/1A y de 5V a través del conector de la placa satélite.
Conector satélite: De nuevo esta placa presenta un único conector que solamente puede ser utilizado
para conectarse con la placa central de la CPU.
16
Figura 2.5: Imagen de la placa satélite COM_ETH-V1 con la señalización de sus elementos más importantes
[10]
TM
2.5. Entorno de desarrollo de software DAVE (Versión 4)
TM
DAVE (Digital Application Virtual Engineer), una herramienta gratuita de desarrollo de software en
lenguaje C/C++ y de generación de código para aplicaciones con microcontroladores de la marca Infineon
Technologies AG, es el programa utilizado para programar el Microcontrolador XMC4500. DAVE es un
sistema autónomo con módulos independientes de generación automática de código y es adecuado para
desarrollar drivers para estos controladores y ayudar al desarrollador con plantillas de código C. En estas
plantillas que se generan automáticamente se incluyen las funcionalidades deseadas por el usuario [5]. Las
últimas versiones de DAVE incluyen lo necesario para desarrollar, compilar y depurar sobre el objetivo
(debug on target), todo ello basado en el ARM GCC Toolsuite para construir, el GBD ARM para depurar
y con Eclipse como Ambiente de Desarrollo Integrado (Integrated Development Enviroment o IDE) [6].
17
Es posible programar en este entorno de desarrollo directamente escribiendo código en lenguaje C/C++
o utilizando la programación basada en su Interfaz Gráfica de Usuario. Esta programación utilizando la
GUI de DAVE consiste en interconectar «APPs»; librerías de código fuente configurable y de generación
automática que controlan diferentes funciones del microcontrolador. Este kit de desarrollo de software
(SDK) permite configurar de forma gráfica ciertas opciones de las Apps [6].
TM
2.5.1. Composición de las APPs de DAVE
Una APP del entorno DAVE proporciona APIs al usuario; las cuales están centradas en los recursos de
hardware posiblemente interconectados, y puede ser utilizada bien independientemente, o bien, dentro de
una jerarquía de APPs.
Hay que tener en cuenta que al añadir una APP al proyecto las APIs no están disponibles todavía. Es
necesario configurar la APP por medio del entorno gráfico y llevar a cabo una generación de código. Es en
ese momento cuando se generan los archivos de código fuente y es en esos archivos donde se encuentra las
APIs de las APPs.
Cuando se añade una APP a un proyecto, DAVE crea un çontenedor” de datos para guardar todos los
datos pertenecientes a esta APP, por lo que tener múltipes APPs en un proyecto implica tener múltiples
contenedores de datos.
TM
2.5.2. Programación mediante el entorno gráfico (GUI) de DAVE
El entorno de desarrollo DAVE tiene varias pantallas que permiten configurar diferentes aspectos de
las APPs que forman un proyecto. En la Figura 2.8 se muestra un ejemplo típico de la presentación del
programa.
18
Figura 2.8: Layout habitual del entorno de desarrollo de software DAVE [6].
Los diferentes paneles que se aprecian en la Figura 2.8 son los siguientes:
3. Perspectivas: DAVE tiene cuatro perspectivas: IDE, CE, Debugger y Pin Mapping. La perspectiva CE
permite ver más cosas relacionadas con las APPs como puede ser la dependencia entre ellas o la vista
de conectividad entre recursos de hardware con respecto a la perspectiva IDE. La perspectiva del
debugger muestra las acciones típicas de este como son la ventana de código de programa, breakpoints
o la traza de la pila por ejemplo. Por último, la perspectiva Pin Mapping (Figura 2.9) muestra la
asignación y ocupación de pines del microcontrolador de forma gráfica.
4. Configuración de APPs y editor de código fuente: En este panel se pueden configurarn las APPs (con
la perspectiva DAVE CE) y ver o editar el código del proyecto (con las perspectivas DAVE IDE y
CE).
5. Árbol de Dependencia de APPs: En este panel se puede observar la lista de APPs del proyecto y las
APPs que dependen de cada una de ellas en una estructura de tipo árbol. Haciendo doble click en
cualquiera de ellas se abre en el panel número 4 el entorno gráfico para su configuración.
6. Dependencia de APPs y Conexionado de las Señales de Hardware: Este panel aparece en la perspec-
tiva DAVE CE. Ofrece dos representaciones importantes, la primera de ellas es la dependencia entre
APPs, mientras que la segunda se trata de un esquema de conexionado de señales. Desde este panel
se pueden añadir nuevas APPs al proyecto con el botón Add New APP ( ).
Por otra parte, la vista del conexionado de hardware (HW Signal Conectivity) muestra de forma
gráfica las conexiones formadas entre los recursos de diferentes APPs. Esta se muestra en la Figura
2.10.
19
Por último, hay dos opciones más para configuración de APPs mediante entorno gráfico importantes:
Distribuidor Manual de Pines (Manual Pin Allocator ) y Asignación Manual de Recursos (Manual Re-
source Asignment ).
La interfaz gráfica del Manual Pin Allocator tiene el aspecto de la Figura 2.11. En ella se pueden
configurar manualmente los pines del Microcontrolador que necesitará cada APP dependiendo de su fun-
cionalidad.
En la Figura 2.11 se observan los pines asignados para tres APPs diferentes que son
ADC_MEASUREMENT_0, GUI_SEGGERLIBRARY_0 y SPI_MASTER_0, cuyas funciones son con-
trolar el ADC, controlar la representación de datos en el display PMOLED y controlar el bus serie respec-
tivamente. Se han reservado en primer lugar cuatro pines que se corresponden con cuatro canales diferentes
del ADC para las medidas analógicas que se quieren hacer, el pin de la librería segger se configura por
defecto y en el caso del canal SPI, al ser el encargado tanto de las entradas y salidas digitales como de la
comunicación con la pantalla se reservan también los pines encargados del chip select.
El subíndice 0 en cada una de las APPs indica la instancia de la misma en el programa. En este caso
es 0 y tan solo hay una instancia de cada una, sin embargo DAVE permite realizar más instancias de una
misma APP detro de un proyecto.
En la interfaz gráfica del Manual Resource Asignment se pueden configurar manualmente los re-
cursos. El resultado final de esta asignación de recursos puede verse en Report ( ), y un ejemplo de su
interfaz gráfica se muestra en la Figura 2.12. Aquí se pueden ver por ejemplo los recursos consumidos por
el ADC, como canales utilizados, pines utilizados y eventos de resultado para cada medida.
20
Figura 2.10: Pestaña de HW Signal Conectivity este proyecto
21
Figura 2.11: Interfaz gráfica del Manual Pin Allocator en este proyecto.
Figura 2.12: Report con todos los recursos utilizados en este proyecto.
22
3. Sistema de Adquisición de Parámetros Ambientales
3.1. Introducción
En este capítulo se va a explicar el montaje y funcionamiento del sistema de adquisición de datos que se
ha desarrollado sobre la plataforma Hexagon Application Kit descrita en el capítulo anterior, en concreto
se utilizarán las placas CPU_45A-V3, AUT_ISO-V1, HMI_OLED-V1 y UNI_EXT01-V2.
3.2. Sensores
El sistema que se montará para adquirir parámetros ambientales consta de cuatro sensores: Tempe-
ratura, Humedad, Luminosidad y Presencia. Cada uno tendrá unas características de entrada y salida
y necesidades de alimentación diferentes. En este apartado se explican esas características y se muestra
la manera buscada para adaptarlas a las características del Microcontrolador XMC4500 y del Hexagon
Application Kit.
Tanto la alimentación de 5V como la de 24V necesarias se obtendrán de las salidas que proporciona la
placa satélite Automation I/O Card tal y como se indicó en el Apartado 2.4.1.
Teniendo en cuenta la resolución del ADC de 12 bits se obtiene la recta de ajuste de la Ecuación 1,
necesaria para la representación de la temperatura mediante software.
VOU T − offset
T= (1)
sensibilidad
Donde:
4095
offset = · 500 (2)
3300
4095
sensibilidad = · 10 (3)
3300
El esquema completo se muestra en la Páginra 27.
23
3.2.2. Sensor de Humedad (808H5V5)
El sensor de humedad 808H5V5 [18] es un sensor analógico capacitivo que proporciona un valor de
voltaje de salida proporcional a la humedad relativa del ambiente ( %RH) en la atmósfera.
Este sensor se alimenta con una tensión de 5V y la salida a 25o C se encuentra entre 0.8V y 3.9V para
valores de humedad relativa del 0 % y 100 % respectivamente. Introduce un error inferior a ±6 %RH en el
rango completo de salida, mientras que este se reduce a menos de ±4 %RH entre 30 %RH y 80 %RH a 25o C .
Al ser la humedad un parámetro dependiente de la temperatura ambiental, la recta de ajuste del voltaje
de salida frente a la humedad relativa varía si existe un cambio en la temperatura. Para una medida más
exacta, el fabricante aporta la Ecuación 4 para el voltaje de salida con compensación de la temperatura:
VOU T (T, %RH, VOU T ) = (5 · 10−5 · %RH − 0.0036)T − 0.0013 · %RH + 0.0925 + VOU T (4)
La cual, teniendo en cuenta que la compensación a 25o C para 50 %RH es 0, se puede reducir a la Ecuación
5 donde la tensión de salida solo depende de la humedad relativa y la tensión de alimentación:
VOU T ( %RH, VIN ) = (0.0157 · VIN − 0.0475) %RH − 0.6536 · VIN + 4.068 (5)
Esta adaptación supone un cambio en la Ecuación 5, ya que toda la expresión de VOU T queda multi-
plicada por R2R+R
2
1
= 212
257 obtenido previamente de forma experimental. La expresión final a partir de la
cual se extraerá el valor de la humedad relativa se muestra en la Ecuación 6.
257
VOU T · + 0.6536 · VIN − 4.068
%RH = 212 (6)
0.0157 · VIN − 0.0475
Al igual que para la temperatura es necesario adaptar esta expresión a los 12 bits de resolución del
conversor para poder calcular mediante software la humedad relativa, esta adaptación de la Ecuación 6 se
muestra en la Ecuación 7:
3300 257
· VOU Tdigital · + 0.6536 · VIN − 4.068
%RH = 4095 212 (7)
0.0157 · VIN − 0.0475
Donde VIN debe estar expresado en mV. El esquema de esta adaptación se muestra en la Página 27.
24
esta medida sea ajustable, la carga sobre la que se medirá la caída de tensión está constituida por un
potenciómetro (Rn =103.7kΩ) tal y como se muestra en la Página 27. Realizando los cálculos del voltaje
de salida que se medirá en la carga obtenemos los siguiente:
Rb Rb
VOU T = VIN · = VIN · (8)
Rb + RLDR + Ra 100 + RLDR
Donde Rb es la resistencia de carga que variará según cómo se encuentre el cursor del potenciómetro, RLDR
es la resistencia del sensor de luminosidad en un momento determinado y Ra es la resistencia que queda
entre el cursor y el terminal opuesto al de Rb .
Se puede observar que la relación entre la salida en voltaje y la resistencia marcada por el potenció-
metro es lineal, por ello, ya sea cuando RLDR es máxima (20MΩ) o mínima (∼5kΩ) la diferencia entre el
voltaje máximo y mínimo (rango de salida) que se puede obtener será mayor cuanto mayor sea Rb . Por es-
ta razón se ha fijado el valor del potenciómetro al máximo que puede ofrecer, su valor nominal Rn =103.7kΩ.
Por otra parte, y de nuevo para no saturar el conversor con más de 3.3V, se reducirá la tensión que
entra al LDR. Para aprovechar al máximo la resolución del ADC se ha colocado un potenciómetro a la
entrada del LDR (Página 27), y se ha ajustado incidiendo el máximo de luz posible sobre el sensor para
que a la entrada del ADC se disponga de 3.3V cuando el sensor está saturado. De esta forma, se ha medido
que la tensión con la que se alimenta el LDR es 3.7V.
El circuito optoacoplador 4N25 [19] de la Página 27 se utiliza para aislar las dos alimentaciones y tierras
de mayor y menor voltaje, evitando así cualquier interferencia o lazo de tierra que pudiera introducirse,
bien en cualquiera de las placas o bien en el propio microcontrolador pudiendo producir una sobretensión
y causando un mal funcionamiento del equipo.
Para poder obtener en la salida el voltaje deseado hay que tener en cuenta la impedancia de entrada
que presentan las entradas digitales de la placa, ya que estas se colocarán en serie con la resistencia que de
colector del fototransistor en el optoacoplador; el esquemático de estas entradas puede verse en la Figura
3.1. Por esta razón se realizó la medida experimental de la impedancia de entrada dando un resultado
de 9.23kΩ, por lo que la resistencia de colector ha de ser inferior a 9.23kΩ si se quiere tener un voltaje
superior a la mitad de la alimentación de 24V.
25
Figura 3.1: Esquemático de las entradas digitales de la placa AUT_ISO-V1 [9].
Por otra parte, con el objetivo de no someter al sensor PIR a una corriente excesiva se coloca en el pin
2 del optoacoplador una resistencia de 1.5kΩ. Esto supone que el diodo emisor de luz no funcione al 100 %
de su capacidad, resultando en que el fototransistor no trabaje en la zona de saturación cuando la salida
del sensor está en 5V. Al no trabajar en saturación, es necesario añadir a los cálculos una resistencia en
paralelo a la impedancia de entrada calculada anteriormente, que resulta ser lo suficientemente alta como
para perturbar la medida y que se obtenga un voltaje mayor que 12V, lo cual para este sistema equivale
a un 1 digital en lugar del 0 que se busca.
Para solucionar este problema, se ha colocado un potenciómetro en serie con la resistencia de colector
de 1kΩ como se muestra en la Página 27 y se ha ajustado para que la resistencia en serie de ambos sea
mayor que el paralelo de las otras dos. La medida experimental de esta resistencia mostró un valor de 3kΩ.
RS ∈ (3, 9.23)kΩ
26
27
3.3. Adquisición de datos digitales
Para poder adquirir los datos del sensor digital es necesario conocer las características de las entradas
digitales de la placa, que como ya se mencionó en anteriormente (Apartado 2.4.1) permiten un rango de
voltaje de entrada de 12V a 24V, considerando cualquier valor inferior a 12V un 0 lógico. Para que el
sistema ISOFACE pueda funcionar es necesario alimentar con 24V la última de las entradas digitales que
se muestran en la Figura 2.3. Este voltaje se puede obtener de la última salida digital que aporta una
salida constante de 24V, siempre y cuando la placa se encuentre alimentada por el Jack del que dispone.
Por otra parte, para poder realizar la adquisición y tratamiento de datos a través del Software es
necesario conocer el funcionamiento de la interfaz de estas entradas con el XMC4500, es decir, el Canal
Serie Síncrono o SSC (Serial Sincrhonous Channel ).
3.3.1.1 Funcionamiento
El SPI (Serial Peripheral Interface) es uno de los protocolos configurables para los canales del módulo
USIC. La APP de DAVE APP SPI_MASTER [6] permite configurar las principales características de
los modos de funcionamiento de este canal, que se muestran a continuación:
1. Tasa de baudios para la comunicación: Desde 0.1 hasta 60000kHz es posible seleccionar la velocidad
de transmisión de baudios.
2. Modo de transferencia de datos: El modo de operación del maestro SPI es seleccionable entre cuatro
posibles (Figura 3.2):
Standard Full Duplex: En este modo la APP utiliza dos pines diferentes para la transmisión
(MISO) y la recepción (MOSI), permitiendo la comunicación bidireccional paralela.
Standard Half Duplex: Únicamente se permite la configuración del pin MISO.
Dual SPI: Se utilizan 2 pines para establecer una conexión Half Duplex.
Quad SPI: En este caso se utilizan 4 pines para establecer una conexión Half Duplex.
28
4. Soporte para la conexión de diferentes esclavos: Existe la posibilidad de elegir hasta 8 lineas de se-
lección de esclavo.
5. Dirección de la transmisión: Existe la posibilidad de elegir el orden de los bits transmitidos o recibidos
entre la transmisión/recepción, primero MSB o primero LSB.
6. Configuración de la longitud de Frame y Word : La longitud del Frame (FLE) es seleccionable desde
1 hasta 64. Si FLE es inferior a 64 se genera la señal de selección de esclavo o chip select (CS)
automáticamente con el primer bit de la trama y se desactiva con el final del último bit transmitido
incluyendo el delay. Si FLE es 64, el usuario deberá aportar la información de comienzo y final de
una trama. Para este proceso es necesario trabajar a nivel de registro con los bits SOF y EOF. En
cuanto a la longitud de Word, es posible seleccionar desde 1 a 16 los bits transmitidos o recibidos
como un solo Word.
7. Ajustes de delay e inversión de polaridad del clock para diferentes rangos de esclavos: Define los ajus-
tes del nivel pasivo de clock y el flanco para el cual tiene que llevarse a cabo la transmisión de los
datos. Hay cuatro combinaciones posibles, dos para el nivel de clock bajo cuando la transmisión está
en estado pasivo o inactivo, y dos para cuando ese nivel de clock está en alto, que se muestran en la
Figura 3.3. En cuanto al delay, es posible configurar dos tipos diferentes de delay en µs o en ciclos
de reloj.
Figura 3.3: Configuraciones disponibles del clock para la transferencia de datos [6].
8. Cola FIFO con tamaño variable para transmisión y recepción: El usuario puede activar y desactivar
estas colas y determinar su tamaño en numero de Words que pueden contener, desde un mínimo de
2 hasta un máximo de 32.
9. Selección del modo Parity Mode para la validación de los datos: Consiste en añadir un bit a final de
cada Frame y puede ser configurado para que marque una trama par o impar.
10. Mecanismo de callback para gestionar los errores de Paridad, Transmisión y Recepción: Existe la po-
sibilidad de habilitar/deshabilitar tres funciones callback para su ejecución cuando se den interrup-
ciones de tipo: Fin de Transmisión, Fin de Transferencia/Recepción y Error de Paridad. La primera
de ellas indica que todos los datos en el buffer de usuario han sido colocados en el buffer de trans-
misión, la segunda sí garantiza que los datos han sido recibidos o enviados, y la última se ejecuta
cuando la paridad de los datos no coincide con el bit extra de paridad. Es posible seleccionar un nivel
de prioridad entre 0 y 63.
29
3.3.1.2 Configuración del SSC mediante la GUI de DAVE
En primer lugar, hay que configurar la APP que permitirá utilizar el bus SPI para interaccionar tanto
con las entradas digitales como con la pantalla. Es por esta razón por lo que es imprescindible seleccio-
nar dos lineas de selección de esclavo y asignarles los pines correspondientes del Microcontrolador a cada
una de ellas. Todas las pestañas de configuración de los parámetros explicados anteriormente se muestran
en la Figura 3.4 y la configuración de los pines para entrada (MOSI) y salida (MISO) de datos, clock
(SCLKOUT) y chip select (CS) en la Figura 3.5. Cabe recordar que con el fin de poder controlar el mayor
número de periféricos posibles a través del bus SPI con la menor asignación de pines del XMC4500 posible,
el único pin que es particular de cada periférico es el chip select.
Figura 3.4: Interfaz gráfica para las configuraciones de la interfaz SPI realizada en este proyecto.
Figura 3.5: Asignación de pines para la interfaz SPI realizada en este proyecto.
La comunicación de ambos dispositivos se realiza en Full Duplex, y como en este caso no se va a traba-
jar con interrupciones, no hay que inicializar ningún callback. La segunda de las opciones resaltada en la
Figura 3.4, se corresponde con el orden de los bits, que por defecto es MSB, y con los ajustes de clock. El
primer ajuste se quedará invariable, sin embargo, el segundo se deberá modificar por software, pues la re-
cepción y transmisión, o dicho de otra forma la lectura y escritura, se hacen con los ajustes de clock inversos.
30
En ambos se mantiene que la transmisión (Tx) se realiza en el flanco descendiente y la recepción (Rx)
en el flanco ascendiente, sin embargo, se trabaja con el nivel pasivo en alto cuando se leen los datos digitales
en las entradas, y con el nivel pasivo en bajo cuando se escriben datos en la pantalla. Es decir, nada más
se establece la conexión, en el caso de las entradas digitales la primera acción será Tx, y en la pantalla por
el contrario, ejecutará Rx. (Figura 3.6)
Figura 3.6: Transmisión y recepción de datos para diferentes referencias en el nivel inactivo del clock.
Figura 3.7: Diagrama de flujo de la rutina implementada para la lectura de datos digitales [CapturaDatos()].
Para el almacenamiento de los datos obtenidos se crea una estructura, cuyos elementos principales son
el valor digital actual y el conteo total de transiciones de detección a no detección, que para esta configu-
ración de entrada es el paso de un 1 digital a un 0.
El objetivo de guardar estos valores en la estructura es poder mostrar por pantalla el estado actual
del sensor y el cambio de un estado a otro además de el número de veces que ha ocurrido este cambio. La
utilización de los miembros de la estructura para la representación y el propio software de representación
se explicará en la sección de visualización de los datos (Apartado 3.6).
31
a esta petición de muestreo pueden ser de cualquier módulo de los cuatro disponibles, siempre y
cuando estén asociados correctamente con el pin correspondiente de entrada al Microcontrolador. Se
realizará la conversión en todos los canales asignados siguiendo un orden fijo y lineal, desde el canal
más alto (7) del grupo más alto (3) hasta el canal más bajo (0) del grupo más bajo (0). Se puede
observar un ejemplo de este orden en la Figura 3.8.
Figura 3.8: Ejemplo del orden muestreo de canales seguido por el ADC [6].
2. Modo de inicio de la medida: Para poder comenzar una conversión la APP proporciona cuatro op-
ciones:
Modo de Único Disparo por Trigger de Hardware
Modo Continuo por Trigger de Hardware
Modo de Único Disparo por Trigger de Software
Modo Continuo por Trigger de Software
Los modos de comienzo por Software necesitan la API ADC_MEASUREMENT_StartConversion()
para que empiece la conversión en los canales asignados. También puede ser disparado por Software
el comienzo seleccionando la opción «Start conversion after initialization» (Comenzar la conversión
tras inicializar) en los ajustes generales de la APP.
Los modos de comienzo por Hardware necesitan una señal de trigger externo para empezar las con-
versiones en los canales asignados. Este modo puede habilitarse desde los ajustes generales de la APP
fijando el campo «Trigger Edge Selection» (Selección de Flanco del Trigger) a una de las opciones
Rising/Falling/Both edges (Ascendente/Descendiente/Ambos flancos). Existe la posibilidad de que
la señal venga de otras APPs como la de PWM.
Con ambos modos se puede configurar el ADC para que muestree las entradas de forma repetida
habilitando la opción «Enable continuous conversion». Si el modo seleccionado es el de Único Disparo,
la siguiente conversión (o secuencia de conversiones) deberá ser disparada de nuevo, ya sea mediante
Hardware o Software. En la Figura 3.9 se muestran gráficamente los cuatro modos de inicio de
conversión.
32
Figura 3.9: Modos de conversión para el ADC disponibles [6].
3. Notificaciones de Interrupción: Si están activadas, se genera una interrupción después de que se haya
completado la medida de todos los canales una sola vez, es decir, tras una secuencia de conversiones.
Las interrupciones se habilitan en la pestaña «Interrupt Settings». Además, de forma adicional es
posible activar las interrupciones de resultado que se generan después de una medida en cada canal.
Esta opción se activa habilitando la opción «Result event» en los ajustes. El sistema de interrupciones
puede observarse de forma gráfica en la Figura 3.10.
33
Figura 3.11: Interfaz gráfica para las configuraciones del ADC realizada en este proyecto.
Por otra parte, los pines a los que se han conectado físicamente los sensores hay que configuralos como
pines de entrada (Figura 3.12).
Figura 3.12: Asignación de pines para los diferentes sensores conectados al ADC realizada en este proyecto.
34
Figura 3.13: Montaje completo del sistema de adquisición de datos.
En segundo lugar, se implementa una cola circular, a la cual se le añade un valor cada vez que se
hace la media del conjunto de valores instantáneos. Esta cola se implementa con el objetivo de po-
der representar en una gráfica los valores que se han ido obteniendo en forma de histórico de medidas.
Por último, cada vez que se extrae una temperatura media, se compara con los valores máximo y
mínimo almacenados previamente para poder mostrar los extremos medidos por el sensor posterior-
mente.
Sensor de Humedad: La estructura y el almacenamiento de datos del sensor de Humedad es análogo
al del sensor de Temperatura, ya que se quieren realizar las mismas representaciones por pantalla. La
única diferencia es el tratamiento de datos, ya que para guardar la humedad relativa hay que utilizar
la Ecuación 7.
Sensor de Luminosidad: Las especificaciones de este sensor no recomiendan su uso para realizar una
medida exacta de los lux del ambiente por lo que se utilizará este sensor para mostrar por pantalla
el nivel relativo de luminosidad respecto a un punto fijado por el usuario. Para esto se ha optado por
realizar un proceso de calibración en un punto que el usuario pueda seleccionar como luminosidad
máxima o mínima.
Los datos que se necesitan almacenar en la estructura en este caso son el valor analógico de los voltios
de entrada (Ecuación 9) y de nuevo, con el objetivo de realizar una representación gráfica con las
menores oscilaciones posibles, se recogerán varios valores instantáneos y se trabajará con la media
de estos.
Todas las funciones gráficas necesarias para la representación en diferentes formatos de los datos se explican
en el Apartado 3.6.
35
3.5. Interfaz de Usuario
Como se verá en el apartado siguiente, el usuario puede elegir entre las diferentes representaciones de
datos mediante un sistema de Menús y SubMenús que se ha desarrollado. En este apartado se describen
los elementos de la placa HMI_OLED-V1 y CPU_45A-V3 que se utilizarán para realizar esta selección y nave-
gación por los Menús.
En particular, para poder avanzar y retroceder hacia los diferentes Menús y SubMenús se hará uso de
los botones táctiles integrados en las placa HMI_OLED-V1 del Hexagon Application Kit, mientras que para
seleccionar una u otra opción, se utilizará el Potenciómetro integrado en la CPU_45A-V3. A continuación
se describe el funcionamiento y configuración dada para ambos en este proyecto.
Figura 3.14: Ilustración de la configuración y modos de control de los LEDs y almohadillas táctiles [6].
El único paso a realizar para poder acceder a los datos medidos por los botones, es registrar una función
callback que nos permita recoger los datos cuando se produzca una interrupción por detección de toque.
Durante la ejecución del código de gestión de esta interrupción hay que acceder a los miembros de la
estructura de datos donde se guardan, tanto el número de botón que se ha pulsado como el estado de esa
pulsación. Solo se almacenará el dato del número del botón pulsado si el estado de la pulsación es válido.
36
movimiento del potenciómetro.
Cuando se detecta una pulsación en el botón T1 la función devuelve una variable (P_ESCAPE) que se
interpretará como la acción Volver al anterior menú. Si se detecta una pulsación en T2 se interpreta como
la acción Avanzar al siguiente menú (P_ENTER).
En cuanto al movimiento del potenciómetro, la función devuelve la variable asociada al movimiento relativo
del mismo. P_UP si ha aumentado y P_DOWN si ha disminuido. Cuando no ocurre nada, la función
devolverá P_IDLE.
Relacionado con la representación, es necesario indicar que la pantalla tiene una dimensión de 160
píxels de ancho por 128 píxels de alto, y que los ejes de coordenadas de píxels son positivos hacia abajo
con el origen de coordenadas en la esquina superior izquierda.
Todas las APIs para la escritura y dibujo están proporcionadas por la empresa Segger [17] y son exter-
nas al resto de APIs que proporciona Infineon, es por ello que hay que incluirlas en proyecto y enrutarlas
para el Debugger.
Figura 3.15: Ilustración del salto entre SubMenús y Opciones y representación cíclica de los mismos.
37
Los miembros más importantes de la estructuras de Menú y Opción, para poder presentar los datos
por pantalla y para poder acceder a Submenús más profundos se muestran a continuación:
MENU_t OPCION_t
/*Punteros a las opciones del menú*/ /*SubMenú dependiente de la opción*/
*Opciones[ ] *SbMenu
/*Señala la opción activa*/ /*Función con argumento void*/
OpcionActual (*fOpcion)(void *datos)
/*Indica si es el menú principal*/ /*Parámetros para la función*/
PrimerMenu *Parametros
/*Flag para borrar la pantalla*/ /*Flag para borrar la pantalla*/
Resfresh Refresh
/*Título del Menú*/ /*Título de la opción*/
*Titulo *Título
/*No opciones disponibles*/ /*Coordenadas de representación*/
numeroOpciones (X,Y)
Dentro de la estructura Opción, hay un elemento que es un puntero a una función. Esta función se
implementa para que realice la representación adecuada y cada opción tiene la suya. Solo se implementan
funciones para las opciones de los Submenús que vayan a mostrar un resultado por pantalla. La distribución
de Menús y SubMenús del programa con sus diferentes opciones de forma jerárquica es la siguiente:
Menú Principal
Opción Temperatura:
• SubMenú Temperatura
◦ Opción Valor Actual
◦ Opción Valores Máximo y Mínimo
◦ Opción Representación Gráfica
Opción Humedad:
• SubMenú Humedad
◦ Opción Valor Actual
◦ Opción Valores Máximo y Mínimo
◦ Opción Representación Gráfica
Opción Luminosidad:
• SubMenú Luminosidad
◦ Opción Calibrar
SubMenú Calibrar
- Opción Calibrar como punto más oscuro
- Opción Calibrar como punto más claro
◦ Opción Representación Gráfica
Opción Presencia:
• SubMenú Presencia
◦ Opción Valor Actual
◦ Opción Valor Total
Cada una de estas será una estructura del tipo que le corresponda y guardará en el miembro corres-
pondiente punteros a la(s) estructura(s) subyacente(s).
La función para representar se llama de forma recursiva según se avanza hacía submenús mas profundos,
la forma esquemática de funcionamiento de esta función se muestra en la Figura 3.16. Esta función tiene
38
dos argumentos de entrada: la función para capturar los datos (Figura 3.7, ya que para adquirir los datos
analógicos la conversión se realiza en segundo plano hasta que salta la interrupción) y el puntero del Menu
Principal. Esta es la única función presente en el main del programa (además de las de inicialización de
las APPs), que es desde donde se le llama. Al ejecutarse en un ciclo infinito conseguimos que el programa
esté en funcionamiento bien hasta que se reinicie, o bien hasta que se desconecte el Microcontrolador de
la alimentación.
Figura 3.16: Diagrama de flujo de la rutina encargada de la representación por pantalla de los Menús y
Opciones [Menu()].
Por otra parte, la función MuestraPantalla se encarga de que se ejecute la función asociada a cada
opción que esta guardada en la estructura, el diagrama de flujo de dicha función se muestra en la Figura
3.17. Cada vez que se llama a esta función se devuelve el valor de los botones, para dar la posibilidad de
retornar al Menú anterior desde ahí.
Figura 3.17: Diagrama de flujo de la rutina encargada de que se ejecuten las funciones asociadas a las
Opciones [MuestraPantalla()].
A partir del Menú Principal, cuyo aspecto en el display de la plataforma se muestra en la Figura 3.18,
se puede seleccionar uno de los cuatro sensores disponibles. A partir de ahí, se mostrará otro Menú que
permitirá elegir los datos que se quieren representar por pantalla. A continuación se muestra el proceso de
39
representado de estos valores y el resultado final sobre la plataforma.
Figura 3.20: Diagrama de flujo de la rutina implementada para la Opción Valor Actual.
40
Figura 3.21: Representación de la opción Valor Actual para Temperatura (izq.) y Humedad (dcha.)
Figura 3.22: Representación de la opción Extremos para Temperatura (izq.) y Humedad (dcha.)
Como la cola guarda los valores en grados, hay que traducirlos a píxels. Para ello se ha realizado una
función que utiliza una regresión lineal y extrapola los píxels asignados a dicha temperatura. Se han asig-
nado valores fijos a los extremos de la pantalla, en concreto 24o C y 32o C para la temperatura y 74 %RH y
90 %RH para la humedad, que se encuentran en el rango que se quiere medir. El programa está preparado
para que el reescalado sea automático si se cambian estos límites. Para facilitar la visualización se han
dibujado también unas lineas indicando los valores máximo y mínimo medido durante el transcurso del
programa.
Una vez se ha llenado el display con la representación gráfica se borra la pantalla hasta el nivel del
título y siempre que tengamos un nuevo valor en la cola se vuelve a representar. Este proceso se ha seguido
con la intención de tener un histórico de valores que se va a actualizando con los valores actuales, y de
observar las variaciones en el rango seleccionado. El resultado de esta representación gráfica se muestra en
la Figura 3.23.
41
Figura 3.23: Representación de la opción Gráfica para Temperatura (izq.) y Humedad (dcha.)
3.6.3.1 Calibrado
Una vez se selecciona esta opción aparece en pantalla el SubMenú asociado a ella, que se muestra en
la Figura 3.24. Aquí es posible realizar una calibración ajustada al punto estándar de luminosidad que se
quiera medir. El programa guardará los datos de voltaje necesarios dependiendo de la opción elegida, para
realizar una representación por pantalla acorde con ella. Las etapas seguidas para realizar esa calibración
son las siguientes:
1. Se muestra por pantalla un SubMenú (Figura 3.24) para que el usuario decida si quiere que el nivel
actual de luminosidad del ambiente se establezca como el máximo o como el mínimo que se va a
detectar, es decir, si el sensor se encuentra en el punto más claro o más oscuro respectivamente.
Figura 3.24: Vista del SubMenú de Luminosidad (izq.) y del SubMenú Calibrado (dcha.).
Si se ha seleccionado el punto más oscuro, el sistema mostrará una señal de advertencia como la de
la Figura 3.25(izq.) si el voltaje que se está midiendo es superior al que obtenemos para 20kΩ, que
es el máximo valor del rango que aporta el fabricante para el sensor en máxima luminosidad.
Si se ha seleccionado el punto más claro, el sistema mostrará una señal de advertencia como la de
la Figura 3.25(dcha.) si la diferencia entre el voltaje que está midiendo y el que proporcionaría el
sensor para máxima oscuridad no supera los 0.515625V.
42
Figura 3.25: Señal de advertencia para valores fuera de rango en el punto más oscuro (izq.) y en el punto
más claro (dcha.).
Si se ha seleccionado el punto más oscuro para la calibración, se guardará como voltaje máximo el
que se calcula que se obtendrá para máxima luminosidad (RLDR =5kΩ) y como voltaje mínimo el
que se ha medido durante la calibración.
Si se ha seleccionado el punto más claro para la calibración, se guardará como voltaje máximo el que
se ha medido durante la calibración y como voltaje mínimo el que se calcula que se obtendrá para
mínima luminosidad (RLDR =20MΩ).
Una vez finalizado este proceso la función devuelve el valor P_SCAPE, por lo que se retornará directamente
al Menú de Opciones (Figura 3.24).
3.6.3.2 Representación
En esta opción se representará en forma de barras el aumento o disminución de la luminosidad en
función del punto estándar que se haya escogido previamente. Si se ha elegido el estándar como punto más
claro, según se reduzca la luminosidad disminuirá el número de barras desde 10 hasta 0; y si se ha elegido
el punto más oscuro las barras aumentarán desde 0 hasta un máximo de 10. Se le han añadido diferentes
colores a la representación para facilitar su visualización.
Para poder hacer este tipo de representación se utiliza el valor entero de la Ecuación 10 para calcular
el número de barras que hay que dibujar por pantalla. El resultado final se muestra en la Figura 3.26.
Vmaximo − Vactual
no barras = 10 − · 10 (10)
Vmaximo − Vminimo
Figura 3.26: Representación de la escala de Luminosidad para tres valores diferentes. De izq. a dcha. valores
ascendentes de Luminosidad.
43
3.6.4.1 Valor Actual
En este caso, dentro de la estructura de datos se ha guardado un array con los colores que se utilizarán
para representar los estados de presencia y no presencia, a los cuales se accederá utilizando como índice el
valor digital registrado. La función de la librería Segger que se utilizará será GUI_DrawFillCircle cuyos
argumentos son de entrada son las coordenadas (X,Y) y el radio del círculo. Para establecer el color, antes
de dibujar el círculo es necesario utilizar GUI_SetColor pasando como argumento el color que se quiere
que tenga el círculo. El resultado de esta representación puede verse en la Figura 3.27.
Figura 3.27: Vista del SubMenú Luminosidad (sup. izq.). Representaciones de la opción Valor Total (sup.
dcha.) y opción Valor Actual cuando no hay detección (inf. izq.) y cuando sí hay detección (inf. dcha.).
44
Figura 3.29: Estructura general de archivos del proyecto en el entorno DAVE.
Donde «Pantalla.c» y «Pantalla.h» son los archivos donde se han definido las funciones para almacenar,
tratar y representar los datos. En la carpeta Touch_sense se almacena el código que ha sido necesario añadir
para solucionar la falta de soporte del módulo LEDTS en el cambio de una versión a otra de DAVE. El
resto de archivos son generados por el DAVE a través de las configuraciones que previamente se le indican
y archivos para la depuración, también generados automáticamente. El tamaño total del programa es de
450KB.
45
4. Conclusiones
Tras el desarrollo de este trabajo, que ha consistido en el estudio de la arquitectura y las características
principales de un microcontrolador actual y de su entorno de desarrollo de Software para la implementación
de un sistema de adquisición de datos; se han podido extraer las siguientes conclusiones:
Durante el transcurso del trabajo se han ido completando varias fases de aprendizaje que se pueden
resumir como sigue:
1. Estudio de la arquitectura del Microcontrolador, profundizando en aquellos aspectos que resultan de
especial interés para el desarrollo de este proyecto.
2. Conocimiento de las características físicas del Kit de Desarrollo de Hardware en el que va integrado el
Microcontrolador y planificación de los recursos necesarios para este proyecto, intentando aprovechar
al máximo las características que ofrece.
3. Familiarización con el Entorno de Desarrollo de Software creado específicamente para la programación
de microcontroladores de esta familia.
4. Aprendizaje de las estructuras básicas del lenguaje C para el desarrollo de la aplicación con esta
plataforma.
5. Diseño e implementación de una red de sensores con la adaptación necesaria a las características del
Microcontrolador.
Por otra parte, se ha abordado el diseño de rutinas y funciones de bajo nivel para la adquisición, al-
macenamiento y tratamiento de los datos, y utilizado librerías externas para su representación por pantalla.
Se ha abordado también la solución de problemas de distinta índole que fueron surgiendo durante el
transcurso del proyecto. Desde problemas de diseño e implementación del programa hasta problemas deri-
vados del Hardware del sistema que tuvieron que ser solucionados a través de la depuración de la ejecución
del programa a nivel de registros, del análisis de otros ejemplos y de la búsqueda en manuales y material
de ayuda.
De la misma forma, se han solucionado los problemas surgidos a raíz del cambio de versión de la pla-
taforma DAVE para la aplicación de control de los botones táctiles. La falta de soporte de este periférico
para la nueva versión se ha solucionado adaptando el código implementado en la versión anterior de DAVE.
Se ha podido observar una ausencia de ejemplos por parte de los desarrolladores de Infineon para la
ayuda a la compresión del funcionamiento de ciertas APPs, para ser este un sistema diferente de progra-
mación, con mucha generación de código automática. En sí, esta forma de unión de APPs supone una
forma muy interesante para la configuración de las múltiples funcionalidades del Microcontrolador, pero
puede llegar a resultar algo hermético si se quiere modificar desde el programa esta configuración.
También, observando los resultados obtenidos, se han visto posibles puntos de mejora para este sistema:
Existe la posibilidad de realizar conversiones analógico-digital con un control mayor sobre el tiempo,
para poder dibujar representaciones gráficas con una relación temporal exacta.
El trabajo realizado con el sensor de luminosidad queda distorsionado por el ruido e interferencias
que se introducen. Con una configuración de menor ruido o un sensor de mayor precisión sería posible
realizar medidas más significativas de luminosidad.
Por último, se puede intuir que este es un dispositivo que tiene un gran potencial para desarrollar aplica-
ciones complejas debido a sus numerosos periféricos que integra y a las múltiples opciones de configuración
que estos ofrecen.
46
5. Referencias
[1] List of common microcontrollers. [Online]. Available: https://en.wikipedia.org/wiki/List_of_
common_microcontrollers#Hyperstone
[9] AutoManual I/O Card: Board User’s Manual, Infineon Technologies AG, Febrero 2012.
[10] Ethernet/CAN/RS485: Board User’s Manual, Infineon Technologies AG, Febrero 2012.
[11] Standard Human Machine Interface Card: Board User’s Manual, Infineon Technologies AG, Febrero
2012.
[12] CPU Board XMC4500 General Purpose: Board User’s Manual, Infineon Technologies AG, Octubre
2014.
[13] XMC4500. Microcontroller Series for Industrial Applications. XMC4000 family., Infineon Technologies
AG, Julio 2014.
[14] I. A. M. José María Angulo Usategui, Microcontroladores PIC. Diseño práctico de aplicaciones. Mc
Graw Hill, 2003.
[15] Events 2.0. Technical Guide., Libellium Comunicaciones Distribuidas S.L.
[16] PIR sensor (555-28027), Parallax Inc., hoja de características.
[17] emWin: Graphic Library with Graphical User Interface, SEGGER Microcontroller GmbH and Co.
KG, Octubre 2015.
[18] 808H5V5 Humidity Transmitter, Sencera Co., hoja de características.
[19] Optocoupler, Phototransistor Output, with Base Connection, Vishay Semiconductors.
47