scieee AI-readable full text Open interactive document viewer

Robot matricial

Mena Benito, Igor,Rodríguez Campos, Alberto

Abstract

Departamento de Tecnología Electrónica

Full text

UNIVERSIDAD de VALLADOLID ESCUELA de INGENIERÍAS INDUSTRIALES «INGENIERO TÉCNICO DE TELECOMUNICACIONES, ESPECIALIDAD EN SISTEMAS ELECTRÓNICOS» PROYECTO FIN DE CARRERA ROBOT MATRICIAL Autor: Mena Benito, Igor Tutor: Díez, Pedro Luis Tecnología Electrónica Junio 2013 ROBOT MATRICIAL I. Mena Benito 1 CONTENIDO 1. INTRODUCCIÓN................................................................................................................... 9 1.1. Motivación del Proyecto ............................................................................................................ 9 1.2. Introducción a la robótica ......................................................................................................... 10 1.2.1. Definiciones Básicas................................................................................................................ 10 1.2.2. Clasificación de los robots ...................................................................................................... 12 1.2.2.1. En base a su arquitectura ............................................................................................... 12 1.2.2.2. En base a su aplicación: .................................................................................................. 15 1.2.2.3. En base a su evolución: ................................................................................................... 15 1.2.3. Componentes de un robot ..................................................................................................... 16 1.2.4. Impacto de la robótica ............................................................................................................ 16 1.2.4.1. Impacto en la educación/aprendizaje ............................................................................ 16 1.2.4.2. Impacto en la automatización industrial ........................................................................ 17 1.2.4.3. Impacto en la competitividad ......................................................................................... 17 1.2.4.4. Impacto sociolaboral ...................................................................................................... 17 1.3. OpenSource .............................................................................................................................. 18 1.3.1. OpenSoftware ......................................................................................................................... 19 1.3.1.1. Libertades del software libre .......................................................................................... 20 1.3.1.2. Motivaciones del Software Libre .................................................................................... 20 1.3.2. OpenHardware ....................................................................................................................... 21 1.3.2.1. Problemática ................................................................................................................... 21 1.3.2.2. Ventajas y desventajas ................................................................................................... 22 1.4. Plan de trabajo ......................................................................................................................... 23 1.5. Objetivos .................................................................................................................................. 24 2. DESCRIPCIÓN DEL SISTEMA .................................................................................. 25 2.1. Descripción general del proyecto ............................................................................................. 25 2.2. Descripción del hardware ......................................................................................................... 25 2.2.1. ARDUINO ................................................................................................................................ 25 2.2.1.1 ¿Qué es Arduino? ............................................................................................................ 25 2.2.1.2. Lenguaje de Programación ............................................................................................. 26 2.2.1.3. ¿Por qué Arduino? ......................................................................................................... 27 2.2.1.4. Hardware ........................................................................................................................ 28 2.2.1.5. Arduino Mega ................................................................................................................. 31 2.2.2. Motor de Corriente Continua ................................................................................................. 38 2.2.2.1. Partes de un motor CC ................................................................................................... 38 2.2.2.2. Principio básico de funcionamiento de un motor CC ..................................................... 38 2.2.3. Servomotor ............................................................................................................................. 39 ROBOT MATRICIAL I. Mena Benito 2 2.2.3.1. Definición ....................................................................................................................... 39 2.2.3.2. Estructura ....................................................................................................................... 39 2.2.3.3. Funcionamiento .............................................................................................................. 40 2.2.4. Sensor de Ultrasonidos ........................................................................................................... 44 2.2.4.1. Qué son los ultrasonidos ................................................................................................ 44 2.2.4.2. Sensores de distancia por ultrasonidos .......................................................................... 44 2.2.4.3. Generación de ultrasonidos ............................................................................................ 46 2.2.4.4. Principales efectos utilizados para implementar sensores de ultrasonidos ................... 47 2.2.5. LCD .......................................................................................................................................... 52 2.2.5.1. Funcionamiento .............................................................................................................. 53 2.2.5.2. Especificaciones .............................................................................................................. 54 2.2.5.3. Tecnologías de Matriz Activa .......................................................................................... 55 2.2.5.4. Inconvenientes ............................................................................................................... 56 2.2.6. Lector de tarjetas .................................................................................................................... 57 2.2.6.1. Características ................................................................................................................ 57 2.2.6.2. Tipos ............................................................................................................................... 58 2.2.7. Reloj en tiempo real ............................................................................................................... 59 2.2.7.1. Ventajas de un RTC ......................................................................................................... 59 2.2.7.2. Ejemplos ......................................................................................................................... 60 2.2.8. Baterías ................................................................................................................................... 60 2.2.8.1. Definición y Clasificación ................................................................................................ 60 2.2.8.2. Funcionamiento Básico ................................................................................................... 60 2.2.8.3. Características que definen a una batería ...................................................................... 61 2.2.8.4. Tipos de baterías: ........................................................................................................... 62 2.2.8.5. Comparativa entre baterías ............................................................................................ 65 2.3. Descripción Software................................................................................................................ 66 2.3.1. Arduino .................................................................................................................................. 66 2.3.1.1. Comunicación Arduino-PC ............................................................................................. 66 2.3.1.2. Instalación Software Arduino ........................................................................................ 67 2.3.1.3. Programación Arduino .................................................................................................. 71 2.3.2. Proteus .................................................................................................................................. 73 2.3.2.1. Instalación del Software Proteus ................................................................................... 73 2.3.2.2. Isis (Simulador de Circuitos) .......................................................................................... 73 2.3.2.3. ARES (Realizar PCB´s)...................................................................................................... 76 3. DESARROLLO/DISEÑO DEL SISTEMA ................................................................ 80 3.1. Diseño mecánico ........................................................................................................................... 80 3.2. Diseño Hardware ...................................................................................................................... 80 3.2.1. Motores CC ............................................................................................................................. 80 3.2.1.1. Problema surgido ............................................................................................................ 86 3.2.1.2. Posibles soluciones ......................................................................................................... 87 3.2.1.3. Replanteamiento de los objetivos .................................................................................. 88 3.2.2. Baterías ................................................................................................................................... 88 3.2.3. Lector De Tarjetas ................................................................................................................... 89 ROBOT MATRICIAL I. Mena Benito 3 3.2.4. Sensores de ultrasonidos ........................................................................................................ 90 3.2.5. Servomotor ............................................................................................................................. 93 3.2.6. Reloj Real ................................................................................................................................ 94 3.2.7. LCD .......................................................................................................................................... 96 3.3. Diseño Software ....................................................................................................................... 99 3.3.1. Inclusión de librerías ............................................................................................................... 99 3.3.2. Configuración de pines ......................................................................................................... 100 3.3.3. Definición de variables ......................................................................................................... 100 3.3.4. Configuración inicial de Arduino .......................................................................................... 101 3.3.5. Bloques de funciones............................................................................................................ 101 3.3.5.1. Funciones de control de motores ................................................................................. 102 3.3.5.2. Funciones de movimiento y decisión ........................................................................... 113 3.3.5.3. Funciones de control de baterías ................................................................................. 122 3.3.5.4. Funciones de Sensor ultrasonidos ................................................................................ 124 3.3.5.5. Función pantalla ........................................................................................................... 126 3.3.6. Interrupciones ...................................................................................................................... 127 3.4. Protocolos de comunicación ................................................................................................... 131 3.4.1. Comunicación serie .............................................................................................................. 131 3.4.2. USB (Universal Serial Bus)..................................................................................................... 131 3.4.3. Comunicación I2C ................................................................................................................. 133 3.4.3.1. Introducción ................................................................................................................. 133 3.4.3.2. Protocolo I2C ................................................................................................................ 134 3.4.3.3. Definición de términos ................................................................................................. 135 3.4.4. Comunicación SPI ................................................................................................................. 136 3.5. Otras consideraciones ............................................................................................................ 137 3.5.1. Ámbitos de utilización .......................................................................................................... 137 3.5.1.1. Industrial...................................................................................................................... 137 3.5.1.2. Doméstico.................................................................................................................... 138 3.5.1.3. Educativo ..................................................................................................................... 138 3.5.2. Consejos de utilización ......................................................................................................... 138 4. CÁLCULOS ................................................................................................................. 140 4.1. Pistas ...................................................................................................................................... 140 4.2. Consumos ............................................................................................................................... 148 4.3. Rectas baterías ....................................................................................................................... 149 4.4. Rectas PWM ........................................................................................................................... 151 5. PLANOS ...................................................................................................................... 153 6. PRESUPUESTO ........................................................................................................ 155 ROBOT MATRICIAL I. Mena Benito 4 6.1. Lista de Materiales ...................................................................................................................... 155 6.1.1. Parte mecánica .................................................................................................................... 155 6.1.2. Parte Hardware ................................................................................................................... 156 6.1.3. Parte Software ..................................................................................................................... 157 6.2. Presupuesto Económico .............................................................................................................. 158 6.2.1. Parte mecánica .................................................................................................................... 158 6.2.2. Parte hardware .................................................................................................................... 159 7. PLIEGO DE CONDICIONES .................................................................................... 161 7.1. Objetivo del pliego ................................................................................................................. 161 7.1.1. Descripción general del montaje.......................................................................................... 161 7.2. Normativa de obligado cumplimiento .................................................................................... 162 7.3. Condiciones generales de los materiales ................................................................................ 163 7.3.1. Especificaciones eléctricas ................................................................................................... 164 7.3.2. Especificaciones mecánicas .................................................................................................. 165 7.3.3. Componentes electrónicos ................................................................................................... 165 7.4. Condiciones del proceso de fabricación .................................................................................. 166 7.4.1. Preparación de los componentes ......................................................................................... 166 7.4.2. Material del circuito impreso ............................................................................................... 166 7.4.3. Soldadura y montaje de los componentes ........................................................................... 166 7.4.4. Condiciones del proceso de prueba ..................................................................................... 166 7.5. Condiciones facultativas ......................................................................................................... 167 7.6. Solicitud de homologación de tipo ce ..................................................................................... 168 7.6.1. Expediente técnico de construcción .................................................................................... 168 7.6.2. Declaración de conformidad del producto ........................................................................... 169 7.6.3. Marcado CE sobre el producto ............................................................................................. 170 7.7. Marca de reciclado de aparatos eléctricos y electrónicos ....................................................... 171 7.7.1. Marca de aparatos eléctricos y electrónicos ........................................................................ 171 7.8. Cláusulas de índole legal ........................................................................................................ 172 7.9. Conclusiones del pliego de condiciones .................................................................................. 173 8. CONCLUSIONES ....................................................................................................... 174 8.1. Objetivos logrados ...................................................................................................................... 174 8.2. Conclusiones Finales ................................................................................................................... 174 8.3. Futuras Mejoras .......................................................................................................................... 175 8.3.1. Giroscopio/Brújula electrónica ............................................................................................ 175 ROBOT MATRICIAL I. Mena Benito 5 8.3.2. Acelerómetro ...................................................................................................................... 175 8.3.3. Sensores láser ...................................................................................................................... 176 8.3.4. Acoplar cámara web ............................................................................................................ 176 8.3.5. Acoplar módulo WiFi o GSM ............................................................................................... 176 8.3.6. Control mediante página web o dispositivos móviles ......................................................... 177 8.3.7. Sustitución de Arduino Mega por dos Arduinos Duemilanove ........................................... 177 9. ANEXOS ............................................................................................................................ 178 9.1. Enlaces ........................................................................................................................................ 178 9.2. Esquemas y Conexionado ............................................................................................................ 178 9.2.1. Despiece mecánico ........................................................................................................... 178 9.2.2. Conexionado con Arduino ............................................................................................... 181 9.2.3. Dibujo de la batería en la LCD ........................................................................................... 185 9.3. Contenido del CD ........................................................................................................................ 186 9.3.1. Arduino (software) ........................................................................................................... 186 9.3.2. Demo proteus (software) ................................................................................................. 186 9.3.3. Datasheet componentes .................................................................................................. 186 9.3.4. Códigos ............................................................................................................................. 187 9.3.5. Lecturas SD ....................................................................................................................... 187 9.3.6. Fotos ................................................................................................................................. 187 9.3.7. Imágenes .......................................................................................................................... 187 9.3.8. Vídeos ............................................................................................................................... 187 9.3.9. Fritzing (software) ............................................................................................................ 187 9.3.10. Planos ............................................................................................................................... 187 10. BIBLIOGRAFÍA ........................................................................................................ 188 ROBOT MATRICIAL I. Mena Benito 6 ÍNDICE DE FIGURAS FIGURA 1: ROBOT POLIARTICULADO .......................................................................................................... 12 FIGURA 2: ROBOT MÓVIL ........................................................................................................................... 13 FIGURA 3: ROBOT ANDROIDE ..................................................................................................................... 13 FIGURA 4: ROBOT ZOOMÓRFICO ............................................................................................................... 14 FIGURA 5: ROBOT HÍBRIDO ........................................................................................................................ 14 FIGURA 6: COMPONENTES DE UN ROBOT ................................................................................................. 16 FIGURA 7: ARDUINO MEGA ........................................................................................................................ 31 FIGURA 8: PINES ARDUINO MEGA .............................................................................................................. 34 FIGURA 9: DESPIECE DE UN SERVOMOTOR ................................................................................................ 39 FIGURA 10: PARTES DE UN SERVOMOTOR ................................................................................................. 40 FIGURA 11: COLORES DE LOS CABLES DE LOS PRINCIPALES FABRICANTES DE SERVOMOTORES .............. 41 FIGURA 12: PWM Y RANGO DE MOVIMIENTO DE SERVOMOTORES ......................................................... 41 FIGURA 13: RANGO DE FRECUENCIAS ........................................................................................................ 44 FIGURA 14: MATERIALES PIEZOELÉCTRICOS .............................................................................................. 46 FIGURA 15: EFECTO PIEZOELÉCTRICO ........................................................................................................ 47 FIGURA 16: CONO DE RADIACIÓN FUNDAMENTAL .................................................................................... 47 FIGURA 17: CÁLCULO DE LA DISTANCIA EN OBJETOS INMÓVILES ............................................................. 48 FIGURA 18: MÁRGENES DE MEDIDA DE LOS SENSORES DE ULTRASONIDOS ............................................. 48 FIGURA 19: DIAGRAMA DE BLOQUES DE UN SENSOR DE ULTRASONIDOS BASADO EN EL EFECTO DOPPLER ............................................................................................................................................. 51 FIGURA 20: FUNCIONAMIENTO DE UN CAUDALÍMETRO ........................................................................... 52 FIGURA 21: DESPIECE DE UNA PANTALLA LCD ........................................................................................... 52 FIGURA 22: EJEMPLO DE BATERÍA .............................................................................................................. 61 FIGURA 23: COMPARATIVA ENTRE BATERÍAS ............................................................................................ 65 FIGURA 24: ENERGÍA Y DENSIDAD ESPECÍFICA DE VARIAS BATERÍAS ........................................................ 65 FIGURA 25: PUERTOS DE COMUNICACIÓN DEL ARDUINO MEGA .............................................................. 66 FIGURA 26: CAPTURA DE PANTALLA DE LA OPCIÓN SERIAL MONITOR ..................................................... 67 FIGURA 27: CAPTURA DE PANTALLA DE LA CARPETA ARDUINO DESPUÉS DE LA INSTALACIÓN .............. 68 FIGURA 28: CAPTURA DE PANTALLA DE LA INSTALACIÓN DEL SOFTWARE DE ARDUINO .......................... 68 FIGURA 29: PANTALLA PRINCIPAL DEL SOFTWARE ARDUINO ................................................................... 69 FIGURA 30: COMPILACIÓN EN ARDUINO ................................................................................................... 70 FIGURA 31: CARGAR PROGRAMA EN ARDUINO ......................................................................................... 70 FIGURA 32: INCLUSIÓN DE LIBRERÍAS EN ARDUINO .................................................................................. 71 FIGURA 33: DEFINICIÓN DE VARIABLES COMPLEJAS .................................................................................. 71 FIGURA 34: DEFINICIÓN DE VARIABLES ...................................................................................................... 71 FIGURA 35: CONFIGURACIÓN INICIAL EN ARDUINO .................................................................................. 72 FIGURA 36: COMIENZO DE LA FUNCIÓN PRINCIPAL DEL PROGRAMA EN ARDUINO ................................. 72 FIGURA 37: CREACIÓN DE FUNCIONES EN ARDUINO ................................................................................. 72 FIGURA 38: CAPTURA DE PANTALLA DEL SOFTWARE PROTEUS ................................................................ 73 FIGURA 39: PANTALLA INICIAL DE PROTEUS .............................................................................................. 74 FIGURA 40: SELECCIÓN DE COMPONENTES EN PROTEUS .......................................................................... 74 FIGURA 41: POSICIONAMIENTO DE COMPONENTES EN PROTEUS ............................................................ 74 ROBOT MATRICIAL I. Mena Benito 7 FIGURA 42: EDICIÓN DE COMPONENTES EN PROTEUS .............................................................................. 75 FIGURA 43: SIMULACIÓN EN PROTEUS ...................................................................................................... 75 FIGURA 44: PANTALLA PRINCIPAL DE ARES ................................................................................................ 76 FIGURA 45: CAMBIAR DE ISIS A ARES EN PROTEUS .................................................................................... 76 FIGURA 46: PANTALLA DE DISEÑO DE ARES ............................................................................................... 77 FIGURA 47: SELECCIÓN DE ENCAPSULADOS EN ARES ................................................................................ 77 FIGURA 48: SELECCIÓN DE TAMAÑO PCB EN ARES .................................................................................... 78 FIGURA 49: DISTRIBUCIÓN DE ENCAPSULADOS EN ARES .......................................................................... 78 FIGURA 50: ROUTING DE PISTAS EN ARES .................................................................................................. 79 FIGURA 51: VISTA 3D EN ARES ................................................................................................................... 79 FIGURA 52: INTEGRADO L293D .................................................................................................................. 80 FIGURA 53: DIAGRAMA DE PINES L293D .................................................................................................... 81 FIGURA 54: FUNCIONAMIENTO DEL CIRCUITO .......................................................................................... 82 FIGURA 55: CONEXIONADO PARA DOS MOTORES CON GIRO EN AMBOS SENTIDOS ................................ 82 FIGURA 56: DISEÑO DE CONEXIONADO DE MOTORES Y ARDUINO ........................................................... 84 FIGURA 57: CONFIGURACIÓN DE LOS PINES DE ARDUINO PARA EL CONTROL DE MOTORES ................... 85 FIGURA 58: FUNCIONES DE CONTROL DE LOS MOTORES .......................................................................... 86 FIGURA 59: LECTOR DE TARJETAS SD MODULE .......................................................................................... 89 FIGURA 60: FUNCIÓN PARA LA ESCRITURA EN UNA TARJETA SD .............................................................. 90 FIGURA 61: SENSOR DE ULTRASONIDOS HC-SR04 ..................................................................................... 90 FIGURA 62: CÓDIGO DE PRUEBA PARA SENSOR DE ULTRASONIDOS ......................................................... 91 FIGURA 63: DISTANCIA A UN OBSTÁCULO MEDIANTE SERIAL MONITOR .................................................. 92 FIGURA 64: CÓDIGO DE PRUEBA PARA SERVOMOTOR .............................................................................. 94 FIGURA 65: RELOJ REAL TINY RTC DS1307 ................................................................................................. 94 FIGURA 66: CONFIGURACIÓN INICIAL DE RELOJ REAL ............................................................................... 95 FIGURA 67: CÓDIGO DE PRUEBA PARA RELOJ REAL ................................................................................... 96 FIGURA 68: PANTALLA LCD 2X16 ................................................................................................................ 97 FIGURA 69: CÓDIGO DE PRUEBA PARA PANTALLA LCD ............................................................................. 97 FIGURA 70: MENSAJE DE BIENVENIDA EN EL ROBOT ................................................................................. 98 FIGURA 71: MENSAJE DE ALERTA POR FALTA DE TARJETA EN ROBOT ...................................................... 99 FIGURA 72: LOGOTIPO DE USB ................................................................................................................. 132 FIGURA 73: CABLEADO DE UN USB .......................................................................................................... 132 FIGURA 74: ESTRUCTURA DE UN BUS SDA Y SCL ...................................................................................... 133 FIGURA 75: SECUENCIA DE INICIO EN I2C ................................................................................................ 134 FIGURA 76: INTERCAMBIO DE INFORMACIÓN EN I2C .............................................................................. 134 FIGURA 77: : SECUENCIA DE PARADA EN I2C ........................................................................................... 135 FIGURA 78: COMUNICACIÓN SPI .............................................................................................................. 137 FIGURA 79: SIMULACIÓN DEL CIRCUITO DE MOTORES EN ISIS ................................................................ 140 FIGURA 80: PICOS DE CORRIENTE EN LOS MOTORES I ............................................................................. 142 FIGURA 81: PICOS DE CORRIENTE EN LOS MOTORES II ............................................................................ 142 FIGURA 82: DISEÑO FINAL DE LA PCB ....................................................................................................... 145 FIGURA 83: CARACTERÍSTICAS FINALES DE LA PCB .................................................................................. 145 FIGURA 84: VISIÓN DE LA PCB EN 3D ....................................................................................................... 146 FIGURA 85: PCB INSOLADA ....................................................................................................................... 147 FIGURA 86: PCB CONECTADA A LOS MOTORES PARA PRUEBAS .............................................................. 147 FIGURA 87: CIRCUITO DIVISOR DE TENSIÓN ............................................................................................ 149 FIGURA 88: CIRCUITOS DIVISORES DE TENSIÓN EN NUESTRO ROBOT .................................................... 149 ROBOT MATRICIAL I. Mena Benito 8 FIGURA 89: RECTA DE CONVERSIÓN DE VOLTIOS A BITS ......................................................................... 150 FIGURA 90: MENSAJES DE ALERTA POR LA FALTA DE BATERÍA DE LOS MOTORES Y ARDUINO ............... 150 FIGURA 91: GRÁFICA DE DESCARGA DE BATERÍA ..................................................................................... 151 FIGURA 92: GRÁFICA DE CONVERTIDOR DE BITS A PWM (MOTOR DERECHO) ........................................ 151 FIGURA 93: GRÁFICA DE CONVERTIDOR DE BITS A PWM (MOTOR IZQUIERDO) ..................................... 152 FIGURA 94: LOGOTIPO CE ......................................................................................................................... 170 FIGURA 95LOGOTIPO DE MARCADO DE APARATOS ELÉCTRICOS Y ELECTRÓNICOS. ............................. 171 FIGURA 96: AMPLIACIÓN DE PINES GND Y VCC ....................................................................................... 184 ÍNDICE DE TABLAS TABLA 1: LIBERTADES DEL SOFTWARE LIBRE ............................................................................................. 20 TABLA 2: CARACTERÍSTICAS DEL ARDUINO MEGA ..................................................................................... 32 TABLA 3: GIRO DE LOS MOTORES ............................................................................................................... 83 TABLA 4: MEDIDA DE CORRIENTE SEGÚN VELOCIDAD DE LOS MOTORES ............................................... 141 TABLA 5: CONSUMOS DE LOS DISPOSITIVOS ........................................................................................... 148 TABLA 6: PARTE MECÁNICA DEL ROBOT .................................................................................................. 155 TABLA 7: PARTE HARDWARE DEL ROBOT ................................................................................................. 156 TABLA 8: PRESUPUESTO PARTE MECÁNICA ............................................................................................. 158 TABLA 9: PRESUPUESTO PARTE HARDWARE ............................................................................................ 159 TABLA 10: PRESUPUESTO PCB Y DIVISORES DE TENSIÓN ........................................................................ 160 ROBOT MATRICIAL I. Mena Benito 15 1.2.2.2. EN BASE A SU APLICACIÓN: INDUSTRIALES Son artilugios mecánicos y electrónicos destinados a realizar de forma automática determinados procesos de fabricación o manipulación. SEGURIDAD Y ESPACIO Nos referimos al uso de robots en tierra, mar y aire en misiones de seguridad civil o militar, así como a su utilización en misiones espaciales. DE SERVICIOS Sistemas aplicados en los dominios de la vida: entornos domésticos y de ocio, en salud y rehabilitación, en servicios profesionales y en ambientes peligrosos; que reproducen acciones de ayuda a los humanos. 1.2.2.3. EN BASE A SU EVOLUCIÓ N: 1º GENERACIÓN Sistema de control basado en “paradas fijadas mecánicamente” (mecanismos de relojería que mueven las cajas musicales o los juguetes de cuerda). 2º GENERACIÓN El movimiento se controla a través de una secuencia numérica almacenada en disco o cinta magnética (industria automotriz). 3º GENERACIÓN Utilizan las computadoras para su control y tienen cierta percepción de su entorno a través del uso de sensores. Con esta generación se inicia la era de los robots inteligentes y aparecen los lenguajes de programación. 4º GENERACIÓN Robots altamente inteligentes con más y mejores extensiones sensoriales, para entender sus acciones y captar el mundo que los rodea. Incorporan conceptos “modélicos” de conducta. 5º GENERACIÓN Actualmente se encuentran en desarrollo. Basarán su acción principalmente en modelos conductuales establecidos. ROBOT MATRICIAL I. Mena Benito 16 1.2.3. COMPONENTES DE UN ROBOT ESTRUCTURA MECÁNICA ACTUADORES SENSORES (PERCEPCIÓN DEL ENTORNO) PROCESADORES (SISTEMA DE CONTROL) FIGURA 6: COMPONENTES DE UN ROBOT 1.2.4. IMPACTO DE LA ROBÓTICA La robótica es una nueva tecnología multidisciplinar que hace uso de recursos de otras ciencias afines: MECÁNICA; CINEMÁTICA; DINÁMICA; MATEMÁTICAS; AUTOMÁTICA; ELECTRÓNICA; INFORMÁTICA; ENERGÍA Y ACTUADORES ELÉCTRICOS, NEUMÁTICOS E HIDRÁULICOS; VISIÓN ARTIFICIAL; INTELIGENCIA ARTIFICIAL 1.2.4.1. IMPACTO EN LA EDUCACIÓN/APRENDIZAJE  Formación de especialistas dada su gran demanda en el mundo industrial.  Formación de especialistas en el uso de equipos médicos: cirugía robótica. ROBOT MATRICIAL I. Mena Benito 17  Introducción de nuevas asignaturas en carreras de Ingeniería Superior y Técnica, facultades de informática y centros de formación profesional.  La abundante oferta de robots educacionales en el mercado y sus precios competitivos, permiten a los centros de enseñanza complementar el estudio teórico de la Robótica con prácticas. 1.2.4.2. IMPACTO EN LA AUTOMATIZACIÓN INDUSTRIAL  Los robots permiten sistemas de fabricación flexibles que se adaptan a las diferentes tareas de producción.  Las células flexibles disminuyen el ciclo de trabajo de un producto y liberan a las personas de trabajos desagradables y monótonos.  La interrelación de las diferentes células flexibles a través de potentes computadores da lugar a la factoría totalmente automatizada. 1.2.4.3. IMPACTO EN LA COMPETITIVIDAD  La adopción de la automatización en la fabricación de las poderosas compañías multinacionales obliga a todas las demás a seguir sus pasos para mantener su supervivencia.  La automatización provoca un aumento de productividad y de calidad del producto, lo que hace que la empresa sea más competitiva. 1.2.4.4. IMPACTO SOCIOLABORAL  La inversión económica de la automatización industrial se lleva a cabo a costa de la reducción de puestos de trabajo.  El desempleo generado queda compensado por los nuevos puestos de trabajo que surgen en otros sectores: enseñanza, servicios, instalación, mantenimiento y fabricación de robots.  También supone el mantenimiento del resto de puestos de trabajo, dado que la automatización de la misma provocará la revitalización y la salvación de empresa. 2 2 Introducción a la Robótica – Rafael Barea ROBOT MATRICIAL I. Mena Benito 18 1.3. OPENSOURCE Código abierto (o fuente abierta) es el término con el que se conoce al software distribuido y desarrollado libremente. El código abierto tiene un punto de vista más orientado a los beneficios prácticos de poder acceder al código. La idea del código abierto se centra en la premisa de que al compartir el código, el programa resultante tiende a ser de calidad superior al software propietario; es una visión técnica. Por otro lado, el software libre tiene tendencias filosóficas e incluso morales: el software propietario, al no poder compartirse, es "antiético", dado que prohibir compartir entre seres humanos va en contra del sentido común. Al igual que el software libre, el código abierto tiene una serie de requisitos necesarios para que un programa pueda considerarse dentro de este movimiento; éstos son:  Libre redistribución: el software debe poder ser regalado o vendido libremente.  Código fuente: el código fuente debe estar incluido u obtenerse libremente.  Trabajos derivados: la redistribución de modificaciones debe estar permitida.  Integridad del código fuente del autor: las licencias pueden requerir que las modificaciones sean redistribuidas sólo como parches.  Sin discriminación de personas o grupos: no se puede dejar fuera a nadie.  Sin discriminación de áreas de iniciativa: los usuarios comerciales no pueden ser excluidos.  Distribución de la licencia: deben aplicarse los mismos derechos a todo el que reciba el programa  La licencia no debe ser específica de un producto: el programa no puede licenciarse sólo como parte de una distribución mayor.  La licencia no debe restringir otro software: la licencia no puede obligar a que algún otro software que sea distribuido con el software abierto deba también ser de código abierto.  La licencia debe ser tecnológicamente neutral: no debe requerirse la aceptación de la licencia por medio de un acceso por clic de ratón o de otra forma específica del medio de soporte del software. ROBOT MATRICIAL I. Mena Benito 19 1.3.1. OPENSOFTWARE El software libre (en inglés free software, aunque esta denominación también se confunde a veces con "gratis" por la ambigüedad del término "free" en inglés, por lo que también se usan "libre software" y "logical libre") es la denominación del software que respeta la libertad de todos los usuarios que adquirieron el producto y, por tanto, una vez obtenido el mismo puede ser usado, copiado, estudiado, modificado, y redistribuido libremente de varias formas. Según la Free Software Foundation, el software libre se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, y estudiar el mismo, e incluso modificar el software y distribuirlo modificado. El software libre suele estar disponible gratuitamente, o al precio de costo de la distribución a través de otros medios; sin embargo no es obligatorio que sea así, por lo tanto no hay que asociar software libre a "software gratuito", (denominado usualmente freeware), ya que, conservando su carácter de libre, puede ser distribuido comercialmente ("software comercial"). Análogamente, el "software gratis" o "gratuito" incluye en ocasiones el código fuente; no obstante, este tipo de software no es libre en el mismo sentido que el software libre, a menos que se garanticen los derechos de modificación y redistribución de dichas versiones modificadas del programa. Tampoco debe confundirse software libre con "software de dominio público". Este último es aquel software que no requiere de licencia, pues sus derechos de explotación son para toda la humanidad, porque pertenece a todos por igual. Cualquiera puede hacer uso de él, siempre con fines legales y consignando su autoría original. Este software sería aquel cuyo autor lo dona a la humanidad o cuyos derechos de autor han expirado, tras un plazo contado desde la muerte de éste, habitualmente 70 años. Si un autor condiciona su uso bajo una licencia, por muy débil que sea, ya no es del dominio público. ROBOT MATRICIAL I. Mena Benito 20 1.3.1.1. LIBERTADES DEL SOFTWARE LIBRE De acuerdo con tal definición, un software es "libre" cuando garantiza las siguientes libertades: Libertad Descripción 0 La libertad de usar el programa, con cualquier propósito. 1 La libertad de estudiar cómo funciona el programa y modificarlo, adaptándolo a tus necesidades. 2 La libertad de distribuir copias del programa, con lo cual puedes ayudar a tu prójimo. 3 La libertad de mejorar el programa y hacer públicas esas mejoras a los demás, de modo que toda la comunidad se beneficie. Las libertades 1 y 3 requieren acceso al código fuente porque estudiar y modificar software sin su código fuente es muy poco viable. TABLA 1: LIBERTADES DEL SOFTWARE LIBRE 1.3.1.2. MOTIVACIONES DEL SOFTWARE LIBRE  Hay una motivación ética, abanderada por la Free Software Foundation, heredera de la cultura hacker y partidaria del apelativo libre, que argumenta que el software es conocimiento y debe poderse difundir sin trabas. Su ocultación es una actitud antisocial y la posibilidad de modificar programas es una forma de libertad de expresión, aunque sin olvidar una estructura jerarquizada por la meritocracia.  La motivación pragmática, abanderada por la Open Source Initiative y partidaria del apelativo abierto, que argumenta ventajas técnicas y económicas, con respecto a evitar una tragedia de los anticomunes mejorando los incentivos. Aparte de estas dos grandes motivaciones, la gente que trabaja en software libre suele hacerlo por muchas otras razones, que van desde la diversión a la mera retribución económica, que es posible debido a modelos de negocio sustentables. ROBOT MATRICIAL I. Mena Benito 21 1.3.2. OPENHARDWARE Se llama hardware libre a los dispositivos de hardware cuyas especificaciones y diagramas esquemáticos son de acceso público, ya sea bajo algún tipo de pago o de forma gratuita. La filosofía del software libre (las ideas sobre la libertad del conocimiento) es aplicable a la del hardware libre. Se debe recordar en todo momento que libre no es sinónimo de gratis. El hardware libre forma parte de la cultura libre. 1.3.2.1. PROBLEMÁTICA DEPENDENCIA TECNOLÓGICA EXTRANJERA DE LOS COMPONENTES Al intentar fabricar un diseño, es posible encontrarse con el problema de la falta de material. En un país puede no darse este problema, pero en otros puede que no se encuentren los materiales necesarios y está demostrado que las TIC son herramientas indispensables para el desarrollo de las naciones, por lo cual es de importancia vital, a la vez que estratégica, el que cada nación no dependa de otra para su desarrollo tecnológico. ALTOS COSTOS DE PRODUCCIÓN La persona que desea utilizar el hardware que un tercero ha diseñado, primero lo tiene que fabricar, para lo cual tendrá que comprobar los componentes necesarios, construir el diseño y verificar que se ha hecho correctamente. Todo esto tiene un costo. EL CONOCIMIENTO LO PO SEEN POCAS EMPRESAS Se sigue reteniendo el conocimiento en las grandes industrias productoras; como resultado el consumidor del producto tiene que adecuarse al producto que ofrece el mercado, que es por lo general un producto genérico que no cumple con las necesidades muy específicas de un determinado consumidor; allí es cuando se ata al usuario a las decisiones de las empresas productoras, y no se le da la libertad de elegir. GRAN INVERSIÓN DE TIEMPO EN TRABAJOS DE DISEÑO REDUNDANTES Tanto en el hardware como en el software propietario existe mucho diseño redundante, es decir, se "reinventa la rueda" en vez de usar ese conocimiento previo e innovar en nuevas áreas de investigación y producción. ROBOT MATRICIAL I. Mena Benito 22 1.3.2.2. VENTAJAS Y DESVENTAJAS VENTAJAS  Protege y defiende la soberanía, permitiendo a las naciones no depender de ninguna otra que le provea los recursos necesarios para su desarrollo e independencia tecnológica.  Fomenta que el hardware pueda ser de calidad y los estándares, abiertos y más económicos.  La reutilización y la adaptación de diseños, permitiendo así innovar y mejorar los diseños de forma colaborativa a nivel mundial.  Ayudaría a las compañías a ahorrar costes y tiempos de diseño en sus trabajos.  Existen comunidades de diseño, programación, pruebas y soporte que día a día crecen de forma dinámica y participativa.  Evita la alianza Trusted Computing y la gestión digital de los derechos (DRM), que imponen restricciones a los dispositivos electrónicos, como por ejemplo electrodomésticos y computadoras, entre otras más. DESVENTAJAS No se pueden aplicar directamente las cuatro libertades del software libre al hardware, dada su naturaleza diferente. Uno tiene existencia física, el otro no. Esto hace que surja una serie de problemas:  Un diseño físico es único. La compartición depende de la facilidad de reproducción que éste posea.  La compartición tiene asociado un coste. La persona que quiera utilizar el hardware que otra haya diseñado primero lo tiene que fabricar, para lo cual tendrá que comprar los componentes necesarios, construir el diseño y verificar que se ha hecho correctamente. Todo esto tiene un coste.  Disponibilidad de los componentes. ¿Están disponibles los chips? Al intentar fabricar un diseño nos podemos encontrar con el problema de la falta de material. En un país puede no haber problema, pero en otro puede que no se encuentren.  El mundo del hardware está plagado de patentes; es una realidad, por eso muchas de las motivaciones de los autores de este concepto son que no se libere el código o el diseño si no se desea, pero se anima a que ROBOT MATRICIAL I. Mena Benito 23 nuevas empresas desarrollen y liberen nuevo hardware, en pro de crear estándares públicos y libres en los cuales todos puedan colaborar.  Modelo de producción; no cualquiera podrá realizar hardware, debido a las implicaciones que conlleva toda la infraestructura de diseño, simulación, producción e implementación del hardware, al contrario de lo que se da en el software libre. 3 1.4. PLAN DE TRABAJO ELECCIÓN DEL MICROCON TROLADOR ADECUADO Elegir entre los diferentes microcontroladores que se adaptan a nuestros requerimientos: gran número de pines de E/S, suficiente memoria para gran cantidad de operaciones, facilidad de programación, etc… FAMILIARIZACIÓN CON EL SOFTWARE Y EL LENGUAJE DE PROGRAMACIÓN Familiarizarse con el software elegido, además de comprender todas las opciones que nos ofrece el lenguaje de programación del dispositivo. DISEÑO MECÁNICO Diseño de la estructura y las partes mecánicas del robot móvil. CONTROL DE MOTORES Estudio y control de los motores de CC del robot móvil ELECCIÓN DE DISPOSITIVOS DE E/S Estudio y control de los diferentes dispositivos del robot móvil: sensores, servo-motores, LCD, lector SD, reloj real y baterías. PROGRAMACIÓN Y MONTAJE Programación conjunta de todos los componentes del robot, además de su ubicación física en el mismo. PRUEBAS DE FUNCIONAMI ENTO Pruebas finales del funcionamiento del robot. 3 OpenSource, OpenSoftware, OpenHardware - Wikipedia ROBOT MATRICIAL I. Mena Benito 24 1.5. OBJETIVOS El primer objetivo del proyecto es el estudio y comprensión del funcionamiento de la robótica, así como de las partes que componen ésta: control de motores, sensores, dispositivos de salida, baterías, etc… El segundo objetivo es el desarrollo de un robot móvil que vaya recorriendo el suelo de una habitación. El robot deberá evitar todos sus obstáculos además de mostrar/grabar toda la información que vaya obteniendo, incluyendo una matriz en 2D de la superficie de la habitación, en la que se representarían los obstáculos esquivados y los muros de ésta. ROBOT MATRICIAL I. Mena Benito 31 2.2.1.4.2. SHIELDS Los Shields son dispositivos que se colocan encima de la placa Arduino y que amplían las funciones que serán controladas desde Arduino, para manejar diferentes aparatos, adquirir datos, etc. SHIELD XBEE Este shield permite conectar inalámbricamente varios Arduino a distancias de 30 metros en locales interiores de edificios y de 90 metros en el exterior usando el módulo Maxstream Xbee Zigbee. SHIELD MOTORES Este shield permite a Arduino controlar motores eléctricos de corriente continua, servos, motores paso a paso y leer encoders. SHIELD ETHERNET Este shield permite a una placa Arduino conectarse a una red Ethernet y tener acceso a y desde Internet. 2.2.1.5. ARDUINO MEGA Es la elección de placa para nuestro prototipo, puesto que tiene una gran cantidad de pines de E/S, además de ser más potente y tener más memoria que las otras versiones de Arduino más pequeñas (Ver Enlaces 9.1). FIGURA 7: ARDUINO MEGA ROBOT MATRICIAL I. Mena Benito 32 2.2.1.5.1. VISIÓN GENERAL El Arduino Mega es una placa microcontroladora basada en ATmeg1280. Tiene 54 entradas/salidas digitales (de las cuales 14 proporcionan salida PWM), 16 entradas digitales, 4 UARTS (puertos serie por hardware), un cristal oscilador de 16MHz, conexión USB, entrada de corriente, conector ICSP y botón de reset. Contiene todo lo necesario para hacer funcionar el microcontrolador; se puede conectar al ordenador con un cable USB o alimentándolo con un trasformador o batería para empezar. El Mega es compatible con la mayoría de shields diseñados para el Arduino Duemilanove o Diecimila. 2.2.1.5.2. ESQUEMAS Ver 9.3 Esquema de pines del Arduino (Contenido del CD). 2.2.1.5.3. PRINCIPALES CARACTERÍSTICAS Microcontrolador ATmega1280 Voltaje de funcionamiento 5V Voltaje de entrada (recomendado) 7-12V Voltaje de entrada (limite) 6-20V Pines E/S digitales 54 (14 proporcionan salida PWM) Pines de entrada analógica 16 Intensidad por pin 40 mA Intensidad en pin 3.3V 50 mA Memoria Flash 128 KB de las cuales 4 KB las usa el gestor de arranque (bootloader) SRAM 8 KB EEPROM 4 KB Velocidad de reloj 16 MHz TABLA 2: CARACTERÍSTICAS DEL ARDUINO MEGA ROBOT MATRICIAL I. Mena Benito 33 2.2.1.5.4. ALIMENTACIÓN El Arduino Mega puede ser alimentado vía USB o con una fuente de alimentación externa. El origen de la alimentación se selecciona automáticamente. Las fuentes de alimentación externas (no-USB) pueden ser tanto un transformador como una batería. El transformador se puede conectar usando un conector macho de 2.1mm con centro positivo en el conector hembra de la placa. Los cables de la batería pueden conectarse a los pines Gnd y Vin en los conectores de alimentación (POWER) La placa puede trabajar con una alimentación externa de entre 6 a 20 voltios. Si el voltaje suministrado es inferior a 7V el pin de 5V puede proporcionar menos de 5 Voltios y la placa puede volverse inestable; si se usan más de 12V los reguladores de voltaje se pueden sobrecalentar y dañar la placa. El rango recomendado es de 7 a 12 voltios. Los pines de alimentación son los siguientes: VIN La entrada de voltaje a la placa Arduino cuando se está usando una fuente externa de alimentación (en opuesto a los 5 voltios de la conexión USB). Se puede proporcionar voltaje a través de este pin o, si se está alimentado a través de la conexión de 2.1mm, acceder a ella a través de este pin. 5V La fuente de voltaje estabilizado usado para alimentar el microcontrolador y otros componentes de la placa. Ésta puede provenir de VIN a través de un regulador integrado en la placa, o proporcionada directamente por el USB u otra fuente estabilizada de 5V. 3V3 Una fuente de voltaje a 3.3 voltios generada en el chip FTDI integrado en la placa. La corriente máxima soportada 50mA. GND Pines de toma de tierra. ROBOT MATRICIAL I. Mena Benito 34 2.2.1.5.5. MEMORIA El ATmega1280 tiene 128KB de memoria flash para almacenar código (4KB son usados para el arranque del sistema (bootloader).El ATmega1280 tiene 8 KB de memoria SRAM. El ATmega1280 tiene 4KB de EEPROM, a la cual se puede acceder para leer o escribir con la [Reference/EEPROM |librería EEPROM]]. 2.2.1.5.6. ENTRADAS Y SALIDAS FIGURA 8: PINES ARDUINO MEGA Cada uno de los 54 pines digitales en el Arduino Mega puede utilizarse como entrada o como salida usando las funciones pinMode(), digitalWrite(), y digitalRead(). Las E/S operan a 5 voltios. Cada pin puede proporcionar o recibir una intensidad máxima de 40mA y tiene una resistencia interna (desconectada por defecto) de 20-50kOhms. Además, algunos pines tienen funciones especializadas: SERIE: 0 (RX) Y 1 (TX); SERIE 1: 19 (RX) Y 18 (TX); SERIE 2: 17 (RX) Y 16 (TX); SERIE 3: 15 (RX) Y 14 (TX). Usado para recibir (RX) transmitir (TX) datos a través de puerto serie TTL. Los pines Serie 0 (RX) y 1 (TX) están conectados a los pines correspondientes del chip FTDI USB-to-TTL. INTERRUPCIONES EXTERNAS: 2 (INTERRUPCIÓN 0), 3 (INTERRUPCIÓN 1), 18 (INTERRUPCIÓN 5), 19 (INTERRUPCIÓN 4), 20 (INTERRUPCIÓN 3), Y 21 (INTERRUPCIÓN 2). Estos pines se pueden configurar para lanzar una interrupción en un ROBOT MATRICIAL I. Mena Benito 35 valor LOW(0V), en flancos de subida o bajada (cambio de LOW a HIGH(5V) o viceversa), o en cambios de valor. Véase la función attachInterrupt() para más detalles. PWM: DE 0 A 13 Proporciona una salida PWM (Pulse Wave Modulation, modulación de onda por pulsos) de 8 bits de resolución (valores de 0 a 255) a través de la función analogWrite(). SPI: 50 (SS), 51 (MOSI), 52 (MISO), 53 (SCK). Estos pines proporcionan comunicación SPI, que a pesar de que el hardware la proporcione, actualmente no está incluida en el lenguaje Arduino. LED: 13 Hay un LED integrado en la placa conectado al pin digital 13. Cuando este pin tiene un valor HIGH(5V) el LED se enciende y cuando este tiene un valor LOW(0V) este se apaga. El Mega tiene 16 entradas analógicas, y cada una de ellas proporciona una resolución de 10bits (1024 valores). Por defecto se mide de tierra a 5 voltios, aunque es posible cambiar la cota superior de este rango usando el pin AREF y la función analogReference(). Además algunos pines tienen funciones especializadas: I2C: 20 (SDA) Y 21 (SCL) Soporte del protocolo de comunicaciones I2C (TWI) usando la librería Wire. AREF Voltaje de referencia para las entradas analógicas. Es usado por analogReference(). RESET Suministra un valor LOW(0V) para reiniciar el microcontrolador. Es típicamente usado para añadir un botón de reset a los shields que no dejan acceso a este botón en la placa. 2.2.1.5.7. COMUNICACIONES El Arduino Mega facilita en varios aspectos la comunicación con el ordenador, otro Arduino u otros microcontroladores. El ATmega1280 proporciona cuatro puertos de comunicación vía serie UART TTL (5V). Un chip FTDI FT232RL integrado en la placa canaliza esta comunicación serie a través del USB, y los drivers FTDI (incluidos en el software de Arduino) ROBOT MATRICIAL I. Mena Benito 36 proporcionan un puerto serie virtual en el ordenador. El software incluye un monitor de puerto serie que permite enviar y recibir información textual de la placa Arduino. Los LEDS RX y TX de la placa parpadearán cuando se detecte comunicación transmitida a través del chip FTDI y la conexión USB (no parpadearán si se usa la comunicación serie a través de los pines 0 y 1). La librería SoftwareSerial permite comunicación serie por cualquier par de pines digitales del Arduino Mega. El ATmega1280 también soporta la comunicación I2C (TWI) y SPI. El software de Arduino incluye una librería Wire para simplificar el uso del bus I2C. Para el uso de la comunicación SPI, mírese en la hoja de especificaciones (datasheet) del ATmega1280 que adjuntamos en el contenido del CD. 2.2.1.5.8. PROGRAMACIÓN El Arduino Mega se puede programar con el software Arduino. El ATmega1280 en el Arduino Mega viene precargado con un gestor de arranque (bootloader) que permite cargar nuevo código sin necesidad de un programador por hardware externo. Se comunica utilizando el protocolo STK500 original. También te puedes saltar el gestor de arranque y programar directamente el microcontrolador a través del puerto ISCP (In Circuit Serial Programming). 2.2.1.5.9. REINICIO AUTOMÁTICO POR SOFTWARE En vez de necesitarse reiniciar presionando físicamente el botón de reset antes de la carga, el Arduino Mega está diseñado de manera que es posible reiniciar por software desde el ordenador donde esté conectado. Una de las líneas de control de flujo (DTR) del FT232RL está conectada a la línea de reinicio del ATmega1280 a través de un condensador de 100 nanofaradios. Cuando la línea se pone a LOW (0V), la línea de reinicio también se pone a LOW el tiempo suficiente para reiniciar el chip. El software de Arduino utiliza esta característica para permitir cargar los sketches con sólo apretar un botón del entorno. Dado que el gestor de arranque tiene un lapso de tiempo para ello, la activación del DTR y la carga del sketch se coordinan perfectamente. Esta configuración tiene otras implicaciones. Cuando el Mega se conecta ROBOT MATRICIAL I. Mena Benito 37 a un ordenador con Mac OS X o Linux, esto reinicia la placa cada vez que se realiza una conexión desde el software (vía USB). Durante aproximadamente medio segundo posterior, el gestor de arranque se está ejecutando. A pesar de estar programado para ignorar datos mal formateados por ejemplo, cualquier cosa como la carga de un programa nuevo, intercepta los primeros bytes que se envían a la placa justo después de que se abra la conexión. Si un sketch ejecutándose en la placa recibe algún tipo de configuración inicial u otro tipo de información al inicio del programa, asegúrate de que el software con el cual se comunica espera un segundo después de abrir la conexión antes de enviar los datos. El Mega contiene una pista que puede ser cortada para deshabilitar el auto-reset. Las terminaciones a cada lado pueden ser soldadas entre ellas para rehabilitarlo. Están etiquetadas con "RESET-EN". También podéis deshabilitar el auto-reset conectando una resistencia de 110 ohms desde el pin 5V al pin de reset. 2.2.1.5.10. PROTECCIÓN CONTRA SOBRETENSIONES EN USB El Arduino Mega tiene un multifusible reinicializable que protege la conexión USB de tu ordenador de cortocircuitos y sobretensiones. Aparte de que la mayoría de ordenadores proporcionan su propia protección interna, el fusible proporciona una capa extra de protección. Si más de 500mA son detectados en el puerto USB, el fusible automáticamente corta la conexión hasta que el cortocircuito o la sobretensión desaparezca. 2.2.1.5.11. CARACTERÍSTICAS FÍSICAS Y COMPATIBILIDAD DE SHIELDS La longitud y amplitud máxima de la placa Duemilanove es de 10 y 5.3 cm respectivamente, sobresaliendo de estas dimensiones, el conector USB y la conexión de alimentación. Tres agujeros para fijación con tornillos permiten colocar la placa en superficies y cajas. Ten en cuenta que la distancia entre los pines digitales 7 y 8 es de 160 mil (0,16"), no es múltiple de la separación de 100 mil entre los otros pines. El Arduino Mega está diseñado para ser compatible con la mayoría de shields diseñados para el Diecimila o Duemilanove. Los pines digitales de 0 a 23 (y los pines AREF y GND adyacentes), las entradas analógicas de 0 a 5, los conectores de alimentación y los conectores ICPS están todos ubicados en posiciones equivalentes. Además, el puerto serie principal está ubicado en los mismos pines (0 y 1), así como las interrupciones 0 y ROBOT MATRICIAL I. Mena Benito 38 1 (pines 2 y 3 respectivamente). SPI está disponible en los conectores ICSP tanto en el Arduino Mega como en el Duemilanove/Diecimila. 4 2.2.2. MOTOR DE CORRIENTE CONTINUA El motor de corriente continua es una máquina que convierte la energía eléctrica continua en mecánica, provocando un movimiento rotatorio. Esta máquina de corriente continua es una de las más versátiles en la industria. Su fácil control de posición, par y velocidad la han convertido en una de las mejores opciones en aplicaciones de control y automatización de procesos. Pero con la llegada de la electrónica su uso ha disminuido en gran medida, pues los motores de corriente alterna, del tipo asíncrono, pueden ser controlados de igual forma a precios más accesibles para el consumidor medio de la industria. A pesar de esto los motores de corriente continua se siguen utilizando en muchas aplicaciones de potencia (trenes y tranvías) o de precisión (máquinas, micromotores, robots, etc.) La principal característica del motor de corriente continua es la posibilidad de regular la velocidad desde vacío a plena carga. Su principal inconveniente, el mantenimiento, muy caro y laborioso. 2.2.2.1. PARTES DE UN MOTOR CC Un motor CC está compuesto de un estator y un rotor. En muchos motores c.c., generalmente los más pequeños, el estator está compuesto de imanes para crear un campo magnético. En motores de corriente continua más grandes este campo magnético se logra con devanados de excitación de campo. El rotor es el dispositivo que gira en el centro del motor cc y está compuesto de arrollados de cable conductores de corriente continua. Esta corriente continua es suministrada al rotor por medio de las "escobillas", generalmente fabricadas de carbón. 2.2.2.2. PRINCIPIO BÁSICO DE FUNCIONAMIENTO DE UN MOTOR CC Cuando un conductor por el que fluye una corriente continua es colocado bajo la influencia de un campo magnético, se induce sobre él (el conductor) una 4 Arduino Website ROBOT MATRICIAL I. Mena Benito 39 fuerza que es perpendicular tanto a las líneas de campo magnético como al sentido del flujo de la corriente. Para controlar el sentido del flujo de la corriente en los conductores, se usa un conmutador que realiza la inversión del sentido de la corriente cuando el conductor pasa por la línea muerta del campo magnético. La fuerza con la que el motor gira (el par motor) es proporcional a la corriente que hay por los conductores. A mayor tensión, mayor corriente y mayor par motor. 2.2.3. SERVOMOTOR 2.2.3.1. DEFINICIÓN Un servomotor (o servo) es un motor de corriente continua que tiene la capacidad de ser controlado en posición. Es capaz de ubicarse en cualquier posición dentro de un rango de operación (generalmente de 180º) y mantenerse estable en dicha posición. Los servos se suelen utilizar en robótica, automática y modelismo (vehículos por radio-control, RC) debido a su gran precisión en el posicionamiento. FIGURA 9: DESPIECE DE UN SERVOMOTOR 2.2.3.2. ESTRUCTURA En general, los servos suelen estar compuestos por 4 elementos fundamentales: MOTOR DE CORRIENTE CONTINUA (CC) Es el elemento que le brinda movilidad al servo. Cuando se aplica un potencial a sus dos terminales, este motor gira en un sentido a su velocidad máxima. Si el voltaje aplicado a sus dos terminales es inverso, el sentido de giro también se invierte. ROBOT MATRICIAL I. Mena Benito 40 ENGRANAJES REDUCTORES Tren de engranajes que se encarga de reducir la alta velocidad de giro del motor para acrecentar su capacidad de torque (o par-motor). SENSOR DE DESPLAZAMIENTO Suele ser un potenciómetro colocado en el eje de salida del servo que se utiliza para conocer la posición angular del motor. CIRCUITO DE CONTROL Es una placa electrónica que implementa una estrategia de control de la posición por realimentación. Para ello, este circuito compara la señal de entrada de referencia (posición deseada) con la posición actual medida por el potenciómetro. La diferencia entre la posición actual y la deseada es amplificada y utilizada para mover el motor en la dirección necesaria para reducir el error. Además se pueden diferenciar más partes, que se pueden observar en la siguiente imagen: FIGURA 10: PARTES DE UN SERVOMOTOR 2.2.3.3. FUNCIONAMIENTO Los servos disponen de tres cables: dos cables de alimentación (positivo y negativo/masa) que suministran un voltaje 4.8-6V y un cable de control que indica la posición deseada al circuito de control mediante señales PWM (“Pulse Width Modulation”). ROBOT MATRICIAL I. Mena Benito 47 Dichos materiales se caracterizan por generar una señal eléctrica al aplicarles una onda de presión (en este caso el sonido) y por ser capaces de vibrar y de generar ondas de presión cuando están inmersos en un medio elástico, como por ejemplo el aire, cualquier otro fluido o un sólido, al aplicarles una excitación eléctrica. FIGURA 15: EFECTO PIEZOELÉCTRICO En general se necesitan haces estrechos a fin de evitar reflexiones indeseadas, para lo cual la superficie de emisión debe ser grande con respecto a la longitud de onda del ultrasonido emitido. En este caso, además del cono de radiación fundamental se genera un conjunto de lóbulos secundarios en forma de anillos. FIGURA 16: CONO DE RADIACIÓN FUNDAMENTAL 2.2.4.4. PRINCIPALES EFECTOS UTILIZADOS PARA IMPLEMENTAR SENSORES DE ULTRASONIDOS LA INTERRUPCIÓN DEL HAZ ULTRASÓNICO Funciona como detector de un objeto que interrumpe el haz ultrasónico LA REFLEXIÓN EN OBJETOS INMÓVILES O FIJOS Es debida a la propagación en medios no homogéneos, que no se mueven uno con respecto al otro, descrita anteriormente. LA REFLEXIÓN EN OBJETOS MÓVILES (EFECTO DOPPLER) Es debida a la propagación en medios no homogéneos que tienen un ROBOT MATRICIAL I. Mena Benito 48 movimiento relativo entre ellos 2.2.4.4.1. SENSOR ULTRASÓNICO DE REFLEXIÓN EN OBJETOS INMÓVILES O DE TIPO ECO Se mide el tiempo que tarda en recibirse el eco de un impulso emitido, debido a la reflexión sobre un objeto presente en el camino de propagación de la radiación. El objeto puede ser un líquido, un sólido, granular o polvo, con la única restricción de que debe tener una impedancia acústica muy diferente de la del medio en el que se propagan los ultrasonidos, para que la mayor parte de la radiación se refleje. FIGURA 17: CÁLCULO DE LA DISTANCIA EN OBJETOS INMÓVILES En los sensores de ultrasonidos de bajo coste se utiliza el mismo transductor como emisor y receptor. Tras la emisión del ultrasonido se espera un determinado tiempo a que las vibraciones en el sensor desaparezcan y a que esté preparado para recibir el eco producido por el obstáculo. Esto implica que existe una distancia mínima d (proporcional al tiempo de relajación del transductor) a partir de la cual el sensor mide con precisión. FIGURA 18: MÁRGENES DE MEDIDA DE LOS SENSORES DE ULTRASONIDOS ROBOT MATRICIAL I. Mena Benito 49 CONSIDERACIONES A TENER EN CUENTA  Para lograr un gran alcance y reducir las interferencias acústicas es importante que el haz emitido sea estrecho.  Si el tamaño del objeto es menor que la longitud de onda, la radiación reflejada es débil, por lo que para objetos pequeños se debe trabajar a alta frecuencia.  El efecto de las interferencias acústicas es menor a altas frecuencias pero la atenuación de la onda es mayor.  Si la temperatura ambiente no es constante hay que compensar la variación de la velocidad c de propagación (a menor temperatura mayor tiempo de recepción). La velocidad también depende de la presión, la densidad o la presencia de sustancias disueltas. Por ello, se suele calcular primero el valor de c mediante la reflexión en un objeto a una distancia conocida.  Un factor de error muy común es el conocido como falsos ecos. Estos falsos ecos se pueden producir por razones diferentes: puede darse el caso en que la onda emitida por el transductor se refleje varias veces en diversas superficies antes de que vuelva a incidir en el transductor (si es que incide). Este fenómeno, conocido como reflexiones múltiples, implica que la lectura del sensor evidencia la presencia de un obstáculo a una distancia proporcional al tiempo transcurrido en el viaje de la onda; es decir, una distancia mucho mayor que a la que está en realidad el obstáculo más cercano, que pudo producir la primera reflexión de la onda.  Otra fuente más común de falsos ecos, conocida como crosstalk, se produce cuando se emplea un cinturón de ultrasonidos donde una serie de sensores están trabajando al mismo tiempo. En este caso puede ocurrir (y ocurre con una frecuencia relativamente alta) que un sensor emita un pulso y sea recibido por otro sensor que estuviese esperando el eco del pulso que él había enviado con anterioridad (o viceversa).  Las ondas de ultrasonido obedecen a las leyes de reflexión de las ondas, por lo que una onda de ultrasonido tiene el mismo ángulo de incidencia y reflexión respecto a la normal a la superficie. Esto implica que si la orientación relativa de la superficie reflectora con respecto al eje del sensor de ultrasonido es mayor que un cierto umbral, el sensor nunca ROBOT MATRICIAL I. Mena Benito 50 reciba el pulso de sonido que emitió.  Puede existir un problema de falsa detección cuando varios robots trabajan con ultrasonidos (si los sensores trabajan en la misma frecuencia). APLICACIONES SISTEMAS DE PERCEPCIÓN Y CONTROL DE ROBOTS MÓVILES Los sensores de ultrasonidos se suelen utilizar en sistemas de reconocimiento del entorno y medición de distancias en robótica. En este caso se utilizan varios sensores y se diseña una estrategia de control en función de las mediciones de los mismos. Los sensores se colocan de una manera determinada en la superficie exterior del robot y el resultado de las medidas se utiliza para establecer la estrategia de movimiento del mismo. SISTEMA DE PREVENCIÓN DE COLISIONES Hay un sistema de prevención de colisiones para vehículos de la industria de la construcción (grúas, camiones, topadoras, tractores, montacargas, etc.). Es muy común durante el trabajo en obra que estos vehículos colisionen con el entorno debido a la gran cantidad de maniobras que deben realizar dentro de un ambiente en constante cambio y a la escasa visibilidad ocasionada por el propio vehículo. El coste de reparación de estos vehículos y las demoras ocasionadas justifican la instalación de un sistema para la prevención de colisiones. SONAR (SOU N D NAV I G AT IO N AN D RA N GI N G) Utilizan la reflexión de los ultrasonidos en objetos situados en el agua. Se usó con fines militares en la Segunda Guerra Mundial. Hoy en día su aplicación militar está en desuso, ya que la llegada del impulso alerta al objetivo de la presencia del emisor antes de que éste escuche el eco. Actualmente se utiliza para detectar bancos de peces. ROBOT MATRICIAL I. Mena Benito 51 2.2.4.4.2. SENSOR ULTRASÓNICO DE REFLEXIÓN EN OBJETOS MÓVILES EFECTO DOPPLER El efecto Doppler, llamado así por Christian Andreas Doppler en 1842, consiste en la variación de la frecuencia de cualquier tipo de onda emitida o recibida por un objeto en movimiento. La frecuencia percibida por un observador (o) de una fuente (s) es: ( ⁄ ) ( ⁄ ) es la velocidad del observador es la velocidad de la fuente es la velocidad de la onda en el medio FIGURA 19: DIAGRAMA DE BLOQUES DE UN SENSOR DE ULTRASONIDOS BASADO EN EL EFECTO DOPPLER APLICACIONES CAUDALÍMETRO Se basa en la diferencia entre el valor del tiempo que tardan dos ondas en recorrer el mismo camino en sentidos opuestos en el seno de un fluido en movimiento. Debido al efecto Dopler la velocidad del sonido se suma a la del fluido, lo que da como resultado valores diferentes ROBOT MATRICIAL I. Mena Benito 52 para los recorridos A-B y B-A. El emisor y el receptor se sitúan en las paredes opuestas de la tubería y forman un ángulo con el eje. 6 FIGURA 20: FUNCIONAMIENTO DE UN CAUDALÍMETRO 2.2.5. LCD Una pantalla de cristal líquido o LCD (acrónimo del inglés liquid crystal display) es una pantalla delgada y plana formada por un número de píxeles en color o monocromos colocados delante de una fuente de luz o reflectora. FIGURA 21: DESPIECE DE UNA PANTALLA LCD 6 Sensores y acondicionadores – Enrique Mandado Pérez. Antonio Murillo Roldán. 1. Film de filtro vertical para polarizar la luz que entra. 2. Sustrato de vidrio con electrodos de Óxido de Indio ITO. Las formas de los electrodos determinan las formas negras que aparecen cuando la pantalla se enciende y apaga. Los cantos verticales de la superficie son suaves. 3. Cristales líquidos "Twisted Nematic" (TN). 4. Sustrato de vidrio con film electrodo común (ITO) con los cantos horizontales para alinearse con el filtro horizontal. 5. Film de filtro horizontal para bloquear/permitir el paso de luz. 6. Superficie reflectante para devolver la luz al espectador. En un LCD retroiluminado, esta capa es reemplazada por una fuente luminosa. ROBOT MATRICIAL I. Mena Benito 53 2.2.5.1. FUNCIONAMIENTO Cada píxel de un LCD consiste típicamente en una capa de moléculas alineadas entre dos electrodos transparentes y dos filtros de polarización; los ejes de transmisión de cada uno están (en la mayoría de los casos) perpendiculares entre sí. Sin cristal líquido entre el filtro polarizante, la luz que pasa por el primer filtro sería bloqueada por el segundo (cruzando) polarizador. La superficie de los electrodos que están en contacto con los materiales de cristal líquido es tratada a fin de ajustar las moléculas de cristal líquido en una dirección en particular. Este tratamiento suele ser normalmente aplicable en una fina capa de polímero que es frotada unidireccionalmente utilizando, por ejemplo, un paño. La dirección de la alineación de cristal líquido se define por la dirección de frotación. Antes de la aplicación de un campo eléctrico, la orientación de las moléculas de cristal líquido está determinada por la adaptación a las superficies. En un dispositivo twisted nematic, TN (uno de los dispositivos más comunes entre los de cristal líquido), las direcciones de alineación de la superficie de los dos electrodos son perpendiculares entre sí, y así se organizan las moléculas en una estructura helicoidal, o retorcida. Debido a que el material es de cristal líquido birrefringente, la luz que pasa a través de un filtro polarizante se gira por la hélice de cristal líquido que pasa a través de la capa de cristal líquido, lo que le permite pasar por el segundo filtro polarizado. La mitad de la luz incidente es absorbida por el primer filtro polarizante, pero por lo demás todo el montaje es transparente. Cuando se aplica un voltaje a través de los electrodos, una fuerza de giro orienta las moléculas de cristal líquido paralelas al campo eléctrico, que distorsiona la estructura helicoidal (esto se puede resistir gracias a las fuerzas elásticas desde que las moléculas están limitadas a las superficies). Esto reduce la rotación de la polarización de la luz incidente, y el dispositivo aparece gris. Si la tensión aplicada es lo suficientemente grande, las moléculas de cristal líquido en el centro de la capa son casi completamente desenrolladas y la polarización de la luz incidente no es rotada, ya que pasa a través de la capa de cristal líquido. Esta luz será principalmente polarizada perpendicularmente al segundo filtro, y por eso será bloqueada y el pixel aparecerá negro. Por el control de la tensión aplicada a través de la capa de cristal líquido en cada píxel, la luz se puede permitir pasar a través de distintas cantidades, constituyéndose los diferentes tonos de gris. El efecto óptico de un dispositivo twisted nematic (TN) en el estado del voltaje es mucho menos dependiente de las variaciones de espesor del dispositivo que en el estado del voltaje de compensación. Debido a esto, estos dispositivos suelen usarse entre polarizadores cruzados de tal manera que parecen brillantes sin tensión (el ojo es mucho más sensible a las variaciones en el estado oscuro que en el brillante). Estos dispositivos también pueden funcionar ROBOT MATRICIAL I. Mena Benito 54 en paralelo entre polarizadores, en cuyo caso la luz y la oscuridad son estados invertidos. La tensión de compensación en el estado oscuro de esta configuración aparece enrojecida debido a las pequeñas variaciones de espesor en todo el dispositivo. Tanto el material del cristal líquido como el de la capa de alineación contienen compuestos iónicos. Si un campo eléctrico de una determinada polaridad se aplica durante un período prolongado, este material iónico es atraído hacia la superficie y se degrada el rendimiento del dispositivo. Esto se intenta evitar, ya sea mediante la aplicación de una corriente alterna, ya por inversión de la polaridad del campo eléctrico que está dirigida al dispositivo (la respuesta de la capa de cristal líquido es idéntica, independientemente de la polaridad de los campos aplicados) Cuando un dispositivo requiere un gran número de píxeles, no es viable conducir cada dispositivo directamente, así que cada píxel requiere un número de electrodos independiente. En cambio, la pantalla es multiplexada. En una pantalla multiplexada, los electrodos de la parte lateral de la pantalla se agrupan junto con los cables (normalmente en columnas), y cada grupo tiene su propia fuente de voltaje. Por otro lado, los electrodos también se agrupan (normalmente en filas), de modo que cada grupo obtiene una tensión de sumidero. Los grupos se han diseñado de manera que cada píxel tiene una combinación única y dedicada de fuentes y sumideros. Los circuitos electrónicos o el software que los controla, activa los sumideros en secuencia y controla las fuentes de los píxeles de cada sumidero. 2.2.5.2. ESPECIFICACIONES RESOLUCIÓN Las dimensiones horizontal y vertical son expresadas en píxeles. Las pantallas HD tienen una resolución nativa desde 1280x720 píxeles (720p), hasta 1920x1080 píxeles (1080p) ANCHO DE PUNTO La distancia entre los centros de dos píxeles adyacentes. Cuanto menor sea el ancho de punto, tanto menor granularidad tendrá la imagen. El ancho de punto suele ser el mismo en sentido vertical y horizontal, pero puede ser diferente en algunos casos. TAMAÑO El tamaño de un panel LCD se mide a lo largo de su diagonal, generalmente expresado en pulgadas (coloquialmente se llama “área de visualización activa”). TIEMPO DE RESPUESTA Es el tiempo que demora un píxel en cambiar de un color a otro. ROBOT MATRICIAL I. Mena Benito 55 TIPO DE MATRIZ Activa, pasiva y reactiva. ÁNGULO DE VISIÓN Es el máximo ángulo desde el que un usuario puede mirar el LCD, estando desplazado de su centro, sin que se pierda calidad de imagen. Las nuevas pantallas vienen con un ángulo de visión de 178 grados. SOPORTE DE COLOR Cantidad de colores soportados, coloquialmente conocida como “gama de colores”. BRILLO La cantidad de luz emitida desde la pantalla; también se conoce como luminosidad. CONTRASTE La relación entre la intensidad más brillante y la más oscura. ASPECTO La proporción de la anchura y la altura 2.2.5.3. TECNOLOGÍAS DE MATRIZ ACTIVA TWISTED NEMATIC (TN) Las pantallas twisted nematic contienen elementos de cristal líquido con desenrollado y enrollado en diversos grados para permitir que la luz pase a través de ellos. Cuando no se aplica voltaje a una celda de cristal líquido TN, la luz se polariza para pasar a través de la célula. En proporción a la tensión aplicada, las células LC giran hasta 90 grados cambiando la polarización y bloqueando el camino de la luz, para ajustar correctamente el nivel de la tensión de casi cualquier nivel de gris o la transmisión que se desee lograr. IN-PLANE SWITCHING (IPS) In-plane switching es una tecnología LCD que alinea las celdas de cristal líquido en una dirección horizontal. En este método, el campo eléctrico se aplica a través de cada uno de los extremos del cristal, pero esto requiere dos transistores por cada píxel en vez de un transistor, como era necesario para una pantalla estándar TFT. Esto hace que se produzca un mayor bloqueo del área de transmisión. También requiere un mayor brillo de fondo, el cual consumirá más energía, haciendo este tipo de pantalla menos deseable para los ordenadores portátiles. ROBOT MATRICIAL I. Mena Benito 56 VERTICAL ALIGNMENT (VA) Las pantallas vertical alignment, VA, son una forma de pantallas LCD en las que el material de cristal líquido se encuentra en un estado vertical, eliminando así la necesidad de los transistores extras (como en el IPS). Cuando no se aplica voltaje, la celda de cristal líquido sigue siendo perpendicular al sustrato, creando una pantalla negra. 2.2.5.4. INCONVENIENTES RESOLUCIÓN Aunque los CRTs sean capaces de mostrar múltiples resoluciones de vídeo sin introducir artefactos, los LCD producen imágenes nítidas sólo en su "resolución nativa" y, a veces, en las fracciones de la resolución original. Al intentar ejecutar paneles LCD a resoluciones no nativas, por lo general los resultados en el panel de la escala de la imagen introducen emborronamientos de la imagen o bloqueos y, en general, es susceptible a varios tipos de HDTV borrosa. Muchos LCD no son capaces de mostrar modos de pantalla de baja resolución (por ejemplo, 320x200), debido a estas limitaciones de escala. CONTRASTE Aunque los LCD suelen tener más imágenes vibrantes y mejor contraste "del mundo real" (la capacidad de mantener el contraste y la variación de color en ambientes luminosos) que los CRT, tienen menor contraste que los CRTs en términos de la profundidad de los negros. El contraste es la diferencia entre un encendido completo (en blanco) y la desactivación de píxeles (negro), y los LCD pueden tener "sangrado de luz de fondo" donde la luz (por lo general, visto desde de las esquinas de la pantalla) se filtra y las fugas de negro se convierten en gris. En diciembre de 2007, los mejores LCD pueden acercarse al contraste de las pantallas de plasma en términos de entrega de profundidad de negro, pero la mayoría de los LCD siguen a la zaga. TIEMPO DE RESPUESTA Los LCD suelen tener tiempos de respuesta más lentos que sus correspondientes de plasma y CRT, en especial las viejas pantallas, creando imágenes fantasma cuando las imágenes se cargaban rápidamente. Por ejemplo, cuando se desplaza el ratón rápidamente en una pantalla LCD, se pueden ver múltiples cursores. Algunas pantallas LCD tienen importantes aportaciones de retraso. Si el retraso es lo suficientemente grande, esa pantalla puede ser inadecuada para operaciones con el ratón rápidas y precisas (diseño asistido por ordenador, videojuegos de disparos en primera persona), en comparación con los monitores CRT o LCD pequeños y con insignificantes cantidades de retraso de ROBOT MATRICIAL I. Mena Benito 63 Alguno de los usos más frecuentes son en juguetes, equipos estéreos y máquinas fotográficas. Existen diseños especializados, como el de baterías para aviones sin sellar, lo que permite expulsar el oxígeno y el hidrogeno cuando la batería se carga o se descarga rápidamente BATERÍA DE NICKEL-HIDRURO METÁLICO (NI-MH) Es una extensión de la tecnología de NiCd, que ofrece una mayor densidad de energía y cuyo ánodo está hecho de metal hidruro, evitando así los problemas ambientales de la NiCd. Además su efecto memoria es casi despreciable. No es capaz de entregar altos picos de potencia, tiene un alto grado de autodescarga y es muy peligrosa si se sobrecarga. Aún es de precio elevado, aunque se estima que su costo disminuirá al producirse vehículos eléctricos a gran escala. Entre las aplicaciones de esta batería podemos destacar: VEHÍCULOS DE PROPULSI ÓN TOTALMENTE ELÉCTR ICA: General Motors EV1, Honda EV Plus, Ford Ranger EV, Scooter Vectrix. VEHÍCULOS HÍBRIDOS: Toyota Prius, Honda Insight o las versiones híbridas de los Ford Escape, Chevrolet Malibu y Honda Civic Hybrid también las utilizan. BATERÍA DE ION-LITIO Es de una nueva tecnología, la cual ofrece una densidad de energía de 3 veces la de una batería plomo-ácido. Esta gran mejora viene dada por su bajo peso atómico (6,9 vs 209 para la de plomo). Además cuenta con el voltaje más alto por celda (3.5v), lo cual reduce el número de celdas en serie para alcanzar cierto voltaje, lo que reduce su costo de manufactura. Tiene una tasa muy baja de autodescarga. Tiene rápida degradación y sensibilidad a las temperaturas elevadas, que pueden dar como resultado su destrucción por inflamación o incluso explosión. Requieren en su configuración como producto de consumo, la inclusión de dispositivos adicionales de seguridad, derivando en un coste superior que ha limitado la extensión de su uso a otras aplicaciones. Su utilización se ha popularizado en aparatos como teléfonos móviles, ROBOT MATRICIAL I. Mena Benito 64 agendas electrónicas, ordenadores portátiles y reproductores de música. Las baterías de Ion-Litio, al ser baterías más compactas, permiten manejar más carga, lo que hay que tener en cuenta para lograr automóviles eléctricos prácticos. BATERÍA DE POLÍMERO-LITIO Es una batería de litio con un polímero sólido como electrolítico. Estas baterías tienen una densidad de energía de entre 5 y 12 veces las de NiCd o Ni-MH, a igualdad de peso. A igualdad de capacidad, las baterías de Li-Po son, típicamente, cuatro veces más ligeras que las de Ni-Cd de la misma capacidad. La gran desventaja de estas baterías es que requieren un trato mucho más delicado, bajo riesgo de deteriorarlas irreversiblemente o, incluso, llegar a producir su ignición o explosión. Un elemento de Li-Po tiene un voltaje nominal, cargado, de 3.7V. Nunca se debe descargar una batería por debajo de 3.0V por celda; nunca se la debe cargar más allá de 4.3V por celda. Hyundai ha adoptado un enfoque ligeramente diferente en cuanto al almacenamiento de la energía, ya que utiliza baterías de polímero de litio en lugar de usar un compuesto de níquel con iones de litio. La empresa Apple usa actualmente la tecnología de las baterías de polímero litio en iPod o iPhone. También se encuentra en dispositivos como teléfonos móviles y PDAs. BATERÍA DE AIRE-ZINC Con una fabricación más barata y capacidades que pueden superar en 3 veces a las populares de Ion-Litio. Las nuevas baterías de Zinc-Aire funcionan utilizando el oxígeno almacenado en un cuarto como electrodo, mientras la batería contiene un electrolito y el electrodo de Zinc permite que el aire circule dentro de una caja porosa, logrando el milagro de la electricidad. La compañía ReVolt se encuentra trabajando en llevar el Zinc-Aire a vehículos eléctricos; para esto será necesario incrementar el número de ciclos de carga en 10.000, algo un poco lejano todavía para los prototipos que sólo alcanzan las 300-500 cargas y descargas. Las pilas a base de zinc tienen como principal ventaja la posibilidad de ser recicladas sin límite, sin perder ni sus cualidades químicas, ni sus cualidades físicas. ROBOT MATRICIAL I. Mena Benito 65 Entre las aplicaciones de esta batería podemos destacar:  La tecnología zinc-aire, respetuosa con el medio ambiente, encuentra su mejor aplicación en prótesis de oído, aparatos electrónicos portátiles y en el sector de la automoción.  Es probable que el futuro del coche eléctrico pase por el desarrollo de baterías más potentes de zinc-aire, que sustituyan a las de iones de litio.  ReVolt Technology ha solicitado 30 millones de dólares dentro del programa del gobierno de Estados Unidos para acelerar el desarrollo tecnológico de las baterías de zinc-aire, para posibilitar vehículos eléctricos con mayor autonomía. 10 2.2.8.5. COMPARATIVA ENTRE BATERÍAS FIGURA 23: COMPARATIVA ENTRE BATERÍAS FIGURA 24: ENERGÍA Y DENSIDAD ESPECÍFICA DE VARIAS BATERÍAS 10 Tecnología de las baterías ROBOT MATRICIAL I. Mena Benito 66 2.3. DESCRIPCIÓN SOFTWARE 2.3.1. ARDUINO El hardware Arduino que hemos elegido para realizar nuestro proyecto, nos proporciona un software de código abierto, desde el que podemos programar en alto nivel basado en programación C/C++ que hace fácil escribir código y cargarlo a nuestra placa Arduino Mega. El entorno está escrito en Java y basado en Processing (como anteriormente hemos explicado en la introducción), avr-gcc y otros programas de código abierto. Funciona en diferentes sistemas operativos como Windows, Mac OS X y Linux. Nosotros hemos trabajado con el entorno de Windows y Linux. 2.3.1.1. COMUNICACIÓN ARDUINO-PC La comunicación entre el Arduino Mega y el PC, la realizamos mediante un cable USB, mediante el cual, gracias a la configuración Serial que nos proporciona el Arduino, podremos transmitir datos entre PC y Arduino, y viceversa. Todos los Arduinos tiene al menos un puerto serie (UART o USART), que se comunica a través de los pines (TX) y (RX); para el caso del Arduino Mega, que es el que utilizamos nosotros, disponemos de 3 puertos Serials, además del utilizado para la comunicación Serial a través del USB. FIGURA 25: PUERTOS DE COMUNICACIÓN DEL ARDUINO MEGA La comunicación de Arduino con nuestro PC la realizamos mediante USB. En primer lugar hay que decir que con esta placa no es necesaria la instalación de Drivers para los sistemas operativos anteriormente mencionados, que si sería necesaria si la placa utilizada hubiera sido Arduino UNO. ROBOT MATRICIAL I. Mena Benito 67 Nuestra interacción con Arduino se realiza con el SerialMonitor que nos proporciona el software de Arduino, que sería el siguiente: FIGURA 26: CAPTURA DE PANTALLA DE LA OPCIÓN SERIAL MONITOR Con esta herramienta podemos ver, en tiempo real, las medidas de nuestros sensores, las funciones que está realizando, tiempo, valores de variables que nos gustaría ver…; además, si fuera necesario introducir algún valor al Arduino para que hiciera alguna función específica, sería posible desde la barra de envío. 2.3.1.2. INSTALACIÓN SOFTWARE ARDUINO La instalación del software de Arduino es sencilla. En primer lugar necesitamos descargarnos la última versión del programa, que podremos encontrarnos en la página oficial de Arduino (arduino.cc), siempre teniendo en cuenta el sistema operativo instalado en nuestro PC, ya sea Windows, Mac OS X o Linux. (Véase contenido del CD 9.3.1 Arduino (software)). ROBOT MATRICIAL I. Mena Benito 68 Una vez descargados los datos comprimidos en un Zip, en nuestro caso para Windows, lo descomprimiríamos y nos encontraríamos los siguientes archivos: FIGURA 27: CAPTURA DE PANTALLA DE LA CARPETA ARDUINO DESPUÉS DE LA INSTALACIÓN Si usáramos una placa Arduino UNO necesitaríamos ir a la carpeta drivers para instalar los drivers de comunicación; como utilizamos Arduino Mega no es necesario. No es imprescindible una instalación; con hacer doble click sobre el archivo que tiene el nombre de arduino.exe, se ejecutara el programa y nos aparecerá lo siguiente: FIGURA 28: CAPTURA DE PANTALLA DE LA INSTALACIÓN DEL SOFTWARE DE ARDUINO ROBOT MATRICIAL I. Mena Benito 69 FIGURA 29: PANTALLA PRINCIPAL DEL SOFTWARE ARDUINO A continuación seleccionamos la placa Arduino que usaremos, así como el puerto serie en el que está conectada la placa; vamos a la barra Herramientas>Tarjeta>ArduinoMega. A continuación seleccionaremos el procesador de nuestra placa en Herramientas>Processor>ATmega1280, y por ultimo elegiremos el puerto serie que nos ha detectado el ordenador, en el cual está conectada nuestra placa: Herramientas>Puerto Serial>COM… Ya tendríamos configurado nuestro programa de Arduino para empezar a programar en él. Una vez que tengamos el programa escrito, sólo nos quedará compilarlo y subirlo a nuestra placa. Podemos verificar si el programa tiene algún problema de sintaxis en la programación C, pulsando el siguiente botón: ROBOT MATRICIAL I. Mena Benito 70 FIGURA 30: COMPILACIÓN EN ARDUINO Si queremos subir el programa a la placa, con pulsar el siguiente botón nos verificaría el programa y, si es correcto, lo subiría directamente: FIGURA 31: CARGAR PROGRAMA EN ARDUINO Con estos pasos ya tendríamos cargado en la placa Arduino Mega nuestro programa, listo para poder probarlo. ROBOT MATRICIAL I. Mena Benito 71 2.3.1.3. PROGRAMACIÓN ARDUINO Los programas en Arduino se estructuran de la siguiente manera: Librerías y funciones (la principal, loop). En nuestro programa lo hemos estructurado de la siguiente manera: para empezar, hemos declarado todas las librerías que vamos a necesitar, desde el control de la LCD hasta el control de la SD. FIGURA 32: INCLUSIÓN DE LIBRERÍAS EN ARDUINO Después configuramos los motores y la SD para su escritura. FIGURA 33: DEFINICIÓN DE VARIABLES COMPLEJAS Tras las configuraciones, declaramos todas las variables globales del programa (mostramos variables iniciales). FIGURA 34: DEFINICIÓN DE VARIABLES ROBOT MATRICIAL I. Mena Benito 72 Después de definir las variables, realizamos la configuración inicial que queremos cuando encendamos el Arduino (Void Setup()). FIGURA 35: CONFIGURACIÓN INICIAL EN ARDUINO Tras el configuración inicial que queremos del Arduino, empieza la función principal o bucle (Void Loop()). Es donde escribimos todo lo que tiene que hacer nuestro robot paso por paso; es decir, mediante llamadas a funciones va realizando las diferentes operaciones. FIGURA 36: COMIENZO DE LA FUNCIÓN PRINCIPAL DEL PROGRAMA EN ARDUINO Por último, creamos las funciones necesarias para que el robot perimetral realice sus operaciones. FIGURA 37: CREACIÓN DE FUNCIONES EN ARDUINO ROBOT MATRICIAL I. Mena Benito 79 Por ultimo quedaría enrutar las pistas lo, que se podría hacer de forma automática (con una configuración previa) o manual, seleccionando el ancho de pistas y la separación entre estas. FIGURA 50: ROUTING DE PISTAS EN ARES Ya estaría lista para imprimir e insolar. Podemos ver una simulación 3D de cómo quedaría nuestra PCB fabricada: FIGURA 51: VISTA 3D EN ARES ROBOT MATRICIAL I. Mena Benito 80 3. DESARROLLO/DISEÑO DEL SISTEMA 3.1. DISEÑO MECÁNICO Después de la elección de la placa, nos centramos en el diseño del robot. Lo primero de todo, es la parte mecánica. Queríamos una plataforma amplia donde poder poner la placa y todos los demás componentes necesarios, además necesitábamos dos ruedas conectadas a sendos motores desde donde pudiéramos controlar los giros y la velocidad del robot móvil. Como rueda trasera, utilizamos una rueda omnidireccional. Puesto que el diseño mecánico de estos componentes nos hubiera llevado mucho tiempo, nos decidimos por comprar un prototipo que nos ofrecía todo lo que queríamos, donde solamente fue necesario el montaje de las diferentes partes. Se puede ver el despiece general en 9.2.1 Despiece mecánico. 3.2. DISEÑO HARDWARE 3.2.1. MOTORES CC A continuación nos centramos en los motores. Necesitábamos controlar el giro y velocidad de los motores. Para ello nos decidimos a hacerlo mediante el integrado L293D. FIGURA 52: INTEGRADO L293D El integrado L293D incluye cuatro circuitos para manejar cargas de potencia media, con la capacidad de controlar corriente de hasta 600 mA en cada circuito y una tensión entre 4,5 V y 36 V. Los circuitos individuales se pueden usar de manera independiente para controlar cargas de todo tipo y, en el caso de ser motores, manejar un único sentido de giro. Pero, además, cualquiera de estos cuatro circuitos sirve para configurar la mitad de un puente H. El integrado permite formar, entonces, dos puentes H completos, con los que se ROBOT MATRICIAL I. Mena Benito 81 puede realizar el manejo de dos motores. En este caso el manejo será bidireccional, con frenado rápido y con posibilidad de implementar fácilmente el control de velocidad. FIGURA 53: DIAGRAMA DE PINES L293D Las salidas tienen un diseño que permite el manejo directo de cargas inductivas tales como relés, solenoides, motores de corriente continua y motores por pasos, ya que incorpora internamente los diodos de protección de contracorriente para cargas inductivas. Las entradas son compatibles con niveles de lógica TTL. Para lograr esto, incluso cuando se manejen motores de voltajes no compatibles con los niveles TTL, el chip tiene patas de alimentación separadas para la lógica (VCC2, que debe ser de 5V) y para la alimentación de la carga (VCC1, que puede ser entre 4,5V y 36V). Las salidas poseen un circuito de manejo en configuración "totem-pole" (término en inglés que se traduce como "poste de tótem", nombre que, gráficamente, nos remite a un "apilamiento" de transistores, como las figuras en los famosos totems indígenas). En esta estructura, unos transistores en configuración Darlington conducen la pata de salida a tierra y otro par de transistores en conexión seudo Darlington aporta la corriente de alimentación desde VCC2. Las salidas tienen diodos incorporados en el interior del chip para proteger el circuito de manejo de potencia de las contracorrientes de una carga inductiva. ROBOT MATRICIAL I. Mena Benito 82 FIGURA 54: FUNCIONAMIENTO DEL CIRCUITO Estos circuitos de salida se pueden habilitar en pares por medio de una señal TTL. Los circuitos de manejo de potencia 1 y 2 se habilitan con la señal 1,2EN, y los circuitos 3 y 4 con la señal 3,4EN. Las entradas de habilitación permiten controlar con facilidad el circuito, lo que facilita la regulación de velocidad de los motores por medio de una modulación de ancho de pulso (PWM). En ese caso, las señales de habilitación, en lugar de ser estáticas, se controlarían por medio de pulsos de ancho variable. Las salidas actúan cuando su correspondiente señal de habilitación está en alto. En estas condiciones, las salidas están activas y su nivel varía en relación con las entradas. Cuando la señal de habilitación del par de circuitos de manejo está en bajo, las salidas están desconectadas y en un estado de alta impedancia. FIGURA 55: CONEXIONADO PARA DOS MOTORES CON GIRO EN AMBOS SENTIDOS Por medio de un control apropiado de las señales de entrada y conectando el motor a sendas salidas de potencia, cada par de circuito de manejo de potencia ROBOT MATRICIAL I. Mena Benito 83 conforma un puente H completo, como se ve en el diagrama de arriba. En la tabla de funcionamiento que sigue se pueden observar los niveles TTL que corresponden a cada situación de trabajo: ENTRADAS SALIDAS ENABLE (pin 1) Pin (2) Pin (7) L - - L H H L H (giro sentido horario) H L H H(giro sentido anti-horario) ENTRADAS SALIDAS ENABLE (pin 9) Pin (10) Pin (15) L - - L H L H H (giro sentido horario) H H L H(giro sentido anti-horario) TABLA 3: GIRO DE LOS MOTORES Después de comprobar el funcionamiento del integrado L293D, diseñamos el conexionado de éste y su programación para Arduino. A continuación se muestra el conexionado del L293D a la placa Arduino Mega, ROBOT MATRICIAL I. Mena Benito 84 diseñado con Fritzing (ver en 9.1 Enlaces): FIGURA 56: DISEÑO DE CONEXIONADO DE MOTORES Y ARDUINO Y ésta sería la programación del L293D mediante Arduino.  Configuración de los pines: ROBOT MATRICIAL I. Mena Benito 85 FIGURA 57: CONFIGURACIÓN DE LOS PINES DE ARDUINO PARA EL CONTROL DE MOTORES  Funciones de movimiento de los motores: ROBOT MATRICIAL I. Mena Benito 86 FIGURA 58: FUNCIONES DE CONTROL DE LOS MOTORES Después de comprobar el correcto funcionamiento de las funciones, nos disponemos a hacer un circuito impreso para realizar el control de los motores; esto nos ayudará a eliminar cables y a poder probar el robot móvil en el suelo. Para ello hacemos el diseño. Todo el desarrollo del diseño de la placa de circuito impreso se puede ver en el apartado 4.1 Pistas. 3.2.1.1. PROBLEMA SURGIDO Después de insolar la placa y hacer el conexionado con Arduino, probamos el robot en el suelo con un programa bien sencillo. Intentamos hacer al robot ir hacia adelante. (Véase código en CD) El problema llega cuando, aun con las funciones programadas exactamente igual y mandando la misma velocidad de giro a las ruedas, el robot no consigue ir recto. Siempre se va torciendo hacia uno de los lados. He aquí el gran problema de la robótica móvil, el hacer que un robot vaya recto. Esto es ROBOT MATRICIAL I. Mena Benito 87 prácticamente imposible a causa de las ruedas, las llantas y los motores. Éstos, por muy bien fabricados que estén, nunca llegarán a ser iguales por completo. Por lo tanto, el diámetro de las ruedas y de las llantas no será el mismo en ambas ruedas, lo que creará una deriva (mayor o menor), al igual que los motores nunca transmitirán la misma potencia de giro a las ruedas. Ante este problema, nos es imposible hacer que el robot vaya recto. Por lo tanto tendremos que buscar soluciones. Intentaremos solucionarlo con la utilización de sensores, los cuales guiarán al robot e intentarán hacer que vaya lo más recto posible (siempre con una referencia física). 3.2.1.2. POSIBLES SOLUCIONES TACÓMETRO El tacómetro es un dispositivo que mide la velocidad de giro de un eje, normalmente la velocidad de giro de un motor. Se mide en revoluciones por minuto (RPM). Actualmente se utilizan con mayor frecuencia los tacómetros digitales, por su mayor precisión. 11 Con un tacómetro podríamos controlar los giros que realiza cada motor, pero tendríamos el problema de que el motor gire y que la rueda no lo haga, o que ésta resbale en la superficie que se encuentra, por lo que nuevamente no sería posible hacer que el robot vaya recto. ENCODERS El encoder es un transductor rotativo, que mediante una señal eléctrica (normalmente un pulso o una señal senoidal) nos indica el ángulo girado. Si este sensor rotatorio lo conectáramos mecánicamente con una rueda o un husillo, también nos permitiría medir distancias lineales. 12 Con la utilización de encoders (ya sean ópticos, de efecto Hall, etc.) tenemos el mismo problema que con el tacómetro. Podremos controlar cuántos giros da cada rueda, pero no podremos saber si ésta ha resbalado o no. Por lo tanto seguimos sin solucionar el problema de que el robot vaya recto. GPS 11 Tacómetro - Wikipedia 12 Encoders – Blog www.mecatronic.co ROBOT MATRICIAL I. Mena Benito 88 Las siglas GPS se corresponden con "Global Positioning System", que significa Sistema de Posicionamiento Global (aunque sus siglas GPS han popularizado el producto en el mundo comercial). En síntesis podemos definir el GPS como un Sistema Global de Navegación por Satélite (GNSS) que nos permite fijar a escala mundial la posición de un objeto, una persona, un vehículo o una nave. La precisión del GPS puede llegar a determinar los puntos de posición con errores mínimos, aunque en la práctica hablemos de metros. 13 Por lo tanto no es posible la utilización de esta tecnología dentro de una habitación, puesto que los errores son muy grandes para lo que nosotros queremos. 3.2.1.3. REPLANTEAMIENTO DE LOS OBJETIVOS Nos hemos encontrado con uno de los grandes problemas de la robótica, hacer que un robot vaya recto. Con el tiempo y los recursos que tenemos, nos vemos incapacitados de realizar la segunda parte de nuestros objetivos. Por lo que, después de tomar una decisión conjunta con nuestro tutor, decidimos reorientar esta parte del proyecto. El robot que construiremos será un “Robot Perimetral”, que irá evitando obstáculos y podrá recorrer el perímetro de una habitación. Además, almacenará y mostrará información, tal como habíamos planeado. 3.2.2. BATERÍAS Puesto que queríamos hacer nuestro robot autónomo, tuvimos que decidir qué baterías tenía que llevar. Necesitábamos unas baterías de duración media y que no ocuparan mucho espacio físico, además de que fueran recargables. Nos decidimos por unas baterías de LI-PO. Puesto que los motores eran la parte del robot que más iban a consumir, decidimos hacer dos paquetes de baterías. Uno alimenta a los motores, y el otro alimenta a Arduino y demás componentes del robot. Estos paquetes son iguales. Dos baterías de 3.7v y 1.300mAh en serie. Por lo tanto, 7.5v y 1300mAh (el voltaje de las baterías puede variar dependiendo de la memoria que tengan, desde 8.2v a 7.5v) 13 ¿Qué es el GPS? – Mateo P ROBOT MATRICIAL I. Mena Benito 95 accionar una interrupción, pero al usarlo es necesario utilizar algún tipo de fuente de alta potencia. Por lo general sólo se utiliza la interfaz I2C para realizar la configuración básica del reloj / función de lectura. La batería es de pilas de botón (tipo CR1220). Este módulo abarca el diminuto DS1307 módulo RTC, módulo de temperatura y AT24C32 módulo de almacenamiento. DS1307 y AT24C32 están conectados mediante bus I2C. Las principales características de este módulo son:  Fuente de alimentación: 5V DC y pila de botón.  Interfaz I2C  Tamaño: 16mm x 22mm x 23mm (tamaño casi igual que la pila de botón CR2032)  Capacidad de memoria: 32 K bit  IC: DS1307, AT24C32; DS1307 se puede utilizar por separado.  Tiene la función de ajuste automático de segundo, minuto, día, mes y año. Para la configuración del reloj con Arduino, primeramente tenemos que cargar un programa para que éste capte la fecha y la hora del ordenador desde donde se carga, además de utilizar las librerías <Wire.h> y <RTClib.h> FIGURA 66: CONFIGURACIÓN INICIAL DE RELOJ REAL ROBOT MATRICIAL I. Mena Benito 96 Y aquí podemos ver el programa: FIGURA 67: CÓDIGO DE PRUEBA PARA RELOJ REAL 3.2.7. LCD También queremos mostrar información al usuario mediante una pantalla LCD. Para ello elegimos una pantalla de LCD de 2x16, cuyas características principales son:  Voltaje requerido: +5v  Interface de 8 bits de bus de datos  Retroiluminación con LEDs blancos  Alto contraste  16 pines de conexión ROBOT MATRICIAL I. Mena Benito 97 FIGURA 68: PANTALLA LCD 2X16 Para el ajuste de contraste hemos puesto una resistencia de 2.2kΩ en serie a la salida del pin V0 de la LCD a GND. Para la retroiluminación es necesario no alimentar directamente a 5v porque el LED se puede dañar; por lo tanto hemos conectado una resistencia de 10kΩ al ánodo de la LCD a Vcc. Se puede ajustar el contraste y la retroiluminación según se quiera. Manipulando un potenciómetro, el usuario puede elegir qué resistencias quiere poner según el contraste y la retroiluminación que desee. Cargamos un simple programa con Arduino, donde podemos ver cómo se realiza la configuración de la LCD. En este programa mostramos el mensaje de “Hola Mundo” además del tiempo transcurrido: FIGURA 69: CÓDIGO DE PRUEBA PARA PANTALLA LCD ROBOT MATRICIAL I. Mena Benito 98 Como podemos observar, la programación del LCD no es complicada, simplemente tenemos que elegir las columnas y las filas donde queremos que aparezca el mensaje, y después mediante lcd.print(), podemos imprimir el mensaje que queramos. También se pueden hacer dibujos mediante la LCD. Nosotros hemos creado un dibujo que simula una batería. Dependiendo de la carga que tenga la batería de los motores ésta se dibujará de una u otra manera. En nuestra LCD vamos a mostrar la siguiente información: MENSAJE DE BIENVENIDA El mensaje mostrado al principio del programa: DEP.ELECTRONICA UVA. FIGURA 70: MENSAJE DE BIENVENIDA EN EL ROBOT MENSAJES DE ERROR Se muestran diferentes errores, al no insertar la tarjeta SD al inicio del programa y ante la falta de batería de motores o de Arduino. ROBOT MATRICIAL I. Mena Benito 99 FIGURA 71: MENSAJE DE ALERTA POR FALTA DE TARJETA EN ROBOT MENSAJES DE INFORMACIÓN Se muestra información sobre lo que está haciendo el programa: los diferentes giros, ajustes, funciones, etc… INFORMACIÓN SOBRE LA BATERÍA Se muestra información sobre el estado de la batería mediante un dibujo de ésta, además de avisar cuando está baja. FECHA Y HORA Se muestra el día de la semana, la fecha y la hora. 3.3. DISEÑO SOFTWARE En este apartado se va a explicar cómo se ha realizado la programación de cada una de las partes del programa. 3.3.1. INCLUSIÓN DE LIBRERÍAS Lo primero de todo es incluir en el programa las diferentes librerías que se van a utilizar a lo largo de él. En nuestro programa incluimos las siguientes:  #include <SD.h> //Incluye librería lector SD  #include <Servo.h> //Incluye librería Servo Motores  #include <LiquidCrystal.h> // Incluye librería LCD ROBOT MATRICIAL I. Mena Benito 100  #include <Wire.h> // Incluye la librería Wire  #include "RTClib.h" // Incluye la librería RTClib 3.3.2. CONFIGURACIÓN DE PINES Se realiza la configuración de todos los pines del Arduino. Dependiendo de la necesidad de cada dispositivo, éstos irán conectados a un pin o a otro. Como ya sabemos Arduino tiene pines especializados para diferentes acciones. En nuestro caso los más importantes son: Control de motores Tanto, para el control de los motores de CC como para el control del servomotor es necesario, la introducción de PWM. En este caso hemos utilizado los siguientes pines:  int speedPin1 = 12; // Enable del L293D Control motor CC (PWM)  int speedPin2 = 13; // Enable del L293D Control motor CC (PWM)  myservo.attach(9); // Control servomotor (PWM) Lector de tarjetas Para la placa Arduino Mega los pines de comunicación SPI son los siguientes: Pin 50  MISO Pin 51  MOSI Pin 52  SCK Pin 53  SS Reloj Real Para la placa Arduino Mega los pines de comunicación I2C son los siguientes: Pin 20  SDA Pin 21  SCL 3.3.3. DEFINICIÓN DE VARIABLES Se realiza la definición de las variables que componen el programa. También se definen los dibujos de la batería para después imprimirlos en la LCD. En los Anexos se puede ver la figura realizada para mostrar la batería en la LCD. ROBOT MATRICIAL I. Mena Benito 101 3.3.4. CONFIGURACIÓN INICIAL DE ARDUINO Se realiza la configuración inicial de Arduino. Esta configuración sólo se realizará una vez cuando comience el programa. CONFIGURACIÓN DE LA COMUNICACIÓN SERIE Se configura la velocidad de la comunicación serie con el ordenador. CONFIGURACIÓN I2C Se configura la velocidad de datos del bus I2C y del RTC. CONFIGURACIÓN INICIAL DE LA LCD Se configura la LCD, se crean los caracteres para mostrar el dibujo de la batería y se muestra el mensaje de bienvenida. CONFIGURACIÓN DE LAS INTERRUPCIONES Se configuran las interrupciones. COMPROBACIÓN ESTADO DE BATERÍAS Se comprueba el estado de las baterías por si alguna de ellas no tiene la carga adecuada. CONFIGURACIÓN DEL SERVOMOTOR Se configura el servomotor y se pone en posición inicial. INICIALIZACIÓN DE LA TARJETA SD Se inicializa la tarjeta SD y se muestra un mensaje de error si ésta no se encuentra. CONFIGURACIÓN DE LOS MOTORES Se configuran los pines de los motores y su velocidad, y se activa el RPA para el control de éstos. 3.3.5. BLOQUES DE FUNCIONES A continuación se muestran los diagramas de flujo de las diferentes funciones del programa. ROBOT MATRICIAL I. Mena Benito 102 3.3.5.1. FUNCIONES DE CONTROL DE MOTORES Función Delante El robot gira las ruedas hacia delante. Entradas: Salidas: Escribir en SD, Activar puente H para avanzar hacia adelante, Imprimir ‘Delante’ en LCD. Proceso: Después de escribir ‘Delante’ en la SD se ajusta la velocidad de giro de los motores para avanzar hacia adelante, se activa el puente H para avanzar hacia adelante y se imprime ‘Delante’ en la LCD. Inicio función Delante Escribir Delante en SD Ajustar velocidad giro motores delante Imprimir Delante en LCD Fin función Delante Activar puenteH para avanzar hacia delante ROBOT MATRICIAL I. Mena Benito 103 Función Atrás El robot gira las ruedas hacia atrás Entradas: Salidas: Escribir ‘Atrás’ en SD, Activar puente H para avanzar hacia atrás, Imprimir ‘Atrás’ en LCD. Proceso: Después de escribir ‘Atrás’ en la SD se ajusta la velocidad de giro de los motores para avanzar hacia atrás, se activa el puente H para avanzar hacia atrás y se imprime ‘Atrás’ en la LCD. Inicio función Atrás Escribir Atrás en SD Ajustar velocidad giro motores atrás Imprimir Atrás en LCD Fin función Atrás Activar puenteH para avanzar hacia atrás ROBOT MATRICIAL I. Mena Benito 104 Función Corregir Izquierda El robot avanza hacia adelante, ajustándose a la izquierda. Entradas: Salidas: Escribir ‘Delante’ en SD, Activar puente H para avanzar hacia adelante, Imprimir ‘Delante’ en LCD. Proceso: Después de escribir ‘Delante’ en la SD se ajusta la velocidad de giro de los motores para corregir hacia adelante izquierda, se activa el puente H para avanzar hacia adelante y se imprime ‘Delante’ en la LCD. Inicio función Delante Izquierda Escribir Delante en SD Ajustar velocidad giro motores delante izquierda Imprimir Delante en LCD Fin función Delante Izquierda Activar puenteH para avanzar hacia delante ROBOT MATRICIAL I. Mena Benito 111 Función Ajuste Izquierda El robot se ajusta hacia la izquierda, de forma paralela a la pared. Entradas: Recibe información de la función Batería motor derecho. Salidas: Escribe ‘Ajusta’ en SD, para el motor izquierdo, activa puente H para avanzar hacia adelante, imprime ‘Ajusta’ en LCD Proceso: Se escribe ‘Ajusta’ en SD. Para el motor izquierdo. Después de comprobar el estado de las baterías ajusta la velocidad del motor derecho. Activa este motor para avanzar hacia adelante. Imprime ‘Ajusta’ en LCD. Inicio función Ajuste Izquierda Escribir Ajusta en SD Imprimir Ajusta en LCD Fin función Ajuste Izquierda Activar puenteH para avanzar hacia delante Batería Motor Derecho Ajustar velocidad giro motor derecho según estado baterías Parar motor izquierdo ROBOT MATRICIAL I. Mena Benito 112 Función Para El robot para sus motores. Entradas: Salidas: Grabar ‘Para’ en SD, activar los pines de control de los motores para que éstos se queden parados. Proceso: Se graba ‘Para’ en la tarjeta SD y se activan los pines de control de los motores para que éstos se queden parados. Inicio función Para Escribir Para en SD Paramos velocidad motores Fin función Para ROBOT MATRICIAL I. Mena Benito 113 3.3.5.2. FUNCIONES DE MOVIMIENTO Y DECISIÓN Función ajuste Esta función hace que el robot se ajuste con la pared mediante sus dos sensores izquierdos Entradas: Distancia del sensor izquierdo delantero (cm1), distancia del sensor izquierdo trasero (cm2), flagajuste. Salidas: ajusteizquierda, ajustederecha, flagajuste, para Proceso: El robot ajusta a la izquierda o a la derecha para ponerse paralelo a la pared; esto lo hace comprobando con los sensores de la izquierda (cm1 y cm2). Cuando los sensores marcan lo mismo, el robot se para y pone el flagajuste a 1. flagajuste==0 cm1<3000 & cm2<3000 cm2>cm1cm1>cm2 cm1==cm2 ajusteizqui verdadero ajustedcha verdadero flagajuste=1 verdadero flagajuste=1 falso flagajuste=1 para Inicio función Ajuste Inicializamos variables cm1=0 cm2=0 Fin función Ajuste Calculamos distancia a pared del sensor izquierdo delantero y del trasero. verdadero falso falso falso falso ROBOT MATRICIAL I. Mena Benito 114 Función Busca Pared Cuando el robot está a más de 40cm de cualquier pared, éste busca la más cercana, se aproxima a ella y se pone en posición de ‘Seguir Izquierda’. Entradas: Distancia del sensor izquierdo delantero (cm1), distancia del sensor delantero (cm3), distancia del sensor delantero mirando a la derecha (cm4). Salidas: Ajusta servo a 0º y 90º a la derecha. Giro izquierda total, para, delante, giro derecha total. Proceso: El robot mira si hay alguna pared más cerca de 40cm en alguna de las direcciones. Si no es así mira cuál de todas (frente, derecha e izquierda) está más cerca de su posición. Según la que esté más cerca toma la decisión de acercarse a ella (girando si es necesario) hasta que se encuentra con ella de frente, después girará a la derecha y así estará con sus sensores en posición de seguir la pared izquierda. ROBOT MATRICIAL I. Mena Benito 115 Inicio función busca pared Calculamos distancia a pared con sensor delantero izquierdo Calculamos distancia a pared con sensor delantero Ajusta servomotor 90º derecha Calculamos distancia a pared con sensor delantero Ajusta servomotor 0º cm1>40 & cm3>40 & cm4>40 cm1<cm3 & cm1<cm4 & flagpared==0 verdadero Giro Izquierda Total verdadero cm3>20 Calculamos distancia a la pared con sensor delantero verdadero para falso flagpared=1 cm3<cm1 & cm3<cm4 & flagpared==0 cm3>20 Calculamos distancia a la pared con sensor delantero verdadero Delante Delante para falso flagpared=1 cm4<cm1 & cm4<cm3 & flagpared==0 verdadero Giro Derecha Total verdadero cm3>20 Calculamos distancia a la pared con sensor delantero verdadero Delante para falso falso flagpared=0 falso Giro Derecha Total para Fin función busca pared falso ROBOT MATRICIAL I. Mena Benito 116 Función Seguir Izquierda Esta función hace que el robot siga una pared que se encuentra a la izquierda. Entradas: flag1, flag2, distancia del sensor izquierdo delantero (cm1), distancia del sensor izquierdo trasero (cm2). Salidas: delante, para, giro derecha, giro izquierda, delante izquierda, delante derecha, flagizquierda. Proceso: Dependiendo del flag1 y del flag2 el robot sigue la pared de la izquierda; dependiendo de su distancia a la pared el robot avanza hacia adelante, corrigiendo a la izquierda, corrigiendo a la derecha, girando a la izquierda o a la derecha. Además, siempre va mirando si tiene un obstáculo enfrente. flag1==0 Mirar Frente verdadero Calculamos distancia a pared con sensor delantero izquierdo cm1>=15 & cm1<=20 Calculamos distancia a pared con sensor trasero izquierdo verdadero cm1>cm2 Delante Izquierda verdadero Delante Derecha falso cm1<15 Giro Derecha cm1>20 Giro Izquierda cm1>30 flag1=1 verdadero falso falso Inicio función Seguir Izquierda flag2==0 falso Calculamos distancia a pared con sensor trasero izquierdo verdadero Delante cm2>30 flag2=1 verdadero falso Para falso flagizquierda=0 Decisión Giro Fin Función Seguir Izquierda verdadero verdadero falso falso ROBOT MATRICIAL I. Mena Benito 117 Función Mirar Enfrente Esta función hace que el robot mire para detectar un posible obstáculo enfrente. Si es así, también mira a la derecha. Después de tener toda la información toma una decisión. Entradas: Distancia del sensor delantero (cm3) Salidas: Ajusta el servomotor a 0º y a 90º a la derecha, flagfrente, flagderecha, flagencerrado Proceso: Se ajusta el servomotor a 0º, se inicializan los flags, se comprueba por 2 veces que no hay obstáculo enfrente (por posibles derivas del robot). Se activa el flagfrente si hay obstáculo enfrente. Después de parar y ajustar el robot, el servo giro 90º a la derecha y se comprueba si hay obstáculo en ese lugar. Se llama a la función ‘Decisión de Giro’ y si el robot está encerrado se activan los flags y se llama a la interrupción ‘Encerrado’ ROBOT MATRICIAL I. Mena Benito 118 falso Ajusta servomotor 0º flagfrente=0 flagderecha=0 flagencerrado=0 Calculamos distancia a pared con sensor delantero cm3<15 para verdadero ajuste Calculamos distancia a pared con sensor delantero cm3<15 para verdadero ajuste flagfrente=1 Ajusta servomotor 90º derecha Calculamos distancia a pared con sensor delantero cm3<20 flagderecha=1 flagencerrado=1 verdadero para decisiongiro falso Inicio función mirar enfrente Fin función mirar enfrente falso ROBOT MATRICIAL I. Mena Benito 119 Función Decisión Giro Toma una decisión para el giro. Entradas: Distancia del sensor izquierdo delantero (cm1), distancia del sensor izquierdo trasero (cm2). Salidas: Proceso: Según la información de los ultrasonidos con cm1 y cm2, se llama a la función ‘No Pared Derecha’ o a ‘No Pared Izquierda’. Inicio Función Decisión de Giro Calculamos distancia a pared con sensor delantero izquierdo cm1>30 Calculamos distancia a pared con sensor trasero izquierdo verdadero cm2>50 No Pared Izquierda verdadero No Pared Derecha falso Fin Función Decisión de Giro falso ROBOT MATRICIAL I. Mena Benito 120 Función No Pared Izquierda El robot realiza un giro a la izquierda cuando éste no encuentra obstáculo en ese lugar. Entradas: Flagizquierda, distancia del sensor izquierdo trasero (cm2). Salidas: El robot ajusta, para, gira total a la izquierda, para. Se activa ‘flagizquierda’ si es necesario. Proceso: Se comprueba que ‘flagizquierda’ está a 0, si es así el robot ajusta, para, gira total a la izquierda, para, comprueba la distancia que hay enfrente y avanza hacia adelante para ver si encuentra un obstáculo; cuando acaba activa ‘flagizquierda’ a 1. Inicio función no pared izquierda flagizquierda==0 ajuste verdadero para Giro Izquierda Total para Calculamos distancia a pared con sensor delantero izquierdo cm2>=30 Mirar Enfrente verdadero Calculamos distancia a pared con sensor delantero izquierdo Delante flagizquierda=1 falso Fin función no pared izquierda falso ROBOT MATRICIAL I. Mena Benito 127 3.3.6. INTERRUPCIONES En nuestro programa tenemos 3 interrupciones diferenciadas. Dos de estas interrupciones controlan las baterías de los motores y de Arduino. En cuanto una de estas baterías está por debajo de su nivel óptimo para el correcto funcionamiento de los dispositivos, se crea una interrupción. Esta interrupción mostrara el problema en la LCD, lo grabará en la SD y parará el programa y por tanto el robot. Una tercera interrupción se ocupa del problema de que el robot se encuentre encerrado (obstáculos enfrente, izquierda y derecha). En este caso la interrupción mostrará el problema en la LCD, lo grabará en la SD y parará el programa y por tanto el robot. A continuación se muestran los diagramas de flujo de las 3 interrupciones de nuestro programa: Interrupción Batería Arduino Llama a la interrupción ante la falta de batería de Arduino y sus componentes. Entradas: Salidas: Graba en SD el nivel de las baterías del Arduino. Mensaje de alerta en SD y LCD. Parar el robot. Proceso: La función para el robot. Graba en SD el nivel de las baterías del Arduino y muestra un mensaje de alerta en LCD. ROBOT MATRICIAL I. Mena Benito 128 Inicio función Interrupción Bateria Arduino para Escribir voltios Batería Arduino en SD limpiarLCD==0 Limpiar pantalla LCD verdadero limpiarLCD=1 Imprimir ALERTA ARDUINO BATERIA BAJA falso Cerrar escritura en SD Fin función Interrupción Bateria Arduino ROBOT MATRICIAL I. Mena Benito 129 Interrupción Batería Motores Llama a la interrupción ante la falta de batería de los motores. Entradas: Salidas: Graba en SD el nivel de las baterías de los motores. Mensaje de alerta en SD y LCD. Parar el robot. Proceso: La función para el robot. Graba en SD el nivel de las baterías de los motores y muestra un mensaje de alerta en LCD. Inicio función Interrupción Bateria Motores para Escribir voltios Batería Motores en SD limpiarLCD==0 Limpiar pantalla LCD verdadero limpiarLCD=1 Imprimir ALERTA MOTORES BATERIA BAJA falso Cerrar escritura en SD Fin función Interrupción Bateria Arduino ROBOT MATRICIAL I. Mena Benito 130 Interrupción Encerrado Llama a la interrupción al encontrarse el robot encerrado. Entradas: Salidas: Grabar en SD el nivel de las baterías. Mensaje de alerta en SD y LCD. Parar el robot. Proceso: La función para el robot. Graba en SD el nivel de las baterías además de un mensaje de alerta. Muestra un mensaje de alerta en LCD. Inicio función Interrupción Encerrado para Escribir voltios Batería Arduino en SD limpiarLCD==0 Limpiar pantalla LCD verdadero limpiarLCD=1 Imprimir ALERTA ENCERRADO en LCD falso Fin función Interrupción Bateria Arduino Escribir voltios Batería Arduino en SD Cerrar escritura en SD ROBOT MATRICIAL I. Mena Benito 131 3.4. PROTOCOLOS DE COMUNICACIÓN 3.4.1. COMUNICACIÓN SERIE La comunicación serie se basa en 2 cables que llamaremos Rx y Tx, que todo dispositivo de comunicación serie lleva. Éstos permiten entablar una conversación entre varios microprocesadores. El microcontrolador manda las instrucciones mediante Tx y otro microcontrolador, que las interpreta, las recibe con el receptor Rx, que las interpreta. La comunicación que se realiza es bidireccional, es decir, tanto un microcontrolador puede mandar instrucciones al otro como puede escucharlas; es más, dependiendo de la tecnología que uses, puedes trabajar desde ciertos terminales u otros. Este método es conocido como Comunicación Serial, e implica cambiar el voltaje de la conexión eléctrica entre el Transmisor y el Receptor a una velocidad específica. Cada Intervalo de tiempo representa un bit de información. El transmisor cambia el voltaje para enviar un valor de entre 0 y 1, el cual representa el bit en cuestión, y el receptor lee si el voltaje es high o low. Este ejemplo se basa en el Asynchronous Serial Communication, donde la velocidad de intercambio de bits es acordada de forma mutua y cronometrada de manera independiente entre el Transmisor y el Receptor. 14 3.4.2. USB (UNIVERSAL SERIAL BUS) El Bus en Serie Universal, más conocido por USB, es probablemente con diferencia la tecnología cableada más extendida para conectar entre sí toda clase de dispositivos. Fue diseñado inicialmente para estandarizar todo tipo de periféricos, como ratones, teclados, cámaras digitales, smartphones, reproductores multimedia, etc. Hoy en día su campo de aplicación se extiende a cualquier dispositivo electrónico, desde automóviles a reproductores Blue-ray disc. 14 Blog DiegoTecnology.es - Diego Romano Ubalde ROBOT MATRICIAL I. Mena Benito 132 FIGURA 72: LOGOTIPO DE USB El USB es un interfaz de tipo cable, que sirve a todas las necesidades de interconexión, permitiendo, conectar hasta 127 dispositivos por puerto, y que trabaja con tecnología de tipo Plug&Play y Hot-Plug, por lo que los periféricos que utilizan esta tecnología no necesitan de ninguna clase de configuración a la hora de ser conectados a, por ejemplo, un ordenador o una Smart TV. Además, al igual que con FireWire, no es necesario reiniciar el ordenador o apagar la televisión para hacer conexiones y desconexiones -Hot-Plug-. El USB utiliza un conector de 4 polos, siendo la transferencia de datos llevada a cabo por medio de dos líneas de señales diferentes (D+, D-). Existe también una línea de tierra y una línea para la tensión de alimentación (VBus = 5V). La señal diferencial en el USB es al menos de 1V. No existe señal de frecuencia, sino que está se genera a partir del propio flujo de datos. FIGURA 73: CABLEADO DE UN USB La entrada máxima de corriente a través del bus es de 500 mA, de modo que algunos dispositivos requieren una alimentación adicional para su funcionamiento. Esto no afecta a dispositivos estándar, como puede ser un ratón o un teclado, ya que estos reciben la tensión de servicio necesaria del propio ordenador a través del cable USB. Cada unidad USB recibe una dirección propia, la cual es asignada por el host USB, siendo posible un máximo de 127. 15 15 Tecnomatica: http://lochnessh.wordpress.com/ ROBOT MATRICIAL I. Mena Benito 133 3.4.3. COMUNICACIÓN I2C 3.4.3.1. INTRODUCCIÓN El bus I2C, un estándar que facilita la comunicación entre microcontroladores, memorias y otros dispositivos con cierto nivel de "inteligencia", sólo requiere de dos líneas de señal y un común o masa. Fue diseñado a este efecto por Philips y permite el intercambio de información entre muchos dispositivos a una velocidad aceptable de unos 100 Kbits por segundo, aunque hay casos especiales en los que el reloj llega hasta los 3,4 MHz. La metodología de comunicación de datos del bus I2C es en serie y sincrónica. Una de las señales del bus marca el tiempo (pulsos de reloj) y la otra se utiliza para intercambiar datos. Descripción de las señales  SCL (System Clock) es la línea de los pulsos de reloj que sincronizan el sistema.  SDA (System Data) es la línea por la que se mueven los datos entre los dispositivos.  GND (Masa) es el común de la interconexión entre todos los dispositivos "enganchados" al bus. Las líneas SDA y SCL son del tipo ‘drenaje abierto’, es decir, de un estado similar al de colector abierto, pero asociadas a un transistor de efecto de campo (o FET). Se deben polarizar en estado alto (conectando a la alimentación por medio de resistores "pull-up"), lo que define una estructura de bus que permite conectar en paralelo múltiples entradas y salidas. FIGURA 74: ESTRUCTURA DE UN BUS SDA Y SCL El diagrama es suficientemente autoexplicativo. Las dos líneas del bus están en un nivel lógico alto cuando están inactivas. En principio, el número de dispositivos que se puede conectar al bus no tiene límites, aunque hay que observar que la capacidad máxima sumada de todos los dispositivos no supere los 400 pF. El valor de los resistores de polarización no es muy crítico, ROBOT MATRICIAL I. Mena Benito 134 y puede ir desde 1K8 (1.800 ohms) a 47K (47.000 ohms). Un valor menor de resistencia incrementa el consumo de los integrados, pero disminuye la sensibilidad al ruido y mejora el tiempo de los flancos de subida y bajada de las señales. Los valores más comunes en uso están entre 1K8 y 10K. 3.4.3.2. PROTOCOLO I2C Habiendo varios dispositivos conectados sobre el bus, es lógico que para establecer una comunicación a través de él se deba respetar un protocolo. Digamos, en primer lugar, lo más importante: existen dispositivos maestros y dispositivos esclavos. Sólo los dispositivos maestros pueden iniciar una comunicación. La condición inicial, de bus libre, es cuando ambas señales están en estado lógico alto. En este estado cualquier dispositivo maestro puede ocuparlo, estableciendo la condición de inicio (start). Esta condición se presenta cuando un dispositivo maestro pone en estado bajo la línea de datos (SDA), pero dejando en alto la línea de reloj (SCL). FIGURA 75: SECUENCIA DE INICIO EN I2C El primer byte que se transmite luego de la condición de inicio contiene siete bits que componen la dirección del dispositivo que se desea seleccionar, y un octavo bit que corresponde a la operación que se quiere realizar con él (lectura o escritura). Si el dispositivo cuya dirección corresponde a la que se indica en los siete bits (A0-A6) está presente en el bus, éste contesta con un bit en bajo, ubicado inmediatamente luego del octavo bit que ha enviado el dispositivo maestro. Este bit de reconocimiento (ACK) en bajo le indica al dispositivo maestro que el esclavo reconoce la solicitud y está en condiciones de comunicarse. Aquí la comunicación se establece en firme y comienza el intercambio de información entre los dispositivos. FIGURA 76: INTERCAMBIO DE INFORMACIÓN EN I2C Si el bit de lectura/escritura (R/W) fue puesto en esta comunicación a nivel ROBOT MATRICIAL I. Mena Benito 135 lógico bajo (escritura), el dispositivo maestro envía datos al dispositivo esclavo. Esto se mantiene mientras continúe recibiendo señales de reconocimiento, y el contacto concluye cuando se hayan transmitido todos los datos. FIGURA 77: : SECUENCIA DE PARADA EN I2C 3.4.3.3. DEFINICIÓN DE TÉRMINOS  Maestro (Master): Dispositivo que determina los tiempos y la dirección del tráfico en el bus. Es el único que aplica los pulsos de reloj en la línea SCL. Cuando se conectan varios dispositivos maestros a un mismo bus la configuración obtenida se denomina "multi-maestro".  Esclavo (Slave): Todo dispositivo conectado al bus que no tiene la capacidad de generar pulsos de reloj. Los dispositivos esclavos reciben señales de comando y de reloj generados desde el maestro.  Bus libre (Bus Free): Estado en el que ambas líneas (SDA y SCL) están inactivas, presentando un estado lógico alto. Es el único momento en que un dispositivo maestro puede comenzar a hacer uso del bus.  Comienzo (Start): Se produce cuando un dispositivo maestro ocupa el bus, generando la condición. La línea de datos (SDA) toma un estado bajo mientras que la línea de reloj (SCL) permanece alta.  Parada (Stop): Un dispositivo maestro puede generar esta condición, dejando libre el bus. La línea de datos y la de reloj toman un estado lógico alto.  Dato válido (Valid Data): Situación presente cuando un dato presente en la línea SDA es estable al tiempo que la línea SCL está a nivel lógico alto.  Formato de Datos (Data Format): La transmisión de un dato a través de este bus consiste de 8 bits de dato (1 byte). A cada byte transmitido al bus le sigue un noveno pulso de reloj durante el cual el dispositivo receptor del byte debe generar un pulso de reconocimiento.  Reconocimiento (Acknowledge): El pulso de reconocimiento, conocido como ACK (del inglés Acknowledge), se logra colocando la línea de datos a un nivel lógico bajo durante el transcurso del noveno pulso de reloj.  Dirección (Address): Todo dispositivo diseñado para funcionar en este ROBOT MATRICIAL I. Mena Benito 136 bus posee su propia y única dirección de acceso, preestablecida por el fabricante. Hay dispositivos que permiten definir externamente parte de la dirección de acceso, lo que habilita que se pueda conectar en un mismo bus un conjunto de dispositivos del mismo tipo, sin problemas de identificación. La dirección 00 es la denominada "de acceso general"; a ésta responden todos los dispositivos conectados al bus.  Lectura/Escritura (Bit R/W): Cada dispositivo tiene una dirección de 7 bits. El octavo bit (el menos significativo), que se envía durante la operación de direccionamiento, completando el byte, indica el tipo de operación que hay que realizar. Si este bit es alto el dispositivo maestro lee información proveniente de un dispositivo esclavo. Si este bit es bajo, el dispositivo maestro escribe información en un dispositivo esclavo. 16 3.4.4. COMUNICACIÓN SPI El Bus SPI (Serial Peripheral Interface) es un estándar de comunicaciones, usado principalmente para la transferencia de información entre circuitos integrados en equipos electrónicos. El bus de interfaz de periféricos serie o bus SPI es un estándar para controlar casi cualquier dispositivo electrónico digital que acepte un flujo de bits serie regulado por un reloj. Incluye una línea de reloj, dato entrante, dato saliente y un pin de chip select, que conecta o desconecta la operación del dispositivo con el que uno desea comunicarse. De esta forma, este estándar permite multiplexar las líneas de reloj. 17 El SPI es un protocolo síncrono. La sincronización y la transmisión de datos se realizan por medio de 4 señales:  SCLK (Clock): Es el pulso que marca la sincronización. Con cada pulso de este reloj, se lee o se envía un bit. También es llamado TAKT (en alemán).  MOSI (Master Output Slave Input): Salida de datos del Master y entrada de datos al Slave. También es llamada SIMO.  MISO (Master Input Slave Output): Salida de datos del Slave y entrada al Master. También es conocida por SOMI.  SS/Select: Para seleccionar un Slave, o para que el Master le diga al Slave que se active. También es llamada SSTE. La Cadena de bits es enviada de manera síncrona con los pulsos del reloj, es decir, con cada pulso el Master envía un bit. Para que empiece la transmisión el Master baja la señal SSTE ó SS/Select a cero; con esto el Slave se activa y empieza la transmisión, con un pulso de reloj al mismo tiempo que el primer bit es leído. 16 Comunicación Bus I2C – Eduardo J.Carletti 17 Serial Peripherical Interface (SPI) – Universidad Fermín Toro ROBOT MATRICIAL I. Mena Benito 143 todas formas calculamos el grosor de la pista de la siguiente manera:  Vamos a seguir el estándar general para diseños de circuitos impresos ANSI-IPC 2221, que podréis encontrar en los anexos.  Para conocer el ancho de la pista en una PCB, necesitamos tres datos de entrada: o Corriente máxima que puede circular por la pista (Calculado en unos 4.16A). o El incremento máximo de temperatura que puede soportar la pista (depende de las especificaciones de uso que deseemos, 25°C ambientales y 60°C para temperatura de la pista). o El grosor de la pista (viene fijada por la PCB que compremos, en nuestro caso el grosor de la pista (alto) es de 35µ).  Una vez que ya tenemos las especificaciones deseadas, ya podremos aplicar las fórmulas para el cálculo del ancho de pista. o Fórmula 1 378.1*L Área Ancho   Donde L representa al grosor de la pista, en nuestro caso 35µ.  El ancho resultante se expresará en mils al cuadrado (Milésima parte de una pulgada). Para calcular el área utilizaremos la siguiente fórmula: o Fórmula 2 3 1 2 *1 k k Tk I Área          Donde I representa la corriente máxima.  K1 es la constante definida por el estándar que estamos aplicando que es 0.0647 para nuestra pista exterior; si fuera interior (más de 2 caras), el coeficiente sería distinto.  K2 es la constante que vale 0,4281 en nuestra pista exterior, otro coeficiente para caras internas.  K3 es la última constante, que es de 0.6732 en nuestra PCB y de otro valor con pistas internas. ROBOT MATRICIAL I. Mena Benito 144 Si sustituimos la fórmula 2 en la fórmula 1, obtendríamos la siguiente ecuación: 378.1* *1 3 1 2 L Tk I Ancho k k        Una vez que tenemos esta ecuación, ya podemos resolverla y obtener nuestro valor de ancho de pista, para nuestra PCB es de 35µ. mils mm C A Ancho 66.203 378.1*0002.0 º35*0647.0 62.4 6732.0 1 4281.0         Es un ancho demasiado elevado, porque hemos seleccionado los 4.62A que tenemos en los picos, pero no sería tan elevado en promedio; y al tener estos picos tan poco tiempo, decidimos bajar los amperios a una medida media de 1A, aunque nuestro promedio de corriente es de 300mA. De esta manera el ancho que obtenemos es de: milsAncho 970.20 Ahora con el ancho de la pista calculado, ya podremos realizar el diseño de la PCB en el programa Ares de Proteus. Una vez que hemos realizado el esquema del sistema en la herramienta Isis de Proteus, nos disponemos a realizar la PCB en Ares. Teniendo los componentes seleccionados, automáticamente se seleccionan los encapsulados en Ares, de tal forma que colocándolos en las medidas deseadas de la placa (sería routearlo directamente) el ancho de pista elegido ha sido de 25mils. Uno de los problemas que hemos tenido a la hora de realizar la PCB en el Ares, es que queríamos realizar un diseño pequeño y funcional, y así poder colocarlo en el robot ocupando el menor espacio posible. El problema es que de esta manera las pistas se encontrarían muy juntas y no podríamos realizar los taladros para soldar el encapsulado del L293D. Por lo que finalmente, ampliamos la placa para poder mejorar el diseño. Tras colocar los componentes y routear la placa con las condiciones básicas, de no crear ángulos rectos y dejar una medida mínima tanto entre pistas como entre pista y componente, realizamos un enrejado GND y unos taladros, tanto en las esquinas como en lugares interiores, para poder tener más opciones de acoplamiento con nuestro chasis. El diseño final es el siguiente: ROBOT MATRICIAL I. Mena Benito 145 FIGURA 82: DISEÑO FINAL DE LA PCB Las características finales de la PCB son las siguientes: FIGURA 83: CARACTERÍSTICAS FINALES DE LA PCB ROBOT MATRICIAL I. Mena Benito 146 En 3D, la PCB quedara de esta manera: FIGURA 84: VISIÓN DE LA PCB EN 3D Tras realizar el diseño, falta insolar la PCB, primero tendremos que imprimir en papel cebolla las pistas y los Pads para después poder realizar los taladros. Tenemos que tener muy en cuenta cómo realizamos la impresión, sabiendo que tenemos que imprimir la cara de las pistas y pads y realizarlo en Mirror (espejo), pues si no a la hora de insolar la placa quedara al revés, y los pads no coincidirán con los pines de los componentes. Después necesitamos insolar la placa en una insoladora entre 3 y 5 minutos. Tras insolar la placa, la lavamos bien bajo el agua, para a continuación atacarla con el ácido. Cuando la atacamos con el ácido, tenemos muchas precauciones, tanto para no atacarla demasiado y que las pistas se queden incompletas, como atacarla poco y que no se quite el cobre sobrante. Una vez terminado el atacado, la lavamos de nuevo con agua y con alcohol vamos frotando bien toda la superficie para limpiarla de toda impureza que haya podido quedar. ROBOT MATRICIAL I. Mena Benito 147 FIGURA 85: PCB INSOLADA Ya insolada y atacada, nos disponemos a realizar los taladros, utilizando diferentes diámetros de broca según el Pad taladrado. Sólo nos queda soldar los componentes, teniendo en cuenta la colocación correcta, pues los diodos y el encapsulado tienen su colocación determinada. La apariencia final de la PCB conectada a los motores es ésta: FIGURA 86: PCB CONECTADA A LOS MOTORES PARA PRUEBAS ROBOT MATRICIAL I. Mena Benito 148 4.2. CONSUMOS A la hora de realizar el cálculo de los consumos, primero realizamos la conexión por partes de los elementos para poder saber lo que consumiría cada dispositivo individualmente. Los consumos los calculamos mediante la medida en serie de la corriente con el dispositivo. Los consumos son los siguientes: DISPOSITIVO CANTIDAD CONSUMO (mA) CONSUMO TOTAL (mA) LCD 1 36 36 RTC 1 4 4 ULTRASONIDOS 3 10.8 32.4 SERVO MOTOR 1 PICO 30 PARADO 4 PICO 30 PARADO 4 LECTOR SD 1 PICO 30 GRABAR 6 STANDBY 4 PICO 30 GRABAR 6 STANDBY 4 ARDUINO 1 6 6 CONTROL DE MOTORES 1 160 160 TOTAL PEOR CASO 298.4 TOTAL STANDBY 86.4 TABLA 5: CONSUMOS DE LOS DISPOSITIVOS El consumo de los motores está anteriormente calculado en el punto 3.4.1. Pistas, donde tenemos una tabla con las corrientes de los motores en cada situación de funcionamiento. Como vemos en la tabla, en el peor de los casos el consumo es de 298.4 mA. Esto nunca se mantendrá constante, pues no siempre tenemos los motores a la máxima velocidad, ni los dispositivos están en el funcionamiento extremo. Nuestras baterías son de 1300mAH, por lo que podríamos trabajar a máxima potencia en torno a 4 horas. ROBOT MATRICIAL I. Mena Benito 149 4.3. RECTAS BATERÍAS Los packs de baterías que alimentan los motores y Arduino pueden llegar a 8.2v, puesto que la máxima lectura analógica que puede realizar Arduino es de 5v. Hemos tenido que bajar está tensión para que Arduino pueda leerla. De esta manera hemos realizado dos divisores de tensión idénticos para bajar esta tensión y que Arduino pueda leerla. A continuación se muestra un esquema de uno de estos divisores de tensión: FIGURA 87: CIRCUITO DIVISOR DE TENSIÓN FIGURA 88: CIRCUITOS DIVISORES DE TENSIÓN EN NUESTRO ROBOT Hemos utilizado un margen de seguridad amplio para no tener problemas con la lectura analógica de Arduino. La máxima tensión que llega a la entrada analógica de Arduino es de 1.92v cuando se le alimenta con 8.2v. ROBOT MATRICIAL I. Mena Benito 150 El convertidor que utiliza Arduino es de 1023 bits cuando a éste le llegan 5v. Como nosotros le vamos a meter 1.92v esto nos da un total de 533 bits. Por lo tanto podemos decir que con una tensión de 8.2v nuestro Arduino tendría 533 bits. De esta manera obtenemos también otra segunda medida, donde 7v equivaldrían a 455 bits. A partir de estos dos puntos y aplicando punto pendiente, podemos llegar a la ecuación de la recta: FIGURA 89: RECTA DE CONVERSIÓN DE VOLTIOS A BITS Mediante esta ecuación controlamos las baterías de ambos dispositivos, y hacemos que no bajen de un nivel óptimo para su funcionamiento. En el caso de los motores, este voltaje límite es 7.2v, y para el caso de Arduino junto con sus componentes es de 6.6v. Si alguno de estos voltajes bajara de su nivel óptimo de funcionamiento, se mostraría un mensaje de error en la pantalla LCD y además se grabaría en la tarjeta SD. FIGURA 90: MENSAJES DE ALERTA POR LA FALTA DE BATERÍA DE LOS MOTORES Y ARDUINO Recta de conversion Voltios a Bits 0 100 200 300 400 500 600 6,8 7 7,2 7,4 7,6 7,8 8 8,2 Voltios Bits y=65,55x-3,85 ROBOT MATRICIAL I. Mena Benito 151 4.4. RECTAS PWM El par de los motores va variando según la carga que tengan las baterías. Entonces, para controlar el PWM hemos realizado dos ecuaciones diferenciadas. Primeramente hemos visto que la descarga de nuestra batería en el rango óptimo de funcionamiento de motores y Arduino se comporta de manera casi lineal: FIGURA 91: GRÁFICA DE DESCARGA DE BATERÍA Sabiendo que su descarga es lineal y conociendo la carga de las baterías, calculamos el PWM necesario para el giro de cada motor. Como ya habíamos comentado los motores no tienen el mismo par, y por lo tanto tenemos que crear ecuaciones y gráficas diferentes para cada motor. Motor derecho: FIGURA 92: GRÁFICA DE CONVERTIDOR DE BITS A PWM (MOTOR DERECHO) Convertidor Bits a PWM (Motor Derecho) 0 20 40 60 80 100 120 140 160 440 450 460 470 480 490 500 510 520 530 540 Bits PWM y=-0,288x+278,04 ROBOT MATRICIAL I. Mena Benito 152 Motor Izquierdo: FIGURA 93: GRÁFICA DE CONVERTIDOR DE BITS A PWM (MOTOR IZQUIERDO) Convertidor de Bits a PWM (Motor Izquierdo) 0 20 40 60 80 100 120 140 440 450 460 470 480 490 500 510 520 530 540 Bits PWM y=-0,254x+240,68