Diseño y construcción de un robot de rastreo microcontrolado

Diseño y construcción de un robot de rastreo microcontrolado TITULACIÓN: Ingeniería técnica industrial especializada en electrónica industrial AUTOR

11 downloads 58 Views 3MB Size

Recommend Stories


Estructura de un robot industrial
Estructura de un robot industrial • • • Componentes Características principales Configuraciones morfológicas del manipulador Componentes Como se ade

ENAiKOON Sensor de rastreo de combustible
ENAiKOON Sensor de rastreo de combustible 01.02.2016 1 TABLA DE CONTENIDO 1 TABLA DE CONTENIDO .....................................................

Manual de usuario Sistema de Rastreo MS03
Manual del usuario sistema de rastreo MS03 Manual de usuario Sistema de Rastreo MS03 V1 Dude Where is My SA de CV Te:(55)5341-3147 soporte@tra

Rastreo de Imágenes y Reconstrucción de Volúmenes de Ultrasonido Médico
´ ORIGINAL ART´ICULO DE INVESTIGACION Vol. 33, N´ um. 2, Diciembre, 2012, pp. 101-115 Rastreo de Im´ agenes y Reconstrucci´ on de Vol´ umenes de Ult

UN ROBOT PARA UN ABP EN LAS INGENIERÍAS INFORMÁTICAS
UN ROBOT PARA UN ABP EN LAS INGENIERÍAS INFORMÁTICAS 1 J. OLIVER1, M. PRIM1 Y R. TOLEDO2 Departament de Microelectrònica i Sistemes Electrònics. Esco

CONTROL DE UN ROBOT HUMANOIDE UTILIZANDO MOTION RETARGETING
Control de un robot humanoide utilizando Motion Retargeting. Medina y Capacho. CONTROL DE UN ROBOT HUMANOIDE UTILIZANDO MOTION RETARGETING CONTROL OF

Story Transcript

Diseño y construcción de un robot de rastreo microcontrolado

TITULACIÓN: Ingeniería técnica industrial especializada en electrónica industrial

AUTOR: David del Castillo Sánchez DIRECTOR: Enrique Canto Navarro

FECHA: 09/2013.

Diseño y construcción de un robot de rastreo microcontrolado

Documento núm. 0: ÍNDICE GENERAL

AUTOR: David del Castillo Sánchez

Página 2 de 115

Índice general Documento núm. 0: ÍNDICE GENERAL ............................................................ 2 Documento núm. 1: MEMORIA .......................................................................... 7 Índice de memoria .................................................................................................... 8 1.1.

Objetivos del proyecto .................................................................................. 10

1.2.

Alcance ......................................................................................................... 10

1.3.

Requisitos de diseño ..................................................................................... 10

1.4.

Diseño y análisis de soluciones ...................................................................... 11

1.4.1. Capacidad de superar terreno o superficies inestables ............................................ 11 1.4.1.1. Sistema de locomoción ......................................................................................... 11 a. Movilidad: ............................................................................................................. 11 b. Superación de obstáculos: ................................................................................... 11 c. Suspensión activa: ................................................................................................ 12 d. Eficiencia energética: ........................................................................................... 12 e. Terreno discontinuo: ............................................................................................ 12 f. Deslizaminetos: ..................................................................................................... 12 g. Velocidad media: .................................................................................................. 12 h. Mecánica y precio: ............................................................................................... 13 i. Algoritmos de control y electrónica ..................................................................... 13 j. Velocidad máxima ................................................................................................. 13 Conclusiones de sistema de locomoción .......................................................................... 13 1.4.1.2. Número de extremidades ...................................................................................... 14 1.4.1.3. Conclusiones de número de extremidades ........................................................... 15 1.4.1.4. Movimiento de locomoción del hexápodo............................................................ 15 1.4.1.5. Conclusiones de locomoción ................................................................................. 16 1.4.2. Diseño mecánico ....................................................................................................... 16 1.4.2.1. Diseño de las extremidades................................................................................... 16 1.4.2.2. Actuadores ............................................................................................................ 17 1.4.2.3. Diseño del cuerpo .................................................................................................. 20 1.4.2.4. Conclusiones de diseño mecánico: ........................................................................ 20 1.4.3. Sistema de control: El micro-controlador ................................................................. 20 1.4.3.1. Arquitectura del micro-controlador ...................................................................... 21 1.4.3.2. Unidad de memoria ............................................................................................... 22 1.4.3.3. Puertos de entrada salida ...................................................................................... 23 1.4.3.4. El oscilador ............................................................................................................ 23 1.4.3.5. Temporizadores ..................................................................................................... 23 1.4.3.6. Elección del micro-controlador ............................................................................. 24 1.4.3.7. El micro-controlador PIC 16F877A ........................................................................ 25 1.4.3.8. Herramientas del micro-controlador..................................................................... 26 1.4.3.9. Lenguaje del PIC .................................................................................................... 27 1.4.3.10. Hardware de programación de PICS .................................................................... 29 1.4.3.11. Software para la programación de PICS .............................................................. 30 1.4.3.12. Conclusiones sistema de control, el micro-controlador ...................................... 30 1.4.4. Sistema de comunicación de órdenes ....................................................................... 31 1.4.4.1. Emisor de radiofrecuencia:.................................................................................... 32 1.4.4.2. Receptor de radiofrecuencia ................................................................................. 34 1.4.4.3. Conclusiones de sistema de control: ..................................................................... 34 1.4.5. Monitoreo en tiempo real ......................................................................................... 34 1.4.5.1. Conclusiones de monitoreo en tiempo real: ......................................................... 35

Página 3 de 115

1.4.6. Materiales de construcción para el robot ................................................................. 35 1.4.6.1. Conclusiones materiales de construcción para el robot: ...................................... 35 1.4.7. Sistema de alimentación ........................................................................................... 36 1.4.7.1. Baterías de Niquel-Cadmio (Ni-Cd) ........................................................................ 36 1.4.7.2. Batería de níquel e hidruro metálico (Ni/MH)....................................................... 36 1.4.7.3. Baterías de Ni-Cd frente a Ni/MH.......................................................................... 37 1.4.7.4. Batería de iones de litio (Li-Ion) ............................................................................ 37 Ventajas............................................................................................................................. 38 Inconvenientes .................................................................................................................. 38 Cuidado de la batería li-ion ............................................................................................... 38 1.4.7.5. Conclusiones del sistema de alimentación ............................................................ 39 1.4.8. Resumen de conclusiones generales de análisis de soluciones ................................ 39

1.5.

Desarrollo ..................................................................................................... 39

1.5.1. Construcción de piezas estructurales ........................................................................ 39 1.5.2. Programación ............................................................................................................ 42 1.5.3. Circuito de control, diseño y desarrollo de la P.C.B. ................................................. 48 1.5.3.1. FASE 1: Diseño del circuito .................................................................................... 49 1.5.3.2. FASE 2: Diseño de la placa: .................................................................................... 50 1.5.3.3. FASE 3: Diseño de la placa: .................................................................................... 51

1.6.

Evaluaciones................................................................................................. 55

1.6.1. Pruebas de la placa P.C.B. ......................................................................................... 55 1.6.2. Pruebas de control de mecanismos y servomotores ................................................ 55 1.6.3. Pruebas de control para la comunicación de radiofrecuencia .................................. 55 1.6.3.1. Pruebas de comunicación módulo transmisor-receptor “Guanli” ........................ 55 1.6.3.2. Pruebas de comunicación módulo transmisor-receptor de video ........................ 56 1.6.4. Pruebas de control del robot hexápodo.................................................................... 57 1.6.5. Pruebas totales del sistema en función de la superficie ........................................... 58 1.6.5.1. Superficies lisas ..................................................................................................... 58 1.6.5.2. Superficies planas rugosas..................................................................................... 58 1.6.5.3. Superficies inestables ............................................................................................ 58 1.6.6. Alcances y limitaciones.............................................................................................. 58 1.6.6.1. Alcances ................................................................................................................. 58 1.6.6.2. Limitaciones........................................................................................................... 59

1.7.

Propuesta de mejoras ................................................................................... 59

1.7.1. 1.7.2. 1.7.3. 1.7.4. 1.7.5. 1.7.6. 1.7.7.

1.8.

Servomotores más potentes ..................................................................................... 59 Sistema de alimentación con fuente conmutada de CC a CC .................................... 59 Pulsadores en los extremos de las patas ................................................................... 60 Estructura mecánica .................................................................................................. 60 Visibilidad nocturna................................................................................................... 60 Código para subir escaleras ....................................................................................... 60 Radio-control y video-control de mayor alcance ...................................................... 60

Conclusiones................................................................................................. 61

Documento núm. 2: ANEXOS ........................................................................... 63 Índice de anexos ...................................................................................................... 64 2.1.

Código .......................................................................................................... 65

2.2.

Glosario de términos .................................................................................... 83

A .................................................................................................................................................. 83 B .................................................................................................................................................. 83 C .................................................................................................................................................. 83 D.................................................................................................................................................. 84 E .................................................................................................................................................. 84

Página 4 de 115

F .................................................................................................................................................. 84 H.................................................................................................................................................. 84 I ................................................................................................................................................... 84 L .................................................................................................................................................. 84 M................................................................................................................................................. 84 P .................................................................................................................................................. 85 R .................................................................................................................................................. 85 S .................................................................................................................................................. 86 T .................................................................................................................................................. 86

Documento núm. 3: PLANOS ............................................................................ 87 Índice de planos ...................................................................................................... 88 3.1.

Plano nº1 – Fémur ......................................................................................... 89

3.2.

Plano nº2 – Fémur en perspectiva isométrica ................................................. 90

3.3.

Plano nº3 – Tibia ........................................................................................... 91

3.4.

Plano nº4 – Tibia en perspectiva isométrica ................................................... 92

3.5.

Plano nº5 – Refuerzo ..................................................................................... 93

3.6.

Plano nº6 – Soporte para servos .................................................................... 94

3.7.

Plano nº7 – Soporte con servos en perspectiva isométrica .............................. 95

3.8.

Plano nº8 – Cuerpo ........................................................................................ 96

3.9.

Plano nº9 – Robot completo en perspectiva isométrica .................................. 97

Documento núm. 4: MEDICIONES Y PRESUPUESTO .................................... 99 Índice de mediciones y presupuesto........................................................................100 4.1.

Mediciones ..................................................................................................101

4.1.1. 4.1.2. 4.1.3. 4.1.4. 4.1.5.

4.2.

Conductores eléctricos ............................................................................................ 101 Componentes electrónicos...................................................................................... 101 Materiales para estructuras, piezas y tornillería ..................................................... 102 Sistema de alimentación ......................................................................................... 103 Productos químicos ................................................................................................. 103

Presupuesto .................................................................................................104

4.2.1. Precios unitarios ...................................................................................................... 104 4.2.2. Presupuesto de material ......................................................................................... 105 4.2.3. Cuadro de descompuestos ...................................................................................... 106 4.2.3.1. Placa de circuito impreso .................................................................................... 106 4.2.3.2. Diseño y fabricación de piezas estructurales ...................................................... 107 4.2.3.3. Montaje robot hexápodo .................................................................................... 108 4.2.3.4. Programación de código y pruebas ..................................................................... 108 4.2.4. Presupuesto............................................................................................................. 109 4.2.4.1. Placa de circuito impreso .................................................................................... 109 4.2.4.2. Diseño y fabricación de piezas estructurales ...................................................... 109 4.2.4.3. Montaje robot hexápodo .................................................................................... 109 4.2.4.4. Programación de código y pruebas ..................................................................... 110 4.2.5. Resumen presupuesto............................................................................................. 110

Documento núm. 5: RECURSOS UTILIZADOS...............................................111 Índice de recursos utilizados ..................................................................................112 5.1. Software utilizado ........................................................................................................ 113 5.1.1. MPLAB IDE .............................................................................................................. 113

Página 5 de 115

5.1.2. EAGLE ..................................................................................................................... 113 5.1.3. Autodesk AutoCAD ................................................................................................. 113 5.1.4. PICpgm.................................................................................................................... 114 5.2. Web grafía .................................................................................................................... 114

En referencia al documento nº0, nombrado “ÍNDICE GENERAL”

Tarragona, Septiembre de 2013 EL AUTOR DEL PROYECTO

David del Castillo Sánchez Nº Colegiado 23111 Ingeniero Técnico Industrial especializado en electrónica Industrial

Página 6 de 115

Diseño y construcción de un robot de rastreo microcontrolado

Documento núm. 1: MEMORIA

AUTOR: David del Castillo Sánchez

Página 7 de 115

Índice de memoria Índice de memoria ............................................................................................... 8 1.1.

Objetivos del proyecto .............................................................................. 10

1.2.

Alcance ................................................................................................... 10

1.3.

Requisitos de diseño................................................................................. 10

1.4.

Diseño y análisis de soluciones ................................................................ 11

1.4.1.

Capacidad de superar terreno o superficies inestables ................................ 11

1.4.2.

Diseño mecánico ....................................................................................... 16

1.4.3.

Sistema de control: El micro-controlador.................................................... 20

1.4.4.

Sistema de comunicación de órdenes ......................................................... 31

1.4.5.

Monitoreo en tiempo real.......................................................................... 34

1.4.6.

Materiales de construcción para el robot ................................................... 35

1.4.1.1. Sistema de locomoción ............................................................................................. 11 a. Movilidad: ................................................................................................................. 11 b. Superación de obstáculos:........................................................................................ 11 c. Suspensión activa: .................................................................................................... 12 d. Eficiencia energética: ................................................................................................ 12 e. Terreno discontinuo: ................................................................................................ 12 f. Deslizaminetos:......................................................................................................... 12 g. Velocidad media: ...................................................................................................... 12 h. Mecánica y precio: .................................................................................................... 13 i. Algoritmos de control y electrónica ......................................................................... 13 j. Velocidad máxima .................................................................................................... 13 Conclusiones de sistema de locomoción ............................................................................... 13 1.4.1.2. Número de extremidades ......................................................................................... 14 1.4.1.3. Conclusiones de número de extremidades ............................................................... 15 1.4.1.4. Movimiento de locomoción del hexápodo ............................................................... 15 1.4.1.5. Conclusiones de locomoción ..................................................................................... 16 1.4.2.1. 1.4.2.2. 1.4.2.3. 1.4.2.4.

Diseño de las extremidades ...................................................................................... 16 Actuadores ................................................................................................................ 17 Diseño del cuerpo...................................................................................................... 20 Conclusiones de diseño mecánico:............................................................................ 20

1.4.3.1. 1.4.3.2. 1.4.3.3. 1.4.3.4. 1.4.3.5. 1.4.3.6. 1.4.3.7. 1.4.3.8. 1.4.3.9. 1.4.3.10. 1.4.3.11. 1.4.3.12. 1.4.4.1. 1.4.4.2. 1.4.4.3. 1.4.5.1.

Arquitectura del micro-controlador .......................................................................... 21 Unidad de memoria................................................................................................... 22 Puertos de entrada salida.......................................................................................... 23 El oscilador ................................................................................................................ 23 Temporizadores......................................................................................................... 23 Elección del micro-controlador ................................................................................. 24 El micro-controlador PIC 16F877A ............................................................................ 25 Herramientas del micro-controlador ........................................................................ 26 Lenguaje del PIC ........................................................................................................ 27 Hardware de programación de PICS ........................................................................ 29 Software para la programación de PICS ................................................................... 30 Conclusiones sistema de control, el micro-controlador........................................... 30 Emisor de radiofrecuencia: ....................................................................................... 32 Receptor de radiofrecuencia ..................................................................................... 34 Conclusiones de sistema de control: ......................................................................... 34 Conclusiones de monitoreo en tiempo real: ............................................................. 35

Página 8 de 115

1.4.6.1.

Conclusiones materiales de construcción para el robot: .......................................... 35

1.4.7.

Sistema de alimentación ............................................................................ 36

1.4.8.

Resumen de conclusiones generales de análisis de soluciones .................... 39

1.4.7.1. Baterías de Niquel-Cadmio (Ni-Cd) ........................................................................... 36 1.4.7.2. Batería de níquel e hidruro metálico (Ni/MH) .......................................................... 36 1.4.7.3. Baterías de Ni-Cd frente a Ni/MH ............................................................................. 37 1.4.7.4. Batería de iones de litio (Li-Ion) ................................................................................ 37 Ventajas ................................................................................................................................. 38 Inconvenientes ....................................................................................................................... 38 Cuidado de la batería li-ion .................................................................................................... 38 1.4.7.5. Conclusiones del sistema de alimentación................................................................ 39

1.5.

Desarrollo ............................................................................................... 39

1.5.1.

Construcción de piezas estructurales .......................................................... 39

1.5.2.

Programación ............................................................................................ 42

1.5.3.

Circuito de control, diseño y desarrollo de la P.C.B. .................................... 48

1.5.3.1. 1.5.3.2. 1.5.3.3.

1.6.

FASE 1: Diseño del circuito ........................................................................................ 49 FASE 2: Diseño de la placa: ........................................................................................ 50 FASE 3: Diseño de la placa: ........................................................................................ 51

Evaluaciones ............................................................................................ 55

1.6.1.

Pruebas de la placa P.C.B. .......................................................................... 55

1.6.2.

Pruebas de control de mecanismos y servomotores.................................... 55

1.6.3.

Pruebas de control para la comunicación de radiofrecuencia ...................... 55

1.6.4.

Pruebas de control del robot hexápodo...................................................... 57

1.6.5.

Pruebas totales del sistema en función de la superficie............................... 58

1.6.6.

Alcances y limitaciones .............................................................................. 58

1.6.3.1. 1.6.3.2.

1.6.5.1. 1.6.5.2. 1.6.5.3. 1.6.6.1. 1.6.6.2.

1.7.

Pruebas de comunicación módulo transmisor-receptor “Guanli” ............................ 55 Pruebas de comunicación módulo transmisor-receptor de video ............................ 56

Superficies lisas ......................................................................................................... 58 Superficies planas rugosas ........................................................................................ 58 Superficies inestables ................................................................................................ 58 Alcances..................................................................................................................... 58 Limitaciones .............................................................................................................. 59

Propuesta de mejoras ............................................................................... 59

1.7.1.

Servomotores más potentes ...................................................................... 59

1.7.2.

Sistema de alimentación con fuente conmutada de CC a CC ........................ 59

1.7.3.

Pulsadores en los extremos de las patas ..................................................... 60

1.7.4.

Estructura mecánica .................................................................................. 60

1.7.5.

Visibilidad nocturna ................................................................................... 60

1.7.6.

Código para subir escaleras ........................................................................ 60

1.7.7.

Radio-control y video-control de mayor alcance ......................................... 60

1.8.

Conclusiones ........................................................................................... 61 Página 9 de 115

1.1.

Objetivos del proyecto

El objetivo del proyecto es diseñar y construir el prototipo de un robot hexápodo comandado por un sistema de control remoto por radiofrecuencia y monitoreo en tiempo real, diseñado para superar terrenos inestables o lugares de difícil acceso, utilizando un micro-controlador programado en lenguaje ensamblador. Este robot pretende ser una herramienta de apoyo a los cuerpos de seguridad, tanto bomberos como policías, en diferentes ámbitos: -

Casos donde hay edificios con la estructura dañada o parcialmente derrumbados, para ver si existen supervivientes, sin poner en peligro la vida de un bombero.

-

Casos donde hay amenaza de bomba, como método de rastreo seguro, sin poner en peligro la vida de ningún policía o artificiero durante la búsqueda.

Es por eso que todas las soluciones que se van a tener en cuenta para realizar este proyecto, estarán centradas en resolver los problemas que surjan para que este pueda desenvolverse de forma fluida y correcta en los dos casos anteriormente nombrados. La finalidad específica de este proyecto es mejorar mis conocimientos personales prácticos de la robótica móvil, concretamente programación de micro-controladores y diseño y construcción de placas de circuito integrado.

1.2.

Alcance

El proyecto se inicia desde cero. Eso implica que se hará el diseño y construcción de la estructura mecánica, el diseño y construcción de circuitos integrados y la programación del micro-procesador en lenguaje ensamblador. Cabe mencionar que se va a construir solamente el prototipo, va a ser por eso que se van a tomar soluciones muy económicas.

1.3.

Requisitos de diseño

Como hemos dicho en el apartado de “Objetivos del proyecto”, una de las finalidades del robot, y la más compleja, será ayudar en labores de rescate en edificios con la estructura dañada o parcialmente derrumbados. Con este robot se podrá comprobar si hay supervivientes sin poner en peligro la vida de uno o varios bomberos. Por lo tanto los requisitos de diseño vendrán dados en función de dicha finalidad. Estos serán los siguientes: • • • •

Capacidad de superar terreno o superficies inestables. Necesidad de ser comandado de forma inalámbrica. Monitoreo en tiempo real, para observar entorno. Bajo presupuesto

Para definir los requisitos nos hemos centrado en la finalidad más restrictiva o dificultosa, que es el rastreo entre escombros. Si el robot es capaz de desplazarse sobre terreno inestable, también será capaz de hacerlo sobre terreno llano y podrá cumplir también con las funciones de rastreo de edificios, aún intactos, por amenaza de bomba. Página 10 de 115

1.4.

Diseño y análisis de soluciones

1.4.1. Capacidad de superar terreno o superficies inestables 1.4.1.1.

Sistema de locomoción

La primera decisión a tomar es como se va a desplazar el robot. Para ello, vamos a ver los diferentes tipos de robots móviles que existen, clasificados según el sistema de locomoción: • •

Con ruedas o cintas de deslizamiento. Con patas.

Veamos algunas ventajas e inconvenientes de estos dos tipos de robots móviles, con el fin de tomar la mejor solución para nuestros objetivos: Ventajas de robots móviles articulados con patas respecto al de ruedas: a. Movilidad: Los robots con extremidades exhiben mayor movilidad que los que utilizan ruedas por que poseen intrínsecamente mecanismos de dirección omnidireccional. Eso significa que pueden cambiar de dirección sobre el eje principal del cuerpo tan solo moviendo sus apoyos. También pueden girar sobre los ejes de su cuerpo sin necesidad de levantar las extremidades apoyadas con solo mover sus articulaciones, es decir, puede rotar su cuerpo, inclinarlo y cambiar de posición como se indica en la figura 1.1.

FIGURA 1.1: MOVILIDAD b. Superación de obstáculos: Un robot con extremidades puede superar obstáculos que estén a baja altura en comparación con la altura del robot, donde un robot con ruedas quedaría atascado si el tamaño del obstáculo fuera mayor que el radio de la rueda.

FIGURA 1.2: SUPERACIÓN DE OBSTÁCULOS Página 11 de 115

c. Suspensión activa: Intrínsecamente un robot con extremidades posee suspensión por adaptación mediante la variación de la altura de su cuerpo con la posición de sus extremidades a un terreno irregular. De esta manera su movimiento puede ser más suave que un robot con ruedas pues este último siempre está paralelo al suelo adoptando posiciones similares al relieve del terreno. d. Eficiencia energética: Se ha vertido mucha tinta respecto a este tema, pero fue Gary Stanley Becker quien probó la teoría de Hutchinson que fue el primero en atreverse a decir que un robot con extremidades sería más eficiente energéticamente que uno con ruedas en un terreno altamente irregular. e. Terreno discontinuo: Los robots con ruedas requieren una superficie continua para desplazarse de manera eficiente. En principio los robots con extremidades no requieren un terreno continuo y pueden desplazarse por terrenos arenosos, fangoso, escarpado o liso.

FIGURA 1.3: TERRENO DISCONTINUO f. Deslizaminetos: Una rueda puede deslizar en una superficie por motivos de adherencia, en cambio, las extremidades de un robot suelen depositar el peso de forma directa sobre el suelo y las posibilidades de que resbale son menores. Dado que el movimiento va en la misma dirección que la resistencia, pero en sentido contrario, tal y como se puede ver en la siguiente figura.

FIGURA 1.4: DESLIZAMIENTOS g. Velocidad media: Un robot con extremidades puede superar pequeños obstáculos manteniendo la velocidad del cuerpo constante con un movimiento uniforme y rectilíneo. Página 12 de 115

FIGURA 1.5: VELOCIDAD MEDIA Inconvenientes de robots móviles articulados con patas: Los robots con extremidades también presentan una serie de problemas y desventajas que los ha mantenido fuera del uso industrial y de servicios. El primer problema es la complejidad, los robots con extremidades son más complejos que los que utilizan ruedas, sobre todo en lo referente a la electrónica y control. Otro problema es la velocidad y el más crítico el costo. h. Mecánica y precio: La rueda es un mecanismo extremadamente sencillo, sin embargo una extremidad consiste en varios enlaces y articulaciones. Una extremidad requiere al menos de tres actuadores para proveerla de dirección y tracción y permitir un movimiento completo. Un robot caminante con equilibrio estático requiere al menos cuatro extremidades, por lo tanto el número mínimo de actuadores es doce. No se está contemplando la posibilidad de robots bípedos puesto que el número mínimo de actuadores por pata no está concretamente definido, y se pretende definir un robot que pueda realizar movimientos en todas direcciones. Con lo cual, un sistema de locomoción por extremidades es más complejo y más caro que un sistema de locomoción por ruedas. i. Algoritmos de control y electrónica Un robot caminante debe coordinar la posición de todas sus articulaciones para realizar cualquier movimiento por lo que un robot caminante es sin duda más complejo que un robot con ruedas. j. Velocidad máxima Un mecanismo de locomoción por ruedas en superficie terrestre puede alcanzar una velocidad máxima conocida de 1.228 km/h alcanzada por el (Thrust SSC, 1997), mientras que el mecanismo por locomoción por extremidades más veloz conocido es el guepardo (animal) que alcanza los 113 km/h. Conclusiones de sistema de locomoción Vistas estas ventajas e inconvenientes, lo que se ajusta mejor a nuestras necesidades son los robots móviles articulados con patas. Respecto a todas sus ventajas es evidente que son necesarias para nuestro proyecto, ya que la mayor parte del tiempo este robot va a ser comandado sobre terreno inestable o irregular.

Página 13 de 115

En cuanto a sus inconvenientes, no son significativos. El hecho de que su velocidad máxima sea menor que un robot a ruedas no es importante, porque nuestro robot no necesita velocidad punta. Otro inconveniente es que es caro y complejo, pero, ¿cuánto dinero pagarías por la vida de un bombero? Y, ¿Cuántas horas de ingeniería le dedicarías? 1.4.1.2.

Número de extremidades

Una vez tomada esta decisión, surge la siguiente cuestión, el número de extremidades. Para tomar una decisión en este aspecto, veamos una clasificación de robots según el número de extremidades que tienen: •

Robots de una sola extremidad: La idea de un robot con una sola pierna puede resultar bastante extraña. Desde luego, su movimiento tiene que ser bastante extraño. Pero así es el prototipo que ha diseñado Toyota, el cual puede saltar y avanzar con solo esa pierna. La idea es conseguir un movimiento parecido al que hace una persona al correr, de forma que con dos piernas de estas se pueda obtener un robot que corra como un humano con naturalidad.

FIGURA 1.6: EJEMPLO ROBOT DE UNA EXTREMIDAD •

Robots bípedos: Es conocido en el mundo de la robótica la dificultad que subyace en el movimiento de un ser humano. El que un robot camine utilizando las dos piernas al igual que una persona no es una tarea sencilla, sobre todo por el problema que comporta el equilibrio. En 2011, un grupo de investigadores de la Universidad de Michigan presentaron a MABEL, el robot bípedo más rápido del mundo capaz de alcanzar casi 11 kilómetros por hora.

FIGURA 1.7: EJEMPLO ROBOT BÍPEDO Página 14 de 115



Robots cuadrúpedos: A pesar que tienen mayor estabilidad que los robots bípedos, el problema de estos sigue siendo el de diseñar y construir un robot cuadrúpedo capaz de mantener el equilibrio durante la locomoción.

FIGURA 1.8: EJEMPLO ROBOT CUADRÚPEDO •

Robots hexápodos: El robot hexápodo consta de seis patas dispuestas paralelamente en una estructura o chasis, las cuales se mueven dos a dos, o tres a tres, gobernadas por un micro-controlador. Estos robots pueden ser más o menos complejos dependiendo de los grados de movilidad de sus patas y de los obstáculos que se quieren sortear, teniendo así que dotar al robot de sensores y crear una aplicación de software complejo. 1.4.1.3.

Conclusiones de número de extremidades

Parece ser que los robots hexápodos sean los más estables a la hora de avanzar sobre terreno irregular y sortear obstáculos, es por eso que se ajusta más a nuestras necesidades y a pesar de que su complejidad es más elevada, se va a optar por esta solución. 1.4.1.4.

Movimiento de locomoción del hexápodo

Uno de los propósitos de la robótica es imitar los desplazamientos de los seres vivos partiendo del estudio de estos y así lograr que el robot móvil o caminantes se desplace imitando la locomoción de algunos seres vivos y en nuestro caso será usando las características de una hormiga. Imitar la locomoción de la hormiga genera mucha estabilidad en el caminar del robot ya que esta tiene siempre tres puntos de contacto con la superficie, dos de un lado y una de otro. En la siguiente figura podremos observar ese ciclo de locomoción, que intentaremos implementar en el robot. La figura 1.9 representa el primer paso desde el reposo como inicio y la figura 1.10 el ciclo de locomoción de avance constante. Los rectángulos en blanco indican las patas que están en contacto con el suelo y los coloreados en rojo indican las patas que están en el aire o iniciando el movimiento.

FIGURA 1.9: LOCOMOCIÓN, PRIMER PASO

FIGURA 1.10: LOCOMOCIÓN DE AVANCE Página 15 de 115

1.4.1.5.

Conclusiones de locomoción

Anteriormente se indica la locomoción de un robot hexápodo, que está basada en la capacidad de una hormiga para desplazarse, teniendo siempre presente que el robot estará siempre soportado sobre tres patas, lo que permitirá que la locomoción se pueda desempeñar en una superficie irregular. También se anexa una breve descripción de la secuencia que este debe realizar para así emular el caminar de una hormiga.

1.4.2. Diseño mecánico En este capítulo se detallan los componentes mecánicos que dan lugar a la estructura del robot. Éstos son tres fundamentalmente: los actuadores, las patas y el cuerpo. 1.4.2.1.

Diseño de las extremidades

Las extremidades se diseñan en función de los terrenos en los que se vaya a mover el robot y también según los grados de libertad. Pudiendo crear una pata totalmente rígida con un grado de movilidad, o una pata más compleja si se desea una movilidad variada. Descartando la opción de utilizar patas de un grado de libertad, puesto que no nos serviría para nuestro proyecto a causa de su escasa funcionalidad en terrenos inestables, veamos más opciones: o Pata con dos grados de libertad: En la figura 1.11 se observa el esquema del funcionamiento de la pata con dos grados de libertad. Presenta problemas de deslizamiento y movimientos limitados.

FIGURA 1.11: DOS GRADOS DE LIBERTAD o Pata con tres grados de libertad: Esta estructura permite posicionar el extremo de la pata en cualquier punto de la superficie de una esfera cuyo centro está en el interior de la primera articulación lo cual permite mucha más movilidad.

FIGURA 1.12: TRES GRADOS DE LIBERTAD Para posicionar completamente el extremo de una pata hacen falta seis grados de libertad, tres para especificar la posición y tres para especificar la orientación. Sin embargo, como el extremo de la pata se considera puntual, no hará falta especificar su orientación, por consiguiente son necesarios solamente tres grados de libertad. Página 16 de 115

Entonces las patas se han de diseñar para soportar esos actuadores en el menor espacio posible, ya que a mayor tamaño, las holguras propias de estos servos se pueden amplificar, y también reduciremos el peso de manera que la fuerza ejercida por éstos se propague de la forma más eficiente hacia el extremo. 1.4.2.2.

Actuadores

Los actuadores implementan las articulaciones. Usaremos servomecanismos de rotación que permiten el posicionamiento de cada articulación de forma absoluta. Un Servo es un dispositivo pequeño que tiene un eje de rendimiento controlado. Este puede ser llevado a posiciones angulares específicas al enviar una señal codificada. Con tal de que una señal codificada exista en la línea de entrada, el servo mantendrá la posición angular del engranaje. Cuando la señala codificada cambia, la posición angular de los piñones cambia. En la práctica, se usan servos para posicionar superficies de control como el movimiento de palancas, pequeños ascensores y timones. Ellos también se usan en radio control, títeres, y por supuesto, en robots. Los Servos son sumamente útiles en robótica. Los motores son pequeños, tiene internamente una circuitería de control interna y es sumamente poderoso para su tamaño. Un servo normal o Standard como el HS-300 de Hitec tiene 42 onzas por pulgada o mejor 3kg por cm. de torque que es bastante fuerte para su tamaño. También potencia proporcional para cargas mecánicas. Un servo, por consiguiente, no consume mucha energía. Se muestra la composición interna de un servo motor en el cuadro de abajo. Podrá observar la circuitería de control, el motor, un juego de piñones, y la caja. También puede ver los 3 alambres de conexión externa. Uno es para alimentación Vcc (+5volts), conexión a tierra GND y el alambre blanco es el alambre de control.

FIGURA 1.13: PULSO SERVOMOTORES El cable de control se usa para comunicar el ángulo. El ángulo está determinado por la duración de un pulso que se aplica al alambre de control. A esto se le llama PCM Modulación codificada de Pulsos. El servo espera ver un pulso cada 20 milisegundos (.02 segundos). La longitud del pulso determinará los giros de motor. Un pulso de 1.5 ms., por ejemplo, hará que el motor se torne a la posición de 90 grados (llamado la posición Página 17 de 115

neutra). Si el pulso es menor de 1.5 ms., entonces el motor se acercará a los 0 grados. Si el pulso es mayor de 1.5ms, el eje se acercará a los 180 grados. Como se observa en la figura 1.13, la duración del pulso indica o dictamina el ángulo del eje (mostrado como un círculo verde con flecha). Nótese que las ilustraciones y los tiempos reales dependen del fabricante de motor. Con respecto al control, para manejar un servo a un ángulo determinado, se deberá enviar uno de los pulsos nombrado anteriormente (entre 1 ms y 2.5 ms) cada 20ms aproximadamente. Entonces, los servomotores son muy apropiados por las siguientes ventajas: - Al contrario que los motores paso a paso, los servomotores son reguladores que fuerzan una posición y lo más importante, la mantienen frente cualquier variación. -

La relación fuerza ejercida/consumo es relativamente alta.

-

Hay mucha variedad de tamaños y pesos en el mercado.

-

Las órdenes que reciben siguen un formato PWM estándar.

-

Son de relativamente bajo coste.

-

Permiten la lectura de su posición a través de sus potenciómetros.

FIGURA 1.14: PARTES DE UN SERVOMOTOR Una vez elegido el sistema de actuación deseado, queda decidir la potencia de los servomotores. Para ello, haremos algunos cálculos. La unidad que indica la potencia en servomotores es el par motor (Ms), y se tiene que cumplir que: Ms ≥ F*d Es decir, el par motor de los servos ha de ser mayor o igual que la fuerza por la distancia. Veamos una explicación más ilustrativa. En la figura 1.15 se puede observar un esquema del robot donde se ven reflejados los datos o factores vistos en la formula anterior. Entonces, el servomotor tiene que tener la suficiente fuerza o par motor para levantar el cuerpo del robot, por eso el par motor que Página 18 de 115

elijamos para nuestro servomotor va a depender del peso del cuerpo, que aplicará una fuerza sobre el servomotor. Resolviendo matemáticamente, deducimos: Si Ms ≥ F*d, implica que cuanto menor distancia entre la fuerza normal (N) y la fuerza aplicada por el servomotor, menor par motor (Ms) se va a necesitar. Por otra parte, cuanto menor peso, es decir, menor fuerza aplicada (F), menor par motor (Ms). Cabe mencionar que nuestro robot va a ser un prototipo lo más económico posible, es por eso que los cálculos iniciales se harán para comprobar si nos puede servir el servomotor más barato del mercado, ya que se van a tener que poner como mínimo dieciocho servomotores. Actualmente el servomotor más barato del mercado es el “Turnigy TG9e”, cuesta 1.99$ y tiene un par motor (Ms) de 1.5 kg/cm.

FIGURA 1.15: ESQUEMA DEL PAR MOTOR Para realizar los cálculos nos vamos a posicionar en la peor de las condiciones, es decir, cuando la distancia ente la fuerza normal (N) y la fuerza aplicada por el servomotor es la máxima distancia posible. Esta situación se dará cuando el ángulo beta formado entre el fémur y la tibia sea de 90º, así que la distancia máxima será la longitud del fémur que es de 4.5cm. Entonces: M = F*d = (N/n)*d = (g*m/n)*d = (9.8N*m/6)*4.5cm M = par motor N = fuerza normal n = número de patas d = distancia entre N y M g = fuerza de la gravedad m = masa del cuerpo Si el par motor del servomotor es 1.5kg/cm, entonces: 1.5kg/cm ≥ (9.8N*m/6)*4.5cm

Página 19 de 115

FIGURA 1.16: CÁLCULO DEL PAR MOTOR (PEOR CASO) Para que esta relación se cumpla, la masa del cuerpo ha de ser igual o menor a 0.204 kg, es decir 200 gramos aproximadamente, para poder levantar el cuerpo en el peor de los casos. Como prevemos que el cuerpo no va a superar ese peso, hemos demostrado que este servo de 1.5kg/cm de par motor es suficiente para usarse como articulación en el robot. 1.4.2.3.

Diseño del cuerpo

El cuerpo soportará todas las patas con sus respectivos actuadores, además de la placa de control del robot y su batería. Este debe ser construido pensando en minimizar o evitar las colisiones entre patas encontrando a su vez un equilibrado entre dimensiones, peso y equilibrio. La elección de los actuadores realizada en el apartado anterior, limita el peso del cuerpo, así que este no puede ser superior a 200 gramos. 1.4.2.4.

Conclusiones de diseño mecánico:

-

Utilizaremos patas con tres grados de libertad ya que eso nos permitirá mayor movilidad y precisión a la hora de posicionar dichas extremidades en un punto concreto. A pesar de eso el inconveniente es que aumentará el coste del robot, a causa de necesitar más actuadores.

-

Se ha decidido usar como actuador servomotores por todas sus ventajas nombradas anteriormente. La elección del servomotor ha sido el “Turnigy TG9e” de 9 gramos y 1.5 kg/cm de par motor, por su bajo coste y cumplir los requisitos mínimos. Esto limita el peso del cuerpo, que no deberá ser mayor que 200 gramos.

-

El peso del cuerpo está limitado por la potencia de los actuadores y este no deberá ser mayor que 200 gramos.

1.4.3. Sistema de control: El micro-controlador La situación actual en el campo de los micro-controladores se ha producido gracias al desarrollo de la tecnología de fabricación de los circuitos integrados. Este desarrollo ha permitido construir las centenas de miles de transistores en un chip. Esto fue una condición Página 20 de 115

previa para la fabricación de un microprocesador. Las primeras microcomputadoras se fabricaron al añadirles periféricos externos, tales como memoria, líneas de entrada/salida, temporizadores u otros. El incremento posterior de la densidad de integración permitió crear un circuito integrado que contenía tanto al procesador como periféricos. Así es cómo fue desarrollada la primera microcomputadora en un solo chip, denominada más tarde micro-controlador. 1.4.3.1.

Arquitectura del micro-controlador

La arquitectura del PIC es sumamente minimalista. Está caracterizada por las siguientes prestaciones: • •

Área de código y de datos separadas (Arquitectura Harvard). Un reducido número de instrucciones de longitud fija.

FIGURA 1.17: ARQUITECTURA HARVARD •

• • • • • •

Implementa segmentación de tal modo que la mayoría de instrucciones duran 1 tiempo de instrucción (o 4 tiempos de reloj). Pueden haber instrucciones de dos tiempos de instrucción (saltos, llamadas y retornos de subrutinas y otras) o inclusive con más tiempo de instrucción en PICs de gama alta. Esto implica que el rendimiento real de instrucciones por segundo del procesador es de al menos 1/4 de la frecuencia del oscilador. Un solo acumulador (W), cuyo uso (como operador de origen) es implícito (no está especificado en la instrucción). Todas las posiciones de la RAM funcionan como registros de origen y/o de destino de operaciones matemáticas y otras funciones. Una pila de hardware para almacenar instrucciones de regreso de funciones. Una relativamente pequeña cantidad de espacio de datos direccionable (típicamente, 256 bytes), extensible a través de manipulación de bancos de memoria. El espacio de datos está relacionado con el CPU, puertos, y los registros de los periféricos. El contador de programa está también relacionado dentro del espacio de datos, y es posible escribir en él (permitiendo saltos indirectos).

Página 21 de 115

FIGURA 1.18: ARQUITECTURA INTERNA DEL MICRO-CONTROLADOR A diferencia de la mayoría de otros CPU, no hay distinción entre los espacios de memoria y los espacios de registros, ya que la RAM cumple ambas funciones, y esta es normalmente referida como "archivo de registros" o simplemente, registros. 1.4.3.2.

Unidad de memoria

La unidad de memoria es una parte del micro-controlador utilizada para almacenar los datos. La manera más fácil de explicarlo es compararlo con un armario grande con muchos cajones. Si marcamos los cajones claramente, será fácil acceder a cualquiera de sus contenidos al leer la etiqueta en la parte delantera del cajón. De manera similar, cada dirección de memoria corresponde a una localidad de memoria. El contenido de cualquier localidad se puede leer y se le puede acceder al direccionarla. La memoria se puede escribir en la localidad o leer.

FIGURA 1.19: UNIDAD DE MEMORIA Hay varios tipos de memoria dentro del micro-controlador: Memoria de programa: • ROM: Dispositivo OTP grabado en fábrica. • EPROM: Dispositivo OTP o borrable (con ventana). • E2PROM: Dispositivo regrabable in-system con Vpp=12v • FLASH: Dispositivo regrabable in-system. Memoria volátil de datos: • RAM: Almacenamiento de variables del programa. Página 22 de 115



SFR: Special Function Registers configuraciones, interrupciones...

usados

para manejar los

periféricos,

Memoria no volátil de datos: • E2PROM o FLASH 1.4.3.3.

Puertos de entrada salida

Para hacer útil un micro-controlador, hay que conectarlo a un dispositivo externo, o sea, a un periférico. Cada micro-controlador tiene uno o más registros (denominados puertos) conectados a los pines en el micro-controlador. Se denominan puertos de entrada/salida porque usted puede cambiar la función de cada pin como quiera. Cada puerto de E/S normalmente está bajo el control de un registro SFR especializado, lo que significa que cada bit de ese registro determina el estado del pin correspondiente en el micro-controlador. Por ejemplo, al escribir un uno lógico (1) a un bit del registro de control (SFR), el pin apropiado del puerto se configura automáticamente como salida. Eso significa que el voltaje llevado a ese pin se puede leer como 0 o 1 lógico. En caso contrario, al escribir 0 al registro SFR, el pin apropiado del puerto se configura como salida. Su voltaje (0V o 5V) corresponde al estado del bit apropiado del registro del puerto. 1.4.3.4.

El oscilador

Los pulsos uniformes generados por el oscilador permiten el funcionamiento armónico y síncrono de todos los circuitos del micro-controlador. El oscilador se configura normalmente de tal manera que utilice un cristal de cuarzo o resonador cerámico para estabilización de frecuencia. Además, puede funcionar como un circuito autónomo (como oscilador RC). Es importante decir que las instrucciones del programa no se ejecutan a la velocidad impuesta por el mismo oscilador sino varias veces más despacio. Eso ocurre porque cada instrucción se ejecuta en varios ciclos del oscilador. En algunos microcontroladores se necesita el mismo número de ciclos para ejecutar todas las instrucciones, mientras que en otros el tiempo de ejecución no es el mismo para todas las instrucciones. Por consiguiente, si el sistema utiliza el cristal de cuarzo con una frecuencia de 20 MHZ, el tiempo de ejecución de una instrucción de programa no es 50 ns, sino 200, 400 o 800 ns dependiendo del tipo del micro-controlador. 1.4.3.5.

Temporizadores

El oscilador del micro-controlador utiliza cristal de cuarzo para su funcionamiento. Aunque no se trata de la solución más simple, hay muchas razones para utilizarlo. La frecuencia del oscilador es definida con precisión y muy estable, así que siempre genera los pulsos del mismo ancho, lo que los hace perfectos para medición de tiempo. Tales osciladores se utilizan en los relojes de cuarzo. Si es necesario medir el tiempo transcurrido entre dos eventos, basta con contar los pulsos generados por este oscilador. Esto es exactamente lo que hace el temporizador. Si el temporizador utiliza el oscilador de cuarzo interno para su funcionamiento, es posible medir el tiempo entre dos eventos (el valor de registro en el momento de iniciar la medición es T1, en el momento de finalizar la medición es T2, el tiempo transcurrido es igual al resultado de la resta T2 - T1). Si los registros se aumentan con los pulsos que vienen de la fuente externa, tal temporizador se convierte en un contador. Página 23 de 115

Un pre-escalador es un dispositivo electrónico utilizado para dividir la frecuencia por un factor predeterminado. Esto quiere decir que se necesita llevar 1, 2, 4 o más pulsos a su entrada para generar un pulso a la salida. La mayoría de los micro-controladores disponen de uno o más pre-escaladores incorporados y su tasa de división puede ser cambiada dentro del programa. El pre-escalador se utiliza cuando es necesario medir los períodos de tiempo más largos.

FIGURA 1.20: TEMPORIZACIÓN 1.4.3.6.

Elección del micro-controlador

La elección del µC para una aplicación específica determina el coste, tamaño y prestaciones del sistema. Factores a tener en cuenta: • Velocidad de proceso. Depende de la CPU y frecuencia de reloj usada • Cantidad de memoria de ROM, RAM, E2PROM • Consumo y modos de bajo consumo. • Conjunto de instrucciones. Sencillez y potencia • Herramientas y lenguajes de desarrollo de alto nivel. • Coste del dispositivo, herramientas, programador... • Versiones ROM, OTP, EPROM, EEPROM, FLASH • Programación ISP (In System Programming) para desarrollo rápido de aplicaciones. • Disponibilidad. La rápida evolución de la µe trae como consecuencia la substitución frecuente de µC • Fabricantes de dispositivos compatibles • Encapsulados, patillaje y recursos de I/O • Posibilidad de expansión externa (arquitectura abierta) • Periféricos integrados (Timers, DACs, Puertos I/O...) • Interrupciones externas/internas. • Bibliografía disponible Existen varias empresas que actualmente se encuentran fabricando estos microcontroladores, las cuales poseen variedad de modelos con diferentes prestaciones. Entre esas empresas podemos destacar Microchip Technology Inc. Microchip es una empresa que está liderando las ventas de este dispositivo, por su bajo coste, por tener gran variedad de modelos, y por su fácil programación, por esas razones buscaremos un modelo de esta casa. Página 24 de 115

1.4.3.7.

El micro-controlador PIC 16F877A

El modelo 16F877 posee varias características que hacen a este micro-controlador un dispositivo muy versátil, eficiente y práctico para ser empleado en el prototipo del robot. Características principales: • Amplia memoria para datos y programa: Esto es muy útil para el prototipo ya que a priori no sabemos cuánto tamaño va a tener nuestro programa. o Hasta 368 x 8 bytes de Data Memory (RAM) o Hasta 8K x 14 words de FLASH Program Memory • Set de 35 instrucciones reducido (tipo RISC): Pero con las instrucciones necesarias para facilitar su manejo. •

Instrucciones son de un ciclo salvo aquellas que incluyen saltos que son de 2 ciclos.

• •

Velocidad de Trabajo: o DC - 20 MHz clock input o DC - 200 ns ciclo de instrucción Manejo de Interrupciones: Hasta 14 fuentes



Modo de direccionamiento directo, indirecto y relativo



Amplio rango de voltaje de trabajo: 2.0V a 5.5V



4 puertos E/S

Características periféricas: •

Timer0: 8-bit timer/counter con 8-bit pre-scaler



Timer1: 16-bit timer/counter con pre-scaler, que puede ser incrementado durante el modo SLEEP vía reloj externo.



Timer2: 8-bit timer/counter con registro de período de 8-bit, pre-scaler y post-scaler



Dos módulos Capture, Compare, PWM o Capture es de 16-bit, máx. resolución: 12.5 ns o

Compare es de 16-bit, máx. resolución: 200 ns

o PWM máx. resolución: 10-bit •

Convertidor Analógico - Digital de 10-bit multi-channel



Synchronous Serial Port (SSP) con SPI (Master mode) e I2C (Master/Slave)



Universal Synchronous Asynchronous



Receiver Transmitter (USART/SCI) con detección de direcciones de 9-bit



Parallel Slave Port (PSP) de 8-bits de ancho, con controles externos de RD, WR y CS (solo 40/44-pin)



Reset (BOR)

Página 25 de 115

FIGURA 1.21: CARACTERÍSTICAS PIC16F877A

FIGURA 1.22: DIAGRAMA DE PINES Una desventaja es que debe ser conectado a un cristal externo, ya que no lo tiene incorporado el mismo, y además necesita en el Master Clear una resistencia Pull-Up. 1.4.3.8.

Herramientas del micro-controlador

Antes de continuar, veamos las herramientas necesarias para crear un programa para ser ejecutado mediante un micro-controlador. Estas se van a dividir en dos grupos principalmente:

Página 26 de 115



Desarrollo del programa:

Para el desarrollo del programa se necesita conocer los lenguajes de los microcontroladores. Cabe mencionar que, para ser rigurosos, el micro-controlador no entiende de otra cosa que no sean unos y ceros, lo que propiamente se denomina el lenguaje máquina. Para facilitar esa programación, se han creado lenguajes más intuitivos con la finalidad de facilitar la programación. Así nacieron los siguientes programas. o Ensamblador: Que traduce el código ensamblador a código máquina. Permite gran eficiencia en relación tamaño-velocidad del código ejecutable. Estos programas tienen un muy bajo coste o son gratuitos, y se requiere de un conocimiento profundo del micro-controlador. o Compilador: Traduce lenguaje de alto nivel (C, Basic...) a código máquina y permite elevada productividad. Tiene un coste medio/alto y elevada portabilidad a otras familias. •

Programación:

Una vez clicadas nuestras líneas de código, se necesita grabarlas a nuestro microcontrolador. Para ello, usamos un programador o grabador que copiará el programa de la aplicación sobre el µC con memoria de programa EPROM, E2PROM o FLASH. También realiza el borrado del programa antes, si está basado en E2PROM o FLASH. 1.4.3.9.

Lenguaje del PIC

En este apartado se argumentará y decidirá que lenguaje utilizar en la programación de nuestro robot. Para ello, explicaremos con más profundidad sobre los lenguajes de programación del micro-controlador. El micro-controlador ejecuta el programa cargado en la memoria Flash. Esto se denomina el código ejecutable y está compuesto por una serie de ceros y unos, aparentemente sin significado. Dependiendo de la arquitectura del micro-controlador, el código binario está compuesto por palabras de 12, 14 o 16 bits de anchura, en el caso del PIC16F877A, que es el que usaremos, son de 14 bits. Cada palabra se interpreta por la CPU como una instrucción a ser ejecutada durante el funcionamiento del microcontrolador. Todas las instrucciones que el micro-controlador puede reconocer y ejecutar se les denominan colectivamente conjunto de instrucciones. Como es más fácil trabajar con el sistema de numeración hexadecimal, el código ejecutable se representa con frecuencia como una serie de los números hexadecimales denominada código hexadecimal. En los micro-controladores PIC con las palabras de programa de 14 bits de anchura, el conjunto de instrucciones tiene 35 instrucciones diferentes. Como el proceso de escribir un código ejecutable era considerablemente arduo, en consecuencia fue creado el primer lenguaje de programación denominado ensamblador (ASM). Siguiendo la sintaxis básica del ensamblador, era más fácil escribir y comprender el código. Las instrucciones en ensamblador consisten en las abreviaturas con significado y a cada instrucción corresponde una localidad de memoria. Un programa denominado ensamblador compila (traduce) las instrucciones del lenguaje ensamblador a código máquina (código binario). Este programa compila instrucción a instrucción sin optimización pero tiene la gran ventaja de permitir controlar en detalle todos los procesos puestos en marcha dentro del chip. Página 27 de 115

Veamos las ventajas de usar lenguaje ensamblador respecto a un lenguaje de alto nivel: a. Velocidad: El proceso de traducción que realizan los intérpretes, implica un proceso de cómputo adicional al que el programador quiere realizar. Por ello, nos encontraremos con que un intérprete es siempre más lento que realizar la misma acción en Lenguaje Ensamblador, simplemente porque tiene el costo adicional de estar traduciendo el programa, cada vez que lo ejecutamos. De ahí nacieron los compiladores, que son mucho más rápidos que los intérpretes, pues hacen la traducción una vez y dejan el código objeto, que ya es Lenguaje de Máquina, y se puede ejecutar muy rápidamente. Aunque el proceso de traducción es más complejo y costoso que el de ensamblar un programa, normalmente podemos despreciarlo, contra las ventajas de codificar el programa más rápidamente. Sin embargo, la mayor parte de las veces, el código generado por un compilador es menos eficiente que el código equivalente que un programador escribiría. La razón es que el compilador no tiene tanta inteligencia, y requiere ser capaz de crear código genérico, que sirva tanto para un programa como para otro; en cambio, un programador humano puede aprovechar las características específicas del problema, reduciendo la generalidad pero al mismo tiempo, no desperdicia ninguna instrucción, no hace ningún proceso que no sea necesario. Para darnos una idea, en una PC, y suponiendo que todos son buenos programadores, un programa para ordenar una lista tardará cerca de 20 veces más en Visual Basic (un intérprete), y 2 veces más en C (un compilador), que el equivalente en Ensamblador. Por ello, cuando es crítica la velocidad del programa, Ensamblador se vuelve un candidato lógico como lenguaje. Ahora bien, esto no es un absoluto; un programa bien hecho en C puede ser muchas veces más rápido que un programa mal hecho en Ensamblador; sigue siendo sumamente importante la elección apropiada de algoritmos y estructuras de datos. Por ello, se recomienda buscar optimizar primero estos aspectos, en el lenguaje que se desee, y solamente usar Ensamblador cuando se requiere más optimización y no se puede lograr por estos medios. b. Eficiencia de tamaño: Por las mismas razones que vimos en el aspecto de velocidad, los compiladores e intérpretes generan más código máquina del necesario; por ello, el programa ejecutable crece. Así, cuando es importante reducir el tamaño del ejecutable, mejorando el uso de la memoria y teniendo también beneficios en velocidad, puede convenir usar el lenguaje Ensamblador. Entre los programas que es crítico el uso mínimo de memoria, tenemos a los virus y manejadores de dispositivos (drivers). Muchos de ellos, por supuesto, están escritos en lenguaje Ensamblador. c. Flexibilidad: Las razones anteriores son cuestión de grado: podemos hacer las cosas en otro lenguaje, pero queremos hacerlas más eficientemente. Pero todos los lenguajes de alto nivel tienen limitantes en el control; al hacer abstracciones, limitan su propia capacidad. Es decir, existen tareas que la máquina puede hacer, pero que un lenguaje de alto nivel no permite. Por ejemplo, en Visual Basic no es posible cambiar la resolución del monitor a Página 28 de 115

medio programa; es una limitante, impuesta por la abstracción del GUI Windows. En cambio, en ensamblador es sumamente sencillo, pues tenemos el acceso directo al hardware del monitor. Por otro lado, al ser un lenguaje más primitivo, el Ensamblador tiene ciertas desventajas respecto a los lenguajes de alto nivel: a. Tiempo de programación: Al ser de bajo nivel, el Lenguaje Ensamblador requiere más instrucciones para realizar el mismo proceso, en comparación con un lenguaje de alto nivel. Por otro lado, requiere de más cuidado por parte del programador, pues es propenso a que los errores de lógica se reflejen más fuertemente en la ejecución. Por todo esto, es más lento el desarrollo de programas comparables en Lenguaje Ensamblador que en un lenguaje de alto nivel, pues el programador goza de una menor abstracción. b. Programas fuente grandes: Por las mismas razones que aumenta el tiempo, crecen los programas fuentes; simplemente, requerimos más instrucciones primitivas para describir procesos equivalentes. Esto es una desventaja porque dificulta el mantenimiento de los programas, y nuevamente reduce la productividad de los programadores. c. Peligro de afectar recursos inesperadamente: Tenemos la ventaja de que todo lo que se puede hacer en la máquina, se puede hacer con el Lenguaje Ensamblador (flexibilidad). El problema es que todo error que podamos cometer, o todo riesgo que podamos tener, podemos tenerlo también en este Lenguaje. Dicho de otra forma, tener mucho poder es útil pero también es peligroso. En la vida práctica, afortunadamente no ocurre mucho; sin embargo, al programar en este lenguaje verán que es mucho más común que la máquina se "cuelgue", "bloquee" o "se le vaya el avión"; y que se reinicialice. ¿Por qué?, porque con este lenguaje es perfectamente posible (y sencillo) realizar secuencias de instrucciones inválidas, que normalmente no aparecen al usar un lenguaje de alto nivel. En ciertos casos extremos, puede llegarse a sobrescribir información del CMOS de la máquina (no he visto efectos más riesgosos); pero, si no la conservamos, esto puede causar que dejemos de "ver" el disco duro, junto con toda su información. 1.4.3.10. Hardware de programación de PICS Un programador es un dispositivo que hace posible la interconexión entre el microcontrolador y el ordenador, u otra fuente, donde se contenga el código del programa. De la enorme cantidad de programadores que existe destacaremos que, en general, los podemos dividir según su interface de conexión a la computadora. Algunos aún utilizan el casi extinto puerto paralelo (como el ProPic programmer), otros se conectan mediante el puerto serie (como los programadores JDM o el PICSTART Plus) y los más sofisticados presentan una interface USB. Por supuesto, la calidad siempre irá de la mano con el precio. En nuestro caso no centraremos en los que usan el puerto serie, que son los más fáciles de encontrar a un precio más económico.

Página 29 de 115



Programador ISCP:

ICSP es el acrónimo de la frase en inglés: "In Circuit Serial Programming" (Programación Serial En Circuito); es una tecnología incluida en todos los microcontroladores PIC de Microchip más recientes y posibilita la reprogramación de los mismos sin que sea necesaria la remoción de éstos de su circuito de aplicación. Esta característica es extremadamente útil no solamente en la etapa de desarrollo debido a que ahorra tiempo y trabajo, sino que su utilidad se extiende a la etapa de mantenimiento y actualización de los sistemas, dando la posibilidad de reprogramar los mismos "en el campo" en sus respectivas placas ya soldadas, ya sea para corregir errores de software o para la mejora del sistema con la implementación de nuevas funciones. •

Programador TE20:

El programador TE-20 es uno de los más simples y baratos. Con él, se pueden programar los PIC 16x, 18x, y EEPROMS 93cXX. Se comunica con el ordenador a través del puerto serie y no requiere de fuente de alimentación externa, ya que utiliza los +5v que le llegan por el puerto. Lo suelen vender tanto montado como por piezas (kit) en la mayoría las tiendas de electrónica. Su precio ronda los 20€. 1.4.3.11. Software para la programación de PICS Casi todas las tarjetas de los programadores también traen consigo su propio software controlador. Los programadores patentados por Microchip (como el PICSTART Plus, PRO MATE II, o el PM3) son controlados por utilidades incluidas en el MPLAB IDE. Los dos últimos citados incluso pueden operar en modo Stand-Alone, es decir, sin conexión a la computadora. Por otro lado, hay programadores como el JDM y ProPic, entre otros, que funcionan con software de programación generales. Uno de ellos es el IC-PROG, que es de libre distribución. Otro software gratuito, es WinPic800. WinPic800 también ofrece soporte para múltiples modelos de programadores, incluido el TE-20. En el caso de la programación ICSP, lo más cómodo es usar un Bootloader, que es un programa muy pequeño (256 bytes aproximadamente) que permite descargar programas al PIC usando únicamente el puerto serie, sin ningún hardware adicional. La ventaja que tiene es que solo es necesario utilizar un grabador de PIC una vez, para grabar el programa Bootloader. Podemos hacerlo con un grabador prestado. Una vez cargado el Bootloader en el PIC ya podemos descargar en él nuestros programas vía serie, sin necesidad de grabador, todas las veces que queramos. Si nuestro hardware incorpora puerto serie no es necesario quitar el PIC de su zócalo: usando el puerto serie de nuestro proyecto hacemos la descarga. Para utilizar este sistema es necesario tener el Bootloader configurado para nuestro hardware y cargado en el PIC, una conexión serie con el PC y el programa descargador, por ejemplo PICbootPlus. 1.4.3.12. Conclusiones sistema de control, el micro-controlador •

Se usará el micro-controlador 16F877A para implementar el prototipo



Utilizaremos un programa ensamblador que traduce su código a código máquina permitiendo gran eficiencia (tamaño-velocidad) del código ejecutable, por un coste bajo o gratuito. También es necesario un Página 30 de 115

conocimiento profundo del µC, cosa que nos va a beneficiar en el aspecto didáctico del proyecto. •

Al principio el proyecto va a requerir muchas iteraciones de re-programación en la etapa de desarrollo, es por eso que se va a usar un programador ICSP. Más adelante, cuando se tenga un código más depurado, se dará uso al programador TE20.



Para generar el código en ensamblador se usará MPLAB IDE, programa presentado por Microchip. Respecto al resto de programas que se van a usar, va a depender de la programación que utilicemos en ese momento, es decir, si programamos con un programador ICSP, será necesario el programa bootloader que cargaremos en el PIC, y un descargador, como por ejemplo PICbootPlus; en cambio, si programamos con el TE20, se usará el software gratuito WinPic800.

1.4.4. Sistema de comunicación de órdenes Es necesario que el control del robot sea inalámbrico y de largo alcance ya que deberá haber una distancia considerable entre la zona de seguridad, desde donde se comandará el robot, hasta la zona de riesgo, que es donde se encontrará circulando el robot. A pesar de la distancia se tiene que asegurar una comunicación fluida entre el emisor y el receptor. Es por todo eso que se ha pensado en uno de los sistemas de control más utilizados hasta la fecha, la radiofrecuencia. Denominada también espectro de radiofrecuencia o RF, se aplica a la porción menos energética del espectro electromagnético, situada entre 3 Hz y 300 GHz. Las ondas electromagnéticas de ésta región del espectro se pueden transmitir a una antena aplicando la corriente alterna originada en un generador.

FIGURA 1.23: TIPOS DE RADIACIÓN El radio control es la técnica que permite el gobierno de un objeto a distancia y de manera inalámbrica (enlace hertziano). En el radio control entran en juego tres técnicas fundamentales: la electrónica que se encarga de irradiar las señales de mando, la electricidad, encargada de proporcionar la energía necesaria a los dispositivos finales y la mecánica encargada de transformar las señales eléctricas en movimiento mecánico. Página 31 de 115

Existen mandos o radiocontroles para muchos otros dispositivos: modelos a escala de aviones, helicópteros y otros modelos por radiocontrol son juguetes bastante populares. Muchos robots se controlan remotamente, especialmente aquellos que han sido diseñados para llevar a cabo tareas peligrosas, así como algunos de los más nuevos cazas de combate. Un radiotransmisor es un dispositivo electrónico que, mediante una antena, irradia ondas electromagnéticas que contienen información, como ocurre en el caso de las señales de radio, televisión, telefonía móvil o cualquier otro tipo de radiocomunicación. Transmisor en el área de comunicaciones es el origen de una sesión de comunicación. Un transmisor es un equipo que emite una señal, código o mensaje a través de un medio. Para lograr una sesión de comunicación se requiere: un transmisor, un medio y un receptor. La radiofrecuencia se puede dividir en las bandas del espectro, anotadas en la tabla 1.24.

FIGURA 1.24: BANDAS DEL ESPECTRO 1.4.4.1.

Emisor de radiofrecuencia:

El emisor de radiofrecuencia se va a encargar de la función de radiotransmisor. Los criterios para la elección de este radiotransmisor deberían haber sido en función de sus características ya que necesitamos que exista una comunicación lo más distanciada posible, por motivos de seguridad. En cambio, para la construcción del prototipo se ha buscado una opción económica, pero que siga el mismo funcionamiento. En el mercado hay una amplia gama de transmisores de radiofrecuencia y después de una búsqueda exhaustiva de opciones se ha decidido utilizar el transmisor Guanli Skyport Four.

FIGURA 1.25: TRANSMISOR GUANLI SKYSPORT 4 Página 32 de 115

Características técnicas: -

Emisor de 4 canales FM Transmisión de banda de 35 MHz. Distancia de operación de 300m. Alimentación 8x1.5v (AA)

El transmisor de radio control puede dividirse en dos bloques: el primer bloque es el que se encarga de generar la señal que codifica los comandos llamado codificador y generar la señal base o modulador y el segundo bloque es el que se encarga de transmitir por radio lo que el codificador le "dice", conocida también como etapa de RF. El diagrama del transmisor de radio se muestra en la figura 1.26.

FIGURA 1.26: DIAGRAMA DE BLOQUES DEL TRANSMISOR •

Codificador o generador de señal base

El codificador tiene la función de tomar la información que le proveen la posición de las palancas de control o botones de control y producir una señal codificada. La interpretación de los datos se puede hacer de distintas formas. Antiguamente en los primeros radio controles no se codificaban los controles; hoy por hoy es necesario controlar varios dispositivos y esto debe ser ocupando una sola frecuencia de transmisión para llevar la información de 3, 4, 6 o más canales al "mismo tiempo"; la información debe ser analógica y enviada en "tiempo real". Los métodos de codificación más usados son "Pulse Width Modulation" (PWM) que significa Modulación en el Ancho del Pulso y el "Pulse Position Modulation" (PPM) que significa Modulación por Posición del Pulso, siendo este el más usado por la mayoría de los equipos de radio. Otro método de codificación es el conocido como "Pulse Code Modulation" (PCM) el cual soluciona algunos problemas del método de modulación PPM y fue desarrollado por Futaba; la principal característica de este es que utiliza un micro-controlador para generar un código en especial similar a una comunicación de computadoras. En nuestro caso, nuestro transmisor elegido usa una codificación modulada por ancho de pulso (PWM). •

Etapa de RF o transmisor de radio

En la etapa de RF la señal base es la que ingresa para ser elevada en frecuencia desde KHz al orden de los MHz, esto se hace para poder ser transmitida hasta el receptor. Página 33 de 115

Al elevar la frecuencia de la señal se aprovechan las características de las ondas de radio de alta frecuencia (HF) y de muy alta frecuencia (VHF), ya que estas se propagan con una muy buena eficiencia y con antenas pequeñas. 1.4.4.2.

Receptor de radiofrecuencia

Es el encargado de deshacer todo el trabajo que realiza el Transmisor, es decir, descodificar la señal. El primer paso es eliminar la onda portadora para obtener sólo la información. En nuestro caso se utilizara el receptor Guanli de 6 canales. Veamos sus características: • • • •

Receptor de modulación de 6 canales. Recepción de banda de 35MHz. Alimentación de 4.8V a 6V Peso 9.8g

FIGURA 1.27: RECEPTOR FM 1.4.4.3.

Conclusiones de sistema de control:

Se utilizará un sistema de radiocontrol por FM para controlar el robot. Por su relación características-precio se ha elegido el emisor y receptor Guanli Skysport 4, con un rango de alcance de 300 metros aproximadamente, que para el prototipo es más que suficiente. Para el robot final se estudiará la posibilidad de incorporar un radiocontrol de mayor alcance.

1.4.5. Monitoreo en tiempo real Existen módulos de video que incluyen el módulo de transmisión y el módulo de recepción al igual que sucede en los controles de radiofrecuencia como se muestra en la figura 1.28. Los módulos de transmisión y recepción de audio y vídeo inalámbricos, transmite la señal de vídeo y audio de forma inalámbrica, con alta fidelidad y bajo ruido, a una distancia que puede llegar a los 600 metros o más, dependiendo de la visibilidad y obstáculos entre el módulo transmisor y el receptor. Usan como portadora una señal de 2.4 Ghz y modulación FM que permite una alta calidad de la señal. Con el fin de mejorar y garantizar la recepción clara de la imagen y el sonido. El equipo se acompaña de una antena externa direccional, que puede ser conectada al receptor. De esta forma, es posible enfocar la antena apuntando a donde se encuentre el transmisor, para obtener así menos pérdidas de señal y una mayor calidad en la recepción del audio y vídeo. El transmisor incorpora una antena omnidireccional. De esta forma, en Página 34 de 115

caso de usar un único transmisor y varios receptores, es posible apuntar las antenas de estos hacia el transmisor y así optimizar el comportamiento del sistema completo.

FIGURA 1.28: MÓDULO DE VIDEO 1.4.5.1.

Conclusiones de monitoreo en tiempo real:

Para el monitoreo en tiempo real se va a usar un módulo de video, el cual tiene un rango de comunicación de 300 metros aproximadamente, distancia suficiente para el prototipo. Al igual que con el radiocontrol, de cara al robot definitivo se miraría algún módulo de video que se comunique a mayor distancia.

1.4.6. Materiales de construcción para el robot Hay que recordar que este va a ser un prototipo, y es por eso que para la elección de los materiales va a depender de varios factores: a. Materiales dúctiles y fáciles de trabajar: Todas las piezas se van a construir a mano, por lo que deben ser lo más fáciles de trabajar posible. b. Materiales ligeros: Cuanto más ligero sea el robot, menos potencia necesitaremos en los actuadores, y por tanto servomotores más baratos. c. Materiales resistentes: El material tiene que ser lo suficientemente resistente como para soportar el peso del conjunto. d. Materiales baratos: Como siempre, también es importante el aspecto económico, así que se intentará que el material sea lo más barato posible sin perder los factores nombrados anteriormente. 1.4.6.1.

Conclusiones materiales de construcción para el robot:

Se ha pensado en el metacrilato para el cuerpo y las patas y aluminio para los soportes de los servomotores. Ambos materiales cumplen significativamente los factores nombrados anteriormente. Página 35 de 115

1.4.7. Sistema de alimentación El sistema de alimentación es un tema muy importante, ya que depende de las características de nuestro sistema, y va influir en nuestra autonomía. Antes de continuar, veamos esas características que necesitamos saber para elegir una batería adecuada. •

Alimentación de la tarjeta de control: 5v



Alimentación del módulo de video: 9v



Consumo: entre 2.5A y 5A.

Además de eso, nuestra batería deberá ser lo más ligera posible. 1.4.7.1.

Baterías de Niquel-Cadmio (Ni-Cd)

Una batería recargable de Ni-CD (o NiCd) está formada por una placa positiva de hidróxido de níquel y una placa negativa de hidróxido de cadmio. Ambas placas están separadas por un electrolito, compuesto por una solución acuosa de potasio cáustico, contenida dentro de un tejido poroso. La tensión de una batería medida en voltios (V), sin circulación de corriente, es diferente a la que se obtiene cuando ésta es sometida a un consumo, es decir, cuando se toma la medición en una situación de trabajo. Para el caso de un elemento recargable de Ni-Cd la tensión entre los bornes sin carga conectada tiene un valor de alrededor de 1,45 V. Pero con una carga que consume energía esta tensión disminuye a un valor de aproximadamente 1,25 V. Efecto inversión de polaridad: Una batería de Ni-Cd no debe ser descargada por debajo de su tensión mínima, que es de 1,1 V por elemento, ya que se corre el peligro de que se produzca una inversión de polaridad en uno o varios de sus elementos. Esto ocurre con frecuencia cuando las baterías se descargan por debajo de su valor mínimo. La inversión de polaridad se produce a causa de un cambio químico, que causa daño en el interior de los elementos y que en general no es reversible. Efecto memoria: El efecto memoria de una batería de Ni-Cd se produce como consecuencia de sobrecargas repetidas y/o descargas parciales. El fenómeno reduce la capacidad de las baterías con cargas incompletas. Se produce porque se crean unos cristales en el interior, a causa de una reacción química indebida. Para prevenirlo basta con que cada tanto se haga una carga completa. Hay cargadores en el mercado que efectúan una ecualización en las baterías, haciendo una carga muy lenta, para cargar la batería hasta su máxima carga real. Las baterías que tienen efecto memoria son las de Ni-Cd y las de Ni/MH (aunque menos que en la anterior). Las baterías que no tienen efecto memoria son las de plomo y ácido (las de los coches) y las baterías de iones de litio. 1.4.7.2.

Batería de níquel e hidruro metálico (Ni/MH)

Una batería de níquel e hidruro metálico (o Ni/MH) es un tipo de batería recargable similar a una de níquel-cadmio (Ni-Cd) pero que no contiene cadmio, un metal caro y dañino para el medioambiente. Las baterías de níquel e hidruro metálico tienden a tener una mayor capacidad que las Ni-Cd y sufren bastante menos el efecto memoria. Página 36 de 115

Las baterías de níquel e hidruro metálico son más amigables con el medio ambiente. Pueden almacenar un 30% más de energía que una de Ni-Cd equivalente, y por tanto, la carga dura más tiempo. Resultan prácticas cuando se realizan pruebas porque sus electrodos se pueden soldar sin problemas. Se requieren cargadores específicos para Ni/MH, ya que los de Ni-Cd no sirven. En la actualidad existen modelos que cargan los dos tipos. 1.4.7.3.

Baterías de Ni-Cd frente a Ni/MH

Como ventajas fundamentales, las baterías de Ni/MH tienen una mayor densidad de carga (capacidad/peso superior, aproximadamente 40%-70% más capacidad); no contienen cadmio (tóxico) y aparentemente no tienen efectos de pérdida de capacidad por mal uso o de formación de dendritas (que se forman en las baterías de Ni-Cd al producirse la inversión de la polaridad de la celda). Las baterías de Ni/MH tienen una resistencia interna superior que limita su uso en aplicaciones de alta potencia, si bien la industria ha ido solucionando esto al ofrecer nuevos tipos que igualan en capacidad de descarga a las celdas del mismo tamaño de NiCd. Otro inconveniente es que las Ni/MH no admiten una carga tan rápida como las de Ni-Cd, bajo riesgo de deteriorarlas. Los elementos de Ni/MH son sensibles al calor, aún más que los de Ni-Cd: un sobrecalentamiento puede producir gases internos y sobrepresiones que dan lugar a escapes de electrolito y pérdidas de estanqueidad, reduciendo la vida útil de las celdas. También más difícil de detectar el estado de carga total en las Ni/MH, por lo que se recomienda el uso de cargadores que especifiquen su aptitud para cargar baterías de Ni/MH, evitando así sobrecalentamientos indeseados. Las baterías de Ni-Cd poseen al menos una ventaja sobre las de Ni/MH: la cantidad de ciclos de carga y descarga, que oscilan entre los 1.000 y 1.500, contra 500 en las de Ni/MH. 1.4.7.4.

Batería de iones de litio (Li-Ion)

La batería de iones de litio, también denominada batería Li-Ion, es un dispositivo diseñado para almacenamiento de energía eléctrica que emplea como electrolito, una sal de litio que procura los iones necesarios para la reacción electroquímica reversible que tiene lugar entre el cátodo y el ánodo. Las propiedades de las baterías de Li-ion, como la ligereza de sus componentes, su elevada capacidad energética y resistencia a la descarga, la ausencia de efecto memoria o su capacidad para operar con un elevado número de ciclos de regeneración, han permitido el diseño de acumuladores livianos, de pequeño tamaño y variadas formas, con un alto rendimiento, especialmente adaptados para las aplicaciones de la industria electrónica de gran consumo. Desde la primera comercialización a principios de los años 1990 de un acumulador basado en la tecnología Li-ion, su uso se ha popularizado en aparatos como teléfonos móviles, agendas electrónicas, ordenadores portátiles y lectores de música.

Página 37 de 115

Sin embargo, su rápida degradación y sensibilidad a las elevadas temperaturas, que pueden resultar en 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, resultando en un coste superior que ha limitado la extensión de su uso a otras aplicaciones. Ventajas •

Una elevada densidad de energía: Acumulan mucha mayor carga por unidad de peso y volumen.



Poco peso: A igualdad de carga almacenada, son menos pesadas y ocupan menos volumen que las de tipo Ni-MH y mucho menos que las de Ni-Cd y Plomo.



Alto voltaje por célula: Cada batería proporciona 3,7 voltios, lo mismo que tres baterías de Ni-MH o Ni-Cd (1,2 V cada una).



Carecen de efecto memoria.



Descarga lineal: Durante toda la descarga, el voltaje de la batería varía poco, lo que evita la necesidad de circuitos reguladores. Esto es una ventaja, ya que hace muy fácil saber la carga que almacena la batería.



Muy baja tasa de auto-descarga: Cuando guardamos una batería, ésta se descarga progresivamente aunque no la usemos. En el caso de las baterías de Ni-MH, esta "auto-descarga" puede suponer más de un 20% mensual. En el caso de Li-Ion es de menos un 6% en el mismo periodo. Mucha de ellas, tras seis meses en reposo, pueden retener un 80% de su carga.

Inconvenientes A pesar de todas sus ventajas, esta tecnología no es el sistema perfecto para el almacenaje de energía, pues tiene varios defectos, como pueden ser: •

Duración media: Depende de la cantidad de carga que almacenen, independientemente de su uso. Tienen una vida útil de unos 3 años o más si se almacenan con un 40% de su carga máxima (en realidad, cualquier batería, independientemente de su tecnología, si se almacena sin carga se deteriora).



Soportan un número limitado de cargas: entre 300 y 1000, menos que una batería de Ni-Cd e igual que las de Ni-MH, por lo que hoy día ya empiezan a ser consideradas en la categoría de consumibles.



Son costosas: Su fabricación es más costosa que las de Ni-Cd e igual que las de Ni-MH, si bien actualmente el precio baja rápidamente debido a su gran penetración en el mercado, con el consiguiente abaratamiento.



Peor capacidad de trabajo en frío: Ofrecen un rendimiento inferior a las baterías de Ni-Cd o Ni-MH a bajas temperaturas, reduciendo su duración hasta en un 25%.

Cuidado de la batería li-ion Estas baterías no tienen efecto memoria, y por ello no hace falta descargarlas por completo. De hecho no es recomendable, dado que puede acortar mucho su vida útil. Sin embargo, y a pesar de no requerir de un mantenimiento especial, al igual que las otras baterías, necesitan ciertos cuidados: Página 38 de 115



Es recomendable que permanezcan en un sitio fresco (15°C), y evitar el calor.



Cuando se vayan a almacenar mucho tiempo, se recomienda dejarlas con carga intermedia (40%). Asimismo, se debe evitar mantenerlas con carga completa durante largos períodos.



La primera carga no es decisiva en cuanto a su duración y no es preciso hacerla; el funcionamiento de una batería de ión de Litio en la primera carga es igual al de las siguientes. Es un mito probablemente heredado de las baterías de níquel.



Es preciso cargarlas con un cargador específico para esta tecnología. Usar un cargador inadecuado dañará la batería y puede hacer que se incendie. 1.4.7.5.

Conclusiones del sistema de alimentación

Por todas sus ventajas e insignificantes inconvenientes se va a usar baterías de li-ion para el prototipo. Sobre todo por su ligereza y gran potencia. Mirando en el mercado se han encontrado unas baterías de li-ion de 3.7v, 4500mAh y tan solo 45 gramos de peso. De esta manera, con dos baterías de este tipo en serie lograríamos una tensión de 7.4v, que con la ayuda de un regulador o un convertidor DCDC podríamos descender a los 5v deseados. Cabe mencionar que para las pruebas del código, durante el desarrollo del proyecto, se usará una fuente de alimentación.

1.4.8. Resumen de conclusiones generales de análisis de soluciones

1.5.



Sistema de locomoción mediante patas



Numero de patas: 6



Se usarán servomotores para las articulaciones



Cada pata tendrá 3 grados de libertad



Se controlará con un PIC16F877A



La comunicación de control será mediante radiofrecuencia



El monitoreo en tiempo real se resolverá con un módulo de video



Se utilizará metacrilato y aluminio como material de construcción



Alimentación con 2 baterías de li-ion de 3.7v y 4500mAh

Desarrollo

1.5.1. Construcción de piezas estructurales En este apartado se presentará el desarrollo, construcción y montaje de las partes que conforman el robot hexápodo. Como hemos dicho anteriormente, la elección de los materiales que se van a usar para construir el prototipo van a ser metacrilato y aluminio.

Página 39 de 115

Se empezó haciendo una maqueta en AutoCAD de la forma del cuerpo, patas y soportes para los servos. Los planos de estas maquetas se adjuntarán en el apartado de planos. En la figura 1.29 vemos como se ha dibujado encima del metacrilato la forma de la maqueta, para después cortar la pieza mediante una sierra de mano. Se observa el cuerpo cortado, y algunas partes de pata.

FIGURA 1.29: CONSTRUCCIÓN DE PIEZAS Para los soportes se ha usado aluminio puesto que se prevé que esta pieza va a ser sometida a fuerzas mayores necesitamos un material más fuerte que el metacrilato, igualmente ligero y fácil de trabajar. Se hizo un diseño teniendo en cuenta el tamaño de los servomotores, con la intención de crear una pieza donde se unieran dos servomotores y se creara un bloque con una funcionalidad similar a la que tiene el hombro o la cadera, y de esta manera esta articulación o conjunto de articulaciones sea la encargada de avanzar, retroceder, subir y bajar la pata. También hará de unión entre la pata y el cuerpo del robot.

FIGURA 1.30: CONSTRUCCIÓN PIEZAS II En la figura superior se observa una placa de aluminio con el dibujo de la forma de tres de las piezas que se usarán como soporte de los servomotores para unir cuerpo y pata. Para cortar este material se ha usado una sierra de metal de mano, además de una lima de metal y lijas para dar un acabado sin virutas ni resortes.

FIGURA 1.31: CONSTRUCCIÓN PIEZAS III Página 40 de 115

FIGURA 1.32: CONSTRUCCIÓN PIEZAS IV En la figura 1.31 se ve la pieza nombrada anteriormente cortada y moldeada, y en la figura 1.32 ya pintada y con los servos montados. Una vez cortadas y limadas todas las piezas toca montar el conjunto. En primer lugar se han colocado las articulaciones que harán la función de la cadera, y a continuación las patas. La parte de la pata más cercana a la cadera la llamaremos fémur y la más alejada tibia.

FIGURA 1.33: MONTAJE PIEZAS En la figura inferior se observa el montaje completo del robot. Es te montaje se ha hecho con la única finalidad de comprobar que todas las piezas están bien hechas y encajan bien. De hecho, llegados a este punto, se tuvo que hacer algún cambio en el diseño inicial de las patas, ya que se comprobó que el fémur de la pata rozaba con la estructura que hace la función de cadera.

FIGURA 1.34: MONTAJE COMPLETO DEL ROBOT Página 41 de 115

Más adelante, será necesario volver a desmontar para calibrar los servos en las posiciones deseadas, dependiendo del código.

1.5.2. Programación Para llevar a cabo la programación debemos entender muy bien el funcionamiento de los servomotores. Este se ha explicado en el apartado de actuadores, aun así haremos hincapié en lo más importante, que es lo siguiente: •

La posición del servomotor vendrá definida por un ancho de pulso, es decir, dependiendo del tamaño del pulso que le llegue a la señal la posición será una u otra. En nuestro caso: o Ancho de pulso de 1ms = 0º o Ancho de pulso de 1.5ms = 90º o Ancho de pulso de 2ms = 180º



Para que un servomotor mantenga la posición debe recibir un pulso cada 20ms aproximadamente.

Visto esto, vamos a mostrar el diagrama de bloques del programa principal (Figura 1.35). Empezaremos el programa configurando puertos, temporizadores, CCP’s y variables. Cabe mencionar que usamos una variable de tiempo para cambiar los valores de pulso de los servomotores y de esta manera su posición, es decir, estos pulsos no podrán ser variados a menos de que pase un tiempo mínimo, así le damos tiempo al motor para que llegue a su posición antes de volver a variar los valores de pulso. Con esto, la primera parte del programa será para que se levante el robot. Para hacer esto de una manera eficiente, siempre que se encienda el robot, las patas se levantarán logrando una posición tal que cuando bajen para elevar el cuerpo del robot estas estén completamente perpendicular al suelo. En este punto entramos en el lazo de control. En primer lugar se comprobará la misma variable de tiempo, para que no haya ningún cambio en la posición de los servos a menos de que haya pasado el tiempo mínimo. Una vez se ha superado el tiempo mínimo, se hace un escrutinio de la variable de control. Esta variable nos indicará si queremos avanzar, retroceder, girar a izquierda o derecha o no hacer nada, que en este último caso permanecería estático en la posición de reposo. Más adelante explicaremos la interrupción que hace que se modifique esta variable de control en función de la señal recibida por el radiocontrol. Una vez hecho el escrutinio de la variable de control, y sepamos qué movimiento queremos realizar, se hará otro escrutinio, en este caso de la variable de estado. Como hemos visto en la figura 1.7, el avance tiene cuatro estados, y esto pasa con todos los movimientos, excepto el de reposo, que es una posición estática, y por tanto solo tendrá un estado, así que no será necesario hacer ningún escrutinio de esta variable. En cada estado se modificara los valores de pulso variando la posición del motor, dependiendo del estado en que nos encontremos, logrando la posición concreta deseada de la pata.

Página 42 de 115

FIGURA 1.35: DIAGRAMA DE BLOQUES DEL PROGRAMA PRINCIPAL Página 43 de 115

Además se implementará una variable de altura, que dependiendo de su valor, variará la altura entre el suelo y el cuerpo del robot. Esta parte no está contemplada en el diagrama de bloques, pero en cada estado de posición se hará una comprobación de esta variable de altura, modificando de esta manera los valores de pulso de los servos que elevan el cuerpo del robot. Una vez modificados los valores de los pulsos, se vuelve al lazo de control para iniciar de nuevo todo el proceso. En general, se podría resumir este bloque diciendo que su función es simplemente variar los valores de los pulsos de todos los servos de manera secuencial, y así lograr un movimiento completo, ya sea el de caminar o girar. Una de las primeras acciones que se ha hecho en este bloque del programa principal es configurar los temporizadores. Los tres se han configurado para que generen una interrupción. El temporizador 1 se usará para codificar la señal recibida por el radiocontrol, y de esta manera saber que acción queremos llevar a cabo. Ya que los servos necesitan recibir un pulso cada 20ms, el temporizador 0 se configurará para que genere una interrupción transcurrido ese tiempo. El temporizador 2 se encargará de generar el pulso necesario de cada servo. Veámoslo con más detalle. En la figura 1.38 se observa el diagrama de bloques de la interrupción. Como hemos dicho anteriormente, el temporizador 0 generará una interrupción cada 20ms para empezar a mandar las señales a los servos. El pistoletazo de salida se dará poniendo el valor de lo que tiene que tardar el pulso del servo 1, activando la señal y encendiendo el temporizador 2. De esta manera cuando se termine el tiempo de pulso, el temporizador 2 generará otra interrupción donde podremos desactivar la señal del servo 1, poner el valor de lo que tardará el siguiente pulso y activando su señal correspondiente. Así sucesivamente hasta que logremos enviar las 8 señales de los diferentes servos. A partir de aquí se esperará hasta que vuelvan a pasar los 20ms para repetir la secuencia.

FIGURA 1.36: SEÑALES CON INTERRUPCIONES En la figura 1.36 se muestra de forma visual como generamos las señales de cada servo mediante las interrupciones del temporizador 1 y 2. Visto esto, vemos como tenemos solamente el espacio de 20ms para enviar todas las señales y debemos comprobar que sea tiempo suficiente. El peor de los casos se dará cuando todos los servos estén en posición de 180º, ya que el pulso será lo más grande posible, de 2.5ms cada uno. Si lo multiplicamos por 8, que son las señales que debemos enviar, nos da un resultado de 20ms. Sería suficiente, aunque un poco justo, ya que es exactamente el tiempo que tenemos para enviar todas las señales. De todas maneras tenemos que concretar, que ese caso no se dará nunca ya que no vamos a utilizar ninguna posición en el manejo del robot que requiera que todos Página 44 de 115

los servos estén en 180º. De esta manera siempre tendremos un tiempo de margen entre la señal generada para el último servo y la interrupción de los 20ms. Otro asunto que hay que explicar es por qué enviamos solamente 8 señales si realmente hay 18 servos. Para la explicación vamos a ayudarnos con la figura 1.37, donde están representados todos los servos y sus posiciones.

FIGURA 1.37: SEÑALES PARA LOS SERVOS Anteriormente, cuando hemos estudiado los movimientos de locomoción de un hexápodo, hemos observado que para el movimiento de avance las patas se movían en bloques de tres, es decir, que la pata 1, 3, y 5 hacen exactamente el mismo movimiento, mientras pasa lo mismo con las patas 2,4 y 6. A la hora de girar esto varia un poco, las tres articulaciones de las patas 1 y 3 se moverán exactamente igual, mientras que con la pata 5 solo coincidirán dos de las tres articulaciones, es por eso que la articulación correspondiente al servo 4 va independiente y lo mismo con el servo 8. Siguiendo esa lógica, en la figura de la izquierda se han pintado del mismo color los servos que siempre harán el mismo movimiento, por lo tanto, solamente se necesitará una señal para controlar los servos del mismo color. Es por eso que en total solo necesitaremos ocho señales para controlar los dieciocho servo-motores. Las interrupciones de CCP1 y CCP2 se usarán para saber la anchura del pulso que estoy recibiendo del receptor de radiofrecuencia y poder tomar una acción en función de lo que reciba. Necesitamos realizar por lo menos seis acciones, que son las siguientes: avanzar, retroceder, girar a la derecha, girar a la izquierda, elevar el cuerpo y bajarlo. La intención inicial era utilizar 3 de los 4 canales que tiene el transmisor; un canal para el avance y el retroceso, otro canal para girar a derechas e izquierdas, y un tercero para elevar y bajar el cuerpo del robot. Además sabemos que el pulso que recibiremos en un canal variará en función de la posición del joystick del mando y eso lo usaremos para diferenciar las dos acciones dentro de un mismo canal. Para entender bien el código primero hay que saber qué señales se reciben y de qué manera, es por eso que lo primero que se hizo fue ver mediante el osciloscopio esas señales. (Véase en la figura 1.39) Página 45 de 115

FIGURA 1.38: DIAGRAMA DE BLOQUES DE INTERRUPCIÓN

FIGURA 1.39: SEÑALES RECIBIDAS EN LOS CANALES 2, 3 Y 4 DEL RECEPTOR DE FM Lo primero que vemos al examinar esas señales es que los pulsos varían entre 1ms y 2 ms moviendo el joystick de cada canal a ambos extremos. Lo segundo que observamos es que las señales se envían consecutivamente, es decir, al terminar el pulso del canal 2 se envía inmediatamente el pulso del canal 3, y cuando este termina se envía el pulso del canal 4. Gracias a eso solo vamos a necesitar usar dos canales. Una vez vistos estos conceptos, vamos a proceder a explicar las interrupciones de CCP1 y CCP2. Conectaremos físicamente el canal 2 a CCP1 y el canal 4 a CCP2. En el programa principal se configurarán ambos CCP’s en modo captura y para que interrumpan cuando les llegue un flanco de subida, pero inicialmente solo habilitaremos CCP1 para que la primera señal que recibamos sea la del canal 2. Una vez se genere una interrupción en CCP1 se tendrá que diferenciar entre flanco de subida y flanco de bajada.

FIGURA 1.40: INTERRUPCIÓN CCP1 Y CCP2

- Interrupción por flanco de subida de CCP1: Se hará un borrado del registro TMR1, es decir, un reset del temporizador 1. También un cambio de configuración en CCP1 para que interrumpa en el siguiente flanco de bajada. - Interrupción por flanco de bajada de CCP1: Se hará una captura del temporizador, de esta manera sabremos el tiempo exacto del pulso del canal 2. Dependiendo de este pulso se modificará la variable de control. Es decir, si el pulso es más pequeño que 1.3ms, significa que la posición del joystick se encuentra atrás, así que la variable de control será modificada para que el programa ejecute la secuencia de retroceso. De la misma manera si el pulso se encuentra entre 1.3ms y 1.7ms la variable de control se pondrá en modo quieto, y si el pulso es mayor de 1.7 ms entonces la variable será de avance. Antes de salir de la interrupción generada por el flanco de bajada de CCP1, se volverá a cambiar la configuración de este, para que se produzca interrupción en el siguiente flanco de subida, y de esta manera repetir el ciclo en el siguiente pulso generado por el canal 2. Además se volverá a limpiar el temporizador 1, para que empiece a contar desde cero de nuevo. Lo siguiente que recibiremos será la interrupción generada por CCP2 producida por el canal 4. - Interrupción por flanco de subida de CCP2: Recordemos que entre el flanco de bajada de CCP1 y el flanco de subida de CCP2 se va a encontrar el pulso producido por el canal 3, tal y como vemos en la figura 1.36, así que lo primero que tendremos que hacer es mirar la captura del temporizador 1. Como en la salida de la interrupción del flanco de bajada de CCP1 habíamos reseteado el temporizador, en esta captura tendremos el tiempo del pulso del canal 3. Igual que hemos hecho antes, haremos un escrutinio de ese tiempo de manera que dependiendo del pulso del canal 3, se variará la variable de altura. Antes de salir se cambiará la configuración de CCP2 para que genere interrupción en el siguiente flanco de bajada y volveremos a resetear el temporizador 1. - Interrupción por flanco de bajada de CCP2: Se realizará el mismo proceso que en el flanco de bajada de CCP1, con la diferencia que la variable de control que se modificará esta vez indicará el giro a derecha o izquierda.

1.5.3. Circuito de control, diseño y desarrollo de la P.C.B. En primer lugar, mencionar que P.C.B. es acrónimo de la frase en inglés: "Printed Circuit Board" Placa de circuito impreso); Hay diferentes tipos de circuitos impresos, y estos se pueden clasificar dependiendo de: •

Su rigidiza: o Rígidos: El material base donde se soportan los componentes y las pistas es firme y rígido. o Flexibles: El material base donde se soportan los componentes y las pistas es flexible. o Mixtos: Combinación de los dos anteriores.



El número de caras: o SSB (Singel Side Board): Una cara imprimida con pistas Página 48 de 115

o DSB (Doble Side Board): Dos caras imprimidas con pistas o MSB (Multiple Side Board): Dos capas extremas imprimidas con pistas, y alguna intermedia, es decir, más de dos capas. •

El método de transferencia de la imagen a la cara: o Métodos aditivos: La capa conductora no está al principio y se transfiere positivamente en una segunda fase, es decir, añadimos el Cu solo en los sitios donde habrá pista. o Método substractivo: La capa conductora, el Cu, ocupa previamente toda la superficie de la capa y en una segunda fase se elimina en los lugares donde no se desea pista. Este es el método más usado.

Visto esto, cabe mencionar que nuestra placa de circuito impreso será rígida, de cara simple y el método de transferencia que usaremos será el substractivo. A continuación vamos a ver el proceso que se ha seguido para el diseño y construcción de nuestra placa de circuito integrado. 1.5.3.1.

FASE 1: Diseño del circuito

1) Creación del diagrama de bloques del circuito. 2) Creación del esquema eléctrico formal del circuito. Archivo conocido como el “Schematic” En nuestro caso usaremos el programa EAGLE.

FIGURA 1.41: ESQUEMA DEL CIRCUITO DE LA PLACA Página 49 de 115

3) Simulación del circuito y corrección de ser necesario. En la figura 1.41 se puede observar el esquema que se ha implementado para la construcción de nuestro circuito impreso. Vemos como es un circuito bastante sencillo, eso es gracias a que la mayor parte electrónica de control que necesitamos se encuentra integrada dentro del servo-motor. Se diferencia en el circuito claramente las conexiones de los dieciocho servomotores, conectadas a alimentación (Vcc y GND) y a su señal correspondiente que generará el PIC gracias a nuestro código. Como hemos explicado con anterioridad se necesitarán los pines CCP1, CPP2 y INTRB0 para la comunicación mediante radiofrecuencia. Por último se ha añadido una toma de alimentación para el receptor de FM, un reloj de 20Mhz, un pulsador para poder hacer reset manual mediante el pin “MASTER CLEAR” y un interruptor para encender y apagar la placa. 1.5.3.2.

FASE 2: Diseño de la placa:

4) Ubicación inicial de los componentes sobre la placa y establecimiento de las conexiones lógicas entre ellos. (a partir de aquí se buscará un camino posible para las pistas sin que se crucen. Este proceso se llama Enrutado o Routing).

FIGURA 1.42: DISTRIBUCIÓN DE COMPONENTES Y ENRUTADO 5) Si es necesario se harán cambios en la orientación y posición de los componentes para tener mejores posibilidades de enrutado. 6) Revisión de la anchura y distancia entre pistas. Página 50 de 115

7) Generación final del resultado, en forma de fotolitos o dibujos en blanco y negro de les pistas. Útiles para método fotolitográfico. En nuestro caso, se ha imprimido el circuito en papel transparente, típico de transparencias para diapositivas, ya que de esta manera, la zona que no esté pintada estará bien irradiada con rayos ultravioleta. 1.5.3.3.

FASE 3: Diseño de la placa:

8) Cortar y mecanizar la placa 9) Transferir la imagen del circuito sobre la placa. En nuestro caso hemos comprado una placa fotosensible, así que para hacer la transferencia utilizaremos una insoladora de rayos ultravioleta que nos han prestado.

FIGURA 1.43: INSOLADORA DE ULTRAVIOLETA

FIGURA 1.44: INSTRUCCIONES INSOLADORA Para transferir la imagen tenemos que retirar la capa protectora que cubre la placa por la cara que queremos irradiar, es decir, la cara del cobre, y poner nuestro fotolito con la cara correcta entre la placa y la insoladora de ultravioleta. La duración del proceso de insolación varía en función de la potencia de los tubos actínicos y del tipo de placa que usemos. Por lo normal, ese tiempo suele ser de entre 3 y 8 minutos. Página 51 de 115

10) Ataque químico. Hay que mencionar que el líquido revelador y el líquido atacador lo hemos fabricado de forma casera en función de su composición. El líquido revelador está formado por agua y sosa cáustica, llamada oficialmente “Hidróxido de sodio” o “NaOH” y se puede encontrar en escamas, bolas o perlas. Es indiferente el formato, aunque es importante que su composición sea >98% Esta solución se basa en dos cucharadas de postre (unos 8 gramos) de sosa cáustica por cada medio litro de agua. Como al mezclar estos dos componentes lo que estamos haciendo es provocar una reacción química, se debe llenar primero una cubeta o botella con 125ml de agua a temperatura ambiente, después echar dos cucharadas de sosa y esperar a que se disuelva. Una vez disueltas las escamas de sosa, veremos que el agua está caliente. Es entonces cuando añadimos los restantes 125ml de agua. Con esta solución, ya tenemos creado nuestro líquido revelador casero. Poco a poco irá perdiendo su capacidad exotérmica, es decir, se irá enfriando, pero pese a estar fría, con medio litro de solución tendremos capacidad para revelar unas 4 o 5 placas de 10x16cm. Para preparar el líquido atacador, hay que saber que es una solución compuesta por ácido clorhídrico, agua oxigenada y en algunos casos agua para que la reacción no sea tan fuerte. Respecto al ácido clorhídrico, puede ser Salfumant o Agua Fuerte, que dependiendo del lugar se llama de una forma u otra. Pero lo que no varía es su fórmula química: HCL. Realmente lo que compramos es una disolución en agua, puesto que en su estado natural es un gas, formado por la adición de ácido sulfúrico y sal. En cuanto al agua oxigenada debe ser de 110 volúmenes, es decir, una disolución más concentrada que la que se usa para curar heridas, que es de 10 volúmenes. A pesar de eso, esta también la podemos encontrar en farmacias o droguerías. La proporción para hacer nuestro líquido atacador ha de ser: -

1 Parte de Agua oxigenada

-

1 Parte de Salfumant

-

2 Partes de agua corriente para frenar algo la reacción

FIGURA 1.45: FOTOLITO, REVELADOR Y ATACADOR Página 52 de 115

El primer paso del ataque químico es el baño con revelador. El baño durará algunos minutos. Hay que ir moviendo la placa como si estuviésemos revelando una foto (de hecho, el proceso es el mismo). Vemos en la figura 1.46 como poco a poco, las pistas comienzan a aparecer.

FIGURA 1.46: BAÑO CON REVELADOR Cuando veamos que las pistas están perfectamente definidas, podemos retirarla y comenzar el siguiente paso, el baño con el líquido atacador. Este líquido atacador se comerá el cobre que ha sido irradiado con rayos ultravioleta, dejando de esta manera las pistas deseadas intactas. (Véase en la figura 1.47)

FIGURA 1.47: BAÑO CON ATACADOR 11) Hacer agujeros para componentes. 12) Verificación final de la placa. Se comprueba que las pistas conducen con normalidad y no hay ninguna pista cortada. 13) Soldadura de componentes.

FIGURA 1.48: CARA BOTTOM Página 53 de 115

En la figura 1.48 está fotografiada la cara “bottom” y podemos observar las soldaduras de los componentes a las pistas. 14) Inspección de componentes y soldaduras. Cabe mencionar que en esta parte hemos tenido que reforzar alguna pista con estaño porque no había continuidad. 15) Comprobación del funcionamiento real del prototipo.

FIGURA 1.49: CARA TOP 16) Por último, y una vez comprobado que el funcionamiento es correcto se procederá a montar la placa en la base del cuerpo del robot.

FIGURA 1.50: MONTAJE PCB CARA INFERIOR

FIGURA 1.51: MONTAJE PCB CARA SUPERIOR Página 54 de 115

1.6.

Evaluaciones

1.6.1. Pruebas de la placa P.C.B. En la placa de circuito impreso se tuvo que estañar alguna pista, debido a la falta de continuidad eléctrica. También hay que comentar que esta placa se hizo simultáneamente a la programación del código, es por eso que se han puesto componentes que finalmente no han sido necesarios, como por ejemplo el conector macho vinculado a la pata del microcontrolador “INT RB0”. En un principio se quería utilizar la interrupción RB para medir el pulso recibido por el tercer canal del receptor de FM, ya que los otros dos canales iban a ser controlados por CCP1 y CCP2. Como hemos explicado en el apartado de programación del desarrollo con las dos CCP ha sido suficiente para controlar el pulso de los tres canales, sin necesitar de esta manera la interrupción generada por el puerto B.

1.6.2. Pruebas de control de mecanismos y servomotores Las pruebas realizadas de los mecanismos acoplados a los servomotores o actuadores se ejecutaron satisfactoriamente ya que todos los comandos enviados por el usuario a través del control remoto tuvieron un 100% de funcionamiento. Las primeras pruebas de control se hicieron solamente con una pata, y controlando sus tres articulaciones mediante código directamente, sin usar el radiocontrol. Una vez comprobado que el código controlaba de forma satisfactorio los tres servos de una pata, se procedió al control total de las seis patas.

1.6.3. Pruebas de control para la comunicación de radiofrecuencia Las pruebas se realizaron tanto de los módulos de radiofrecuencia del control como de los módulos de video de la videocámara. 1.6.3.1.

Pruebas de comunicación módulo transmisor-receptor “Guanli”

La comunicación RF es instantánea y muy satisfactoria tal y como podremos observar en las tablas siguientes, donde se hace una recopilación de los resultados obtenidos. Las pruebas se realizaron con obstáculos y sin obstáculos. •

Comunicación sin obstáculos

Número de prueba

Distancia (m.)

Dato recibido

1

10

SI

2

100

SI

3

200

SI

4

300

SI

5

350

NO

Página 55 de 115



Comunicación con obstáculos

Número de prueba

Distancia (m.)

Dato recibido

1

10

SI

2

100

SI

3

200

SI

4

250

SI

5

300

NO

En estas dos tablas podemos ver el rango de operación de nuestro radio-control. A pesar de ser uno de los más baratos del mercado, logra comunicar hasta una distancia de 300m sin obstáculos y 250m con ellos, mucho más que suficiente para realizar pruebas en nuestro prototipo. 1.6.3.2.

Pruebas de comunicación módulo transmisor-receptor de video

Estas pruebas también se realizaron con obstáculos y sin ellos. Veamos los resultados representados en las siguientes tablas. •

Comunicación sin obstáculos

Número de prueba

Distancia (m.)

Dato recibido

1

10

SI

2

100

SI

3

200

SI

4

300

SI

5

350

NO



Comunicación con obstáculos

Número de prueba

Distancia (m.)

Dato recibido

1

10

SI

2

100

SI

3

200

SI

4

250

SI

5

300

NO

Vemos que los resultados son muy parecidos a los obtenidos con la comunicación de radiocontrol, con la diferencia, que la imagen se va perdiendo progresivamente. Igualmente son muy satisfactorios.

Página 56 de 115

1.6.4. Pruebas de control del robot hexápodo En este apartado se hará una comprobación del manejo de las patas. Ya hemos visto que los actuadores son capaces de moverse a la posición que deseamos, pero queda comprobar cómo funciona el conjunto total, y ver si el robot es capaz de realizar correctamente las acciones de andar, retroceder y girar. Hay que comentar que en un principio se hicieron los planos de las patas sin tener en cuenta los cálculos mostrados en el apartado de “Actuadores”, en el análisis de soluciones. Es decir, las decisiones de diseño de las patas y el cuerpo se hicieron de forma puramente estética. Eso implicó que los actuadores no tuvieran la suficiente fuerza para hacer caminar al robot de una manera estable, debido a que la longitud de las patas era demasiado grande, para la potencia de los actuadores. Como comprar 18 servomotores más potentes iba a resultar muy caro y todavía nos quedaba metacrilato que poder aprovechar, se optó por la solución de hacer patas más cortas y esta vez previamente se hicieron los cálculos vistos en el apartado de “Actuadores”, para asegurarnos que esa modificación iba a ser suficiente. Se adjuntarán los planos de las piezas definitivas en el documento 3, nombrado “Planos”. También se observó que cuando se empezaron las pruebas, los movimientos de andar, retroceder y girar se hacían correctamente, pero el robot perdía el equilibrio en algunas situaciones cuando el peso se soportaba con tres patas. Eso era debido a que tal y como teníamos configuradas la posición de las patas, el centro de gravedad en ese momento no estaba centrado, y por consecuencia se desequilibraba. Eso se solucionó modificando las posiciones de las patas, para que en el momento de apoyo en trípode el centro de gravedad del robot coincidiera aproximadamente con el baricentro del triángulo que forman los puntos de apoyo de las tres patas, logrando así un equilibrio perfecto. Una vez solucionados estos problemas, se puede ver en la tabla inferior, donde se recogen los resultados de las pruebas, que estas fueron satisfactorias, ya que cumplen con su finalidad.

Posición inicial

Avance

Retroceso

Giro derecha

Comandos

Respuesta del robot

Alto

SI

Medio

SI

Bajo

SI

Alto

SI

Medio

SI

Bajo

SI

Alto

SI

Medio

SI

Bajo

SI

Alto

SI

Medio

SI

Bajo

SI Página 57 de 115

Giro izquierda

Alto

SI

Medio

SI

Bajo

SI

Donde encontramos más problemas son en las posiciones elevadas del robot, ya que es cuando se produce la mayor distancia entre el punto de apoyo y el servo y se tiene que aplicar un mayor par motor. Se solucionaría comprando actuadores de mayor par.

1.6.5. Pruebas totales del sistema en función de la superficie 1.6.5.1.

Superficies lisas

Sobre este tipo de superficies el robot se desplaza sin problemas en todos sus modos (alto, medio y bajo), y en todas direcciones. 1.6.5.2.

Superficies planas rugosas

En superficies planas rugosas tampoco tiene problema en ninguno de sus modos de trabajo. 1.6.5.3.

Superficies inestables

Con respecto a las superficies inestables, empezamos a encontrar alguna dificultad. Cabe mencionar que los modos de trabajo donde el cuerpo se eleva, están hechos pensando en este tipo de terrenos y superficies. El problema lo encontramos en que, como hemos comentado anteriormente, precisamente en esas posiciones los servos sufren más a causa de su poca potencia. Además, si el terreno es muy abrupto, es posible que se quede alguna pata sin contactar con la superficie, cosa que aún hace que los servos vayan más apurados. La solución para que no pasara esto sería incorporando pulsadores al final de las patas, para que la pata deje de descender al contactar con el suelo. Aun así, consigue desplazarse, y los pocos problemas que surgen en la locomoción sobre este tipo de superficie son fácilmente solucionables, con un presupuesto un poco mayor.

1.6.6. Alcances y limitaciones 1.6.6.1.

Alcances



Permite el monitoreo dentro de lugares de difícil acceso para el ser humano.



Permite grabar un video para su posterior análisis.



Cumple el trabajo mediante un control remoto.



El robot puede realizar monitoreo en otros entornos de trabajo y puede ser grabada esta información en una PC.



El bloque trasmisor puede ser utilizado en otras aplicaciones.



El receptor posee tres canales libres para rediseños futuros en el robot hexápodo Página 58 de 115

1.6.6.2.

1.7.

Limitaciones



El tiempo de trabajo del robot está limitado por la duración de la batería.



Una distancia limitada de 300m sobre el control del robot.



Los obstáculos limitan el control del robot.



El área de trabajo del robot se limita a superficies planas, pequeñas rugosidades y superficies inestables ligeras, ya que es un prototipo.



No puede trabajar en lugares donde hay aparatos que trabajen a la misma frecuencia que el sistema de control del robot.

Propuesta de mejoras

1.7.1. Servomotores más potentes En primer lugar la mejora más evidente es la de incorporar al robot servo-motores de mayor par motor. Con eso mejoraríamos muchísimo la calidad de locomoción en niveles altos, y no permitiría incorporar más peso en el cuerpo del robot, cosa que nos ha tenido muy limitado a lo largo del proyecto.

1.7.2. Sistema de alimentación con fuente conmutada de CC a CC El sistema de alimentación es una cosa que se ha dejado para el final, siendo inconscientes hasta el último momento de la gran importancia que tiene. Cabe mencionar que una de las complicaciones que tiene alimentar nuestro sistema, es el su elevado consumo de corriente, que es de aproximadamente 2,5A con picos de hasta 3,7A. Eso sumado a los límites de peso provocados por la poca potencia de los servo-motores, hace complicada la elección de la batería. Si se implementara la mejora comentada anteriormente de incorporar servos más potentes, tendríamos más margen en la elección de este sistema de alimentación, por lo menos en cuanto al peso se refiere, ya que se podría instalar una batería más pesada. Recordemos que la solución optada finalmente ha sido la de utilizar dos baterías de li-ion en serie de 4500mAh y 3,7V cada una, resultando una tensión total de 7,4V. Para reducir esa tensión a los 5V deseados necesarios para alimentar la tarjeta de control, se ha contado con un regulador de tensión lineal, lo que hace el sistema poco eficiente ya que regula el voltaje de la salida disipando el exceso de energía como calor. La propuesta de mejora presentada para este apartado sería la de usar una fuente conmutada de CC a CC, que usa la señal de control para variar el ancho de pulso, tomando de la alimentación solamente la energía requerida por la carga. En todas las topologías de fuentes conmutadas, se apagan y se encienden los transistores completamente. Así, idealmente, las fuentes conmutadas son 100% eficientes. El único calor generado se da por las características no ideales de los componentes. Pérdidas en la conmutación en los transistores, resistencia directa de los transistores saturados, resistencia serie equivalente en el inductor y los condensadores, y la caída de voltaje por el rectificador bajan la eficiencia. Página 59 de 115

Sin embargo, optimizando el diseño, la cantidad de energía disipada y calor pueden ser reducidos al mínimo. Un buen diseño puede tener una eficiencia de conversión de 95%.

1.7.3. Pulsadores en los extremos de las patas Otra mejora sería la de incorporar pulsadores en las patas de manera que durante el desplazamiento del robot, la pata no se detenga hasta contactar con el suelo, es decir, hasta que se pulse el pulsador. Esto implicaría un ligero cambio de código, pero gracias a ello habría una mejora significativa en la locomoción sobre terreno inestable ya que se lograría que el cuerpo siempre fuese horizontal, mejorando su equilibrio y no aseguraríamos de que todas las patas están en contacto con el suelo, repartiendo la carga.

1.7.4. Estructura mecánica Todas las piezas estructurales del robot se han hecho a mano, lo que implica pequeñas pero continuas imperfecciones, haciendo que piezas que deberían ser exactamente iguales, no lo sean. Esto influye en la simetría y por lo tanto en el equilibrio de la estructura. Además el sistema de sujeción del eje del servo con la pieza no es muy bueno y produce un pequeño juego que hace que la estructura se menos estable. Con todo eso mejorado lograríamos una estructura más firme y estable, y más precisión a la hora de colocar dos patas distintas en la misma posición.

1.7.5. Visibilidad nocturna Es muy probable que en ocasiones se deban inspeccionar zonas de baja o nula luminosidad, por lo que sería necesario incorporar algún tipo de iluminación en el robot. Otra opción sería la de cambiar la cámara por otra que capte infrarrojos, para ver en la oscuridad sin necesidad de luz.

1.7.6. Código para subir escaleras Hay que tener en cuenta que hay viviendas o locales donde hay escaleras, por eso se echa en falta que el robot no pueda subir escaleras. Como hemos dicho en la memoria, han quedado canales libres tanto en el receptor de FM como en el transmisor, así que se podría usar uno de ellos para que cuando se activara o modificara la señal de ese canal, se ejecutara un código, encargado de posicionar y mover el robot con la finalidad de subir escaleras. Cabe mencionar que nuestro robot no está a escala real, así que para subir las escaleras de una vivienda, el robot debería ser de mayores dimensiones.

1.7.7. Radio-control y video-control de mayor alcance Debido al bajo presupuesto disponible para hacer el robot, se han optado soluciones muy económicas. En cuanto a la comunicación de control y de video, se podría adquirir módulos de mayor alcance, y de esta manera disponer de una mayor distancia de seguridad. Recordemos que nuestro sistema está limitado a 300m, y en el caso de rastreo de bombas puede ser poca distancia de seguridad. Página 60 de 115

1.8.

Conclusiones

I.

Al finalizar este trabajo se han obtenido importantes conclusiones, una de ellas y tal vez la más relevante es que para la realización de un robot no se necesita grandes inversiones económicas ni tecnología punta, pues contando con recursos limitados se ha logrado desarrollar un robot hexápodo con sistema de radiocontrol y monitoreo en tiempo real.

II.

Al estudiar los y trabajar con micro-controladores, se ha interiorizado la gran importancia y enorme versatilidad de la que disponen, ya que las aplicaciones relativamente complejas, como las que envuelve al presente proyecto, son llevadas a cabo sin mayor problema pues con un sólo micro-controlador se controla la plataforma. Eso demuestra que se puede hacer el control automático de casi cualquier proceso o conjunto de procesos.

III.

Los robots se pueden reconfigurar, tomando una u otra forma en función de la programación.

IV.

Al dotar de movimiento a un robot con patas, se debe tener en cuenta su posición y velocidad, pero ante todo asegurar que el robot permanezca en equilibrio el momento de desplazarse, éste es uno de los inconvenientes de trabajar con un robot de seis patas, por lo cual se debe poner un énfasis especial en los algoritmos de movimiento.

V.

Los principales inconvenientes son el elevado consumo debido a la cantidad de servo-motores que tiene y la limitación de peso debido a los servo-motores de bajo par motor. Eso influye directamente sobre la elección de la batería que debe ser muy potente pero muy ligera.

VI.

Se ha logrado el objetivo general de este proyecto, que consistía en mejorar y poner en práctica muchos de los conocimientos adquiridos a lo largo de la carrera de Ingeniería técnica industrial especializada en electrónica.

VII.



Se han aplicado conocimientos de física para diseñar las piezas estructurales y hacer los cálculos de par motor.



Conocimientos de sistemas digitales para realizar operaciones lógicas y dominar aspectos relacionados con el código y el manual del PIC.



Conocimientos de equipos electrónicos para diseñar y fabricar la placa de circuito impreso. Además, la construcción de la placa se ha hecho de forma casera para reducir gastos, y de esta manera se han aprendido empíricamente conceptos de impresión y ataque químico.



Sobre todo, se han aplicado conocimientos de sistemas electrónicos con micro-controladores, tanto para entender el manual del PIC como para programarlo.

El robot hexápodo del presente proyecto obtuvo buenos resultados, tanto en locomoción sobre superficies lisas como sobre terreno inestable o abrupto; sin embargo, tiene ciertas limitaciones en cuanto a la superación de grandes obstáculos. Limitaciones que se podrían disminuir si se aplicaran las mejoras comentadas en el apartado anterior. Se podría decir a grandes rasgos que los objetivos específicos del proyecto también se han cumplido. Página 61 de 115

VIII.

Es importante notar la gran atracción que produce el robot hacia las personas, especialmente los niños. Basta con que el robot camine por un lugar concurrido para que la gente sienta curiosidad y se vea atraída hacia él. Los niños disfrutan interactuando con la máquina y lo más importante es que identifican al robot. Claro está que no sólo son niños los que disfrutan del espectáculo, jóvenes y adultos también se sienten atraídos por el robot, constituyéndose en una manera alternativa de innovación hacia nuevas generaciones.

Tarragona, Septiembre de 2013 EL AUTOR DEL PROYECTO

David del Castillo Sánchez Nº Colegiado 23111 Ingeniero Técnico Industrial especializado en electrónica Industrial

Página 62 de 115

Diseño y construcción de un robot de rastreo microcontrolado

Documento núm. 2: ANEXOS

AUTOR: David del Castillo Sánchez

Página 63 de 115

Índice de anexos Índice de anexos ....................................................................................................... 64 2.1.Código ................................................................................................................ 65 2.2.Glosario de términos ........................................................................................... 83 A ..................................................................................................................................... 83 B ..................................................................................................................................... 83 C ..................................................................................................................................... 83 D ..................................................................................................................................... 84 E ..................................................................................................................................... 84 F ..................................................................................................................................... 84 H ..................................................................................................................................... 84 I ...................................................................................................................................... 84 L ..................................................................................................................................... 84 M .................................................................................................................................... 84 P ..................................................................................................................................... 85 R ..................................................................................................................................... 85 S ...................................................................................................................................... 86 T ..................................................................................................................................... 86

Página 64 de 115

2.1.

Código

;************************************************************************ ;PROGRAMADOR: David del Castillo Sánchez ;ROBOT HEXAPODO COMANDADO POR RADIOCONTROL ;************************************************************************ ;************************************************************************ ;Configuración de PIC ;************************************************************************ LIST p=16F877A ; definir procesador INCLUDE ; definiciones de variables específicas ;del procesador __CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _BODEN_OFF & _LVP_OFF & _WRT_OFF & _CP_OFF & _DEBUG_OFF ;************************************************************************ ;DEFINICIÓN DEL NOMBRE DE ENTRADAS Y SALIDAS ;************************************************************************ #define SERVO1 PORTD,0 ; puerto de salida de servo 1 #define SERVO2 PORTD,1 ; puerto de salida de servo 2 #define SERVO3 PORTD,2 ; puerto de salida de servo 3 #define SERVO4 PORTD,3 ; puerto de salida de servo 4 #define SERVO5 PORTD,4 ; puerto de salida de servo 5 #define SERVO6 PORTD,5 ; puerto de salida de servo 6 #define SERVO7 PORTD,6 ; puerto de salida de servo 7 #define SERVO8 PORTD,7 ; puerto de salida de servo 8 ;puerto de entrada de pulsadores usados para pruebas de código iniciales #define PULSADOR1 PORTB,3 #define PULSADOR2 PORTB,2 #define PULSADOR3 PORTB,4 #define PULSADOR4 PORTB,5 ;************************************************************************ ;DEFINICION DE VARIABLES ;************************************************************************ CBLOCK 0x20 ;define un bloque de constantes en ensambl. var1 ; variable para ciclos de t0 vartemp2 ; variable para ciclos de t2 Guardar_W Guardar_STATUS pulso_escru ;indica el pulso que toca mandar en int. t0 tempscanvipuls ;variable que mide el tiempo que pasará entre ;movimiento y movimiento de pata (tiempo que ;tardara en cambiar el ancho ;de pulso) copia_tempscanvipuls ; copia de la variable anterior pulsos1 ; valor del pulso1, veces que entrara en ;INT_T2_PULSO (tiempo del pulso = valor ;pulsos1 * 0.01ms) pulsos2 pulsos3 pulsos4 pulsos5 pulsos6 pulsos7 pulsos8 var_canvi1 ; variable que hara que se cambie de estado ; durante el movimiento

Página 65 de 115

var_escrutinio avance, var_altura

var_altura_copia t1_bajada_ccp1 flanco t1_subida_ccp2 t1_bajada_ccp2 tiempo_pulso_ch3 ENDC

; indica el movimiento a hacer: quieto, ; retroceso, giro der., giro izq. ; se modifica su valor cuando queremos subir ; o bajar el cuerpo ; se guarda la captura del timer1 en el ; de bajada de ccp1

; se guarda el tiempo de pulso de ch3

ORG 0 goto ini org 4 goto interrupt ;************************************************************************ ; Inicio ;************************************************************************ ini CLRF PORTD ; inicia ports CLRF PORTB ; inicia ports CLRF PORTC BSF STATUS,RP0 ; Apunta a banco 1 MOVLW b'00000000' ; PORTD MOVWF TRISD ; salidas MOVLW b'11111111' ; PORTB MOVWF TRISB ; entradas ;************************************************************************ ;Configuracion de TMR0 ;************************************************************************ BSF STATUS,RP0 ; Apunta a banco 1 movlw b'00000111' ; Configuración para TMR0 movwf OPTION_REG ;(xx0)=Fosc/4 interna, (x0)=pre-scaler para ; tmr0, (111)=pre-scaler 1:256 bcf STATUS,RP0 ; Apunta a banco 0 clrf TMR0 ; inicia registro de timer en 0 movlw b'10100000' ; Interrupciones hab. GIE (global), T0IE movwf INTCON ;************************************************************************ ;Configuracion de TMR2 ;************************************************************************ bcf STATUS, RP0 ; BANCO0 MOVLW B'11100000' MOVWf INTCON ; GIE=PEIE=T0IE=INTE=1, RESTO=0 movlw H'00' movwf PIR1 ; TMR2IF=0, RESOT=0 movlw B'00000000' ;postscaler 1:1, T2 OFF, prescaler 1:1 movwf T2CON bsf STATUS, RP0 ; BANCO1 movlw B'00000010' movwf PIE1 ; TMR2IF=1, RESTO=que antes bcf STATUS,RP0 ; Apunta a banco 0

Página 66 de 115

;************************************************************************ ;Configuración de CCP1 Y CCP2 ;************************************************************************ bsf STATUS, RP0 ; BANCO1 bsf TRISC,1 ; configuro CCP como entrada (realmente solo ;necesito pin2=CCP1 y pin1=CCP2 del puerto C) bsf TRISC,2 ; configuro CCP como entrada (realmente solo ;necesito pin2=CCP1 y pin1=CCP2 del puerto C) bsf PIE1,CCP1IE ; interrupcion por CCP1 habilitado bsf PIE2,CCP2IE ; interrupcion por CCP2 habilitado bcf STATUS, RP0 ;BANCO0 clrf T1CON ; T1=off, Fosc/4, Pre=1:1, bcf PIR1,TMR1IF ;Flag TIMER1=0 movlw H'07' movwf CCP1CON ; CCP1 en modo captura cada 16flancos 0a1 ;(flanco ;subida) y CCP1=1 movlw H'07' movwf CCP2CON ; CCP1 en modo captura cada 16flancos 0a1 ;(flanco subida) y CCP2=1 movlw b'00000000' movwf T1CON ; como cada vez que configuro ccp, se borra ;la cnfiguracuion de timer1,configuro pre=1:1 bcf PIR1,CCP1IF ; Flag=0 bcf PIR2,CCP2IF ; Flag=0 bsf T1CON,TMR1ON ; TIMER1 habilitado ;************************************************************************ ;Inicializamos los valores de las variables pertinentes ;************************************************************************ precargat0 movlw D'2' movwf var1 movlw d'60' ; 2*10E-7*(256-60)*256 = 10,0352 ms movwf TMR0 ; valor al registro de timer precargat2 bcf T2CON,TMR2ON bsf STATUS,RP0 movlw D'49' movwf PR2 ; 2*10E-7*(49+1)*1*1 = 0.01 ms = 10us bcf STATUS,RP0 movlw D'50' movwf tempscanvipuls movlw D'0' movwf pulso_escru movlw D'145' movwf pulsos1 movlw D'240' movwf pulsos2 movlw D'120' movwf pulsos3 movlw D'145' movwf pulsos4 movlw D'145' movwf pulsos5 movlw D'240' movwf pulsos6 movlw D'120' movwf pulsos7

Página 67 de 115

movlw D'145' movwf pulsos8 movlw b'00000001' movwf var_escrutinio clrf var_canvi1 movlw b'00000000' ; movwf var_altura ;************************************************************************ ;LAZO INICIO: Se usa para que siga una secuencia determinada de inicio ;************************************************************************ lazo_inicio ;movimiento de patas para levantar el ;cuerpo de forma ;correcta movf tempscanvipuls,0 movwf copia_tempscanvipuls ;se comprobara si ha pasado el tiempo necesario para cambiar los valores ;de los pulsos de los servos (bit a bit) btfsc copia_tempscanvipuls,4 goto lazo_inicio btfsc copia_tempscanvipuls,3 goto lazo_inicio btfsc copia_tempscanvipuls,2 goto lazo_inicio btfsc copia_tempscanvipuls,1 goto lazo_inicio btfsc copia_tempscanvipuls,0 goto lazo_inicio movlw movwf movlw movwf movlw movwf movlw movwf movlw movwf movlw movwf movlw movwf movlw movwf

D'145' pulsos1 D'190' pulsos2 D'120' pulsos3 D'145' pulsos4 D'135' pulsos5 D'180' pulsos6 D'120' pulsos7 D'145' pulsos8

movlw D'30' movwf tempscanvipuls ;************************************************************************ ;LAZO DE PROGRAMA: Empieza el lazo que se ejecutará continuamente durante ;el control del robot ;************************************************************************ lazo movf tempscanvipuls,0 movwf copia_tempscanvipuls ;se comprobara si ha pasado el tiempo necesario para cambiar los valores ;de los pulsos de los servos (bit a bit) btfsc copia_tempscanvipuls,4 goto lazo btfsc copia_tempscanvipuls,3 goto lazo

Página 68 de 115

btfsc copia_tempscanvipuls,2 goto lazo btfsc copia_tempscanvipuls,1 goto lazo btfsc copia_tempscanvipuls,0 goto lazo ;si todos los bits son cero, han pasado 0.5 segundos (25*20ms) y ;compruebo accion btfsc var_escrutinio,4 goto giro_izquierda btfsc var_escrutinio,3 goto giro_derecha btfsc var_escrutinio,2 goto anda_atras btfsc var_escrutinio,1 goto anda btfsc var_escrutinio,0 goto inicio_pos ;************************************************************************ ;Escrutinio de estado giro izquierda ;************************************************************************ giro_izquierda btfss var_canvi1,1 goto canvigiro1o2_izq goto canvigiro3o4_izq canvigiro1o2_izq btfss var_canvi1,0 goto canvigiro1_izq goto canvianda2 ;el estado de canvigiro2 = canvi anda2 canvigiro3o4_izq btfss var_canvi1,0 goto canvigiro3_izq goto canvianda4 ;el estado de canvigiro4 = canvi anda4 ;************************************************************************ ;Escrutinio de estado giro derecha ;************************************************************************ giro_derecha btfss var_canvi1,1 goto canvigiro1o2_der goto canvigiro3o4_der canvigiro1o2_der btfss var_canvi1,0 goto canvigiro1 goto canvianda2 ;el estado de canvigiro2 = canvi anda2 canvigiro3o4_der btfss var_canvi1,0 goto canvigiro3 goto canvianda4 ;el estado de canvigiro4 = canvi anda4 ;************************************************************************ ;Estados de giro, se pone el valor del pulso de cada servo para su estado ;************************************************************************ canvigiro3_izq movlw D'170' movwf pulsos1 movlw D'170' movwf pulsos4 movlw D'230' movwf pulsos6 movlw D'140' movwf pulsos7

Página 69 de 115

movlw movwf movlw movwf

D'120' pulsos5 D'120' pulsos8

movlw D'1' addwf var_canvi1,1 ;escrutnio de la variable altura movf var_altura,0 movwf var_altura_copia btfsc var_altura_copia, 1 goto tiempo_alto btfsc var_altura_copia, 0 goto tiempo_mitad goto tiempo_bajo canvigiro1_izq movlw D'120' movwf pulsos1 movlw D'230' movwf pulsos2 movlw D'140' movwf pulsos3 movlw D'120' movwf pulsos4 movlw D'170' movwf pulsos5 movlw D'170' movwf pulsos8 movlw D'1' addwf var_canvi1,1 ;escrutnio de la variable altura movf var_altura,0 movwf var_altura_copia btfsc var_altura_copia, 1 goto tiempo_alto btfsc var_altura_copia, 0 goto tiempo_mitad goto tiempo_bajo canvigiro3 movlw movwf movlw movwf movlw movwf movlw movwf movlw movwf movlw movwf

D'120' pulsos1 D'120' pulsos4 D'230' pulsos6 D'140' pulsos7 D'170' pulsos5 D'170' pulsos8

movlw D'1' addwf var_canvi1,1

Página 70 de 115

;escrutnio de la variable altura movf var_altura,0 movwf var_altura_copia btfsc var_altura_copia, 1 goto tiempo_alto btfsc var_altura_copia, 0 goto tiempo_mitad goto tiempo_bajo canvigiro1 ; pata s1,s2,s3 adelanta y sube ; pata s4 adelanta ; pata s5,s6,s7 retrocede ; s8 retrocede movlw D'170' movwf pulsos1 movlw D'230' movwf pulsos2 movlw D'140' movwf pulsos3 movlw D'170' movwf pulsos4 movlw D'120' movwf pulsos5 movlw D'120' movwf pulsos8 movlw D'1' addwf var_canvi1,1 ;escrutnio de la variable altura movf var_altura,0 movwf var_altura_copia btfsc var_altura_copia, 1 goto tiempo_alto btfsc var_altura_copia, 0 goto tiempo_mitad goto tiempo_bajo ;************************************************************************ ;Escrutinio de estado retroceso ;************************************************************************ anda_atras btfss var_canvi1,1 goto canvianda1o2_atras goto canvianda3o4_atras canvianda1o2_atras btfss var_canvi1,0 goto canvianda1_atras goto canvianda2 canvianda3o4_atras btfss var_canvi1,0 goto canvianda3_atras goto canvianda4 ;************************************************************************ ;Escrutinio de estado avance ;************************************************************************ anda btfss var_canvi1,1 goto canvianda1o2 goto canvianda3o4

Página 71 de 115

canvianda1o2 btfss var_canvi1,0 goto canvianda1 goto canvianda2 canvianda3o4 btfss var_canvi1,0 goto canvianda3 goto canvianda4 ;************************************************************************ ;Estados de retroceso y avance, se pone el valor del pulso de cada servo ;para su estado ;************************************************************************ canvianda3_atras movlw D'120' movwf pulsos1 movlw D'180' movwf pulsos4 movlw D'135' movwf pulsos5 movlw D'155' movwf pulsos8 movlw D'230' movwf pulsos6 movlw D'140' movwf pulsos7 movlw D'1' addwf var_canvi1,1 ;escrutnio de la variable altura movf var_altura,0 movwf var_altura_copia btfsc var_altura_copia, 1 goto tiempo_alto btfsc var_altura_copia, 0 goto tiempo_mitad goto tiempo_bajo canvianda1_atras movlw D'155' movwf pulsos1 movlw D'230' movwf pulsos2 movlw D'140' movwf pulsos3 movlw D'135' movwf pulsos4 movlw D'180' movwf pulsos5 movlw D'120' movwf pulsos8 movlw D'1' addwf var_canvi1,1 ;escrutnio de la variable altura movf var_altura,0 movwf var_altura_copia btfsc var_altura_copia, 1 goto tiempo_alto btfsc var_altura_copia, 0 goto tiempo_mitad goto tiempo_bajo

Página 72 de 115

canvianda4 ; pata s1,s2,s3 sube ; pata s5,s6,s7 baja movlw D'180' movwf pulsos6 movlw D'120' movwf pulsos7 clrf var_canvi1 ;escrutnio de la variable altura movf var_altura,0 movwf var_altura_copia btfsc var_altura_copia, 1 goto alto_S6S7 btfsc var_altura_copia, 0 goto mitad_S6S7 goto bajo_S6S7 canvianda3 ; pata s1,s2,s3 bajada y se retrocede ; pata s5,s6,s7 subida y abanza ; s8 abanza movlw D'155' movwf pulsos1 movlw D'135' movwf pulsos4 movlw D'180' movwf pulsos5 movlw D'120' movwf pulsos8 movlw D'230' movwf pulsos6 movlw D'140' movwf pulsos7 movlw D'1' addwf var_canvi1,1 ;escrutnio de la variable altura movf var_altura,0 movwf var_altura_copia btfsc var_altura_copia, 1 goto tiempo_alto btfsc var_altura_copia, 0 goto tiempo_mitad goto tiempo_bajo canvianda2 ;pata s1,s2,s3 adelantada y baja ;pata s5,s6,s7 sube movlw D'1' addwf var_canvi1,1 ;escrutnio de la variable altura movf var_altura,0 movwf var_altura_copia btfsc var_altura_copia, 1 goto alto_S2S3 btfsc var_altura_copia, 0 goto mitad_S2S3 goto bajo_S2S3

Página 73 de 115

;************************************************************************ ;Canvio de valores de servos que varian altura en funcion de la ;var_altura (s2s3) ;************************************************************************ alto_S2S3 movlw D'110' movwf pulsos2 movlw D'200' movwf pulsos3 movlw D'25' movwf tempscanvipuls goto lazo mitad_S2S3 movlw D'150' movwf pulsos2 movlw D'160' movwf pulsos3 movlw D'18' movwf tempscanvipuls goto lazo bajo_S2S3 movlw D'190' movwf pulsos2 movlw D'120' movwf pulsos3 movlw D'8' movwf tempscanvipuls goto lazo canvianda1 ;pata s1,s2,s3 adelanta y sube ;pata s4 adelanta ;pata s5,s6,s7 retrocede ;s8 retrocede movlw D'120' movwf pulsos1 movlw D'230' movwf pulsos2 movlw D'140' movwf pulsos3 movlw D'180' movwf pulsos4 movlw D'135' movwf pulsos5 movlw D'155' movwf pulsos8 movlw D'1' addwf var_canvi1,1 ;escrutnio de la variable altura movf var_altura,0 movwf var_altura_copia btfsc var_altura_copia, 1 goto tiempo_alto btfsc var_altura_copia, 0 goto tiempo_mitad goto tiempo_bajo ;************************************************************************ ;Se modifica el tiepo de canvio de estado dependiendo de var_altura ;************************************************************************

Página 74 de 115

tiempo_alto movlw D'25' movwf tempscanvipuls goto lazo tiempo_mitad movlw D'18' movwf tempscanvipuls goto lazo tiempo_bajo movlw D'8' movwf tempscanvipuls goto lazo ;************************************************************************ ;Valores de pulso para posicion estática ;************************************************************************ inicio_pos movlw D'145' movwf pulsos1 movlw D'145' movwf pulsos4 movlw D'135' movwf pulsos5 movlw D'145' movwf pulsos8 ;escrutnio de la variable altura movf var_altura,0 movwf var_altura_copia btfsc var_altura_copia, 1 goto alto btfsc var_altura_copia, 0 goto mitad goto bajo ;************************************************************************ ;Cambio de valores de servos que varian altura en funcion de la ;var_altura (s6s7) ;************************************************************************ alto movlw D'110' movwf pulsos2 movlw D'200' movwf pulsos3 alto_S6S7 movlw D'100' movwf pulsos6 movlw D'210' movwf pulsos7 movlw D'25' movwf tempscanvipuls goto lazo mitad movlw D'150' movwf pulsos2 movlw D'160' movwf pulsos3 mitad_S6S7 movlw D'140' movwf pulsos6 movlw D'160' movwf pulsos7

Página 75 de 115

movlw D'18' movwf tempscanvipuls goto lazo bajo movlw D'190' movwf pulsos2 movlw D'120' movwf pulsos3 bajo_S6S7 movlw D'180' movwf pulsos6 movlw D'120' movwf pulsos7 movlw D'8' movwf tempscanvipuls goto lazo ;************************************************************************ ;RUTINA DE ATENCIÓN A LA INTERRUPCION ;************************************************************************ interrupt ; Salva todo bcf INTCON,T0IE ; deshabilita interrupción de timer movwf Guardar_W swapf STATUS, w movwf Guardar_STATUS ;compruebo que interrupcion ha pedido int btfsc INTCON, T0IF goto INT_T0_20m btfsc PIR1, TMR2IF goto INT_T2_PULSO btfsc PIR1, CCP1IF goto INT_CCP1 btfsc PIR2, CCP2IF goto INT_CCP2 ;************************************************************************ ;RUTINA TMR0: Se encarga de generar una interrupción cada 10ms ;Cada 20ms empieza el envio de todos los pulsos para los servos ;************************************************************************ INT_T0_20m ;entra cada 10.0352ms decfsz var1 goto salirt0 ; pasara cada 10.0352ms*2=20ms decf tempscanvipuls movf pulsos1,0 movwf vartemp2 bsf T2CON,TMR2ON bsf SERVO1 movlw D'2' movwf var1 goto salirt0 ;************************************************************************ ;RUTINA TMR2: Se encarga de generar una interrupción cada 10us=0.01ms ;No continuará ejecutando interrupción hasta que pase el tiempo del pulso ;que se envia, cuando pase el tiempo de pulso, se enviará el siguiente, ;asi consecutivamente hasta el ultimo pulso. ;************************************************************************ INT_T2_PULSO ;entra cada 10us=0.01ms decfsz vartemp2

Página 76 de 115

goto salirt2 btfsc pulso_escru, 2 goto pulso_s5s6s7s8 ;escrutnio de que pulso toca enviar pulso_s1s2s3s4 btfsc pulso_escru, 1 goto pulso_s3s4 pulso_s1s2 btfsc pulso_escru, 0 goto pulso_s2 goto pulso_s1 pulso_s3s4 btfsc pulso_escru, 0 goto pulso_s4 goto pulso_s3 pulso_s5s6s7s8 btfsc pulso_escru, 1 goto pulso_s7s8 pulso_s5s6 btfsc pulso_escru, 0 goto pulso_s6 goto pulso_s5 pulso_s7s8 btfsc pulso_escru, 0 goto pulso_s8 goto pulso_s7 pulso_s1 movlw D'1' addwf pulso_escru,1 bcf SERVO1 movf pulsos2,0 movwf vartemp2 bsf SERVO2 goto salirt2 pulso_s2 movlw D'1' addwf pulso_escru,1 bcf SERVO2 movf pulsos3,0 movwf vartemp2 bsf SERVO3 goto salirt2 pulso_s3 movlw D'1' addwf pulso_escru,1 bcf SERVO3 movf pulsos4,0 movwf vartemp2 bsf SERVO4 goto salirt2 pulso_s4 movlw D'1' addwf pulso_escru,1 bcf SERVO4 movf pulsos5,0 movwf vartemp2 bsf SERVO5 goto salirt2 pulso_s5

Página 77 de 115

movlw D'1' addwf pulso_escru,1 bcf SERVO5 movf pulsos6,0 movwf vartemp2 bsf SERVO6 goto salirt2 pulso_s6 movlw D'1' addwf pulso_escru,1 bcf SERVO6 movf pulsos7,0 movwf vartemp2 bsf SERVO7 goto salirt2 pulso_s7 movlw D'1' addwf pulso_escru,1 bcf SERVO7 movf pulsos8,0 movwf vartemp2 bsf SERVO8 goto salirt2 pulso_s8 movlw D'0' movwf pulso_escru bcf SERVO8 bcf T2CON,TMR2ON goto salirt2 ;************************************************************************ ;RUTINA CCP1: Se encarga de medir el pulso recibido por CCP1 (CH2), y ;cambia la variable de var_escrutinio, encargada de memorizar el movimiento ;que el robot debe hacer. Solo se podra leer el avance, retroceso,o estatico ;************************************************************************ INT_CCP1 btfss CCP1CON, 0 ;testeo el ultimo bit de CCP1CON para saber ;si me ha entrado en un flanco de subida o ;de bajada goto FLANCO_BAJADA ;si bit=0 significa que ha entrado en un ;flanco de bajada (de 1 a 0) goto FLANCO_SUBIDA ;si bit=1 significa que ha entrado en un ;flanco de subida (de 0 a 1) ;************************************************************************ ;En el flanco de bajada Con la captura del TMR1 se sabe el tamaño del ;pulso, y se actua en función de este ;************************************************************************ FLANCO_BAJADA ;COPIA DE TMR1 bcf T1CON, TMR1ON ; APAGO TIMER1 movf TMR1H, w movwf t1_bajada_ccp1 bsf T1CON, TMR1ON ; ENCIENDO TIMER1 ;si el pulso de ccp ha durado menos de 1.3ms(variable=E69C) es que estoy ;retrocediendo si el pulso de ccp ha durado entre 1.2ms y 1.7ms(DECC) es ;que estoy quieto, posicion de reposo si el pulso de ccp ha durado entre ;1.7ms y 2.3ms(D314) es que estoy abanzando movlw H'1E' ;

Página 78 de 115

subwf t1_bajada_ccp1,0 btfsc STATUS, C goto variable_adelante

movlw H'1C' subwf t1_bajada_ccp1,0 btfsc STATUS, C goto variable_quieto

;(captura de CCP1H) - (E6) ;Si c=0, resta es negativa, sigo ;buscando rango ; si C=1 resta positiva= rango de ;operacion correcto = retroceder ;continuo buscando rango correcto ;(captura de CCP1H) - (DE) ;Si c=0, resta es negativa, sigo ;buscando rango ; si C=1 resta positiva= rango de

variable_retroceso btfsc var_escrutinio, 4 goto salir_CCP1_bajada btfsc var_escrutinio, 3 goto salir_CCP1_bajada bcf T1CON,TMR1ON ;TIMER1 DEShabilitado movlw b'00000100' ;activo el bit que hace que el robot retroceda movwf var_escrutinio goto salir_CCP1_bajada variable_quieto btfsc var_escrutinio, 4 goto salir_CCP1_bajada btfsc var_escrutinio, 3 goto salir_CCP1_bajada bcf T1CON,TMR1ON ;TIMER1 DEShabilitado movlw b'00000001' ;activo el bit que hace que el robo retroceda movwf var_escrutinio goto salir_CCP1_bajada variable_adelante btfsc var_escrutinio, 4 goto salir_CCP1_bajada btfsc var_escrutinio, 3 goto salir_CCP1_bajada bcf T1CON,TMR1ON ;TIMER1 DEShabilitado movlw b'00000010' ;activo el bit que hace que el robot retroceda movwf var_escrutinio goto salir_CCP1_bajada ;************************************************************************ ;En el flanco de subida de ccp1 solo se resetea el TMR1 para iniciar cuenta ;de pulso ;************************************************************************ FLANCO_SUBIDA bcf T1CON,TMR1ON ;TIMER1 DEShabilitado clrf TMR1L clrf TMR1H ;inicializa TMR0 flanco subida salir_CCP1_subida movlw H'04' movwf CCP1CON ;CCP1 en modo captura 1a0 (flanco bajada) movlw b'00000001' movwf T1CON ;como cada vez que configuro ccp, se borra la ;configuracuion de timer1, pre=1:1 bcf PIR1, CCP1IF ;desactivo flag ccp1

Página 79 de 115

swapf movwf swapf swapf bsf

Guardar_STATUS, w STATUS Guardar_W, f Guardar_W, w INTCON,T0IE ;habilita interrupción de timer

retfie salir_CCP1_bajada movlw H'07' movwf CCP1CON

;CCP1 en modo catura 0a1 cada 16flancos ;(flanco bajada) y CCPif=1

clrf TMR1L clrf TMR1H ;inicializa TMR0 flanco bajada movlw b'00000001' movwf T1CON bcf PIR1, CCP1IF ;desactivo flag ccp1 swapf Guardar_STATUS, w movwf STATUS swapf Guardar_W, f swapf Guardar_W, w bsf INTCON,T0IE ; habilita interrupción de timer retfie ;************************************************************************ ;RUTINA CCP2: Se encarga de medir el pulso recibido por CCP2 (CH4), y ;cambia la variable de var_escrutinio, encargada de memorizar el movimiento ;que el robot debe hacer. Solo se podra leer el girar derecha, girar ;izquierda o estatico. Tambien se conoce el pulso de ch3, así que se ;modificara la var_altura, dependiendo del tamaño de su pulso ;************************************************************************ INT_CCP2 btfss CCP2CON, 0

goto FLANCO_BAJADA_CCP2 goto FLANCO_SUBIDA_CCP2

;testeo el ultimo bit de CCP1CON para ;saber si me ha entrado en un flanco de ;subida o de bajada ;si bit=0 significa que ha entrado en un ;flanco de bajada (de 1 a 0) ;si bit=1 significa que ha entrado en un ;flanco de subida (de 0 a 1)

;************************************************************************ ;En el flanco de bajada de ccp2 se calcula el tiempo de flanco del ch4, y ;se varia la variable escrutinio en funcion de este, para girar a un lado o otro o no girar ;************************************************************************ FLANCO_BAJADA_CCP2 ;COPIA DE TMR1 bajada bcf T1CON, TMR1ON ; APAGO TIMER1 movf TMR1H, w movwf t1_bajada_ccp2 bsf T1CON, TMR1ON ; ENCIENDO TIMER1 ;si el pulso de ccp ;retrocediendo. ;si el pulso de ccp ;quieto,posicion de ;si el pulso de ccp ;avanzando. movlw H'1E' ;

ha durado menos de 1.3ms(variable=E69C) es que estoy ha durado entre 1.2ms y 1.7ms(DECC) es que estoy reposo. ha durado entre 1.7ms y 2.3ms(D314) es que estoy

Página 80 de 115

subwf t1_bajada_ccp2,0 ; (captura de CCP1H) - (E6) btfsc STATUS, C ; Si c=0, resta es negatica, sigo buscando goto variable_izquierda ; si C=1 resta positiva= rango de ;operacion ;correcto = retroceder ;continuo buscando rango correcto movlw H'1C' ; subwf t1_bajada_ccp2,0 ; (captura de CCP1H) - (DE) btfsc STATUS, C ; Si c=0, resta es negatica, sigo buscando goto variable_quieto2 ; si C=1 resta positiva= rango de operacion ;correcto = retroceder ;aqui iria siguiente rango si amplio goto variable_derecha variable_izquierda btfsc var_escrutinio, 2 goto salir_CCP2_bajada btfsc var_escrutinio, 1 goto salir_CCP2_bajada bcf T1CON,TMR1ON ;TIMER1 DEShabilitado movlw b'00010000' ;activo el bit que hace que el robo retroceda movwf var_escrutinio goto salir_CCP2_bajada variable_quieto2 btfsc var_escrutinio, 2 goto salir_CCP2_bajada btfsc var_escrutinio, 1 goto salir_CCP2_bajada bcf T1CON,TMR1ON ;TIMER1 DEShabilitado movlw b'00000001' ;activo el bit que hace que el robo retroceda movwf var_escrutinio goto salir_CCP2_bajada variable_derecha btfsc var_escrutinio, 2 goto salir_CCP2_bajada btfsc var_escrutinio, 1 goto salir_CCP2_bajada bcf T1CON,TMR1ON ;TIMER1 DEShabilitado movlw b'00001000' ;activo el bit que hace que el robo retroceda movwf var_escrutinio goto salir_CCP2_bajada ;************************************************************************ ;En el flanco de subida de ccp2 se calcula el tiempo de flanco del ch3, y ;se varia la variable altura en funcion de este ;************************************************************************ FLANCO_SUBIDA_CCP2 bcf T1CON, TMR1ON ; APAGO TIMER1 movf TMR1H, w movwf t1_subida_ccp2 movlw H'20' ; subwf t1_subida_ccp2,0 ; (captura de CCP1H) - (E6) btfsc STATUS, C ; Si c=0, resta es negatica, sigo buscando goto arriba ; si C=1 resta positiva= rango de operacion ;correcto = retroceder ;continuo buscando rango correcto movlw H'1C' ; subwf t1_subida_ccp2,0 ;(captura de CCP1H) - (DE) btfsc STATUS, C ; Si c=0, resta es negatica, sigo buscando

Página 81 de 115

goto medio

; si C=1 resta positiva= rango de operacion ;correcto = retroceder ;aqui iria siguiente rango si amplio

; goto abajo abajo movlw b'00000000' movwf var_altura goto salto medio movlw b'00000001' movwf var_altura goto salto arriba movlw b'00000010' movwf var_altura salto bcf T1CON,TMR1ON ;TIMER1 DEShabilitado clrf TMR1L clrf TMR1H ;En cada flanco de subida se inicializa el ;timer a 0 salir_CCP2_subida movlw H'04' movwf CCP2CON ;CCP1 en modo catura 1a0 (flanco bajada) y ;CCPif=1 movlw b'00000001' movwf T1CON ; como cada vez que configuro ccp, se borra la ;configuracuion de timer1, reconfiguro ;pre=1:1 bcf PIR2, CCP2IF ; desactivo flag ccp2 swapf Guardar_STATUS, w movwf STATUS swapf Guardar_W, f swapf Guardar_W, w bsf INTCON,T0IE ; habilita interrupción de timer retfie salir_CCP2_bajada movlw H'07' movwf CCP2CON ; CCP1 en modo catura 0a1 cada 16flancos ;(flanco bajada) y CCPif=1 movlw b'00000001' movwf T1CON ;como cada vez que configuro ccp, se borra ;la configuracuion de timer1, reconfiguro. pre=1:1 bcf PIR2, CCP2IF ; desactivo flag ccp2 swapf Guardar_STATUS, w movwf STATUS swapf Guardar_W, f swapf Guardar_W, w bsf INTCON,T0IE ; habilita interrupción de timer retfie salirt0 bcf INTCON,T0IF ; borra el flag de timer swapf Guardar_STATUS, w movwf STATUS swapf Guardar_W, f swapf Guardar_W, w bsf INTCON,T0IE ; habilita interrupción de timer movlw d'60' ; (256-192 = 64) 64 * 8 us = 0,512 ms movwf TMR0 ; valor al registro de timer retfie

Página 82 de 115

salirt2 swapf Guardar_STATUS, w movwf STATUS swapf Guardar_W, f swapf Guardar_W, w bsf INTCON,T0IE ; habilita interrupción de timer bcf PIR1,TMR2IF retfie END

2.2.

Glosario de términos A

Actuadores. Dispositivo destinado para poner en acción o movimiento. Articulación. Acción o efecto de articular unir o enlazar en forma funcional o con movilidad dos piezas o partes de una maquina o instrumento. Aeromodelismo. Construcción y prueba en vuelo de modelos de aviones y helicópteros a escala reducida con fines recreativos. Antena. Dispositivo electrónico para asegurar la emisión o captación de ondas electromagnéticas.

B Bandas. En radio y televisión y en sistemas de comunicación son todas las frecuencias comprendidas entre dos límites definidos. Batería. Sistema eléctrico a base de pilas o acumuladores que permiten acumular energía y utilizarla posteriormente.

C Cara bottom. Cara superior de una placa de circuito integrado Cara top. Cara inferior de una placa de circuito integrado Codificar. Transformar mediante las reglas de un código la formulación de un mensaje. Control. Dominio que se realiza sobre una persona o cosa. CPU. La Unidad Central de Procesamiento (del inglés: Central Processing Unit, CPU) o procesador, es el componente principal del ordenador y otros dispositivos programables, que interpreta las instrucciones contenidas en los programas y procesa los datos. Página 83 de 115

D Dispositivo E/S. El dispositivos de entrada y salida es la comunicación entre un sistema de procesamiento de información (tal como un ordenador) y el mundo exterior

E EPROM. Son las siglas de Erasable Programmable Read-Only Memory (ROM programable borrable). Es un tipo de chip de memoria ROM no volátil E2PROM. EEPROM o E²PROM son las siglas de Electrically Erasable Programmable Read-Only Memory (ROM programable y borrada eléctricamente). Es un tipo de memoria ROM que puede ser programada, borrada y reprogramada eléctricamente

F Fotolito. Impresión fotográfica de un original que se reproduce sobre una película o un soporte transparente.

H HF. Del inglés High Frequency (o altas frecuencias), son las siglas utilizadas para referirse a la banda del espectro electromagnético que ocupa el rango de frecuencias de 3 MHz a 30 MHz Hardware. Se refiere a todas las partes tangibles de un sistema informático; sus componentes son: eléctricos, electrónicos, electromecánicos y mecánicos

I Inalámbrica. Dícese del sistema eléctrico de comunicación sin hilos Interrupción. (también conocida como interrupción de hardware o petición de interrupción) es una señal recibida por el procesador de un ordenador, indicando que debe "interrumpir" el curso de ejecución actual y pasar a ejecutar código específico para tratar esta situación

L Locomoción. Translación de un punto a otro.

M Micro-controlador. Es un circuito integrado o chip que incluye en su interior las tres unidades funcionales de una computadora: CPU, Memoria y Unidades de E/S. Monitoreo. Visualización a su alrededor por medio de una videocámara. Página 84 de 115

P Par motor. El par motor es el momento de fuerza que ejerce un motor sobre el eje de transmisión de potencia. PCB. En electrónica, un circuito impreso, tarjeta de circuito impreso o PCB (del inglés printed circuit board), es una superficie constituida por caminos o pistas de material conductor laminadas sobre una base no conductora. El circuito impreso se utiliza para conectar eléctricamente - a través de los caminos conductores, y sostener mecánicamente por medio de la base, un conjunto de componentes electrónicos. Periféricos. Se denominan periféricos a los aparatos o dispositivos auxiliares e independientes conectados a la CPU de una computadora. PIC. Los PIC son una familia de microco-ntroladores tipo RISC fabricados por Microchip Technology Inc. y derivados del PIC1650, originalmente desarrollado por la división de microelectrónica de General Instrument. Programación. Es un proceso por el cual se escribe (en un lenguaje de programación), se prueba, se depura y se mantiene el código fuente de un programa informático. Prototipo. Se refiere a cualquier tipo de máquina en pruebas, o un objeto diseñado para una demostración de cualquier tipo. PWM. Modulación de ancho de pulso.

R Radiofrecuencia. También denominado espectro de radiofrecuencia o RF, se aplica a la porción menos energética del espectro electromagnético, situada entre unos 3 Hz y unos 300 GHz. RAM. La memoria de acceso aleatorio (en inglés: random-access memory) se utiliza como memoria de trabajo para el sistema operativo, los programas y la mayoría del software. Es allí donde se cargan todas las instrucciones que ejecutan el procesador y otras unidades de cómputo. Se denominan «de acceso aleatorio» porque se puede leer o escribir en una posición de memoria con un tiempo de espera igual para cualquier posición, no siendo necesario seguir un orden para acceder a la información de la manera más rápida posible. Receptores. Es una persona o un equipo que recibe una señal, código o mensaje emitido por un transmisor. RF. El término radiofrecuencia, también denominado espectro de radiofrecuencia o RF, se aplica a la porción menos energética del espectro electromagnético, situada entre unos 3 kHz y unos 300 GHz Robot. Máquina controlada por ordenador y programada para moverse, manipular objetos y realizar trabajos a la vez que interacciona con su entorno. Página 85 de 115

Robótica. Rama de la tecnología, que estudia el diseño y construcción de máquinas capaces de desempeñar tareas repetitivas o peligrosas para el ser humano. ROM. La memoria de solo lectura, conocida también como ROM (acrónimo en inglés de read-only memory), es un medio de almacenamiento utilizado en ordenadores y dispositivos electrónicos, que permite sólo la lectura de la información y no su escritura, independientemente de la presencia o no de una fuente de energía.

S Servomotor. Es un dispositivo pequeño que tiene un eje de rendimiento controlado. Software. Se conoce como software al equipamiento lógico o soporte lógico de un sistema informático, que comprende el conjunto de los componentes lógicos necesarios que hacen posible la realización de tareas específicas, en contraposición a los componentes físicos que son llamados hardware.

T Transmisores. Es un equipo que emite una señal, código o mensaje a través de un medio y suele tener un protocolo industrial.

Tarragona, Septiembre de 2013 EL AUTOR DEL PROYECTO

David del Castillo Sánchez Nº Colegiado 23111 Ingeniero Técnico Industrial especializado en electrónica Industrial

Página 86 de 115

Diseño y construcción de un robot de rastreo microcontrolado

Documento núm. 3: PLANOS

AUTOR: David del Castillo Sánchez

Página 87 de 115

Índice de planos Índice de planos ............................................................................................ 88 3.1.

Plano nº1 – Fémur ............................................................................... 89

3.2.

Plano nº2 – Fémur en perspectiva isométrica ....................................... 90

3.3.

Plano nº3 – Tibia.................................................................................. 91

3.4.

Plano nº4 – Tibia en perspectiva isométrica.......................................... 92

3.5.

Plano nº5 – Refuerzo............................................................................ 93

3.6.

Plano nº6 – Soporte para servos........................................................... 94

3.7.

Plano nº7 – Soporte con servos en perspectiva isométrica .................... 95

3.8.

Plano nº8 – Cuerpo .............................................................................. 96

3.9.

Plano nº9 – Robot completo en perspectiva isométrica ......................... 97

Página 88 de 115

5

Ø3

0 R1

Ø5

60

Ø3

Ø3 Ø5 Ø3

R5

Nombre: Fecha: Firma: Dibujo : Revisión: Escala:

1:1

D.del Castillo

FEMUR

Nº: 1

Nombre: Fecha: Firma: Dibujo : Revisión: Escala:

1:1

D.del Castillo

FEMUR P. ISOMETRICA

Nº: 2

5

° 96

5

R5

R5

5

23

23

R2

15

85

30

R6

30

Nombre: Fecha: Firma: Dibujo : Revisión: Escala:

1:1

D.del Castillo

TIBIA

Nº: 3

Nombre: Fecha: Firma: Dibujo : Revisión: Escala:

1:1

D.del Castillo

TIBIA P. ISOMETRICA

Nº: 4

42

5

R6

26,2

Dibujo : Revisión: Escala:

1:1

Nombre: Fecha: Firma:

D.del Castillo

REFUERZO

Nº: 5

25 5

40

R1

40

13 12

15

12,5

25

13

13

13

24

Nombre: Fecha: Firma: Dibujo : Revisión: Escala:

1:1

D.del Castillo

SOPORTE

Nº: 6

Dibujo : Revisión: Escala:

1:1

Nombre: Fecha: Firma: D.del Castillo

SOPORTE CON SERVOMOTORES

Nº: 7

10

10

5

2 0, R1

15

° 58

R1

R2 .5

265

38

15

135 5

50

70

34°

29 .5

15

165

Nombre: Fecha: Firma: Dibujo : Revisión: Escala:

1:2

D.del Castillo

CUERPO

Nº: 8

Dibujo : Revisión: Escala:

1:2

Nombre: Fecha: Firma: D.del Castillo

P.ISOMÉTRICA ROBOT RH-1

Nº: 9

Referente al documente nº3, nombrado “PLANOS”

Tarragona, Septiembre de 2013 EL AUTOR DEL PROYECTO

David del Castillo Sánchez Nº Colegiado 23111 Ingeniero Técnico Industrial especializado en electrónica Industrial

Página 98 de 115

Diseño y construcción de un robot de rastreo microcontrolado

Documento núm. 4: MEDICIONES Y PRESUPUESTO

AUTOR: David del Castillo Sánchez

Página 99 de 115

Índice de mediciones y presupuesto 4.1.

Mediciones ............................................................................................ 101

4.1.1.

Conductores eléctricos.................................................................................... 101

4.1.2.

Componentes electrónicos .............................................................................. 101

4.1.3.

Materiales para estructuras, piezas y tornillería............................................. 102

4.1.4.

Sistema de alimentación ................................................................................. 103

4.1.5.

Productos químicos ........................................................................................ 103

4.2.

Presupuesto........................................................................................... 104

4.2.1.

Precios unitarios ............................................................................................. 104

4.2.2.

Presupuesto de material ................................................................................. 105

4.2.3.

Cuadro de descompuestos .............................................................................. 106

4.2.3.1. 4.2.3.2. 4.2.3.3. 4.2.3.4.

4.2.4.

Presupuesto .................................................................................................... 109

4.2.4.1. 4.2.4.2. 4.2.4.3. 4.2.4.4.

4.2.5.

Placa de circuito impreso ............................................................................................. 106 Diseño y fabricación de piezas estructurales ............................................................... 107 Montaje robot hexápodo............................................................................................. 108 Programación de código y pruebas ............................................................................. 108 Placa de circuito impreso ............................................................................................. 109 Diseño y fabricación de piezas estructurales ............................................................... 109 Montaje robot hexápodo............................................................................................. 109 Programación de código y pruebas ............................................................................. 110

Resumen presupuesto ..................................................................................... 110

Página 100 de 115

4.1.

Mediciones

4.1.1. Conductores eléctricos Nº

Descripción

4.1.1.1

Cable unipolar de macho a macho de 12 cm con conductor de cobre estañado, 1,5 mm², preparados para proyectos y/o prototipos

Medición Ud.

50,000 Ud 4.1.1.2

Cable unipolar de macho a macho de 15 cm con conductor de cobre estañado, 1,5 mm², preparados para proyectos y/o prototipos 10,000 Ud

4.1.1.3

Cable unipolar de macho a macho de 20 cm con conductor de cobre estañado, 1,5 mm², preparados para proyectos y/o prototipos 5,000 Ud

4.1.1.4

Cable unipolar de macho a macho de 25 cm con conductor de cobre estañado, 1,5 mm², preparados para proyectos y/o prototipos 5,000 Ud

4.1.1.5

Cable unipolar de hembra a hembra de 20 cm con conductor de cobre estañado, 1,5 mm², preparados para proyectos y/o prototipos 40,000 Ud

4.1.2. Componentes electrónicos Nº

Descripción

4.1.2.1

Micro servo-motor Turnigy TG9e de 9 gramos de peso, con par motor de 1.5 Kg/cm, alimentado a 4.8 voltios y con una velocidad de operación de 0.10 seg/60 grados.

Medición Ud.

25,000 Ud 4.1.2.2

Zócalo universal de 40 pines 1,000 Ud

4.1.2.3

Conector POSTE MACHO de 3 pines para servo-motores 22,000 Ud

4.1.2.4

Interruptor mini 2 posiciones 1,000 Ud

4.1.2.5

Pulsador 1 posición 1,000 Ud

4.1.2.6

Cristal de cuarzo de 20Mhz 1,000 Ud

Página 101 de 115

4.1.2.7

Placa virgen fotosensible positiva de fibra de vidrio 1.6mm de grosor y 35 micras de cobre, tamaño 60x80cm 1,000 Ud

4.1.2.8

Resistencia 10kΩ 1,000 Ud

4.1.2.9

Condensador 22pF 1,000 Ud

4.1.2.10 Regleta de alimentación de 2 conexiones 1,000 Ud 4.1.2.11 Micro-controlador PIC16F877A de la casa Microchip Technology Inc. 1,000 Ud 4.1.2.12 Módulo de video inalámbrico Wireless A/V camera 60Hz, rango de operación 300m 1,000 Ud 4.1.2.13 Transmisor 4 canales FM GUANLI Skysport four, frecuencia 35MHz 1,000 Ud 4.1.2.14 Receptor 6 canales FM GUANLI 1,000 Ud 4.1.2.15 Programador de micro-controladores TE-20 1,000 Ud

4.1.3. Materiales para estructuras, piezas y tornillería Nº

Descripción

4.1.3.1

Metacrilato hielo de 1m2 y 5mm de espesor

Medición Ud.

1,000 Ud 4.1.3.2

Plancha de aluminio 0.5 m2 y 5 mm de espesor 1,000 Ud

4.1.3.3

Tornillo de rosca métrica 2mm de diámetro de acero zincado y 10mm de longitud 100,000 Ud

4.1.3.4

Tuerca de rosca métrica 2mm de diámetro de acero zincado 100,000 Ud

Página 102 de 115

4.1.3.5

Varilla hueca de aluminio de 4mm de diámetro 1,000 m

4.1.3.6

Varilla de rosca métrica de acero zincado 4mm 1,000 m

4.1.3.7

Tuerca de rosca métrica 4mm de diámetro de acero zincado 36,000 Ud

4.1.3.8

Tubo PVC flexible transparente de 7mm 0,500 m

4.1.4. Sistema de alimentación Nº

Descripción

Medición Ud.

4.1.4.1. Batería li-ion 3,4v 4000mAh 2,000 Ud 4.1.4.2. Cargador para batería li-ion 1,000 Ud 4.1.4.3. Diodo de alto amperaje 2,000 Ud

4.1.5. Productos químicos Nº

Descripción

Medición Ud.

4.1.5.1. Salfumán o aguafuerte, ácido clorhídrico HCL 1 litro 1,000 Ud 4.1.5.2. Agua oxigenada 110 volúmenes 250 ml 2,000 Ud 4.1.5.3. Sosa cáustica - hidróxido de sodio NaOH 0,5kg 1,000 Ud

Página 103 de 115

4.2.

Presupuesto

4.2.1. Precios unitarios Código

Descripción

Ud.

Precio €

Kit 70 cables unipolar macho-macho, conductor cobre estañado 1,5 mm² Kit 40 cables unipolar hembra-hembra, conductor cobre estañado 1,5 mm²

Ud Ud

4,80 5,20

smTG9e

Ud

1,97

zu40p

Ud

0,35

Ud

0,24

Ud

0,96

Ud

0,85

Ud

1,50

Ud

1,85

Ud

0,10

Ud

0,06

Ud

0,33

Ud

6,28

Ud

27,77

Ud

22,50

Ud

5,67

Ud

16,72

Ud

14,95

Ud

13,68

Ud

1,00

Ud

1,00

Ud

5,12

Ud

10,35

Ud

1,84

Ud

2,15

Ud

8,25

Ud

15,32

Ud

0,46

Ud

0,96

Ud

6,25

Ud

3,21

cuce-mm-1.5 cuce-hh-1.5

Micro servo-motor Turnigy TG9e 9 gr. 1.5 Kg/cm, 0.10 seg/60º Zócalo universal de 40 pines con-m-3p Conector POSTE MACHO de 3 pines para servo-motores int2p Interruptor mini 2 posiciones puls1p Pulsador 1 posición clk-20 Cristal de cuarzo de 20Mhz pl35foto-1.6 Placa fotosensible (+) fibra de vidrio 1.6mm y 35µ Cu, 60x80cm r10k Resistencia 10kΩ c22p Condensador 22pF reg2conex Regleta de alimentación de 2 conexiones 16f877a Micro-controlador PIC16F877A Microchip Technology wira/vcam Módulo de video Wireless A/V camera 60Hz, 300m transFM35Mh Transmisor 4 canales FM GUANLI Skysport four, 35MHz rec6chFM Receptor 6 canales FM GUANLI progTE20 Programador de micro-controladores TE-20 mecra5mm Metacrilato hielo de 1m2 y 5mm de espesor alu5mm Plancha de aluminio 0.5 m2 y 5 mm de espesor tor-rm2-10mm Kit 10 tornillos rosca métrica 2mm acero zincado y 10mm Long. mt35aia010e4 Kit 10 tuercas rosca métrica 2mm acero zincado var-h4mm 1m varilla hueca de aluminio 4mm de diámetro var-rm4mm 1m varilla de rosca métrica acero zincado 4mm tuer-rm4mm Kit 10 tuercas de rosca métrica 4mm acero zincado tu-pvc7mm 0,5m tubo PVC flexible transparente de 7mm bat-liion3.4 Batería li-ion 3,4v 4000mAh Ultrafire cargbat-liion Cargador para batería li-ion dio-h Diodo de alto amperaje hcl1l Aguafuerte, ácido clorhídrico HCL 1 litro ao110vol Agua oxigenada 110 volúmenes 250 ml naoh0.5 Sosa cáustica - hidróxido de sodio NaOH 0,5kg

Página 104 de 115

4.2.2. Presupuesto de material Código cuce-mm-1.5 cuce-hh-1.5 smTG9e

Descripción

Ud.

Kit 70 cables unipolar macho-macho, conductor cobre estañado 1,5 mm² Kit 40 cables unipolar hembra-hembra, conductor cobre estañado 1,5 mm²

Micro servo-motor Turnigy TG9e 9 gr. 1.5 Kg/cm, 0.10 seg/60º zu40p Zócalo universal de 40 pines con-m-3p Conector POSTE MACHO de 3 pines para servo-motores int2p Interruptor mini 2 posiciones puls1p Pulsador 1 posición clk-20 Cristal de cuarzo de 20Mhz pl35foto-1.6 Placa fotosensible (+) fibra de vidrio 1.6mm y 35µ Cu, 60x80cm r10k Resistencia 10kΩ c22p Condensador 22pF reg2conex Regleta de alimentación de 2 conexiones 16f877a Micro-controlador PIC16F877A Microchip Technology wira/vcam Módulo de video Wireless A/V camera 60Hz, 300m transFM35Mh Transmisor 4 canales FM GUANLI Skysport four, 35MHz rec6chFM Receptor 6 canales FM GUANLI progTE20 Programador de micro-controladores TE-20 mecra5mm Metacrilato hielo de 1m2 y 5mm de espesor alu5mm Plancha de aluminio 0.5 m2 y 5 mm de espesor tor-rm2-10mm Kit 10 tornillos rosca métrica 2mm acero zincado y 10mm Long. mt35aia010e4 Kit 10 tuercas rosca métrica 2mm acero zincado var-h4mm 1m varilla hueca de aluminio 4mm de diámetro var-rm4mm 1m varilla de rosca métrica acero zincado 4mm tuer-rm4mm Kit 10 tuercas de rosca métrica 4mm acero zincado tu-pvc7mm 0,5m tubo PVC flexible transparente de 7mm bat-liion3.4 Batería li-ion 3,4v 4000mAh Ultrafire cargbat-liion Cargador para batería li-ion dio-h Diodo de alto amperaje hcl1l Aguafuerte, ácido clorhídrico HCL 1 litro ao110vol Agua oxigenada 110 volúmenes 250 ml naoh0.5 Sosa cáustica - hidróxido de sodio NaOH 0,5kg

Precio €

1 1

4,80 5,20

25

49,25

1

0,35

1

0,24

1

0,96

1

0,85

1

1,50

1

1,85

1

0,10

2

0,12

1

0,33

1

6,28

1

27,77

1

22,50

1

5,67

1

16,72

1

14,95

1

13,68

10

10,00

10

10,00

1

5,12

1

10,35

4

7,36

1

2,15

2

16,50

1

15,32

2

0,92

1

0,96

1

6,25

1

3,21

Total subcapítulo 4.2.2.- Presupuesto de material:

261,26

Página 105 de 115

4.2.3. Cuadro de descompuestos 4.2.3.1. 4.2.3.1.1

mo001 pl35foto-1.6 mt35www010

Placa de circuito impreso

Impresión de circuito impreso en placa fotosensible positiva mediante insoladora de rayos ultravioleta y posterior ataque químico. Incluye: Comprobación de continuidad de pistas y del correcto funcionamiento del circuito. (Mano de obra) Oficial 1ª electrónica. 1,00 h 20,42 (Materiales) Placa fotosensible (+) fibra de vidrio 1.6mm y 1,000 Ud 1,85 35µ Cu, 60x80cm Material auxiliar para instalaciones eléctricas. 0,100 Ud 1,36 (Resto obra) Total 3% Costes indirectos

20,42 1,85 0,14 0,05 26,11 0,67 23,13

4.2.3.1.2

mo001 zu40p con-m-3p int2p puls1p clk-20 r10k c22p reg2conex 16f877a mt35www010

Soldadura de componentes a placa PCB. Incluye: Comprobación de soldaduras de componentes y del correcto funcionamiento del circuito. (Mano de obra) Oficial 1ª electrónica. 0,25 h 20,42 (Materiales) Zócalo universal de 40 pines 1,000 Ud 0,35 Conector MACHO de 3 pines 22,000 Ud 0,24 Interruptor mini 2 posiciones 1,000 Ud 0,96 Pulsador 1 posición 1,000 Ud 0,85 Cristal de cuarzo de 20Mhz 1,000 Ud 1,50 Resistencia 10kΩ 1,000 Ud 0,10 Condensador 22pF 2,000 Ud 0,12 Regleta de alimentación de 2 conexiones 1,000 Ud 0,33 Micro-controlador PIC16F877A Microchip 1,000 Ud 6,28 Technology Material auxiliar para instalaciones eléctricas. 0,100 Ud 1,36 (Resto obra) Total 3% Costes indirectos

5,10 0,35 5.28 0,96 0,85 1,50 0,10 0,12 0,33 6,28 0,14 0,06 21,07 0,63 21,70

4.2.3.1.3

mo001 hcl1l ao110vol naoh0.5 mt35www011

Fabricación de líquido atacador y líquido revelador para el ataque químico de la placa fotosensible irradiada. (Mano de obra) Oficial 1ª electrónica. 0,25 h 20,42 (Materiales) Aguafuerte, ácido clorhídrico HCL 1 litro 1,000 Ud 0,96 Agua oxigenada 110 volúmenes 250 ml 1,000 Ud 6,25 Sosa cáustica - hidróxido de sodio NaOH 1,000 Ud 3,21 0,5kg Material auxiliar para instalaciones eléctricas. 0,100 Ud 1,36 (Resto obra) Total 3% Costes indirectos

5,10 0,96 6,25 3,21 0,14 0,06 12,51 0,37 12,88

Página 106 de 115

4.2.3.1.4

mo001 mt35www011

Diseño del circuito impreso mediante EAGLE, esquemático, distribución física de componentes y enrutado de pistas. (Mano de obra) Oficial 1ª electrónica. 3,00 h 20,42 Material auxiliar para diseño informático. 0,100 Ud 1,36 (Resto obra) Total 3% Costes indirectos

61,26 0,14 0,07 61,47 1,84 63,31

4.2.3.2. 4.2.3.2.1 mo002 mt35www011

Diseño y fabricación de piezas estructurales

Diseño de patas y cuerpo mediante AutoCAD (Mano de obra) Oficial 1ª mecánico. Material auxiliar para diseño informático. (Resto obra)

5,00 h 0,100 Ud

20,42 1,36

Total 3% Costes indirectos

102,10 0,14 0,06 102,30 3,07 105,37

4.2.3.2.2 mo002 mt35www011

Diseño de acople de servo-motores para articulación doble mediante AutoCAD (Mano de obra) Oficial 1ª mecánico. 3,00 h 20,42 Material auxiliar para diseño informático. 1,000 Ud 0,68 (Resto obra) Total 3% Costes indirectos

61,26 0,68 0,07 62,01 1,86 63,87

4.2.3.2.3

mo002 mecra5mm mt35www012

Fabricación cuerpo y patas, tibia y fémur, con metacrilato. Incluye limado y agujereado para tornillos pertinentes. (Mano de obra) Oficial 1ª mecánico. 20,00 h 20,42 (Materiales) Metacrilato hielo de 1m2 y 5mm de espesor 1,000 Ud 14,95 Material auxiliar para diseño informático. 3,000 Ud 0,68 (Resto obra) Total 3% Costes indirectos

408,40 14,95 2,04 0,07 425,46 12,76 438,22

4.2.3.2.4

mo002 alu5mm mt35www012

Fabricación soportes para servos dobles de aluminio. Incluye limado y agujereado para tornillos pertinentes. (Mano de obra) Oficial 1ª mecánico. 20,00 h 20,42 (Materiales) Plancha de aluminio 0.5 m2 y 5 mm de espesor 1,000 Ud 13,68 Material auxiliar para diseño informático. 3,000 Ud 0,68 (Resto obra) Total 3% Costes indirectos

408,40 13,68 2,04 0,08 424,20 12,73 436,93

Página 107 de 115

4.2.3.3. 4.2.3.3.1

mo001 smTG9e wira/vcam tor-rm2-10mm mt35aia010e4 var-h4mm var-rm4mm tuer-rm4mm tu-pvc7mm bat-liion3.4 rec6chFM dio-h

Montaje robot hexápodo

Montaje, atornillado y conexionado del robot completo. Incluye calibración de servo-motores para que estén en la posición deseada al inicio. (Mano de obra) Oficial 1ª electrónica. 1,00 h 20,42 (Materiales) Micro servo-motor Turnigy TG9e 9 gr. 1.5 Kg/cm, 25,00 Ud 1,97 0.10 seg/60º Módulo de video Wireless A/V camera 60Hz, 1 Ud 27,77 300m Kit 10 tornillos rosca métrica 2mm acero zincado y 10 Ud 1,00 10mm Long. Kit 10 tuercas rosca métrica 2mm acero zincado 10 Ud 1,00 1m varilla hueca de aluminio 4mm de diámetro 1 Ud 5,12 1m varilla de rosca métrica acero zincado 4mm 1 Ud 10,35 Kit 10 tuercas de rosca métrica 4mm acero zincado 4 Ud 1,84 0,5m tubo PVC flexible transparente de 7mm 1 Ud 2,15 Batería li-ion 3,4v 4000mAh Ultrafire 2 Ud 8,25 Receptor 6 canales FM GUANLI 1 Ud 5,67 Diodo de alto amperaje 2 Ud 0,46 (Resto obra) Total 3% Costes indirectos

20,42 49,25 27,77 10,00 10,00 5,12 10,35 7,36 2,15 16,50 5,67 0,92 1,15 166,66 4,50 171,66

4.2.3.4. 4.2.3.4.1

mo001 cuce-mm-1.5 cuce-hh-1.5 transFM35Mh progTE20 cargbat-liion

Programación de código y pruebas

Programación de código de control de robot hexápodo, así como depuración, optimización y pruebas varias. (Mano de obra) Oficial 1ª electrónico. 580,00 h 20,42 11.843,60 (Materiales) Kit 70 cables unipolar macho-macho, conductor cobre 1,000 Ud 4,80 4,80 estañado 1,5 mm² Kit 40 cables unipolar hembra-hembra, conductor 1,000 Ud 5,20 5,20 cobre estañado 1,5 mm² Transmisor 4 canales FM GUANLI Skysport four, 1,000 Ud 22,50 22,50 35MHz Programador de micro-controladores TE-20 1,000 Ud 16,72 16,72 Cargador para batería li-ion 1,000 Ud 15,32 15,32 (Resto obra) 1,80 Total 11.909,94 3% Costes indirectos 357,30 12.267,24

Página 108 de 115

4.2.4. Presupuesto 4.2.4.1.

Placa de circuito impreso



Ud Descripción

4.2.4.1.1

Ud Impresión de circuito impreso en placa fotosensible positiva mediante insoladora de rayos ultravioleta y posterior ataque químico. Incluye: Comprobación de continuidad de pistas y del correcto funcionamiento del circuito. Total Ud ......: 1,000 23,13

23,13

Ud Soldadura de componentes a placa PCB. Incluye: Comprobación de soldaduras y correcto funcionamiento de la palca. Total Ud ......: 1,000 21,70

21,70

Ud Fabricación de líquido atacador y líquido revelador para el ataque químico de la placa fotosensible irradiada. Total Ud ......: 1,000 12,88

12,88

Ud Diseño del circuito impreso mediante EAGLE, esquemático, distribución física de componentes y enrutado de pistas. Total Ud ......: 1,000 63,31

63,31

4.2.4.1.2

4.2.4.1.3

4.2.4.1.4

Medición

Precio

Total subcapítulo 4.2.4.1.- Placa de circuito impreso: 4.2.4.2.

Ud Descripción

4.2.4.2.1

Ud Diseño de patas y cuerpo mediante AutoCAD.

Medición

Total Ud ......:

4.2.4.2.4

1,000

Precio

Importe

105,37

105,37

Ud Diseño de acople de servo-motores para articulación doble mediante AutoCAD Total Ud ......:

4.2.4.2.3

121,02

Diseño y fabricación de piezas estructurales



4.2.4.2.2

Importe

1,000

63,87

63,87

Ud Fabricación cuerpo y patas, tibia y fémur, con metacrilato. Incluye limado y agujereado para tornillos pertinentes. Total Ud ......: 1,000 438,22

438,22

Ud Fabricación soportes para servos dobles de aluminio. Incluye limado y agujereado para tornillos pertinentes. Total Ud ......: 1,000 463,96

436,93

Total subcapítulo 4.2.4.2.- Diseño y fabricación de piezas estructurales: 4.2.4.3.

1.044,39

Montaje robot hexápodo



Ud Descripción

Medición

Precio

4.2.4.3.1

Ud Montaje, atornillado y conexionado del robot completo. Incluye calibración de servomotores para que estén en la posición deseada al inicio. Total Ud ......: 1,000 171,66

Total subcapítulo 4.2.4.3.- Montaje robot hexápodo:

Importe

171,66

171,66

Página 109 de 115

4.2.4.4. Nº

Programación de código y pruebas

Ud Descripción

Medición

Precio

Importe

4.2.4.4.1 Ud Programación de código de control de robot hexápodo, así como depuración, optimización y pruebas varias. Total Ud ......: 1,000 12.267,24

Total subcapítulo 4.2.4.4.- Programación de código y pruebas:

12.267,24

12.267,24

4.2.5. Resumen presupuesto Capítulo

Importe (€)

4.2.4.1. Placa de circuito impreso 4.2.4.2. Diseño y fabricación de piezas estructurales 4.2.4.3. Montaje de robot hexápodo 4.2.4.4. Programación de código y pruebas Total Diseño y construcción..........: Presupuesto de ejecución material (PEM) 13% de gastos generales 6% de beneficio industrial Presupuesto de ejecución por contrata (PEC = PEM + GG + BI) 21% IVA Presupuesto de ejecución por contrata con IVA (PEC = PEM + GG + BI + IVA)

121,02 1.044,39 171,66 12.267,24 13.604,31 13.604,31 1.768,56 816,26 16.189,13 3.399,72 19.588,85

Asciende el presupuesto de ejecución por contrata con IVA a la expresada cantidad de DIECINUEVE MIL QUINIENTOS OCHENTA Y OCHO EUROS CON OCHENTA Y CINCO CÉNTIMOS.

Tarragona, Septiembre de 2013 EL AUTOR DEL PROYECTO

David del Castillo Sánchez Nº Colegiado 23111 Ingeniero Técnico Industrial especializado en electrónica Industrial

Página 110 de 115

Diseño y construcción de un robot de rastreo microcontrolado

Documento núm. 5: RECURSOS UTILIZADOS

AUTOR: David del Castillo Sánchez

Página 111 de 115

Índice de recursos utilizados 5.1.

Índice de recursos utilizados .............................................................. 112

5.2.

Software utilizado .............................................................................. 113

5.2.1.

MPLAB IDE .......................................................................................... 113

5.2.2.

EAGLE ................................................................................................. 113

5.2.3.

Autodesk AutoCAD .............................................................................. 113

5.2.4.

PICpgm................................................................................................ 114

5.3.

Web grafía ......................................................................................... 114

Página 112 de 115

5.1. Software utilizado 5.1.1. MPLAB IDE MPLAB es un ambiente de desarrollo integrado (IDE, por sus siglas en inglés) creado por Microchip Technology para dar soporte a la realización de proyectos basados en micro-controladores PIC. Incluye varios módulos que permiten llevar a cabo las distintas etapas de un proyecto: Edición, Ensamblaje, Simulación y Programación. Con el fin de crear el código hexadecimal (.hex) que la interfaz de programación necesita para programar o “quemar” el micro-controlador, los archivos fuente se deben asociar a un proyecto. El proyecto controla todo el proceso. Los pasos necesarios para trabajar con el entorno de MPLAB IDE son: 1. 2. 3. 4. 5. 6.

Seleccionar el dispositivo. Crear el proyecto. Seleccionar las herramientas de lenguaje (Toolsuite). Crear el código fuente (.asm) Agregar los archivos al proyecto. Construir el proyecto.

En nuestro caso hemos usado el programa para editar y ensamblar el código del robot. 5.1.2. EAGLE El programa EAGLE (Easy Applicable Graphical Layout Editor en inglés) permite dibujar diagramas esquemáticos de circuitos electrónicos, generar cada una de las caras de una placa de circuito impreso (PCB), así como la plantilla de perforaciones y las máscaras de soldadura utilizadas en la manufactura del PCB. EAGLE viene cargado con una amplia gama de librerías de componentes pasivos, activos, conectores, entre otros, aparte de que permite la generación de nuevas librerías de componentes. Gracias e él hemos diseñado el circuito esquemático de la placa integrada y la distribución física de componentes así como el encaminamiento de pistas. 5.1.3. Autodesk AutoCAD Autodesk AutoCAD es un software de diseño asistido por computadora para dibujo en dos y tres dimensiones. Actualmente es desarrollado y comercializado por la empresa Autodesk. El nombre AutoCAD surge como creación de la compañía Autodesk, en que Auto hace referencia a la empresa creadora del software y CAD a Diseño Asistido por Computadora (por sus siglas en inglés) teniendo su primera aparición en 1982.3 AutoCAD es un software reconocido a nivel internacional por sus amplias capacidades de edición, que hacen posible el dibujo digital de planos de edificios o la recreación de imágenes en 3D, es uno de los programas más usados por arquitectos, Ingenieros y diseñadores industriales. Todos los planos adjuntos en el documento nº3 se han realizado con la ayuda de este software.

Página 113 de 115

5.1.4. PICpgm El Software PICPgm Development Programmer es un software programador InSystem-Development gratuito y simple para los micro-controladores PIC de Microchip. El software de programación está disponible con una interfaz gráfica de usuario (GUI) y una interfaz de línea de comandos. Para interconectar el PC al micro-controlador PIC es necesario un hardware de programación. PICPgm soporta una gran cantidad de programas que se pueden conectar a la PC a través del de impresora, el puerto COM serial o USB. PICPgm soporta todos los tipos de programadores de puerto serie, así como programadores de puerto paralelo. Además, los programadores USB también son compatibles. Los pines del programador se pueden configurar a través de la interfaz gráfica de usuario. Hemos usado este programa para quemar o grabar nuestro código en el propio PIC mediante puerto paralelo.

5.2. Web grafía Hemos consultado en internet varias páginas web donde hemos podido encontrar información interesante que se ha utilizado para realizar este proyecto. En el siguiente apartado se va a hacer una relación de los sitios de referencia fundamentales de este proyecto de robótica. http://es.wikipedia.org/wiki/Radiofrecuencia

Artículo relacionado con la radiofrecuencia. Aquí podremos encontrar información sobre el espectro de radiofrecuencia. Desde su definición, hasta su historia, usos o curiosidades. http://www.mikroe.com/chapters/view/79/capitulo-1-el-mundo-de-los-microcontroladores/

Artículos de micro-controladores PIC. Espacio dedicado al micro-controlador. Encontramos información amplia, detallada e interesantísima sobre su composición, estructura, programación, y mucha más información. http://deeea.urv.cat/DEEEA/ecanto/WWW/SEAM.HTM

DEEEA. Espacio del profesor Enrique Canto de la Universidad Rovira i Virgili, dedicado a la asignatura de micro-controladores. Encontraremos toda la información del PIC que estamos usando para el proyecto, así como su manual técnico. http://www.monografias.com/trabajos14/leng-ensamblador/leng-ensamblador.shtml

Lenguaje ensamblador. Espacio dedicado al lenguaje de programación ensamblador, así como sus ventajas e inconvenientes respecto a otros lenguajes.

Página 114 de 115

http://picpgm.picprojects.net/software.html

PICpgm. En esta dirección tendremos a nuestra disposición el software PICpgm. Se ha utilizado para quemar o grabar nuestro código en el micro-controlador. http://blog.bricogeek.com/noticias/tutoriales/tutorial-como-hacer-una-placa-pcb-desdeprincipio-a-fin/

Tutorial PCB. En este espacio se encuentra un interesante tutorial para hacernos nuestra placa de circuito integrado de forma casera, pero igualmente efectiva. Con ello nos hemos ahorrado algunos costes. http://platea.pntic.mec.es/vgonzale/cyr_0708/archivos/_15/Tema_5.2.htm

Robots. Información sobre los tipos de robots que existen. Se ha utilizado como documentación a la hora de tomar decisiones durante el diseño. http://www.monografias.com/trabajos6/larobo/larobo.shtml

Robótica. Extenso y muy interesante documento sobre la robótica. http://www.icmm.csic.es/jaalonso/velec/baterias/bateria.htm

Baterías: Información sobre diferentes tipos de baterías así cono sus ventajas e inconvenientes http://es.wikipedia.org/wiki/Bater%C3%ADa_de_ion_de_litio

Baterías li-ion: Información sobre las baterías de li-ion, así cono ventajas e inconvenientes de este sistema de alimentación.

Tarragona, Septiembre de 2013 EL AUTOR DEL PROYECTO

David del Castillo Sánchez Nº Colegiado 23111 Ingeniero Técnico Industrial especializado en electrónica Industrial

Página 115 de 115

Get in touch

Social

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