ÍNDICE GENERAL MEMORIA

MEMORIA Memoria. Índice general memoria ÍNDICE GENERAL MEMORIA Parte I Memoria descriptiva ......................................................

1 downloads 65 Views 4MB Size

Story Transcript

MEMORIA

Memoria. Índice general memoria

ÍNDICE GENERAL MEMORIA

Parte I

Memoria descriptiva ........................................................................8

Prólogo ...................................................................................................................9 Capítulo 1

Introducción ................................................................................11

1

Estado del arte .................................................................................................. 11

2

Motivación del proyecto................................................................................. 14

3

Objetivos ........................................................................................................... 16

4

Metodología / Solución desarrollada ........................................................... 17

5

Recursos / herramientas empleadas ............................................................. 20 5.1 Recursos humanos........................................................................................................ 20 5.2 Instrumentos de trabajo ............................................................................................... 20 5.3 Hardware del dispositivo.............................................................................................. 20 5.4 Software del dispositivo................................................................................................ 21

Capítulo 2

Tecnologías asociadas ...............................................................22

1

Módulo transmisor de radio TRF-2.4G........................................................ 22

2

Microcontrolador (ATmega8535) .................................................................. 24

3

SPI (Serial Peripheral Interface) .................................................................... 26

4

UART (Universal Asynchronous Receiver Trasnmitter)............................ 27

5

ADC (Analog-to-Digital Converter)............................................................. 27

Capítulo 3

Arquitectura de Hardware ........................................................31

1

Microcontrolador ATmega8535..................................................................... 31

2

Programación del microcontrolador. Adaptador ISP................................ 33

3

Conector UART-RS232 ................................................................................... 36

2

Memoria. Índice general memoria

4

Módulos de emisión y recepción .................................................................. 38 4.1 Hardware común del módulo emisor y receptor..................................................... 41 4.1.1 Diodos led de estado y control............................................................................ 41 4.1.2 Circuito de reloj..................................................................................................... 41 4.1.3 Circuito de reset .................................................................................................... 42 4.1.4 Circuito de alimentación...................................................................................... 42 4.1.5 Conexionado del TRF-2.4G.................................................................................. 43 4.1.6 Conectores para el programador y el depurador ............................................. 44 4.2 Hardware específico del módulo emisor .................................................................. 45 4.2.1 Convertidor Analógico-Digital ........................................................................... 45 4.2.2 Entradas de señales analógicas ........................................................................... 46 4.2.3 Implantación del módulo emisor ....................................................................... 47 4.3 Hardware específico del módulo receptor................................................................ 47 4.3.1 Salidas de señales digitales.................................................................................. 47 4.3.2 Pulsador de conmutación de salida ................................................................... 48 4.3.3 Implantación del módulo receptor ..................................................................... 48

5

Alimentación .................................................................................................... 49

Capítulo 4

Arquitectura de Software ..........................................................50

1

Objetivos generales del código de programación ..................................... 51

2

Inicializaciones................................................................................................. 53 2.1 Puertos ........................................................................................................................... 53 2.2 Timers.............................................................................................................................. 55 2.3 ADC................................................................................................................................ 56 2.4 SPI ................................................................................................................................... 57 2.5 UART.............................................................................................................................. 57 2.6 TRF-2.4G ........................................................................................................................ 57

3

Software para la gestión del TRF-2.4G ........................................................ 58

4

Software para la gestión del puerto de comunicaciones UART.............. 58

5

Mecanismos de control ................................................................................... 59

6

Estructura del módulo de emisión................................................................ 61

7

Estructura del módulo de recepción............................................................. 65

Capítulo 5

Resultados y Experimentos.......................................................74

3

Memoria. Índice general memoria

1

Descripción del dispositivo desarrollado ................................................... 74

2

Pruebas realizadas ........................................................................................... 77 2.1 Descripción .................................................................................................................... 78 2.1.1 Prueba de sincronismo......................................................................................... 78 2.1.2 Prueba de distancia............................................................................................... 79 2.2 Resultados ..................................................................................................................... 80 2.2.1 Prueba de sincronismo......................................................................................... 80 2.2.2 Prueba a larga distancia ....................................................................................... 85

Capítulo 6

Conclusiones................................................................................86

Capítulo 7

Futuros desarrollos ....................................................................88

Bibliografía..........................................................................................................90

Parte II

Estudio económico..........................................................................92

Parte III

Anexos ..............................................................................................95

Anexo A

Placa de desarrollo para el micro ATmega8535.........................96

A.1 Introducción ....................................................................................................... 96 A.2 Instrucciones de montaje ................................................................................. 97 A.2.1 Arquitectura de Hardware........................................................................................ 98 A.2.1.1 Adaptador ISP................................................................................................... 98 A.2.1.2 Placa de desarrollo.......................................................................................... 100 A.2.1.2.1 Microcontrolador con periféricos ......................................................... 100 A.2.1.2.2 Circuito de reset ...................................................................................... 101 A.2.1.2.3 Circuito de alimentación ........................................................................ 102 A.2.2 Arquitectura de Software........................................................................................ 103 A.2.2.1 Requisitos del sistema .................................................................................... 103 A.2.2.2 Herramientas requeridas ............................................................................... 104 A.2.2.2.1 AVR Studio .............................................................................................. 104 A.2.2.2.2 WinAVR ................................................................................................... 104 A.2.2.2.3 PonyProg.................................................................................................. 105 A.2.2.2.4 Eagle Layout Editor ................................................................................ 105

4

Memoria. Índice general memoria

A.3 Manual de usuario .......................................................................................... 106 A.3.1 Configuración del Software.................................................................................... 106 A.3.2 Carga de programas............................................................................................... 114

A.4 Conclusión........................................................................................................ 116

Anexo B

Código fuente.................................................................................117

B.1 Código fuente del emisor ............................................................................... 117 B.1.1 Envio_senales.c........................................................................................................ 117 B.1.2 Envio_senales.h ....................................................................................................... 120 B.1.3 timer_adc_uart_macros.c ....................................................................................... 122 B.1.4 trf24g.c ...................................................................................................................... 124 B.1.5 trf24g.h...................................................................................................................... 127

B.2 Código fuente del receptor............................................................................. 128 B.2.1 Recibo_senales.c ...................................................................................................... 128 B.2.2 Recibo_senales.h...................................................................................................... 136 B.2.3 timer_uar_macros.c................................................................................................. 137 B.2.4 trf24g.c ...................................................................................................................... 138 B.2.5 trf24g.h...................................................................................................................... 141

Anexo C

Hojas de especificaciones de los componentes.........................143

C.1 Manual de referencia del TRF-2.4G ............................................................. 144 C.1.1 Especificaciones eléctricas ..................................................................................... 144 C.1.2 Información de tiempos ......................................................................................... 145 C.1.3 Configuración del modo ShockBurst ................................................................... 145

C.2 Hoja de características MAX3232.................................................................. 149 C.3 Hoja de características LM3940 ..................................................................... 151 C.4 Hoja de características ATmega8535 ............................................................ 152 C.4.1 Características eléctricas ........................................................................................ 152 C.4.2 16-bit Timer/Counter 1. Registros........................................................................... 154 C.4.3 8-bit Timer/Counter 2. Registros............................................................................. 159 C.4.4 ADC. Resultados de la conversión. Registros..................................................... 161 C.4.5 SPI. Registros ........................................................................................................... 165

Anexo D

Contenidos del CD Adjunto ........................................................167

D.1 Documentación................................................................................................ 167

5

Memoria. Índice general memoria

D.2 Programas ......................................................................................................... 167 D.2.1 Herramientas de desarrollo................................................................................... 167 D.2.2 Software del dispositivo.......................................................................................... 168

Anexo E

Índice de figuras y tablas ............................................................169

E.1 Índice de figuras............................................................................................... 169 E.2 Índice de tablas................................................................................................. 172

Bibliografía Anexos..........................................................................................174

6

Memoria.

7

Memoria descriptiva.

Parte I MEMORIA DESCRIPTIVA

8

Memoria descriptiva. Prólogo

9

PRÓLOGO

En la memoria del proyecto Cable Virtual Vía Radio se describe el desarrollo de un dispositivo que permite enviar de forma inalámbrica señales analógicas entre dos puntos separados una distancia superior a cien metros. El dispositivo está constituido por un elemento emisor y un elemento receptor; ambos portátiles, de peso ligero y tamaño reducido. Cada modulo de comunicación incorpora un micro (ATmega8535), el cual procesa la señal, y un transmisor de radio, que modula y demodula correspondientemente los paquetes de información y los transmite a través del aire. En el emisor se recoge información analógica, se muestrea, y se envía por radiofrecuencia al módulo de recepción. El receptor recupera la información

digital

contenida

en

la

transmisión,

y

la

gestiona

adecuadamente. En esta memoria se recogen todos los aspectos tanto de Hardware como Software sobre los que se ha trabajado para desarrollar un prototipo físico: •

Selección de componentes.



Diseño e implantación de las placas de circuito impreso.



Diseño de los programas empleados en el módulo de emisión y recepción.



Programación de los microcontroladores.



Pruebas del dispositivo

Memoria descriptiva. Prólogo

La aplicación de este proyecto se encuentra en el mundo de la biomedicina y la telemetría. Su incorporación a los equipos de análisis (desarrollados en un proyecto en el que ha colaborado la Universidad Pontificia Comillas) para la medida y el control de la evolución de las constantes vitales de los deportistas durante el entrenamiento, permitirá dotar a estos equipos de movilidad. La evolución del trabajo físico se podrá evaluar en el propio campo de entrenamiento, la pista de atletismo, obteniendo resultados más reales del esfuerzo físico realizado.

10

Memoria descriptiva. Introducción

Capítulo 1 INTRODUCCIÓN

El primer capítulo de esta memoria es una introducción del proyecto Cable Virtual Vía Radio. En primer lugar (Sección 1) se analizan las posibles soluciones existentes para enlaces inalámbricos, discutiendo la viabilidad de adaptar alguna de ellas al proyecto. Posteriormente, en la Sección 2, se exponen los motivos y razones que han influido en la consecución de este proyecto. En el resto de secciones se presentan los objetivos del proyecto (Sección 3), y se hace un análisis superficial de la metodología empleada (Sección 4) y de las herramientas usadas en su desarrollo (Sección 5). En el siguiente capítulo se profundizará en estos dos últimos puntos presentados.

1 Estado del arte En la era del desarrollo de las comunicaciones en la que se encuentra el mundo actual, los enlaces inalámbricos en sustitución de los enlaces por cable han pasado de ser una visión futurista a convertirse en una realidad. Multitud de dispositivos que se usan en la vida cotidiana incorporan enlaces inalámbricos en sustitución de cables de comunicación. Algunos de estos enlaces han evolucionado mucho presentando un alto grado de complejidad e integración; tal es el caso de la red de telefonía inalámbrica GSM (Global System for Mobile communications), con una inmensa red de estaciones base transceptoras instaladas a lo largo de un gran número de países aportando un enlace de comunicación a millones de usuarios de terminales móviles. Otros simplemente han permitido eliminar los incómodos, y en muchas ocasiones limitantes, cables de gran número de

11

Memoria descriptiva. Introducción

aparatos. Se pueden encontrar multitud de ejemplos: Sistemas de vigilancia (alarmas, video vigilancia), teclados y ratones de ordenador, teléfonos “fijos”, mandos de control, etc. El proyecto Cable Virtual Vía Radio tiene por objetivo implantar un enlace inalámbrico entre dos elementos que hasta ahora están conectados por cables. Estos cables transportan una serie de señales analógicas con unas características concretas (frecuencia máxima 100Hz) las cuales hay que tratar para transportarlas a través de un medio inalámbrico. El alcance del enlace inalámbrico tiene que ser superior a 100 metros, y la portabilidad de la solución un requisito fundamental; esto es, alimentación propia, tamaño pequeño y peso muy reducido. En el mercado se encuentran diversos dispositivos con tecnología radio que tienen como misión sustituir los cables de ciertos aparatos. Su instalación es muy sencilla, y no requieren conocimientos técnicos avanzados. La gran mayoría de ellos tienen como finalidad eliminar los cables de video y audio presentes en equipos de imagen y sonido: •

Transmisores inalámbricos de video: Transmiten una señal de video desde un transmisor hasta una estación receptora sin necesidad de cables. Suelen emplear la banda no comercial ISM (Industrial Scientific and Medical) de 2.4GHz. El fabricante Radiocamaras.com aporta diversas soluciones entra las que se destaca el Minitransmisor de video 2004MTS3 y el Receptor 2004VR (Figura 1 y Figura 2 respectivamente).

12

Memoria descriptiva. Introducción

13

Figura 2. Receptor 2004VR 2.4GHz.

Figura 1.Minitransmisor de video 2004MTS3 2.4GHz.



Transmisores inalámbricos de audio y video: Combinan el envío de señal de video con la transmisión de audio (mono o estéreo, dependiendo del producto). También utilizan la banda ISM de 2.4GHz. Estos productos han tenido una gran acogida en el ámbito doméstico, donde se han implantado como conectores entre el reproductor de DVD, reproductor de vídeo u ordenador, y el televisor. El Wireless Cinema Set del fabricante Conceptronic (Figura 3) es un claro ejemplo de ello.

Figura 3. Wireless Cinema Set de Conceptronic.

Ninguno de estos dispositivos podría implantarse en el proyecto de Cable Virtual Vía Radio. Su gran tamaño y alto requerimiento de potencia hacen

Memoria descriptiva. Introducción

inviable la solución. Prácticamente todos estos dispositivos han sido diseñados pensando en una toma de corriente eléctrica como fuente de alimentación. Mucho de ellos incluyen incluso fuentes de alimentación en el embalaje. El mini transmisor de vídeo mostrado en la Figura 1, pensado para implementar en dispositivos portátiles, requiere de una alimentación de 9 Voltios, lo que haría necesario varias baterías para aportarle energía. Y en todo caso solo estaría enviando una sola señal. Saliéndonos de este ámbito de señales de audio y vídeo doméstico, resulta muy difícil encontrar soluciones integradas que permitan implantar enlaces inalámbricos de comunicación. Para aplicaciones más concretas haría falta la fabricación de diseños a medida cuyo precio convertirían esta solución en inviable. Por lo tanto, la única opción posible para establecer un enlace vía radio, con unas características tan concretas como el de este proyecto, es construirlo partiendo de componentes sueltos, que en muchas ocasiones son los mismos que usan los fabricantes en sus productos integrados. Con el desarrollo abordado en este proyecto se estará creando una variante de un producto ya existente, con unas características diferentes que permiten cumplir los requisitos de la aplicación específica para la cual se va e emplear.

2 Motivación del proyecto En la competición deportiva de más alto nivel se exige que los deportistas rindan al máximo de sus posibilidades reales, las cuales se desarrollan mediante el entrenamiento deportivo. En todo proceso de entrenamiento deportivo se da una sucesión de cargas de entrenamiento y periodos de recuperación. Cuando existe una buena correlación entre ellos, se produce una mejora progresiva del rendimiento.

14

Memoria descriptiva. Introducción

Para poder establecer correctamente los periodos de recuperación, es preciso controlar la carga de entrenamiento, tanto la cantidad como la calidad y densidad de la misma. Mediante índices externos (tiempo, distancia, potencia, altitud, etc.) se puede controlar la carga de entrenamiento, pero para ver la repercusión que tiene esta carga sobre el organismo del atleta se hace necesaria la utilización de índices internos. Hay multitud de índices internos relacionados con el entrenamiento: frecuencia cardiaca, saturación de oxígeno en sangre, tensión arterial, ventilación, lactato sanguíneo, temperatura interna, diferentes parámetros químicos y hormonales, etc. El estudio de la evolución de la saturación arterial de oxígeno junto con la prueba de esfuerzo cardiopulmonar integrada constituyen un método adecuado para la determinación del límite de esfuerzo cardiopulmonar (se caracteriza por un descenso apreciable en la saturación de oxígeno). Para medir la saturación de oxígeno en la hemoglobina se emplea una técnica no invasiva denominada oximetría de pulso, la cual está basada en la comparación de la transmisión de la radiación luminosa de dos longitudes de onda diferentes en tejidos vascularizados. Recientemente en un proyecto de colaboración entre el CSIC y diversas universidades españolas (entre ellas la Universidad Pontificia Comillas) se estudió la posible aplicación e implantación de la oximetría en la evaluación del estado de forma física de los deportistas. Durante el proyecto se llevaron a cabo diversas pruebas con atletas en las que se estuvieron evaluando los equipos y sistemas de análisis desarrollados. Puesto que en el análisis de los datos en tiempo real se requiere la utilización de equipos informáticos, dichas pruebas tuvieron que ser realizadas en una sala (empleando una bicicleta estática y una cinta de

15

Memoria descriptiva. Introducción

correr) que permitiera el cableado entre los diversos dispositivos conectados al deportista y los equipos de análisis. Aquí nace la motivación del proyecto Cable Virtual Vía Radio, que pretende desarrollar un dispositivo que permita crear un cable virtual de media distancia (100m) que elimine los cables físicos empleados en el proyecto del oxímetro, entre las unidades de análisis y las de adquisición de parámetros fisiológicos. La idea consiste en controlar el entrenamiento de deportistas de atletismo. Los equipos de análisis se situarían en el centro de una pista de atletismo, minimizando la máxima distancia que pueda existir entre la estación base y el dispositivo móvil. Esto implica que la distancia que tiene que cubrir el cable virtual ha de ser de unos 100m. Pudiendo controlar y evaluar los índices internos en el propio campo de competición, se podrá establecer la carga de entrenamiento más adecuada para cada modalidad de deporte, permitiendo exprimir al máximo las posibilidades de cada deportista.

3 Objetivos Los objetivos marcados en el proyecto son: •

Desarrollo e implantación de un cable virtual vía radio unidireccional que permita el envío de 1 señal analógica con una banda aproximada de 100Hz a una distancia de 100m.



Desarrollo e implantación de un cable virtual unidireccional que permita el envío de 6 señales analógicas con una banda aproximada de 100Hz cada una a una distancia de 100m.

Se contempla una serie de objetivos opcionales, que se tratarán de alcanzar en el supuesto que se logren con éxito los objetivos marcados:

16

Memoria descriptiva. Introducción



17

Dotar de bidireccionalidad al cable virtual, soportando el envío de señales de control desde el receptor hasta el emisor. La posibilidad de poder ajustar la longitud de onda del diodo láser del oxímetro, permitiendo conseguir una medición más precisa, requiere del envío de una señal de control para su ajuste.



Revisión y mejora de los parámetros que afectan a la portabilidad del dispositivo: Consumos (minimizar), tamaño (reducir), baterías (emplear las imprescindibles y más ligeras), etc.

4 Metodología / Solución desarrollada En el desarrollo del proyecto Cable Virtual Vía Radio se pueden distinguir una serie de fases que se exponen a continuación: •

Documentación y diseño: Recopilar información de las últimas tecnologías empleadas en la transmisión de datos, eligiendo la tecnología más adecuada para los requisitos del proyecto, y diseñando

los

bloques

funcionales

que

va

a

requerir

la

implantación de dicha tecnología. Las necesidades de fiabilidad en la comunicación hacen necesario la implantación de tecnología digital en el procesamiento y transporte de las señales analógicas. Esto implica el empleo de un

microcontrolador

acompañado con el modulo de radio, con el cual se realizará el muestreo de las señales, la conversión digital de la información, la transmisión vía radio, y en el receptor, la posterior reconstrucción y recuperación de las señales. •

Elección de componentes: Estudio de las características que han de tener los componentes para poder implantar la tecnología elegida. Comparativa de dispositivos y elección de los más adecuados para llevar a cabo el proyecto.

Memoria descriptiva. Introducción

18

Se seleccionó un microcontrolador dentro de la serie de AVR 8-bits RISC, el ATmega8535, que cumple con los requisitos buscados. También se eligió el transmisor radio buscando que tuviera un alcance y una velocidad de transferencia acorde con las necesidades. Una

de

las

características

por

las

que

se

han

elegido

los

microcontroladores de la familia de AVR fue por la posibilidad de programar en lenguaje de alto nivel, concretamente C. Esto redujo notablemente la complicación de la fase de programación. Haber tenido que programar en lenguaje ensamblador habría complicado mucho la consecución del proyecto. •

Implantación Hardware: Diseño e implantación de los circuitos impresos en placa.

El cable virtual está compuesto por dos puntos de enlace: emisión y recepción. Cada extremo del enlace está compuesto por una placa de circuito impreso que incorpora los siguientes elementos comunes: microprocesador, transmisor de radio, circuito de alimentación, circuito de reloj, circuito de reset, diodos led de estado y control, y conexiones para el acceso a diversos puertos de comunicación que posee el microprocesador. •

Implantación Software (fase complementaria con la anterior). Elección y configuración de las herramientas informáticas que intervendrán tanto en la programación del micro, como en el diseño de otros elementos.

Para programar el micro se emplearon programas de distribución libre. Se necesitó un programador de dispositivos serie que, empleando los archivos generados por el programa compilador, permitió realizar la carga de programas en la memoria de los microprocesadores. Para la depuración de la programación fue necesario el uso de un programa terminal para el puerto serie, a través del cual se obtenían valores de registros y variables enviados mediante la interfaz serie de los micros. También se utilizó un

Memoria descriptiva. Introducción

programa de distribución libre para el diseño de

19

placas de circuito

impreso. •

Programación del microcontrolador: Diseño e implantación del Software que gestionará la información digital manejada en el enlace virtual.

Las tareas que realiza el Software de gestión desarrollado para los microcontroladores se explican a continuación. En el módulo de emisión se habilitaron los convertidores analógico-digitales (ADC, Analogic to Digital Conversion) incorporados en el micro. El programa coge los valores digitales de las muestras realizadas y los almacena en un buffer circular a la espera de ser enviados por el transmisor de radio. Cuando el volumen de información almacenado en el buffer es suficiente, automáticamente el Software habilita el emisor de radio y envía una trama con la toda la información generada hasta el momento. En el receptor el transmisor de radio está constantemente haciendo lectura de las señales recibidas. Cuando detecta una señal en la banda de frecuencia adecuada con la dirección de cabecera correcta y con un CRC coincidente, informa al programa del microcontrolador de la llegada de un nuevo paquete pare que esté lo retire y lo almacene en un buffer circular. El llenado parcial del buffer circular de recepción activa el convertidor digital-analógico (DAC, Digital to Analogic Conversion), que empieza a extraer datos del mismo a la misma velocidad que el ADC los genera en el emisor. Pese a que los relojes de los dos microprocesadores son generados por cristales de cuarzo de elevada precisión, resulta imposible que las unidades ADC y DAC trabajen exactamente a la misma frecuencia. Esta limitación provocaría con el tiempo el llenado o vaciado completo del buffer del receptor. La solución pasa por tanto por la sincronización entre los dos relojes, siendo realizada por el programa del receptor. El Software de recepción evalúa constantemente el posible llenado o vaciado del buffer circular, y en

Memoria descriptiva. Introducción

función de su capacidad modifica la velocidad con la que el DAC saca los datos del buffer. •

Pruebas: Pruebas sobre el alcance y la calidad del cable virtual.

5 Recursos / herramientas empleadas Los recursos que se emplearon en el desarrollo del proyecto se pueden clasificar en cuatro áreas: 5.1 Recursos humanos •

Conocimiento y experiencia aportada por los directores de proyecto Daniel Muñoz y Romano Giannetti.



Soporte recibido por programadores de microprocesadores a través de foros de Internet, en particular el foro de AVR Freaks [1].

5.2 Instrumentos de trabajo •

PC con las siguientes características requeridas para desarrollar el proyecto: sistema operativo Windows XP, puertos de conexión LPT y COM, más de 200 MB de espacio libre en disco duro, conexión a Internet.



Soldador de estaño.



Adaptador universal de tensión alterna (220 Voltios) a continua (5-9 Voltios). Empleado para alimentar las placas.



Polímetro digital.

5.3 Hardware del dispositivo •

Microcontroladores Atmel modelos Atmega8535. (2 unidades, uno para la estación base y otro para la unidad móvil)

20

Memoria descriptiva. Introducción



Módulos de radio Laipac modelos TRW-2.4G Series. (2 unidades)



Componentes para la fabricación del ISP-adapter: Conector DB25, buffer, condensadores, resistencias.



Componentes para la fabricación del conector serie con puerto COM: Conector DB9, convertidor de nivel, condensadores.



Componentes que acompañan al micro: cristal de cuarzo, condensadores, conectores.



Componentes relacionados con la alimentación de los circuitos: baterías, detectores de voltaje, reguladores de voltaje.



Componentes de control: diodos led, pulsadores.

5.4 Software del dispositivo •

Herramientas de desarrollo para el microcontrolador: AVR Studio 4 (simulador), WinAVR (compilador), Ponyprog2000 (programador), AVRCalc (calculadora de registros del timer).



Herramienta para el diseño de placas de circuito impreso: Eagle Layout Editor.



Herramientas ofimáticas contenidas dentro del paquete de Microsoft Office: Word, Excell, Power Point.

21

Memoria descriptiva. Tecnologías asociadas

Capítulo 2 TECNOLOGÍAS ASOCIADAS

1 Módulo transmisor de radio TRF-2.4G El módulo de radio TRF-2.4G (Figura 4) fabricado por Laipac Technology [2] es un transceptor que trabaja en la banda de frecuencia reservada para uso no comercial ISM (Industrial Scientific and Medical) de 2.4 GHz. El transceptor está compuesto por una antena integrada, un amplificador de potencia, un cristal oscilador y un modulador. La configuración del mismo es fácilmente programable a través de una conexión serie compuesta por tres cables. A través de la misma conexión son transmitidos y recuperados los datos que se envían por radio.

Figura 4. Fotografía del transceptor TRF-2.4G de Laypac Technology.

Son dos los modos en los que puede trabajar el transceptor de Laipac: •

ShockBurst: en este modo de funcionamiento el módulo utiliza su buffer interno para almacenar la información recibida desde el microcontrolador a través de la conexión serie. Una vez el transceptor ha recibido todo el paquete de datos que va a enviar, calcula el CRC (Códigos de Redundancia Cíclica), y transmite la trama por radio a la velocidad con que se haya configurado. Obsérvese que no se requiere una velocidad alta en la conexión

22

Memoria descriptiva. Tecnologías asociadas

23

serie que comunica el micro con el módulo de radio para aprovechar todo el potencial de velocidad de transmisión del TRF2.4G. Por otro lado, la emisión de datos a alta velocidad reduce tanto el riesgo de colisiones en el aire como el tiempo de requerimiento

de

altos

niveles

de

potencia,

minimizando

considerablemente el consumo medio de corriente. •

Modo directo: Funciona como los transmisores de RF estándar.

A parte de la hoja de características aportada por el fabricante Laipac Technology, la documentación referente al TRF-2.4G, como puedan ser notas de aplicación, herramientas desarrolladas o documentos relevantes, es prácticamente inexistente. El motivo de este escaso soporte es el siguiente: El transceptor TRF-2.4G está construido a partir de un chip transceptor fabricado por otra empresa, NORDIC Semiconductor [3]. La empresa Laipac ha cogido este chip, el nFR2401 (Figura 5), y lo ha montado en un soporte incorporándole una antena y los componentes necesarios que facilitan su implementación en terceros circuitos.

Figura 5.Chip transceptor nRF2401 de NORDIC Semiconductor.

Al desmontar uno de los transceptores TRF-2.4G (Figura 6) se observa que incorpora un chip en la parte central cuya referencia ha sido borrada. Este chip es el nRF2401.

Memoria descriptiva. Tecnologías asociadas

Figura 6. Interior del TRF-2.4G de Laipac Technology.

Entrando en la página del fabricante del chip transceptor se encontrará gran cantidad de documentación relacionada con él. Descargando la hoja de características del propio chip se descubrirán importantes similitudes con la hoja de características del TRF-2.4G provista por Laipac. Ha sido de gran valor para el montaje del Hardware un documento técnico obtenido de la página Web de Nordic [3] con esquemas de conexionado entre el nRF2401 y la interfaz SPI (Serial Peripheral Interface).

2 Microcontrolador (ATmega8535) El ATmega8535 (Figura 7) es un microcontrolador AVR 8-bit RISC fabricado por Atmel Corporation [4]. Su arquitectura combina una amplia lista de instrucciones con 32 registros de propósito general, los cuales están directamente conectados a la Unidad Aritmética Lógica (ALU) (Figura 8).

Figura 7. Fotografía del microcontrolador ATmega8535.

24

Memoria descriptiva. Tecnologías asociadas

Como el nombre indica, se trata de un micro de estructura RISC (Reduced Instruction Set Computer). Los microcontroladores con estructura RISC se caracterizan por: •

Realizan una instrucción por ciclo de máquina, para lo cual enfatizan en la segmentación.



Carece de microprogramas.



Emplean modos de direccionamiento sencillo: direccionamiento a registro en casi todas las instrucciones. Tiene pocos modos de direccionamiento, reduciendo el conjunto de instrucciones y simplificando la unidad de control.

Las principales características de este microcontrolador se exponen a continuación: •

8Kbytes de memoria Flash programable mediante ISP (In System Programming), con opciones de lectura mientras se está escribiendo.



512 bytes de memoria EEPROM.



512 bytes de memoria SRAM.



32 líneas de entrada/salida de propósito general. Repartidas en 4 puertos de 8 bits cada uno.



Temporizadores/contadores con modo de comparación entre ellos.



8 conversores analógico digital de 10 bits de resolución.



Interrupciones internas y externas.



Un puerto serie programable (UART/USRT).



Un puerto serie SPI.



Un watchdog interno programable con reloj propio.

La memoria Flash que ofrece este microcontrolador permite la opción de reprogramarse en la propia placa en la cual debe funcionar a través del

25

Memoria descriptiva. Tecnologías asociadas

26

interfaz serie ISP (In-System-Programming), mediante el empleo de un programador convencional, o bien mediante un proceso de autoprogramación que se incluye en el núcleo de los microcontroladores AVR “AVR

A

core”.

este

método

se

le

llama

ISSP

(In-System-Self-

Programming).

Figura 8. Estructura interna del microcontrolador ATmega8535.

3 SPI (Serial Peripheral Interface) Este puerto permite una comunicación síncrona de alta velocidad entre el sistema que lo gobierna, el maestro, y los periféricos conectados a este sistema de comunicación, los esclavos. Este método permite una comunicación “Full Duplex” mediante tres cables de transferencia de datos. La Figura 9 muestra un diagrama esquemático

con

las

conexiones

necesarias

para

establecer

comunicación entre un maestro y un esclavo a través de la interfaz SPI.

una

Memoria descriptiva. Tecnologías asociadas

Figura 9. Diagrama de comunicación entre maestro y esclavo a través de SPI.

4 UART (Universal Asynchronous Receiver Trasnmitter) El centro del sistema de comunicaciones serie es la UART (Universal Asynchronous Receiver-Transmitter). Tiene como misión convertir los datos recibidos del bus de datos del microcontrolador en formato paralelo, a un formato serie que será utilizado en la transmisión hacia el exterior. También realiza el proceso contrario, transformar los datos serie recibidos del exterior en un formato paralelo entendible por el bus. La UART es un dispositivo programable en el que pueden establecerse las condiciones que se utilizarán para la transmisión (velocidad, paridad, longitud y bits de parada).

5 ADC (Analog-to-Digital Converter) El conversor analógico digital es un dispositivo que permite convertir un voltaje determinado en un valor binario. Gracias a él es posible hacer transmisiones digitales partiendo de señales analógicas. Son varios los pasos que hay que dar hasta obtener los valores digitales que reconstruyen la señal.

27

Memoria descriptiva. Tecnologías asociadas

El primer paso en la conversión analógica digital se llama PAM (Pulse Amplitud-Modulation). En él se muestrea la señal analógica y se genera una serie de pulsos. En esta técnica se toman muestras de la señal original (Figura 10) a intervalos regulares de tiempo. En un momento dado el nivel de la señal es leído y retenido brevemente (Figura 11).

Figura 10. Señal analógica que se va a digitalizar

Figura 11. Fase de muestreo en la conversión AD.

El motivo por el que PAM es insuficiente para establecer una comunicación digital es por que aunque traduzca la forma actual de la

28

Memoria descriptiva. Tecnologías asociadas

onda a una serie de pulsos, siguen teniendo amplitud (se trata todavía de una señal analógica y no digital). Para hacerlos digitales, se deben de modificar usando modulación de código de pulso (PCM). PCM (Pulse Code Modulation) modifica los pulsos creados por PAM para crear una señal completamente digital. Para hacerlo, PCM, en primer lugar, cuantifica los pulsos de PAM. La cuantificación es un método de asignación de los valores enteros a un rango específico (Figura 12). Luego, cada uno de esos valores finitos será codificado, es decir, a cada muestra cuantificada se le otorga un código concreto, convirtiendo de esta forma la señal original en una serie de valores que se pueden manejar digitalmente.

Figura 12. Fase de Cuantificación en la conversión AD.

Finalmente, para enviar la señal a través de un enlace digital de comunicaciones se asigna un código binario a cada valor y se transforman estos dígitos binarios en una señal puramente digital usando una de las técnicas de codificación digital-digital.

Figura 13. Fase de Codificación en la conversión AD.

29

Memoria descriptiva. Tecnologías asociadas

Actualmente, se requiere poca información para la reconstrucción de la señal analógica. Tomando como referencia el teorema de muestreo de Shannon, para asegurarse la reproducción exacta de una señal analógica original usando PAM, la tasa de muestreo debe ser al menos el doble de la frecuencia máxima de la señal original. Según la teoría, si se desea muestrear la información de una señal que tiene como frecuencia máxima 100 Hz, la tasa de muestreo debe ser de 200 pruebas/s. A una velocidad de muestreo menor, la información se perdería; a una mayor, no se ganaría información extra. En la práctica, a la hora de regenerar una señal a partir de sus muestras se emplea un reconstructor que dista mucho del ideal planteado por Shannon. Debido a esto, para poder recuperar correctamente la señal a partir de sus muestras, es necesario muestrearla a una velocidad superior. En el prototipo desarrollado se ha trabajado con una velocidad de muestreo de 200Hz. Habrá que tener en cuenta en futuros desarrollos la necesidad de aumentar dicha velocidad de muestreo.

30

Memoria descriptiva. Arquitectura de Hardware

Capítulo 3 ARQUITECTURA DE HARDWARE

Este capítulo contiene la información necesaria para comprender la estructura del Hardware implantado en el Cable Virtual Vía Radio. En primer lugar se expondrán los motivos por los que se ha elegido el microcontrolador ATmega8535. Posteriormente se explicará como se ha realizado la programación del micro y la depuración del código. Finalmente se abordará el Hardware de las dos placas diseñadas, la de emisión y la de recepción, explicando la finalidad de los bloques de circuitos que las componen. En el Anexo A de este documento se explica cómo montar una placa para el programado del microcontrolador ATmega8535. Se expone tanto el Hardware necesario como las herramientas Software que hay emplear para programarlo. En el mismo Anexo también se explica cómo configurar los programas para comunicarse con la placa de desarrollo y cargar un primer programa de prueba. Por tanto se considera a partir de este punto que toda esta información es conocida por el lector. Se recomienda pues leer previamente el Anexo A.

1 Microcontrolador ATmega8535 En el Proyecto Cable Virtual Vía Radio las señales son convertidas en digital para ser transmitidas con mayor fiabilidad por el aire. Se hace por tanto necesario contar con el empleo de unidades de procesamiento y tratamiento de la información digital. La mejor opción es emplear un microcontrolador; circuito integrado de tamaño reducido con las tres unidades funcionales de un ordenador: CPU, memoria y unidades de E/S.

31

Memoria descriptiva. Arquitectura de Hardware

Sus prestaciones son más limitadas que las que presenta su hermano mayor, el PC, pero su alto grado de especialización lo hacen idóneo para las necesidades de este proyecto. El microcontrolador elegido para procesar la información digital manejada en el Cable Virtual Vía Radio es el ATmega8535 de la familia AVR 8 bit RISC de Atmel. Las razones por las que se ha optado por este microprocesador son varias: •

Fácil programación de la memoria flash del microprocesador a través del puerto SPI integrado. Una sencilla conexión entre PC y micro permiten acceder a la programación de la memoria integrada.



Tamaño suficiente en memoria como para poder albergar todo el código programado. El Atmega8535 posee una memoria flash de 8 Kbytes de tamaño, capacidad más que suficiente.



Uso de lenguaje de programación de alto nivel (lenguaje C) para escribir el código que se cargará en el micro.



Integración de 8 canales de conversión analógico-digital en el propio chip.



Integración de puerto UART. Se usará para la depuración del código.



Amplia penetración de la familia AVR 8-bit RISC en el mercado de los microcontroladores. Esto asegurará el apoyo necesario por parte tanto del fabricante como de otros usuarios durante el desarrollo del Proyecto. Si se tienen dudas sobre alguna configuración o función del micro, se encontrarán con facilidad soluciones en foros de Internet especializados en esta familia de microprocesadores. Tal es el caso del foro de AVR Freaks (Referencia [1]), con un gran

32

Memoria descriptiva. Arquitectura de Hardware

número de miembros con una gran experiencia en el uso de los micros de AVR. El ATmega8535 cuenta con cuatro puertos de entrada y salida constituidos por 8 pines cada uno. Estos puertos pueden ser configurados mediante programación como entradas (para detectar que se ha presionado un pulsador, por ejemplo), como salidas (para encender un led, por ejemplo), o bien se puede habilitar la función específica asociada al pin correspondiente (como podría ser capturar la amplitud de un señal analógica para convertirla en un valor digital mediante el conversor ADC).

2 Programación del microcontrolador. Adaptador ISP En el Cable Virtual Vía Radio se ha optado por incorporar en las placas de emisión y recepción las conexiones para acoplar un Adaptador ISP que permita la programación de los micros que incorporan. Se partirá del Adaptador ISP descrito en el Anexo A (Figura 50), y se acondicionará según las necesidades requeridas. Tanto el módulo de emisión como el de recepción están alimentados a una tensión de 3.3V, inferior a los 5V para los que fue diseñado el Adaptador ISP. Los niveles de tensión manejados por el puerto LPT-1 del ordenador, al cual se conecta el Adaptador ISP, son 0 y 5 voltios. Una conexión directa entre este puerto y el micro, alimentado a menos tensión, podría dañar las conexiones de entrada al microcontrolador. Una sencilla solución para evitar este problema es insertar unas resistencias en medio de la conexión (Figura 14).

En éstas se producirá la caída de tensión necesaria para

reducir el nivel de tensión, estando así por debajo del umbral que lo podría dañar. Tal como indica la Tabla 1, el umbral de máxima tensión de entrada en los puertos del micro ATmega8535 se encuentra en 3.3 + 0.5 V.

33

Memoria descriptiva. Arquitectura de Hardware

Tabla 1. Características eléctricas de los puertos de entrada del micro ATmega8535

Figura 14. Esquema de conexión del circuito acoplador empleado en el Adaptador ISP

El circuito de alimentación a 5V implantado en el acoplador (Parte inferior de la Figura 14) es empleado para alimentar el buffer que compone el Adaptador ISP del Anexo A, el cual no funcionaría si fuera alimentado con los 3.3V procedentes de las placas de emisión y recepción. El resultado de la implantación física se muestra en la Figura 15. El conector de la parte de la izquierda de la imagen corresponde al Adaptador ISP, y el de la parte derecha a los cables que lo comunican con el micro.

34

Memoria descriptiva. Arquitectura de Hardware

Figura 15.Fotografía del circuito acoplador empleado en el Adaptador ISP

En un principio se pensó en emplear un único cable para programar el micro del emisor y el micro del receptor. Según el micro que se quisiese programar en cada momento, se enchufaba el conector a la placa correspondiente. Pero pronto el tiempo demostró la inviabilidad de emplear un único cable. Enchufar y desenchufar constantemente el conector de las placas resultaba ser una latosa tarea cada vez que se quería modificar una línea de código de la placa a la cuál no estuviese conectado, con el riesgo de dañar alguna de las conexiones. Se pensó en hacer un segundo cable de programación, pero sería entonces necesario otro segundo puerto LPT, con el cual no cuentan la mayoría de los ordenadores.

Finalmente, se optó por duplicar los cables que

comunicaban el circuito adaptador con el microcontrolador (cables situados en la zona derecha de la Figura 15) empleando un interruptor para la conmutación entre salidas. El cable de programación que se empleó durante el resto del desarrollo se muestra en la Figura 16. Cada conector ISP (ISP 1 e ISP 2) se enchufa a un módulo diferente según cuál se quiera programar, y con el interruptor de selección se conmuta entre uno u otro.

35

Memoria descriptiva. Arquitectura de Hardware

Figura 16. Fotografía del cable de programación.

3 Conector UART-RS232 El puerto de comunicaciones UART ha sido utilizado para realizar la depuración del código de programación. Su conexión con el puerto serie del PC (puerto COM) ha permitido visualizar en la pantalla del ordenador los valores de registros del micro y de variables del programa que se estaba ejecutando en el microcontrolador. El conocimiento de estas variables y registros ha sido crítico a la hora de detectar fallos en la programación. La interconexión entre el puerto COM del ordenador y el puerto UART del microcontrolador requiere una conversión de niveles de voltaje que adapte el intervalo de voltaje del microcontrolador (0V/3.3V) al protocolo de niveles de voltaje RS232 (-10V/+10V) con el que opera el puerto serie del ordenador.

36

Memoria descriptiva. Arquitectura de Hardware

Se ha empleado como convertidor de niveles RS232 el circuito integrado MAX3232. Para su correcto funcionamiento es necesario acoplarle una serie de capacidades externas (Figura 17) cuyos valores recomendados se encuentran en la hoja de características del dispositivo (consultar Tabla 28, página 150).

Figura 17. Esquema de conexión del enlace UART-RS232.

La implantación del circuito convertidor de niveles con los componentes necesarios para su correcto funcionamiento se realizó en una pequeña placa de circuito impreso, como se muestra en la fotografía de la Figura 18.

Figura 18. Fotografía del circuito convertidor de niveles.

Al igual que se hizo con el cable de programación, para no tener que estar desenchufando y enchufando el conector UART-RS232 cada vez que se

37

Memoria descriptiva. Arquitectura de Hardware

quería cambiar entre el microcontrolador cuyo programa se deseaba depurar, se duplicó el extremo final del cable empleando un interruptor conmutador. El resultado se observa en la fotografía de la Figura 19.

Figura 19. Fotografía del cable de conexión UART-RS232.

Al contrario que en el cable de programación, el cable de depuración si que toma la energía para alimentar el circuito impreso que incorpora (el MAX3232) de la placa a la que esta conectado, bien sea la de emisión o la de recepción.

4 Módulos de emisión y recepción Uno de los puntos relevantes en el desarrollo del proyecto Cable Virtual Vía Radio ha sido diseñar adecuadamente el Hardware de las placas de emisión y recepción. Se buscaba en todo momento un diseño robusto, que asegurase el correcto funcionamiento de ambos módulos, y que a la vez emplease el número de

38

Memoria descriptiva. Arquitectura de Hardware

39

componentes estrictamente necesario. La portabilidad de los módulos así lo requiere. La primera decisión importante que se tomó fue trabajar con una alimentación de 3.3V en vez de los 5V con los que se había diseñado la primera placa de desarrollo que se fabricó (descrita en el Anexo A) con el fin

de

aprender

a

manejar

el

entorno

de

programación

del

microcontrolador ATmega8535. Está decisión fue importante y bien meditada, pues impedía reutilizar directamente el cable de programado (Adaptador ISP) diseñado para placas de 5V. Pero las ventajas eran muchas: Una alimentación de 3.3V requiere una batería de tamaño más reducido, o un número de las mismas menor. Por otro lado los transceptores de radio TRF-24G requieren una toma de alimentación comprendida entre 1.9 y 3.6 Voltios (Referencia a la Tabla 18 de características eléctricas). Trabajar con 5 Voltios, a parte de aumentar los componentes necesarios para realizar las conexiones entre el micro y el transceptor, habría supuesto un desaprovechamiento de potencia innecesario en los divisores de tensión o convertidores de voltaje que se hubiesen empleado para adaptar los niveles de voltaje. Posteriormente se confirmó que la solución adoptada había tenido más trascendencia de lo que en un principio se pensaba. La comunicación entre el TRF-2.4G y el módulo de radio se solucionaron con sencillas conexiones directas. Además, trabajar con 3.3V permite usar baterías recargables de litio de 3.6V, como las que incorporan la gran mayoría de los móviles, fáciles de encontrar y baratas debido a la gran demanda que tienen. Los esquemas de conexión empleados durante el diseño de los módulos de emisión y recepción han sido creados con el programa editor de placas de circuito impreso Eagle Layout Editor. A continuación se muestran los esquemas de conexión del circuito de emisión (Figura 20) y de recepción (Figura 21).

Memoria descriptiva. Arquitectura de Hardware

Figura 20. Esquema de conexión del circuito de emisión.

Figura 21. Esquema de conexión del circuito de recepción.

La descripción y el fundamento de cada bloque se exponen a continuación.

40

Memoria descriptiva. Arquitectura de Hardware

4.1 Hardware común del módulo emisor y receptor El módulo de emisión y el de recepción incorporan varios bloques funcionales iguales: 4.1.1 Diodos led de estado y control Conectados a los primeros pines del puerto B del microcontrolador, aportan información diversa sobre el estado del emisor o del receptor: Funcionamiento, errores, procesos, etc. 4.1.2 Circuito de reloj Como ya se comentó en el Anexo A, el microcontrolador ATmega8535 incorpora un oscilador interno de poca precisión con el que no conviene trabajar. Adaptando un sencillo circuito externo formado por un cristal y dos condensadores se dotará de una precisa fuente de reloj a los microcontroladores (Figura 22). Se recuerda emplazar el cristal de cuarzo lo más cerca posible del micro al cual va a proveer la señal de reloj de alta frecuencia para evitar acople de ruido. La frecuencia de reloj elegida ha sido de 8MHz, la máxima dentro del rango que permite el microprocesador cuando es alimentado a una tensión de 3.3V.

Figura 22. Esquema de conexión del circuito de reloj.

41

Memoria descriptiva. Arquitectura de Hardware

4.1.3 Circuito de reset Se ha provisto a ambas placas de un pulsador para forzar el reseteado del sistema.

Figura 23. Esquema de conexión del circuito de reset.

4.1.4 Circuito de alimentación La regulación de la tensión aportada por las baterías es efectuada por el circuito integrado LM3940 (Figura 24). Para que la señal de alimentación al sistema sea estable es necesario integrar un condensador de 33uF a la salida del regulador, según especificaciones del fabricante (Anexo C.3). Tras varias pruebas se comprobó que con 10uF se aportaba una estabilidad suficiente para el correcto funcionamiento de los componentes del sistema. El motivo de disminuir esta capacidad buscaba reducir el tamaño del condensador.

Figura 24. Esquema de conexión del circuito de alimentación.

42

Memoria descriptiva. Arquitectura de Hardware

4.1.5 Conexionado del TRF-2.4G El fabricante NORDIC Semiconductor aporta el siguiente diagrama de conexión mostrado en la Figura 25 para acoplar su chip transceptor nRF2401, incorporado en el TRF-2.4G, a una interfaz SPI.

Figura 25. Diagrama de conexión entre el TRF-2.4G y el interfaz SPI.

El chip transceptor de NORDIC utiliza un único pin (pin Data) para la entrada de datos que se van a transmitir vía radio (modo emisión) y para la salida de datos que se hayan recuperados de una trama recibida con éxito (modo recepción). Su conexión física con los pines MISO y MOSI de la interfaz SPI del microcontrolador posibilita el funcionamiento del chip tanto en modo emisor como receptor, según lo configure el micro que lo acompaña. La alimentación del sistema (establecida en 3.3V) se encuentra dentro del rango admisible de tensiones soportadas por el chip transceptor, por lo que se ha implantado directamente el diagrama de conexión propuesto por NORDIC Semiconductor (Figura 26).

Figura 26. Esquema de conexión del interfaz entre el TRF-2.4G y el ATmega8535.

43

Memoria descriptiva. Arquitectura de Hardware

En la siguiente tabla se indica la correspondencia de pines en el enlace de conexión entre el microcontrolador y el transceptor TRF-2.4G. ATmega8535 PinB6 (MISO) PinB5 (MOSI)

TRF-2.4G DATA

PinD2

DR1

PinB7 (SCK)

CLK1

PinD5

CS

PinD4

CE

Tabla 2. Correspondencia de pines en la conexión entre el microcontrolador y el TRF-2.4G.

Los pines DR1, CS y CE del transceptor pueden ser conectados a cualquiera de los puertos libres del microcontrolador. No requieren una conexión a un pin con una función específica como ocurre en el caso de los pines DATA o CLK1. A través de Software se programarán los pines correspondientes del microcontrolador a los que esté conectado el TRF2.4G. 4.1.6 Conectores para el programador y el depurador Son los conectores en los que se enchufarán el cable del programador (Adaptador ISP) y el cable de conexión UART-RS232 descritos con anterioridad. En los esquemas generales de conexión del emisor y del receptor (Figura 20 y Figura 21 respectivamente) se señalan los puntos a los que hay que conectar el Adaptador ISP: MISO, MOSI, SCK, GND y RESET. Se recuerda que la alimentación al buffer incluido en el Adaptador ISP es aportada por el circuito acoplador del propio cable, y no por la placa en la que se programa el micro como ocurría en la placa de desarrollo descrita en el Anexo A.

44

Memoria descriptiva. Arquitectura de Hardware

El conector del cable UART-RS232, cuyo esquema de conexión se muestra en la Figura 27, sí que incorpora la alimentación para el circuito integrado MAX3232 incluido en el cable.

Figura 27. Esquema de conexión del conector UART.

4.2 Hardware específico del módulo emisor 4.2.1 Convertidor Analógico-Digital Para llevar a cabo la digitalización de las señales que van a ser enviadas por el enlace inalámbrico se ha habilitado la unidad de conversión analógico-digital incorporada en el propio microcontrolador. A parte de la configuración por Software, se necesita alimentar el convertidor ADC y señalar el voltaje de referencia sobre el que se va a realizar la conversión (Figura 28). La alimentación del ADC se proporciona a través de los pines AVCC y AGND. Es importante que durante la operación de conversión esta alimentación sea lo más estable posible para conseguir resultados óptimos en la conversión. Acoplar un condensador entre las dos pines de entrada (AVCC y AGND) es una solución que permite darle una mayor estabilidad a la señal. La entrada del voltaje de referencia se encuentra en el pin AREF del micro. Este valor es el que otorga a la señal muestreada, cuya amplitud sea coincidente con él, el máximo valor del número entero dedicado a la

45

Memoria descriptiva. Arquitectura de Hardware

cuantificación de las muestras. Al tener 10 bits de resolución, el máximo valor es 0x03ff. Por encima de este valor de referencia todas las muestras serán cuantificadas con el valor 0x03ff.

Figura 28. Esquema de conexión de la alimentación del ADC.

4.2.2 Entradas de señales analógicas Para simular las señales analógicas que se transportarán a través del enlace inalámbrico, se ha equipado la placa de emisión con dos potenciómetros y una toma de conexión para una señal externa, que se han conectado a tres entradas del convertidor ADC. Concretamente, tal como se indica en la Tabla 3, se han utilizado los tres primeros pines del puerto A. ATmega8535

ENTRADAS ANALÓGICAS

PinA0 (ADC0)

Potenciómetro 1

PinA1 (ADC1)

Potenciómetro 2

PinA2(ADC2)

Toma de conexión externa

Tabla 3. Conexiones de las entradas analógicas en el ATmega8535.

46

Memoria descriptiva. Arquitectura de Hardware

4.2.3 Implantación del módulo emisor El resultado de la implantación del Hardware del módulo de emisión se muestra en la fotografía de la Figura 29. Por el momento se ha optado por no recortar la placa de circuito impreso. Posibles ampliaciones, como ocurrió en su día cuando se incorporaron los potenciómetros, necesitarían del espacio libre que queda en la placa. Al ser esto un prototipo abierto a continuas mejoras, se ha decidido mantener el tamaño original de la placa.

Figura 29. Fotografía del módulo emisor.

4.3 Hardware específico del módulo receptor 4.3.1 Salidas de señales digitales Los valores binarios de las muestras digitalizadas en el convertidor ADC del emisor son visualizados a través de 8 leds rectangulares conectados al puerto A del microprocesador. En la fotografía del módulo receptor, (Figura 30), parte superior derecha.

47

Memoria descriptiva. Arquitectura de Hardware

4.3.2 Pulsador de conmutación de salida Conectado al PinC0 del puerto C, permitirá, una vez haya sido programado el micro, cambiar la señal que es mostrada a través del puerto A. 4.3.3 Implantación del módulo receptor A continuación se recoge la fotografía con el resultado de la implantación del Hardware del módulo receptor (Figura 30). Al igual que la placa del módulo de receptor, y por los mismos motivos, ésta conserva su tamaño original de compra.

Figura 30. Fotografía del módulo de recepción.

48

Memoria descriptiva. Arquitectura de Hardware

5 Alimentación La alimentación se lleva a cabo con baterías recargables de litio de 3.6V procedentes de dos teléfonos móviles antiguos que ya no se usaban (Figura 31). Para recargarlas se insertan de nuevo en el teléfono móvil, conectando éste a la red eléctrica con el transformador suministrado en su día por el fabricante del teléfono, en este caso Nokia. Las gomas elásticas usadas para fijar el conector son muy prácticas, ya que permiten desmontar fácilmente el cable de conexión y desacoplarlo de la batería. Es cierto que la conexión no está fija y que ante movimientos bruscos puede fallar. En el momento en que las pruebas del prototipo lo requieran, se soldarán directamente los cables a las bornas de las baterías.

Figura 31. Fotografía de las baterías de litio modelo BLC-2 de Nokia.

49

Memoria descriptiva. Arquitectura de Software

50

Capítulo 4 ARQUITECTURA DE SOFTWARE

En este cuarto capítulo se va a abordar el estudio del Software desarrollado en la implantación del Cable Virtual Vía Radio. Se pretende dar una visión global y en conjunto que permita comprender la estructura del código de programación, el cual está recogido y detalladamente explicado en el Anexo B. Las explicaciones estarán apoyadas con diagramas de flujo y tablas resúmenes con configuraciones y descripción de funciones y variables. Primeramente se describirá de forma general el cometido de toda la programación, dando una idea general al lector del proceso llevado a cabo para manejar y enviar la información entre emisor y receptor. En las secciones siguientes se profundizará en el código de programación y se abordarán aspectos tales como la inicialización, la configuración de los transceptores de radio y el puerto UART, y la estructura interna del código tanto del módulo de emisión como el de recepción. Para la edición, la compilación, y la carga de programas en la memoria del microprocesador se han manejado las mismas herramientas Software que se describen en el manual de construcción de una placa de desarrollo para el microcontrolador ATmega8535 (Anexo A). Estas herramientas han sido: AVR Studio 4, WinAVR y Ponyprog2000. En el mismo manual se encuentra información sobre su manejo y configuración. Para el manejo del puerto de comunicaciones UART se ha empleado la librería de control desarrollada por Peter Fleury [5]. Se han creado nuevas funciones en C que, apoyándose en funciones contenidas en dicha librería, cubrían

las

necesidades

requeridas

de

comunicación

entre

los

microcontroladores y el ordenador a través del puerto UART: sólo se

Memoria descriptiva. Arquitectura de Software

necesita transmitir datos en una dirección, desde los micros hasta el programa emulador de puerto serie del ordenador.

1 Objetivos generales del código de programación Una vez montado el Hardware de los dos módulos que componen el proyecto, es necesario programar los microcontroladores para que, haciendo uso de los periféricos instalados, realicen las operaciones que hagan funcionar el Cable Virtual Vía Radio. La forma más sencilla para comprender el funcionamiento interno que otorga la programación al enlace inalámbrico es mediante un diagrama explicativo (Figura 32.

Figura 32. Diagrama explicativo del funcionamiento interno del Cable Virtual Vía Radio.

En el módulo de emisión, parte izquierda del diagrama de la Figura 32., las ondas analógicas son muestreadas a una frecuencia de 200Hz por el ADC del micro. Como ya se vio en el capítulo anterior de arquitectura de

51

Memoria descriptiva. Arquitectura de Software

Hardware,

han

sido

tres

las

entradas

52

analógicas

implantadas,

correspondientes a dos potenciómetros y una toma auxiliar. Para simular el manejo de otras tres ondas lo que se ha hecho es crear mediante Software los valores binarios de sus respectivas muestras cuantificadas. A medida que el ADC va muestreando las ondas, los valores binarios obtenidos van siendo cargados en el buffer circular del emisor a espera de ser enviados al receptor. Cuando el buffer circular contiene información suficiente como para llenar el tamaño de una trama de envío del transceptor (payload), el programa del emisor saca los datos del buffer circular y los envía a través del TRF-2.4G. En el receptor, su transceptor de radio está constantemente rastreando las ondas que le llegan a la espera de una con la dirección correcta. Cuando llega una señal con la dirección del receptor, éste calcula su CRC, y si coincide con el transportado por la trama, toma la información contenida en el payload y la almacena en su buffer interno. Cuando una señal es recibida con éxito, el microcontrolador es avisado, y éste descarga la información desde el TRF-2.4G hasta el buffer circular del receptor. El buffer circular del receptor se va llenando hasta superar su mitad de capacidad, instante en el que se activa el timer cuya interrupción simula la conversión digital-analógica (DAC). En ese momento, y a ritmo de 200 veces por segundo, se van extrayendo los datos almacenados en el buffer circular, correspondientes a valores binarios de las muestras cuantificadas de las 6 ondas enviadas desde el módulo de emisión. Estos valores son visualizados a través de unos diodos led conectados a uno de los puertos del microcontrolador. Un pulsador permite cambiar la onda visualizada en cada momento. Aunque los relojes de los dos microprocesadores son generados por cristales de cuarzo de elevada precisión, resulta imposible que las unidades ADC y DAC trabajen exactamente a la misma velocidad. Esta

Memoria descriptiva. Arquitectura de Software

limitación provoca con el tiempo el llenado o vaciado completo del buffer circular del receptor. Para evitar este problema el Software del módulo de recepción reajusta la frecuencia con la que se ejecuta la interrupción del timer responsable del simulado de la unidad DAC en función de la capacidad del buffer circular del receptor. Así pues, cuando la capacidad del buffer circular para albergar nuevos datos se encuentra por debajo de un umbral establecido, el programa del receptor automáticamente aumenta la velocidad con la que la interrupción del timer extrae los datos del buffer circular. En el caso contrario en el que el buffer circular se esté quedando sin datos nuevos, el Software actúa reduciendo la velocidad de ejecución de la interrupción que extrae los datos. De esta manera se produce una regulación dinámica de la capacidad soportada por el buffer circular.

2 Inicializaciones En las inicializaciones son configurados los registros de control que habilitan y configuran tanto los componentes del microcontrolador como las características del enlace radio. En el Anexo C.4 se recogen las descripciones de los registros que rigen el timer 1, el timer 2, el ADC, y la interfaz SPI del microcontrolador. La configuración del elemento transceptor está incluida en el Anexo C.1. 2.1 Puertos Los puertos usados de los microcontroladores, con la configuración y la función que van a desempeñar sus pines, se exponen en la Tabla 4 y Tabla 5.

53

Memoria descriptiva. Arquitectura de Software

54

EMISOR PIN

In/Out

PUERTO A

0-2

I

Entradas de señales analógicas

0-1

O

Encendido Diodos led de estado y control

4 SS

O

Su configuración como salida permite trabajar en modo maestro*

5 MOSI

O

Salida de datos de la interfaz SPI

6 MISO

I

Entrada de datos de la interfaz SPI

7 SCK

O

Señal de reloj para la interfaz SPI

0 RXD

I

Entrada de datos de la interfaz UART

1 TXD

O

Salida de datos de la interfaz UART

2

I

Detectar la recepción de una trama con éxito en el TRF-2.4G

4

O

Activar TRF-2.4G

5

O

Establecer modo configuración en TRF-2.4G

PUERTO D

PUERTO B

PUERTO

FUNCIÓN

Tabla 4. Configuración de los puertos del microcontrolador del receptor

RECEPTOR PIN

In/Out

FUNCIÓN

PUERTO A

0-7

O

Salidas de los valores de las muestras recibidas

0-3

O

Encendido Diodos led de estado y control

4 SS

O

Su configuración como salida permite trabajar en modo maestro*

5 MOSI

O

Salida de datos de la interfaz SPI

6 MISO

I

Entrada de datos de la interfaz SPI

7 SCK

O

Señal de reloj para la interfaz SPI

0

I

Cambiar la señal visualizada en el puerto A

0 RXD

I

Entrada de datos de la interfaz UART

1 TXD

O

Salida de datos de la interfaz UART

2

I

Detectar la recepción de una trama con éxito en el TRF-2.4G

4

O

Activar TRF-2.4G

5

O

Establecer modo configuración en TRF-2.4G

PUERTO B

PUERTO

PUERTO D

PUERTO C

Tabla 5. Configuración de los puertos del microcontrolador del receptor

Memoria descriptiva. Arquitectura de Software

*NOTA: Durante las simulaciones se detectó problemas en la configuración del modo de funcionamiento del SPI (modo maestro) si este pin no era configurado como salida, aunque no fuera usado. Concretamente, no configurar el pin SS como salida era la causa que provocaba, durante la ejecución del programa, la reconfiguración automática de la interfaz SPI del micro de modo maestro a modo esclavo, impidiendo la comunicación con el transceptor TRF-2.4G.

2.2 Timers Se han configurado para generar interrupciones que ejecutan instrucciones en las que el tiempo juega un factor crítico. En todos los casos se ha empleado la unidad de comparación en el modo que resetea el contador del timer al alcanzar el valor almacenado en el registro OCR de la unidad de comparación correspondiente (Clear Timer on Compare Match). Para el ajuste tanto del preescalado como del valor del registro OCR se ha empleado la herramienta freeware AVRCalc, suministrada dentro del CD adjunto a esta memoria. Funciona bajo el sistema operativo Windows en sus versiones de 32 bits, y no requiere instalación. Su funcionamiento es muy sencillo. Basta con introducir a través de su interfaz gráfica (Figura 33) el valor de la frecuencia del microprocesador, el preescalado deseado y el timer requerido, y el programa calcula el valor del registro OCR (OCR1ALow+OCR1AHigh) necesario para provocar la interrupción en el tiempo que le fue solicitado.

55

Memoria descriptiva. Arquitectura de Software

56

Figura 33.Configuración del preescalado y del registro OCR de la unidad de comparación.

La función void inicio_counter(void) contiene las inicializaciones de los timers. 2.3 ADC En

la

inicialización

del

conversor

analógico

digital

(void

inicio_adc(void)) son configurados los siguientes elementos: •

La entrada del voltaje de referencia. Se configura para que la referencia del voltaje sea la tensión aplicada en el pin AREF del microcontrolador.



El ajuste a izquierda o derecha de la conversión al ser guardada en el registro ADC. Los 10 bits resultados de la conversión son guardados en un registro de 16 bits, el ADC, compuesto por dos registros de ocho bits a los que se puede acceder de forma independiente, el ADCH y el ADCL. Configurando cómo se almacena la conversión para que ésta aparezca ajustada a la izquierda en el registro ADC, los ocho bits más significativos de la conversión serán guardados en el registro ADCH, parte alta del registro ADC, y los dos restantes en el registro ADCL. De esta forma, accediendo al registro ADCH se obtienen los valores de una

Memoria descriptiva. Arquitectura de Software

conversión de ocho bits. En el proyecto se ha trabajado con ocho bits de resolución, con lo que se ha configurado el ajuste de conversión a la izquierda. •

La velocidad de la conversión, mediante el ajuste del preescalado. A mayor velocidad los resultados de las conversiones se obtienen en un tiempo menor, pero se pierde precisión de conversión.

2.4 SPI La interfaz SPI, usada para establecer la comunicación entre el microcontrolador y el dispositivo de radio, se configura en modo maestro para que el microcontrolador tenga el control sobre la conexión. En este modo de operación el microcontrolador marca velocidad de la comunicación, que es ajustada a 1 MHz mediante la configuración del preescalado en el correspondiente registro de control. El código que inicializa la interfaz SPI se encuentra dentro de la función void trf24g_iniciar(void). 2.5 UART Para la configuración del puerto de comunicaciones UART se llama a una función contenida en la librería de control de Peter Fleury, a la cual hay que pasarle como único argumento el baudrate deseado en la conexión. La inicialización del puerto de comunicaciones UART es efectuada con la función void init_uart(void). 2.6 TRF-2.4G La configuración del transceptor TRF-2.4G se realiza mediante el envío de una larga trama de bits desde el puerto de comunicaciones serie al que está conectado, la interfaz SPI. Esta trama de bits es generada en el microcontrolador, según la configuración que el usuario haya establecido en la programación. La trama enviada corresponde a un vector que es

57

Memoria descriptiva. Arquitectura de Software

58

programado tomando como referencia los campos contenidos en la Tabla 20 (página 145). Previo a la descarga de la trama en el TRF-2.4G, el microcontrolador tiene que activar el modo de configuración poniendo a nivel alto la entrada Chip Select (CS) del transceptor. La función void trf24g_iniciar(void) contiene las inicializaciones tanto del puerto de comunicaciones SPI como del transceptor TRF-2.4G.

3 Software para la gestión del TRF-2.4G El archivo trf24g.c recogido en el Anexo B, sección B.1.4, contiene las funciones que manejan el dispositivo TRF-2.4G. TRF-2.4G FUNCIÓN

DESCRIPCIÓN

void trf24g_reconfigurar(uint8_t canal, bool rx)

Cambia el canal de frecuencia y el modo de emisor a receptor o viceversa de los transceptores de radio.

voidtrf24g_enviar(void *payload_a_enviar)

Envía a través del módulo de radio la información contenida en el vector al que apunta la dirección payload_a_enviar. Se ha configurado el payload con un tamaño de 21 bytes.

bool trf24g_recibir(void *payload_recibido)

Comprueba si se ha recibido un paquete válido, y si es así, lo graba en el vector al que apunta la dirección payload_recibido y devuelve un 1. En caso contrario, devuelve un 0.

Tabla 6. Resumen de funciones. Gestión del TRF-2.4G.

4 Software para la gestión del puerto de comunicaciones UART Se han implantado dos funciones que se apoyan en la librería desarrollada por Peter Fleury para el manejo de la interfaz UART. Dichas funciones se localizan en los archivos recogidos en las secciones B.1.3 y 0 del Anexo B.

Memoria descriptiva. Arquitectura de Software

59

UART FUNCIÓN

DESCRIPCIÓN Envía a través del puerto UART el dato pasado a la función convirtiéndolo previamente en una cadena hexadecimal.

void hyperterminalelemento(uint8_t num) void hyperterminalcadena uint8_t longitud_cad)

(uint8_t

*cad,

Envía a través del puerto UART el vector de tamaño longitud_cad y de dirección de inicio cad.

Tabla 7. Resumen de funciones. Gestión de UART.

5 Mecanismos de control Los mecanismos de control se han implantado con el fin de aportar al usuario información sobre el estado de funcionamiento de los dispositivos y sobre los errores que se hayan producido durante el envío de información a través del enlace inalámbrico. Esta información es visualizada a través de los diodos led de estado y control que se recogen en la tabla que sigue a continuación (Tabla 8). La numeración de los leds corresponde con la empleada en los diagramas de flujo mostrados más adelante. La localización de estos leds en las placas de circuito está indicada en la Figura 29 y Figura 30 del capítulo de arquitectura de Hardware.

Memoria descriptiva. Arquitectura de Software

60

EMISOR LED



COLOR

SIGNIFICADO

ENCENDIDO

1

El emisor está operativo

BUFFER LLENO

2

El ADC ha generado más datos de los que el transceptor ha podido enviar. Se ha llenado el buffer circular

RECEPTOR LED



COLOR

SIGNIFICADO

ENCENDIDO

3

El receptor está operativo

BUFFER LLENO

4

La velocidad a la que se han recibido los datos desde el emisor ha sido mayor que la de salida de los datos por el puerto A. Se ha llenado el buffer circular

PÉRDIDA DE DATOS

5

Algún paquete enviado no ha llegado a destino o no se ha recibido correctamente.

STAND BY

6

El receptor está a la espera de datos del emisor. También se activa cuando el buffer circular se queda vacío.

SINCRONIZACIÓN

6

Intermitente

Se está variando la frecuencia con lo que los datos son extraídos del buffer circular. Se está sincronizando con la frecuencia del ADC del emisor.

Tabla 8. Leds de estado y control.

La comunicación inalámbrica encierra el riesgo de la pérdida de datos. Este riesgo está asociado a factores tales como el nivel de ruido del entorno, los obstáculos que encuentra la señal en su propagación por el aire o la distancia a la que se encuentra el módulo receptor. Detectar cuando se ha perdido un paquete, o cuando éste ha sido rechazado por el receptor como consecuencia de los errores provocados durante la transmisión, resulta ser de vital importancia para conocer la calidad de la comunicación inalámbrica y la influencia que tiene sobre ella el entorno. A continuación se explica el sencillo mecanismo implantado por Software para detectar la pérdida de datos en la transmisión inalámbrica: cada vez que un grupo de seis valores binarios de muestras cuantificadas son generados en el emisor, se almacenan en el buffer circular junto con una variable (llamada SINCRONIZADOR) que marca el comienzo del próximo grupo de seis valores que van a ser generados por el ADC. El transceptor envía por radio lo que se va almacenando en el buffer circular

Memoria descriptiva. Arquitectura de Software

61

del emisor. En el receptor se comprueba que entre cada tanda de valores de

muestras

de

las

seis

señales

analógicas

está

la

variable

SINCRONIZADOR. Cuando esta coincidencia no sucede, se indica el error activando el led Pérdida de Datos.

6 Estructura del módulo de emisión El archivo Envio_senales.c contiene las funciones que gestionan el módulo de emisión. Estas funciones, convenientemente explicadas en la sección de código fuente (Anexo B.1), se han recogido en diagramas de flujo que facilitan su entendimiento y comprensión. Explicaciones necesarias de la implantación de código empleada acompañan a los diagramas. El color de los bloques correspondientes a los leds de estado y control simboliza si el led ha pasado de estar apagado a encendido viceversa

.

Figura 34.Diagrama de flujo de la función main() contenida en Envio_senales.c

,o

Memoria descriptiva. Arquitectura de Software

La función atendida en la interrupción de la unidad de comparación del timer 2 (Figura 35) corresponde a la conversión de las ondas analógicas en valores digitales y a la carga de estos valores en el buffer circular del emisor (Figura 36). Tras cada interrupción se evalúa si la cantidad de datos contenidos en el buffer es suficiente para ser enviados a través del TRF2.4G (Figura 37).

Figura 35. Diagrama de flujo de la función atendido por la interrupción de la unidad de comparación del timer 2 en Envio_senales.c

62

Memoria descriptiva. Arquitectura de Software

La variable SINCRONIZADOR, que permite detectar la pérdida de datos durante la transmisión, es cargada en el buffer circular nada más saltar la interrupción de la unidad de comparación A del timer 1. Posteriormente se muestrean y se cargan en el buffer circular las dos señales generadas por los potenciómetros y la señal conectada a la toma auxiliar. Para completar la simulación del envío de seis señales analógicas, se procede a cargar en el buffer circular datos procedentes de tres vectores guardados en memoria: Signal4, Signal5 y Signal6. Es importante el orden en el que los datos son guardados en el buffer circular. Será tenido en cuenta a la hora de visualizar en el receptor las señales enviadas.

Figura 36.Diagrama de flujo de la función llenado_buffer_emisor() contenida en Envio_senales.c

63

Memoria descriptiva. Arquitectura de Software

Figura 37. Diagrama de flujo de la función vaciado_buffer_emisor() contenida en Envio_senales.c

En la Tabla 9 se resumen las funciones y variables globales descritas con anterioridad.

64

Memoria descriptiva. Arquitectura de Software

65

EMISOR FUNCIÓN

DESCRIPCIÓN

int main(void)

Detecta cada vez que se cargan nuevos datos en el buffer circular, y evalúa si hay datos suficientes para realizar un envío por radio

SIGNAL (SIG_OUTPUT_COMPARE1A)

Actualiza los índices de los vectores que contienen las muestras generadas por software

SIGNAL (SIG_OUTPUT_COMPARE2)

Llena el buffer circular con los datos obtenidos del ADC (Analog to Digital Converter), y con los valores de las señales implantadas digitalmente.

void llenado_buffer_emisor(uint8_t dato)

Graba en el buffer circular el dato pasado a la función. Analiza la capacidad restante del buffer circular

void vaciado_buffer_emisor(uint8_t *buff)

Extrae del buffer circular los datos que se van a enviar por radio a través del trf24g. Envía los datos.

FUNCIÓN

TAMAÑO

DESCRIPCIÓN

BUFFER_CIRCULAR[]

uint8_t

Vector en el que se almacena temporalmente los valores digitales de las muestras antes de ser enviados.

icabeza

uint8_t

Índice del vector buffer circular que indica en que posición se guardó el último dato.

icola

uint8_t

Índice del vector buffer circular que indica de que posición se extrajo el último dato.

aux_valorADC1-6

uint8_t

Índices que marcan la posición del vector Signal1-6 de los cuales son extraídos los valores que simulan el muestreado de una onda.

aux_timerADC

uint8_t

Variable bandera que indica que se ha llenado el buffer circular con nuevos datos procedentes del muestreado.

Tabla 9. Resumen de funciones y variables globales del archivo Envio_senales.c

7 Estructura del módulo de recepción El archivo Recibo_senales.c contiene

las funciones que gestionan el

módulo de recepción. Todas las funciones están detalladamente explicadas en el Anexo B.2; No obstante, para facilitar la comprensión se darán algunas explicaciones del código programado en estas funciones.

Memoria descriptiva. Arquitectura de Software

Figura 38. Diagrama de flujo de la función main() contenida en Recibo_senales.c

La función

int main(void)

(Figura 38) evalúa constantemente si un nuevo

paquete ha sido recibido en el transceptor. También comprueba si el emisor está en estado stand by esperando recibir nuevos datos, para lo cual analiza si la extracción de valores del buffer circular para visualización por el puerto A está habilitada (habilitación de la interrupción asociada a la unidad de comparación A del timer 1).

66

Memoria descriptiva. Arquitectura de Software

Figura 39. Diagrama de flujo de la función llenado_buffer_receptor() contenida en Recibo_senales.c

Figura 40. Diagrama de flujo de la función vaciado_buffer_receptor() contenida en Recibo_senales.c

67

Memoria descriptiva. Arquitectura de Software

Figura 41. Diagrama de flujo de la función atendido por la interrupción de la unidad de comparación A del timer 1 en Envio_senales.c

La recuperación de las muestras cuantificadas de las señales enviados a través del enlace inalámbrico se lleva a cabo en la atención de la interrupción de la unidad de comparación A del timer 1. Cada vez que salta esta interrupción, programada para que sea a la misma frecuencia a la que lo hace la interrupción del convertidor ADC del emisor, se extrae un dato del buffer circular y se comprueba si es el SINCRONIZADOR. Si es así, se procede a la extracción de seis datos consecutivos del buffer

68

Memoria descriptiva. Arquitectura de Software

circular. De estos seis datos sólo uno será copiado en los pines del puerto A, y será aquel cuya posición coincida con el valor de la variable aux_cambio_senal. El resto de valores extraídos se reescriben sobre una misma variable. De esta forma, cambiando el valor de la variable aux_cambio_senal se elige qué señal es visualizada en cada momento. Anteriormente ya se había comentado la importancia que tiene la variable SINCRONIZADOR en el proceso de detección de pérdida de datos. Lo que no se había mencionado es la función que desempeña en la correcta correspondencia entre datos binarios y la señal analógica asociada. Esto es, la variable SINCRONIZADOR permite identificar qué datos corresponden a cada señal. Antes de que los datos de una conversión se guarden en el emisor, se pone un marcador (la variable SINCRONIZADOR), y posteriormente se almacenan estos datos, correspondientes a cada una de las seis señales, para ser enviados en un orden determinado por el transceptor. En el receptor se detecta en cada ciclo de descarga de datos el marcador, para de esta forma extraer en el mismo orden determinado los valores de las muestras cuantificadas de las seis señales. Si en el momento en el que el programa tiene que evaluar el marcador no hay coincidencia de valores entre el dato extraído del buffer circular y la variable SINCRONIZADOR, se rechaza el dato, se enciende el led de pérdida de datos (led número 5), y se vuelve a hacer una nueva extracción del buffer circular. La comprobación del marcador es un proceso necesario que hay que hacer constantemente. Cuando el receptor detecta una pérdida de datos, o se llena por un momento el buffer circular, los nuevos datos almacenados en él rompen el orden con el que habían sido almacenados los anteriores. Si no se usase el marcador, cada vez que se produjese un error, se produciría una conmutación de las señales recibidas. Se perdería la referencia de cual muestra cuantificada corresponde a cada señal.

69

Memoria descriptiva. Arquitectura de Software

Figura 42. Diagrama de flujo de la función reajuste_sincronizado() contenida en Recibo_senales.c

En las primeras versiones del Cable Virtual Vía Radio se detectó que cada cierto tiempo el buffer circular del módulo receptor se quedaba vacío. La velocidad a la que la interrupción de la unidad de comparación sacaba los datos del buffer circular era mayor que la frecuencia con la que eran

70

Memoria descriptiva. Arquitectura de Software

generados en el receptor, pese a estar programados para que funcionasen a la misma velocidad. Probando diversos ajustes de la frecuencia de interrupción del timer del receptor para compensar las diferencias de velocidad en los cristales de cuarzo, intrínsecas a las limitaciones de los componentes físicos, fue imposible impedir que a la larga se terminase por vaciar o llenar el buffer circular. De esta forma se llegó a la conclusión de la necesidad de implantar una solución que de forma dinámica regulase esta frecuencia de la interrupción. La función

void reajuste_sincronizacion(void),

llamada cada vez que se ha

accedido al buffer circular del receptor, evalúa la capacidad que resta en el buffer circular para guardar datos nuevos. Cuando esta capacidad se encuentra por debajo o por encima de unos límites establecidos, se varía la frecuencia con la que el receptor extrae los datos de su buffer circular modificando adecuadamente el valor del registro OCR1A (registro de comparación con el contador del timer). Si se detecta que el buffer circular se está llenando, se aumenta la frecuencia con la que se sacan datos del mismo (se reduce el valor de OCR1A), y si por el contrario se detecta que el buffer circular se está vaciando, se reduce le frecuencia de extracción de datos aumentando el valor de OCR1A. La variación del valor de OCR1A depende de las veces que el buffer circular entre en su zona crítica de llenado o vaciado. La primera vez que se accede a la zona crítica se varía en un bit el valor de OCR1A. Las sucesivas veces que sigua entrando en la misma zona crítica se contabilizan, y se va dando un margen cada vez mayor de veces de acceso a la zona crítica antes de variar de nuevo el registro OCR1A. De esta manera se pretende dar tiempo al sistema para que reaccione y salga de la zona crítica. Por otro lado se ha marcado un límite superior e inferior de seguridad que el valor de OCR1A no puede superar, marcando así la máxima variación de frecuencia permitida en la extracción de datos. Es

71

Memoria descriptiva. Arquitectura de Software

importante la máxima estabilidad posible en esta frecuencia, que simula los tiempos de operación de un conversor digital analógico. Por otro lado este tipo de implantación dinámica por contadores y limitadores impide que el sistema entre en un fenómeno de inestabilidad detectado durante las primeras versiones de este Software. En un principio se implantó la modificación del registro OCR1A cada vez que el buffer entraba en zona crítica. Este hecho provocaba a la larga bruscos cambios de frecuencia en la unidad de comparación que hacían que el buffer circular pasase de una zona crítica a otra (de estar medio vacío a medio lleno o viceversa) a gran velocidad. Al final el buffer circular terminaba por desbordarse o por quedarse totalmente vacío ante la imposibilidad de reajustar a tiempo la rápida velocidad con la que se accedía a las zonas críticas del buffer circular. La mejor forma de entender este efecto de inestabilidad es con un símil: dos jugadores de tenis que se están pasando la pelota de un lado a otro del campo. El campo simbolizaría en su longitud el tamaño del buffer circular correspondiendo las zonas de saque de bola a las zonas críticas del buffer circular; la situación de la pelota sería la capacidad que le resta al buffer circular, y los tenistas los mecanismos que, actuando sobre el OCR1A, modifican dicha capacidad. En un principio los tenistas empiezan con un peloteo (el buffer pasa de una zona crítica a otra); se van pasando la bola de tal forma que cada vez golpean con más fuerza la raqueta (los incrementos y decrementos del valor del registro OCR1A son cada vez mayores), así indefinidamente hasta que finalmente la bola se sale del campo (el buffer circular se vació o llenó por completo).

72

Memoria descriptiva. Arquitectura de Software

73

RECEPTOR FUNCIÓN

DESCRIPCIÓN

int main(void)

Carga en el buffer circular las nuevas tramas recibidas a través del TRF-2.4G. Cuando se ha llenado parcialmente, habilita las interrupciones de la unidad de comparación A del timer1. Detecta si se ha presionado el pulsador conectado a PINC0, y si es así cambia la variable aux_cambio_senal.

SIGNAL(SIG_OUTPUT_COMPARE1A)

Recupera los datos del BUFFER CIRCULAR y los saca en un orden determinado por el puerto A. Analiza si se han perdido datos durante la transmisión.

void llenado_buffer_receptor(uint8_t *buff)

Graba en el buffer circular el dato pasado a la función. Analiza la capacidad restante del buffer circular.

uint8_t vaciado_buffer_receptor(void)

Obtiene del vector buffer circular un dato. Si no contiene datos nuevos, se devuelve el sistema al estado inicial.

void reajuste_sincronizacion(void)

Modifica la velocidad de extracción de datos del buffer circular en función de la velocidad de recepción de datos desde el emisor. Para ello evalúa la capacidad que tiene el buffer circular para recibir nuevos datos.

VARIABLES GLOBALES

TAMAÑO

DESCRIPCIÓN

BUFFER_CIRCULAR[]

uint8_t

Vector en el que se almacena temporalmente los valores digitales de las muestras antes de ser visualizados.

Icabeza

uint8_t

Índice del vector buffer circular que indica en que posición se guardó el último dato.

Icola

uint8_t

Índice del vector buffer circular que indica de que posición se extrajo el último dato.

cuenta_sincronizacion_vaciado

uint8_t

Variable contador que se incrementa al llamar a la función reajuste_sincronización cada vez que el buffer circular está a punto de vaciarse

cuenta_sincronizacion_llenado

uint8_t

Variable contador que se incrementa al llamar a la función reajuste_sincronización cada vez que el buffer circular está a punto de llenarse

uint8_t

Variable que marca el valor que debe alcanzar la variable contador cuenta_sincronizacion_vaciado para que se produzca un incremento del valor del registro OCR1A.

uint8_t

Variable que marca el valor que debe alcanzar la variable contador cuenta_sincronizacion_llenado para que se produzca un decremento del valor del registro OCR1A.

aux_vaciado

uint8_t

Variable en la que se guarda la extracción del buffer circular que debe coincidir con el valor de la variable SINCRONIZADOR.

aux_cambio_senal

uint8_t

Variable que indica la señal cuyos valores digitales de muestras son visualizados a través del puerto A.

aux_sincronizado

uint8_t

Variable bandera que indica que las valores digitales de las muestras se están extrayendo del buffer circular en el orden correcto.

TOPE_CUENTA_SINCRONIZACION _VACIADO_DINAMICO TOPE_CUENTA_SINCRONIZACION _LLENADO_DINAMICO

Tabla 10. Resumen de funciones y variables globales del archivo Recibo_senales.c

Memoria descriptiva. Resultados y Experimentos

Capítulo 5 RESULTADOS Y EXPERIMENTOS

En este capítulo se exponen los principales resultados obtenidos en el proyecto Cable Virtual Vía Radio. Estos resultados están materializados en un prototipo físico que permite implantar un enlace inalámbrico de comunicaciones entre dos puntos. La calidad del enlace de comunicación que establece el prototipo se ha evaluado realizando una serie de pruebas. Su descripción y resultados se recogen en la última sección de este capítulo.

1 Descripción del dispositivo desarrollado El resultado tangible del proyecto Cable Virtual Vía Radio es un dispositivo de comunicación inalámbrica capaz de transmitir señales analógicas entre dos puntos separados a una distancia superior a 100 metros. Este dispositivo está compuesto por dos módulos independientes, uno de emisión y otro de recepción. Las funciones que realiza cada uno de los módulos son las siguientes: el emisor coge las señales analógicas, simuladas con dos potenciómetros y una entrada externa, las muestrea y las convierte en datos digitales. Paralelamente genera tres ondas por Software que envía junto con los valores digitales de las señales muestreadas al emisor. Esta información se transporta en ondas de radio hasta el receptor, donde, tras procesar adecuadamente la información recibida, visualizará a través de ocho diodos led destinados a tal efecto los valores digitales de las señales. Son seis las señales que se visualizan en el receptor. Dos corresponden a señales analógicas muestreadas en el emisor,

74

Memoria descriptiva. Resultados y Experimentos

75

y las otras cuatro corresponden a señales generadas por Software también en el emisor. Mediante un pulsador se cambia la señal que es visualizada en cada momento. Diversos diodos led informan al usuario del estado de los módulos y del enlace

de

comunicaciones

establecido,

permitiéndole

tomar

las

actuaciones que considere necesarias en función de dicha información. En la fotografía de la Figura 43 se muestra el dispositivo final en conjunto. La placa situada a la izquierda corresponde al emisor y la de la derecha al receptor.

Figura 43.Fotografía de los módulos de emisión y recepción que componen el prototipo de Cable Virtual Vía Radio.

A continuación se exponen las principales características físicas que comparten ambas placas: •

Banda de frecuencia de transmisión: ISM Band de 2.4GHz



Alimentación: pila de litio recargable de 3.6 Voltios.



Pesos:

Memoria descriptiva. Resultados y Experimentos

o Módulo sin batería: 68 gramos. Se estima que las partes sobrantes de la placa (de momento no ha sido recortada para dejar espacio para futuras ampliaciones) y el circuito de conexionado del transceptor de radio (se ha decidido no soldar el transceptor directamente para posibilitar su migración a otras placas) incrementan el peso de cada módulo alrededor de unos 25 gramos. o Batería de litio: 30 gramos •

Dimensiones: En la Figura 44 se muestran las principales dimensiones de ancho y largo de los módulos. La altura máxima, marcada por la talla del regulador de tensión, es de 2.3 cm.

Figura 44. Dimensiones de los de los módulos de emisión y recepción que componen el prototipo de Cable Virtual Vía Radio



Comunicaciones: Ambas placas incorporan conectores con la interfaz UART y la interfaz SPI del microcontrolador (Figura 45). En el capítulo de Arquitectura de Hardware se explican las conexiones que se necesitan para comunicar estos dos puertos con el ordenador.



Interfaz de comunicación con el usuario: los leds de estado y control dan información relevante sobre el estado del enlace de comunicaciones (Figura 45). En la sección de Mecanismos de

76

Memoria descriptiva. Resultados y Experimentos

control del capítulo Arquitectura de Software se recoge una tabla con la el significado de cada uno de leds.

Figura 45. Fotografía explicativa de los de los módulos de emisión y recepción que componen el prototipo de Cable Virtual Vía Radio.

2 Pruebas realizadas Las dos pruebas realizadas con el prototipo han tenido como objetivo evaluar la calidad del enlace inalámbrico de comunicaciones. En una de ellas, la prueba de sincronismo, se ha procedido a analizar las actuaciones realizadas por el Software del receptor para corregir el defecto de

77

Memoria descriptiva. Resultados y Experimentos

sincronismo entre las velocidades de los cristales de cuarzo generadores de los relojes de los micros. En la segunda, la prueba de distancia, se ha analizado el alcance de distancia del enlace de comunicación. 2.1 Descripción 2.1.1 Prueba de sincronismo En la prueba de sincronismo se han recogido los reajustes de sincronización llevados a cabo por el receptor durante el funcionamiento en condiciones normales del dispositivo. Estos reajustes son realizados para evitar que el buffer circular del receptor, en el cual se almacenan temporalmente los datos de las ondas digitales, se vacíe o sature por efecto de las diferencias de velocidad de reloj entre los microcontroladores del emisor y receptor. Para detectar los reajustes de sincronización se ha empleado la interfaz UART del microcontrolador del receptor, a través de la cual se ha ido extrayendo en tiempo real el valor del registro OCR1A cada vez que era modificado. Los datos enviados al ordenador eran recogidos y visualizados en un programa terminal del puerto serie del ordenador. Con la ayuda de un cronómetro se iban registrando los tiempos de comienzo de las resincronizaciones (Figura 46). Los

programas utilizados en la

prueba para recoger el valor del registro OCR1A y registrar los tiempos de las acciones han sido el Terminal v1.9b [6] y el Multitrack Stopwatch [7].

78

Memoria descriptiva. Resultados y Experimentos

79

Figura 46. Prueba de sincronismo. Registro de tiempos de reajustes de sincronización.

Se recuerda que el valor contenido en el registro OCR1A

del micro

representa el valor de cuenta al cual tiene que llegar el contador del timer1 para ejecutar una interrupción. Así pues, su valor fija la frecuencia con la que los datos son extraídos del módulo receptor. En la sección Estructura del módulo de recepción del capítulo Arquitectura de Software se explican los motivos por los que hay que modificar este registro para que funcione correctamente el dispositivo.

2.1.2 Prueba de distancia En la prueba de distancia se ha analizado la cobertura del prototipo de enlace inalámbrico de comunicaciones. En campo abierto, y con la información aportada por los leds de estado y control, se ha ido observando el comportamiento del enlace de comunicaciones a diferentes distancias de separación entre las placas de emisión y recepción.

Memoria descriptiva. Resultados y Experimentos

80

2.2 Resultados 2.2.1 Prueba de sincronismo Cinco han sido las repeticiones realizadas de la prueba a corta distancia. En cada una de ellas se ha recogido el instante de tiempo en el que el programa de Software del receptor ha empezado a modificar el registro OCR1A como consecuencia de encontrarse en una situación de vaciado (

)

o llenado (

)

de su buffer circular. El valor inicial del

registro OCR1A con el que arranca el sistema es el 0x1402. Los datos obtenidos de las pruebas con la frecuencia final teórica reajustada se recogen en las tablas: Tabla 11, Tabla 12, Tabla 13, Tabla 14 y Tabla 15. ACTUACIONES DEL REAJUSTE DE SINCRONIZACIÓN. PRUEBA 1ª

[h:mm:ss]

TIEMPO DESDE EL ÚLTIMO SUCESO

OCR1A Inicial

OCR1A Final

FRECUENCIA TEÓRICA AJUSTADA

1

0:03:42

0:03:42

1402

13fd

195,43

2

0:05:13

0:01:31

13fd

1406

195,08

3

0:07:02

0:01:49

1406

13fd

195,43

4

0:09:17

0:02:15

13fd

1407

195,05

5

0:11:12

0:01:55

1402

1407

195,05

6

0:13:43

0:02:31

1407

13fd

195,43

7

0:15:17

0:01:34

13fd

1400

195,31

8

0:16:02

0:00:45

1400

1407

195,05

9

0:17:01

0:00:59

1407

1406

195,08

10

0:17:45

0:00:44

1406

1402

195,24



ESTADO DEL BUFFER

TIEMPO TOTAL

Tabla 11.Primera prueba de funcionamiento a corta distancia.

Memoria descriptiva. Resultados y Experimentos

81

ACTUACIONES DEL REAJUSTE DE SINCRONIZACIÓN. PRUEBA 2ª TIEMPO TOTAL [h:mm:ss]

TIEMPO DESDE EL ÚLTIMO SUCESO

OCR1A Inicial

OCR1A Final

FRECUENCIA TEÓRICA AJUSTADA

1

0:01:34

0:01:34

1402

1405

195,12

2

0:02:18

0:00:44

1405

1407

195,05

3

0:03:23

0:01:05

1407

13fd

195,43

4

0:04:58

0:01:35

13fd

1407

195,05

5

0:06:55

0:01:57

1407

13fd

195,43

6

0:10:09

0:03:14

13fd

1407

195,05

7

0:11:54

0:01:45

1407

13fd

195,43

8

0:14:08

0:02:14

13fd

1400

195,31

9

0:15:50

0:01:42

1400

1407

195,05

10

0:16:46

0:00:56

1402

1405

195,12



ESTADO DEL BUFFER

Tabla 12. Segunda prueba de funcionamiento a corta distancia.

ACTUACIONES DEL REAJUSTE DE SINCRONIZACIÓN. PRUEBA 3ª

[h:mm:ss]

TIEMPO DESDE EL ÚLTIMO SUCESO

OCR1A Inicial

OCR1A Final

FRECUENCIA TEÓRICA AJUSTADA

1

0:02:17

0:02:17

1402

1407

195,05

2

0:04:51

0:02:34

1407

1407

195,05

3

0:07:06

0:02:15

1407

13fd

195,43

4

0:08:43

0:01:37

13fd

1404

195,16

5

0:09:32

0:00:49

1404

1407

195,05

6

0:10:08

0:00:36

1402

1407

195,05

7

0:12:01

0:01:53

1407

1401

195,27

8

0:14:38

0:02:37

1401

1406

195,08

9

0:17:03

0:02:25

1402

1407

195,05

10

0:18:30

0:01:27

1407

13fd

195,43



ESTADO DEL BUFFER

TIEMPO TOTAL

Tabla 13. Tercera prueba de funcionamiento a corta distancia.

Memoria descriptiva. Resultados y Experimentos

82

ACTUACIONES DEL REAJUSTE DE SINCRONIZACIÓN. PRUEBA 4ª

[h:mm:ss]

TIEMPO DESDE EL ÚLTIMO SUCESO

OCR1A Inicial

OCR1A Final

FRECUENCIA TEÓRICA AJUSTADA

1

0:01:01

0:01:01

1402

1407

195,05

2

0:03:41

0:02:40

1407

13fd

195,43

3

0:05:53

0:02:12

13fd

13fe

195,39

4

0:08:14

0:02:21

1402

1407

195,05

5

0:09:36

0:01:22

1407

13fd

195,43

6

0:11:45

0:02:09

13fd

1407

195,05

7

0:11:59

0:00:14

1402

1401

195,27

8

0:12:32

0:00:33

1401

1407

195,05

9

0:14:59

0:02:27

1402

1401

195,27

10

0:17:14

0:02:15

1401

1407

195,05



ESTADO DEL BUFFER

TIEMPO TOTAL

Tabla 14. Cuarta prueba de funcionamiento a corta distancia.

ACTUACIONES DEL REAJUSTE DE SINCRONIZACIÓN. PRUEBA 5ª

[h:mm:ss]

TIEMPO DESDE EL ÚLTIMO SUCESO

OCR1A Inicial

OCR1A Final

FRECUENCIA TEÓRICA AJUSTADA

1

0:02:24

0:02:24

1402

13fd

195,43

2

0:04:56

0:02:32

13fd

1402

195,24

3

0:09:24

0:04:28

1402

13fd

195,43

4

0:11:31

0:02:07

13fd

1407

195,05

5

0:13:06

0:01:35

1407

1402

195,24

6

0:21:19

0:08:13

1402

1400

195,31

7

0:23:48

0:02:29

1400

1405

195,12

8

0:24:28

0:00:40

1405

1407

195,05



ESTADO DEL BUFFER

TIEMPO TOTAL

Tabla 15. Quinta prueba de funcionamiento a corta distancia.

Memoria descriptiva. Resultados y Experimentos

Del adecuado análisis de la información contenida en estas tablas se puede llegar a un buen entendimiento de lo que ha estado ocurriendo en el módulo de recepción durante la prueba: •

Obsérvese que en algunas ocasiones el valor del registro OCR1A al principio de un reajuste no coincide con el valor con el fue reajustado en una actuación anterior del Software (Se han rellenado de color naranja las casillas a las que se hecho referencia). Esto es debido a que entre las dos actuaciones se han reseteado las variables del programa como consecuencia de un vaciado momentáneo del buffer circular. (Cuando el buffer se vacía por completo, la programación devuelve todo el sistema al estado inicial a la espera de recibir un paquete válido de información en el transceptor). Por un instante se ha cortado la comunicación.



Para asegurar una reducida variación en la frecuencia de extracción de datos del receptor se limitó la variación del registro OCR1A a un valor mínimo (0x13fd) y máximo (0x1407). Como se puede observar en las tablas, estos topes se alcanzan con gran frecuencia durante los reajustes de sincronizado (casillas rellenadas en color rosa). Si estos topes no existiesen, es muy probable que en cada actuación del resincronizador se fuese produciendo un progresivo incremento de las variaciones del registro OCR1A hasta frecuencias de extracción de datos del buffer circular que ocasionasen su vaciado o llenado completo. El programa de reajuste de sincronización, ante frecuencias de extracción alejadas de las de carga de datos en el buffer (correspondiente a la frecuencia con la que las señales analógicas son muestreadas en el emisor), no tendría el suficiente margen para actuar sobre el OCR1A e impedir el vaciado o llenado.

83

Memoria descriptiva. Resultados y Experimentos



84

La Tabla 16 recopila todos los sucesos observados durante la prueba.

TIEMPO TOTAL ACUMULADO DE PRUEBA [h:mm:ss] RESINCRONIZACIONES EN PROCESO DE VACIADO RESINCRONIZACIONES EN PROCESO DE LLENADO RESINCRONIZACIONES TOTALES VACIADO DE BUFFER ERROR LLENADO DE BUFFER ERROR PÉRDIDA DE DATOS

1:34:43 19 29 48 7 0 0

Tabla 16. Resumen de los sucesos acontecidos durante las pruebas a corta distancia.

A partir de los datos de la prueba se puede estimar una frecuencia media con la que se producirían las sincronizaciones y los vaciados de buffer en unas condiciones normales de funcionamiento del prototipo (Tabla 17). Durante la prueba no se ha producido ningún error de llenado de buffer o error de procesamiento de datos, con lo que no se ha podido estimar la frecuencia con la que estos podrían llegar a ocurrir. FRECUENCIA MEDIA DE SUCESO [h :mm :ss]

CONCEPTO RESINCRONIZACIONES TOTALES VACIADOS DE BUFFER ERRORES

0:01:58 0:13:32 -

Tabla 17. Frecuencia de sucesos acontecidos durante las pruebas a corta distancia.

A partir de los resultados obtenidos de la prueba de sincronización, y teniendo en cuenta la complejidad y dificultades que encierra la comunicación inalámbrica,

se puede considerar una calidad bastante

aceptable en la transmisión establecida. Tienen que pasar más de trece minutos para que se produzca una pérdida de un paquete transmitido desde el receptor, lo que se traduce en un momentáneo corte de la comunicación.

Memoria descriptiva. Resultados y Experimentos

2.2.2 Prueba a larga distancia La prueba a larga distancia ha reflejado un comportamiento satisfactorio del enlace de comunicaciones a una distancia de 100 m, más de la máxima distancia desde el borde de una pista de atletismo de 400 m hasta su zona central (Figura 47). A través de los leds de estado y control se han observado frecuencias de reajuste de sincronización muy parecidas a las obtenidas en la prueba de sincronismo, lo que presupone unos tiempos medios de sucesos parecidos a los obtenidos en la sección anterior (Tabla 17). La necesidad de movilidad que exigía la prueba no ha permitido estudiar los reajustes de la movilidad del reloj del receptor, pues no se disponía de un ordenador portátil con conexión DB9 (la empleada por el Conector UART).

Figura 47. Prueba de distancia.

85

Memoria descriptiva. Conclusiones

Capítulo 6 CONCLUSIONES

En el proyecto Cable Virtual Vía Radio se ha desarrollado un dispositivo que trata de resolver las necesidades concretas de comunicación en la transmisión de señales analógicas entre un elemento móvil y un elemento fijo. La comunicación inalámbrica vía radio ha resultado ser la mejor alternativa para satisfacer estas necesidades concretas, consistentes en el envío de seis ondas analógicas de frecuencia máxima 100Hz a una distancia no superior a los 100 m. El dispositivo que se ha desarrollado es un prototipo que solventa todos los problemas asociados con el empleo de la tecnología digital en el envío de señales analógicas de forma inalámbrica. La transmisión y el tratamiento digital de la información están completamente solucionados por el dispositivo, restando por ser abordada la parte analógica que permite recuperar en el receptor, a partir de los valores digitales de las muestras, las ondas analógicas transmitidas desde el emisor. Se ha optado por centrar todos los esfuerzos en la parte digital del tratamiento de la información, pues se consideraba más relevante que la parte analógica, en la que se consideró que no se iba a aportar ninguna innovación. Además, como se verá más adelantes en futuros desarrollos, a medida que se ha ido desarrollando el proyecto ha ido cobrando mayor fuerza la idea de realizar una implantación completamente digital en el manejo de la información desde que ésta es capturada en emisión. Esta es una de las razones por las que se ha equipado al receptor con las conexiones necesarias para poder volcar los valores digitales de las señales en un ordenador sin necesidad de volver a ser convertidas en analógicas.

86

Memoria descriptiva. Conclusiones

Los objetivos marcados inicialmente en el proyecto no han sido completados. Como ya se ha comentado anteriormente, las ondas muestreadas en emisión y transmitidas a través del enlace inalámbrico, no se son recuperadas en formato analógico en el receptor. No obstante, como muestran los resultados de las pruebas, se ha conseguido transmitir, con una aceptable calidad en la comunicación, seis señales analógicas (en tres de ellas los valores de sus muestras han sido generados por Software) hasta el módulo de recepción, donde se ha simulado por Software la extracción de datos desde el micro que requeriría una unidad de conversión digital-analógico supuestamente montada en el receptor. Las aportaciones realizadas en el ámbito del manejo de la información digital transmitida son muy interesantes. Se destaca el sistema que compensa el déficit o superávit en la generación de datos en emisión en relación con la extracción de datos en recepción como consecuencia de las diferencias en las velocidades de los relojes de los microcontroladores (para más información consultar la sección Estructura del módulo de recepción del capítulo Arquitectura de Software). Hay que hacer una mención especial a las ingeniosas soluciones adoptadas para programar simultáneamente los dos microcontroladores, y para depurar el código de programación con la ayuda de la interfaz UART del microcontrolador (para más información consultar la sección Programación del microcontrolador. Adaptador ISP y la sección Conector UART-RS232 del capítulo Arquitectura de Hardware).

87

Memoria descriptiva. Futuros desarrollos

Capítulo 7 FUTUROS DESARROLLOS

Para realizar la implantación completa del enlace virtual vía radio quedan por hacer una serie de tareas que se explican a continuación: •

Implantación de los circuitos analógicos que acondicionan las seis ondas analógicas que van a ser muestreadas. Habría que adaptar sus niveles, si no lo están ya, y filtrar el ruido que contengan con una filtro anti-aliasing. Se puede combinar un simple filtro de primer orden (RC) con un filtrado FIR digital.



Implantación del convertidor DAC en el módulo de recepción, que partiendo de las muestras enviadas desde el emisor, recupere las señales analógicas correspondientes a esas ondas.



Encapsular adecuadamente el módulo de emisión y recepción para permitir su correcto funcionamiento y cómodo manejo. El módulo de emisión, el cual va sujeto al cuerpo del deportista durante el entrenamiento, tendrá que estar convenientemente aislado para evitar que el sudor entre en contacto con los circuitos.

A continuación se exponen las propuestas de mejora y las alternativas pensadas para resolver la necesidad de comunicación entre sujeto emisor y estación receptora: •

Resultaría muy interesante analizar las exigencias en el punto de recepción y evaluar la posibilidad de hacer un tratamiento completamente digital de la información en este extremo del enlace inalámbrico. Al igual que se hizo en la fase de pruebas para obtener el valor de un registro del micro del receptor, se pueden extraer los valores de las muestras hacia el ordenador a través de la interfaz UART del microcontrolador. Con la programación adecuada se

88

Memoria descriptiva. Futuros desarrollos

89

gestionará convenientemente la información contenida en los datos volcados.

Esta

implantación

simplificaría

enormemente

la

programación del microcontrolador de recepción, pues las muestras digitalizadas serían enviadas al ordenador a medida que fuesen llegando, haciendo innecesaria la sincronización de su extracción con la velocidad de generación de datos en las unidades DAC del receptor. •

Bidireccionalidad que permita enviar señales de control desde el receptor al emisor con el fin de poder ajustar valores de los sensores incorporados en el cuerpo del deportista, como pudiera ser el ajuste de la longitud de onda del diodo láser del oxímetro (sensor que mide la saturación de oxígeno en sangre), que permitiría conseguir una medición más precisa.



Se podría dotar al enlace de un sistema de cambio automático de canal de frecuencia que ante la detección de ruido o interferencias en la frecuencia de transmisión migrase hacia una frecuencia con menor nivel de ruido. El código de programación necesario para reconfigurar el canal de transmisión de los transceptores está incluido dentro del Software del prototipo.

Memoria descriptiva. Bibliografía

BIBLIOGRAFÍA [1]

AVR Freaks; Foro de consulta sobre temas relacionados con los microcontroladores de AVR; http://www.avrfreaks.net/index.php?name=PNphpBB2&file=index; Consultada por última vez el 20/05/2006.

[2]

Laipac Technology; Transceptor de radio TRF-2.4G; http://www.laipac.com/easy_trf24_eng.htm; Consultada por última vez el 26/05/2006.

[3]

NORDIC Semiconductor; Chip Transceptor de radio nRF2401; http://www.nvlsi.no/index.cfm?obj=product&act=display&pro=64#; Consultada por última vez el 26/05/2006.

[4]

Atmel Corporation; Microcontrolador ATmega8535; http://www.atmel.com/dyn/products/product_card.asp?family_id=607 &family_name=AVR+8%2DBit+RISC+&part_id=2008; Consultada por última vez el 26/05/2006.

[5]

Peter Fleury; Librerías de control para el manejo del puerto UART del microcontrolador ATmega 8535; http://homepage.hispeed.ch/peterfleury/avr-software.html; Consultada por última vez el 26/05/2006.

[6]

Bray++; Terminal v1.9b; http://bray.velenje.cx/; Consultada por última vez el 5/06/2006.

[7]

MORIMOTO Shouji; Multitrack Stopwatch; http://www2.neweb.ne.jp/wd/morimoto/en/mwatch/index.html; Consultada por última vez el 5/06/2006.

90

Memoria descriptiva.

91

Estudio económico.

Parte II ESTUDIO ECONÓMICO

92

Estudio económico.

El dispositivo desarrollado en este proyecto es un prototipo para aplicación concreta en un proyecto de mayor envergadura. Los objetivos perseguidos no son comerciales, por lo que no se considera necesario realizar un estudio económico del mismo.

93

.

94

Anexos.

95

Parte III ANEXOS

Anexos.

Anexo A

96

PLACA DE DESARROLLO PARA EL MICRO

ATMEGA8535

A.1 Introducción Los microcontroladores de la familia AVR de Atmel, como es el caso del ATmega8535, gozan de una gran popularidad entre los aficionados a la electrónica y la programación. En el mercado se pueden encontrar diversas soluciones de starter kits desarrollados por diferentes fabricantes siguiendo las instrucciones técnicas y los esquemas aportados por Atmel. Entre estas soluciones, se destaca la placa de desarrollo STK200 diseñada por Kanda (Figura 48). Se trata de una placa con las funcionalidades más básicas (consultar referencia [8] para más información) entre las que destaca la programación ISP (In System Programming), que emplea la interfaz SPI (Serial Peripheral Interface) del micro. El precio de esta placa es reducido (58,5€+gastos de envío) en comparación con sus hermanos gemelos de la casa Atmel, cuyas soluciones de placas de programación y desarrollo superan los 100€. También es cierto que son placas que incorporan importantes características como puedan ser las interfaces que permiten la depuración del código sobre el propio micro.

Anexos.

97

Figura 48. Placa de desarrollo STK200 de Kanda

Si lo que se busca es una sencilla placa sin necesidad de muchas funcionalidades con la que poder programar el microcontrolador, y a un precio asequible para cualquier bolsillo, la mejor solución pasa por ser construida por el propio usuario. El propósito de esta guía es describir cuales son los pasos necesarios que hay que dar y las herramientas que hay que emplear para construir una sencilla placa de desarrollo para el microcontrolador ATmega8535L. Dicha placa estará equipada con algunos periféricos (como son

leds e

interruptores) con los cuales el usuario podrá probar sencillos programas en los juegue con la programación de los puertos de entrada y salida del micro. Los microcontroladores pertenecientes a la familia AVR de Atmel poseen una memoria flash en el propio chip que puede ser fácilmente programada a través de la interfaz serie SPI incorporada en el propio micro. Con una sencilla y económica conexión entre el puerto paralelo del ordenador (LPT) y los pines de la conexión SPI del micro, se podrá tanto cargar programas como hacer lecturas de la memoria flash. Para ello se hará uso de un Software de programación de dispositivos serie.

A.2 Instrucciones de montaje Las instrucciones de montaje están divididas en dos partes bien diferenciadas. Por un lado se explica el Hardware que será empleado en la placa de desarrollo del microcontrolador ATmega8535L. Se adjuntan figuras con todos los esquemas de circuitos requeridos para diseñar todo el dispositivo. Por otro lado se presenta el Software necesario para crear, compilar y cargar programas a través de la placa de desarrollo que se ha diseñado.

Anexos.

98

A.2.1 Arquitectura de Hardware La placa de desarrollo que a continuación se describe está compuesta por un cable de conexión entre la placa y el ordenador (Adaptador ISP), y la placa en sí donde se insertará el micro para programarlo. En la Figura 49 se muestra un diagrama con los dos bloques de montaje:

PC

DB25

Adaptador ISP

Placa de desarrollo

Figura 49. Diagrama de montaje de la placa de desarrollo.

Aunque no es necesario que la placa final que se vaya a desarrollar para el proyecto incorpore un conector para acoplar el Adaptador ISP, si que resultará muy recomendable insertarlo. Se podría tener a parte una pequeña placa de desarrollo en la que se cargasen los programas, y mover el micro de la placa de desarrollo a la placa de proyecto; pero esta solución es muy poco práctica. Además, se podrían acabar dañando las patas del micro de tanto sacarlo y meterlo en el zócalo. En la mano del usuario estará la decisión de emplear una única placa tanto para programar el micro como para insertar los periféricos, o emplear una placa, a parte de las del proyecto, con el único propósito de cargar los programas en el micro.

A.2.1.1 Adaptador ISP

Anexos.

99

El Adaptador ISP es un cable con un conector DB25 en un extremo y un conector hembra estándar en el otro. Lleva incorporado el circuito integrado 74HC125, que no es más que un simple buffer tri-estado que permite aislar el AVR del ordenador después de la programación (¡Error! La autoreferencia al marcador no es válida.).

Figura 50. Fotografía del Adaptador ISP.

A continuación se muestra un diagrama con las conexiones necesarias entre las patitas del conector DB25, el buffer, y el conector hembra que posteriormente se acoplará a la placa de desarrollo (Figura 51):

Figura 51. Esquema de conexión del Adaptador ISP.

Para mayor comodidad de manejo, el circuito del buffer y los elementos pasivos se pueden montar sobre una pequeña placa y colocar ésta dentro

Anexos.

100

del encapsulado del propio conector DB25. El resultado se muestra en la Figura 52.

Figura 52. Fotografía del buffer y del conector DB25 del Adaptador ISP.

A.2.1.2 Placa de desarrollo La placa de desarrollo en sí se puede dividir en varios bloques de circuitos: A.2.1.2.1 Microcontrolador con periféricos Este bloque está compuesto por el propio microcontrolador, el conector macho al cual se acoplará el Adaptador ISP, el oscilador de cuarzo, y los leds e interruptores conectados a los puertos I/O del micro. El microcontrolador ATmega8535 incorpora un oscilador interno de poca precisión con el que no conviene trabajar si se desea emplearlo en aplicaciones de tiempo real, por lo que se ha optado por incorporar un cristal de cuarzo que haga las veces de fuente externa de reloj. A la hora de diseñar la placa hay que tener especial cuidado en colocar el cristal de cuarzo cerca del micro al cual va a proveer la señal de reloj de alta

Anexos.

101

frecuencia. De esta manera se evitará la posibilidad de que aparezcan pérdidas de señal o de que se acople algún ruido a la misma. En la Figura 53 se recoge un esquema de conexionado. Se ha empleado el programa Eagle para diseño de circuitos impresos.

Figura 53. Esquema de conexión de la placa de desarrollo.

A.2.1.2.2 Circuito de reset En el circuito de reset se ha optado por incorporar un supervisor de voltaje. Ante una caída eventual de la tensión de alimentación por debajo del margen establecido de funcionamiento (en concreto el umbral está

Anexos.

establecido en 4.5V), el supervisor resetea el micro y lo mantiene en este estado hasta que el valor de la tensión de alimentación sea el adecuado. El pulsador de reset que se ve en el esquema de conexión (Figura 54) ha sido incorporado para permitir el reseteo del sistema a voluntad propia del usuario.

Figura 54. Esquema de conexión del circuito de reset de la placa de desarrollo.

A.2.1.2.3 Circuito de alimentación La alimentación se realiza a partir de una toma de tensión continua cuyo valor puede ir entre los 7 y los 20 voltios (Tensiones de entrada soportadas por el circuito regulador de tensión 7805L del fabricante Motorola). Cualquier transformador barato comprado en una tienda de electrónica con una salida de voltaje en el rango permitido por el regulador de tensión puede servir para alimentar la placa de desarrollo. En el caso de que se alimente el regulador con una tensión elevada, habrá que tener cuidado en disipar adecuadamente el calor generado en él. Será entonces necesario el diseño de un disipador que evacue la potencia de pérdidas.

102

Anexos.

Figura 55. Esquema de conexión del circuito de alimentación de la placa de desarrollo.

A.2.2 Arquitectura de Software A la hora de elegir el diseño que se iba a usar en la placa de desarrollo, se ha buscado que pueda funcionar con Software de libre distribución compatible con un sistema operativo con el que estén bien familiarizados la mayoría de usuarios de ordenadores personales. Obviamente este sistema operativo es Windows. Así pues, todas las herramientas Software seleccionadas para funcionar con esta placa de desarrollo son freeware y corren sin ningún tipo de problema bajo el sistema operativo Windows en sus versiones de 32 bits: 98/ME/NT/2000/XP. El Software aquí recogido ha sido únicamente probado sobre el sistema operativo XP, por lo que sólo se puede asegurar con certeza la ausencia de cualquier tipo de incompatibilidad en este sistema operativo. A.2.2.1 Requisitos del sistema Para poder conectarnos a la placa de desarrollo y poder programar el micro se necesita un ordenador con las siguientes características:

103

Anexos.



104

Sistema operativo Windows de 32 bits (la única versión testeada en la que se asegura al cien por cien la compatibilidad del Software es la XP).



Conexión de puerto paralelo (LPT).



Espacio en disco de 175 MB para instalar los programas. A.2.2.2 Herramientas requeridas A.2.2.2.1 AVR Studio

AVR Studio es un potente entorno de desarrollo integrado para escribir y depurar programas destinados a microcontroladores de la familia AVR de Atmel. Posee una herramienta de gestión de proyectos, un editor de código fuente y un simulador de micros. Además puede interactuar con emuladores In-Circuit y con placas de desarrollo disponibles para la familia AVR 8-bit RISC. Para más información y descargas consultar la referencia [9]. La placa de desarrollo abordada en este documento no es compatible con el programador incorporado en el AVR Studio. No obstante, la herramienta será de gran utilidad para editar el código y depurarlo en el simulador. A.2.2.2.2 WinAVR WinAVR es una colección de herramientas de desarrollo para los microcontroladores AVR basadas en la plataforma Windows. Son de destacar el compilador AVR GCC y las librerías AVR Libc, que contienen la biblioteca de funciones C para los microcontroladores AVR 8bit RISC de Atmel. En la distribución de AVR Studio viene incorporado un ensamblador (AVRASM2), pero si se quiere programar en código C se necesita un compilador GCC externo. El compilador AVR GCC, incluido en el WinAVR,

será llamado por el propio AVR Studio de manera

Anexos.

automática cuando se compile un proyecto bajo el entorno del AVR Studio. Si se desea más información sobre el Software WinAVR, consultar la referencia [10]. A.2.2.2.3 PonyProg PonyProg es un Software de programación de dispositivos serie. Con él se puede leer y escribir en la memoria de un gran número de dispositivos serie, incluyendo parte de la familia de microcontroladores AVR 8-bit RISC de Atmel. En su última versión disponible, la 2.06f, incorpora soporte para programar el micro ATmega8535. En la página web del creador se podrá encontrar una lista con todos los dispositivos soportados por este programador serie [11] . A.2.2.2.4 Eagle Layout Editor Eagle es un Software de diseño de placas de circuito impreso, de gran potencia y fácil manejo. Las librerías que se encuentran en este editor de placas poseen un gran número de componentes. No obstante, puede ser que haya algún elemento del circuito que no se encuentre en las librerías que trae por defecto el programa. Gracias a la gran popularidad que tiene el Eagle, se puede encontrar a través de Internet los diseños de los componentes que se necesiten. Tal es el caso del micro ATmega8535, cuyo plano en circuito impreso (footprint) no estaba incluido con el Eagle. Se buscó a través de Internet usando un conocido buscador, y se encontró una librería con todos los planos de los micros de AVR (Esta librería viene ya incorporada en la versión de Eagle que se facilita con este proyecto). Toda la información extra que se requiera sobre este programa se puede obtener de la página Web de su fabricante [12].

105

Anexos.

A.3 Manual de usuario En esta sección se describe cómo hay que configurar el Software para cargar un primer programa de prueba en la placa de desarrollo. De esta forma el usuario se irá familiarizando con el entorno de desarrollo y comprobará si la placa ha sido montada correctamente. Para ello se necesita instalar previamente en el ordenador el AVR Studio, el WinAVR y el PonyProg2000. Estos programas incorporan su respectivo Setup.exe, el cuál guiará al usuario a lo largo del proceso de instalación. Es importante elegir el mismo directorio de destino para el AVR Studio y para el WinAVR, con el mismo nombre de carpeta que trae por defecto el programa de instalación. De esta forma se conseguirá que el AVR Studio reconozca automáticamente las librerías y aplicaciones incorporadas en el WinAVR. El AVR Studio es el editor de código fuente que va a ser empleado. Una vez escrito el código se pasará a compilarlo con el compilador AVR GCC, incluido entre las aplicaciones del WinAVR. Finalmente, se cargará en la memoria flash del microcontrolador, con la ayuda del PonyProg, el archivo .hex generado durante la compilación. A.3.1 Configuración del Software Nada más abrir el AVR Studio 4 aparece una primera ventana en la que se ofrece la opción de crear un nuevo proyecto o de abrir uno previamente guardado. Seleccionando la opción New Proyect se llegará al menú de la Figura 56. Puesto que se va a trabajar en código C, habrá que seleccionar el tipo de proyecto AVR GCC, y escribir el nombre tanto del proyecto como del archivo de inicio. Pulsamos Next>>.

106

Anexos.

107

Figura 56. Creación de nuevo proyecto en AVR Studio 4.

En la siguiente ventana emergente (Figura 57), se selecciona la plataforma de simulación y el micro con el que se va a trabajar: ATmega8535. El resto de plataformas están relacionadas con el tipo de Hardware empleadas para programar el micro. Ésta placa de desarrollo no es compatible con ninguna de las plataformas de depuración que incorpora el AVR Studio, por lo tanto se trabajará en el modo de simulación.

Figura 57. Creación de nuevo proyecto en AVR Studio 4. Selección de plataforma y dispositivo.

A continuación se propone un código con el que el usuario podrá probar la placa de desarrollo. En el encabezado se describe cómo funciona. Junto con este documento se facilita el archivo .c, el cual puede ser copiado en el

Anexos.

108

archivo de inicio del proyecto de AVR Studio, o bien ser incorporado al proyecto. /************************************************************************* Título: Programa de prueba de la placa de desarrollo Autor: Angel Guillermo Morales González Software: AVR-GCC 3.4.5. AVR Libc 1.4.3. Hardware: Micro ATmega8535 a 4 MHz Placa de desarrollo Anexo A Descripción: Cada vez que salta una interrupción de la unidad de comparación del timer (programado para que hacerlo cada segundo), se enciende un led distinto conectado de los que están conectados al puerto B. En primer lugar el que está conectado al PINB0, luego el que está conectado al PINB1...y vuelta a empezar Uso: Si se pulsa uno de los dos interruptores conectaros al puerto D (PIND2 ó PIND3), se pondrá a nivel bajo el pin del puerto B correspondiente. Esto es, si es pulsado el interruptor conectado a PIND2, se encenderá el led correspondiente a PINB2, y de la misma forma con PIND3 y PINB3. Si se pulsan los dos interruptores a la vez, tiene preferencia el que está conectado al PIND2, con lo que sólo se encenderá el led del PINB2 Si no se pulsa ningún interruptor, cada segundo se irá encendiendo un led distinto del puerto B.

*************************************************************************/ #include #include #include #include

void inicio_counter1(void);

static volatile uint8_t led;

// uso de variables volátiles cuando son // accedidas desde interrupciones

SIGNAL(SIG_OUTPUT_COMPARE1A)

// función atendida en la interrupción // provocada por la unidad de comparación

{ PORTB = ~led; led = ledCalibration. Tras pulsar Yes en el cuadro de dialogo (Figura 62) el bus se calibrará.

Figura 62. Calibrado del bus de comunicaciones en PonyProg2000.

Finalmente ya sólo queda configurar la fuente de reloj del micro. Para ello se pincha en el botón

que mostrará los bits de configuración y

seguridad del microcontrolador (Figura 63). Estos campos aparecen sin actualizar, por lo que previamente a cualquier modificación de los mismos hay que realizar una lectura de sus valores actuales en el micro. Pulsando en Read (botón inferior de la Figura 63), y si todo el Hardware está

Anexos.

correctamente

113

montado,

deberían

actualizarse

los

campos

correspondientes con los valores de los bits de configuración y seguridad. Aquí es crucial entender cuando un bit está programado y cuando no lo está. Cuando se consulta en el manual del micro el valor de estos bits, si se indica un “0” lógico significa que está programado y si lo que se indica es un “1”, que está sin programar. Por otro lado se tiene que las casillas marcadas con un tic en la Figura 63 representan bits programados, y si aparecen en blanco bits sin programar. Así pues, si en el manual indica que, por ejemplo, el bit CKSEL3 tiene que valer “1” para la configuración requerida de fuente de reloj, la correspondiente casilla del CKSEL3 de la ventana del PonyProg tendrá que dejarse en blanco. En el capitulo Memory Programming del datasheet del microcontrolador ATmega8535 se encuentra toda la información relativa a estos bits.

Figura 63. Configuración de los bits de configuración y seguridad en PonyProg2000.

Cuando se lee por primera vez los bits de configuración del ATmega8535, se tiene que los bits CKSEL3, CKSEL2 y CKSEL1 están programados, y el bit CKSEL0 no lo está (configuración de fábrica). Esto es, el valor del vector CKSEL es “0001”, que según la Figura 64 obtenida del manual del micro corresponde al funcionamiento del micro con el oscilador interno.

Anexos.

114

Figura 64. Bits de configuración de la fuente de reloj del micro ATmega8535.

Para seleccionar el cristal externo como fuente de reloj, el valor de los bits CKSEL tendrá que ser “1111”. En la pantalla de configuración (Figura 65) se deja en blanco las casillas de todos los bits CKSEL y se procede a la escritura de los mismos sobre el micro pulsando en Write. Si el circuito del Cristal está conectado correctamente y el proceso de escritura se ha desarrollado con éxito, se podrá volver a hacer una nueva lectura de los bits de configuración y seguridad del micro.

Figura 65. Configuración de los bits de configuración y seguridad en PonyProg2000. Selección de fuente de reloj.

A.3.2 Carga de programas El proceso de configuración del PonyProg sólo hay que seguirlo la primera vez que se trabaja con el micro (a no ser que se deseen cambiar los valores de los bits de configuración y seguridad).

Anexos.

115

A partir de este punto, la misión encargada al PonyProg será únicamente la de cargar en la memoria flash del micro el código en hexadecimal generado durante la fase de compilación. Los pasos a seguir son muy sencillos. Desde la pantalla principal del PonyProg se abre el archivo con extensión .hex que fue creado anteriormente con el AVR Studio (File>Open Device File…). En la ventana que aparecía en blanco se mostrará el código que va a ser cargado en memoria. Ahora sólo queda pulsar el botón

de escritura de la

memoria de programa y confirmar la acción (Figura 66).

Figura 66.Programación del dispositivo serie con PonyProg2000.

Una ventana de diálogo con el texto Write Successful confirmará la exitosa carga del programa.

Anexos.

A.4 Conclusión En esta guía se ha mostrado como montar una pequeña placa de desarrollo dotada con un par de interruptores y leds conectados a los puertos I/O del micro, de tal manera que el usuario pueda hacer sus propias pruebas de programación. El Hardware necesario para programar el micro Atmega8535 resulta sencillo de implantar en cualquier placa. Ocupa muy poco espacio en la placa en sí, ya que una parte importante del circuito de conexión está localizado en el cable adaptador del ISP.

116

Anexos.

117

Anexo B

CÓDIGO FUENTE

B.1 Código fuente del emisor B.1.1 Envio_senales.c /************************************************************************* Título: Software de control del módulo de emisión Autor: Angel Guillermo Morales González Software: AVR-GCC 3.4.5. AVR Libc 1.4.3. Hardware: Micro ATmega8535 a 8 MHz Módulo transmisor trf24g Descripción: En la interrupción de la unidad de comparación del timer2 se muestrean las señales conectadas al puerto A, convirtiéndolas en digital, y se cargan sus valores en el BUFFER CIRCULAR. En la misma interrupción también se cargan en el BUFFER CIRCULAR las señales generadas por Software. Cuando el BUFFER CIRCULAR tiene el tamaño del PAYLOAD (ajustado para el emisor radio), se envían los datos a través del Trf24g. Las señales generadas por Software son vectores con datos, cuyo índice de vector va variando al ritmo de la interrupción de la unidad de comparación del timer2. *************************************************************************/ #include "Envio_senales.h"

/*DEFINICION DE VARIABLES*/ static uint8_t BUFFER_CIRCULAR[TAM_COLA]; static uint8_t icabeza=0; static uint8_t icola=0; static static static static static static static

volatile volatile volatile volatile volatile volatile volatile

uint8_t uint8_t uint8_t uint8_t uint8_t uint8_t uint8_t

aux_valorADC1=0; aux_valorADC2=0; aux_valorADC3=0; aux_valorADC4=0; aux_valorADC5=0; aux_valorADC6=0; aux_timerADC;

/************************************************************************* Función: Gestión de la interrupción de la unidad de comparación A del timer1 Descripción: Actualiza los índices de los vectores de las señales generadas por Software. **************************************************************************/ SIGNAL (SIG_OUTPUT_COMPARE1A) { aux_valorADC1++; aux_valorADC2++; aux_valorADC3++; aux_valorADC4++; aux_valorADC5++; aux_valorADC6++;

//20 Hz

Anexos.

118

if(aux_valorADC1==TAM_SIGNAL1){ aux_valorADC1=0; } if(aux_valorADC2==TAM_SIGNAL2){ aux_valorADC2=0; } if(aux_valorADC3==TAM_SIGNAL3){ aux_valorADC3=0; } if(aux_valorADC4==TAM_SIGNAL4){ aux_valorADC4=0; } if(aux_valorADC5==TAM_SIGNAL5){ aux_valorADC5=0; } if(aux_valorADC6==TAM_SIGNAL6){ aux_valorADC6=0; } } /************************************************************************* Función: Gestión de la interrupción de la unidad de comparación del timer2 Descripción: Llena el BUFFER CIRCULAR con los datos obtenidos del ADC (Analog to Digital Converter), y con los valores de las señales implantadas digitalmente. Por cada 6 señales, se envía un número (SINCRONIZADOR) al BUFFER CIRCULAR. **************************************************************************/ SIGNAL (SIG_OUTPUT_COMPARE2) //200Hz muestreo de la señal { aux_timerADC=1; //Bandera. Se ha llenado el BUFFER_CIRCULAR con un nuevo dato llenado_buffer_emisor(SINCRONIZADOR); llenado_buffer_emisor(leeradc(0)); llenado_buffer_emisor(leeradc(1)); llenado_buffer_emisor(leeradc(2)); llenado_buffer_emisor(Signal4[aux_valorADC4]); llenado_buffer_emisor(Signal5[aux_valorADC5]); llenado_buffer_emisor(Signal6[aux_valorADC6]); }

/************************************************************************* ************************************************************************** Función: main() Descripción: Cada vez que se cargan datos en el BUFFER CIRCULAR, se comprueba si son suficientes para llenar el PAYLOAD del trf24g, y hacer un envío por radio. ************************************************************************** **************************************************************************/ int main(void) { /*DEFINICION DE VARIABLES*/ uint8_t buffer_envio[TRF24G_TAM_PAYLOAD];

/*INICIALIZACIONES*/

//

DDRB|=0x03; // Leds de control PORTB&=~0x01; // PINB1 led de encendido PORTB|=0x02; // PINB2 led de error. Llenado del BUFFER CIRCULAR init_uart(); // Iniciación del puerto de comunicaciones UART inicio_counter(); inicio_adc(); trf24g_iniciar(); sei(); //Habilito interrupciones globales

Anexos.

119

for (;;) { //Bucle infinito if(aux_timerADC==1){ //Acabo de introducir datos en el BUFFER CIRCULAR vaciado_buffer_emisor(buffer_envio); aux_timerADC=0; } } } /************************************************************************* Función: llenado_buffer_emisor() Descripción: Graba en el BUFFER CIRCULAR el dato pasado a la función. Comprueba si al meter el dato se están aplastando datos que todavía no han sido sacados. En el caso de que se estén sobrescribiendo datos no extraídos, se enciende el led de error Entrada: dato-> 8 bits se meterán el BUFFER CIRCULAR **************************************************************************/ void llenado_buffer_emisor(uint8_t dato) { if((icabeza+1==icola)||(icabeza+1==TAM_COLA&&icola==0)){ //****ERROR. Buffer lleno*****// //Al trf24g no le ha dado tiempo a vaciar el buffer PORTB&=~0x02; //indico con un led rojo el error, y aplasto el dato BUFFER_CIRCULAR[icabeza]=dato; icabeza++; if(icabeza==TAM_COLA){ icabeza=0; } } else{ BUFFER_CIRCULAR[icabeza]=dato; icabeza++; if(icabeza==TAM_COLA){ icabeza=0; } } } /************************************************************************* Función: vaciado_buffer_emisor() Descripción: Obtiene del BUFFER CIRCULAR los datos que se van a envíar por radio a través del trf24g. Estos datos son cargados en el vector cuya dirección es pasada a la función. Posteriormente se pasa la dirección del vector a la función trf24g para que envíe la información. Entrada: buff-> dirección del primer elemento del vector en el cual se cargarán los datos que se van a enviar vía radio. **************************************************************************/ void vaciado_buffer_emisor(uint8_t *buff) { uint8_t i; // si tengo en el BUFFER_CIRCULAR los suficientes datos (tamaño del PAYLOAD), // descargo esos datos del BUFFER_CIRCULAR, y realizo el envío. if((icabeza>=icola+TRF24G_TAM_PAYLOAD)|| ((icabeza>=(icola+TRF24G_TAM_PAYLOAD-TAM_COLA)) && (icola-icabeza>0))){ for (i=0;i dirección del primer elemento del vector de 8 bits a enviar longitud_cad-> tamaño del vector a enviar **************************************************************************/ void hyperterminalcadena(uint8_t *cad,uint8_t longitud_cad) { uint8_t i; for(i=0;i 8 bits. Dato a enviar **************************************************************************/ void hyperterminalelemento(uint8_t num) {

Anexos.

uint8_t buffer[5]; itoa( num, buffer, 16); uart_puts(buffer); uart_putc('\r');

124

// convierte entero en cadena (formato hexadecimal) //envío un enter

}

/************************************************************************* Función: leeradc() Descripción: Activa el convertidor ADC, tomando una lectura de la señal conectada al pin del puerto A que se haya indicado(dato que se le pasa a la función). 8 bits de conversión. Entrada: n-> pin del puerto A en el cual se va a hacer la lectura Salida: dato_convertido-> 8 bits resultantes de la conversión **************************************************************************/ uint8_t leeradc(uint8_t n) { uint8_t dato_convertido; ADMUX&=0xe0; //Elijo el canal de conversión: pin del puerto A de entrada ADMUX|=n; ADCSRA |= _BV(ADSC); //Inicio conversión. Devuelto a cero por hardware al acabar //la conversión while((ADCSRA & 0x10) ==0){}; //espero a que acabe la conversión /*CONVERSION BUENA*/ //Desecho la primera conversión ADCSRA |= _BV(ADSC); //Inicio conversión. Devuelto a cero por hardware al acabar //la conversión while((ADCSRA & 0x10) ==0){}; //espero a que acabe la conversión ADCSRA|=0x10; //Escribiendo un 1 lógico limpio la bandera del ADC. dato_convertido=ADCH; return dato_convertido; }

B.1.4 trf24g.c /************************************************************************* Título: Librería para el manejo del módulo de radio trf24g Autor: Angel Guillermo Morales González Software: AVR-GCC 3.4.5. AVR Libc 1.4.3. Hardware: Micro ATmega8535 a 8 MHz Módulo transmisor trf24g Descripción: Incluye funciones para configurar el módulo de radio, enviar y recibir datos con él, y manejar el interfaz síncrono de comunicación con periféricos (Serial Peripheral Interface) *************************************************************************/ #include "trf24g.h"

static uint8_t trf24gConfig[15] = { /* 0 */ TRF24G_TAM_PAYLOAD * 8, // DATA2_W /* 1 */ TRF24G_TAM_PAYLOAD * 8, // DATA1_W /* 2 */ 0,0,0,0,0, // ADDR2 /* 7 */ TRF24G_ADDR1, // ADDR1 /* 12 */ ((TRF24G_TAM_ADDR * 8)

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.