tesisde telecomju nicacioe

Embed Size (px)

Citation preview

TRABAJO FINAL DE CARRERA

TTULO DEL TFC : Diseno y construccion de bus de datos y sensores para las I practicas de NACC TITULACION: Ingeniera Tecnica Telecomunicaciones, especialidad Sistemas de Telecomunicacion / Ingeniera Tecnica Aeronautica, especialidad Aeronavegacion AUTORES: Christian Miranda Estepa , Jonathan Ronquillo Guerrero DIRECTOR: Dagoberto Salazar FECHA: 15 de enero de 2008

Ttulo : Diseno y construccion de bus de datos y sensores para las practicas de NACC Autores: Christian Miranda Estepa , Jonathan Ronquillo Guerrero Director: Dagoberto Salazar Fecha: 15 de enero de 2008

Resumen Este trabajo nal de carrera se puede dividir en dos partes. En la primera parte crearemos un nodo (o interface) de comunicaciones que sea capaz de recibir datos mediante diferentes protocolos como SPI, I2C, RS232 y transmitirlo todo a un bus principal (CAN Bus). De esta forma, se podran comunicar diferentes dispositivos sin preocuparnos del protocolo nativo que utilicen. El control de este nodo de comunicaciones se realiza con un microcontrolador PIC18F4580, ya que este se adapta perfectamente a nuestros objetivos. Para implementar la parte software hemos utilizado el compilador CCS y las libreras que se han desarrollado para CAN. Una vez terminada la primera parte, relacionada mas con el area de las comunicaciones, nuestro trabajo se centra en una segunda partei que esta mas relacianda con la instru mentacion para navegacion. En esta parte se desarrolla una placa de adquisicion de datos que incluye unos sensores que proporcionan informacion de inclinacion, aceleracion y velocidad angular. La idea general es conectar nuestra placa de sensores con otros dispositivos (elabora dos, por ejemplo, por companeros en otros TFC) utilizando los nodos de comunicaciones en CANBus, y as poder utilizar multiples dispositivos en las practicas de la asignatura Navegacion Aerea, Cartografa y Cosmografa (NACC).

Title : Design and construction of a data bus and sensors for the NACC practices Authors: Christian Miranda Estepa , Jonathan Ronquillo Guerrero Director: Dagoberto Salazar Date: January 15, 2008

Overview This nal Project can be divided into two parts. In the rst one we will create a communications node (or interface) able to receive data through different protocols like SPI, I2C, RS232 and able to transmit all the information to a main bus (CAN bus). This way, different Devices will be able to communicate without worrying about the protocol being used. The control of this communication node is carried out by a PIC18f4580 microcontroller because it suits perfectly to our objectives. In order to implement the software part, we have used the CCS compiler and its libraries, developed for CAN. Once the rst part (the communications one) is nished, our work gets focused on the second part (the one related with navigation instrumentation). An acquisition data plate is developed including sensors which give information of slope, acceleration and angular velocity. The general idea is to connect our plate of sensors with other devices (for instance, devices built by other realized by TFC students) using the communication nodes in CANBus, and then we will be able to use multiple devices in laboratory work of the subject Navegacion Aerea, Cartograa y Cosmograa (NACC).

En el plano emocional este trabajo va dedicado a nuestros padres por su paciencia y comprension. En el plano tecnico queremos agradecer, sobre todo, a nuestro tutor Dagoberto Salazar por su seguimiento en el trabajo y sus consejos, y a Oscar Casas por su ayuda con la placa de pruebas de CANBus y el compilador CCS.

NDICE GENERAL I INTRODUCCION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CAPTULO 1. Conceptos Teoricos . . . . . . . . . . . . . . . . . . . . . I1.1. Nodo de Comunicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.1. PIC (Peripheral Interface Controller) . . . . . . . . . . . . . . . . . 1.1.2. CAN (Controller Area Network) . . . . . . . . . . . . . . . . . . . . 1.1.3. RS232 (Recommended Standard 232) . . . . . . . . . . . . . . . . 1.1.4. I2C (Inter-Integrated Circuit) . . . . . . . . . . . . . . . . . . . . . . 1.1.5. SPI (Serial Peripheral Interface) . . . . . . . . . . . . . . . . . . . . 1.2. Placa de adquisicion de datos . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.1. PIC18F2580 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.2. MEMS (Micro Electro-Mechanical Systems) . . . . . . . . . . . . . 1.2.3. Sistema Inercial . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1 33 3 7 13 15 18 20 20 22 34

CAPTULO 2. Metodologa I

. . . . . . . . . . . . . . . . . . . . . . . . . . 37 37 41 43 51 66 67 71

2.1. Protocolo CAN utilizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Nodo de Comunicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1. Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2. Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3. Placa de Adquisicion de Datos . . . . . . . . . . . . . . . . . . . . . . . .

2.3.1. Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.2. Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

CAPTULO 3. Experimentos I

. . . . . . . . . . . . . . . . . . . . . . . . . 79 79 80 80 86 88 90 90

3.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2. Nodo de comunicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1. RS232-CAN-RS232 . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2. I2C-CAN-RS232 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.3. SPI-CAN-RS232 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3. Placa de adquisicion de datos . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1. Recepcion de datos de un solo ADIS16100 . . . . . . . . . . . . . .

3.3.2. Recepcion de datos de la Placa de Adquisicion de Datos por bus CAN 94

3.4. Experimento nal: Placa Adquisicion de Datos, PC y GPS con otro PC monitorizando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

CAPTULO 4. Conclusiones y Recomendaciones . . . . . . . . . . . 113 I SIGLAS Y ABREVIATURAS . . . . . . . . . . . . . . . . . . . . . . . . . . 117 BIBLIOGRAFA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 I APENDICE A. Codigo implementado. . . . . . . . . . . . . . . . . . . 121

A.1. Nodo de Comunicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 A.1.1. tfc.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 A.1.2. funciones.c A.1.3. funciones.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 . . . . . . . . . . . . . . . . . . . . . . . . 136

A.2. Placa de Adquisicion de Datos

A.2.1. adquisicion datos.c . . . . . . . . . . . . . . . . . . . . . . . . . . 136 A.2.2. funciones adis.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 A.2.3. funciones adis.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 A.3. Experimentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 A.3.1. experimentos spi.c A.3.3. experimentos i2c.c . . . . . . . . . . . . . . . . . . . . . . . . . . 147 . . . . . . . . . . . . . . . . . . . . . . . . . . 152 A.3.2. experimentos spi modo2.c . . . . . . . . . . . . . . . . . . . . . . 150

A.4. experimentos i2c modo2.c . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 A.5. experimento solo 1 adis.c . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

APENDICE B. Diagramas de ujo . . . . . . . . . . . . . . . . . . . . . . 161B.1. tfc.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 B.2. adquisicion datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

APENDICE C. Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167C.1. Nodo de comunicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 C.2. Placa de adquisicion de datos . . . . . . . . . . . . . . . . . . . . . . . . . 170

APENDICE D. Problemas en Datasheet del ADIS16100

. . . . . . . 173

APENDICE E. Lista de componentes y presupuesto del proyecto. 175 APENDICE F. Estudio previo. Ejercicios de familiarizacion con el protocolo CAN . . . . . . . . . . . . . . . . . . . . . . . . . 179F.1. Utilizando el software de desarrollo (IDE) Familiarizacion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 F.2. Primeros pasos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 F.3. PIC18F4580 como transmisor y MCP25050 para outputs . . . . . . . . . . 181 F.4. MCP25050 para inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 F.5. MCP250XX para entradas analogicas . . . . . . . . . . . . . . . . . . . . . 187

NDICE DE FIGURAS I1.1 Componentes que conguran un microcontrolador . . . . . . . 1.2 Mercado mundial de los PICs . . . . . . . . . . . . . . . . . . 1.3 Diagrama de pines del PIC 18F4580 . . . . . . . . . . . . . . . 1.4 Ejemplo de envo de paquete en CAN . . . . . . . . . . . . . . 1.5 Velocidad del bus CAN en funcion de la longitud . . . . . . . . . 1.6 Modelo OSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.7 Modelo Niveles de tension utilizados en CAN . . . . . . . . . . 1.8 Formato estandar y extendido de las tramas CAN. . . . . . . . 1.9 Campos de las tramas CAN . . . . . . . . . . . . . . . . . . . 1.10Ejemplo de arbitracion en CAN . . . . . . . . . . . . . . . . . . 1.11Conectores DB-25 y DB-9 en RS232. . . . . . . . . . . . . . . 1.12Conguracion 7N1 del RS232. . . . . . . . . . . . . . . . . . . 1.13Esquema de conexion del bus I2C. . . . . . . . . . . . . . . . . 1.14Condicion de inicio del I2C. . . . . . . . . . . . . . . . . . . . . 1.15Condicion de parada del I2C. . . . . . . . . . . . . . . . . . . . 1.16Ejemplo de comunicacion I2C. . . . . . . . . . . . . . . . . . . 1.17Conexion del CS de SPI a los diferentes dispositivos. . . . . . . 1.18Desplazamiento de bits en Esclavo SPI. . . . . . . . . . . . . . 1.19Ejemplo de comunicacion SPI. . . . . . . . . . . . . . . . . . . 1.20Diagrama de pines del PIC 18F2580 . . . . . . . . . . . . . . . 1.21Diagrama de bloques del ADIS16100. . . . . . . . . . . . . . . 1.22La senal del ADIS16100 incrementa con el angulo de giro. . . . 1.23Diagrama de secuencia de conguracion/lectura en ADIS16100. 1.24Diagrama de secuencia SPI en ADIS16100. . . . . . . . . . . . 1.25Diagrama de bloques del ADIS16201. . . . . . . . . . . . . . . 1.26Disposicion de los pines del ADIS16201. . . . . . . . . . . . . 1.27Posibles orientaciones del ADIS16201. . . . . . . . . . . . . . 1.28Escritura-Lectura del ADIS16201. . . . . . . . . . . . . . . . . 1.29Registros DIN/DOUT del ADIS16201. . . . . . . . . . . . . . . 1.30Los tres ejes de movimiento de una aeronave. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 5 6 8 9 9 10 11 11 12 15 15 16 17 17 18 19 20 20 21 23 23 26 27 30 31 31 32 32 34 37 39 43 44 44 45 45 46 47 48 48 49 49

2.1 Campo ID dividido en 3 sub-campos. . . . . . . . . . . . . . . . . 2.2 Tipos de mensaje en el protocolo CAN. . . . . . . . . . . . . . . . 2.3 Diagrama esquematico. Nodo de Comunicaciones. . . . . . . . . . 2.4 Polarizacion del conector de alimentacion. . . . . . . . . . . . . . . 2.5 Bloque de alimentacion del Nodo de Comunicaciones. . . . . . . . 2.6 Bloque del clock del Nodo de Comunicaciones. . . . . . . . . . . . 2.7 Conector RJ12. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.8 Bloque de programacion del Nodo de Comunicaciones. . . . . . . . 2.9 Bloque de comunicaciones del Nodo de Comunicaciones. . . . . . 2.10Conguracion MAX232. . . . . . . . . . . . . . . . . . . . . . . . 2.11Pines del PCA82C251. . . . . . . . . . . . . . . . . . . . . . . . . 2.12Interruptores activacion/desactivacion de las resistencias PULL-UP. 2.13Terminales de conexiones externas del Nodo de Comunicaciones. .

2.14Cable NULL-MODEM - Cable directo. . . . . . . . . . . . . . . . . . . . . . . 2.15PCB del Nodo de Comunicaciones . . . . . . . . . . . . . . . . . . . . . . . . 2.16Programador ICD utilizado a la hora de programar. . . . . . . . . . . . . . . . 2.17Esquema ujo de datos en INT CANRX0. . . . . . . . . . . . . . . . . . . . . 2.18Esquema ujo de datos en INT SSP. . . . . . . . . . . . . . . . . . . . . . . . 2.19Esquema ujo de datos en INT RDA. . . . . . . . . . . . . . . . . . . . . . . 2.20Jerarqua de los cheros utilizados en Nodo de Comunicaciones. . . . . . . . . 2.21Diagrama de ujo del modulo Conguracion Nodo de Comunicaciones. . . . . 2.22Diagrama de ujo del modulo Interrupcion Interruptores. . . . . . . . . . . . . 2.23Diagrama de ujo del modulo Interrupcion CAN. . . . . . . . . . . . . . . . . 2.24Distribucion de los dos bytes con informacion del ID. . . . . . . . . . . . . . . 2.25Diagrama de ujo del modulo Procesado de Datos CAN. . . . . . . . . . . . . 2.26Diagrama de ujo del modulo Interrupcion I2C y SPI. . . . . . . . . . . . . . . 2.27Diagrama de ujo del modulo Interrupcion RS232. . . . . . . . . . . . . . . . 2.28Diagrama esquematico. Placa de Adquisicion de Datos. . . . . . . . . . . . . . 2.29M1117t alimentacion ADIS16201 a 3,3 V y condensadores de 10 F. . . . . . . 2.30Bloque de programacion. Resistencias de 1 k. . . . . . . . . . . . . . . . . . 2.31Diagrama esquematico de la tarjeta y sus conexiones al conector estandar dual row de 2mm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.32Esquema de la disposicion de los sensores en la placa. . . . . . . . . . . . . . 2.33Ejemplo de envo de 16 bits por SPI. . . . . . . . . . . . . . . . . . . . . . . . 2.34Jerarqua de los cheros utilizados en la Placa de Adquisicion de Datos. . . . . 2.35Diagrama de ujo del modulo Conguracion Placa Adquisicion de Datos. . . . 2.36Diagrama de ujo del modulo Interrupcion RDA en ADIS16201. . . . . . . . . 2.37Protocolo NMEA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.38Diagrama de ujo del modulo Pedido y Envio de Datos en ADIS16201. . . . . 3.1 Conguracion HyperTerminal. . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Interruptor RS232 en ON. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Esquema montaje experimentos RS232-CAN-RS232. . . . . . . . . . . . . . . 3.4 Montaje experimentos RS232-CAN-RS232. . . . . . . . . . . . . . . . . . . . 3.5 Resultado de las pruebas 1 a la 13. . . . . . . . . . . . . . . . . . . . . . . . 3.6 Esquema: Ejemplo de la distribucion de IDs entre 3 PCs. . . . . . . . . . . . . 3.7 Interruptor I2C en ON. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.8 Esquema montaje experimentos I2C-CAN-RS232. . . . . . . . . . . . . . . . 3.9 Interruptor SPI en ON. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.10Esquema montaje experimentos SPI-CAN-RS232. . . . . . . . . . . . . . . . 3.11Resultados de temperatura en Offset Binary del primer ADIS16100. . . . . . . 3.12Resultados de temperatura en Complemento a 2 del primer ADIS16100. . . . . 3.13Resultados de velocidad angular en Offset Binary del primer ADIS16100. . . . 3.14Resultados de velocidad angular en Complemento a 2 del primer ADIS16100. . 3.15Resultados de temperatura en Offset Binary del segundo ADIS16100. . . . . . 3.16Resultados de temperatura en Complemento a 2 del segundo ADIS16100. . . . 3.17Resultados de velocidad angular en Offset Binary del segundo ADIS16100. . . 3.18Resultados de velocidad angular en Complemento a 2 del segundo ADIS16100. 3.19Esquema del experimento Recepcion de datos de la Placa de Adquisicion. . . 3.20Resultados a los 8 pedidos posibles desde el PC. . . . . . . . . . . . . . . . . 3.21GPS utilizado en el experimento. . . . . . . . . . . . . . . . . . . . . . . . . .

50 52 53 54 55 55 56 59 60 61 62 63 65 66 67 68 69 70 71 72 74 75 76 77 78 81 82 83 84 85 86 87 88 89 90 92 93 94 95 96 97 98 99 100 101 102

3.22Esquema de conexion de los pines UserTerminal. . . . . . . . . . . . . . 3.23Montaje del experimento nal. . . . . . . . . . . . . . . . . . . . . . . . 3.24Resultado al conectar el GPS. . . . . . . . . . . . . . . . . . . . . . . . 3.25Resultado al conectar el GPS y la placa de adquisicion de datos. . . . . . 3.26Resultado al conectar el GPS, la placa de adquisicion de datos y otro PC. B.1 Simbolos utilizados en el diagrama de ujo. . . . . . . . . . . . . . . . B.2 Diagrama de ujo del modulo Conguracion Nodo de Comunicaciones. B.3 Diagrama de ujo del modulo Interrupcion Interruptores. . . . . . . . . B.4 Diagrama de ujo del modulo Interrupcion CAN. . . . . . . . . . . . . B.5 Diagrama de ujo del modulo Procesado Datos CAN. . . . . . . . . . B.6 Diagrama de ujo del modulo Interrupcion I2C y SPI. . . . . . . . . . . B.7 Diagrama de ujo del modulo Interrupcion RS232. . . . . . . . . . . . B.8 Diagrama de ujo del modulo Conguracion Placa Adquisicion de Datos. B.9 Diagrama de ujo del modulo Interrupcion RDA en ADIS16201. . . . . . B.10Diagrama de ujo del modulo Pedido y envio de datos en ADIS16201. . C.1 C.2 C.3 C.4 C.5 C.6 C.7 Capa top del Layout del nodo de comunicacion. . . . . . . . . . . . . Capa bottom del Layout del nodo de comunicacion. . . . . . . . . . . Layout con las capas top y bottom del nodo de comunicacion. . . . . Capa top del Layout de la placa de adquisicion de datos. . . . . . . . Capa bottom del Layout de la placa de adquisicion de datos. . . . . . Layout con las capas top y bottom de la placa de adquisicion de datos. Layout placa acopladora. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . .

106 108 109 110 111 161 161 162 162 163 164 164 165 165 166 167 168 169 170 171 172 172

D.1 Tabla con los diferentes modos de trabajo de SPI en el PIC18F2580. . . . . . . 174 F.1 F.2 F.3 F.4 F.5 F.6 F.7 F.8 F.9 Asociacion LEDs con los puertos RB del PIC Ejercicio 2. . . . . . . . . . . . . . . . . . . Registro del MCP25050. . . . . . . . . . . . Codigo a anadir en la librera ccscana.c. . . Resultado del ejercicio anterior . . . . . . . . Registros del MCP25050. . . . . . . . . . . LEDs del nodo C. . . . . . . . . . . . . . . . Codigo del ejercicio hecho por nosotros. . . . Codigo del ejercicio del potenciometro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 182 182 183 184 185 187 188 189

NDICE DE TABLAS I 1.1 Conguracion de condensadores segun el reloj . . . . . . . . . . . . . . . 1.2 Puertos y pines utilizados en el PIC18F4580 . . . . . . . . . . . . . . . . 1.3 Senales mas comunes en RS232 y sus respectivos pines en los conectores. 1.4 Puertos y pines utilizados en el PIC18F2580 . . . . . . . . . . . . . . . . 1.5 Especicaciones mas importantes del ADIS16100. . . . . . . . . . . . . . 1.6 Descripcion de los pines del ADIS16100. . . . . . . . . . . . . . . . . . . 1.7 Tabla de pruebas del ADIS16100. . . . . . . . . . . . . . . . . . . . . . . 1.8 Descripcion de la asignacion de bits en el registro DIN. . . . . . . . . . . . 1.9 Descripcion de la asignacion de bits en el registro DOUT. . . . . . . . . . . 1.10Ejemplos de datos de salida del ADIS16100. . . . . . . . . . . . . . . . . 1.11Especicaciones mas importantes del ADIS16201. . . . . . . . . . . . . . 1.12Descripcion de los pines del ADIS16201. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 7 14 21 24 25 25 27 28 29 33 33

2.1 Identicadores asociados a los mensajes utilizados en la Placa de Adquisicion de Datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Tabla de aceptacion de mensajes de la Placa de Adquisicion de Datos. . . . . 2.3 Caractersticas si la tabla de aceptacion esta en el Nodo de Comunicaciones. . 2.4 Caractersticas si la tabla de aceptacion esta en el Dispositivo. . . . . . . . . . 2.5 Otros Transceivers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6 Conguracion interruptores de seleccion de protocolos. . . . . . . . . . . . . .

41 42 42 42 49 50

E.1 Lista de precios componentes nodo. . . . . . . . . . . . . . . . . . . . . . . . 176 E.2 Lista de precios componentes placa de adquisicion. . . . . . . . . . . . . . . . 177

1

INTRODUCCION En la asignatura Navegacion Aerea, Cartografa y Cosmografa (NACC) se pretende incluir practicas en la que los alumnos puedan ver el funcionamiento de un sistema de navegacion. La nalidad de un sistema de navegacion es poder determinar la ruta seguida por el vehculo y en consecuencia, guiarlo de manera adecuada. Este sistema de navegacion estara formado por dos elementos, el GPS (Global Positio ning System) y el INS (Inertial Navigation System). La combinacion de estos dos disposi tivos se denomina INS/GPS. En estas practicas se pretende monitorizar todos los datos recibidos por estos dos sensores y transmitirlos a una estacion central, como por ejemplo un PC. De esta forma, y procesando los datos de forma correcta, se podra obtener la in formacion necesaria para determinar la ruta seguida y proporcionar la actitud del vehculo. El objetivo de este trabajo nal de carrera es doble: En una primera parte se disena un nodo de comunicaciones capaz de hacer de interfaz entre dispositivos que hablan en RS232, SPI o I2C, y un bus general de comunicaciones llamado Bus CAN. En la segunda parte se disena una placa electronica en la que se integran dos inclinometros/acelerome tros, y dos giroscopos. La primera parte del trabajo la dividimos en tres subpartes (una subparte por cada protocolo a utilizar) en la que realizamos diferentes experimentos. Para hacer estos experimentos implementamos dos nodos de comunicaciones de prueba en dos protoboards (prototipos). Al tener los dos prototipos pudimos probar la comunicacion RS232-CANRS232, SPI-CAN-SPI y I2C-CAN-I2C. Lo que se pretenda en cada subparte era obtener una comunicacion entre los nodos de comunicacion. Una vez comprobado el correcto funcionamiento de los prototipos se elaboraron los dispositivos denitivos. La nalidad de la segunda parte es la de recoger informacion sobre inclinacion, acelera cion y velocidad angular de los sensores para enviarla posteriormente al nodo de comuni caciones mediante RS232, y despues enviarla al bus general por CAN. De esta forma se podra emular un INS (solo faltara el procesado nal que se realizara en otro modulo). La prueba nal consiste en unir, a traves del bus CAN controlado por los nodos de comu nicacion, nuestra placa de adquisicion de datos, un GPS y dos PC. En uno de estos PC se monitorizaran todos los datos. La distribucion de esta memoria es la siguiente: Un primer captulo donde se explican los conceptos teoricos mas importantes para poder entender el trabajo, y que servira de introduccion a los siguientes captulos.

En el segundo captulo se presenta la metodologa utilizada para poder desarrollar este proyecto: Que hemos hecho y como lo hemos hecho.

El tercer captulo consiste en presentar las diferentes pruebas realizadas en las dos placas electronicas para comprobar su correcto funcionamiento.

Para nalizar encontraremos un apartado con las conclusiones obtenidas de losexperimentos realizados.

2

Diseno y construccion de bus de datos y sensores para las practicas de NACC

En los anexos se encontrara el material de soporte adicional.

Conceptos Teoricos

3

CAPTULO 1. CONCEPTOS TEORICOS I El objetivo de este captulo es ofrecer una introduccion a los aspectos teoricos mas rele vantes a lo largo de esta memoria. Creemos que son utiles y necesarios para un correcto seguimiento del trabajo, y as no llevar al lector la confusion o la duda. En primer lugar, en la seccion 1.1., se describen los conceptos teoricos de la primera parte del proyecto (nodo de comunicaciones). Hemos considerado importante destacar tanto el funcionamiento del corazon de la placa (el PIC18F4580) como los protocolos a utilizar. En la seccion 1.2. se describen los conceptos teoricos de la placa de adquisicion de datos disenada. En primer lugar se explican los MEMS y el PIC utilizado y seguidamente se describe el concepto de Sistema Inercial.

1.1. Nodo de Comunicaciones1.1.1. PIC (Peripheral Interface Controller)Los PIC son una familia de microcontroladores (C) fabricados por Microchip Tecnhno logy Inc. Para el control de todos los procesos en nuestra placa electronica escogimos este tipo de C debido a su bajo precio, sencillo manejo y programacion, y a la cantidad de documentacion y usuarios que hay detras de ellos. Aunque no son los C que mas prestaciones ofrecen, sus caractersticas se ajustan perfectamente a nuestro proyecto. Existe una gran cantidad de modelos de PIC con caractersticas y prestaciones diferentes. Esto hace que el desarrollador pueda escoger el modelo que mas se ajuste a sus necesidades. Para que el PIC pueda realizar sus funciones lo primero que se ha de hacer es programarlo, es decir, hemos de escribir un programa que contenga los procesos que el PIC deba ejecutar. Este programa se puede escribir en varios lenguajes de programacion, pero los mas utilizados son el Assembler (ensamblador) y el C. Aun faltara un ultimo paso para que el PIC pueda entender lo que hemos escrito. Este ultimo paso es traducir este progra ma a lenguaje maquina (1s y 0s). Gracias a los compiladores este proceso es bastante directo. En este trabajo nal de carrera hemos programado en C y el compilador utilizado es el proporcionado por la empresa CCS (Custom Computer Services, Inc.). Como todo C, un PIC se puede dividir en diferentes bloques (Ver la gura 1.1);

Reloj: Todos los PIC disponen de un circuito oscilador que genera una onda cuadrada de alta frecuencia que se utiliza para sincronizar todas las operaciones del sistema. El PIC tiene un oscilador interno incorporado, y en funcion de la velocidad de trabajo con la que queramos trabajar utilizaremos este oscilador (velocidades mas bajas) o un oscilador externo (velocidades altas) como por ejemplo cristal de cuarzo, resonador ceramico1 o una red R-C. Aumentar la frecuencia del reloj im1

Cristal de cuarzo de baja frecuencia (800kHz).

4

Diseno y construccion de bus de datos y sensores para las practicas de NACC

Figura 1.1: Componentes que conguran un microcontrolador plica disminuir el tiempo de ejecucion de las instrucciones, pero lleva aparejado un incremento de la temperatura.

I/O (In/Out): La mayora de los pines que posee un PIC son de I/O y se destinan a proporcionar el soporte a las senales de entrada, salida y de control.

CPU: Es el elemento que interpreta las instrucciones y procesa los datos en losprogramas del PIC.

Memoria de datos: Los datos que manejan los programas varan continuamente, y esto exige que la memoria que los contiene debe ser de escritura y de lectura, por lo que la memoria RAM (Random Access Memory) es la mas adecuada, aunque sea volatil. Tambien se dispone de una memoria de lectura y escritura no volatil, del tipo EEPROM (Electrically-Erasable Programmable Read-Only Memory). De esta forma, un corte en el suministro de la alimentacion no ocasiona la perdida de la informa cion, que esta disponible al reiniciarse el programa. Memoria de programas: El PIC esta disenado para que en su memoria de pro grama se almacenen todas las instrucciones del programa de control. Como este siempre es el mismo, debe estar grabado de forma permanente. Existen varios tipos de memoria adecuados para soportar estas funciones, de las cuales en los PIC se utilizan la ROM (Read-Only Memory), OTP (One-Time Programmable) y Flash. Perifericos: Se llama perifericos a todas aquellas unidades a traves de las cuales el PIC se comunica con el mundo exterior. En los PIC podemos encontrar ADC (Analog to Digital Converter), comparadores, temporizadores, y perifericos destinados a las comunicaciones como los siguientes; EUSART (Enhanced Universal Synchronous Asynchronous Receiver Transmitter): Interfaz entrada salida serie. Con este modulo podemos transformar los datos en serie a paralelo y al reves. De esta forma se pueden adaptar los datos con los que trabaja el PIC (en paralelo) con los que le pueden llegar a traves de este puerto (serie). Es el utilizado por el protocolo RS232. USB (Universal Serial Bus): Permite operar con el protocolo USB.

Conceptos Teoricos

5

MSSP (Master Synchronous Serial Port): Es una interfaz serie integrada en el PIC disenada para comunicarse con otros perifericos o C. Permite operar con los protocolos I2C y SPI. CAN (Controller Area Network): Permite operar con el protocolo CAN. PSP (Parallel Slave Port): Interfaz para conectar dos C mediante niveles TTL (Transistor-Transistor Logic). CCP/ECCP (Enhanced Capture/Compare/PWM): Modulo que se puede utilizar como comparador, como capturador o como PWM (Pulse-Width Modulation). Para nalizar creemos importante destacar que los proyectos en los que se suelen trabajar con PICs pueden ser muy variados, por ejemplo la automocion, la industria, informatica, comunicaciones, etc (Ver la gura 1.2).

Figura 1.2: Mercado mundial de los PICs

1.1.1.1. PIC18F4580 Una vez vistas las caractersticas generales de los PIC, nos hace falta conocer las es pecicaciones del PIC a utilizar en nuestro diseno. El PIC elegido para este trabajo es el PIC18F4580 ya que puede soportar los 3 modulos necesarios (EUSART, MSSP y CAN) para trabajar con los 4 protocolos (RS232, SPI, I2C y CAN). Este PIC tiene 40 pines que se distribuyen como se muestra en la gura 1.3. Las caractersticas mas importantes son las siguientes: Reloj: Ofrece varias opciones de conguracion de la frecuencia de oscilacion, permitiendo al usuario escoger segun se adapte a sus necesidades: Utilizando un cristal o un resonador ceramico y conectandolos a los pines OSC1 y OSC2 del PIC. Para la eleccion de la frecuencia de oscilacion, el fabricante nos ofrece unas tablas2 (Ver la tabla 1.1);2

XT corresponde a Crystal/Resonator, HS a High-Speed Crystal/Resonator y LP a Low-Power Crystal.

6

Diseno y construccion de bus de datos y sensores para las practicas de NACC

Figura 1.3: Diagrama de pines del PIC 18F4580 Resonadores Ceramicos Modo XT HS Frecuencia 455kHz 2MHz 4MHz 8MHz 16MHz OSC1 56pF 47pF 33pF 27pF 22pF OSC2 56pF 47pF 33pF 27pF 22pF Modo LP XT HS Osciladores de cristal Frecuencia 32kHz 200kHz 1MHz 4MHz 4MHz 8MHz 20MHz OSC1 33pF 15pF 33pF 27pF 27pF 22pF 15pF OSC2 33pF 15pF 33pF 27pF 27pF 22pF 15pF

Tabla 1.1: Conguracion de condensadores segun el reloj

Los condensadores elegidos van del pin OSC1 o OSC2 a 0V (GND). En el diseno de nuestra placa hemos escogido como frecuencia de oscilacion 20 MHz. Utilizando relojes externos, ofreciendo la opcion de utilizar dos pines del PIC (OSC1 y OSC2) o solo un pin (OSC1). Utilizando un oscilador externo RC con la misma opcion de conguracion de pi nes que en el caso anterior. Un oscilador RC esta formado por un condensador no polarizado y una resistencia. Este tipo de oscilador proporciona una esta bilidad mediocre en la frecuencia generada y podra ser utilizado para aquellos proyectos que no requieran precision. Utilizando un oscilador interno. Este metodo se suele utilizar en los casos que se quieran aprovechar los pines OSC1 y OSC2 como I/O. Utilizando un multiplicador de frecuencia PLL (Phase Lock Loop). Gracias al PLL y utilizando el oscilador interno, el usuario puede disponer de una selec cion de frecuencias entre 31kHz y 32MHz.

I/O: En este PIC hay 5 puertos diferentes (A, B, C, D y E). Cada puerto tiene tres registros para sus operaciones que son el TRIS (registro de direccion de datos), el PORT (el que lee el nivel de tension que hay en el pin) y el LAT (utilizado en operaciones lectura-modicacion-escritura del valor que el pin I/O esta leyendo). En la tabla 1.2 se muestran por cada puerto los pines que se han utilizado.

Conceptos Teoricos

7

Pin 4, 5 y 6 13 y 14 37, 38 y 39 35 y 36 38, 39 y 40 18 25 y 26 23 23 y 24

Funcionalidad Puerto A LEDs Reloj Puerto B Interruptores CAN Para programar el PIC Puerto C Reloj I2C y SPI Datos RS232 Datos I2C Datos SPI Puerto D No utilizado Puerto E Para programar el PIC y para RESET

1

Tabla 1.2: Puertos y pines utilizados en el PIC18F4580

Memoria de datos: Tiene 1536 bytes de memoria RAM y 256 bytes de EEPROM. Memoria de programa: Tiene 32 kbytes de memoria Flash. Perifericos: En el PIC18F4580 podemos encontrar 11 ADC de 10 bits, dos modulos CCP/ECCP, MSSP para I2C y SPI, EUSART, dos comparadores, 4 temporizadores (uno de 8 bits y tres de 16 bits) y un modulo CAN.

1.1.2. CAN (Controller Area Network) El bus CAN es un bus de datos de comunicacion serie, empleado para su aplicacion en sistemas distribuidos en tiempo real. Originalmente el bus CAN fue desarrollado para aplicaciones en la industria automotriz, pero debido a sus caractersticas, robustez y excelente relacion calidad/precio, CAN fue adoptado para aplicaciones industriales y de control. El protocolo de comunicacion CAN fue especicado originalmente por la compana alemana Robert Bosch para aplicaciones crticas en tiempo real. Los motivos principales que nos han llevado a la eleccion de este protocolo son las siguientes:

Tratamiento de errores muy ecaz. Es un protocolo muy robusto frente a los proble mas de ruido, ya que fue disenado para entornos industriales.

Es un sistema que se ha ido adaptando a otros campos, lo que ha hecho que su

8

Diseno y construccion de bus de datos y sensores para las practicas de NACC

uso se haya extendido. Por ello, su coste es bajo frente al coste de otros posibles sistemas. Posibilidad de implementacion con dispositivos relativamente simples y baratos como por ejemplo los PICs que usamos.

Facilidad de desarrollo y gran cantidad de fabricantes en el mercado de dispositivosCAN.

Su sistema de prioridades no destructivo, que permite que en caso de que se transmitan dos mensajes simultaneamente, el de mayor prioridad no se destruya y llegue a su destino sin ningun tipo de retardo anadido. Su sistema de identicacion de mensajes, que consiste en que los nodos no tienen realmente una direccion, sino que se programan con un sistema de ltros para que acepten un determinado tipo de mensajes (Ver la gura 1.4), es decir, es un sistema basado en tipos de mensajes, no en direcciones, lo que hace que se puedan anadir nuevos nodos sin tener que recongurar el resto de los nodos.

Figura 1.4: Ejemplo de envo de paquete en CAN Su comportamiento en tiempo real: El metodo empleado por el protocolo CAN asocia cada mensaje a ser enviado con una prioridad determinada, y usa un mecanismo especial de arbitraje para asegurar que el mensaje de mayor prioridad sea el mensaje transmitido. La prioridad de un mensaje es un numero unico y puede ser usado como el identicador del mensaje. Es por eso que a la prioridad se le denomina tambien identicador del mensaje. En cuanto a inconvenientes:

Protocolo complejo. Velocidad limitada por la longitud de la red (Ver la gura 1.5), aunque en este trabajo no inuye demasiado como para tenerlo en cuenta. Segun el estandar, la velocidad maxima que puede alcanzar el bus CAN es de 1Mbps y esta se puede alcanzar hasta con una longitud de red de 40 metros. En el marco de nuestro proyecto esto no nos afecta.

Conceptos Teoricos

9

Figura 1.5: Velocidad del bus CAN en funcion de la longitud Para el desarrollo de nuestra red CAN nos vamos a basar en el estandar ISO 11898 (Organizacion Internacional para la Estandarizacion), en aspectos concretos del protocolo de nodos, etc. CAN como son los niveles del bus, implementacion Dado que el protocolo CAN solo dene dos niveles del Modelo OSI (Ver la gura 1.6), es necesario que se dena tambien un nivel alto de aplicacion, del que hablaremos en el apartado 2.1..

Figura 1.6: Modelo OSI

1.1.2.1. Capa Fsica Se denen los parametros a nivel fsico (niveles de senal, corriente, sincronizacion, etc.). CAN no tiene declarada una especicacion como tal, pero los estandares ISO 11898 establecen las caractersticas que deben de cumplir las aplicaciones para la transferencia en alta y baja velocidad. La informacion circula por dos cables trenzados que unen todas las unidades de control que forman el sistema. Esta informacion se trasmite por diferencia de tension entre los dos cables, de forma que un valor alto de tension representa un 1 y un valor bajo de tension representa un 0. La combinacion adecuada de unos y ceros conforman el mensaje a trasmitir. En un cable los valores de tension oscilan entre 0 V y 2.25 V, por lo que se denomina cable L (Low), y el otro cable, llamado cable H (High) tiene niveles de tension entre 2.75

10

Diseno y construccion de bus de datos y sensores para las practicas de NACC

V y 5 V (Ver la gura 1.7). En caso de que se interrumpa la lnea H o que se derive a masa, el sistema trabajara con la senal de Low con respecto a masa. En el caso de que se interrumpa la lnea L, ocurrira lo contrario. Esta situacion permite que el sistema siga trabajando con uno de los cables cortados o comunicados a masa, quedando fuera de servicio solamente cuando ambos cables se cortan.

Figura 1.7: Modelo Niveles de tension utilizados en CAN El valor dominante en el bus CAN se produce cuando tenemos el bit 0 mientras que el valor recesivo se produce con el bit a 1. Es importante tener en cuenta que el trenzado entre ambas lneas sirve para anular los campos magneticos, por lo que no se debe modicar en ningun caso ni el paso ni la longitud de dichos cables.

1.1.2.2. Capa de enlace de datos (LLC y MAC) La MAC (Media Access Control) es la responsable de: Tipo de trama que se enva: Para la transmision y control de mensajes CAN se denen cuatro tipos de tramas: De datos, remota (transmitido por una unidad de bus que requiere la transmision de una trama de datos con el mismo identicador), de error (transmitido por cualquier unidad que detecta un error en el bus), y de sobrecarga (usado para dar un retraso extra entre las tramas de datos y remotas). Tanto las tramas de datos y las tramas remotas tienen dos formatos. Un formato es el llamado Estandar y el otro es el Extendido, y se diferencian en el numero de bits que tiene el identicador (la estandar tiene 11 bits y la extendida tiene 29 bits) (Ver la gura 1.8). Las tramas de datos y las remotas se separan de tramas precedentes mediante espacios entre tramas (interframe space). Dentro de las tramas de datos y remotas podemos encontrarnos con diferentes campos (Ver la gura 1.9): Inicio de trama: consiste en un bit a 0.

Conceptos Teoricos

11

Figura 1.8: Formato estandar y extendido de las tramas CAN. Campo de arbitracion: campo donde se introduce el identicador. Campo de control: campo donde se indica la longitud de los datos. Campo de datos: campo donde se introducen los datos (como maximo 8 bytes). Campo CRC: campo de comprobacion de errores. Campo ACK: Consta de dos bits en recesivos. Fin de trama: consiste en 7 bits recesivos.

Figura 1.9: Campos de las tramas CAN La unica diferencia entre la trama de datos y la trama remota es que esta ultima no contiene el campo de datos. Arbitracion: Cuando el bus esta idle (libre), cualquier unidad puede transmitir un mensaje. Si dos o mas dispositivos quieren transmitir mensajes al mismo tiempo, el

12

Diseno y construccion de bus de datos y sensores para las practicas de NACC

conicto de quien accedera al bus sera resuelto por el arbitro utilizando el identi cador. Este mecanismo garantiza que no se pierde informacion ni tampoco tiempo. En el caso de una trama de datos y una remota con el mismo identicador, la trama de datos prevalece sobre la trama remota. Durante la arbitracion cada transmisor compara el nivel del bit transmitido con el que monitoriza el bus: Si esos niveles son iguales continua enviando, si son diferentes y lo que hemos enviado es un bit recesivo 1 y monitorizamos un bit dominante 0, la unidad habra perdido la arbitracion y debera dejar de transmitir (Ver la gura 1.10).

Figura 1.10: Ejemplo de arbitracion en CAN

ACK: Un receptor que recibe un mensaje correctamente se lo notica al transmisorponiendo el bit del campo ACK a 0 (dominante), de forma que el transmisor que esta todava trasmitiendo reconoce que al menos alguien ha recibido un mensaje escrito correctamente. De no ser as, el transmisor interpreta que su mensaje pre senta un error. Detectar errores: En cuanto a la deteccion y manejo de errores, un controlador CAN cuenta con la capacidad de detectar y manejar los errores que surjan en una red. Todo error detectado por un nodo se notica inmediatamente al resto de los nodos. Denir el metodo de acceso: El metodo de acceso al medio utilizado es el de Acceso Multiple por Deteccion de Portadora, con Deteccion de Colisiones y Arbitra je por Prioridad de Mensaje (CSMA/CD+AMP, Carrier Sense Multiple Access with Collision Detection and Arbitration Message Priority). De acuerdo con este metodo, los nodos en la red que necesitan transmitir infor deben esperar a que el bus este libre (deteccion de portadora). Cuando se macion cumple esta condicion, dichos nodos transmiten un bit de inicio (acceso multiple). Cada nodo lee el bus bit a bit durante la transmision de la trama y comparan el valor transmitido con el valor recibido; mientras los valores sean identicos, el nodo continua con la transmision; si se detecta una diferencia en los valores de los bits, se lleva a cabo el mecanismo de arbitraje.

La LLC (Logical Link Control) es la capa que esta relacionada con;

Filtrado de mensajes: Como hemos comentado anteriormente, los dispositivos no tienen realmente una direccion, sino que se programan con un sistema de ltros para que acepten un determinado tipo de mensajes

Conceptos Teoricos

13

Proceso de solucion de errores (reenvo): El protocolo CAN tiene cinco metodos de repaso de errores, tres en el nivel de mensaje y dos en el nivel del bit. Si un mensaje tiene alguno de estos errores, no se aceptara y se generara una trama de error para que el resto de los nodos no hagan caso del mensaje defectuoso, y para que el nodo que transmite vuelva a enviar el mensaje.

1.1.2.3. Capa de supervisor Un sistema de bus serie presenta el problema de que un nodo defectuoso puede bloquear el funcionamiento del sistema completo. Cada nodo activo transmite una bandera de error cuando detecta algun tipo de error y puede ocasionar que un nodo defectuoso pueda acaparar el medio fsico. Para eliminar este riesgo el protocolo CAN dene un mecanismo autonomo para detectar y desconectar un nodo defectuoso del bus. Dicho mecanismo se conoce como aislamiento de fallos o Fault Connement.

1.1.2.4. Capa de aplicacion Existen diferentes estandares que denen la capa de aplicacion; algunos son muy espe ccos y estan relacionados con sus campos de aplicacion. Entre las capas de aplicacion mas utilizadas cabe mencionar CAL, CANopen, DeviceNet, SDS (Smart Distributed System), OSEK y CANKingdom. En nuestro trabajo crearemos nuestra propia capa de aplicacion (Ver apartado 2.1.).

1.1.3. RS232 (Recommended Standard 232) Ante la gran variedad de equipos, sistemas y protocolos que existen surgio la necesidad de un acuerdo que permitiera a los equipos de varios fabricantes comunicarse entre si. La EIA (Electronics Industry Association) elaboro la norma RS-232, la cual dene la interfaz mecanica, los pines, las senales y los protocolos que debe cumplir la comunicacion serial. El RS232 es un protocolo de comunicacion serie orientado a caracteres, es decir, un protocolo donde toda la informacion es enviada por un solo canal bit a bit (un canal para y otro para recibirla), y donde lo que se envan son caracteres. Por enviar informacion ejemplo, si queremos enviar el numero 123, primero tendremos que enviar el caracter 1, seguidamente el 2 y para nalizar el 3, y no el byte que represente el numero 123. Este protocolo esta disenado para distancias cortas, de unos 15 metros mas o menos, y se puede trabajar de forma asncrona o sncrona y con tipos de canal simplex, halfduplex y fullduplex3 . Una canal simplex consiste en una comunicacion unidireccional, deshabilitando la respuesta del recep tor. Un canal halfduplex permite la comunicacion en ambos sentidos pero no simultaneamente, mientras3

14

Diseno y construccion de bus de datos y sensores para las practicas de NACC

Una conexion RS232 esta denida por un cable desde un dispositivo al otro. Hay 25 co nexiones en la especicacion completa pero en la mayora de los casos se utilizan menos de la mitad. Los conectores mas utilizados son los DB9 y los DB25 (Ver la gura 1.11). En la tabla 1.3 se puede observar las senales mas comunes en RS232 segun los pines del conector asignados:

GND: Valor a 0V. TD: Lnea de datos del transmisor al receptor. RD: Lnea de datos del receptor al transmisor. DTR: Lnea por donde el receptor informa al transmisor que esta vivo y bien. DSR: Lnea por donde el transmisor informa al receptor que esta vivo y bien.

RTS: Lnea en la que el transmisor indica que quiere enviar algo al receptor. CTS: Lnea en la que se informa que el receptor esta preparado para recibir datos.

DCD: Lnea por la que el receptor informa al transmisor que tiene una portadora entrante.

RI: Lnea en la que se indica que se ha detectado una portadora. Senal GND Transmision de datos (TD) Recepcion de datos (RD) Terminal de datos preparado (DTR) Datos preparados (DSR) Peticion de envo (RTS) Limpieza de envo (CTS) Portadora de datos detectada (DCD) Indicador de tono (RI) DB-25 7 2 3 20 6 4 5 8 22 DB-9 5 3 2 4 6 7 8 1 9

Tabla 1.3: Senales mas comunes en RS232 y sus respectivos pines en los conectores. La conexion mas sencilla se puede realizar con 3 cables (TD, RD, y GND). En nuestro trabajo utilizaremos esta conguracion de 3 cables. Los parametros a congurar en una comunicacion RS232 son los siguientes:

Protocolo serie (numero de bits - paridad - bits de parada): La paridad se utilizapara poder comprobar la calidad de los datos recibidos. Los bits de datos pueden estar entre los 5 bits y los 8, y los bits de parada consisten en uno o dos bits puestos a 1. En la gura 1.12 se muestra una conguracion 7N1. que un canal fullduplex permite una comunicacion bidireccional simultanea.

Conceptos Teoricos

15

Figura 1.11: Conectores DB-25 y DB-9 en RS232. En nuestro trabajo utilizaremos la conguracion 8N1 (8 bits de datos sin paridad y con un bit de parada).

Velocidad del puerto: RS232 puede transmitir los datos a unas velocidades determinadas (normalmente entre 4800 y 115200 bps).

Protocolo de control de ujo: El control de ujo puede ser mediante hardware gracias al llamado handshaking entre las lneas RTS y CTS, o por software mediante 4 el XON/XOFF . En nuestro proyecto no utilizaremos control de ujo.

Figura 1.12: Conguracion 7N1 del RS232.

1.1.4. I2C (Inter-Integrated Circuit)I2C es un bus bidireccional de dos hilos desarrollado por Philips. Su nalidad principal es la de poder facilitar las comunicaciones entre dispositivos pequenos, como por ejemplo entre PICs y memorias EEPROM.

1.1.4.1. Descripcion del bus Sus caractersticas mas relevantes se pueden resumir en los siguientes puntos: En el XON/XOFF, cuando el receptor quiere que el transmisor pare su envo de datos enva XOFF, mientras que cuando el receptor quiere que el transmisor enve mas datos, enva XON. 4

16

Diseno y construccion de bus de datos y sensores para las practicas de NACC

Esta formado fsicamente por dos hilos, el SDA (Serial Data) y el SCL (Serial Clo ck). Estos dos hilos son los que forman en su totalidad el bus y en ellos se conectan todos los dispositivos como se puede observar en la gura 1.13. Por lo tanto, es un protocolo Halfduplex.

Figura 1.13: Esquema de conexion del bus I2C. Todos los dispositivos tienen una direccion propia, que hay que indicar al inicio de la conexion para poder establecerla. Por lo tanto, a diferencia del bus CAN, es un sistema basado en direcciones y no en tipos de mensajes. En funcion de si se envan o se reciben datos, se deben considerar los dispositivos como Maestros (Master) o esclavos (Slaves). El primer dispositivo que encuentre libre el bus, y por lo tanto inicie la comunicacion y controle el reloj, sera el Master, mientras que los demas seran Slaves.

Es un bus serial, de 8 bits, bidireccional y a diferencia del RS232 no es orientado acaracteres.

Debido a que es un bus Multimaster5 , puede darse el caso en el que varios dispositivos necesiten acceder al medio al mismo tiempo. Para controlar estas situaciones existe un sistema de arbitraje. Este sistema determina, mediante el SCL y el nivel logico del mismo hilo, que dispositivo tendra prioridad sobre el otro. El numero de dispositivos que pueden conectarse al bus esta limitado, de forma que este no supere los 400 pF de capacitancia. Puede trabajar a 100 kbps (modo estandar), 400 kbps (modo rapido) o 3,4 Mbps (modo de alta velocidad). En nuestro software utilizaremos el modo rapido. Tanto el SDA como el SCL estan conectados a unas resistencias de carga llamadas resistencias pull-up. Estas resistencias polarizan las lneas, de forma que cuando el bus esta libre (idle), se encuentre a nivel alto (1 logico) y este estable.

1.1.4.2. Funcionamiento del bus Los pasos a seguir en una comunicacion master-slave desde que se quiere enviar datos hasta que se reciben los datos es la siguiente:5

Mas de un master puede controlar el bus al mismo tiempo sin corrupcion de los mensajes.

Conceptos Teoricos

17

1. Si un dispositivo necesita establecer comunicacion con otro, debera comprobar que el bus esta libre. 2. Se enva la condicion de INICIO (Ver la gura 1.14) para ocupar el bus. Entonces el resto de dispositivos escuchan el SDA, por el cual se enva la direccion de 7 bits del dispositivo receptor. De esta forma se establece el enlace entre Maestro y Esclavo.

Figura 1.14: Condicion de inicio del I2C. 3. Al mismo tiempo en el SCL se transmite la senal del reloj que sincronizara el tiempo de envo de los bytes por el SDA de los dispositivos, de forma que se puedan leer correctamente los datos del SDA cuando el SCL cambia del nivel bajo al nivel alto (lectura en el anco de subida). 4. Una vez enviados los 7 bits de la direccion se enva un octavo bit que indicara si estamos en modo escritura o lectura en el dispositivo receptor. Este bit es el denominado bit R/W. 5. El master espera un ACK6 por parte del esclavo. 6. Seguidamente en funcion de si estamos en modo lectura o escritura, el master o el esclavo enviaran paquetes de 8 bits. Despues de cada paquete se enviara un ACK para conrmar la correcta transferencia de datos. 7. Una vez enviados todos los datos se establece la condicion de parada, que vol vera al bus el estado libre (Ver la gura 1.15).

Figura 1.15: Condicion de parada del I2C. En la gura 1.16 se presenta un ejemplo de como se realiza la comunicacion con el protocolo I2C.6

Mensaje que se enva para conrmar que un mensaje o un conjunto de mensajes han llegado

18

Diseno y construccion de bus de datos y sensores para las practicas de NACC

Figura 1.16: Ejemplo de comunicacion I2C.

1.1.5. SPI (Serial Peripheral Interface) El SPI es un bus fullduplex, sncrono y serial desarrollado por Motorola. Tambien puede encontrarse con el nombre de Microwire, propiedad de National SemiConductors. Al ser un bus serial su numero de hilos es reducido en comparacion a los buses paralelos. Si bien estos ultimos son mas rapidos, la eciencia y simplicidad que un bus serial puede ofrecer hace que esta diferencia de velocidad sea menos importante.

1.1.5.1. Descripcion del bus SPI es un bus que establece la comunicacion entre master y esclavo mediante 4 tipos de hilos que contiene senales diferentes:

MISO, Master In/Slave Out. Esta lnea es una de las dos lneas unidireccionales. A traves de esta lnea se realiza la transmision de datos de forma unidireccional desde la salida del Esclavo a la entrada del Maestro. Cuando el dispositivo no ha sido seleccionado para la comunicacion, esta lnea es puesta en un estado de alta impedancia para evitar interferencias.

MOSI, Master Out/Slave In. Esta lnea es la segunda de las dos lneas unidirec cionales. A traves de esta lnea se realiza la transmision de datos de forma unidi reccional desde la salida del master a la entrada del esclavo. El dispositivo master pone los datos sobre la lnea MOSI medio ciclo antes del nal del anco de alta impedancia para evitar interferencias. SCLK, Es el reloj del bus con el que los dispositivos sincronizaran el ujo de datos a traves de las lneas. Se pueden congurar 2 parametros que denen 4 modos de sincronizacion. Estos parametros son: CPOL (Clock polarity): Determina si el estado IDLE de la lnea SCLK es en nivel bajo (CPOL = 0) o en nivel alto (CPOL = 1). No tiene efecto signicativo en el formato de transferencia.

Conceptos Teoricos

19

CPHA (Clock Phase): Determina en cual anco del reloj los datos son ledos o escritos. Si CPHA = 0 los datos sobre la lnea MOSI son puestos en el primer anco de reloj y los datos sobre la lnea MISO son ledos en el segundo anco de reloj. Cuando CPHA = 1 sucede lo contrario, la transferencia de datos sucede en el segundo anco de reloj. Por lo tanto, segun como se combinen estos dos parametros, tendremos 4 modos diferentes de trabajo. Es muy importante que todos los dispositivos dentro del bus trabajen con el mismo modo.

CS o SS, Chip select o Slave Select. Los dispositivos en SPI no se seleccionan porsoftware utilizando direcciones, como ocurre en I2C. En este protocolo es necesario utilizar una lnea mas llamada Chip Select, (CS) o Select Slave (SS). De forma que si estamos utilizando 3 dispositivos, el bus estara compuesto por 2 hilos de transmision de datos, 1 de reloj y 3 de CS como se puede observar en la gura 1.17. Si solo se utiliza un Master y un Esclavo como en el caso de nuestro nodo de comunicaciones, las lneas CS no seran necesarias.

Figura 1.17: Conexion del CS de SPI a los diferentes dispositivos.

1.1.5.2. Funcionamiento del bus Cuando se la establece comunicacion, el bus solo puede ser ocupado por un Master y un Esclavo. Cualquier dispositivo que no haya sido seleccionado debera deshabilitarse por medio del chip select para evitar interferencia. La seleccion de los dispositivos es muy sencilla: El master pone a nivel logico bajo 0 el chip select del dispositivo en cuestion. El resto pasan a modo de alta impedancia para no interferir la comunicacion. A partir de este momento se inicia la comunicacion entre los de inicio de I2C. dispositivos. Es algo parecido a la condicion

20

Diseno y construccion de bus de datos y sensores para las practicas de NACC

Una vez seleccionados los dispositivos, los datos pueden ser transferidos hasta una ve locidad maxima de varios MHz (Mbps). En los PICs que vamos a utilizar, la velocidad maxima es de 5 Mbps (con un clock de 20 MHz), aunque nosotros utilizaremos una velocidad de 1,25 Mbps. Durante la transferencia SPI, los datos son transmitidos y recibidos simultaneamente por cada una de las lneas MISO y MOSI. Esto ocurre porque los datos entrantes en el Esclavo avanzan en un registro interno de forma que cuando se recibe el byte entero, los datos salen por la lnea SDO (Ver la gura 1.18). La lnea SDO en el esclavo corresponde a la lnea MISO comentada anteriormente, mientras que la SDI en el esclavo corresponde a la lnea MOSI.

Figura 1.18: Desplazamiento de bits en Esclavo SPI. En la gura 1.19 se puede ver el formato de transferencia del bus SPI.

Figura 1.19: Ejemplo de comunicacion SPI.

1.2. Placa de adquisicion de datos1.2.1. PIC18F2580 El PIC elegido para la placa de adquisicion de datos es el PIC18F2580. Este PIC tambien puede soportar los 2 modulos necesarios (EUSART, MSSP) para trabajar con los 2 proto-

Conceptos Teoricos

21

colos a utilizar (RS232, SPI). La diferencia con el PIC18F4580 es que tiene menos puertos I/O y menos memoria RAM y Flash. Como no se utilizaran todos los puertos I/O, el codigo no necesita de grandes memorias RAM y Flash, y ademas el tamano del PIC18F2580 es mas pequeno, por lo que se adapta perfectamente al diseno de la placa de adquisicion de datos.

Figura 1.20: Diagrama de pines del PIC 18F2580 Las caractersticas mas importantes son las siguientes:

Reloj: Como en el caso del PIC18F4580, hemos seleccionado un oscilador externode 20 MHz mediante un cristal de cuarzo.

I/O: En este PIC hay 4 puertos diferentes (A, B, C y E). En la tabla 1.4 se muestranpor cada puerto los pines que se han utilizado. Pin 3 9 y 10 26, 27 y 28 18 25 y 26 23 y 24 1 Funcionalidad Puerto A LED Reloj Puerto B Para programar el PIC Puerto C Reloj SPI Datos RS232 Datos SPI Puerto E Para programar el PIC y para RESET

Tabla 1.4: Puertos y pines utilizados en el PIC18F2580

Memoria de datos: Tiene 768 bytes de memoria RAM y 256 bytes de EEPROM.

22

Diseno y construccion de bus de datos y sensores para las practicas de NACC

Memoria de programa: Tiene 16 kbytes de memoria Flash. Perifericos: En el PIC18F2580 podemos encontrar 11 ADC de 10 bits, dos modulos CCP/ECCP, MSSP para I2C y SPI, EUSART, dos comparadores, 4 temporizadores (uno de 8 bits y tres de 16 bits) y un modulo CAN.

1.2.2. MEMS (Micro Electro-Mechanical Systems) Las siglas de MEMS provienen de las palabras en ingles Micro Electro-Mechanical Sys tems que hacen referencia al tipo de tecnologa electromecanica micrometrica que se utilizan en algunos circuitos integrados (IC). En estos se integran, encima de un sustrato, sensores, actuadores y elementos electronicos de medidas que van desde los micrometros a los milmetros. Los MEMS han conseguido eliminar la diferencia entre los complejos dispositivos meca nicos y los circuitos electronicos, juntandolos en un mismo sustrato de forma que, lo que a macroescala es grande y costoso, a la escala de los MEMS es mas practico y barato. Gracias a su tamano y su precio, los campos tecnologicos en los que los MEMS se utilizan son muy variados: Automocion: Acelerometros en vehculos para hacer saltar el airbag. Sensores de presion para activar los sistemas de suspension. Giroscopos MEMS para detectar giros como en el sistema de control de esta bilidad dinamico.

Medicina y biotecnologa: Sensores de presion para medir la presion sangunea. Circuitos integrados que ayudan a mejorar las prestaciones microscopicas, qumica y agentes biologicos. microchips para detectar la contaminacion Comunicaciones e informatica: Impresoras de inyeccion de tinta, las cuales usan un piezoelectrico o burbuja de inyeccion para depositar la tinta en el papel. Desarrollo de material electronico compatible a altas frecuencias haciendo que el tamano total del circuito, consumo y coste nal se reduzca, al mismo tiempo que la eciencia para investigaciones de microondas aumenta. Tecnologa optica de conmutacion, utilizada para comunicacion de datos. El unico problema que acarrean estos sistemas micro electromecanicos es la fabricacion, puesto que es necesario modicar la tecnologa de fabricacion convencional para conse guir reducir algunos efectos que a escala macroscopica son despreciables. Algunos de estos efectos son termicos y electrostaticos.

Conceptos Teoricos

23

En este TFC trabajaremos con unos circuitos integrados MEMS, el ADIS 16100 y el 16201 fabricados con tecnologa MST.

1.2.2.1. ADIS16100 El ADIS 16100, esta formado como se puede ver en la gura 1.21, por un giroscopo que 7 puede llegar a detectar un giro de guinada del MEMS en el rango de 300o /s, por un termometro, un convertidor ADC y un modulo de SPI que sera con el que se realice la lectura a traves del puerto de salida DOUT.

Figura 1.21: Diagrama de bloques del ADIS16100. Los datos de salida del SPI (en el puerto DOUT) van en funcion de la tasa de giro sobre el eje z (Ver la gura 1.22)8 . Como hemos comentado anteriormente, los valores maximos o o que podra detectar seran de -300 /s si gira en sentido antihorario o +300 /s si gira en sentido horario.

Figura 1.22: La senal del ADIS16100 incrementa con el angulo de giro. En el ADIS16100 se incluye un convertidor ADC interno. Este convertidor realiza la con version de analogico a digital de la temperatura y de la tasa de giro. Ademas, tiene unasGiro sobre el eje z LSB (Least Signicant Bit) es el bit que tiene menos peso dentro de un numero. Es decir, es el bit que proporciona el cambio mas pequeno en cualquier valor si es cambiado.8 7

24

Diseno y construccion de bus de datos y sensores para las practicas de NACC

entradas analogicas, AIN1 y AIN2, que nos permiten digitalizar cualquier otro tipo de in formacion analogica que se conecte. En el datasheet del ADIS16100 se pueden observar todas las caractersticas, bloques de diagramas, especicaciones y las tpicas respuestas de actuacion. Para nuestro TFC necesitaremos tener en cuenta y conocer primordialmente las caractersticas mas esen o ciales mostradas en la tabla 1.5 (Especicaciones a Ta = 25 C, Vcc = 5 V, tasa de giro = 0o /s y Cout = 0 F). Parametro Alimentacion Sensibilidad Resolucion AD Input Tiempo de conversion Null (Initial) Lectura termometro Rango del termometro Condicion Para Ta = -40 C a 85 C @25o C 16 ciclos de reloj a 20 MHz Nominal 0o /sec output es 2048 LSB Ta = 298o Ko o

Min 3,68

Typ 5 4,1 12

Max 4,52 800 +37

Units V LSB/o /s bits ns o /sec LSB o C

-42 2048 -40 a 85

Tabla 1.5: Especicaciones mas importantes del ADIS16100. Un punto a tener muy en cuenta es nuestra carga electrostatica. El cuerpo humano puede acumular cargas superiores a los 4000 V y descargarlas sin darnos cuenta sobre el dis positivo. Por esta razon es muy importante tocar con las manos a tierra durante un par de segundos para descargarnos y as no cortocircuitar ningun componente. El ADIS16100 tiene 16 pines con los que podemos congurarlo y obtener los datos nece sarios. En la tabla 1.6 se muestra la disposicion de los pines y su funcionamiento. Como caractersticas de funcionamiento principales podemos destacar las siguientes: Los giroscopos utilizan unos resonadores electroestaticos que se alimentan a 14 16 V para trabajar correctamente. La alimentacion de los componente se hace a 5 V y es por ello que dentro del chip encontramos un elevador de tension para alimentar los resonadores. Una vez obtenidos los datos analogicos de temperatura o de tasa de giro, estos son muestreados en el AD para despues transmitirlos por SPI. Para ello la senal se ltra pasando por dos etapas. La primera de estas etapas se encuentra justo despues de la salida del giroscopo, donde hay un polo que ltra las frecuencias altas. De esta forma evitamos los cambios bruscos justo antes de la amplicacion nal. En la segunda etapa se calibra, a traves del condensador Cout, la respuesta frecuencial del sistema cuyo ltro paso bajo esta pre-congurado a 40 Hz. Para reducir el ancho de banda, y por consecuente la respuesta frecuencial, se ha de congurar un ltro paso bajo con la ayuda de una resistencia interna, ROUT, y de un condensador externo en el puerto, COUT, como se puede ver en la gura 1.21.

El rango de medidas del ADIS16100 es congurable. Podemos incrementar el mar gen dinamico unicamente anadiendo una resistencia externa entre los pines RATE

Conceptos Teoricos

25

Pin 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Abreviatura DIN SCLK DOUT NC RATE FILT

Descripcion Data In del SPI. Se lee en los ancos de bajada del SCLK, para escribir en registros de control. Clock para comunicaciones y conversiones Salida del SPI. Cambia cada anco de bajada del SCLK Nada Salida de datos analogicos que representa la tasa de giro del ADIS Regulador de respuesta frecuencial y ancho de banda conectando un condensador Alimentacion, puede ser a +3 V o +5 V Entrada analogica 1 Entrada analogica 2 Alimentacion tierra Vref a 2.5 V Boton test 2 Boton test 1 Alimentacion Nada Chip Select del SPI

VdriveAIN1 AIN2 COM

Vre fST2 ST1

VccNC

CS

Tabla 1.6: Descripcion de los pines del ADIS16100.

y FILT. Esta resistencia cambia la impedancia del chip ya que al conectarla en esos puertos lo que estamos haciendo es conectarla en paralelo con la resistencia inter na ROUT de 180 K. Por ejemplo si conectasemos una resistencia de 330 K en los pines RATE y FILT se obtendra un incremento de rango de un 50 %. El valor mnimo que se permite conectar es de 45 K. Las fuentes de alimentacion pueden variar el comportamiento de precision y estabilidad del sensor. Por ello el ADIS16100 lleva unos condensadores desacopladores de 0,2 F en el Vcc , por lo que en el diseno nal no necesitaremos ningun tipo de impedancia de decoupling.

Existen unos botones el ST1 y ST2 en los pines 13 y 12 que nos ayudan a probarel correcto funcionamiento del sensor. Esto es muy importante, ya que en muchos momentos del diseno de la placa, es util conocer en cual estado esta nuestro sensor. Las pruebas consisten en excitar los sensores electromecanicos y obtener unos valores en el DOUT, la salida del SPI (Ver la tabla 1.7). Pruebas Pulsando ST1 Pulsando ST2 Pulsando ST1 y ST2 Resultado en el DOUT -221 LSB 221 LSB NULL

Tabla 1.7: Tabla de pruebas del ADIS16100.

26

Diseno y construccion de bus de datos y sensores para las practicas de NACC

En cuanto a la comunicacion entre el ADIS16100 y un dispositivo de control (en nuestro caso un PIC), como ya se ha dicho unas lineas mas arriba se utiliza el protocolo SPI. Esta comunicacion cumple las mismas especicaciones que hay en el captulo 1.1.5., y 9 concretamente se trata del modo 2 o modo C (CPHA = 0 y CPOL = 1) . Por ello, para iniciar la transferencia de datos el CS ha de estar a nivel logico 0, el SCLK tendra como libre el nivel alto y los cambios de datos en los buffers se realizaran en los ancos de bajada. El ADIS16100 por su parte incorpora unas funciones, READ y WRITE, que facilitan la comunicacion con el resto de dispositivos. Mas adelante, en el captulo 2.3.2., se explica como se ha de congurar por software el PIC para realizar adecuadamente la comunicacion con este dispositivo. Las comunicaciones entre el PIC y el ADIS, que se encuentra permanentemente a la escucha del registro de entrada de datos (DIN), se realizan a traves de comandos de 16 bits. Una vez el dispositivo ha sido seleccionado a traves del CS, se inicia la comunicacion y cuando se han recibido los 16 bits, el chip lee los datos y los procesa. En funcion del codigo recibido, realizara unas operaciones u otras, que comentaremos a continuacion.

Figura 1.23: Diagrama de secuencia de conguracion/lectura en ADIS16100. En funcion del codigo recibido en el DIN, el ADIS simplemente contestara con un paquete de datos (datos que corresponden a una conguracion previa) o sera recongurado, para que en la siguiente iteracion responda datos de la nueva conguracion. Como nota muy importante, a la hora de esperar las respuestas del ADIS hay que de cir que solo responde cuando se le enva un comando, sea de lectura o conguracion, y siempre que es recongurado, contestara con la nueva conguracion un comando des pues y no en el mismo comando en el que esta siendo congurado. Con esto vemos que sera necesario un segundo comando para realizar una lectura de la nueva conguracion despues de haber enviado un comando de conguracion (ver gura 1.23). Como se puede ver en la tabla 1.8, se tratara de un comando de conguracion o de simple lectura de datos en funcion del bit 15 (WRITE) del DIN. Si lo ponemos en 0, el comando sera de lectura y el ADIS respondera un paquete de 16 bits. En cambio, si el bit 15 o WRITE es 1, accederemos al registro de control del ADIS16100 y podremos congurar su modo de trabajo. Su conguracion estara determinada por el resto de bits que hemos enviado en ese mismo comando (ver gura 1.24, DIN). Los datos de salida siempre siguen el mismo patron. Los dos primeros bits siempre es El fabricante proporciona un manual donde se indica cual modo SPI es necesario para la comunicacion con los dispositivos de control (Modo 2 o Modo C). En la practica este modo que proporciona el fabricante es incorrecto, y para comunicar el ADIS16100 con un PIC como el utilizado en este TFC es necesario utilizar el modo 1 o modo B (CPHA = 0 y CPOL = 0)9

Conceptos Teoricos

27

Bit No 15

Abreviatura WRITE

Funcionalidad 1: Vuelca el contenido de DIN al registro de control, y se recongura el modo de trabajo del chip. 0: No se producen cambios en el registro de control y el ADIS16100 responde con la conguracion que dispone. Estado bajo, 0 para funcionamiento normal. Dont care, no intervienen. Modo de trabajo: 00: Salida giroscopo 01: Salida temperatura 10: Entrada analogica 1 11: Entrada analogica 1 Estado alto,1 para funcionamiento normal. Dont care, no intervienen. Estado bajo, 0 para funcionamiento normal. Formato de los datos de salida: 0: complemento a dos 1: Offset binario Dont care, no intervienen.

14 13, 12 11, 10

0 D/C ADD1 ADD0

9, 8 7, 6 5 4

1 D/C 0 CODE

3 al 0

D/C

Tabla 1.8: Descripcion de la asignacion de bits en el registro DIN.

Figura 1.24: Diagrama de secuencia SPI en ADIS16100. taran a 0, seguidamente se enviaran el ADD1 y el ADD0, y para nalizar, los datos (Ver tabla 1.9). Siguiendo la tabla 1.8 vemos que una serie de bits siempre tendran valores constantes independientemente de la conguracion que se precise: Los bits 14 y 5 deberan estar siempre a nivel bajo, 0 para una funcionalidad correcta del chip. Los bits 9 y 8 deberan estar siempre a nivel alto 1. Los bits 13-12, 7-6 y del 3 al 0 no tendran importancia en ningun momento y se podran establecer como 1 o 0; por ello a lo largo de este documento estos bits se mostraran sin valor y seran representados por una x. (Dont care bits, DC).

En cambio, habra otros bits que seran los que varen, y que estableceran el tipo de salida y el formato de los datos:

28

Diseno y construccion de bus de datos y sensores para las practicas de NACC

Bit No 15, 14 13, 12

Abreviatura 0 ADD1 ADD0

Funcionalidad Siempre a 0. Modo de trabajo: 00: Salida giroscopo 01: Salida temperatura 10: Entrada analogica 1 11: Entrada analogica 1 Datos.

11-0

D11-D0

Tabla 1.9: Descripcion de la asignacion de bits en el registro DOUT.

Los bits 11 y 10, ADD1 y ADD0 determinan el modo de trabajo del chip. El bit 4 CODE determina el formato de salida de los datos. A continuacion se expone un ejemplo de conguracion y comunicacion. Para este caso el objetivo es obtener datos de temperatura en offset y giroscopo en complemento a dos. Para ello seguiremos los siguientes pasos: Primero ir a la tabla 1.8 y escoger una combinacion de bits con la cual el ADIS16100 quede congurado como datos de temperatura en formato offset. Para ello tendre mos que tener una combinacion en la cual: El bit 15 ha de ser 1 (escritura). El bit 14 ha de ser 0. Los bits 13 y 12 pueden ser tanto 0 como 1, X. Los bits 11 y 10 establecen el modo de trabajo Temperatura: ADD1= 0, ADD0=1. Los bits 9 y 8 han de ser 1. Los bits 7 y 6 han de ser X. El bit 5 ha de ser 0. El bit 4 establece el formato de datos, CODE = 1. Los bits 3-0 han de valer X. Por lo que en denitiva tendremos: 10xx0111xx01xxxx.

Enviamos un paquete con la secuencia de bits anterior. Debido al funcionamiento del ADIS16100, los datos que recibamos en esa misma iteracion no corresponderan a lo que acabamos de congurar. Por ello, tendremos que volver a enviar otro paquete de forma que recibamos los datos de temperatura en offset. Los bits que enviaremos en esta iteracion, al tratarse de una lectura del chip, pueden ser los mismos que los de conguracion, solo que esta vez el bit 15, WRITE, ha de ser 0 para no entrar en el registro de control.

Conceptos Teoricos

29

Una vez realizada la lectura de temperatura, procedemos a la lectura del giroscopo en formato complemento a dos. Para llevar a cabo satisfactoriamente esta operacion debemos volver a congurar el ADIS igual que lo hemos hecho para la temperatura, solo que esta vez la secuencia de bits sera: 10xx0011xx00xxxx, cambiando el modo de trabajo y el formato de los datos de salida a giroscopo en complemento a dos10 . Al igual que para leer la temperatura despues de la conguracion, para leer los datos de la nueva conguracion volvemos a enviar un paquete de datos cambiando el bit 15 a 0, obteniendo la siguiente cadena de bits: 00xx0011xx00xxxx. Una vez realizada la lectura, si queremos obtener otro tipo de informacion debe mos realizar los mismos pasos. Cambiaremos la conguracion (con WRITE = 1) y seguidamente realizaremos la lectura deseada (con WRITE = 0).

Para facilitar la comprension del funcionamiento de los registros DOUT, mostraremos la tabla 1.10 con ejemplos de posibles datos proporcionados por los sensores.o

/s

Codigo

Patron Binario

Velocidad Angular en Complemento a Dos 0,2439 1 0000000000000001 0 0 0000000000000000 -0,2439 -1 0000111111111111 Velocidad Angular en Offset Binary 0,2439 2049 0000100000000001 0 2048 0000100000000000 -0,2439 2047 0000011111111111 Temperatura en Complemento a Dos 25,1453 1 0001000000000001 25 0 0001000000000000 24,8547 -1 0001111111111111 Temperatura en Offset Binary 25,1453 2049 0001100000000001 25 2048 0001100000000000 24,8547 2047 0001011111111111 Tabla 1.10: Ejemplos de datos de salida del ADIS16100.

1.2.2.2. ADIS16201 El ADIS 16201 es un MEMS que nos proporciona medidas de aceleraciones, inclinaciones y temperatura de manera simultanea, a traves de unas lneas SPI. Ademas, nos permite calibrar de forma rapida y barata los sensores digitales que incorpora. En esta iteracion, los datos recibidos del chip seran los referentes a la conguracion previa, que en este caso es la temperatura en formato offset.10

30

Diseno y construccion de bus de datos y sensores para las practicas de NACC

Este chip incorpora una diferencia en tecnologa respecto el anterior, el ADIS16100, ya que tiene una serie de caractersticas que ayudan a realizar de forma mas facil el trabajo sin necesidad de incluir hardware. Algunas de las caractersticas que lo hacen diferente son: Una funcion de alarma congurable.

Un ADC de 12 bits. Un DAC de 12 bits. Puertos I/O congurables. Posibilidad de controlar la alimentacion y el modo Sleep a traves del SPI.

El esquema de bloques del ADIS16201 se puede ver en la gura 1.25.

Figura 1.25: Diagrama de bloques del ADIS16201. Al igual que el ADIS16100, en el datasheet podemos encontrar todas las caractersticas del MEMS, pero para nuestro TFC nos interesan las de la tabla 1.11 (Especicaciones a Ta = -40o C a 125o C, Vdd = 3,3 V y tilt = 0). El ADIS16201 tiene 16 pines con los que podremos congurarlo y obtener los datos ne cesarios. En la tabla 1.12 se muestra la disposicion de los pines y su funcionamiento. A la hora de situar el MEMS en la placa nal, se ha de tener en cuenta su posicion para poder realizar las lecturas de inclinaciones y aceleraciones de forma correcta. Teniendo en cuenta que la gravedad es negativa y queremos que este en el eje y, la posicion en la que se debe colocar el MEMS debe ser la que esta mas a la izquierda en la gura 1.27 . El funcionamiento del ADIS16201 es similar al del ADIS16100. Por medio de los puertos DIN y DOUT se hacen las transmisiones de datos, con la diferencia que en el ADIS16201

Conceptos Teoricos

31

Figura 1.26: Disposicion de los pines del ADIS16201.

Figura 1.27: Posibles orientaciones del ADIS16201.

32

Diseno y construccion de bus de datos y sensores para las practicas de NACC

cada registro de cola del SPI DOUT tiene una direccion (un address) y un formato asig nado que conlleva a una funcion especca. Para mostrar datos de salida, se requiere previamente una lectura de un comando a traves del registro DIN. Por lo tanto, para obtener la informacion deseada se necesitan 2 ciclos de 16 bits. En el primer ciclo se transmite la direccion del registro, el address, para localizar el tipo de datos que nos piden. En el segundo estan los datos de lectura (Ver la gura 1.28). De este modo, en vez de ir congurando que tipo de lecturas queremos (como en el caso del ADIS16100), en el ADIS16201 cuando enviemos un address este nos respondera en la siguiente iteracion con un tipo de dato especco.

Figura 1.28: Escritura-Lectura del ADIS16201.

El registro DIN esta compuesto por 16 bits, de los que 6 son para la lectura del comando (del A0 al A5), otro nos indica si estamos accediendo o no al registro de control (W/R) y los ultimos 8 bits no importa que valor tengan (Ver gura 1.29).

Figura 1.29: Registros DIN/DOUT del ADIS16201. El registro DOUT tiene 16 bits (Ver gura 1.29): El ND (new data ready) se pone a 1 cuando algun registro ha sido actualizado, el EA (indicador de alarma) y los bits de datos (del D0 al D13). En los bits de datos se ha de destacar que para informacion de aceleracion se utilizaran los 14 bits en complemento a 2, en cambio, para el resto de informacion se utilizan 12 bits despreciando los bits D12 y D13. puede ver detalladamente cada uno de los registros de lectura de comandos.

Conceptos Teoricos

33

Parametro Rango de entrada Sensibilidad Offset

Condicion Inclinometro

Min

Typ

Max

Unitso

70 70 y T=25 Co o

a 25o C Acelerometro o Sensibilidad a 25 C 2,140 2,162 Offset a 25o C y 0 g 8151 8192 Respuesta frecuencial del acelerometro BW del sensor 2250 Frecuencia de resonancia 5,5 Termometro Salida a 25o C 1278 Factor de escala -2,13 ADC Resolucion 12 Ganancia de error 2 DAC Resolucion 12 Ganancia de error 0,5 Conversiones Mnimo tiempo de conversion 244 Maximo tiempo de conversion 484

9,9 2037

10 2048

10,1 2059 2,184 8233

LSB/o LSB LSB/mg LSB Hz kHz LSB LSB/o C bits LSB bits

% sms

Tabla 1.11: Especicaciones mas importantes del ADIS16201.

Pin 1 2 3 4 5,6 7,11 8, 10 9 12 13 14 15 16

Abreviatura SCLK DOUT DIN

Descripcion Clock para comunicaciones y conversiones Salida del SPI. Cambia cada anco de bajada del SCLK Data In del SPI. Se lee en los ancos de SUBIDA del SCLK, para escribir en registros de control. Chip Select. Activo en nivel logico bajo 0. Pines I/O. No conectado Conexiones a tierra. Reset, activo a nivel bajo Salida de voltaje analogico auxiliar para el DAC. Alimentacion a +3.3 V Entrada de voltaje analogico auxiliar para el ADC Salida de voltaje de referencia preciso. Comun del circuito.

CSDIO0,DIO1 NC AUX COM

RSTAUX DAC VDD AUX ADC

Vre fCOM

Tabla 1.12: Descripcion de los pines del ADIS16201.

34

Diseno y construccion de bus de datos y sensores para las practicas de NACC

1.2.3. Sistema Inercial Los Sistemas de Navegacion Inercial consisten en una plataforma estabilizada con girosco pos, tambien llamada Unidad de medidas inerciales (IMU, en ingles). Esta plataforma sirve de marco de referencia que, combinada con una serie de algoritmos y mecanismos de control, nos permiten la establecer un sistema de guiado inercial. Esta plataforma obtiene medidas de la aceleracion del vehculo en los tres ejes del espacio mediante tres acelerometros embarcados sobre la plataforma inercial. Por otro lado, la tasa de giro en los 3 ejes (Ver la gura 1.30) las obtiene de 3 giroscopos.

Figura 1.30: Los tres ejes de movimiento de una aeronave. A partir de estas medidas, el sistema puede calcular por un lado la velocidad del vehculo mediante una integracion (Ecuacion 1.1), la posicion del vehculo con una doble integra cion (Ecuacion 1.2), y a partir de all la velocidad angular, la actitud y orientacion del mismo.

v= r=

Z

adt adt 2

(1.1) (1.2)

ZZ

Debido a que la plataforma giro estabilizada no es perfecta, en los calculos se van introduciendo errores acumulativos que deben ser corregidos mediante fuentes externas (como por ejemplo, el GPS) al cabo de un cierto tiempo de vuelo (que es variable segun la cali dad del INS utilizado). A pesar de la existencia de estos errores acumulativos, los INS son muy utilizados y necesarios en la navegacion. En nuestro TFC desarrollamos un sistema de adquisicion de datos que nos permite pro porcionar a un procesador central la informacion necesaria que los chips ADIS16100 (giroscopio eje Z) y el ADIS16201 (acelerometro e inclinometro) nos proporcionan para calcular las aceleraciones, velocidades y posicion del vehculo en el que estemos embar cados. Es importante hacer notar, no obstante, que el sistema desarrollado aqu es del tipo strap down INS, donde la plataforma que contiene los giroscopos y acelerometros no esta giroestabilizada, sino ja a la estructura del vehculo.

Conceptos Teoricos

35

Si bien esto reduce la precision del dispositivo, los resultados son lo sucientemente bue nos como para alcanzar el objetivo que se busca con este TFC (apoyar las practicas de NACC), mientras se gana en sencillez de construccion y operacion.

36

Diseno y construccion de bus de datos y sensores para las practicas de NACC

Metodologa

37

CAPTULO 2. METODOLOGA I I En este captulo de metodologa trataremos de mostrar que y como desarrollamos nuestro TFC, as como los problemas e inconvenientes que encontramos durante su elaboracion, para as ayudar tambien a futuros proyectistas.

2.1. Protocolo CAN utilizado Para que nuestro bus CAN realice una comunicacion completa y correcta, debemos im plementar el nivel de aplicacion, tambien llamado Protocolo de Alto Nivel. Es en este nivel de aplicacion donde se ha de decidir el tipo de mensajes que habra y sus identicadores. La distribucion del tipo de mensajes y de sus identicadores es muy importante en el bus CAN. Como ya se ha comentado, el bus CAN es un sistema basado en tipos de mensajes y no en direcciones. Por lo tanto, la eciencia y funcionalidad del bus vendran determinados por esta distribucion. En nuestro sistema utilizaremos paquetes CAN en formato estandar. Eso signica que el campo ID sera de 11 bits. Sera en este campo en el que el protocolo se jara a la hora de arbitrar el acceso al medio. Es por eso que hemos de tener cuenta la urgencia de los mensajes a la hora de asociar IDs a los paquetes. Los 11 bits los hemos dividido en 3 campos (Ver la gura 2.1):

Tipo de mensaje: ID[10:9] Prioridad de mensaje: ID[8:7] ID del mensaje: ID[6:0]

Figura 2.1: Campo ID dividido en 3 sub-campos. El tipo de mensajes lo dividimos en otros 4 niveles (de mayor a menor prioridad):

Comandos: ID10=0 y ID9=0 Eventos: ID10=0 y ID9=1 Respuestas: ID10=1 y ID9=0 Datos: ID10=1 y ID9=1

38

Diseno y construccion de bus de datos y sensores para las practicas de NACC

Los comandos seran utilizados cuando se quiera obligar a los dispositivos a realizar algun cometido. Se les da la prioridad maxima para evitar que estos comandos queden rezagados por otros tipos de mensaje. En segundo lugar vendran los eventos. Los eventos son generados por los dispositivos en respuesta a algun acontecimiento fuera de lo normal. Es por eso que se le da una de las prioridades mas altas. Las respuestas son mensajes de datos solicitados por otros dispositivos. Para diferenciar lo de los mensajes de datos no solicitados, se les ha dado una prioridad mas alta que a estos ultimos. En el ultimo nivel pondremos los mensajes de datos. Esto no signica que los datos no sean importantes, pero los otros 3 tipos de mensajes tienen aun mas prioridad. Ademas, debido al alto porcentaje de mensajes con datos que habra respecto a los otros tipos, si le dieramos una prioridad mas alta podramos crear el efecto starvation, es decir, hacer esperar a un mensaje de comandos (que tendra una prioridad mas baja) porque se estan enviando mensajes de datos (con la prioridad mas alta). Dentro de cada tipo de mensaje tambien vamos a diferenciar las prioridades. Para ello utilizaremos el campo de Prioridad de mensaje, que utiliza otros dos bits:

Crtica: ID8=0 y ID7=0 Alta: ID8=0 y ID7=1 Media: ID8=1 y ID7=0 Baja: ID8=1 y ID7=1 Con estas sub-prioridades conseguiremos darle mas uidez a nuestro bus. Por ejemplo, a los datos del dispositivo que sea mas propenso a enviar datos le damos una prioridad mas baja que a los del dispositivo que enve los datos con menos asiduidad. De esta manera conseguiremos no crear el efecto starvation explicado anteriormente. Los 7 bits restantes podran diferenciar los diferentes mensajes que esten en el mismo grupo. Por lo tanto, con este diseno tendremos 4 bits que agruparan los mensajes en 16 grupos 4 ). Dentro de estos 16 grupos tendremos 128 niveles de prioridad diferentes posibles (2 (27 ). (Ver la gura 2.2). Una vez tenemos las prioridades denidas, se ha de decidir que tipo de mensajes salien tes y entrantes van a tener los dispositivos. En nuestro caso, la placa de adquisicion de datos tendra los siguientes paquetes; Como paquetes entrantes podemos tener: Comandos en los que se pide informacion de aceleracion en el eje x (CMND.ACCX).

Metodologa

39

Figura 2.2: Tipos de mensaje en el protocolo CAN. Comandos en los que se pide informacion de aceleracion en el eje y (CMND.ACCY). Comandos en los que se pide informacion de aceleracion en el eje z (CMND.ACCZ). Comandos en los que se pide informacion de inclinacion en el eje x (CMND.INCLX). Comandos en los que se pide informacion de inclinacion en el eje y (CMND.INCLY). Comandos en los que se pide informacion de inclinacion en el eje z (CMND.INCLZ). Comandos en los que se pide informacion de velocidad angular en el eje y (cabeceo) (CMND.WY). Comandos en los que se pide informacion de velocidad angular en el eje z (guinada) (CMND.WZ). Comandos en los que se pide informacion de temperatura interna del ADIS16100 numero 1 (CMND.T1). Comandos en los que se pide informacion de temperatura interna del ADIS16100 numero 2 (CMND.T2). Comandos en los que se pide informacion de temperatura interna del ADIS16201 numero 1 (CMND.T3). Comandos en los que se pide informacion de temperatura interna del ADIS16201 numero 2 (CMND.T4).

Como paquetes salientes tendremos: Respuesta de aceleracion en el eje x (DATA.ACCX).

40

Diseno y construccion de bus de datos y sensores para las practicas de NACC

Respuesta de aceleracion en el eje y (DATA.ACCY). Respuesta de aceleracion en el eje z (DATA.ACCZ). Respuesta de inclinacion en el eje x (DATA.INCLX). Respuesta de inclinacion en el eje y (DATA.INCLY). Respuesta de inclinacion en el eje z (DATA.INCLZ).

Respuesta de temperatura interna del ADIS16100 numero 1 (DATA.T1). Respuesta de temperatura interna del ADIS16100 numero 2 (DATA.T2). Respuesta de temperatura interna del ADIS16201 numero 1 (DATA.T3). Respuesta de temperatura interna del ADIS16201 numero 2 (DATA.T4). Respuesta de velocidad angular en el eje y (DATA.WY). Respuesta de velocidad angular en el eje z (DATA.WZ) .En la tabla 2.1 se muestran los identicadores asociados a cada mensaje. Una vez asociado el ID a cada paquete ya se puede crear la tab