FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf ·...

214
ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA CONSTRUCCIÓN Y PROGRAMACIÓN DE UN GRUPO DE ROBOTS MÓVILES SOBRE LA BASE DEL PRODUCTO LEGO MINDSTORMS NXT PROYECTO PREVIO A LA OBTENCIÓN DEL TÍTULO DE INGENIERO EN ELECTRÓNICA Y CONTROL MEDARDO ÁNGEL SILVA AMORES [email protected] DIRECTORA: Ing. ANA RODAS [email protected] Quito, julio de 2011

Transcript of FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf ·...

Page 1: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

ESCUELA POLITÉCNICA NACIONAL

FACULTAD DE INGENIERÍA ELÉCTRICA Y

ELECTRÓNICA

CONSTRUCCIÓN Y PROGRAMACIÓN DE UN GRUPO DE

ROBOTS MÓVILES SOBRE LA BASE DEL PRODUCTO

LEGO MINDSTORMS NXT

PROYECTO PREVIO A LA OBTENCIÓN DEL TÍTULO DE INGENIERO EN

ELECTRÓNICA Y CONTROL

MEDARDO ÁNGEL SILVA AMORES

[email protected]

DIRECTORA: Ing. ANA RODAS

[email protected]

Quito, julio de 2011

Page 2: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

i

DECLARACIÓN

Yo, Medardo Ángel Silva Amores, declaro bajo juramento que el trabajo aquí

descrito es de mi autoría; que no ha sido previamente presentado para ningún

grado o calificación profesional; y, que he consultado las referencias bibliográficas

que se incluyen en este documento.

A través de la presente declaración cedo mis derechos de propiedad intelectual

correspondientes a este trabajo, a la Escuela Politécnica Nacional, según lo

establecido por la Ley de Propiedad Intelectual, por su Reglamento y por la

normatividad institucional vigente.

_______________________

Medardo Ángel Silva Amores

Page 3: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

ii

CERTIFICACIÓN

Certifico que el presente trabajo fue desarrollado por Medardo Ángel Silva

Amores, bajo mi supervisión.

_________________________

Ing. Ana Rodas B.

DIRECTORA DEL PROYECTO

Page 4: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

iii

AGRADECIMIENTO

Mi profundo agradecimiento a la Ing. Ana Rodas,

cuya ayuda y estímulo ha sido determinante para

facilitar la terminación de este tan esperado proyecto.

Page 5: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

iv

DEDICATORIA

Mucho tiempo tomó el llegar a este momento y

posiblemente la persona que más se alegrará

porque finalmente se produjo es mi madre, a

quien va dedicado este trabajo.

Page 6: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

v

RESUMEN

El presente trabajo tiene como principal objetivo el construir y programar un

conjunto de robots móviles sobre la base del producto Lego Mindstorms en su

versión NXT 1.0. Para ello se ha propuesto la construcción y programación de

algunos prototipos que pretenden principalmente mostrar las diferentes opciones

que ofrece el producto mencionado.

Los prototipos diseñados usan, en conjunto, todos los sensores con los que viene

equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

Los programas desarrollados intentan aprovechar las principales características

con las que puede ser programado el ladrillo programable NXT: manejo de

entradas y salidas, contadores, temporizadores, subrutinas, estructuras de lazo,

funciones que permiten tomar decisiones, almacenamiento de datos, generación

de tonos, comunicación entre ladrillos mediante bluetooth, etc. Como lenguajes de

programación se utilizan, de entre las múltiples opciones existentes en el mercado

y en el ciberespacio, el lenguaje propio del fabricante, NXT-G, y otro que se

encuentra dentro de la categoría de software libre y que es conocido como NXC.

El lenguaje de programación NXT-G está desarrollado sobre la plataforma de

Labview y tiene características gráficas que lo hacen simple de manipular, pero

que resulta engorroso cuando se trata de hacer programas un poco largos o

cuando se requiere de una mayor capacidad de procesamiento numérico. El

segundo lenguaje presentado, el NXC (Not eXactly C), tiene mejores

características frente al anterior ante los dos criterios mencionados y está

desarrollado sobre una plataforma de lenguaje C.

Se han desarrollado las siguientes aplicaciones: un medidor de longitud, una

calculadora de área y volumen a partir de la medición de longitudes, un escorpión

que reacciona ante estímulos externos, un brazo mecánico que incluye la

posibilidad de reconocer colores, un auto controlado con un algoritmo PID para

mantener una posición relativa hacia un objeto, un seguidor de línea y una

aplicación de control remoto mediante bluetooth.

Page 7: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

vi

PRESENTACIÓN

El trabajo desarrollado ha sido estructurado de tal manera que se puede estudiar,

de forma separada, la construcción del hardware y el diseño del software. Aún

cuando los dos aspectos están siempre íntimamente relacionados, esta forma de

presentación permite descubrir fácilmente las dificultades que muestra cada

aspecto del diseño.

En el capítulo 1 se presentan algunos conceptos básicos sobre la robótica y sus

aplicaciones, colocando mayor énfasis en la parte educativa y en la investigación.

Se hace una presentación del producto Lego Mindstorms y de su evolución a

través del tiempo y se ofrecen también algunos ejemplos de universidades que

trabajan en proyectos de investigación y lo usan como recurso principal, dada su

gran versatilidad.

En el capítulo 2 se realiza una descripción detallada del hardware contenido en un

kit de Lego Mindstorms 8527. Se mencionan lo principios físicos y eléctricos con

los que funcionan los sensores incluidos en el equipo, así como los de los

servomotores existentes. Una gran parte de este capítulo está destinada a la

descripción física de los prototipos diseñados en todo el trabajo.

En el capítulo 3 se presentan los lenguajes de programación que van a ser

utilizados durante el desarrollo de este proyecto, no sin antes mencionar las

diferentes opciones que existen en el mercado y de forma libre en el ciberespacio.

Los programas desarrollados para los prototipos diseñados son también

detallados en este capítulo.

En el capítulo 4 se muestran los resultados de algunas de las pruebas realizadas

sobre los prototipos armados y se mencionan adicionalmente las dificultades

mostradas por los diseños propuestos en su funcionamiento y, por tanto, sus

limitaciones.

Page 8: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

vii

Finalmente se presentan conclusiones válidas sobre el trabajo desarrollado y

algunas recomendaciones que podrían ser tomadas en cuenta por futuros

usuarios del producto y de este documento.

Page 9: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

viii

CONTENIDO

Página

CAPÍTULO 1: Estudio de sistemas y aplicaciones robóticas 1

1.1 Robótica 1

1.2 Robótica didáctica 3

1.2.1 Campo de aplicación 5

1.3 Fabricantes de kits para la educación 6

1.4 Historia de Lego 7

1.5 Lego Mindstorms en la universidad 10

1.6 Aplicaciones a desarrollar 13

1.6.1 Medidores de varias magnitudes 13

1.6.2 Escorpión 13

1.6.3 Brazo mecánico 14

1.6.4 Vehículo con control de posición PID 14

1.6.5 Seguidor de línea 14

1.6.6 Control remoto mediante bluetooth 14

CAPÍTULO 2: Diseño e implementación de los módulos 16

2.1 Características de Lego Mindstorms NXT 16

2.1.1 Hardware (CPU) 16

2.1.1.1 Estructura interna del ladrillo NXT 19

2.1.1.2 Puertos del ladrillo NXT 20

2.1.1.3 Manejo de energía 21

2.1.1.4 Comunicaciones 22

2.1.1.4.1 Comunicación entre ladrillos mediante bluetooth 23

2.1.1.5 Sonido 24

2.1.1.6 Botones 24

2.1.2 Sensores 25

2.1.2.1 Sensor de contacto 25

2.1.2.2 Sensor de luz 26

Page 10: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

ix

Página

2.1.2.3 Sensor de ultrasonido 27

2.1.2.4 Sensor de sonido 28

2.1.3 Los motores de Lego NXT 29

2.1.4 Conjunto de piezas 31

2.2 Desarrollo de los módulos 37

2.2.1 Medidor de variables múltiples 37

2.2.1.1 Medidor de longitudes 37

2.2.1.2 Calculadora de área y volumen 41

2.2.1.3 Medidor de sonido 42

2.2.2 Escorpión 44

2.2.3 Brazo mecánico 50

2.2.4 Vehículo controlado mediante algoritmo PID 58

2.2.5 Seguidor de línea 63

2.2.6 Aplicaciones remotas 68

CAPÍTULO 3: Desarrollo de la programación 69

3.1 Lenguajes de programación 69

3.2 Lenguaje de programación NXT-G 74

3.2.1 Entorno de programación del lenguaje NXT-G 75

3.2.2 Bloques 76

3.2.3 Controles de salida 77

3.2.4 Controles de entrada 79

3.2.5 Las comunicaciones 81

3.2.6 Flujo del programa 82

3.2.7 Otros bloques 83

3.2.8 Bloques definidos por el usuario 84

3.2.9 Variables 85

3.2.10 Operaciones matemáticas 86

3.2.11 Bloques especiales 87

3.2.12 Cables de datos 89

3.3 Lenguaje de programación NXC 90

3.3.1 Entorno de programación para el lenguaje NXC 91

Page 11: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

x

Página

3.3.2 Programación en NXC 92

3.3.2.1 Programas con NXC 93

3.3.2.2 Variables 94

3.3.2.3 Conjuntos definidos por el usuario 95

3.3.2.4 Arreglos 95

3.3.2.5 Asignaciones 95

3.3.2.6 Estructuras 96

3.3.2.7 Expresiones 97

3.3.2.8 Condiciones 98

3.3.2.9 NXC API 98

3.3.2.9.1 Funciones de temporización 98

3.3.2.9.2 Funciones de control del programa 99

3.3.2.9.3 Funciones de cadenas de caracteres 100

3.3.2.9.4 Funciones numéricas 100

3.3.2.10 Módulo de entrada 100

3.3.2.11 Módulo de salida 101

3.3.2.12 Módulo de sonido 102

3.3.2.13 Módulo de pantalla LCD 102

3.3.2.14 Módulo de comunicaciones 103

3.3.2.15 Manejo de archivos 104

3.4 Programación de los módulos desarrollados 105

3.4.1 Medidor de variables múltiples 105

3.4.1.1 Medidor de longitudes 105

3.4.1.1.1 Diagrama de flujo del medidor de longitudes 107

3.4.1.1.2 Código NXT-G del medidor de longitudes 108

3.4.1.2 Calculadora de área y volumen 110

3.4.1.2.1 Diagrama de flujo de la calculadora de áreas y volúmenes 110

3.4.1.2.2 Código NXT-G de la calculadora de áreas y volúmenes 112

3.4.1.3 Medidor de sonido 115

3.4.1.3.1 Diagrama de flujo del medidor de sonido 116

3.4.1.3.2 Código NXT-G del medidor de sonido 117

3.4.2 Escorpión 118

Page 12: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

xi

Página

3.4.2.1 Diagrama de flujo del programa del “escorpión” 118

3.4.2.2 Código NXC del programa del “escorpión” 120

3.4.3 Brazo mecánico 122

3.4.3.1 Diagrama de flujo del programa del brazo mecánico 123

3.4.3.2 Código NXC del programa del brazo mecánico 125

3.4.4 Vehículo controlado mediante un algoritmo PID 129

3.4.4.1 Diagrama de flujo del programa del controlador PID 132

3.4.4.2 Código NXC del programa del controlador PID 133

3.4.5 Seguidor de línea 137

3.4.5.1 Diagrama de flujo del seguidor de línea 139

3.4.5.2 Código NXC del programa del seguidor de línea 139

3.4.6 Aplicaciones remotas 141

3.4.6.1 Programa del controlador (mando) 141

3.4.6.1.1 Diagrama de flujo del mando a distancia 142

3.4.6.1.2 Código NXT-G del controlador (mando) 144

3.4.6.2 Programa del vehículo controlado 145

3.4.6.2.1 Diagrama de flujo del programa del vehículo controlado 145

3.4.6.2.2 Código NXT-G del vehículo controlado 147

CAPÍTULO 4: Pruebas y resultados 149

4.1 Medidores de variables múltiples 149

4.1.1 Medidor de longitudes 149

4.1.2 Calculadora de áreas y volúmenes 150

4.1.3 Medidor de sonido 152

4.2 Escorpión 154

4.3 Brazo mecánico 155

4.4 Vehículo controlado mediante algoritmo PID 156

4.5 Seguidor de línea 160

4.6 Aplicaciones remotas 164

CAPÍTULO 5: Conclusiones y recomendaciones 166

5.1 Conclusiones 166

Page 13: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

xii

Página

5.2 Recomendaciones 167

Referencias bibliográficas 169

Anexos 173

Anexo A: Sistema de bola y viga desarrollado sobre la base del producto

Lego Mindstorms NXT

Anexo B: Menú principal del NXT

Anexo C: Diagramas eléctricos del hardware utilizado en el producto

Lego Mindstorms NXT

Page 14: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

1

CAPÍTULO 1

ESTUDIO DE SISTEMAS Y APLICACIONES ROBÓTICAS

1.1 ROBÓTICA

El término robot fue introducido por el escritor checoslovaco Karen Čapeck,

fallecido en 1938, quien incluyó en una de sus obras la palabra robota, que

significa trabajo. La obra se llamaba “R.U.R.” (Rossum´s Universal Robots) y en

ella se presenta al obrero moderno como un esclavo mecánico. Los robots y el

término robótica se volvieron populares en los años cuarenta gracias al autor de

ciencia ficción Isaac Asimov, quien asimismo planteó las leyes de la robótica

(Runabout, 1942).

En general se entiende como robot a una máquina que tiene forma humana y

realiza tareas humanas. Otra definición dice que robot es un manipulador

multifuncional y reprogramable, diseñado para mover materiales, piezas,

herramientas o dispositivos especiales, mediante movimientos programables y

variables que permitan llevar a cabo diversas tareas. En el inicio del desarrollo de

los robots se perseguía que estos realicen las tareas que son peligrosas o que

traen riesgos para el hombre; actualmente se busca además que puedan ejecutar

procesos cognitivos y no necesariamente seguirán la inconveniente forma

humana -para algunos procesos- en su diseño.

Entre las principales características de un robot se encuentran su gran

versatilidad al poder ejecutar diversas tareas o una misma tarea de diversas

maneras y su autoadaptabilidad al entorno, lo que exige que el mismo cuente con

sentidos artificiales que le permitan "darse cuenta" de la forma en la que debe

cumplir su tarea.

Los robots son, por lo tanto, dispositivos compuestos de sensores que reciben

datos de entrada, un sistema central de control que al recibir tal información

Page 15: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

2

ordena al robot que efectúe una determinada acción y, finalmente, los dispositivos

que ejecutan las acciones en el medio externo.

En resumen, un robot consiste básicamente de cinco componentes:

1. Un cerebro que ordena la ejecución de acciones y que reacciona frente a la

información proveniente de los sensores. El cerebro es normalmente un

sistema microprocesado.

2. El cuerpo del robot o simplemente el chasis, que mantiene unidas a sus

diferentes partes.

3. Los actuadores que permiten el movimiento del robot. Se tratan

normalmente de motores eléctricos, pero también pueden haber otras

posibilidades como pistones hidráulicos o neumáticos, etc.

4. Los sensores que dan al robot la información sobre su entorno.

5. Una fuente de energía que permite el funcionamiento del cerebro,

actuadores y sensores. Este componente no siempre es parte del robot en

sí mismo.

Para clasificar los robots se pueden establecer diversos criterios: funcionalidad,

geometría, inteligencia, etc. Las características con las que se clasifican los robots

son:

- propósito o función,

- sistema de coordenadas empleado,

- número de grados de libertad,

- generación del sistema de control.

A continuación se presenta una posible forma de clasificar los robots [1]:

- Industriales o manipuladores: suelen tener la forma de un brazo articulado

en cuyo extremo se incorporan elementos de sujeción o herramientas.

Estas máquinas realizan tareas repetitivas en industrias de automoción y

se usan para montar piezas, moverlas, ajustarlas, soldarlas, pintarlas, etc.

Page 16: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

3

- Móviles o vehículos robot: se desplazan usando ruedas, orugas o patas

articuladas y se utilizan para suministrar herramientas o materiales a los

manipuladores, para transportar materiales peligrosos, para colocar cables

submarinos, explorar el fondo del mar o para hacer exploraciones

espaciales.

- Prótesis para uso humano: son dispositivos electromecánicos que realizan

el trabajo de las manos, los dedos o las piernas de los seres humanos.

- Didácticos o experimentales: se utilizan en la enseñanza y el aprendizaje

de la robótica. Dentro de este tipo de robots se incluyen los juguetes que

imitan algunas funciones de los robots experimentales.

- Manos teledirigidas (telchirs): dedicadas a manipular productos

radioactivos o peligrosos y a colaborar en operaciones quirúrgicas

controladas de forma remota por cirujanos expertos (telecirugía).

- Instalaciones inteligentes: sirven para controlar de manera automatizada

las mercancías de almacenes o los libros de bibliotecas, entre otras

aplicaciones.

- Microrobots o nanorobots: constituyen la última tendencia en las

investigaciones en el campo de la robótica. Se trata de dispositivos de

tamaños de centímetros y milímetros con los que se actúa, por ejemplo, en

el cuerpo humano para realizar intervenciones en vasos sanguíneos

dañados o en el interior de máquinas para diagnosticar posibles averías.

1.2 ROBÓTICA DIDÁCTICA [2][3][4][5]

Durante las últimas décadas investigadores e industrias han propuesto y

desarrollado kits que permiten la construcción de robots, diseñados para estimular

el aprendizaje de conceptos y métodos relativos a la educación de estudiantes en

contenidos científicos tales como informática, mecánica, matemática y física. Los

kits incluyen pequeños motores, sensores, ruedas, engranajes, poleas y relés, es

decir, todo aquello que el estudiante necesita para construir robots. Existen

productos que incluyen cables y/o equipamientos de radio que posibilitan conectar

al robot con un computador personal, lo que a su vez permite al usuario

programar y controlar el invento.

Page 17: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

4

Algunos de estos kits han sido desarrollados de acuerdo a los principios

educativos derivados de las teorías del desarrollo cognitivo de Jean Piaget (1966)

y revisados por Seymour Papert (1980-1986), profesor del Media Lab del Instituto

Tecnológico de Massachusetts. Su enfoque indica que, en el centro de todo

proceso de aprendizaje, es el papel activo de quien aprende el que amplía su

conocimiento a través de la manipulación y construcción de objetos. Esta filosofía

sugiere que la tradicional construcción a partir de kits concebidos para ello, es

muy adecuada como herramienta de aprendizaje. Sin embargo, dar vida a un

objeto por medio de la interacción con un computador personal hace posible

desarrollar aplicaciones que van más allá de la idea original de los que

propusieron esta metodología.

En los cursos tradicionales de informática pocas veces se enseña a los alumnos

sobre las indeterminaciones de la interacción en el mundo real; de hecho, a

menudo intentan abstraerse del mundo real y construyen sistemas

completamente deterministas. Esto puede generar problemas a los ingenieros que

posteriormente deben diseñar y/o programar sistemas de control para el mundo

real. Los problemas son, a menudo, debidos a que los estudiantes yerran al ver al

robot desde su propio punto de vista, ya que confían en abstracciones poco

realistas en las que han sido adiestrados a lo largo de su educación. Por medio de

la experimentación con sensores, motores y su control, los estudiantes modifican

gradualmente su percepción de la interacción entre el robot y el mundo real,

modificando continuamente sus diseños hasta convertirlos en realistas y

funcionales.

El éxito de este tipo de experimento educativo es parcialmente debido a la

facilidad del ensamblaje de los kits de construcción disponibles en el mercado, los

mismos que permiten a los estudiantes encontrar soluciones sencillas a

problemas físicos no siempre sencillos. Los estudiantes adquieren una

comprensión profunda de las discrepancias entre los resultados pronosticados en

la fase de diseño y los realmente producidos por sus máquinas, aprendiendo a

Page 18: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

5

reducir tal diferencia entre diseño y construcción, lo que es fundamental para la

innovación tecnológica.

1.2.1 CAMPO DE APLICACIÓN

Se han construido, por ejemplo, pequeñas máquinas que simulan el

comportamiento de animales en sus entornos, ambos construidos artificialmente y

que consideran condiciones reales. Tales prototipos son esencialmente robots

móviles que, como los animales reales, tienen un aparato sensorial (por ejemplo,

sensores sensibles a la luz o el calor), un sistema motriz (por ejemplo, brazos

mecánicos o ruedas controladas por motores) y un cerebro (programa de

computador que reacciona ante las señales captadas por los sensores). Estas

máquinas pueden ser consideradas como organismos artificiales y ser usadas con

propósitos educativos y en investigación básica, como en la psicología

(investigación del comportamiento), etología (ciencia de las costumbres) y

robótica.

Los experimentos que se desarrollan ayudan a los estudiantes a asimilar

conceptos que de otra manera serían abstractos y confusos. Se asimilan nociones

complejas a través de la construcción de sistemas compuestos por varios

componentes de hardware y software y se aprende a estudiar la realidad desde

diferentes puntos de vista, es decir, desde diferentes niveles de análisis,

observando el comportamiento de robots individuales y el comportamiento global

que surge de la interacción entre estos individuos.

Es importante indicar que no se trata de introducir nuevas nociones o conceptos,

sino nuevos modos de observación y razonamiento que puedan ayudar a las

personas a evaluar con más atención la realidad en la que viven.

El posible campo de aplicación de la creación de organismos artificiales es

realmente ilimitado: se ha demostrado la pertinencia de su uso tanto a nivel

escolar como a nivel superior.

Page 19: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

6

La experiencia demuestra que muchos ingenieros tienen a menudo un excelente

conocimiento de los conceptos teóricos fundamentales en su disciplina, pero

insuficiente experiencia en el diseño y construcción de prototipos industriales.

1.3 FABRICANTES DE KITS PARA LA EDUCACIÓN[6]

Hay varias propuestas de hardware para usar la robótica en aplicaciones

educativas. En general, se puede agrupar estas sugerencias de la siguiente

manera: 1) adquisición de un robot con una morfología predefinida, y 2)

construcción de un robot a partir de pequeñas piezas. En cuanto a la primera

opción, existen en el mercado muchas ofertas de robots de uso adecuado para el

aula. Estos robots se venden en una configuración básica y es posible adquirir

módulos adicionales de acuerdo a la necesidad específica. Este tipo de robots

suele ser adecuado para su uso por parte de estudiantes universitarios y de

postgrado.

En muchos otros casos, un robot con una morfología predefinida es inapropiado.

Por ejemplo, si la idea es aprender sobre engranajes, motores y sensores, es

mejor tener la posibilidad de experimentar prácticamente al construir su propio

robot físico. La segunda opción antes indicada es en este caso la más adecuada.

En el mercado existen también algunas posibilidades, de entre las cuales se

mencionan las marcas y/o productos: National Instruments y MobileRobots Inc.,

Handy Board y Super Cricket del MIT, LEGO, Fischertechnik, Meccano, Parallax

Inc., NeoRobotic, etc. Los productos mencionados no proporcionan la misma

precisión de los robots industriales, pero son usados en procesos didácticos y de

investigación.

En la situación que ocupa el presente trabajo, se tratará únicamente con el

producto Lego Mindstorms en su versión NXT, la misma que se encontró

disponible a partir de agosto de 2006 en su versión inicial.

Page 20: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

7

1.4 HISTORIA DE LEGO [7]

LEGO es el nombre de una empresa de juguetes de origen danés reconocida

principalmente por sus bloques de plástico interconectables. La compañía fue

fundada en 1932 y el nombre LEGO fue adoptado por la misma en 1934, formado

por la frase del danés "leg godt", que significa "jugar bien". Los orígenes de este

juguete corresponden a un pobre carpintero de Billund, Dinamarca, llamado Ole

Kirk Christiansen.

El concepto de “jugar bien” sigue siendo la filosofía de los productos Lego,

alentando a los niños a ser abiertos y curiosos, a estimular su creatividad,

imaginación y aprendizaje mientras se divierten.

Los juguetes producidos por Lego fueron construidos hasta 1949 casi

exclusivamente de madera. En este año se desarrollaron juguetes de plástico con

bloques interconectables, los mismos que llevaron a la marca a la fama. El

material que se usó en ese entonces fue acetato de celulosa y el éxito residía en

que los bloques no solo podían apilarse unos sobre otros, sino también en que

podían trabarse entre ellos, aunque fue recién en 1958 en que el diseño

actualmente conocido fue desarrollado. Fue también en este año en que, ante el

fallecimiento de Ole Kirk, su hijo Godtfred heredó el liderazgo de la compañía.

En los años 1961 y 1962 se agregaron las primeras ruedas Lego, lo que permitió

a la empresa emprender la construcción de camiones, automóviles, autobuses y

otros vehículos. De la misma manera, Lego hizo convenios con empresas que le

permitieron introducirse en el mercado pre-escolar.

En 1963 se abandonó el acetato de celulosa como material para fabricar las

piezas de Lego y se pasó a usar acrilonitrilo butadieno estireno, o plástico ABS,

material que dio mayor estabilidad a los ladrillos de Lego. El ABS es más

resistente al calor, a ácidos, a sales y a otros químicos y no es tóxico. Una gran

ventaja de los ladillos Lego fabricados con ABS es que las piezas construidas en

Page 21: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

8

1963 son perfectamente interconectables con piezas producidas en el año 2004,

por ejemplo.

Lego ha incursionado en algunas líneas con sus productos y ha fabricado

modelos para armar trenes, los mismos que incluían motores de 4,5V y que luego

fueron reemplazados por otros de 12V. De la misma manera, pensando en una

mayor seguridad para los usuarios más pequeños, abrió la línea Duplo, la misma

que incluye ladrillos de tamaño mayor que las piezas anteriores. La conectividad

entre estos productos se mantiene. En 1974 fueron creadas las figuras humanas

con brazos articulados y se convirtieron en producto estrella. Más adelante, entre

los años 1975 y 1977 se crearon los juegos “serie experto” y luego “constructor

experto”, los mismos que incorporaban engranajes, ruedas dentadas, palancas,

ejes y coyunturas universales y así se permitió el ensamblaje de vehículos mucho

más cercanos a los reales.

De la misma manera se han producido expansiones significativas de la línea Lego

incluyendo cada vez nuevos productos: FABULAND (orientada a niños

pequeños); SCALA (elementos de joyería destinados a niñas pequeñas); LEGO

DACTA (productos para uso educativo); Technic (incluye también elementos

neumáticos); Bionicle (reemplazó al diseño de las clásicas figuras Lego);

Pneumatic (elementos neumáticos); series de piratas, Star Wars, Harry Potter,

basketball, transporte, etc.

Existe una gran cantidad de ingeniería en el diseño y fabricación de cada pieza de

Lego. Para que piezas de series antiguas puedan ser fácilmente combinadas con

piezas de modelos nuevos se requiere de altos estándares de calidad. El grado

de tolerancia máximo permitido está en 2 milésimas de milímetro (0,002mm) y se

asegura que máximo 18 de cada un millón de piezas no cumplen con esta

característica. Esto asegura el agarre que debe existir entre piezas Lego de

diferentes colecciones y el hecho de que muchos aficionados de Lego acoplen

fácilmente sus colecciones de la niñez a los nuevos modelos.

Page 22: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

9

Uno de los productos que ha generado gran atractivo y expectativa en los últimos

años es el que corresponde a la serie denominada Lego Mindstorms. En 1998

Lego proporciona el primer conjunto Mindstorms: Robotics Invention System (RIS

1.0). Este producto aparece como un juguete destinado a los mayores de 12

años, aunque tuvo su mayor aceptación en los usuarios adultos. Además de las

típicas piezas de Lego, se incluyen motores de corriente continua, sensores y una

pieza muy importante, el RCX. El RCX era un ladrillo programable que le permitía

interactuar con el entorno. Está basado en el microprocesador H8 de Hitachi y

proporciona convertidores A/D, comunicación serial y temporizadores.

Internamente tiene 16 KB de memoria ROM y 33 KB de RAM, tiene una interfaz

para tres actuadores y tres sensores y un puerto de comunicaciones de

infrarrojos, así como una pantalla de cristal líquido, cuatro botones y un pequeño

altavoz. El RCX fue elaborado en cooperación entre Lego y el Instituto

Tecnológico de Massachusetts y existe un gran número de entusiastas que han

publicado soluciones basadas en estos dispositivos en revistas como IEEE

Robotics and Automation Magazine e IEEE Control Systems Magazine, entre

otras.

La versión NXT corresponde a la última existente del producto Mindstorms y fue

lanzada al mercado en agosto de 2006. Esta versión incluye el nuevo ladrillo

programable NXT, así como otros cambios menores en las piezas de construcción

-la mayoría proveniente de la serie Technics- y en los sensores electrónicos. Una

gran diferencia con el RCX es que permite las comunicaciones mediante USB y

bluetooth, eliminándose así las limitaciones de los infrarrojos, propios de RCX, y

permitiendo distancias de control mucho más grandes y sobre algunos

obstáculos, sin exigir una determinada orientación entre emisor y receptor.

La versión inicial de NXT, lanzada en el año 2006, traía 577 piezas, entre las que

se incluían 3 servomotores, 4 sensores (ultrasónico, de contacto, de sonido y de

luz), 7 cables de conexión, un cable de interfase USB y el ladrillo programable. El

kit incluía NXT-G, un ambiente de programación que posibilita la creación y

descarga de programas hacia el ladrillo NXT.

Page 23: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

10

La nueva versión del NXT (2.0) fue lanzada en agosto de 2009 y contiene 619

piezas entre las que se incluyen motores y sensores (el nuevo sensor de color,

dos sensores de contacto y el sensor ultrasónico). El NXT 2.0 permite la ejecución

de operaciones aritméticas de punto flotante, mientras que las versiones

anteriores solo permitían operaciones con números enteros.

1.5 LEGO MINDSTORMS EN LA UNIVERSIDAD

Los productos Lego fueron inicialmente creados como juguetes para niños y

lograron finalmente convertirse en equipos que atraen tanto a niños como adultos

y que pueden ser fácilmente incorporados en medios educativos como

herramienta para la investigación y aprendizaje en todos los niveles. En la

actualidad, prácticamente todas las universidades a nivel mundial poseen kits de

Lego que incluyen “ladrillos inteligentes” y se usan en áreas relacionadas con la

robótica y la mecatrónica.

En el Instituto Tecnológico de Massachusetts (MIT por sus siglas en inglés), por

ejemplo, se han organizado cursos de "Diseño y Construcción de Robots Lego"

con el objeto básico de estimular las capacidades de diseño y desarrollo en

jóvenes estudiantes de ingeniería. Luego de dividir al total de estudiantes en

grupos de trabajo, cada grupo se dedica a buscar la solución a un mismo

problema. Al final, se presentan todas las soluciones y se escoge un ganador, que

será quien presente la alternativa más eficiente.

A continuación se mencionan algunas de las tantas universidades que hacen uso

del producto Lego Mindstorms en sus versiones RCX y NXT tanto para el estudio

de ingeniería como para la investigación en diferentes ámbitos de la ciencia:

- En el Laboratorio de Computación de Ciencias de la Educación de la

Universidad de Colorado Boulder se ofrecen cursos de Introducción al

diseño en Ingeniería mediante productos Mindstorms[8]. El laboratorio de

inteligencia artificial de la Universidad de Zurich, en Suiza, colabora

Page 24: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

11

también con este proyecto como una de las entidades que aportan con

investigaciones.

- En el Centro de Enseñanza de la Ingeniería y la Divulgación (CEEO) de la

Universidad Tufts (Massachusetts) y en asociación con la división

educativa de Lego se ofrecen resultados de investigaciones y desarrollos

en cuanto a aplicaciones, así como también se presenta una amplia oferta

de recursos para educadores.[9]

- En el Departamento de Ingeniería de Sistemas y Automática de la

Universidad Politécnica de Valencia se han desarrollado estudios sobre

“Desarrollo y Control de Robots Móviles de Bajo Coste”, apuntando al

producto Lego Mindstorms como una de las principales soluciones en ese

sentido. [10]

- Un grupo de investigadores de la Universidad de Málaga (UMA) en España

ha desarrollado un prototipo basado en Lego Mindstorms NXT que permite

reconocer y sugerir temas musicales, esto dentro del campo de la

inteligencia artificial.

- En la Universidad Técnica Particular de Loja (UTPL) se han desarrollado

proyectos dentro del campo de los videojuegos mediante el uso de la

tecnología del NXT y LabView.

- En la ESPOL, en el desarrollo de sistemas de adquisición de datos

mediante la construcción de sensores compatibles con el ladrillo NXT.

- En la Universidad RWTH de Aachen, Alemania, se ofrece a sus

estudiantes de ingeniería cursos de programación de Lego Mindstorms con

Matlab y se desarrollan aplicaciones en el campo del procesamiento digital

de señales. En esta universidad se ha desarrollado un kit de herramientas

para programar robots Lego mediante Matlab.[11]

- En la Universidad de Cambridge, Reino Unido, se hace que los estudiantes

de ingeniería planteen soluciones a problemas relacionados con el diseño

de sistemas de ingeniería, desde su parte estructural hasta los sistemas de

control, haciendo uso de herramientas como Matlab.

- En la Universidad de Ciencia y Tecnología de New Jersey (NJIT) se

realizan proyectos de construcción de robots capaces de realizar tareas de

cirugía.

Page 25: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

12

- En la Universidad de Magdeburg Otto-von-Guericke en Alemania se hace

uso de Lego Mindstorms en los cursos de cibernética.

- En la Universidad Friedrich Schiller de Jena, Alemania, se utiliza Lego

Mindstorms en el desarrollo de proyectos de biomecánica.

- En la Universidad de Lund, Suecia, en el desarrollo de proyectos de control

y automatización.

- En la Universidad de Ottawa, Canadá, en los cursos introductorios de

Sistemas de Control.

- En la Escuela de Ingeniería Eléctrica y Electrónica de la Universidad

Tecnológica de Nanyang, Singapur, como posibilidad para el desarrollo de

aplicaciones robóticas y de control.

Como se observa, el número de universidades y centros de estudios superiores

que aprovechan del producto es realmente interminable y esto se debe

principalmente a sus notables ventajas, entre las cuales destacan:

- Permitir una fácil validación experimental de la efectividad y robustez de los

algoritmos con los que son programados robots móviles.

- Hardware de costo relativamente bajo.

- Permitir el crecimiento de alternativas abiertas de programación, ya que

Lego abrió la arquitectura de su producto Mindstorms en la versión NXT.

- Versatilidad para ser usados en un sinnúmero de experimentos, los

mismos que van desde un único robot hasta un sistema de robots

múltiples, desde un esquema de control centralizado hasta uno

descentralizado,

- En el tema educativo es importante el hecho de incentivar el trabajo en

equipo, así como la programación de equipos reales, la construcción e

integración de sistemas e informaciones multidisciplinarias.

Entre las principales desventajas cabe mencionar que estos equipos no

proporcionan la misma precisión que los robots industriales.

Page 26: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

13

1.6 APLICACIONES A DESARROLLAR

Para el desarrollo del proyecto se cuenta con tres módulos (número de producto:

8527), cada uno con un ladrillo programable NXT. La versión del producto es la

1.0, lo que quiere decir que no se cuenta por ejemplo con el sensor de color,

propio de la versión NXT 2.0, ni tampoco se tiene la opción de programar con

aritmética de punto flotante.

En dependencia de la tarea que se vaya a resolver se utilizarán uno o más de los

sensores disponibles: de contacto, de luz, de ruido y de ultrasonido, así como los

motores existentes, en un número máximo de tres.

De entre el gran abanico posible de aplicaciones para el producto Lego

Mindstorms se ha escogido desarrollar algunas que permitirán reconocer sus

características y mostrar la versatilidad del producto:

1.6.1 MEDIDORES DE VARIAS MAGNITUDES

Mediante el uso de los sensores con los que cuenta el kit de Lego Mindstorms

NXT se diseñará un medidor de distancia y, a partir de él, una calculadora de

áreas y volúmenes, así como también se realizará un medidor de sonido que

permite visualizar su nivel en la pantalla del NXT.

Los prototipos usarán los sensores de rotación incluidos en los servomotores y el

sensor de sonido.

1.6.2 ESCORPIÓN

Se intenta simular el comportamiento de un escorpión ante la presencia de un

“intruso”. El prototipo hace uso del sensor de ultrasonido para detectar la distancia

a la que se encuentra el “intruso” y para saber cuándo “picar” con su aguijón y del

sensor de sonido para actuar ante la existencia de un nivel de ruido que supera

un cierto valor umbral.

Page 27: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

14

1.6.3 BRAZO MECÁNICO

Se diseñará un brazo mecánico que permitirá detectar la presencia de objetos de

cierto color y moverlos de un lugar a otro. Previamente se tiene que definir los

límites entre los cuales se va a desplazar su parte móvil.

El prototipo hace uso de los sensores de rotación incluidos en los servomotores,

del sensor de luz que permite “distinguir colores” de los objetos y del sensor de

contacto, que en este caso actúa como un sensor de final de carrera.

1.6.4 VEHÍCULO CON CONTROL DE POSICIÓN PID

Un vehículo de estructura mecánica sencilla debe mantener una distancia fija en

relación a un objeto, la misma que ha sido previamente definida. Si el objeto de

referencia cambia de ubicación, el vehículo tiene que seguirlo y al final ubicarse

de tal forma que se consiga el objetivo inicial. El software, basado en un algoritmo

PID, debe permitir cambiar los valores de las constantes que intervienen para

poder probar algunas opciones de control.

El prototipo utiliza principalmente el sensor ultrasónico para determinar en todo

momento la distancia a la que se encuentra el objeto de referencia.

1.6.5 SEGUIDOR DE LÍNEA

Un vehículo con una configuración mecánica que le permita realizar giros, se

convertirá en un “robot seguidor de línea”. El robot utilizará principalmente un

sensor de luz para determinar la trayectoria o línea a seguir.

1.6.6 CONTROL REMOTO MEDIANTE BLUETOOTH

Un NXT controlará a otro de forma inalámbrica, haciendo uso de su módulo de

comunicaciones mediante bluetooth. El robot controlado será un vehículo con

características mecánicas que le permitan girar. El “comando” del control remoto

Page 28: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

15

será un ladrillo NXT al que está conectado un motor, del cual se aprovechará el

sensor de rotación.

Page 29: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

16

CAPÍTULO 2

DISEÑO E IMPLEMENTACIÓN DE LOS MÓDULOS

2.1 CARACTERÍSTICAS DE LEGO MINDSTORMS NXT

El sistema Lego Mindstorms se define como una plataforma completa de

desarrollo de robots móviles, basada en la unión de bloques interconectables

que contiene sensores y actuadores que se conectan mediante presión. El

producto Lego Mindstorms viene en dos versiones: RCX y NXT, donde la última

corresponde a la versión actualizada y mejorada de la anterior.

El uso de Lego Mindstorms se ha extendido principalmente porque es un

sistema fácil de montar y desmontar, es muy conocido en todo el mundo,

permite una gran variedad de aplicaciones, es susceptible de ser programado

mediante múltiples lenguajes y además es muy indicado para su aplicación en

entornos educativos y de investigación.

2.1.1 HARDWARE (CPU)[12][13]

La unidad de control, definida como ladrillo inteligente NXT, cuenta con los

siguientes elementos:

Figura 2.1. Ladrillo programable NXT

- Procesador principal: ARM-7 de 32 bits (AT91SAM7S256 de Atmel)

• Arquitectura Risc

• reloj de 48 MHz

• memoria flash de 256 kB (no volátil)

• memoria RAM de 64 kB (volátil)

Page 30: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

17

- Procesador secundario AVR de 8 bits (ATmega48 de Atmel) para

gestionar entradas/salidas

• reloj de 8 MHz

• memoria flash de 4 kB

• memoria RAM de 512 Bytes

El coprocesador Atmel AVR está encargado de manejar los siguientes

componentes: la creación de las señales de salida PWM para los

motores, la fuente de poder principal de la tarjeta, los botones debajo de

la pantalla y el sensor de carga de la batería. Se comunica con el

procesador principal a través del bus de comunicaciones I2C (Inter-

Integrated Circuit: bus de comunicaciones seriales). Los dos

procesadores intercambian periódicamente estructuras de datos a través

del bus: el AVR recibe comandos del motor y de la fuente de poder y

devuelve el estado de los botones de control y del nivel de carga de la

batería.

- Comunicación inalámbrica bluetooth: CSR (Cambridge Silicon Radio)

BlueCore 4 v2.0 + sistema EDR (Enhanced Data Rate)

• soporta SPP (Serial Port Profile)

• 47 KB de RAM interna

• 8 MBit de Flash externa

• reloj de 26 MHz

Las comunicaciones vía bluetooth (clase II) son manejadas a través de

una tarjeta independiente BlueCore, la misma que se encuentra

conectada al CPU a través de una línea serial. El firmware de Lego

permite al controlador de bluetooth funcionar en el modo maestro, en el

cual se puede comunicar hasta con tres esclavos, pero solo con uno a la

vez, o en modo de esclavo, en el cual se puede comunicar con un solo

maestro.

- Comunicación vía USB 2.0: puerto full speed a 12 Mbps

Page 31: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

18

Permite al ladrillo NXT comunicarse con un host USB. Este controlador

no le posibilita al ladrillo NXT actuar en la función de host, lo que le

hubiera permitido aumentar la cantidad de memoria, por ejemplo.

- 4 puertos de entrada: interfaz de 6 hilos y soporte para conexiones AD y

DA. El puerto 4 tiene como características el ser un puerto de alta

velocidad compatible con IEC 61158 Tipo 4/EN 50170 (chip de

comunicaciones RS485) para usos futuros. Todos los puertos de entrada

cuentan con soporte del bus I2C.

- 3 puertos de salida con interfaz de 6 hilos y soporte para lectura desde

los codificadores.

- Pantalla:

• 1 pantalla LCD monocromo (blanco y negro) con resolución de

100x64 pixeles (26x40,6mm)

• controlador de LCD UltraChip 1601 (UC1601)

El chip se conecta al ARM7 a través del bus SPI (Serial Peripheral

Interface) de 2MHz de velocidad y le permite calibrar la pantalla y otras

acciones mediante un simple conjunto de comandos.

- Altavoz de salida:

• canal de sonido de salida con resolución de 8 bits y 8kHz de

calidad de sonido

• soporta tasas de muestreo de 2 a 16kHz

• la señal de salida es tipo PWM controlada por el ARM7, que se

filtra y pasa por un amplificador diferencial (SPY0030A de

SunPlus) con ganancia máxima de 20

• bocina de impedancia característica de 16Ω y 21mm de diámetro

- 4 botones de goma que permiten la interacción con el usuario. Mediante

estos botones también se pueden crear pequeños programas para el

ladrillo NXT sin necesidad de utilizar el computador.

Page 32: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

19

- Fuente de poder: alimentación con 6 pilas AA (preferiblemente alcalinas)

o batería de ión de litio de 1400 mAh.

- Conectores de 6 hilos industriales estándar tipo RJ12 con mecanismo de

ajuste a la derecha.

- Capacidad para almacenar una cantidad de programas de usuario

limitada únicamente por el tamaño de la memoria interna.

Un esquema básico de la forma en que interactúa el ladrillo NXT se ve

aproximadamente de la siguiente manera:

Figura 2.2. Diagrama de bloques del hardware del NXT, tomado de [14]

2.1.1.1 Estructura interna del ladrillo NXT

El NXT puede ser dividido en tres planos.

Page 33: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

20

Figura 2.3. Estructura del NXT

El primer plano corresponde al microcontrolador. Este se encarga de seguir las

instrucciones dadas por la programación.

El segundo plano está conformado por la memoria flash. En esta memoria se

encuentra el programa entregado por el fabricante (firmware), el mismo que es

comparable con el sistema operativo del PC y ejecuta el programa

desarrollado.

El tercer plano está constituido por la memoria RAM. Los programas realizados

por el usuario que han sido previamente compilados se almacenan aquí.

Junto al procesador principal, el NXT posee un coprocesador con una memoria

flash y memoria RAM propias. Estos, en conjunto, están encargados de

manejar los circuitos de entrada y salida al ladrillo NXT.

2.1.1.2 Puertos del ladrillo NXT

Los puertos del ladrillo NXT disponen de terminales de seis hilos cada uno. Los

sensores pueden ser analógicos o digitales y se mantiene la compatibilidad con

los sensores del RCX:

- El pin de entrada 1 está directamente conectado a un conversor A/D de

10 bits. A fin de mantener compatibilidad con sistemas anteriores de 2

Page 34: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

21

hilos, existe en este pin suministro de tensión durante 3ms, en el que se

incluye un intervalo de lectura de la señal de 0,1ms.

- Los pines 5 y 6 son responsables de la comunicación digital. El protocolo

establecido para la interfaz digital es I2C de Philips Semiconductors.

Nombre Función Color

• Pin 1, ANA Entrada analógica y posible señal de salida de corriente

blanco

• Pin 2, GND Señal de tierra negro • Pin 3, GND Señal de tierra rojo • Pin 4,

IPOWERA Fuente de 4,3V verde

• Pin 5, DIGIAI0

Pin de E/S digital conectado al procesador ARM7 (reloj I2C (SCL), RS-485 A)

amarillo

• Pin 6, DIGIAI1

Pin de E/S digital conectado al procesador ARM7 (datos I2C (SDA), RS-485 B)

azul

Figura 2.4. Distribución de los pines de los puertos NXT, tomado de [14]

Los puertos equipados con el protocolo I2C permiten el control no solamente de

sensores sino también de actuadores. Existen dispositivos comerciales que

permiten la conexión de hasta 7 motores o 7 sensores en un mismo puerto.

2.1.1.3 Manejo de energía

La energía para controlar al NXT proviene de 6 pilas AA o de una batería

recargable de ión litio y es una fuente de alimentación conmutable, que genera

una señal de 5V y otra de 3,3V para el ARM7 y para el chip BlueCore. Para

proteger a la fuente existe a su entrada un interruptor de protección que tiene

una corriente de mantenimiento de 1,85A y que se dispara aproximadamente a

los 3,3A.

En la siguiente tabla se muestran algunos valores de consumos en el NXT bajo

determinadas condiciones:

Page 35: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

22

Voltaje de alimentación

Corriente Consumo (Vbatería = 9V)

max (mA) normal (mA) max (mW) normal (mW)Sin carga en los motores

9V 339 114 5184 14225V 271 112 1744 448

3,3V 72 38 410 216Con carga en los motores

9V 2901 848 26109 7632 5V 271 112 1142 307

3,3V 72 38 410 137 Standby Se asume una corriente de 46µA debida a detección de

cortocircuitos

Tabla 2.1. Mediciones de corriente en el NXT, tomado de [14]

El ladrillo NXT tiene una función de ahorro de energía que hace que este se

apague si no ha sido operado por un determinado tiempo. Este tiempo puede

ser modificado a través del menú de configuración del ladrillo (2, 5, 10, 30, 60

minutos o nunca).

2.1.1.4 Comunicaciones

El NXT tiene dos opciones para comunicarse con el exterior: un puerto USB 2.0

y bluetooth.

El puerto USB permite la descarga rápida del firmware de Lego, así como de

los programas del usuario. La comunicación bluetooth posibilita la

comunicación inalámbrica entre el NXT y el PC, con otros NXT´s y con otros

dispositivos que cuenten con bluetooth. El NXT se puede conectar

simultáneamente de forma inalámbrica a otros tres NXT, pero solo se puede

comunicar con uno a la vez. La información que se transfiere puede tratarse de

programas, archivos de sonido u otros datos necesarios durante la ejecución

de sus programas internos. La comunicación es posible hasta una distancia

aproximada de 10 metros (dispositivo bluetooth clase II).

Page 36: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

23

2.1.1.4.1 Comunicación entre ladrillos NXT mediante bluetooth

La funcionalidad bluetooth en el NXT puede ser configurada de tal forma que el

canal de comunicaciones funcione como maestro o esclavo. Esto significa que

uno de los ladrillos NXT actuará como maestro y los demás se comunicarán

con él si así lo requieren. La figura muestra la forma en que se posibilita la

comunicación entre dispositivos.

Figura 2.5. Comunicación entre ladrillos NXT usando bluettoth, tomado de [14]

La figura indica que un dispositivo maestro puede comunicarse con otros tres

dispositivos bluetooth al mismo tiempo, pero el intercambio de información se

puede hacer solo con uno de ellos en un momento determinado. Así, si el NXT

maestro está comunicándose con el NXT Slave 1 (esclavo 1) y el NXT Slave 3

(esclavo 3) inicia el envío de datos al NXT maestro, éste último no evaluará los

datos recibidos hasta que se encuentre dispuesto a atenderlo.

Un ladrillo NXT no está posibilitado para actuar como maestro y esclavo al

mismo tiempo, pues esto ocasionaría pérdida de datos entre los dispositivos

NXT.

Las comunicaciones con otros dispositivos bluetooth se realiza a través de

canales. El NXT tiene 4 posibles canales para comunicación vía bluetooth: el

Page 37: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

24

canal 0 se usa siempre por parte de un NXT esclavo para comunicarse con el

NXT maestro, mientras que los canales 1, 2 y 3 se usan para la comunicación

de un maestro con tres dispositivos esclavos.

2.1.1.5 Sonido

El NXT incluye un amplificador que mejora el nivel de salida del sonido y su

calidad. La señal de salida del sonido es de tipo PWM y es controlada por el

microcontrolador ARM7. Los filtros introducidos antes del amplificador reducen

el ruido de sobre-muestreo de la señal.

El parlante incorporado en el NXT tiene una impedancia característica de 16Ω y

un diámetro de 21mm. En la tabla se muestra el consumo de corriente ante

sonidos ejecutados en diferentes frecuencias:

Frecuencia (Hz) Corriente (mA) Potencia (mW)440 102 169 4000 78 97

Tabla 2.2. Consumo de corriente ante la ejecución de sonidos, tomado de [14]

Es posible configurar el nivel o volumen del sonido emitido por el ladrillo NXT

directamente desde el menú de configuración interno, accediendo a él

mediante los botones disponibles y contando con la información en la pantalla.

2.1.1.6 Botones

El NXT incorpora cuatro botones de goma que permiten operarlo, así como la

navegación dentro de las opciones de su software: el botón naranja sirve para

encender al NXT y permite activar una opción en el menú (On/Enter/Run), el

botón rectangular de color gris oscuro permite retroceder en la selección del

menú (Clear/Go back) y los botones de color gris claro posibilitan la navegación

hacia la izquierda o la derecha en el menú del NXT.

Page 38: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

25

Los botones del NXT también pueden ser utilizados como controles de entrada

para el programa en ejecución. En dependencia de la aplicación, el botón

naranja y los botones de navegación a la izquierda y derecha pueden también

ser programados para que funcionen como sensores de tacto.

2.1.2 SENSORES

Existe una amplia variedad de sensores que pueden ser conectados a los

ladrillos RCX o NXT; inclusive existen posibilidades para diseñar propios

sensores atendiendo únicamente a las exigencias de las entradas del producto.

Los sensores NXT son digitales, lo que permite obtener mayor precisión en sus

medidas y además son comparables las medidas obtenidas por dos de ellos

con iguales características.

Las marcas HiTechnic o Mindsensors ofrecen una amplia gama de sensores

que hacen uso de la tecnología digital para ser acoplados al ladrillo NXT.

2.1.2.1 Sensor de contacto

Figura 2.6. Sensor de contacto y principio de funcionamiento

Permite detectar obstáculos encontrados en el camino del robot, en el caso de

tratarse de un robot móvil, o permite reaccionar ante estímulos de contacto

externos.

La señal emitida por este sensor es de tipo digital binario, que permite

reconocer dos y hasta tres estados: presión del botón, liberación del botón y

presión y liberación del botón en conjunto.

Page 39: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

26

Figura 2.7. Acciones reconocidas por el sensor de contacto, tomado de [15]

2.1.2.2 Sensor de luz

Figura 2.8. Sensor de luz

A través de este sensor se capacita al robot para reaccionar ante variaciones

del nivel de luz y del color. Mide el nivel de luz y entrega un número entre 0

(oscuridad total) y 100 (muy brillante), sin que se pueda asignar alguna unidad

a la medida mostrada. Permite medir la intensidad luminosa de un ambiente o

la intensidad reflejada por superficies de distintos colores.

Figura 2.9. En la parte superior, lo que ven nuestros ojos; en la parte inferior, lo que “ve” el sensor de luz. Tomado de [15]

El sensor de luz de Lego actúa bajo un principio reflectivo. La intensidad de la

radiación reflejada depende del color, la distancia al objeto y las perturbaciones

luminosas del medio de trabajo. El led integrado es el encargado de emitir la

radiación de color rojo (para los casos en que se tienen niveles de iluminación

bajos) y el fototransistor (FT) capta la radiación reflejada y la convierte en una

señal de corriente continua a través del circuito correspondiente.

Page 40: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

27

Figura 2.10. Principio de funcionamiento del sensor de luz

Para medir el nivel de iluminación del ambiente, el sensor apaga su luz propia,

mientras que la enciende si se trata de medir la intensidad reflejada. El valor

entregado es un porcentaje respecto del máximo valor capaz de ser medido por

el sensor.

2.1.2.3 Sensor de ultrasonido

Figura 2.11. Sensor de ultrasonidos

El sensor le permite al robot medir la distancia a obstáculos y responder ante

movimientos. Utiliza el principio del eco para detectar los objetos que se

encuentran a su alrededor con una señal de 40 kHz. Su capacidad de

detección va desde los 3cm y llega hasta los 255cm, con una precisión de

±3cm; habiendo una zona muerta en distancias muy cortas.

Page 41: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

28

Figura 2.12. Principio de funcionamiento del sensor de ultrasonidos

El sensor de ultrasonidos funciona de la siguiente manera: el emisor (E)

entrega una serie de pulsos de sonido y existe un receptor (R) que los recibe

luego de que estos se han reflejado en un objeto. El circuito electrónico se

encarga de medir el tiempo que existe entre emisión y recepción y lo traduce

en una distancia. El cálculo de la distancia corresponde a la aplicación de la

sencilla fórmula que dice que distancia = velocidad tiempo, donde la velocidad

es la que corresponde al sonido (340ms-1 a una temperatura ambiente de 15°C

y en el aire) y el tiempo es el medido por el circuito existente. Las medidas se

entregan en centímetros o en pulgadas.

Las mejores mediciones se producen cuando los objetos en que se reflejan las

ondas emitidas por el sensor son grandes y la superficie es dura y lisa. Las

superficies suaves y curvas causan dificultades al proceso de medición.

2.1.2.4 Sensor de sonido

Figura 2.13. Sensor de sonidos

Page 42: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

29

Permite al robot captar sonidos y así responder a órdenes que vienen desde el

exterior y que han sido debidamente programadas. Puede distinguir patrones

de sonido e incluso tonos musicales. Los valores medidos por este sensor, que

esencialmente es un micrófono que detecta niveles de presión sonora de hasta

90dB, puede estar en decibelios (dB: para cualquier sonido, incluso aquellos

que no son detectados por el oído humano) o en decibelios ajustados (dBA:

sonidos que pueden ser distinguidos por el oído humano) y corresponde a una

combinación de la amplitud y frecuencia de los sonidos percibidos. La

respuesta a intensidades en decibelios crecientes es aproximadamente

exponencial y corresponde a un valor porcentual sobre el máximo de 90dB

antes mencionado.

En la siguiente tabla se pueden observar las medidas obtenidas por el sensor

de sonidos frente a algunos eventos, asumiendo que la distancia de la fuente

de sonido al sensor es de aproximadamente 1m:

Porcentaje Descripción4% - 5% Habitación en silencio5% - 10% Personas hablando lejos 10% - 30% Conversación normal o música que se

reproduce a un volumen “normal” 30% - 100% Personas gritando y música a alto volumen

Tabla 2.3. Valores entregados por el sensor de sonidos, tomado de [14]

2.1.3 Los motores de Lego NXT[16][17]

Los actuadores de Lego Mindstorms son motores de corriente continua. La

potencia que se va a manejar en las aplicaciones que se diseñen será baja, por

lo que, de requerirse mayores potencias se podría pensar en arreglos con

relés, electroválvulas u otros.

Page 43: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

30

Figura 2.14. Motores Lego NXT

Los motores Lego pueden ser también servomotores y tienen un sensor de

rotación integrado. La versión anterior de motores para el RCX requería la

colocación de un sensor de rotación adicional para realizar tareas de control.

Gracias al sensor de rotación integrado, es posible medir el giro de su eje con

una precisión de 1 grado sexagesimal. La configuración interna del motor se

muestra a continuación:

Figura 2.15. Interior de un motor Lego NXT, tomado de [16]

Sus características físicas y eléctricas son:

- Motor voluminoso de 80g.

- Tiene internamente un tren de engranajes e incluye un codificador para

controlarlo.

- Al frenar el eje el consumo puede llegar a 2A.

- Voltaje = 12V

Corriente = 0,58A

Potencia = 6,96w

Rendimiento = 44,5%

Page 44: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

31

- A un voltaje de 9 V y velocidad de rotación de 177 rpm proporciona un

par de 16,7Ncm con un consumo de corriente de 0,55A.

- La velocidad de giro máxima posible es de alrededor de 200 rpm.

- Es posible usar el sensor de rotación del motor si es que así se requiere.

- Para proteger al motor de intensidades de corriente muy altas, una

resistencia PTC se encuentra montada en serie con él, de manera que el

valor de ésta se incrementa rápidamente cuando la temperatura

aumenta, limitando así la intensidad de corriente suministrada al

dispositivo.

Para el movimiento de un modelo motorizado el firmware del NXT dispone de

un algoritmo PID (no modificable), el cual permite que el modelo se desplace

con precisión.

2.1.4 Conjunto de piezas

Entre el resto de piezas de los kits de Lego Mindstorms constan engranajes,

ejes, cables, levas y pistones, juntas cardan y amortiguadores. En total, el

producto 8527 de Lego, contiene 577 piezas:

Figura 2.16. Conjunto de piezas del producto Lego Mindstorms 8527

Cantidad Descripción Figura

1 Disco compacto NXT

3 Cono 1 x 1

Page 45: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

32

Cantidad Descripción Figura

1 Sensor eléctrico de luz NXT

1 Ladrillo programable NXT

1 Cable eléctrico Mindstorms NXT de 20 cm

4 Cable eléctrico Mindstorms NXT de 35 cm

2 Cable eléctrico Mindstorms NXT de 50 cm

3 Motor eléctrico NXT

1 Cable eléctrico serial USB

1 Sensor eléctrico de sonido NXT

1 Sensor eléctrico de contacto NXT

1 Sensor eléctrico de ultrasonidos NXT

1 Stickers para sensores NXT

4 Conector Technic en ángulo #1

2 Conector Technic en ángulo #2

Page 46: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

33

Cantidad Descripción Figura

2 Conector Technic en ángulo #4

16 Conector Technic en ángulo #6

22 Eje Technic 2 (con muesca)

17 Eje Technic 3

4 Eje Technic 3 (tipo tachuela)

4 Eje Technic 4

7 Eje Technic 5

2 Eje Technic 5,5 (con tope)

4 Eje Technic 6

4 Eje Technic 7

2 Eje Technic 8

4 Eje Technic 10

2 Eje Technic 12

8 Junta flexible doble para ejes Technic

2 Junta para ejes Technic

8 Junta para ejes Technic perpendiculares

4 Junta para ejes perpendiculares 3L

13 Junta para ejes perpendiculares 3L con 4 clavijas

6 Junta para ejes perpendiculares doble

Page 47: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

34

Cantidad Descripción Figura

6 Junta para ejes perpendiculares con doble abertura

6 Junta para ejes perpendiculares con dos agujeros

4 Clavija con eje Technic

42 Clavija con eje Technic con fricción

2 Eje con gancho Technic

1 Bola Technic roja de 52 mm

1 Bola Technic azul de 52 mm

16 Viga Technic 3

8 Viga Technic 3 x 3 con clavijas

6 Viga Technic 3 x 3,8 x 7 con doble inclinación de 45

8 Viga Technic 3 x 5 con inclinación de 90

16 Viga Technic 4 x 4 con inclinación 53,5

5 Viga Technic 5

6 Viga Technic 7

7 Viga Technic 11

4 Viga Technic 13

Page 48: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

35

Cantidad Descripción Figura

11 Viga Technic 15

8 Diente Technic Bionicle 1 x 3 con agujero para eje

4 Arma Technic Bionicle (Pincer Suukorak)

4 Ladrillo Technic 1 x 4 con agujeros

2 Ladrillo Technic 1 x 6 con agujeros

18 Seguro Technic

8 Seguro liso Technic 1/2

4 Conector Technic con agujero para eje

6 Engranaje Technic de 8 dientes

4 Engranaje Technic de 12 dientes, doble bisel

2 Engranaje Technic de 16 dientes

2 Engranaje Technic de 20 dientes, doble bisel

1 Engranaje Technic de 36 dientes, doble bisel

1 Engranaje Technic de 40 dientes

4 Rueda de perillasTechnic

10 Brazo Technic en forma de L 2 x 4

1 Instrucciones para construcciones de Mindstorms NXT

Page 49: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

36

Cantidad Descripción Figura

1 Manual rápido de Mindstoms NXT

1 Almohadilla de prueba para Mindstorms

3 Clavija Technic

3 Clavija doble Technic 3L

4 Junta Technic para clavijas perpendiculares

1 Junta Technic para clavijas perpendiculares en curva

4 Junta Technic para clavijas redonda

13 Junta Technic larga

34 Junta Technic larga con fricción

8 Clavija Technic larga con tope

82 Clavija Technic con fricción y ranuras

8 Clavija Technic con fricción y gancho

1 Brazo Technic de polo invertido

5 Dirección Technic 9L

4 Triángulo Technic

1 Plato Technic con agujero en la base y cubierta negra

2 Rueda Technic

2 Tornillo sinfín Technic

Page 50: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

37

Cantidad Descripción Figura

4 Rueda 56 x 26

4 Llanta 30.4 x 20

Tabla 2.4. Grupo de piezas que conforman el kit Lego Mindstorms 8527, tomado de [18],[19] y [20]

2.2. DESARROLLO DE LOS MÓDULOS

En cada uno de los diseños que se explicarán a continuación se han usado

exclusivamente las piezas que corresponden a un kit de Lego Mindstorms NXT.

De la misma forma, se ha procurado que cada aplicación provea la posibilidad

de indicar la forma en la que operan los diferentes elementos de hardware

existentes en estos kits.

2.2.1 MEDIDOR DE VARIABLES MÚLTIPLES [21]

El medidor consta del ladrillo NXT y se le ha acoplado el sensor

correspondiente para que se pueda medir y/o visualizar la variable física

deseada: longitud, área, volumen o sonido.

2.2.1.1 Medidor de longitudes

En esta aplicación se usa el sensor de rotación que se encuentra en el interior

de un motor NXT para convertir el ángulo girado por el mismo en una longitud y

la conversión se realiza mediante software.

A continuación se muestra un diagrama simplificado del prototipo:

Page 51: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

38

Figura 2.17. Esquema del medidor de longitudes

Figura 2.18. Esquema simplificado del medidor de longitudes

La rueda debe girarse sobre la superficie cuya longitud se va a medir. Se ha

usado la salida C para conectar el motor con su sensor de rotación. Los

elementos adicionales sirven únicamente para la sujeción del motor al ladrillo

NXT y como guía para el cable de conexión.

Puerto Tipo de hardware Utilidad

Se utiliza el puerto de salida C para conectar un motor.

Sensor de rotación

Permite tomar medidas del ángulo girado y del sentido de giro

Tabla 2.5. Puertos usados en el medidor de longitudes

Las siguientes imágenes muestran al prototipo armado:

Page 52: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

39

Tipo de vista Imagen

Vista frontal

Vista posterior

Vista superior (salidas)

Vista inferior (entradas)

Page 53: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

40

Tipo de vista Imagen

Vista desde la derecha

Vista desde la izquierda

Vista oblicua que permite ubicar a los elementos de sujeción

usados (detalle 1)

Vista oblicua que permite ubicar a los elementos de sujeción

usados (detalle 2)

Tabla 2.6. Imágenes del medidor de longitudes

Page 54: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

41

Se ha previsto la posibilidad de acoplar diferentes ruedas disponibles en el kit

de Lego Mindstorms y así poder probar algunas opciones distintas. En la

siguiente tabla se presentan las tres diferentes ruedas que pueden ser

conectadas al eje del motor para realizar las mediciones.

Rueda Imagen

43,2x22

56x26

81,6x15

Tabla 2.7. Imágenes de las ruedas usadas en el medidor de longitudes

2.2.1.2 Calculadora de área y volumen

Para esta calculadora se dispone del prototipo diseñado anteriormente, el

medidor de longitudes y se lo usa con un programa distinto.

Page 55: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

42

Figura 2.19. Dimensiones necesarias para la calculadora de áreas y volúmenes

La rueda debe recorrer, una por una, las dimensiones del área o volumen a

determinar. El programa incorporado deberá permitir el registro de cada una de

las dimensiones por separado, la conversión de ángulo girado en distancia

recorrida, la multiplicación de los valores correspondientes y la presentación de

los resultados de tal forma que se puedan visualizar valores de áreas y

volúmenes.

2.2.1.3 Medidor de sonido

El medidor de sonido consiste en un ladrillo NXT y un sensor de sonido

conectado a una de las entradas del mismo. Un diagrama esquemático de este

medidor es el siguiente:

Figura 2.20. Esquema simplificado del medidor de sonido

Los puertos usados por este dispositivo se muestran en la siguiente tabla:

Page 56: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

43

Puerto Tipo de hardware Utilidad

Puerto de entrada 2 Sensor de sonido Permite tomar medidas del nivel de sonido ambiental

Tabla 2.8. Puertos usados en el medidor de sonido

La programación tiene especial importancia en este proyecto. Para probar su

funcionamiento hace falta iniciar la ejecución del programa y acercar el sensor

de sonido a la fuente que lo origina. Las imágenes que se presentan a

continuación son suficientes para entender su configuración física. La

programación permite, adicionalmente, congelar una muestra tomada y

continuar con el proceso cuando se desee.

Tipo de vista Imagen

Vista frontal 1

Vista frontal 2

Tabla 2.9. Imágenes del medidor de sonido

Page 57: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

44

2.2.2 ESCORPIÓN [12]

El diseño mecánico del prototipo del escorpión tiene gran complejidad. Se

utilizan los tres motores disponibles en el kit, dos de ellos para provocar el

movimiento horizontal –sobre el piso- del escorpión y el tercero para producir el

movimiento de la cola.

Cada uno de los motores que provocan el movimiento horizontal activa a tres

patas del escorpión. Esto se consigue mediante una configuración mecánica

como la que se indica en la figura, donde se ha distinguido con un color distinto

a cada una de las piezas que intervienen y se han marcado además los puntos

fijos de la estructura. Los ejes de los motores se han pintado en azul.

Figura 2.21. Esquema simplificado del escorpión

Adicionalmente se colocó sobre esta estructura básica un sensor de sonido, de

tal manera que el escorpión tenga la posibilidad de “oír” y reaccionar ante

estímulos sonoros.

Se ha previsto el siguiente funcionamiento para el escorpión: al iniciar el

programa, el escorpión deberá avanzar hacia delante hasta que se encuentre

con un obstáculo que está ubicado a una distancia “r”; entonces el escorpión

deberá retroceder por un cierto tiempo y luego inicia nuevamente su proceso

Page 58: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

45

de marcha hacia delante. Si existe de pronto un objeto que se encuentra a una

distancia “p”, entonces, aparte de retroceder, el escorpión activará su cola y

“picará”. El escorpión sabrá que alcanzó su objetivo y que debe retroceder su

cola, si el sensor de contacto ubicado en su punta fue activado. La

incorporación del sensor de sonido permite la activación inicial del escorpión y,

cuando ya se encuentra en acción, hace que éste “pique” cada vez que el nivel

sonoro rebase un cierto límite, independientemente de que se encuentre o no

con un obstáculo delante de él. Las distancias “p” y “r” antes mencionadas,

deben ser modificables por programación.

Los elementos de hardware principales que han sido utilizados en este

prototipo son los siguientes:

Puerto Tipo de hardware Utilidad

Puerto de entrada 1 Sensor de contacto

Permite iniciar el funcionamiento del escorpión y, cuando ha iniciado su operación, permite saber si el escorpión alcanzó su objetivo al “picar”.

Puerto de entrada 2 Sensor de sonido

Permite iniciar el funcionamiento del escorpión y, cuando ha iniciado su operación, mide el nivel de sonido existente en el medio.

Puerto de entrada 4 Sensor de ultrasonido

Mide constantemente la distancia a la que se encuentran los objetos que se encuentran frente a él.

Puerto de salida A Motor NXT Motor que hace que la “cola” se mueva para “picar”.

Puerto de salida B Motor NXT Motor izquierdo (con el sensor de ultrasonido de frente)

Puerto de salida C Motor NXT Motor derecho (con el sensor de ultrasonido de frente)

Tabla 2.10. Puertos usados en el “escorpión”

Page 59: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

46

Las siguientes imágenes pretenden mostrar las principales partes que

constituyen este proyecto. Las imágenes mostradas no pueden entenderse

como una descripción detallada del proceso de construcción, pero sí como una

posibilidad de entender la forma en que está construido el prototipo en

cuestión.

Tipo de vista Imagen

Vista frontal

Vista posterior

Vista superior (pantalla del NXT)

Page 60: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

47

Tipo de vista Imagen

Vista inferior

Vista desde la derecha

Vista desde la izquierda

Detalle de las “patas” (1)

Page 61: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

48

Tipo de vista Imagen

Detalle de las “patas” (2)

Detalle de las “patas” (3)

Detalle de las “patas” (4)

Detalle de la “cola” (extendida y vista desde arriba)

Page 62: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

49

Tipo de vista Imagen

Detalle de la “cola” (extendida y vista desde un lado)

Detalle de la “cola” (extendida y vista desde la parte posterior)

Detalle del sensor de contacto

Detalle del sensor de sonido

Page 63: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

50

Tipo de vista Imagen

Detalle del sensor de sonido (2)

Detalle del sensor de ultrasonido

Detalle de las “tenazas” (elementos netamente decorativos)

Tabla 2.11. Imágenes del “escorpión”

2.2.3 BRAZO MECÁNICO

La complejidad de este prototipo es grande y su diseño mecánico es un reto a

superar. El brazo diseñado cuenta con tres articulaciones o grados de libertad:

se permite un movimiento de giro sobre su propio eje para provocar un

desplazamiento sobre un plano horizontal; existe la posibilidad de realizar un

cambio de altura del brazo o desplazamiento vertical y finalmente existe una

garra que se puede abrir y cerrar. El diseño debe considerar que el movimiento

del brazo hacia arriba/abajo y hacia los costados hace que aparezcan fuerzas y

momentos de giro, que la estructura debe soportar. Por esta razón se han

Page 64: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

51

colocado en algunas partes del prototipo elementos que, antes que ser

decorativos, permiten dar estabilidad al equipo.

Para el movimiento sobre el plano horizontal se ha conseguido acoplar al motor

que lo activa un sistema reductor mediante engranajes y un tornillo sinfín. Esto

permite que el movimiento en esa dirección pueda manejarse con relativa

precisión y suavidad. Sin embargo, por la forma en que está hecho el brazo,

esta posibilidad no se ha podido conseguir en el motor que produce el

movimiento vertical; el hecho de colocar más elementos en el brazo hace que

aumente su peso y por tanto dificulta el desempeño de la máquina completa.

Es por esta razón que el movimiento vertical no se puede considerar “suave” y

preciso. Para corregir parcialmente este problema hay que hacer un trabajo a

nivel de software.

Figura 2.22. Esquema simplificado del brazo mecánico

Se ha previsto la posibilidad de que el brazo mecánico pueda ser movido

manualmente tanto en forma horizontal como en forma vertical, para lo cual se

dispone de dos perillas que permiten estos desplazamientos.

Page 65: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

52

Ya que el brazo deberá contar con la posibilidad de reconocer el color del

objeto que va a trasladar, en la parte de la garra se ha dispuesto un sensor de

luz para que esta acción sea posible.

Es conveniente colocar sensores de final de carrera para evitar que el brazo se

desplace a zonas no adecuadas, donde se puede sobre exigir a los motores o

donde exista mucha tensión en los cables de conexión. Lamentablemente el kit

8527 solo dispone de un sensor de contacto, por lo que éste se colocará en un

lugar tal que impida un desplazamiento horizontal inconveniente.

Los elementos de hardware utilizados en el diseño final son los siguientes:

Puerto Tipo de hardware Utilidad

Puerto de entrada 1 Sensor de contacto

Actúa como un sensor de final de carrera en uno de los extremos del recorrido posible.

Puerto de entrada 2 Sensor de luz Permite reconocer el “color” del objeto a ser movido por el brazo.

Puerto de salida A Motor NXT Motor que abre y cierra la “garra” del brazo.

Puerto de salida B Motor NXT y su sensor de rotación interno

Motor que permite que el brazo pueda subir o bajar.

Puerto de salida C Motor NXT y su sensor de rotación interno

Motor que permite que el brazo pueda moverse horizontalmente.

Tabla 2.12. Puertos usados en el brazo mecánico

El funcionamiento previsto para el brazo mecánico es el siguiente: al iniciar el

programa existirá la posibilidad de indicar al brazo cuáles son las posiciones

extremas a las que debe llegar, tanto horizontal como verticalmente y las

almacene en su memoria RAM, así como también deberá guardar los valores

de las lecturas del sensor de luz ante dos objetos de distintos colores. Para la

obtención de los valores extremos se hace uso de los sensores de rotación

internos de los motores NXT. Cuando este proceso inicial ha terminado, el

Page 66: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

53

brazo entrará en operación y comenzará a trasladar los objetos que se

encuentran en la posición inicial hacia su destino final, el mismo que dependerá

del color del objeto. Los objetos a ser trasladados son las bolas con las que

viene provisto el kit 8527.

Se ha pensado en una configuración fácil de desmontar, de tal forma que el

cambio de baterías –cuando sea necesario- no sea un problema.

Tipo de vista Imagen

Vista frontal (entradas)

Vista posterior (salidas)

Page 67: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

54

Tipo de vista Imagen

Vista superior (pantalla del NXT)

Vista desde la derecha

Vista desde la izquierda

Detalle del arreglo que permite el movimiento horizontal (1)

Page 68: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

55

Tipo de vista Imagen

Detalle del arreglo que permite el movimiento horizontal (2)

Detalle del arreglo que permite el movimiento horizontal (3)

Detalle del arreglo que permite el movimiento vertical (1)

Detalle del arreglo que permite el movimiento vertical (2)

Page 69: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

56

Tipo de vista Imagen

Detalle del sensor de contacto que actúa como sensor de final de

carrera

Detalle de la “garra” (1)

Detalle de la “garra” (2)

Detalle de la “garra” (3)

Page 70: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

57

Tipo de vista Imagen

Detalle del sensor de luz (1)

Detalle del sensor de luz (2)

Detalle del “brazo” (1)

Detalle del “brazo” (2)

Page 71: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

58

Tipo de vista Imagen

Detalle del “brazo” (3)

Tabla 2.13. Imágenes del brazo mecánico

2.2.4 VEHÍCULO CONTROLADO MEDIANTE ALGORITMO PID [22]

Para este proyecto fue necesario construir un vehículo de cuatro ruedas de

estructura mecánica sencilla, propulsado por dos servomotores y que, por

construcción, no tiene la posibilidad de girar. Los motores funcionarán siempre

de forma simultánea. Para conseguir una mayor velocidad en las llantas, se ha

acoplado al eje que va al servomotor un engranaje de 40 dientes acoplado a

uno más pequeño de 8 dientes que está directamente conectado al eje sobre

las ruedas. De esta manera se consigue un aumento de la velocidad en un

factor de 5, aunque en detrimento de su potencia.

El sensor de ultrasonido se ha fijado en la parte delantera del robot, de tal

manera que no cuente con ningún obstáculo directo para realizar sus

mediciones. Vale la pena recordar que el sensor mencionado tiene un rango de

operación que va desde los 3cm hasta los 255cm. El NXT ha sido colocado en

la parte superior para facilitar el acceso a las teclas de control y a la pantalla

LCD y su desmontaje es fácil, de tal forma que el cambio de baterías es un

procedimiento sencillo.

Page 72: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

59

Figura 2.23. Esquema simplificado del auto controlado mediante algoritmo PID

El funcionamiento del vehículo es el siguiente: al iniciar el programa se permite

la modificación de las constantes P, I y D del algoritmo, así como también se

puede ingresar un valor de tolerancia máxima de los resultados. Terminado

este proceso se comienza colocando un objeto delante del vehículo y tomando

medida de la distancia, la misma que intentará mantener aún cuando el objeto

sea movido y la distancia variada.

Los elementos de hardware utilizados en este proyecto son los siguientes:

Puerto Tipo de hardware Utilidad

Puerto de entrada 4 Sensor de ultrasonido

Mide de forma permanente la distancia a la que se encuentra el objeto que está frente a él.

Puerto de salida A Motor NXT

Motor que se encuentra a la izquierda (sensor de ultrasonido de frente)

Puerto de salida C Motor NXT

Motor que se encuentra a la derecha (sensor de ultrasonido de frente)

Tabla 2.14. Puertos usados en el auto controlado mediante algoritmo PID

Page 73: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

60

A continuación se presentan algunas fotografías que muestran la configuración

física del automóvil diseñado.

Tipo de vista Imagen

Vista frontal (entradas)

Vista posterior (salidas)

Vista superior (pantalla del NXT)

Page 74: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

61

Tipo de vista Imagen

Vista inferior

Vista desde la derecha

Vista desde la izquierda

Detalle del sensor de ultrasonido

Page 75: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

62

Tipo de vista Imagen

Detalle de la conexión motor-rueda (1)

Detalle de la conexión motor-rueda (2)

Detalle de la parte lateral posterior

Detalle de la parte posterior (desde abajo)

Tabla 2.15. Imágenes del auto controlado mediante algoritmo PID

Page 76: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

63

2.2.5 SEGUIDOR DE LÍNEA

Es necesario construir un vehículo que tenga la posibilidad de moverse en línea

recta, así como girar independientemente hacia cualquiera de los lados.

Asimismo, al vehículo debe estar convenientemente acoplado un sensor de luz

que se encuentre lo suficientemente cerca del piso, de tal manera que pueda

realizar las mediciones de la intensidad luminosa que incide sobre él con la

mínima interferencia de la luz ambiental.

Los elementos de hardware utilizados en este proyecto son los siguientes:

Puerto Tipo de hardware Utilidad

Puerto de entrada 1 Sensor de luz

Mide la cantidad de luz que se refleja en el piso dependiendo del camino por el que circula.

Puerto de salida B Motor NXT

Motor que se encuentra a la izquierda (pantalla de frente)

Puerto de salida C Motor NXT

Motor que se encuentra a la derecha (pantalla de frente)

Tabla 2.16. Puertos usados en el seguidor de línea

El vehículo consta básicamente de un chasis compuesto por dos motores,

elementos de sujeción y el NXT. Dos ruedas que se encuentran conectadas a

los motores permiten un fácil movimiento del vehículo. La bola ubicada en la

parte posterior da estabilidad al diseño y permite que el vehículo pueda girar

fácilmente y avanzar hacia delante sin problema.

Page 77: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

64

Figura 2.24. Esquema simplificado del seguidor de línea

Cuando se inicia el programa almacenado en la memoria RAM no volátil del

ladrillo NXT, el vehículo inicia automáticamente una secuencia de barrido y

reconocimiento de valores máximos y mínimos por medio de su sensor de luz.

Con estos valores se calcula internamente un valor intermedio y será ésta la

referencia o set point que el algoritmo PID incorporado intentará mantener.

Consecuentemente el vehículo programado no será exactamente un seguidor

de línea, sino un seguidor de borde de línea.

Figura 2.25. Recorrido del seguidor de línea que en realidad es un seguidor de borde de línea

Para que el seguidor de línea funcione adecuadamente es necesario que exista

una marcada diferencia entre los colores de la línea y de la superficie donde

ésta se encuentra, así como también deben mantenerse relativamente

constantes las condiciones de iluminación ambiental. Para verificar estos datos

se puede acudir al mismo sensor de luz conectado al ladrillo NXT y realizar

algunas mediciones de prueba antes de iniciar con el trazado de la trayectoria.

Page 78: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

65

Finalmente, la configuración no debe ofrecer mayores dificultades para

desmontar al ladrillo NXT, por lo que el cambio de baterías no representa

ningún problema.

Las fotografías que se incorporan a continuación permiten tener una clara idea

de la forma del dispositivo armado, para ello se han realizado tomas desde

diferentes ángulos y puntos de vista:

Tipo de vista Imagen

Vista frontal (entradas)

Vista posterior (salidas)

Vista superior (pantalla del NXT)

Page 79: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

66

Tipo de vista Imagen

Vista inferior

Vista desde la derecha

Vista desde la izquierda

Detalle del sensor de luz (1)

Page 80: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

67

Tipo de vista Imagen

Detalle del sensor de luz (2)

Detalle del contenedor de la bola que se encuentra en la parte

posterior (1)

Detalle del contenedor de la bola que se encuentra en la parte

posterior (2)

Detalle de los elementos de sujeción del NXT

Tabla 2.17. Imágenes del seguidor de línea

Page 81: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

68

2.2.6 APLICACIONES REMOTAS [21]

Para este proyecto no se ha previsto la construcción adicional de nuevos

prototipos, sino que se aprovechará de los construidos anteriormente. Así, para

la construcción del mando a distancia se usará el prototipo diseñado en el

numeral 2.2.1.1 Medidor de longitudes y el automóvil que se va a controlar se

ha descrito en el numeral 2.2.5 Seguidor de línea.

El trabajo especial que se hará para este proyecto será a nivel de software y su

descripción se encuentra detallada en el siguiente capítulo.

De todas maneras es pertinente una breve explicación del funcionamiento del

equipo: el mando a distancia posee una rueda que actuará como un dial y cuyo

giro representará la velocidad con la que debe moverse el vehículo controlado.

El sentido en que se gira el dial indicará si el vehículo debe viajar hacia delante

o hacia atrás. Los botones del mando a distancia también tienen un significado:

las flechas a los lados harán que el vehículo gire en el sentido indicado y el

botón central hará que éste se detenga y emita un sonido. Si no se presiona

ningún botón, el vehículo se mueve en línea recta.

Figura 2.26. Prototipos usados en el proyecto de “aplicaciones remotas”. A la izquierda se

muestra el mando a distancia y a la derecha el vehículo a ser controlado.

Page 82: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

69

CAPÍTULO 3

DESARROLLO DE LA PROGRAMACIÓN

Para programar el microcontrolador del NXT se puede elegir entre distintos

entornos. El entorno escogido dependerá, entre otras cosas, de la complejidad de

las operaciones que se vayan a realizar.

3.1 LENGUAJES DE PROGRAMACIÓN

Los robots de Lego Mindstorms pueden ser programados a través de diferentes

lenguajes. La primera opción que se puede utilizar es programar directamente el

NXT con los botones que se encuentran disponibles en el mismo. Para ello se

tiene un sistema basado en íconos que permite desarrollar programas para

algoritmos muy simples. Mediante estos íconos se puede especificar el tipo de

movimiento, los sensores a utilizar, así como los tiempos de espera. Por la

simplicidad del sistema, no es aconsejable para aplicaciones complejas.

Entre las demás opciones de entornos de programación para el NXT hay algunas

comerciales y otras que han sido desarrolladas por la comunidad que se ha

creado a lo largo de estos años en torno a Lego Mindstorms.

Como opciones de lenguajes de programación comerciales se pueden

mencionar:[23]

- NXT-G Edu: como software propio de Lego para la educación, este

lenguaje sustituye a Robolab, lenguaje usado para la versión RCX. Está

basado en LabVIEW, por lo que la programación se hace con bloques que

se pueden arrastrar y soltar, así como interconectar.

- NXT-G: su funcionalidad es similar a la del anterior y se distribuye con la

versión comercial del producto.

Page 83: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

70

- Robolab 2.9: corresponde a una versión que permite el paso de versiones

anteriores a nuevas y se constituye en un Robolab para NXT (no permite la

comunicación mediante bluetooth).

- RobotC: software desarrollado por la Academia de Robótica de la

Universidad Carnegie Mellon y que permite programar en C. El firmware

que usa es más rápido que el original de Lego y permite programar tanto el

RCX como el NXT.

También existen otros lenguajes de programación de uso libre:

- BricxCC (Bricx Command Center): plataforma que soporta la programación

del ladrillo programable de Lego con NQC (para el RCX), NBC y NXC (para

el NXT), C, C++, Pascal, Forth, y Java utilizando brickOS, pbForth y leJOS.

Este software está disponible en código abierto y permite no solo la edición

de los programas, sino que además suministra herramientas para transferir

el programa desde el PC al microcontrolador del NXT, así como otras

aplicaciones interesantes para el NXT.

- NBC (Next Byte Codes): lenguaje dirigido a programadores con una

sintaxis de lenguaje ensamblador, lo que permite llegar al nivel más bajo

del hardware de forma directa.

- NXC (Not eXactly C): lenguaje de alto nivel similar a C.

- leJOS NXJ: facilita la programación del NXT con Java y se trata de un

lenguaje de programación orientado a objetos.

- leJOS OSEK (C/C++)

- pbLua

- NXT# - MindStorms for .NET: NXT# es una librería para .NET que permite

controlar el Lego Mindstorms NXT con una aplicación C# o VB.NET por

medio de bluetooth.

- LOGO para NXT

- URBI para Lego Mindstorms

- Python: es un lenguaje de programación de alto nivel, fácil de aprender,

muy extensible y multiplataforma. Por medio de una conexión bluetooth o

USB se comunica con el NXT por medio del computador y puede leer los

Page 84: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

71

valores de los sensores o manejar los servomotores. De esta forma el

código escrito es ejecutado directamente por el PC y permite aprovechar

toda la potencia de cálculo que este ofrece, así como la conexión con otros

periféricos que complementen la labor del robot.

Entre los lenguajes comerciales de uso libre se mencionan:

- LabVIEW: la programación del NXT de forma directa desde esta plataforma

es posible e inclusive se pueden desarrollar nuevos bloques de

programación para NXT-G.

- Microsoft Robotics Developer Studio: incluye un entorno de programación

visual y permite hacer simulaciones 3D. Está dirigido a la educación y a

desarrolladores tanto aficionados como comerciales.

Otros lenguajes son:

- MATLAB: permite controlar NXT vía bluetooth y se encuentra desarrollado

en código abierto.

- Simulink: se lo utiliza con robots NXT en la central de archivos de Matlab.

- RoboRealm: software de visión artificial que permite el procesamiento de

imágenes y control de robots.

En septiembre de 2007 se creó la siguiente tabla comparativa entre algunos

lenguajes de programación para el NXT:

Lenguaje Característica

NXT-G ROBOLAB ROBOTC NXC pbLua NXJ

Tipo de lenguaje Gráfico Gráfico C Similar a C Lua JAVA

Precio

$0 (version comercial) $50 (educación)

$50 $30 vía web$50 – CD

Open Source

Open Source

Open Source

Plataforma necesaria Windows, MAC OSX

Windows, MAC OSX

Windows Windows, MAC OSX,LINUX

Windows, MAC OSX

Windows

Usuario final Novato a intermedio

Novato a intermedio

Novato a avanzado

Intermedio a avanzado

Intermedio o más

Intermedio o más

Instalación con un solo botón Sí Sí Sí Sí No Parcial Facilidad de uso (en escala de 1 a 10, 10 es lo mejor)

10 7 8 6 4 4

Velocidad relativa de ejecución 1X 70X 130X (la más rápida)

25X 35X No disponible

Page 85: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

72

Lenguaje Característica NXT-G ROBOLAB ROBOTC NXC pbLua NXJ

IDE Sí Sí Sí Sí Vía Eclipse Parcial (vía Eclipse)

Desarrollador en tiempo real No No Full Featured

Parcial No No

Capacidad de reproducción de sonidos

Tonos + WAV

Tonos + WAV

Tonos + WAV

Tonos + WAV

Tonos Tonos + WAV

Capacidades LCD

Texto Básico Mejorado++ Mejorado++ Básico Mejorado MejoradoGráficos Básico Mejorado Mejorado Básico No Mejorado Íconos Sí Sí Sí Sí No No

Características del lenguaje

Variables Hard Hard Sí Sí Sí Sí Punto flotante No Sí Sí No Sí SíFunciones trigonométricas

No Sí Sí No Sí? Sí?

Estructura ‘switch’ Sí No Sí No No Sí

Arreglos No No Sí Sí Sí Sí

Conectividad Bluetooth

Conectividad con otros dispositivos

PC, NXT Ninguna PC, NXT, GPS, otros

PC, NXT PC, NXT, GPS, otros

NXT, otros

Soporta protocolo Fantom

Sí No Sí Sí No No

Duplex (velocidad)

Half No disponible

Full Half Full Full

Sistema de manejo de archivos en el ladrillo

Sí Sí Sí Sí No No

Sistema de programación en el ladrillo

Sí Sí Sí Sí No No

DATA LOGGING integrado No Sí Sí No No No Compatibilidad con Lego RCX No Sí Sí Parcial No Parcial

Tabla 3.1. Comparación entre diferentes lenguajes de programación, tomado de [24]

En cuanto a las características descritas en la Tabla 3.1, se pueden realizar las

siguientes precisiones.

Capacidad de reproducción de sonidos

FUNCIONALIDAD DESCRIPCIÓN

TONOSReproduce un tono simple a la velocidad del NXT, a una frecuencia y una duración determinadas.

TONOS + WAVReproduce archivos “WAV” guardados en el NXT. Los archivos de sonido contienen sonidos simples que son reproducidos a alta velocidad.

Tabla 3.2. Capacidad de reproducción de sonidos, tomado de [24]

Capacidades de la pantalla LCD

ATRIBUTO FUNCIONALIDAD DESCRIPCIÓN

TEXTO

Básico - Ubica un texto en la pantalla LCD en coordenadas específicas.

Mejorado - Controles de formato “Print” para caracteres alfanuméricos.

Mejorado++

- Opciones múltiples de fuentes de texto. ROBOTC y ROBOLAB manejan el tamaño 6x8, como otros sistemas, además del tamaño de fuente 12x16. - Se pueden eliminar, opcionalmente, líneas de texto antes de hacer nuevos gráficos. - Las rutinas para graficar son optimizadas para minimizar el tiempo real.

Page 86: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

73

GRÁFICOS

Básico - Dibuja líneas, rectángulos, círculos y puntos simples en la pantalla LCD.

Mejorado

- Funciones para borrar y rellenar rectángulos y círculos para dar una capacidad de dibujo expandida. - Dibuja óvalos y círculos.

ÍCONOS - Habilidad de dibujar archivos de íconos en la pantalla.

Tabla 3.3. Capacidades de la pantalla LCD, tomado de [24]

Características del lenguaje

ATRIBUTO CARACTERÍSTICAS

VARIABLES

- Todas las soluciones soportan variables definidas por el usuario. - Existe un mecanismo especial para definir variables en el lenguaje NXT-G. - Las variables en lenguajes gráficos tienen alcance global. No es posible definir variables locales. - Las variables en lenguajes textuales dan importancia al tipo de letra usada.

PUNTO FLOTANTE

- Todas las soluciones soportan cálculos con números enteros (“integer”). Las expresiones resultantes se redondean siempre al entero. - Algunos lenguajes textuales soportan fracciones o números en punto flotante.

FUNCIONES TRIGONOMÉTRICAS

- El soporte de funciones trigonométricas es útil en aplicaciones basadas en un “cálculo al ojo” de los resultados entregados por el codificador del motor.

ESTRUCTURA "SWITCH"

- Una declaración “switch” permite verificar múltiples condiciones a la vez. - Para muchos compiladores, el código para una declaración “switch” es similar al de una serie de instrucciones “if” anidadas.

ARREGLOS - Utilizados en programación.Tabla 3.4. Características del lenguaje, tomado de [24]

Conectividad bluetooth

ATRIBUTO CARACTERÍSTICAS

OTROS DISPOSITIVOS

- El firmware estándar del NXT-G soporta comunicaciones mediante bluetooth (BT) entre el PC y el NXT, así como entre diferentes NXTs. Incluye el uso del protocolo de mensajes de Lego “Fantom” para realizar las comunicaciones. - Existen requisitos que se deben cumplir para conectar un dispositivo BT que no soporta el protocolo “Fantom”.

DUPLEX (VELOCIDAD)

- El protocolo Fantom usa el enlace BT en la forma half-duplex. • El dispositivo máster del enlace BT puede enviar mensajes al

esclavo en cualquier momento. • El dispositivo esclavo solo envía mensajes al dispositivo máster en

respuesta a su requerimiento. Esto resulta en un uso ineficiente del enlace BT y en una gran latencia en el envío de mensajes del dispositivo esclavo al maestro.

- Algunas soluciones utilizan el enlace BT en la forma full-duplex. El dispositivo esclavo puede enviar mensajes al dispositivo máster independientemente de la existencia de un requerimiento de su parte, esto reduce significativamente la “latencia” de la transmisión. Tabla 3.5. Conectividad bluetooth, tomado de [24]

Page 87: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

74

En el presente trabajo, se van a utilizar los lenguajes de programación NXT-G

(lenguaje con características gráficas) y NXC (lenguaje con código escrito).

Mediante NXT-G se programarán los siguientes prototipos:

- Medidor de longitud

- Calculadora de áreas y volúmenes

- Medidor de sonido

- Aplicaciones remotas

Los prototipos que se programarán con NXC son los siguientes:

- Escorpión

- Brazo mecánico

- Auto controlado mediante algoritmo PID

- Seguidor de línea

3.2 LENGUAJE DE PROGRAMACIÓN NXT-G [25]

NXT-G es un lenguaje que se muestra similar a un diagrama de flujo. Este

lenguaje viene incluido en el paquete Lego Mindstorms NXT y es desarrollado

sobre la plataforma Labview 7.1 del fabricante National Instruments. El lenguaje

es compatible con los sistemas operativos Mac OS X y Windows XP. Los

programas desarrollados en NXT-G usan una notación gráfica donde los bloques

que aparecen representan operaciones matemáticas, lógicas y otras y donde es

fácil notar la secuencia en que se deben realizar éstas y las demás acciones

relacionadas con los bloques.

A diferencia de otros lenguajes de programación como BASIC, C y Java, en NXT-

G no existe una secuencia de comandos que el programador debe escribir. En

lugar de ello, los programas NXT-G se escriben aplicando simples procesos de

“arrastrar y dejar caer” los bloques necesarios hasta el lugar que les corresponde

en el programa y luego se procede a realizar conexiones mediante “cables” entre

los bloques deseados y con la información requerida. Para descargar el programa

al ladrillo NXT, éste es previamente compilado en el lenguaje ensamblador que

Page 88: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

75

luego será ejecutado en el ladrillo, donde ya existe un programa oficial del

fabricante (firmware) que lo entiende. Adicionalmente a los bloques que incluye el

paquete provisto por el fabricante, NXT-G permite crear bloques personales, lo

que a su vez se convierte en una ventaja, pues se pueden también importar

bloques creados por otros desarrolladores.

Un programa informático en NXT-G es un conjunto de bloques organizados

secuencialmente de forma que el robot realiza una tarea concreta al ejecutar

ordenadamente todas las acciones que determinan los bloques de dicho

programa.

3.2.1 ENTORNO DE PROGRAMACIÓN DEL LENGUAJE NXT-G

Al instalar el software provisto por el fabricante de LEGO MINDSTORMS NXT e

iniciar la programación de una tarea se puede observar la siguiente pantalla:

Figura 3.1. Entorno de programación (IDE) del lenguaje NXT-G

Page 89: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

76

El IDE o entorno de programación tiene de seis diferentes secciones que permiten

realizar todas las tareas requeridas para realizar un programa para el NXT,

descargarlo y ponerlo en acción:

• (1) Barra de herramientas (Toolbar): se muestran los comandos que usualmente

son de mayor uso, tales como abrir o guardar programas, administrar los bloques

definidos por el usuario, actualizar el sistema operativo del NXT (firmware) y

buscar ayuda.

• (2) Paleta de programación (Programming palette): se almacenan los diferentes

tipos de bloques, los mismos que están separados en tres categorías: paleta

común (Common palette), que contiene los bloques de uso frecuente; paleta

completa (Complete palette), que contiene todos los bloques disponibles y la

paleta que contiene los bloques definidos por el usuario (Custom palette).

• (3) Área de trabajo (Work area): área para realizar los programas. Los bloques

son colocados sobre las “vigas” que ofrece esta ventana y luego son conectados

entre sí.

• (4) Panel de configuración (Configuration panel): área que permite configurar en

detalle cada uno de los bloques del área de trabajo. Cada bloque contiene una

serie de características que son especificadas en esta sección al seleccionarlo.

• (5) Controlador (Controller): herramientas para compilar, descargar y ejecutar los

programas desarrollados. Esta herramienta administrativa permite además

consultar sobre el estado del ladrillo NXT: disponibilidad, memoria, estado de la

batería.

• (6) Robo Center: constituye el puente a la comunidad NXT y los recursos

ofrecidos por la misma. Se ofrecen instrucciones para construir robots

prediseñados y acceso directo al portal de la comunidad de Lego Mindstorms

NXT.

3.2.2 BLOQUES

En términos generales, los bloques que incluye NXT-G permiten realizar

conversiones entre diferentes tipos de datos, operaciones matemáticas,

generación de números aleatorios, acceso a un sistema de archivos y más.

Page 90: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

77

Cada bloque representa una acción de un robot y puede configurarse a través de

un menú propio presente en el llamado panel de configuración. Cada menú tiene

sus propios parámetros, los mismos que son diferentes en cada bloque.

3.2.3 CONTROLES DE SALIDA

El control de los dispositivos de salida tales como motores, sonidos o pantalla de

cristal líquido (LCD), viene dado por los siguientes bloques:

• Bloque Motor: permite el control preciso de la velocidad de un motor. Se puede

aumentar la velocidad hasta un valor predeterminado siguiendo la forma de una

rampa o se la puede disminuir hasta detenerse totalmente. Al seleccionar “Wait

for Completion” el programa ejecutará el siguiente bloque una vez que el bloque

Motor ha arrancado al mismo.

Figura 3.2. Bloque Motor y su panel de configuración

• Bloque Move: controla y sincroniza el movimiento de dos o más motores. Es un

bloque muy útil cuando se desea que el robot se mueva en línea recta hacia

adelante o hacia atrás.

Page 91: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

78

Figura 3.3. Bloque Move y su panel de configuración

• Bloque Rotation sensor: permite determinar la cantidad de grados

sexagesimales que gira el eje del motor o la cantidad de rotaciones completas del

mismo.

Figura 3.4. Bloque Rotation sensor y su panel de configuración

• Bloque Sound: emite un tono o reproduce un archivo de sonido.

Figura 3.5. Bloque Sound y su panel de configuración

Page 92: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

79

• Bloque Display: muestra un texto, una imagen o una figura prediseñada en la

pantalla de cristal líquido del ladrillo NXT.

Figura 3.6. Bloque Display y su panel de configuración

3.2.4 CONTROLES DE ENTRADA

El control de los dispositivos de entrada, tales como los sensores, se puede

realizar a través de los siguientes bloques:

• Bloque Touch sensor: provee acceso al estado actual del sensor de contacto y la

información la entrega a través de una señal lógica.

Figura 3.7. Bloque Touch sensor y su panel de configuración

• Bloque Sound sensor: sirve como un detector de sonidos y entrega un valor que

corresponde a la cantidad de sonido actual y puede enviar una señal de

“verdadero” o “falso” si el nivel de sonido está sobre o bajo un nivel dado.

Page 93: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

80

Figura 3.8. Bloque Sound sensor y su panel de configuración

• Bloque Light sensor: mide la cantidad de luz ambiental que incide sobre el

sensor de luz o enciende/apaga la luz del sensor.

Figura 3.9. Bloque Light sensor y su panel de configuración

• Bloque Ultrasonic sensor: detecta las reflexiones de las señales emitidas por el

sensor de ultrasonido y las convierte en una medida de distancia. Se puede

programar al robot para que reaccione si se está por debajo o sobre una cierta

medida.

Figura 3.10. Bloque Ultrasonic sensor y su panel de configuración

Existen otros tres métodos que pueden ser usados para que los robots basados

en NXT puedan tener información del medio externo. Estos incluyen a los tres

botones, los temporizadores y el uso de la tecnología bluetooth.

• Bloque NXT buttons: detecta las acciones realizadas sobre los botones del NXT

(botón naranja y botones de navegación lateral).

Page 94: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

81

Figura 3.11. Bloque NXT buttons y su panel de configuración

El bloque Rotation sensor también funciona como un control de entrada al contar

la cantidad de grados sexagesimales girados por el eje del motor o las rotaciones

completas del mismo

3.2.5 COMUNICACIONES

Las comunicaciones se pueden realizar a través de los siguientes bloques:

• Bloque Send message: envía mensajes vía bluetooth. Se debe seleccionar el

tipo de datos a transmitir y el número de buzón del destinatario.

Figura 3.12. Bloque Send message y su panel de configuración

• Bloque Receive message: recibe mensajes vía bluetooth. Se debe configurar el

tipo de datos a recibir y el número de buzón y debe corresponder a los datos

almacenados en el remitente.

Figura 3.13. Bloque Receive message y su panel de configuración

Page 95: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

82

3.2.6 FLUJO DEL PROGRAMA

El control general del flujo del programa se realiza a través de los siguientes

bloques:

• Bloque Wait: permite que el programa realice una pausa hasta que la medida de

un sensor haya alcanzado un cierto valor o hasta que haya transcurrido cierto

tiempo.

Figura 3.14. Bloque Wait (tiempo transcurrido) y su panel de configuración

• Bloque Loop: repite una porción del programa hasta que una condición haya

sido cumplida, tal como el tiempo transcurrido, la cantidad de repeticiones

realizadas, un valor lógico o un cierto estado del sensor. También se puede

indicar que una porción de código se repita indefinidamente.

Figura 3.15. Bloque Loop y su panel de configuración

• Bloque Switch: permite escoger entre dos o más secuencias de código de

acuerdo a una condición particular. Está asociado a la acción sobre uno de los

sensores disponibles.

Page 96: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

83

Figura 3.16. Bloque Switch (con sensor de contacto) y su panel de configuración

• Bloque Stop: detiene al programa, a los motores, a las lámparas o sonidos. En el

caso de este bloque no se requiere de un panel de configuración.

Figura 3.17. Bloque Stop

3.2.7 OTROS BLOQUES

Existen otros bloques que no necesariamente se pueden incluir en las categorías

anteriores:

• Bloque Timer: lee o resetea los valores de los tres temporizadores internos que

tiene el NXT y que se inician automáticamente.

Figura 3.18. Bloque Timer y su panel de configuración

Page 97: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

84

• Bloque Record/play: permite “grabar” los movimientos del robot. Una vez que se

ha grabado una secuencia de movimientos, es posible colocar el bloque en modo

“reproducir” (play) y el robot repite los movimientos almacenados.

Figura 3.19. Bloque Record/play y su panel de configuración

3.2.8 BLOQUES DEFINIDOS POR EL USUARIO

Una de las características más útiles del software de LEGO MINDSTORMS NXT

es la habilidad de crear bloques definidos por el usuario. Cada uno de estos

bloques puede ser entendido como subprogramas que consisten de una

secuencia de bloques conectados por “ejes” y “cables”.

Para crear bloques personales es necesario acudir a la opción que permite

hacerlo: My Block Builder. Posteriormente se debe escoger del área de trabajo el

grupo de bloques que se desea incluir en el nuevo bloque y asignarle a éste el

ícono que se crea conveniente.

Figura 3.20. Ventana que permite acceder a My Block Builder

Page 98: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

85

El nuevo bloque creado aparecerá en la paleta de bloques definidos por el usuario

y podrá ser usado en programas posteriores o compartido con la comunidad de

programadores.

3.2.9 VARIABLES

NXT-G soporta el concepto de variables globales; esto es, si se requiere de un

valor a ser compartido globalmente por otros bloques, se lo puede hacer mediante

la definición de una variable.

Para definir variables se usa el comando Define Variable que aparece en el menú

Edit del entorno de programación del NXT-G. La variable a definir puede ser tipo

texto, numérica o lógica.

Figura 3.21. Ventana que permite definir variables

La definición de variables cobra especial importancia en la definición de bloques

creados por el usuario, pues a través de ellas se transfieren los parámetros que

requiere el bloque.

Para el trabajo con variables dentro del programa se usa el bloque Variable, el

mismo que permite leerlas o escribir sobre ellas.

Page 99: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

86

Figura 3.22. Bloque Variable y su panel de configuración

3.2.10 OPERACIONES MATEMÁTICAS

El NXT-G permite realizar operaciones aritméticas con números enteros y

operaciones lógicas con las variables correspondientes.

• Bloque Math: permite realizar operaciones aritméticas como la suma, resta,

multiplicación y división.

Figura 3.23. Bloque Math y su panel de configuración

• Bloque Logic: permite realizar operaciones lógicas.

Figura 3.24. Bloque Logic y su panel de configuración

• Bloque Compare: permite realizar comparaciones entre dos números (>, <, =).

Page 100: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

87

Figura 3.25. Bloque Compare y su panel de configuración

• Bloque Range: determina si un número se encuentra dentro o fuera de un rango

de valores.

Figura 3.26. Bloque Range y su panel de configuración

• Bloque Random: genera números aleatorios que se encuentran entre dos

valores previamente definidos.

Figura 3.27. Bloque Random y su panel de configuración

3.2.11 BLOQUES ESPECIALES

• Bloque Text: permite añadir pequeñas piezas de texto para crear otras más

grandes.

Figura 3.28. Bloque Text y su panel de configuración

Page 101: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

88

• Bloque Number to Text: convierte un número a texto de tal manera que se lo

puede mostrar en la pantalla del NXT.

Figura 3.29. Bloque Number to Text y su panel de configuración

• Bloque Keep Alive: evita que el NXT ingrese a un modo de “descanso”. Este

bloque se usa cuando el NXT tiene que esperar por “largos” períodos de tiempo

por la respuesta de algún sensor.

Figura 3.30. Bloque Keep Alive

• Bloque File Access: mediante este bloque se pueden almacenar datos

recuperados por el robot en un archivo en el NXT. Después de usar uno de estos

bloques para generar un archivo se requiere de otro para cerrarlo antes de poder

leerlo o borrarlo.

Figura 3.31. Bloque File Access y su panel de configuración

Page 102: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

89

• Bloque Calibrate: permite calibrar los valores mínimos (0%) y máximos (100%) a

ser detectados por los sensores de sonido y de luz.

Figura 3.32. Bloque Calibrate y su panel de configuración

• Bloque Reset Motor: apaga el mecanismo de corrección automática de error que

controla precisamente cuánto gira cada servomotor.

Figura 3.33. Bloque Reset Motor y su panel de configuración

3.2.12 “CABLES DE DATOS”

Para pasar los datos entre diferentes bloques se utilizan “cables” de conexión, los

mismos que se visualizan mediante líneas. Para ello, cada bloque puede

desplegar una serie de opciones donde se muestran todos los posibles datos que

pueden manejar.

En el ejemplo de la figura se está pasando la información entre tres bloques: el

primero de ellos, el bloque del sensor de luz, para la información de la intensidad

luminosa medida a un bloque que convierte el número en texto y este último

Page 103: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

90

resultado se pasa al bloque de pantalla para visualizar la información de la

medida.

Cada bloque en NXT-G tiene diferentes puntos de conexión (de entrada o de

salida de datos) en dependencia del tipo de función que ejecuta.

Figura 3.34. Conexiones para enviar datos de un bloque a otro

3.3 LENGUAJE DE PROGRAMACIÓN NXC [26][27][28][29][30][31]

NXC son las siglas escogidas para el lenguaje de programación Not eXactly C (no

exactamente C) y se trata de un lenguaje textual de características similares a las

de C, que puede ser usado para programar exclusivamente el ladrillo NXT. El

lenguaje NXC proporciona estructuras de programa como arreglos, funciones,

tareas múltiples, sentencias de control de flujo, funciones de acceso a los

sensores y actuadores y sistemas de comunicación.

Los programas escritos en NXC son compilados para ser ejecutados por el

firmware de Lego Mindstorms NXT. NXC resulta ser la última de las versiones de

lenguajes de programación, realizado sobre la plataforma del lenguaje

Page 104: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

91

ensamblador NBC (NeXT Byte Codes) y fue el primero en aparecer luego de que

Lego Mindstorms NXT lanzara su lenguaje NXT-G. Este lenguaje le corresponde

a John Hansen, quien a su vez es coautor, junto con David Baum, del lenguaje

Not Quite C (NQC), que se usa para programar la versión anterior RCX de Lego

Mindstorms. NXC es un lenguaje que se puede usar de forma libre y se lo puede

descargar desde: http://bricxcc.sourceforge.net/nxc. Hansen ha actualizado el

entorno de programación (IDE), llamado Bricx Command Center (BricxCC), para

NQC y otros lenguajes de programación desarrollados con NBC, como el NXC.

Este entorno de programación (IDE) se encuentra disponible bajo la dirección:

http://sourceforge.net/projects/bricxcc.

Es necesario tener en cuenta que, aunque el preprocesador y las estructuras de

control de NXC son muy similares al lenguaje C, NXC no es completamente un

lenguaje de programación de propósito general, ya que contiene muchas

restricciones debido a las limitaciones del intérprete de código de máquina del

NXT.

A diferencia del NXT-G, el lenguaje NXC es apropiado para aplicaciones de

control en tiempo real.

3.3.1 ENTORNO DE PROGRAMACIÓN PARA EL LENGUAJE NXC

El Bricx Command Center (BricxCC), entorno desarrollado originalmente por Mark

Overmars, se ejecuta únicamente bajo el ambiente de Microsoft Windows y ahora

se lo encuentra en su versión 3.3. Esta utilidad permite escribir los programas,

descargarlos en el ladrillo NXT, iniciar su ejecución y detenerlos, así como

también permite indagar acerca del estado de la memoria flash del NXT, convertir

archivos de sonido para ser usados por el ladrillo y mucho más. BricxCC actúa

más como un procesador de texto, pero con algunas características adicionales.

El entorno de programación incluye los tres clásicos componentes, tal y como se

puede observar en la figura:

Page 105: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

92

Figura 3.35. Entorno de programación (BricxCC)

(1) Una barra de menú: incluye las típicas operaciones que se pueden realizar con

los archivos, comandos de edición, compilación y de descarga de programas

hacia el ladrillo NXT. Una opción muy importante es la denominada Preferences,

donde se pueden escoger diferentes opciones de configuración.

(2) Una barra de herramientas que incluye las utilidades de la barra de menú más

frecuentemente usadas.

(3) Un editor que está separado en dos partes: un árbol donde se muestra una

lista de elementos del lenguaje y la sección de edición. El editor provee al usuario

de un soporte de alto nivel para desarrollar programas NXC, con las

características esperadas para un entorno de programación moderno.

3.3.2 PROGRAMACIÓN EN NXC

Como en todo lenguaje de programación, existen reglas que deben cumplirse al

momento de usarlo; esto incluye reglas para la escritura de las sentencias,

estructura de los programas, sentencias y expresiones y las instrucciones para el

preprocesador:

Page 106: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

93

- Tal y como sucede con los lenguajes C y C++, NXC distingue entre el tipo

de letra (minúscula y mayúscula) usada para escribir las sentencias. Esto

significa que la variable “Xyz” es diferente a la variable “xYz”.

- Para poder documentar de mejor manera el código fuente se suelen usar

comentarios, los mismos que no son tomados en cuenta por el compilador.

La forma de hacer comentarios es colocando el símbolo // al inicio del texto

que sirve como tal. Cuando se necesita hacer comentarios más largos o

que ocupan algunas líneas se procede de la siguiente manera: /*

comentario */.

- Los espacios dejados en blanco no suelen ser considerados por el

compilador y permiten que la comprensión del programa sea mayor; sin

embargo, existen operadores que constan de más de un carácter, donde

los espacios en blanco no son aceptados, pues provocan un error de

compilación.

- Las constantes numéricas pueden ser escritas en forma decimal (x=10;) o

en forma hexadecimal (x=0x10; // corresponde a 10 hexadecimal o 16

decimal).

- Las palabras clave que NXC tiene reservadas para su uso son las

siguientes:

__RETURN__ __RETVAL__ __STRRETVAL__ __TMPBYTE__ __TMPWORD__ __TMPLONG__ abs asm bool break byte case char const continue default do else false for goto if inline int long mutex priority repeat return safecall short sign start stop string struct sub switch task true typedef unsigned until void while

3.3.2.1 Programas con NXC

Los programas en NXC están constituidos por bloques de código y variables. Los

dos posibles bloques de código son las tareas y las funciones. Ya que el NXT

soporta la ejecución de tareas múltiples, cada tarea en NXC corresponde a una

tarea en el NXT. Cada programa debe incluir por lo menos una tarea y esta debe

llamarse main. Una tarea está conformada por una serie de sentencias, cada una

Page 107: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

94

de las cuales termina con el símbolo punto y coma (;). Para indicar el inicio y el

final de cada tarea se usan los símbolos de llaves ( ). El número máximo de

tareas en un programa NXC es de 256.

task main() sentencia1; sentencia2; …

Las tareas pueden ser iniciadas y detenidas usando las sentencias start y stop

respectivamente, aunque también se pueden detener todas las tareas que están

siendo ejecutadas mediante la sentencia StopAllTasks.

En algunas aplicaciones es especialmente práctico el uso de las funciones, las

mismas que pueden ser llamadas tantas vez cuantas sea necesario. Las

funciones agrupan código de programación y pueden soportar argumentos y

retornar valores.

En NXC también es posible asignar una prioridad a una tarea de tal manera que

así se pueda asegurar el cumplimiento de determinadas condiciones ante

programas que plantean múltiples tareas.

3.3.2.2 Variables

Los tipos de variables que puede manejar NXC son los siguientes:

Tipo de variable InformaciónBool 8 bits sin signo byte, unsigned char 8 bits sin signoChar 8 bits con signounsigned int 16 bits sin signo short, int 16 bits con signo unsigned long 32 bits sin signo Long 32 bits con signo Mutex Tipo especial usado en acceso a código

exclusivo

Page 108: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

95

String Arreglo de bytes Struct Tipos de estructuras definidas por el usuario Arrays Arreglos de cualquier tipo

Tabla 3.6. Tipos de variables que maneja NXC, tomado de [27]

Las variables usadas pueden ser de tipo global (declaradas al inicio del programa)

o local (declaradas en el interior de las tareas y funciones). Para declarar una o

más variables se usa la siguiente sintaxis:

int auto; // declaración de la variable auto de tipo intint vector [n]; // declaración del arreglo vector de n elementos de tipo int

3.3.2.3 Conjuntos definidos por el usuario

NXC soporta conjuntos definidos por el usuario, conocidos como structs. Ejemplo:

struct auto string tipo_auto; int fecha_fab; …

Posteriormente, en el programa, se puede hacer uso de estas estructuras para

definir nuevas variables o para usarlas en declaraciones:

fooBar.tipo_auto=”honda”

3.3.2.4 Arreglos

Los arreglos que maneja NXC son declarados de la misma forma que las

variables ordinarias, añadiendo únicamente corchetes luego del nombre.

int mi_arreglo [ ]; // declara un arreglo con 0 elementos int mi_arreglo [10]; // declaración de un arreglo de 10 elementos int mi_arreglo [ ] [ ]; // declara un arreglo bidimensional int X [ ] [ ] = 1,2,3,4; // elementos del arreglomi_arreglo [0] = 123; // primer elemento de mi_arreglo es 123

3.3.2.5 Asignaciones

Una vez declaradas las variables se puede asignar a ellas un determinado valor

usando el operador correspondiente:

Page 109: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

96

Operador Acción= Asignar expresiones a variables += Sumar una expresión a una variable -= Restar una expresión de una variable *= Multiplicar una expresión por una variable /= Dividir una variable entre una expresión

%= Fijar en una variable el resto del resultado de una división

&= Operación lógica AND

= Operación lógica OR

^= Operación lógica OR exclusivo

= Fijar en una variable el valor absoluto de una expresión

+-= Fijar en una variable el signo de una expresión (-1, +1, 0)

>>= Desplazar hacia la derecha una variable mediante una expresión

<<= Desplazar hacia la izquierda una variable mediante una expresión

Tabla 3.7. Tipos de operadores que maneja NXC, tomado de [27]

3.3.2.6 Estructuras

Las estructuras más simples son aquellas que se ubican entre llaves ( ):

x = 1; y = 2;

Las estructuras se pueden hacer más complejas, mediante el uso de otras

sentencias. Otras estructuras son:

- if: evalúa una condición y puede presentar una alternativa if … else

- while: se usa para construir lazos condicionales

- do-while: es una variante de la sentencia while. Se diferencia de while en

que, mediante su uso, el cuerpo del lazo puede no ser ejecutado ni una

sola vez, mientras que con do-while éste se ejecuta por lo menos una vez.

- for: es equivalente a un lazo while con ligeras variaciones.

- repeat: ejecuta un lazo un número específico de veces.

- switch: se usa para ejecutar un determinado bloque de código en

dependencia del valor de una expresión.

Page 110: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

97

- goto: permite al programa saltar a una determinada locación en el mismo.

3.3.2.7 Expresiones

El lenguaje NXC considera únicamente dos tipos de valores: constantes

numéricas y variables.

Las constantes numéricas son números enteros y su tipo depende del valor de la

constante. Para la evaluación de expresiones con constantes, NXC usa

internamente operaciones matemáticas de 32 bits con signo. Las constantes

numéricas pueden ser escritas en forma decimal o hexadecimal.

Existen dos valores especiales predefinidos: true y false (verdadero y falso); el

valor de false es 0 (cero), mientras que el de true es 1.

Los valores son combinados mediante operadores, algunos de los cuales solo

sirven para evaluar expresiones constantes. Los operadores se listan a

continuación:

Operador Descripciónabs() sign()

Valor absoluto Signo del operando

++, -- Pos-incremento, pos-decremento (válido solo con variables)- ~ !

Menos (sistema unitario) Negación (sistema unitario) Negación lógica

*, /, % Multiplicación, división, módulo+, - Adición, sustracción <<, >> Desplazamiento a la izquierda, derecha <, >, <=, >= Operadores de orden==, != Igual a, distinto de & AND (a nivel de bits)^ XOR (o exclusivo a nivel de bits) l OR (a nivel de bits)&& AND lógico ll OR lógico ?: Valor condicional

Tabla 3.8. Tipos de operadores para unir expresiones en NXC, tomado de [27]

Page 111: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

98

3.3.2.8 Condiciones

Una condición está formada por la comparación de dos expresiones. Los

diferentes tipos de condiciones se listan a continuación:

Condición SignificadoTrue Siempre verdaderoFalse Siempre falso Expr Verdadero si expr es distinto de cero expr1 == expr2 Verdadero si expr1 y expr2 son iguales expr1 != expr2 Verdadero si expr1 y expr2 no son iguales expr1 < expr2 Verdadero si expr1 es menor que expr2expr1 <= expr2 Verdadero si expr1 es menor o igual que expr2expr1 > expr2 Verdadero si expr1 es mayor que expr2expr1 >= expr2 Verdadero si expr1 es mayor o igual que expr2! condition Negación lógica de una condicióncond1 && cond2 AND lógico entre dos condiciones cond1 ll cond2 OR lógico entre dos condiciones Tabla 3.9: Tipos de operadores para manejar condiciones en NXC, tomado de [27]

3.3.2.9 NXC API

El interface para la programación de aplicaciones del NXT, API por sus siglas en

inglés (Application Programming Interface), define una serie de constantes,

funciones, valores y macros que proveen acceso a varios de los periféricos del

NXT, como lo son los sensores, actuadores y medios de comunicaciones. A

continuación se explicarán brevemente algunas de las funciones, que

posiblemente serán las de mayor uso en el presente trabajo:

3.3.2.9.1 Funciones de temporización

Wait(n): hace que una tarea espere en su ejecución n milisegundos.

CurrentTick(): devuelve un valor sin signo de 32 bits, que corresponde a la

temporización del sistema en milisegundos.

FirstTick(): retorna un valor sin signo de 32 bits, que corresponde al tiempo

transcurrido en milisegundos desde que el programa se inició.

Page 112: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

99

SleepTime(): retorna el número de minutos que el NXT se mantendrá encendido

antes de apagarse automáticamente.

SleepTimer(): retorna el número de minutos que faltan en la cuenta regresiva del

valor fijado en SleepTime. Cuando el valor del SleepTimer alcanza el valor de

cero, el NXT se apagará.

ResetSleepTimer(): resetea el temporizador del sistema y lo coloca en el valor

del SleepTime. Esta acción impediría que el NXT se apague mientras el programa

se está ejecutando.

SetSleepTime(min): se setea el valor del temporizador del NXT a la cantidad de

minutos indicada.

SleepNow(): apaga inmediatamente el NXT.

SetSleepTimer(min): se setea el valor del temporizador del sistema a la cantidad

de minutos indicada.

3.3.2.9.2 Funciones de control del programa

Stop(bvalue): detiene la ejecución del programa si bvalue es verdadero.

StopAllTasks(): detiene todas las tareas que están ejecutándose.

StartTask(task): inicia la ejecución de la tarea indicada.

StopTask(task): detiene únicamente la tarea indicada.

Acquire(mutex): adquiere la variable mutex especificada. Esta función se usa

para asegurar que la tarea corriente tenga acceso único a recursos compartidos,

como pueden serlo los motores o la pantalla LCD.

Release(mutex): abandona el control de la variable mutex especificada para que

otras tareas puedan acceder a ella.

Precedes(task1, task2,…, taskN): programa o agenda la ejecución de diversas

tareas una vez que ha terminado la ejecución de la actual.

Follows(task1, task2,…, taskN): programa o agenda la ejecución de la tarea

actual una vez que cualquiera de las mencionadas haya culminado.

ExitTo(task): inmediatamente sale de la tarea actual e inicia la ejecución de la

tarea mencionada.

Page 113: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

100

3.3.2.9.3 Funciones de cadenas de caracteres

StrToNum(str): retorna el valor numérico correspondiente a str.

StrLen(str): retorna la longitud de la cadena de caracteres str.

StrIndex(str, idx): retorna el valor numérico del caracter ubicado en la cadena

según el índice especificado.

NumToStr(value): retorna la representación en cadena de caracteres del valor

numérico especificado.

FormatNum(fmtstr, value): retorna una cadena de caracteres formateada

usando el formato y el valor.

StrCat(str1, str2, …, strN): retorna una cadena que resulta de concatenar todas

las cadenas dadas juntas.

SubStr(string, idx, len): retorna una sub-cadena de la cadena de caracteres

ingresada, que inicia en idx y tiene la longitud len.

StrReplace(string, idx, newStr): retorna una cadena con una parte de la misma

reemplazada por newStr en la posición idx dada.

3.3.2.9.4 Funciones numéricas

Random(n): retorna un número aleatorio sin signo de 16 bits que se encuentra

entre 0 y n (no incluido).

Random(): retorna un número aleatorio de 16 bits.

3.3.2.10 Módulo de entrada

El módulo de entrada del NXT incluye todas las entradas para sensores, excepto

aquellas para sensores digitales I2C (Inter-Integrated Circuit).

Existen cuatro sensores que están internamente numerados como 0, 1, 2 y 3,

aunque externamente se llamen 1, 2, 3 y 4. Para evitar esta confusión se han

definido los nombres para los puertos S1 (IN_1), S2 (IN_2), S3 (IN_3) y S4 (IN_4),

los mismos que podrán ser usados en cualquier momento que se los requiera

como argumentos. En cualquier momento que se requiera los valores medidos

Page 114: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

101

por los sensores se pueden también usar los nombres: SENSOR_1, SENSOR_2,

SENSOR_3 y SENSOR_4.

Se pueden mencionar las siguientes funciones que utilizan o activan el módulo de

entrada del NXT:

SetSensor(port, const configuration): setea el tipo y modo del sensor dado a la

configuración especificada.

SetSensorLight(port): configura el sensor ubicado en el puerto indicado como un

sensor de luz.

SetSensorSound(port): configura el sensor ubicado en el puerto indicado como

un sensor de sonido.

SetSensorTouch(port): configura el sensor ubicado en el puerto indicado como

un sensor de contacto.

SetSensorLowspeed(port): configura el sensor ubicado en el puerto indicado

como un sensor digital I2C (alimentado con 9V).

3.3.2.11 Módulo de salida

El módulo de salida del NXT incluye a todas las salidas que comandan motores.

Las constantes OUT_A, OUT_B y OUT_C son usadas para identificar a cada una

de las tres posibles salidas de forma individual, aunque también es posible

realizar combinaciones que también se encuentran definidas: OUT_AB, OUT_AC,

OUT_BC y OUT_ABC.

Es posible manejar la potencia de cada una de las salidas, la misma que se

definirá entre 0 (la menor potencia) y 100 (la mayor potencia). El ingreso de

valores negativos indicará una rotación en sentido contrario.

Entre las funciones que utiliza el módulo de salida se mencionan:

Off(outputs): apaga las salidas detalladas mediante un frenado inmediato.

Coast(outputs): apaga las salidas detalladas, haciendo un frenado paulatino.

Page 115: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

102

OnFwd(outputs, pwr): hace que las salidas funcionen con marcha hacia

adelante y las enciende a la potencia pwr indicada.

OnRev(outputs, pwr): hace que las salidas funcionen con marcha en reversa y

las enciende a la potencia pwr indicada.

RotateMotor(outputs, pwr, angle): la salida indicada es activada con marcha

hacia delante y para el número de grados especificado.

RotateMotorPID(outputs, pwr, angle, p, i, d): la salida indicada es activada con

marcha hacia delante y para el número de grados especificado. Es posible

modificar las constantes proporcional, integral y derivativa del algoritmo de control

PID incluido en el firmware del NXT.

3.3.2.12 Módulo de sonido

El NXT permite la reproducción de tonos básicos, así como de dos diferentes

tipos de archivos de sonido: archivos *.rso, que son similares a los archivos *.wav

y archivos de melodías, que son similares a los archivos MIDI. Los archivos tipo

melodía son generalmente de menor extensión que los archivos .rso.

Para operar con el módulo de sonido se tienen las siguientes funciones:

PlayFile(filename): reproduce el archivo especificado en formato *.rso o *.rmd.

PlayFileEx(filename, volume, bLoop): reproduce el archivo especificado en

formato *.rso o *.rmd. El volumen varía entre 0 (valor mínimo) y 4 (valor máximo) y

bLoop es un valor booleano que indica si el archivo debe o no repetirse.

PlayTone(frequency, duration): reproduce un simple tono a la frecuencia (Hz) y

duración (ms) especificadas.

PlayToneEx(frequency, duration, volumen, bLoop): reproduce un simple tono

a la frecuencia (Hz), duración (ms) y volumen especificados.

3.3.2.13 Módulo de pantalla LCD

El NXT permite dibujar puntos, líneas, rectángulos y círculos en la pantalla LCD,

así como también permite escribir textos y números en la misma. Para entender

Page 116: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

103

las diferentes funciones que incluye NXC hay que tomar en cuenta que el origen

de coordenadas se encuentra en la parte inferior izquierda de la pantalla.

Entre las funciones usadas para usar la pantalla LCD se destacan:

ClearScreen(): limpia la pantalla LCD.

NumOut(x, y, value, clear = false): dibuja un valor numérico en la pantalla en la

ubicación (x,y).

TextOut(x, y, msg, clear = false): dibuja un texto en la pantalla en la ubicación

(x,y).

GraphicOut(x, y, filename, clear = false): dibuja el ícono del archivo

especificado (*.ric) en la pantalla en la ubicación (x,y).

CircleOut(x, y, radius, clear = false): dibuja un círculo con centro (x,y) y radio

especificado.

LineOut(x1, y1, x2, y2, clear = false): dibuja una línea que va desde el punto de

coordenadas (x1,y1) hasta el punto (x2,y2).

PointOut(x, y, clear = false): dibuja un punto en las coordenadas (x,y).

RectOut(x, y, width, height, clear = false): dibuja un rectángulo en las

coordenadas (x,y) con ancho y altura dados.

ResetScreen(): recupera la pantalla estándar del NXT en modo de ejecución.

3.3.2.14 Módulo de comunicaciones

El módulo de comandos del NXT proporciona el soporte de protocolos necesarios

para que el NXT responda a comunicaciones USB o bluetooth, requeridas por el

PC o por algún otro ladrillo NXT. En el caso de la comunicación mediante

bluetooth, es necesario considerar la comunicación de tipo maestro-esclavo. Las

funciones que más aparecen para las comunicaciones mediante bluetooth son las

siguientes:

BluetoothStatus(connection): retorna el estado de la conexión bluetooth.

SendRemoteString(connection, queue, out strval): este método envía una

cadena de caracteres al dispositivo especificado en la conexión.

Page 117: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

104

ReceiveRemoteString(queue, remove, out strval): este método es usado por el

ladrillo maestro para recibir una cadena de caracteres de un dispositivo esclavo.

SendRemoteNumber(connection, queue, value): este método envía un valor

numérico al dispositivo especificado en la conexión.

ReceiveRemoteNumber(queue, remove, out value): este método es usado por

el ladrillo maestro para recibir un valor numérico de un dispositivo esclavo.

SendResponseNumber(queue, value): este método envía un valor numérico

como respuesta a un mensaje recibido.

3.3.2.15 Manejo de archivos

El NXT puede escribir y leer sobre archivos que se encuentran almacenados en

su memoria flash. El límite para el número de archivos a almacenar está dado por

la capacidad o tamaño de la memoria flash. Mediante NXC se puede crear,

renombrar, borrar o encontrar archivos, así como leer y escribir textos, cadenas

de caracteres, números y bytes simples.

Las funciones más usadas son las siguientes:

CreateFile(filename, size, out handle): crea un nuevo archivo con el nombre y

tamaño especificados y lo abre para escribir en él.

OpenFileRead(filename, out size, out handle): abre el archivo especificado

para lectura.

CloseFile(handle): cierra el archivo asociado.

RenameFile(oldfilename, newfilename): cambia el nombre de un archivo por

otro nuevo.

DeleteFile(filename): borra el archivo especificado.

Page 118: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

105

3.4 PROGRAMACIÓN DE LOS MÓDULOS DESARROLLADOS

3.4.1 MEDIDOR DE VARIABLES MÚLTIPLES

En esta aplicación se desea principalmente mostrar una forma de utilizar el NXT

como un medidor de diferentes parámetros. Ya que se cuenta con diferentes

sensores, se deberá conectar y configurar el sensor y puerto adecuado a la

magnitud que se desea medir.

3.4.1.1 Medidor de longitudes

La idea del presente proyecto es diseñar, construir y programar un dispositivo

capaz de entregar la medida de una longitud. Para ello se ha acoplado una rueda

a un motor NXT y se aprovecha la información otorgada por el sensor de rotación

interno sobre el ángulo girado, para luego convertirlo en una medida de longitud,

dado que se conoce el radio de la rueda.

Cada rueda de la firma Lego tiene marcadas las dimensiones correspondientes

en su parte lateral; así por ejemplo se tiene a disposición las siguientes ruedas:

- 43,2x22: diámetro de 43,2mm y ancho de 22mm

- 56x26: diámetro de 56mm y ancho de 26mm

- 81,6x15: diámetro de 81,6mm y ancho de 15mm

Lo que se desea es medir longitudes a través de la longitud recorrida por una

rueda. La fórmula que permite calcular esta distancia es la siguiente:

α

π

⋅=o360

2 Rx

Figura 3.36. Relación entre las variables α, R y x

Page 119: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

106

donde:

x: distancia recorrida por la rueda

α: ángulo girado por el eje de la rueda

R: radio de la rueda

El ángulo α se determina a través de la medida entregada por el sensor de

rotación. De esta manera, la fórmula que deberá ser ingresada en el programa

queda de la siguiente manera para cada uno de las ruedas:

- Rueda 43,2x22: [ ] [ ]cmcmx αα

π

⋅≈⋅= 0376991118,0360

32,4o

[ ] [ ] [ ]cmcmcmx ααα

π

⋅≈⋅≈⋅=

53

2

05,53

2

360

32,4o

- Rueda 56x26: [ ] [ ]cmcmx αα

π

⋅≈⋅= 0488692191,0360

6,5o

[ ] [ ] [ ]cmcmcmx ααα

π

⋅≈⋅≈⋅=

41

2

93,40

2

360

6,5o

- Rueda 81,6x15: [ ] [ ]cmcmx αα

π

⋅≈⋅= 0712094335,0360

16,8o

[ ] [ ] [ ]cmcmcmx ααα

π

⋅≈⋅≈⋅=

14

1

04,14

1

360

16,8o

La distancia x se medirá en centímetros y se prefiere usar la segunda fórmula al

programar con NXT-G, ya que en este lenguaje, en la versión utilizada, no se

permite cálculos más que con números enteros.

El error se puede cuantificar con la fórmula:

100_

__⋅

=

realvalor

realvalorcalculadovalorerror

Rueda Valor real Valor calculado Error

43,2x22 α

π

⋅=o

360

32,4x

53

2α=x 0,097%

56x26 α

π

⋅=o

360

6,5x

41

2α=x -0,182%

Page 120: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

107

Rueda Valor real Valor calculado Error

81,6x15 α

π

⋅=o

360

16,8x

28

2α=x 0,308%

Tabla 3.10. Error producido por aproximaciones en el cálculo de la longitud recorrida

3.4.1.1.1 Diagrama de flujo del medidor de longitudes

A continuación se presenta el diagrama de flujo del programa desarrollado en

NXT-G:

Figura 3.37. Diagrama de flujo del medidor de longitudes

Page 121: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

108

3.4.1.1.2 Código NXT-G del medidor de longitudes

Para generar y entender el código NXT-G del programa es necesario primero

definir las variables que van a ser usadas:

Variable Tipo ComentarioLongitud Número Almacena la longitud calculada Rueda Número Almacena el factor dependiente del tipo de rueda

usado Flag Lógica Variable auxiliarTipo_rueda Texto Almacena la descripción de la rueda usada.

Tabla 3.11. Variables usadas en el programa del medidor de longitudes

Al inicio del programa se solicita que el usuario escoja, de entre tres opciones, la

rueda con la que va a operar y que va a ser la que girará sobre la superficie cuya

longitud va a ser medida. Una vez escogida la rueda, el programa ingresa en un

lazo infinito que permite hacer infinitas mediciones y todos los cálculos que se

hacen consideran este parámetro como una constante. El programa se detiene

únicamente cuando se suspenda la ejecución del mismo. Como un elemento

informativo, en la parte superior de la pantalla aparece la característica de la

rueda usada. Si se desea cambiar de rueda, habrá que suspender la ejecución del

programa y reiniciarlo.

Una gran parte del código mostrado corresponde a la presentación de los

resultados en la pantalla. Cabe anotar que en NXT-G, cada línea presentada en la

pantalla corresponde a un nuevo ícono o bloque de pantalla (bloque display); por

ello es que el programa ocupa una gran extensión en su desarrollo.

Page 122: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

10

9

F

ig 3

.38. P

rogr

ama

NX

T-G

del

med

idor

de

long

itude

s

Page 123: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

110

3.4.1.2 Calculadora de área y volumen

El principio usado para el desarrollo de este proyecto es el siguiente: al recorrer la

rueda sobre una superficie se tiene una medida entregada por el sensor de

rotación incluido en el motor NXT y ésta se puede convertir en una longitud

considerando adicionalmente el radio de la rueda girada.

Para tomar la otra medida se procede de la misma manera y al multiplicarlas se

encuentra el valor del área. Para determinar el valor del volumen es necesario

tener las tres mediciones: largo, ancho y profundidad.

Se tiene la opción de escoger con qué llanta se desea hacer la medición

correspondiente.

3.4.1.2.1 Diagrama de flujo de la calculadora de áreas y volúmenes

El diagrama de flujo del programa de la calculadora de áreas y volúmenes

muestra las posibilidades ofrecidas por el prototipo. El resultado final siempre será

un volumen, pero se cuenta como resultado parcial con el valor del área de la

primera superficie medida, luego se multiplica esta área por la tercera longitud

para obtener el valor del volumen de la caja.

A continuación se muestra el diagrama de flujo del programa desarrollado en

lenguaje NXT-G para la calculadora de áreas y volúmenes:

Page 124: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

111

Figura 3.39. Diagrama de flujo de la calculadora de áreas y volúmenes

Page 125: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

112

3.4.1.2.2 Código NXT-G de la calculadora de área y volumen

Las variables utilizadas en el programa desarrollado en NXT-G son las siguientes:

Variable Tipo ComentarioLongitud Número Almacena la longitud calculadaAncho Número Almacena el ancho calculado Profundidad Número Almacena la profundidad calculadaRueda Número Almacena el factor dependiente del tipo de rueda

usadoFlag Lógica Variable auxiliarTipo_rueda Texto Almacena la descripción de la rueda usada.

Tabla 3.12. Variables usadas en el programa de la calculadora de áreas y volúmenes

Al inicio del proceso es posible escoger el tipo de rueda con el que se va a

trabajar, selección que se mantendrá como válida hasta que se suspenda la

ejecución del programa. En la parte superior de la pantalla se muestra, como un

dato informativo, la característica de la rueda escogida.

Una vez que se ha escogido la rueda, el programa ingresa en un lazo infinito, que

permite calcular volúmenes de diferentes cajas. Hay que tomar en cuenta que los

valores de longitudes medidas se encuentran en centímetros, por lo que las áreas

estarán en centímetros cuadrados y los volúmenes en centímetros cúbicos. Estos

últimos números crecen rápidamente ante longitudes relativamente grandes y,

aunque internamente los valores estarán correctamente calculados, es posible

que no se muestren adecuadamente en la pantalla, provocándose una lectura de

resultados erróneos. El máximo número que se puede mostrar como resultado de

un volumen calculado debe tener ocho dígitos (12345678 cm3) por lo que el

volumen máximo a calcular será de 99 999 999cm3; es decir, aproximadamente

100m3. Este límite será suficiente para la gran mayoría de aplicaciones, pero es

necesario tenerlo en cuenta.

Page 126: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

11

3

Page 127: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

11

4

Fig

ura

3.4

0. P

rogr

ama

en N

XT

-G d

e la

cal

cula

dora

de

área

s y

volú

men

es

Page 128: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

115

3.4.1.3 Medidor de sonido

Mediante esta aplicación se permite visualizar las medidas tomadas por el sensor

de sonido en la pantalla del ladrillo NXT. La visualización se hará sobre la base de

una señal muestreada durante un segundo.

El sensor de sonido entrega mediciones que se encuentran entre 1 y 100. Para

tener una visualización tal y como se presenta normalmente en los dispositivos

para ello diseñados se procederá de la siguiente manera:

- Ya que la señal medida tendrá 100 como máximo valor, se dividirá este

valor entre 3 de tal manera que los resultados posibles se encontrarán

ahora entre 0 y 33 (en NXT-G solo se trabaja con números enteros).

- El eje horizontal o nivel cero será, en la pantalla, una línea que va

exactamente por el medio de la misma; esto es, en la posición vertical 32

(la pantalla tiene un tamaño vertical de 64 pixeles).

- Se realizará una lectura cada centésima de segundo, por lo que una

pantalla completa corresponderá a 100 muestras o un segundo (la pantalla

tiene un tamaño horizontal de 100 pixeles).

- Para mostrar una lectura se realizará una línea vertical ubicada en la

posición horizontal que corresponda al tiempo en que se realizó el

muestreo y de longitud igual a

3

_int2

sensormedida, donde la función int

obtiene la parte entera del cociente mostrado. De esta manera se consigue

una línea vertical centrada verticalmente en la pantalla y de una longitud

proporcional a la medición realizada por el sensor.

- Al cabo de un segundo se procederá a reinicializar la pantalla y se hará

una nueva visualización.

Si se presiona el botón naranja durante la ejecución de una pantalla, es posible

congelar el contenido de la misma, cuando ésta ha sido completada. De esta

manera se permite realizar un análisis cualitativo de la muestra tomada. Al

presionar nuevamente el botón naranja se posibilita tomar más muestras, dentro

de un lazo infinito. Solo el botón gris oscuro detiene la ejecución del programa.

Page 129: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

116

3.4.1.3.1 Diagrama de flujo del medidor de sonido

A continuación se presenta el diagrama de flujo del programa:

Figura 3.41. Diagrama de flujo del visualizador de mediciones del sensor de sonido

Page 130: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

117

3.4.1.3.2 Código NXT-G del medidor de sonido

En el caso de este programa, no se ha requerido el uso de variables adicionales,

por lo que no se presenta su definición como en los casos anteriores.

Figura 3.42. Programa NXT-G del medidor de sonido

Page 131: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

118

3.4.2 ESCORPIÓN

En esta aplicación se ha desarrollado un prototipo de un “escorpión”. El modelo

está dotado de sensores de ultrasonido, sonido y contacto para ejecutar

diferentes acciones. El programa permite el ingreso de parámetros iniciales de

acuerdo al deseo del usuario.

La programación se desarrolló en el lenguaje NXC. A diferencia de NXT-G, en

NXC no hace falta realizar una descripción separada de las variables utilizadas,

ya que ésta se efectúa directamente en el código, en forma de comentario.

3.4.2.1 Diagrama de flujo del programa del “escorpión”

El escorpión, cuando es activado, va a recorrer una habitación en línea recta,

hasta que se encuentra con un obstáculo y la distancia a él llega a un valor límite

(variable retroceder); entonces el escorpión se detiene y retrocede por un

determinado tiempo para luego seguir su avance hacia delante. Si el obstáculo

permanece a la distancia anterior, el escorpión va a estar retrocediendo y

avanzando en un lazo infinito. Esta última situación se modifica si el obstáculo se

mueve de tal forma que la distancia entre el escorpión y él llega a un segundo

valor límite (distancia picar), a la que es necesario que el escorpión active su cola

y pique.

Las variables retroceder y picar pueden ser escogidas por el usuario al iniciar la

ejecución del programa. El proceso que sigue puede iniciarse al presionar el

botón naranja o el sensor de contacto que se encuentra en la punta de la cola o el

nivel de ruido supera un cierto límite umbral. Durante la ejecución normal del

programa, si el valor medido por el sensor de sonido supera un cierto límite,

entonces el escorpión pica, sin importar si delante de él se encuentra o no un

objeto.

A continuación se presenta el diagrama de flujo del programa:

Page 132: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

119

Figura 3.43. Diagrama de flujo del programa “ESCORPIÓN”

Page 133: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

120

3.4.2.2 Código NXC del programa del “escorpión”:

/* Programa ESCORPIÓN Para que la ejecución correcta de este programa sea posible, es necesario que en la memoria interna del NXT se encuentren almacenados los archivos gráficos accept 03.ric, decline 03.ric, backward.ric y forward.ric */

int PICAR = 6; // Distancia límite para la acción de picar (6 cm) int RETROCEDER = 30; // Distancia límite para retroceder (30 cm) int AUX = 0; // Variable auxiliar mutex control; // Variable que permite adquirir el control de los motores

task pica_sonido() // Tarea que hace picar cuando el sonido supera el 75% if (SENSOR_2 > 75) Acquire(control); // Adquisición del control de los motores OnFwd(OUT_A,100); // El "aguijón" avanza hasta que el sensor de contacto until (SENSOR_1 == 1); // es activado Off(OUT_A); OnRev(OUT_A,100); // Retroceso del "aguijón" durante 0,5s Wait(500); Off(OUT_A); Release(control); // Se devuelve el control de los motores

task main() SetSensorLowspeed(IN_4); // Sensor de ultrasonido ubicado en puerto 4 SetSensorTouch(IN_1); // Sensor de contacto ubicado en puerto 1 SetSensorSound(IN_2); // Sensor de sonido en el puerto 2

/* Código que permite escoger entre trabajar con parámetros predefinidos o con valores personales */ ClearScreen(); TextOut(25,LCD_LINE1,"ESCORPION"); TextOut(10,LCD_LINE3,"DESEA INGRESAR"); TextOut(10,LCD_LINE4," PARAMETROS?"); GraphicOut(10,5,"accept 03.ric"); GraphicOut(75,5,"decline 03.ric");

/* Se espera la presión de uno de los botones laterales para aceptar o negar la posibilidad de ingresar parámetros. */ until (ButtonPressed(BTNLEFT,true)==1 || ButtonPressed(BTNRIGHT,true)==1); ClearScreen();

/* Código que permite el ingreso de parámetros personales. Mediante la flecha a la izquierda se disminuye el valor y con la flecha a la derecha se lo incrementa. La presión del botón central hace que quede asignado el valor actual al parámetro en cuestión.*/ if(ButtonPressed(BTNLEFT,true)==1) TextOut(8,LCD_LINE1,"DISTANCIA PARA"); TextOut(35,LCD_LINE2,"PICAR"); NumOut(42,LCD_LINE4,PICAR); GraphicOut(10,10,"backward.ric"); GraphicOut(75,10,"forward.ric"); TextOut(21,LCD_LINE8,"Continuar"); Wait(500); until(ButtonPressed(BTNCENTER,true)==1) while(ButtonPressed(BTNLEFT,false)==1 || ButtonPressed(BTNRIGHT,true)==1) if (ButtonPressed(BTNLEFT,true)==1) if (PICAR > 3) PICAR --; // Disminuye el valor de la variable PICAR en 1

Page 134: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

121

TextOut(42,LCD_LINE4," ");// Borra de la pantalla el valor anterior NumOut(42,LCD_LINE4,PICAR); // Muestra de la variable PICAR Wait(350); else if (PICAR < 10) PICAR ++; // Aumenta el valor de la variable PICAR en 1 TextOut(42,LCD_LINE4," ");// Borra de la pantalla el valor anterior NumOut(42,LCD_LINE4,PICAR); // Muestra de la variable PICAR Wait(350); NumOut(42,LCD_LINE4,PICAR); // Muestra el valor final de PICAR Wait(500); ClearScreen(); TextOut(21,LCD_LINE8,"Continuar"); TextOut(8,LCD_LINE1,"DISTANCIA PARA"); TextOut(20,LCD_LINE2,"RETROCEDER"); NumOut(42,LCD_LINE4,RETROCEDER); GraphicOut(10,10,"backward.ric"); GraphicOut(75,10,"forward.ric"); Wait(500); until(ButtonPressed(BTNCENTER,true)==1) while(ButtonPressed(BTNLEFT,false)==1 || ButtonPressed(BTNRIGHT,true)==1) if (ButtonPressed(BTNLEFT,true)==1) if (RETROCEDER > 10) RETROCEDER -= 5; // Disminuye en 5 el valor de la variable RETROCEDER TextOut(42,LCD_LINE4," "); // Borra de la pantalla el valor anterior NumOut(42,LCD_LINE4,RETROCEDER);// Muestra de la variable RETROCEDER Wait(350); else if (RETROCEDER < 255) RETROCEDER += 5; // Aumenta en 5 el valor de la variable RETROCEDER TextOut(42,LCD_LINE4," "); // Borra de la pantalla el valor anterior NumOut(42,LCD_LINE4,RETROCEDER);// Muestra de la variable RETROCEDER Wait(350); TextOut(42,LCD_LINE4," "); // Borra de la pantalla el valor anterior NumOut(42,LCD_LINE4,RETROCEDER); // Muestra el valor final de RETROCEDER Wait(500);

// Pantalla que muestra los valores de los parámetros de trabajo

ClearScreen(); TextOut(0,LCD_LINE1,"LOS VALORES SON:"); TextOut(0,LCD_LINE3,"PICA:"); NumOut(62,LCD_LINE3,PICAR); TextOut(83,LCD_LINE3,"cm"); TextOut(0,LCD_LINE5,"RETROCEDE:"); NumOut(62,LCD_LINE5,RETROCEDER); TextOut(83,LCD_LINE5,"cm"); TextOut(29,LCD_LINE8,"Iniciar"); Wait(1000); /* Se espera a que se presione el botón naranja o el sensor de contacto conectado en la entrada 1 o que el nivel de sonido supere el 75%. */ until(ButtonPressed(BTNCENTER,true) == 1 || SENSOR_1 == 1 || SENSOR_2 > 75);

Page 135: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

122

ClearScreen(); GraphicOut(25,10,"faceclosed.ric"); Wait(500);

/* Código que hace que el escorpión actúe como se ha deseado. */

while (true) // Se inicia un lazo infinito

StartTask(pica_sonido); // Inicio de la tarea que hace que el escorpión // "pique" cuando el nivel sonoro supera el 75%. if(SensorUS(IN_4) > RETROCEDER) OnFwd(OUT_BC,75); // El escorpión avanza hacia adelante mientras // la distancia sea mayor que RETROCEDER else Off(OUT_BC); // Cuando la distancia es menor que RETROCEDER OnRev(OUT_BC,100); // el escorpión se detiene y retrocede por 0,5s. Wait(500); Off(OUT_BC); if(SensorUS(IN_4) < PICAR) // Si la distancia en menor que PICAR: Acquire(control); // Adquisición del control de los motores OnFwd(OUT_A,100); // El "aguijón" avanza hasta que el sensor de contacto until (SENSOR_1 == 1); // es activado Off(OUT_A); OnRev(OUT_A,100); // Retroceso del "aguijón" durante 0,5s Wait(500); Off(OUT_A); Release(control); // Se devuelve el control de los motores

3.4.3 BRAZO MECÁNICO

El brazo mecánico construido permite mover objetos desde un lugar donde éstos

se almacenan hacia otros, previamente definidos, dependiendo del color de los

objetos. Se han considerado dos colores de objetos y para su reconocimiento se

utiliza el sensor de luz que viene con el kit de Lego Mindstorms. Hay que insistir

en que no se trata de un reconocimiento real del color, pues para que así sea se

requiere de un sensor de color que viene en versiones nuevas o que se lo puede

adquirir por separado.

El programa permite definir dos posiciones extremas: (1) depósito de objetos sin

clasificar y (2) destino final de los objetos del “color 1”. Se calcula una posición

intermedia entre las dos previamente definidas y se convierte ésta en el destino

final de los objetos de “color 2”.

Page 136: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

123

Para hacer más comprensible la lectura del programa y para ahorrar espacio en la

memoria interna del NXT se han desarrollado algunas subrutinas para algunas

partes de código que aparecen de forma reiterada:

- sub garra: subrutina que ejecuta la apertura y el cierre de la garra. El signo

de la variable pot determina la acción a realizarse.

- sub naranja: subrutina que permite esperar la presión del botón naranja

para continuar

- sub subir: subrutina que permite subir el brazo hasta la posición más alta

posible y que es fijada por programación

- sub bajar: subrutina que permite bajar el brazo hasta la posición más baja

posible y que es fijada por programación

- sub retornar: subrutina que retorna horizontalmente el brazo a la posición

original; esto es, el extremo horizontal derecho y que es fijado por

programación

- sub avanzar: subrutina que avanza el brazo hasta la posición final y que es

fijada por programación. La variable posicion indica hasta qué punto

horizontal debe llegar el brazo y depende del color del objeto que se va a

mover y de la configuración deseada por el usuario.

3.4.3.1 Diagrama de flujo del programa del brazo mecánico

El programa está desarrollado en NXC y su diagrama de flujo se muestra a

continuación:

Page 137: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

124

Figura 3.44. Diagrama de flujo del programa “BRAZO MECÁNICO”

La primera parte del programa permite ingresar las denominadas “posiciones

extremas”, esto es, los límites izquierdo, derecho, superior e inferior para el

movimiento. Para cuantificar estas posiciones, se hace uso de los valores

entregados por el sensor de rotación incluido en los motores NXT.

Posteriormente es necesario que el programa conozca qué son “color 1” y “color

2“. Para ello hay que acercar los objetos a ser movidos al sensor de luz de tal

forma que éste pueda realizar las medidas correspondientes y almacenarlos en

Page 138: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

125

memoria en una variable. Cumplidos estos pasos de configuración, el brazo

mecánico está listo para iniciar su trabajo: abre la garra, baja el brazo en su

posición izquierda inicial, reconoce el color del objeto a trasladar, cierra la garra,

sube el brazo, se desplaza horizontalmente hasta su posición final (depende del

color observado), baja el brazo, abre la garra para soltar el objeto, sube el brazo,

avanza horizontalmente hasta su límite izquierdo, etc.

Para suspender la ejecución del programa es necesario presionar el botón gris

oscuro. Cabe indicar que el reinicio del programa exige que nuevamente se

ejecuten todas las acciones del inicio previamente indicadas.

3.4.3.2 Código NXC del programa del brazo mecánico

/* Programa BRAZO MECÁNICO Para que la ejecución correcta de este programa sea posible, es necesario que en la memoria interna del NXT se encuentren almacenados los archivos gráficos Accept 03.ric, Backward.ric, Forward.ric, Point left.ric y Point right.ric */

/* En vista de que las mediciones del sensor de rotación incluido en los motores entrega datos relativos, es necesario indicarle inicialmente al robot cuáles son los límites para su movimiento tanto horizontal como vertical.*/ int LIM_IZQ = 0; // Límite izquierdo (NXT de frente) int LIM_DER = 0; // Límite derecho (NXT de frente) int LIM_SUP = 0; // Límite superior int LIM_INF = 0; // Límite inferior int POS_MEDIA = 0; // Posición media (bola de COLOR1) int COLOR1 = 0; // Medida del sensor de luz para el COLOR1 int COLOR2 = 0; // Medida del sensor de luz para el COLOR2 int AUX = 0; // Variable auxiliar

sub garra(int pot) OnFwd(OUT_A,pot); // Apertura de la "garra" Wait(250); Off(OUT_A);

sub naranja() // Subrutina que espera la presión del botón naranja until(ButtonPressed(BTNCENTER,true)==1); Wait(500);

sub subir() // Subrutina que permite subir el brazo until(MotorRotationCount(OUT_B)>=LIM_SUP) OnFwd(OUT_B,60); Off(OUT_B);

sub bajar() // Subrutina que permite bajar el brazo until(MotorRotationCount(OUT_B)<=LIM_INF) OnRev(OUT_B,45); Off(OUT_B);

sub retornar() // Subrutina que retorna el brazo a su posición original until(MotorRotationCount(OUT_C)<=LIM_IZQ) OnRev(OUT_C,100); Off(OUT_C);

Page 139: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

126

sub avanzar(int posicion) // Subrutina que avanza al brazo hasta la posición // final until(MotorRotationCount(OUT_C)>=posicion) OnFwd(OUT_C,100); Off(OUT_C);

task main() // TAREA PRINCIPAL DEL PROGRAMA SetSensorTouch(IN_1); // Sensor de contacto en el puerto 1

ClearScreen(); TextOut(24,LCD_LINE3,"B R A Z O"); TextOut(6,LCD_LINE5,"M E C A N I C O"); TextOut(24,LCD_LINE8,"continuar"); naranja();

ClearScreen(); TextOut(13,LCD_LINE3,"DEFINICION DE"); TextOut(22,LCD_LINE4,"POSICIONES"); TextOut(29,LCD_LINE5,"EXTREMAS"); TextOut(24,LCD_LINE8,"continuar"); naranja(); // Seteo del límite izquierdo ClearScreen();

while(SENSOR_1==0) OnRev(OUT_C,100);// Mueve el brazo hasta el extremo Off(OUT_C); // izquierdo donde existe un sensor de contacto // que actúa como sensor de final de carrera TextOut(33,LCD_LINE1,"LIMITE"); TextOut(22,LCD_LINE2,"IZQUIERDO"); GraphicOut(10,15,"Point Left.ric"); GraphicOut(75,15,"Point Right.ric"); GraphicOut(42,0,"accept 03.ric"); ResetRotationCount(OUT_C);

// Este código permite fijar el extremo de navegación izquierdo.

until(ButtonPressed(BTNCENTER,true)==1) while(ButtonPressed(BTNLEFT,false)==1 || ButtonPressed(BTNRIGHT,true)==1) if(ButtonPressed(BTNLEFT,true)==1) OnFwd(OUT_C,100); Wait(100); else if(SENSOR_1==0) OnRev(OUT_C,100); Wait(100); Off(OUT_C); LIM_IZQ = MotorRotationCount(OUT_C); TextOut(32,LCD_LINE4," "); NumOut(32,LCD_LINE4,LIM_IZQ); Wait(250); LIM_IZQ = MotorRotationCount(OUT_C); NumOut(0,LCD_LINE4,LIM_IZQ); Wait(500);

TextOut(22,LCD_LINE2," DERECHO "); TextOut(32,LCD_LINE4," ");

// Este código permite fijar el extremo de navegación derecho

until(ButtonPressed(BTNCENTER,true)==1) while(ButtonPressed(BTNLEFT,false)==1 || ButtonPressed(BTNRIGHT,true)==1) if(ButtonPressed(BTNLEFT,true)==1) OnFwd(OUT_C,100); Wait(100);

Page 140: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

127

else if(MotorRotationCount(OUT_C)>LIM_IZQ) OnRev(OUT_C,100); Wait(100); Off(OUT_C); LIM_DER = MotorRotationCount(OUT_C); TextOut(32,LCD_LINE4," "); NumOut(32,LCD_LINE4,LIM_DER); Wait(250); LIM_DER = MotorRotationCount(OUT_C); TextOut(32,LCD_LINE4," "); NumOut(62,LCD_LINE4,LIM_DER); Wait(500); naranja(); garra(100); // apertura de la garra

ClearScreen(); TextOut(33,LCD_LINE1,"LIMITE"); TextOut(25,LCD_LINE2,"SUPERIOR"); GraphicOut(10,15,"Forward.ric"); GraphicOut(75,15,"Backward.ric"); GraphicOut(42,0,"accept 03.ric"); Wait(500);

// Este código permite fijar el extremo de navegación superior

until(ButtonPressed(BTNCENTER,true)==1) while(ButtonPressed(BTNLEFT,false)==1 || ButtonPressed(BTNRIGHT,true)==1) if(ButtonPressed(BTNLEFT,true)==1) OnFwd(OUT_B,45); Wait(100); else OnRev(OUT_B,45); Wait(100); Off(OUT_B); LIM_SUP = MotorRotationCount(OUT_B); TextOut(32,LCD_LINE4," "); NumOut(32,LCD_LINE4,LIM_SUP); Wait(250); LIM_SUP = MotorRotationCount(OUT_B); NumOut(5,LCD_LINE4,LIM_SUP); Wait(500);

TextOut(25,LCD_LINE2,"INFERIOR "); TextOut(32,LCD_LINE4," ");

// Este código permite fijar el extremo de navegación inferior

until(ButtonPressed(BTNCENTER,true)==1) while(ButtonPressed(BTNLEFT,false)==1 || ButtonPressed(BTNRIGHT,true)==1) if(ButtonPressed(BTNLEFT,true)==1) OnFwd(OUT_B,45); Wait(100); else OnRev(OUT_B,45); Wait(100); Off(OUT_B); LIM_INF = MotorRotationCount(OUT_B); TextOut(32,LCD_LINE4," "); NumOut(32,LCD_LINE4,LIM_INF); Wait(250); LIM_INF = MotorRotationCount(OUT_B); TextOut(32,LCD_LINE4," "); NumOut(60,LCD_LINE4,LIM_INF); Wait(500);

Page 141: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

128

// Posición inicial: extremo derecho y extremo superior

ClearScreen(); subir(); retornar();

// Lectura de la medida de la "bola COLOR1"

SetSensorLight(IN_2); // Sensor de luz en el puerto 2 TextOut(28,LCD_LINE2,"MOSTRAR"); TextOut(22,LCD_LINE3,"BOLA COLOR1"); TextOut(10,LCD_LINE5,"SENSOR= "); TextOut(30,LCD_LINE8,"aceptar"); until(ButtonPressed(BTNCENTER,true)==1) COLOR1 = SENSOR_2; NumOut(58,LCD_LINE5,COLOR1); Wait(500); // Lectura de la medida de la "bola COLOR2"

TextOut(22,LCD_LINE3,"BOLA COLOR2"); until(ButtonPressed(BTNCENTER,true)==1) COLOR2 = SENSOR_2; NumOut(58,LCD_LINE5,COLOR2); Wait(1000); bajar(); // INICIO DE LA OPERACIÓN DEL BRAZO ClearScreen(); POS_MEDIA = (LIM_IZQ+LIM_DER)/2; TextOut(24,LCD_LINE1,"B R A Z O"); TextOut(6,LCD_LINE3,"M E C A N I C O"); TextOut(0,LCD_LINE5,"B. COLOR1: centro"); TextOut(0,LCD_LINE6,"B. COLOR2: derecha"); TextOut(30,LCD_LINE8,"iniciar"); naranja(); Wait(1000); TextOut(30,LCD_LINE8," "); while(true) Wait(1500);

// La bola COLOR2 será identificada como tal si la medida está entre COLOR1-2 // y COLOR1+2 y para la bola COLOR2 entre COLOR2-2 y COLOR2+2. if(SENSOR_2 > COLOR1-2 && SENSOR_2 < COLOR1+2)AUX = 1; if(SENSOR_2 > COLOR2-2 && SENSOR_2 < COLOR2+2)AUX = 2; if(AUX!=0) garra(-100); // cierra la garra subir(); // sube el brazo if(AUX==1) // avanza a la posición final avanzar(POS_MEDIA); else avanzar(LIM_DER); bajar(); // baja el brazo Wait(500); garra(100); // abre la garra (abandona la bola) Wait(1500); subir(); // sube el brazo Wait(500); retornar(); // retorna a la posición inicial Wait(500); bajar(); AUX = 0;

Page 142: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

129

3.4.4 VEHÍCULO CONTROLADO MEDIANTE UN ALGORITMO PID[22]

El objetivo del proyecto es el de programar el ladrillo NXT de tal manera que el

automóvil mantenga una posición relativa a un objeto determinado en un valor

constante y se lo puede conseguir a través de la implementación de un

controlador tipo PID (proporcional, integral y derivativo).

El error e(t) que se genera al comparar las señales de entrada u(t) (set point o

referencia) y salida y(t) es el que se busca corregir y esto se logra, en mayor o

menor manera, mediante una adecuada sintonización o ajuste de los parámetros

que intervienen en el algoritmo de control.

Figura 3.45. Diagrama de bloques de un controlador PID

La suma de las tres acciones -proporcional, integral y derivativa- es usada para

ajustar al proceso a través de un elemento de control. Cada una de estas tres

acciones reacciona de forma diferente ante una señal de error:

- Acción proporcional: este término es proporcional al error existente y de él

depende el tiempo en que el sistema retorna a su nivel de referencia.

Page 143: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

130

- Acción integral: esta acción produce una salida que depende de la suma de

los errores anteriores. Esta acción sirve para acelerar la corrección

proporcional, pero puede causar un exceso en la salida sobre el valor

referencial.

- Acción derivativa: el valor de la acción derivativa está determinado por la

variación del error en el tiempo. Esta acción permite una corrección ante

cambios súbitos de la señal de error y, por tanto, permite compensar en

parte el efecto de la acción integral. Esta parte permite también predecir y

por tanto adelantarse a una corrección del error.

Un aspecto muy importante de un controlador PID corresponde a los valores de

las ganancias de cada acción. La modificación de estas constantes puede alterar

drásticamente el comportamiento del sistema y es por esto que el proceso de

sintonización del controlador es, en la práctica, especialmente complicado.

El programa ha sido desarrollado en NXC, ya que este lenguaje es más

conveniente en el momento en que tenemos que realizar numerosas operaciones

matemáticas, frente a NXT-G por supuesto.

En el caso de este proyecto, se dejará abierta la posibilidad de modificar los

parámetros o constantes del controlador PID, de tal manera que el usuario pueda

probar distintas opciones, hasta dar con la más conveniente a sus intereses.

En la tarea principal del programa (task main( )) se inicializa al sensor de

ultrasonido de tal manera que se puedan captar las mediciones de distancia que

éste produce. Al correr el programa, se pregunta inicialmente por los valores de

las constantes proporcional, integral y derivativa. Los valores por defecto son 30,

0 y 0 respectivamente. El usuario tiene la posibilidad de aumentar o disminuir

esos valores al nivel deseado. Cabe indicar que, ya que el NXT no tiene

internamente la posibilidad de trabajar con números decimales, los valores

ingresados deberán ser previamente multiplicados por 10 (factor de

escalamiento). El programa deberá eliminar del resultado final el efecto del

escalamiento de estas tres constantes. De la misma forma, el programa permite el

Page 144: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

131

ingreso de un valor de “tolerancia”, constante que le posibilita al controlador no

actuar si la distancia a la que se encuentra del objeto está en un margen de valor

referencial (setPoint) ± tolerancia.

Una vez que han sido ingresados estos valores y se ha indicado al NXT que inicie

el algoritmo PID, éste va a realizar una medición inicial de la distancia al objeto y

ésta es la que deberá mantenerse constante.

En la pantalla del NXT podrán verse los valores de las mediciones del valor

referencial a mantenerse y del resultado final provocado por la acción del

controlador PID. Se ha incluido adicionalmente la posibilidad de observar

gráficamente el desarrollo del proceso.

La acción PID se efectúa, a nivel de programación, dentro de un lazo infinito, que

se repite cada 190ms aproximadamente. Cada vez que el lazo mencionado se

ejecuta, se hace una medición de la distancia y se calcula el error de posición.

El término proporcional se calcula multiplicando el error por la constante

correspondiente (P=Kp10):

pOut = error P

Para calcular el término integral se realiza una suma de los errores previos

(sumError) -hasta alcanzar el valor referencial deseado- y se la multiplica por la

constante integral ingresada (I=Ki10); una vez alcanzado el valor referencial se

resetea el valor de la suma para poder inicial una nueva corrección:

iOut = sumError I

El término derivativo se calcula con la diferencia entre el error actual (error) y el

del lazo anterior (prevError), la misma que es multiplicada por la constante

correspondiente (D=Kd10):

Page 145: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

132

dOut = (error-prevError) D

En el programa desarrollado se suman los valores de las tres acciones y se divide

el resultado entre la constante de escalamiento usada (10 en este caso).

totalOut = (pOut+iOut+dOut):10

El resultado producido representará la potencia con la cual funciona el motor. Este

valor podría ser positivo (avance hacia delante) o negativo (avance hacia atrás).

Existe una subrutina que ubica el valor de salida entre 20% y 100%, esto es

porque una potencia menor al 20% no es suficiente para que el automóvil se

mueva y un valor sobre el 100% no es posible, pues no es entendido por el NXT.

Los motores se encenderán con el valor de potencia indicada siempre y cuando el

error supere el valor dado como tolerancia para el sistema.

3.4.4.1 Diagrama de flujo del programa del controlador PID

A continuación se presenta un diagrama de flujo del programa desarrollado en

NXC. Como se observa en el diagrama, la primera parte del programa permite

ingresar los valores de los parámetros del controlador PID y a continuación se

ingresa directamente en el código que permite la ejecución del algoritmo de

control.

La ejecución del programa puede ser suspendida únicamente mediante la presión

del botón gris oscuro del ladrillo NXT.

Page 146: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

133

INICIALIZACIÓN DE VARIABLESINICIALIZACIÓN DE SENSORES

INGRESO DE PARÁMETROS: CONSTANTES P, I, D Y TOLERANCIA

INICIO

INICIO DEL CONTROL PID

MEDICIÓN DEL VALOR REFERENCIAL A TRAVÉS DEL SENSOR DE ULTRASONIDO

MEDICIÓN DE LA DISTANCIACÁLCULO DEL ERROR (e)

¿ES e>tolerancia?

CÁLCULO DE LAS ACCIONES P, I, DNORMALIZACIÓN DE LA SALIDA

ACCIONAMIENTO DE LOS MOTORES

RESETEO DEL ERROR ACUMULADO

NO

PRESENTACIÓN DE VALORES

REFERENCIAL Y MEDIDO

Figura 3.46. Diagrama de flujo del programa del controlador PID

3.4.4.2 Código NXC del programa del controlador PID:

El programa desarrollado ofrece la posibilidad de mostrar gráficamente en la

pantalla del ladrillo NXT la evolución del controlador. El valor referencial o set

point se ve como una línea horizontal que cruza por el medio de la pantalla del

ladrillo y luego se marcan puntos a una distancia de la línea que es proporcional

al error medido.

Page 147: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

134

/* Programa PID Para que la ejecución correcta de este programa sea posible, es necesario que en la memoria interna del NXT se encuentren almacenados los archivos gráficos accept 03.ric, backward.ric y forward.ric */

string nombre = "PROPORCIONAL"; // Variables globales para solicitar el ingreso string simbolo = "P ="; // de datos al controlador

/* Código que corrige (normaliza) el valor de la potencia de salida de tal manera que su valor se encuentre entre el 20% y el 100% (positivos). Se usa como mínimo el 20% ya que potencias menores no permitirían el movimiento del dispositivo. */

int potNormal(int potencia) int min = 20; // variable que almacena el mínimo valor de la potencia if(abs(potencia)>100) return 100; else if(abs(potencia)<min) return min; else return abs(potencia);

/* Función que enciende los motores A y C. El valor del error determina si los motores se mueven hacia adelante o hacia atrás. */ int move(int errorActual, int pot) if(errorActual<0) // Activa sincronizadamente los motores A y C en dirección reversa. OnRevReg(OUT_AC, potNormal(pot), OUT_REGMODE_SYNC); else // Activa los motores A y C en dirección hacia adelante. OnFwdReg(OUT_AC, potNormal(pot), OUT_REGMODE_SYNC);

// Función que permite ingresar los parámetros del controlador

void ingreso(int &bb) // bb es el nombre de la variable a ingresar ClearScreen(); TextOut(0,LCD_LINE1,"Constante"); TextOut(0,LCD_LINE2,nombre); TextOut(30,LCD_LINE4,simbolo); NumOut(60,LCD_LINE4,bb); TextOut(29,LCD_LINE8,"Aceptar"); GraphicOut(10,10,"backward.ric"); GraphicOut(75,10,"forward.ric"); Wait(500);

until(ButtonPressed(BTNCENTER,true)==1) while(ButtonPressed(BTNLEFT,false)==1 || ButtonPressed(BTNRIGHT,true)==1) if (ButtonPressed(BTNLEFT,true)==1) if (bb > 0) bb --; TextOut(60,LCD_LINE4," ");// Borra de la pantalla el valor anterior NumOut(60,LCD_LINE4,bb); Wait(250); else if (bb < 100) bb ++; TextOut(60,LCD_LINE4," ");// Borra de la pantalla el valor anterior NumOut(60,LCD_LINE4,bb); Wait(250);

Page 148: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

135

NumOut(60,LCD_LINE4,bb); Wait(500);

task main() // INICIO DE LA TAREA PRINCIPAL SetSensorLowspeed(IN_4); // Sensor de ultrasonido en el puerto 4

// Valores predefinidos

int tolerancia = 3; // Toleracia permitida para el proceso int P = 30; // Constante de ganancia proporcional int I = 0; // Constante integral int D = 0; // Constante derivativa

/* Código que permite el ingreso de las constantes del lazo PID. Mediante la flecha a la izquierda se disminuye el valor y con la flecha a la derecha se lo incrementa. La presión del botón central hace que quede asignado el valor actual al parámetro en cuestión.*/

ClearScreen(); TextOut(5,LCD_LINE1,"CONTROLADOR PID"); LineOut(5,54,93,54); TextOut(0,LCD_LINE4,"Ingrese las"); TextOut(0,LCD_LINE5,"constantes P,I,D"); TextOut(0,LCD_LINE6,"(por 10)"); TextOut(29, LCD_LINE8, "Iniciar", false);

until(ButtonPressed(BTN4,true));// Espera a que se presione el botón naranja

ingreso (P); // Ingreso de la constante proporcional

nombre = "INTEGRAL"; simbolo = "I ="; ingreso (I); // Ingreso de la constante integral

nombre = "DERIVATIVA"; simbolo = "D ="; ingreso (D); // Ingreso de la constante derivativa

nombre = "TOLERANCIA"; simbolo = "T ="; ingreso (tolerancia); // Ingreso de la constante tolerancia

// Pantalla que muestra los valores de los parámetros de trabajo

ClearScreen(); TextOut(0,LCD_LINE1,"Los valores son:"); TextOut(36,LCD_LINE3,"P ="); NumOut(60,LCD_LINE3,P); TextOut(36,LCD_LINE4,"I ="); NumOut(60,LCD_LINE4,I); TextOut(36,LCD_LINE5,"D ="); NumOut(60,LCD_LINE5,D); TextOut(36,LCD_LINE6,"T ="); NumOut(60,LCD_LINE6,tolerancia); TextOut(23, LCD_LINE8, "Continuar", false); until(ButtonPressed(BTN4,true));// Espera a que se presione el botón naranja Wait(500);

int scale = 10; // Factor de escalamiento por la ganancia de las constantes // debido a que no se pueden ingresar valores decimales int loopTime = 150;// Periodo del lazo de control (en ms) int setPoint = 0;// Inicializa la variable que indica la distancia a mantener.

Page 149: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

136

// Mensaje de inicio

TextOut(0,LCD_LINE1,"Pulse el boton", true); // true: borra pantalla anterior TextOut(0,LCD_LINE2,"naranja para", false); TextOut(0,LCD_LINE3,"para iniciar!", false); TextOut(29,LCD_LINE8,"Iniciar", false);

until(ButtonPressed(BTN4,true));// Espera a que se presione el botón naranja

setPoint = SensorUS(IN_4); // Lectura de la distancia a mantener

int distancia = setPoint;

LineOut(0,32,100,32,true); // Muestra en pantalla el nivel de referencia, NumOut(0,LCD_LINE8,setPoint); // el valor de referencia y la medida actual NumOut(80,LCD_LINE8,distancia); // de la distancia

// Variables a ser usadas en el lazo de control

int error=0; // Error actual en la posición int prevError=0; // Error del lazo anterior int sumError=0; // Suma de errores usada en el término integral

int pOut=0; // Potencia de salida para los términos proporcional, int iOut=0; // integral y int dOut=0; // derivativo

int totalOut=0; // Suma de los tres términos individuales int contador=0; // variable auxiliar para generar el gráfico (eje X) int altura=0; // variable auxiliar para generar el gráfico (eje Y)

// Código que realiza el cálculo de la potencia para conseguir una corrección // en la posición final del automóvil.

while(true) // INICIO DEL ALGORITMO DE CONTROL prevError = error; // Almacena el error previo (lazo anterior) distancia = SensorUS(IN_4); // Lee la distancia a través del sensor de US

error = setPoint-distancia; // Calcula el error actual

if (contador == 101) // Generación del gráfico en pantalla. LineOut(0,32,100,32,true); // La separación horizontal entre dos contador = 0; // puntos es mayor que 150ms. NumOut(0,LCD_LINE8,setPoint); else altura = 32-(32*error/setPoint); PointOut(contador,altura,false); contador += 1; TextOut(80,LCD_LINE8," "); NumOut(80,LCD_LINE8,distancia);

pOut = error*P; // Genera la salida proporcional sumError += error; // Añade el error actual a la suma iOut = sumError*I; // Calcula la salida integral dOut = (error-prevError)*D; // Calcula la salida derivativa /* Suma los tres términos juntos y divide el total entre el factor de escalamiento necesario por la falta de números flotantes. El total puede ser mayor que el 100% y/o negativo.*/

totalOut = (pOut+iOut+dOut)/scale;

Page 150: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

137

if(abs(error)>tolerancia) // Chequea si la posición actual está fuera // del margen de tolerancia move(error, totalOut); // Enciende los motores else sumError=0; // Resetea la suma cuando se ha conseguido el // resultado deseado

Wait(loopTime); // Da un tiempo para el movimiento (150ms) Float(OUT_AC); // Detiene los motores, pero no los frena de un golpe.

3.4.5 SEGUIDOR DE LÍNEA[32]

Se trata de desarrollar un programa que permita que un vehículo dotado de un

sensor de luz pueda seguir la trayectoria marcada a través de una línea de un

color distinto al del piso en el que se encuentra. El algoritmo aplicado hace uso de

una corrección de la posición mediante cálculos de tipo proporcional, integral y

derivativo (PID). Vale la pena indicar que un controlador PID puede ser usado en

un sinnúmero de aplicaciones de control: máquinas, vehículos, robots, cohetes,

etc.

El vehículo está dotado de un sensor de luz disponible en el kit 8527, por lo que

son sus medidas las que permitirán al robot reconocer en qué lugar se encuentra.

Un seguidor de línea puede contener más de un sensor de luz ya que, en

términos generales, mientras más sensores existan, mejor será el seguimiento

que se hace sobre la línea. Al contar únicamente con un sensor, se pierde la

posibilidad de un recorrido más rápido sobre la línea.

Para el seguidor de línea es importante definir los valores de iluminación con los

que va a operar. Por ello es necesario correr una secuencia de calibración, en la

que el robot reconoce los valores mínimo (min) y máximo (max) que van a ser

medidos por el sensor de luz. Esta secuencia para la consecución de los valores

mencionados se ejecuta en la práctica a través de un barrido automático que

realiza el robot sobre la línea a seguir. Luego se debe calcular el valor referencial

(mid) o set point, que será el promedio de los dos valores anteriores:

mid = (min + max):2

Page 151: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

138

Al iniciar el código del controlador PID, el vehículo se encuentra en movimiento

hacia delante y el algoritmo exige la toma de una medida por parte del sensor de

luz. Esta medida (intensidad) es comparada con el valor referencial (mid) y se

genera un error, valor que permite calcular las salidas proporcional, integral y

derivativa:

error = mid – intensidad

pOut = error P

iOut = sumError I

dOut = (error-prevError) D

correccion = (pOut+iOut+dOut):10

El resultado del controlador es el valor de la variable correccion. Esta variable es

la que deberá ser aplicada a los motores como una potencia para que éstos se

muevan hasta corregir el rumbo del seguidor de línea. Ya que no es posible

operar con aritmética de punto flotante, es necesario que las constantes sean

amplificadas inicialmente (factor de 10), pero este efecto debe ser eliminado al

final; es por esta razón que se divide el resultado de la suma de las salidas

proporcional, integral y derivativa entre 10.

Ya que lo que se desea es que se realicen las curvas necesarias para corregir la

trayectoria del robot, cada uno de los motores podrá funcionar con una potencia

distinta dada por las siguientes expresiones:

Motor A: potencia + correccion

Motor B: potencia – correccion

La variable potencia es un valor ingresado al controlador que representa la

velocidad a la que tendría que ir el seguidor de línea cuando sigue una trayectoria

rectilínea. Mientras mayor es este valor, más rápido se mueve el robot sobre la

línea y mayor es el riesgo de que se salga de ella y pierda su rumbo.

Page 152: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

139

El programa se encuentra dentro de un lazo infinito, por lo que solo se detendrá si

se presiona el botón gris oscuro.

3.4.5.1 Diagrama de flujo del seguidor de línea

A continuación se muestra el diagrama de flujo del programa implementado en

NXC para el seguidor de línea:

Figura 3.47. Diagrama de flujo del programa del seguidor de línea

3.4.5.2 Código NXC del programa del seguidor de línea

/* Programa SL_ControlPID Se trata de un programa que permite a un vehículo previamente diseñado y que cuenta con un sensor de luz, "seguir" una línea de color marcada en el piso.

Para ello hace uso de un algoritmo tipo PID.*/

int mid=0; // Variable que determina la medida media a mantener int min=1000; // Mínimo valor medido por el sensor de luz int max=0; // Máximo valor medido por el sensor de luz int scale=10; // Factor de escalamiento de las constantes P, I y D int potencia=50; // Potencia media que actúa sobre los motores

Page 153: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

140

int intensidad=0; // Intensidad de luz medida en todo momento por el sensor int correccion=0; // Valor calculado por el algoritmo de control PID

task main() // INICIO DE LA TAREA PRINCIPAL SetSensorLight(IN_1); // Sensor de luz en el puerto 1 ResetRotationCount(OUT_C); // Sensor de rotación en el puerto C (motor)

OnRev(OUT_C,15); // Se inicia un barrido en el mismo lugar para captar las OnFwd(OUT_B,15); // medidas máxima y mínima por parte del sensor de luz

while (abs(MotorRotationCount(OUT_C))<90) intensidad=SENSOR_1; if (intensidad < min) min = intensidad; // Fijación de la mínima intensidad captada if (intensidad > max) max = intensidad; // Fijación de la máxima intensidad captada Off(OUT_BC); mid = (min+max)/2; // Cálculo del valor medio entre max y min(referencia)

until (intensidad < mid) // Ubicación inicial del vehículo, justo en aquel intensidad = SENSOR_1; // punto en que intensidad = valor medio OnFwd(OUT_C,15); OnRev(OUT_B,15); Off(OUT_BC); PlayTone(440,300); // Ejecución de un sonido que indica el inicio Wait(1000); // Espera de un segundo

// Definición de variables para el controlador

int error=0; // Error actual en la intensidad int prevError=0; // Error del lazo anterior int sumError=0; // Suma de errores usada en el término integral int P=50; // Constante proporcional int D=15; // Constante derivativa int I=0; // Constante integral

int pOut=0; // Potencia de salida para los términos proporcional, int iOut=0; // integral y int dOut=0; // derivativo

// Tarea principal que calcula la corrección

while(true) prevError = error; // Almacena el error previo (lazo anterior) intensidad = SENSOR_1; // Lee la distancia a través del sensor de US

error = mid-intensidad; // Calcula el error actual pOut = error*P; // Genera la salida proporcional sumError += error; // Añade el error actual a la suma iOut = sumError*I; // Calcula la salida integral dOut = (error-prevError)*D; // Calcula la salida derivativa

correccion = (pOut+iOut+dOut)/scale;// Suma los tres términos juntos y // divide el total entre el valor del

// factor de escalamiento utilizado. if (correccion>50) correccion=50; // Valores extremos de la corrección if (correccion<-50)correccion=-50; // Valores extremos de la corrección

OnRev(OUT_C,potencia-correccion); // Aplicación de la corrección a la OnRev(OUT_B,potencia+correccion); // potencia de salida de los motores

Page 154: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

141

Wait(50);

3.4.6 APLICACIONES REMOTAS

En esta aplicación se desean probar las características de la comunicación

bluetooth entre dos ladrillos NXT diferentes. Uno de ellos tendrá un dial que

permitirá definir la velocidad con la que se desplaza el auto controlado, así como

también se podrá definir el sentido de movimiento deseado a través de una

combinación adecuada de presiones en los botones de control.

Se han desarrollado dos programas: el primero que será para el controlador y el

segundo para el auto controlado.

3.4.6.1 Programa del controlador (mando)

El programa desarrollado en NXT-G se encuentra dentro de un lazo que se

ejecutará continuamente hasta que el programa se detenga mediante la presión

del botón gris oscuro.

En la primera parte del programa se determina qué botón ha sido presionado,

pues según ello el auto se moverá en determinada dirección:

Botón presionado AcciónBotón izquierdo El auto gira a la izquierdaBotón naranja El auto se detiene completamente y reproduce un

tono musicalBotón derecho El auto gira a la derecha Ningún botón El auto se mueve en línea rectaTabla 3.13. Acciones a tomar por el auto controlado en función del botón presionado en el control

La velocidad estará determinada por la velocidad de giro del dial, estando su valor

entre los límites -100 (máxima potencia hacia atrás) y +100 (máxima potencia

hacia delante).

Las variables que se utilizan en el programa son las siguientes:

Page 155: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

142

Variable Tipo ComentarioBotPres Número Variable auxiliar que almacena temporalmente el

valor que corresponde al botón presionado.Boton Número Almacena un valor de acuerdo al botón presionado. Velocidad Número Almacena la velocidad deseada (-100 ≤ v ≤ +100)

Tabla 3.14. Variables usadas en el programa del controlador

Botón presionado Valor de la variable “Boton”Botón izquierdo 1 Botón naranja 2Botón derecho 3 Ningún botón 0

Tabla 3.15. Valores de la variable “Boton” en función del botón presionado en el control

La velocidad indicada por giro del dial se podrá visualizar en la pantalla del NXT

en forma de una barra horizontal que tiene su inicio en el centro horizontal de la

misma y una longitud proporcional a su valor. También se podrá ver el valor

correspondiente en números.

Ya que el ancho de la pantalla es de 100 pixeles, la longitud en pixeles de la línea

que se muestra y que corresponde a la velocidad es:

2_

velocidadbarraLongitud =

y su posición horizontal va desde el píxel 50 hasta el píxel que se puede calcular

mediante la fórmula:

250_

velocidadfinalpixel += .

3.4.6.1.1 Diagrama de flujo del mando a distancia

El diagrama de flujo que corresponde a este programa desarrollado en NXT-G se

muestra a continuación:

Page 156: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

143

Figura 3.48. Diagrama de flujo del programa del controlador (mando remoto)

Page 157: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

14

4

3.4.

6.1.

2 C

ódig

o N

XT

-G d

el c

ontr

ola

dor

(mando)

Fig

ura

3.4

9. P

rogr

ama

NX

T-G

del

con

trol

ador

rem

oto

(man

do)

Page 158: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

145

3.4.6.2 Programa del vehículo controlado

El auto a ser controlado debe ser programado de tal manera que pueda recibir los

comandos que vienen desde el control o mando remoto, luego debe entenderlos y

ejecutarlos.

El programa del auto controlado consta de tres tareas que deben ejecutarse

simultáneamente:

- Tarea 1: procesa los comandos que vienen desde el controlador y los

ejecuta.

- Tarea 2: recibe vía bluetooth la información relacionada con el botón

presionado por el controlador y por tanto del tipo de movimiento a realizar.

- Tarea 3: recibe vía bluetooth la información relacionada con la velocidad a

la que debe moverse el auto.

Las variables que se utilizan en el programa son las siguientes:

Variable Tipo ComentarioBoton Número Almacena un valor de acuerdo al botón presionado.Velocidad Número Almacena la velocidad deseada (-100 ≤ v ≤ +100) Potencia Número Almacena la potencia que se imprimirá a los

motores y se encuentra entre 0 y 100. Direccion Lógica Almacena un valor lógico (true o false) que

determina el sentido de giro de los motores.

Tabla 3.16. Variables usadas en el programa del auto controlado

3.4.6.2.1 Diagrama de flujo del programa del vehículo controlado

El diagrama de flujo del programa desarrollado en NXT-G del vehículo a ser

controlado remotamente se muestra a continuación:

Page 159: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

146

Figura 3.50. Diagrama de flujo del programa del auto controlado

Page 160: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

14

7

3.4.

6.2.

2 C

ódig

o N

XT

-G d

el v

ehíc

ulo

contr

ola

do

Fig

ura

3.5

1. P

rogr

ama

NX

T-G

del

aut

o co

ntro

lado

rem

otam

ente

Page 161: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

148

En la gráfica anterior, arriba a la derecha, se muestra el código de una estructura

“switch”, donde el código a ejecutarse depende del valor de la variable de entrada.

Únicamente se puede ver la parte relacionada con el valor de la variable “Boton”

igual a 0. A continuación se muestran las otras partes de código, para los otros

valores posibles de la variable “Boton”:

“Boton” = 1

Figura 3.52. Código correspondiente a “Boton”=1

“Boton” = 2

Figura 3.53. Código correspondiente a “Boton”=2

“Boton” = 3

Figura 3.54. Código correspondiente a “Boton”=3

Page 162: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

149

CAPÍTULO 4

PRUEBAS Y RESULTADOS

En este capítulo se presentan algunos resultados de las pruebas realizadas con

los diferentes prototipos diseñados, construidos y programados. También se hace

una breve descripción de los cambios que fueron necesarios hacer durante la

construcción y/o programación de algunos de los proyectos, para que cumplan

con las funciones que se les asignaron inicialmente.

El tema relacionado con el nivel de carga de las baterías resultó extremadamente

importante en cada uno de los prototipos probados, ya que en algunos de los

casos su comportamiento varió mucho cuando las pilas se encuentran al borde de

cumplir su tiempo de vida útil.

4.1 MEDIDORES DE VARIABLES MÚLTIPLES

4.1.1 MEDIDOR DE LONGITUDES

En la parte de la programación ya se hizo una reflexión acerca del error en el que

se está incurriendo en este prototipo a causa de la inexistencia de aritmética de

punto flotante en el lenguaje de programación utilizado.

Otra posible fuente de error existente en el proceso de medir longitudes es el

hecho de que la rueda “resbale” sobre la superficie a medir, provocando que el

sensor de rotación no gire adecuadamente y por tanto se produzca una lectura

errónea.

Como es habitual en los casos en que se debe medir algo, el operador también es

una fuente de error. Este error se evidenciará en el momento en que el operador

no visualice correctamente el punto en que la rueda debe iniciar su recorrido o

cuando ha llegado al extremo final del objeto a medir.

Page 163: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

150

En la tabla siguiente se exponen algunos resultados de longitudes medidas con

las diferentes ruedas y se las compara con las realizadas con un elemento de

medición de longitudes común y corriente (flexómetro).

Rueda Valor “real” Valor medido Error relativo43,2x22 115cm 109cm -5,22% 56x26 115cm 117cm 1,74%81,6x15 115cm 113cm -1,74%

43,2x22 200cm 198cm -1,00%56x26 200cm 207cm 3,50%81,6x15 200cm 197cm -1,50%43,2x22 37,5cm 37cm -1,33%

56x26 37,5cm 38cm 1,33% 81,6x15 37,5cm 36cm -4,00%43,2x22 2,6cm 2cm -23,08%56x26 2,6cm 3cm 15,38%81,6x15 2,6cm 2cm -23,08%

Tabla 4.1. Comparación entre valores “reales” y medidos haciendo uso de diferentes tipos de ruedas en el medidor de longitudes

Conclusión: por los resultados que se pueden observar, la rueda de dimensiones

56x26 (mm) es la que, en términos relativos, mejores resultados ofrece.

Adicionalmente, dado que solo se pueden tener valores enteros en centímetros

para las mediciones realizadas, el error relativo será mucho mayor cuando se

trata de medir longitudes pequeñas; para longitudes consideradas grandes y en

dependencia de la aplicación desarrollada, el medidor de longitudes ofrece

resultados aceptables.

El nivel de carga de las baterías parece no afectar significativamente al

funcionamiento de este prototipo, pues el sensor de rotación interno en los

motores NXT entrega buenas mediciones aún estando al borde de la vida útil de

las baterías.

4.1.2 CALCULADORA DE ÁREAS Y VOLÚMENES

El caso de una calculadora de áreas y volúmenes no es muy diferente al

explicado anteriormente del medidor de longitudes, ya que los resultados

entregados dependen de cada una de las longitudes medidas.

Page 164: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

151

Las causas de error son las mismas explicadas y ahora se añade el hecho de que

el error total resulta de multiplicar los errores anteriores, ya que el área consiste

en multiplicar dos de las medidas realizadas y para el volumen se debe operar

con tres de ellas. A continuación se presentan algunos resultados.

Valores de áreas:

Rueda Valor “real” Valor medido Error

43,2x22 115cm

109cm

-7,11%

56x26 115cm

116cm

2,38%

81,6x15 115cm

113cm

-3,21%

43,2x22 12cm

11cm

-16,67%

56x26 12cm

12cm

-1,52%

81,6x15 12cm

12cm

-1,52%

Tabla 4.2. Comparación entre valores “reales” y medidos de diferentes áreas, haciendo uso de distintos tipos de ruedas en la calculadora de áreas y volúmenes

Valores de volúmenes:

Rueda Valor “real” Valor medido Error

43,2x22 115cm

109cm

-25,69%

56x26 115cm

116cm

2,38%

81,6x15 115cm

113cm

-3,21%

43,2x22 12cm

11cm

-21,62%

Page 165: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

152

Rueda Valor “real” Valor medido Error

56x26 12cm

12cm

-7,37%

81,6x15 12cm

12cm

-7,37%

Tabla 4.3. Comparación entre valores “reales” y medidos de diferentes volúmenes, haciendo uso de distintos tipos de ruedas en la calculadora de áreas y volúmenes

Conclusión: ya que el medidor de longitudes es la base de la calculadora de

áreas y volúmenes, las observaciones realizadas anteriormente son válidas

también para este proyecto. Cabe mencionar nuevamente que los márgenes de

error actuales son de orden mayor, ya que ahora estos se ven multiplicados entre

sí. Se mantiene el hecho de que la rueda de 56x26 (mm) es la que mejores

resultados finales ofrece.

El prototipo funciona adecuadamente aún cuando las baterías se encuentran

cerca de finalizar su tiempo de vida útil, ya que el sensor de rotación entrega

medidas aceptables.

4.1.3 MEDIDOR DE SONIDO

No se cuenta exactamente con un medidor de sonido; lo que hace el prototipo

diseñando es entregar una medida relativa de la intensidad de sonido existente.

Sin embargo, es interesante realizar pruebas por ejemplo con diferentes fonemas,

cuya pronunciación exige variar la intensidad del sonido y verificar en la pantalla

cómo se produce esta variación.

Se presenta a continuación algunas imágenes de las pruebas realizadas.

Page 166: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

153

Fonema Imagen

hola

corpúsculo

robot

Tabla 4.4. Imágenes obtenidas en la pantalla del NXT al hacer actuar al medidor de sonido

Page 167: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

154

En las imágenes se puede también observar la señal que produce el ruido de

fondo.

Conclusión: los resultados obtenidos demuestran que la pronunciación de

distintos fonemas genera diferentes resultados, los mismos que podrían ser

posteriormente utilizados para su mejor análisis, por ejemplo si se trata de

comparar niveles sonoros en diferentes ambientes y bajo condiciones similares en

el momento de hacer las mediciones. No se puede olvidar que solo se tiene una

señal de amplitudes, de intensidad sonora. De todas maneras se muestra otra

posibilidad de ocupar el NXT y, entre ellas, las características gráficas de su

pantalla de LCD.

En este proyecto, el nivel de carga de las baterías sí tiene un efecto sobre los

resultados finales. Se observó que la intensidad registrada por el sensor de

sonido es menor cuando las baterías se encuentran cerca de cumplir su tiempo

de vida útil.

4.2 ESCORPIÓN

Este prototipo tiene gran complejidad en el aspecto mecánico. En la parte de la

programación se ha intentado darle una cierta versatilidad a su funcionamiento,

haciendo que el usuario final pueda definir, mediante el uso de las teclas

existentes, la forma de operación deseada.

Se han detectado algunos problemas en la operación de este prototipo. Uno de

ellos tiene que ver con las mediciones realizadas por el sensor de ultrasonido.

Debido a su principio de funcionamiento, este sensor depende de la superficie del

cuerpo que se encuentra frente a él para poder entregar mediciones que puedan

considerarse válidas. Así, una superficie rugosa, por ejemplo, representa una

dificultad para realizar mediciones adecuadas, ya que el reflejo de la señal de

ultrasonido no siempre está dirigido de tal forma que pueda ser captada por el

sensor.

Page 168: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

155

Otro problema representó la ubicación del sensor de sonido. Cuando se

realizaban las pruebas sobre una superficie suave (una alfombra por ejemplo)

este sensor actuaba sin mayores dificultades. Sin embargo, al realizar las mismas

pruebas sobre una superficie “dura”, el ruido generado por el contacto de las

patas con el piso generaba una señal de ruido tal que activaba la parte de

software destinada a otras circunstancias. Por tal razón se colocó a este sensor

en el extremo de un brazo que le permita “alejarse” un poco de las fuentes de

ruido propias del equipo diseñado.

Conclusión: los resultados obtenidos fueron satisfactorios en la medida que se

consiguió una operación del prototipo similar a la esperada. Las fuentes de error

anteriormente mencionadas tienen un efecto negativo en el funcionamiento del

equipo.

El nivel de carga de las baterías es también determinante para un correcto

funcionamiento del sensor de ultrasonido, pues parece que éste fue el más

afectado al momento de realizar mediciones con baterías descargadas.

Obviamente, los motores se ven afectados notablemente por un nivel bajo de

carga de las baterías.

4.3 BRAZO MECÁNICO

El prototipo del brazo mecánico presenta complicaciones principalmente de tipo

mecánico, algunas de cuales se resolvieron mediante software.

El prototipo diseñado permite definir externamente las posiciones extremas que

va a ocupar el brazo físicamente. Además cuenta con un único sensor de fin de

carrera (sensor de contacto) en uno de sus extremos, de tal manera que se pueda

evitar el rebasarlo. Aunque por su estructura mecánica este brazo podría girar

360° sobre su eje, el mayor problema existente es q ue eso provocaría un enredo

de los cables que van a los sensores y a los motores, con la consecuente

sobretensión mecánica sobre ellos, que podría inclusive dañarlos. Sería óptimo

Page 169: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

156

colocar otro sensor de fin de carrera en el otro extremo, pero lamentablemente

cada kit de los empleados cuenta únicamente con uno de estos elementos.

Mecánicamente se ha colocado un sistema reductor de velocidad en el complejo

que permite el movimiento horizontal del brazo, pero un sistema similar no fue

posible colocar en el bloque que permite el movimiento vertical. Esto provoca que

la subida y bajada del brazo sea un tanto brusca. Para hacerla más suave se

probó usando velocidades (potencias) menores, pero también hay que tomar en

cuenta que una velocidad (potencia) muy baja, no permitirá vencer la inercia del

brazo, sobretodo en el momento de tener que subirlo. Para facilitar el movimiento

horizontal, éste se hace únicamente con el brazo en la posición superior, ya que

allí la inercia a vencer es menor.

Una dificultad encontrada en el brazo se tiene en el momento de reconocer los

colores de los elementos (bolas) que van a ser desplazados. Ya que no contamos

realmente con un sensor de color sino de luz, la iluminación ambiental afecta

notoriamente en el momento de “reconocer” los colores.

El nivel de carga de las baterías usadas afecta notablemente a este prototipo,

pues le impiden su funcionamiento adecuado, principalmente en el momento de

tener que subir el brazo y del reconocimiento del color por parte del sensor de luz.

Conclusión: el funcionamiento del brazo mecánico diseñado puede considerarse

como adecuado. Se podría pensar en un nuevo diseño mecánico que le permita

una operación mucho más suave en su operación, sobretodo en el eje vertical.

4.4 VEHÍCULO CONTROLADO MEDIANTE ALGORITMO PID

El programa desarrollado permite definir manualmente los valores de los

parámetros que intervienen en el algoritmo controlador tipo PID. De la

sintonización adecuada de estos valores depende el éxito del controlador; sin

embargo, existen factores adicionales que son causa de error en el proceso,

como por ejemplo el hecho de no contar con aritmética de punto flotante para la

Page 170: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

157

realización de los cálculos, lo que obliga a amplificar los valores de las constantes

del controlador, o la imprecisión de las medidas realizadas por el sensor de

ultrasonido en dependencia del tipo de superficie en el que refleja su señal.

El programa desarrollado permite averiguar cuál es el efecto de cada una de las

constantes que intervienen en el controlador PID:

Control tipo P: las constantes I y D son iguales a cero. En este caso, al mover el

objeto que sirve como referencia para el vehículo, este último intenta corregir su

posición para regresar al valor inicial de distancia (referencia). Finalmente lo

consigue, pero el tiempo total que le toma es grande, tanto en el caso de errores

grandes como cuando se trata de errores pequeños.

Para la sintonización de un controlador tipo P se recomienda iniciar con un cierto

valor de la constante P y modificarlo en función de la respuesta obtenida hasta

que esta sea más o menos satisfactoria. El tiempo de respuesta depende

directamente del valor de la constante: si se quiere una respuesta más rápida

habría que aumentar el valor de P y viceversa. Un valor muy grande de P puede

llevar a desestabilizar al sistema.

Control tipo PI: la constante D es igual a cero. Al mover el objeto que sirve como

referencia para el vehículo, este intenta corregir su posición para regresar al valor

inicial (referencia) y la inserción de la constante I acelera este proceso. El término

proporcional intenta corregir el error, mientras que el término integral crece con el

error y suma su efecto al primero. Mientras más tiempo persiste el error, mayor es

el valor con el que actúa el término integral, acelerando de esta forma el proceso

de corrección. Uno de los problemas de este tipo de control es que un aumento

grande del error puede llevar a desestabilizar al sistema sin posibilidad de retorno

o asimismo puede generar grandes oscilaciones en él.

La sintonización del término integral debe permitir mantenernos en un nivel

intermedio entre la aceleración deseada para la corrección y el valor máximo

aceptable para una oscilación del sistema.

Page 171: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

158

Control tipo PID: ahora aparecen las tres constantes, añadiéndose así el término

derivativo. El término integral produce una aceleración de la corrección alrededor

del nivel de referencia deseado, mientras que el término derivativo actúa frente a

un cambio brusco en el error haciendo que la señal total de salida se reduzca. De

esta forma se pretende llegar más rápido a la señal de referencia.

Normalmente, un incremento en la constante derivativa exige otro en la constante

integral. La sintonización debe realizarse con cuidado, de tal manera que no se

caiga en un sistema inestable.

Una visualización del proceso de corrección de la posición final mediante el

algoritmo PID, podría permitir escoger adecuadamente los valores requeridos

para un mejor funcionamiento del prototipo.

A continuación se presentan algunos resultados de la operación de este prototipo

con diferentes valores de las constantes P, I y D, así como de la tolerancia

ingresada.

En todos los casos se realizó la siguiente experiencia:

- Ubicación inicial: valor referencial = 100cm

- Acercamiento del objeto a una distancia d = 50cm

- Alejamiento del objeto a una distancia d = 150cm

Se operó sobre un piso de cerámica, el mismo que ofrece buena adherencia con

las ruedas utilizadas.

Page 172: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

159

Constantes(amplificadas por 10)

Respuesta(tiempo de pantalla = 19s)

Comentarios

P = 50 I = 0 D = 0 Tolerancia = 10

Existe una oscilación grande antes de llegar a un resultado dentro del margen de tolerancia.

P = 50 I = 0 D = 0 Tolerancia = 0

Existe una oscilación grande antes de llegar a un resultado dentro del margen de tolerancia, el mismo que no es cumplido y el vehículo intenta todo el tiempo llegar a él, pero la potencia es muy baja para vencer la inercia.

P = 50 I = 10 D = 0 Tolerancia = 10

La oscilación es menor que la que se veía anteriormente y se llega más rápidamente al punto de referencia, dentro del margen de tolerancia ingresado.

P = 50 I = 10 D = 0 Tolerancia = 0

A diferencia del caso anterior (tolerancia=0), el controlador permite acercarse más fácilmente al nivel de referencia.

Page 173: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

160

Constantes(amplificadas por 10)

Respuesta(tiempo de pantalla = 19s)

Comentarios

P = 50 I = 15 D = 10 Tolerancia = 10

La respuesta esperada, con el margen de tolerancia indicado, se consigue mucho más rápidamente.

P = 50 I = 15 D = 10 Tolerancia = 0

Se llega prácticamente a conseguir el nivel de referencia de forma rápida.

Tabla 4.5. Respuesta del controlador PID con diferentes valores de los parámetros del algoritmo

Conclusión: el éxito de la aplicación de un algoritmo de control PID está, por

supuesto, en su correcta implantación y en una buena sintonización del mismo.

El nivel de carga de las baterías afecta a este prototipo en la medida en que, ante

un valor bajo de su carga, el sensor de ultrasonido no entrega mediciones

aceptables y los motores no funcionan a la potencia deseada.

4.5 SEGUIDOR DE LÍNEA

Para llegar al resultado mostrado se pasó por diferentes pruebas con distintos

tipos de algoritmos, desde los más simples hasta los más elaborados y en cada

uno de ellos se encuentran ventajas y desventajas. Ya que cada kit 8527 cuenta

únicamente con un sensor de luz, se probaron los algoritmos que cumplían con

esta limitación.

Page 174: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

161

Finalmente se llegó a probar la opción de un controlador tipo PID para conseguir

el resultado buscado, el mismo que fue aceptable aunque no por ello perfecto.

Igual que en el caso anterior, parte del éxito de este prototipo depende de la

correcta sintonización del controlador PID. A diferencia del proyecto anterior, no

se ofrece la posibilidad de cambiar los valores de las constantes sino únicamente

a través de la modificación del software. El nivel de iluminación variable del medio

en el que se desenvuelva el prototipo también puede afectar su funcionamiento.

Ya se indicó anteriormente que el dispositivo diseñado no es exactamente un

seguidor de línea, sino un seguidor del borde de la línea, puesto que lo que hace

inicialmente es ejecutar un barrido para determinar valores máximo y mínimo de

intensidad luminosa al recorrer la línea y su alrededor y luego mantiene como

referencia aquel valor que resulta de promediar los anteriores.

Una correcta o incorrecta sintonización del controlador PID hará que el vehículo

tenga un recorrido suave o accidentado respectivamente, sobre el borde de la

línea a seguir.

A continuación presento algunos de los resultados obtenidos en el seguidor de

línea al aplicar un controlador tipo PID. La trayectoria de prueba se muestra en la

siguiente figura:

Figura 4.1. Plantilla para probar el seguidor de línea

Page 175: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

162

Constantes Respuesta Comentarios

P = 30 I = 0 D = 0

El vehículo sigue la línea negra, sobre su borde, mayoritariamente sobre la región clara de la lámina.

P = 40 I = 0 D = 0

El vehículo sigue la línea negra, sobre su borde, mayoritariamente sobre la región clara de la lámina aunque la corrección del error es más rápida que antes.

P = 50 I = 1 D = 0

El vehículo sigue de forma más aproximada la línea negra, oscilando alrededor de ella.

P = 80 I = 1 D = 10

Con estos valores de parámetros, el vehículo completó sin mayor problema tres vueltas en la zona de pruebas.

Tabla 4.6. Respuesta del seguidor de línea ante la aplicación de un controlador PID

La siguiente prueba consistió en recorrer las trayectorias mostradas en la

siguiente figura. Todas ellas tienen una forma similar, pero difieren en el color. Lo

que se observó es que hubo éxito únicamente en el caso de la línea negra. Con la

Page 176: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

163

línea celeste, el vehículo pronto perdió su ruta y con la línea roja, ni siquiera la

reconoció sobre el piso cerámico de color crema.

Figura 4.2. Trayectorias de prueba para el seguidor de línea

El resultado obtenido con el seguidor de línea sobre la línea negra, de las tres

mostradas en la figura anterior es el siguiente. Los parámetros de trabajo fueron:

P=80, I=0 y D=2.

Figura 4.3. Resultado al seguir la línea negra de la Fig. 4.2

Conclusión: los parámetros ingresados para el controlador PID tienen gran

influencia en el comportamiento del seguidor de línea y su éxito depende de la

correcta sintonización del mismo. Para mejorar el funcionamiento de este

prototipo habría que modificar su estructura mecánica colocando, por ejemplo, un

mayor número de sensores de luz, pero estos no están disponibles.

Page 177: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

164

Por los resultados observados, un controlador tipo P sería suficiente para

conseguir un resultado aceptable para el seguidor de línea, aunque la inclusión de

un control integral y/o derivativo permite seguir de mejor manera la línea descrita.

Para mejorar los resultados, sin embargo, se podría probar, entre otras opciones,

con la inclusión de un segundo sensor luminoso, con lo que seguro se obtendrían

mejores resultados, pero esto iría en contra de la idea inicial de este trabajo, que

consistía en desarrollar prototipos haciendo uso de las piezas disponibles en un

solo kit de trabajo.

El nivel de carga de las pilas usadas interfiere sobre el correcto funcionamiento

del sensor de luz y de los motores, por lo que es necesario tener en cuenta este

particular al momento de probar el diseño.

4.6 APLICACIONES REMOTAS

El programa desarrollado para que los prototipos anteriormente diseñados

funcionen adecuadamente, según lo que requiere este proyecto, es bueno y no

muestra mayores dificultades en su ejecución. El factor que mayores problemas

genera en este proyecto es la distancia de operación, ya que se trabaja de forma

remota inalámbrica mediante bluetooth. Las pruebas que se hicieron consistían en

verificar que los dispositivos funcionan adecuadamente desde diferentes

distancias y ante la presencia de obstáculos. Los resultados se muestran a

continuación.

Se hicieron pruebas a diferentes distancias de mando y el equipo funcionó

satisfactoriamente hasta una distancia de aproximadamente 20m y con

obstáculos incluidos en el camino (ventanas y paredes), a pesar de que entre las

características mencionadas por el fabricante se habla de una distancia de

operación máxima de 10m.

De la misma manera se hicieron pruebas con la comunicación bluetooth entre dos

ladrillos NXT, manteniendo encendidos y en operación otros dispositivos que

Page 178: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

165

tienen esta posibilidad de comunicación y no hubo o no se notó ningún tipo de

interferencia en su funcionamiento.

Lamentablemente, un factor cuyo efecto es difícil de cuantificar es el que

corresponde al nivel de las baterías, pero cualitativamente se puede mencionar

que la distancia máxima de operación disminuye ante un valor de carga bajo de

las pilas.

Conclusión: el programa diseñado muestra la versatilidad que tiene el ladrillo

programable NXT en el momento de comunicarse con otro de las mismas

características. La barrera de la distancia no debería representar una gran

limitación para la gran mayoría de aplicaciones a desarrollar.

Page 179: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

166

CAPÍTULO 5

CONCLUSIONES Y RECOMENDACIONES

5.1. CONCLUSIONES

- El objetivo de este trabajo, que consistía en construir y programar un

conjunto de robots móviles sobre la base del producto Lego Mindstorms en

su versión NXT, se ha cumplido en su totalidad y se ha demostrado la

facilidad y versatilidad que ofrece el producto mencionado para el

desarrollo de aplicaciones robóticas.

- El trabajo desarrollado permite tener una visión suficientemente profunda

sobre el tema e invita a seguir conociéndolo e investigándolo. Es necesario

mencionar que también existen limitaciones, las mismas que serán

decisivas en dependencia de la aplicación que se encuentra en desarrollo.

- La plataforma sobre la que está desarrollado el producto Lego Mindstorms

NXT ofrece básicamente dos ventajas: un relativo bajo precio y grandes

prestaciones. Si se lo considera como un juguete, puede tratarse de uno

costoso, pero si se lo compara con otras plataformas para diseño de

robots, resulta que ésta ofrece un infinito espectro de opciones que van

desde las más simples hasta las más complejas y variadas.

- El trabajo con plataformas como la de Lego Mindstorms NXT permite

promover el trabajo en equipo, la programación de equipos reales, la

construcción e integración de sistemas, la información de carácter

multidisciplinario, etc.

- El entorno de Lego Mindstorms es muy flexible, así como fácil de usar y

muy potente, y permite desarrollar una gran variedad de actividades de

programación y control de robots con la implementación de diferentes

Page 180: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

167

controladores para cumplir con las tareas deseadas. En el trabajo, por

ejemplo, se han probado dos distintos controladores de tipo PID sobre

diferentes magnitudes y en ambos casos ha sido posible ver la variación de

los resultados ante un cambio de las constantes o parámetros que

intervienen.

- En cuanto a los lenguajes de programación, NXT-G es una muy buena

opción como una solución gráfica, mientras que NXC es una opción de

código abierto orientada a la escritura de código. Cada una de las opciones

mostradas tiene ventajas y desventajas y el usuario final puede escoger de

entre ellas o de entre las muchas otras opciones existentes, dependiendo

de la aplicación que se encuentra en desarrollo.

- La versión de Lego utilizada es la 1.0. Actualmente existe en el mercado la

versión 2.0 que adicionalmente cuenta con un elemento nuevo de

hardware como lo es un sensor de color y su software incluye mejoras

siendo, dentro de ellas, la más notable la posibilidad de trabajar con

aritmética de punto flotante.

5.2. RECOMENDACIONES

- Es importante, antes de iniciar un proyecto con Lego Mindstorms, el

trazarse las metas y plantearse bien los objetivos que desean ser

cumplidos. Aunque esta recomendación es válida en cualquier situación

que debe ser resuelta, se considera que aquí es especialmente válida,

pues es fácil “perderse” en el camino ya que se cuenta con un juguete que,

con seguridad, ha fascinado a muchos desde la época de la infancia.

- Existe una gran comunidad de desarrolladores o simplemente fanáticos del

producto, que ofrecen consejos sobre diferentes tópicos y frente a las

típicas dificultades que suelen presentarse al trabajar con Lego

Mindstorms. La recomendación es acudir a estos grupos y buscar, junto a

ellos, las mejores soluciones a los problemas planteados. De la misma

Page 181: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

168

manera, las investigaciones de este gran grupo de personas se constituyen

en una gran fuente de información y de nuevos recursos para aprovechar

de mejor manera todas las opciones del producto.

- El kit 8527 puede ser limitado en muchas de las aplicaciones que se quiere

desarrollar. Conviene por ello abastecerse de kits adicionales, con piezas

especiales, que permitirán realizar aplicaciones de mayor complejidad y

tamaño. En el mercado hay muchas opciones y es necesario ver qué tipo

de recursos son los más necesitados, dependiendo de las aplicaciones que

se van a desarrollar. De la misma manera, existen empresas dedicadas a

la construcción de sensores especiales para este producto, así como

también hay muchos documentos donde se mencionan las características

eléctricas y protocolos de comunicación usados, para que sensores de

diseño personal puedan acoplarse con éxito a la unidad central de proceso

del NXT.

- Un gran problema con el uso del producto en mención es el consumo de

pilas. Por ello conviene abastecerse del paquete de baterías recargables

de la marca o, a su vez, diseñar un equipo que cumpla con las

características eléctricas exigidas por el producto. Con esto se promueve

también un cuidado del medio ambiente.

Page 182: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

169

REFERENCIAS BIBLIOGRÁFICAS

[1] Blogger.com; “Historia del arte de la Robótica: tipos de robots”; 2009;

http://robotik-jjlg.blogspot.com/2009/03/tipos-de-robots-2.html

[2] MIT Media Lab; “Seymour A. Papert | MIT Media Lab”;

http://www.media.mit.edu/people/papert

[3] MIT Media Lab; “ Mitchel Resnick | MIT Media Lab”;

http://www.media.mit.edu/people/mres

[4] KENNETH, Berry; “Teaching with Robots”; 2008

[5] MIGLINO, Orazio y otros; “La robótica como herramienta para la

educación”; 2000.

[6] Mellbin, Franz, “Mindstorms in Education”;

http://www.crynwr.com/lego-robotics/education.html

[7] Wikipedia; “LEGO”; http://es.wikipedia.org/wiki/LEGO

[8] Universidad de Colorado; “Motors”; 2002;

http://csel.cs.colorado.edu/~bauerk/legorobots/motors.html

[9] Tufts University; “Welcome to LEGO Engineering”;

www.legoengineering.com

[10] CEA Comité Español de Automática; Valera, A., Vallés, M y otros;

“Desarrollo y Control de Robots Móviles de Bajo Coste”; http://www.cea-

ifac.es/actividades/jornadas/XXVIII/documentos/1461-legov4.pdf

[11] RWTH Aachen University; “Projects-RWTH-Mindstorms NXT Toolbox”;

http://www.mindstorms.rwth-aachen.de/trac/wiki/Projects

[12] LEGO; “LEGO.com MINDSTORMS”;

http://mindstorms.lego.com/en-us/Default.aspx

[13] LEGO DACTA; “Welcome to Dacta”; http://www.dacta.eu.com/

[14] LEGO; “LEGO MINDSTORMS NXT Hardware Developer Kit.pdf”;

http://mindstorms.lego.com/en-us/Default.aspx

[15] LEGO; “9797_LME_UserGuide_US_low.pdf”;

http://mindstorms.lego.com/en-us/Default.aspx

[16] LEGO; “LEGO Education”; www.legoeducation.us/

[17] HURBAIN, Philippe; “NXT motor internals”;

http://www.philohome.com/nxtmotor/nxtmotor.htm

Page 183: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

170

[18] Peeron; HURBAIN, Philippe; “Peeron: Mindstorms NXT (#8527-1)”;

http://www.peeron.com/inv/sets/8527-1

[19] BrickLink; “BrickLink Reference Catalog: Inventory of Set 8527-1”;

http://www.bricklink.com/catalogItemInv.asp?S=8527-1&v=1&b=0

[20] Active Robots; “Active Robots-Programmable Robots, Hobby Robotics

Kits, Educational Robots & Robotic Arms, Legs & Grippers - UK”

http://www.active-robots.com/products/robots/

[21] nxtprograms.com; Parker, Dave; “NXT Programs – Fun Projects for your

LEGO Mindstorms NXT”; http://www.nxtprograms.com/

[22] University of British Columbia; Mc Call, Kevin; “A PID Robot

implemented with LEGO”; 2007;

http://www.physics.ubc.ca/~kevinmcl/projects/lego/APRIL/

[23] Lrobotikas; “Programación NXT–Wiki sobre robótica con Lego

Mindstorms”;

http://lrobotikas.net/mediawiki/index.php?title=Programaci%C3%B3n_NXT

[24] ROBOT Magazine; Swan, Dick; “Programming Solutions for the LEGO

Mindstorms NXT: Which approach is best for you?”; 2007;

http://www.botmag.com/articles/10-31-07_NXT.shtml

[25] KELLY, James Floyd; “LEGO Mindstorms NXT-G Programming Guide”;

Apress; USA; 2007

[26] BENEDETTELLI, Daniele; “Programming LEGO NXT Robots using NXC v.

2.2.”; Junio de 2007.

Disponible en: http://bricxcc.sourceforge.net/nbc/nxcdoc/NXC_tutorial.pdf

[27] HANSEN, John; “Not eXactly C (NXC) Programmer's Guide v. 1.0.1 b33”;

Octubre de 2007.

[28] GASPERI, Michael y otros, Extreme NXT – Extending the Lego

Mindstorms NXT to the next level. Apress. USA. 2007

Disponible en: http://bricxcc.sourceforge.net/nbc/nxcdoc/NXC_Guide.pdf

[29] CRySoL Ciudad Real y Software Libre; “Lego Mindstorms NXT: programar

con NXC”; 2007; http://crysol.org/node/777

[30] Hansen, John; “NBC/NXC NeXT Byte Codes and Not eXactly C”;

http://bricxcc.sourceforge.net/nbc/

[31] Wikipedia; “NXC”; http://en.wikipedia.org/wiki/NXC

Page 184: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

171

[32] Sluka, Jim; “PID Controller For Lego Mindstorms Robots”;

http://www.inpharmix.com/jps/PID_Controller_For_Lego_Mindstorms_Robo

ts.html

Otras referencias bibliográficas y electrónicas

- AGULLÓ, Miguel y otros; “LEGO Mindstorms Masterpieces”; Ed. Syngress;

USA; 2003

- BAUM, David y otros; “Extreme Mindstorms – An Advanced Guide to

LEGO Mindstorms”; Apress; USA; 2000

- BENEDETTELLI, Daniele; “Creating Cool Mindstorms NXT Robots”;

Apress; USA; 2008.

- Blogger.com; “Manual de ROBÓTICA LEGO MINDSTORMS NXT”;

http://manualderobotica.blogspot.com/

- BRATZEL, Barbara; “Physics by Design”; 2da edición; College House

Entreprises; Knoxville, Tenessee, USA; 2007

- FERRARI, Mario y otros; “Building Robots with LEGO Mindstorms”; Ed.

Syngress; USA; 2002.

- FERRARI, Giulio y otros; “Programming LEGO Mindstorms with Java”; Ed.

Syngress; USA; 2002.

- JADUD, Matt; “TeamStorms as a Theory of Instruction”; 1999.

- KELLY, James Floyd; “LEGO Mindstorms NXT – The Mayan Adventure”;

Apress; USA; 2006

- KNUDSEN, Jonathan y NOGA, Markus; „Das Inoffizielle Handbuch für

LEGO MINDSTORMS Roboter“; Ed. O´Reilly; Colonia, Alemania; 2000.

- MARTIN, Fred; “The Art of LEGO Design”; 1995.

- NAGATA, John; “LEGO Mindstorms Idea Book”; No Starch Press; San

Francisco, California; USA; 2001.

- SCHOLZ, Matthias Paul; “Advanced NXT – The Da Vinci Inventions Book”;

Apress; USA; 2007

- VILLA, Luis; “LEGO Mindstorms with Linux”; Mini-HOWTO; 2000

- WILCHER, Don; “LEGO Mindstorms Interfacing”; McGraw-Hill; New York,

USA; 2003

Page 185: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

172

- WIRED Magazine; “The 50 Best Robots Ever”; enero de 2006;

http://www.wired.com/wired/archive/14.01/robots.html

Comunidades de desarrolladores

- Mindboards: Blogs de desarrolladores de aplicaciones con Lego

Mindstorms.

http://sourceforge.net/apps/phpbb/mindboards/

- Techbricks.nl: Proyectos y tips para el desarrollo de aplicaciones con

Lego y Lego Mindstorms.

http://www.techbricks.nl/

- Brickshelf: Comunidad de desarrolladores de aplicaciones con Lego

Mindstorms.

http://www.brickshelf.com/

- The NXT STEP – LEGO MINDSTORMS NXT Blog: Blog de una

comunidad de desarrolladores de aplicaciones con Lego Mindstorms NXT.

http://thenxtstep.blogspot.com/

- LEGO Projects: Página de Sivan Toledo, desarrollador de aplicaciones

con Lego Mindstorms.

http://www.tau.ac.il/~stoledo/lego/

- Danny´s Mindstorms: Página de Daniele Benedettelli, desarrollador de

aplicaciones con Lego Mindstorms.

http://robotics.benedettelli.com/

- Lego Mindstorms Sensor Input Page: Página de Michael Gasperi,

desarrollador de aplicaciones con Lego Mindstosms.

http://www.extremenxt.com/lego.htm

- The Unofficial LEGO Mindstorms NXT Inventor´s Guide: Página de

David J. Perdue, desarrollador de aplicaciones con Lego Mindstorms NXT.

http://nxtblog.davidjperdue.com/

- Lego: Página de Fisher Mellbin con ejemplos de diseños con Mindstorms.

http://www.fischer-mellbin.com/Marcus/Lego/lego.html

Page 186: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

173

ANEXOS

Page 187: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

A.1

ANEXO A: SISTEMA DE BOLA Y VIGA DESARROLLADO SOBRE LA BASE

DEL PRODUCTO LEGO MINDSTORMS NXT

RESUMEN

Un sistema de control para balancear una bola en una viga utilizando LEGO

MINDSTORMS es diseñado con la finalidad de implementar una planta para

prácticas del Laboratorio de Control Automático, de tal manera que el estudiante

pueda elaborar prácticas experimentales-teóricas y de esta manera complementar

los conocimientos teóricos adquiridos en la asignatura de Control Automático y

Control Discreto.

El sistema está constituido físicamente por una barra construida con piezas de

Lego y un cuerpo de libre rodamiento. El sensor de ultrasonido permite determinar

la posición de la bola sobre la barra. Un servomotor, conectado al final de la barra,

controla la posición de la misma y del cuerpo que se encuentra sobre ella

recogiendo o soltando un hilo que se encuentra atado al eje del motor y a un

extremo de la barra.

INTRODUCCIÓN

El sistema de viga y bola es un sistema utilizado en laboratorio con el fin de

estudiar los métodos clásicos y modernos de control. Posee una propiedad muy

interesante que llama la atención de los ingenieros en control: es inestable en lazo

abierto, por lo que se debe realimentar el sistema y de esta manera variar la

respuesta del mismo ante diversos tipos de control.

Es un sistema compuesto por una bola rodando sobre un balancín largo que

puede ser inclinado aplicando una señal de control sobre un actuador que mueve

la barra. Su estructura física es diversa.

A continuación se presentan modelos comerciales de viga y bola y el armado

como parte de este proyecto.

Page 188: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

A.2

Sistema de control de bola y viga de Googol Technology (HK) Limited

(fuente: http://www.googoltech.com/uploads/catalog/999/Ballbeam%20Eng%20080906.pdf)

“Ball-on-beam balancer”

(fuente: http://www.personal.psu.edu/users/a/x/axa943/ball_on_beam_balancer.htm)

A Robotic Ball Balancing Beam - Jeff Lieberman

(fuente: http://bea.st/sight/rbbb/)

Page 189: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

A.3

El prototipo armado con piezas de Lego es el siguiente:

Prototipo de un sistema de bola y viga sobre la base del producto Lego Mindstorms

OBJETIVO

El objetivo del control es regular automáticamente la posición de la bola sobre la

barra cambiando el ángulo de la misma con respecto a un eje horizontal. Es un

problema de control difícil, porque la bola, ante una inclinación de la barra, no se

queda solamente en un lugar, ya que se mueve con una aceleración proporcional

al ángulo de la barra.

En la mayoría de problemas de control, si una entrada constante es aplicada a un

sistema, la salida permanece más o menos constante. En este, sin embargo, la

salida del sistema, es decir la posición de la pelota, no es estable por lo que el

sistema se vuelve inestable en lazo abierto y la posición de la pelota puede

incrementarse sin límite como respuesta a una entrada constante. Es por esto que

se necesita un control realimentado para mantener la posición deseada.

Page 190: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

A.4

APLICACIONES DEL SISTEMA

En las industrias con procesos químicos: en el control de reacciones químicas

exotérmicas. Si una reacción química genera calor y la reacción es más rápida

conforme se incrementa la temperatura, entonces alguna forma de control deberá

ser usada para estabilizar la temperatura de la reacción química y evitar una

reacción de escape rápido. Las reacciones exotérmicas son utilizadas para

producir muchos de los productos químicos que usamos cotidianamente. Por lo

tanto, sin control realimentado estos productos no existirían.

En generación de energía: en el control de posición de plasma en el generador

toroide europeo (JET = Joint European Torus). El objetivo de este sistema es

controlar la posición vertical del anillo de plasma dentro del hueco en el

contenedor metálico con forma de dona. El control se realiza por medio de

campos magnéticos aplicados a toda la dona mientras el plasma se mueve

verticalmente de una manera inestable en respuesta a dichos campos de control.

Para entender el problema se puede imaginar una bola de jabón que será

expulsada a mayor velocidad conforme se varía el ángulo relativo de las manos.

En aplicaciones aeroespaciales: en el control de un cohete o una nave durante el

despegue vertical. El ángulo de los cohetes de propulsión a chorro o las aletas de

desviación deben ser continuamente controlados para prevenir que el cohete

caiga o la nave vuelque. Sin el control de realimentación para estabilizar los

movimientos, no serían posibles los vuelos espaciales.

Estos son algunos ejemplos de sistemas inestables de importancia y cuyo control

debe ser estudiado en laboratorio ya que normalmente los sistemas inestables

reales son peligrosos y por tanto no se pueden reproducir en condiciones reales

en el laboratorio. Es por ello que fue desarrollado el sistema de viga y bola, cuyo

fin es tener un mecanismo seguro y simple que tiene las características de un

sistema inestable para ser usado en el laboratorio y realizar las más diversas

pruebas sin riesgos.

Page 191: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

A.5

ANÁLISIS DEL SISTEMA

La figura que se muestra a continuación representa un esquema simplificado del

sistema de “viga y bola”:

Una bola B se encuentra sobre una viga, la misma que forma un ángulo α con la

horizontal. La distancia x entre el sensor S y la bola B es determinada por el

primero. El ángulo de inclinación de la barra es variado a través de la variación de

longitud de la cuerda que se encuentra acoplada al eje de un motor a través de

una polea.

Un diagrama simplificado de las fuerzas que actúan sobre la bola es el siguiente:

Diagrama de fuerzas del sistema “bola y viga”

Page 192: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

A.6

En el diagrama anterior se representan las siguientes fuerzas:

- mg: peso de la bola

- mg·sinα: componente del peso paralela al plano del movimiento

- mg·cosα: componente del peso perpendicular al plano del movimiento

- Fr: fuerza de rozamiento (se opone al movimiento)

En este diagrama se está despreciando la inercia propia del cuerpo que se

encuentra sobre la viga, la misma que debe ser considerada en el caso real. Un

primer análisis dinámico básico nos dice lo siguiente.

Por la segunda ley de Newton: F = m·a

En el sentido del movimiento: F = mg·sinα – Fr

Pero la fuerza de rozamiento es igual a: Fr = µ ·mg·cosα

Por lo que: m·a = mg·sinα - µ ·mg·cosα

Es decir: a = g·sinα - µ ·g·cosα

La bola debe oponer mínima resistencia al movimiento, por lo que se espera que

el coeficiente de rozamiento dinámico (µ) sea aproximadamente igual a 0.

También se conoce que, para valores muy pequeños del ángulo α: sen α ≈ α

La última ecuación nos demuestra que la aceleración del sistema resulta ser

proporcional al ángulo que forma la viga con la horizontal: a = k·α

Por lo tanto, ante un valor constante de la entrada (α) se provoca que la bola sea

acelerada llevando al sistema total a la inestabilidad. Esto demuestra que se hace

necesaria una realimentación en el sistema para conseguir estabilidad en el

mismo.

Obviamente, se podría realizar un análisis matemático y dinámico mucho más

profundo de este sistema para luego de conseguir un modelo matemático realizar

la simulación correspondiente que nos conduzca a obtener el mejor controlador

posible, pero ese análisis escapa al objetivo del presente trabajo; además esas

ecuaciones tampoco serían utilizadas en el controlador implementado.

Page 193: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

A.7

PROTOTIPO IMPLEMENTADO

El sistema desarrollado se muestra en la siguiente figura:

Vista frontal del sistema de “viga y bola” desarrollado

El prototipo tiene una longitud máxima de 51cm, de los cuales 37cm

corresponden a la longitud usable de la barra sobre la cual se mueve el pequeño

vehículo. El nivel horizontal de la barra se encuentra a 7cm de altura y el ángulo

máximo que se puede variar en su inclinación es de aproximadamente ±5° con

respecto al nivel horizontal.

Vista superior del prototipo diseñado

Para determinar la distancia a la que se encuentra el objeto que se desea

equilibrar sobre la barra a una distancia predefinida, se usa el sensor de

Page 194: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

A.8

ultrasonido que es parte del kit de Lego Mindstorms. Este sensor puede realizar

mediciones de distancias en un rango que va desde los 3cm hasta los 250cm, por

lo que resulta adecuado para este diseño:

Detalle del sensor de ultrasonidos.

Para facilitar la tarea del sensor de ultrasonido, al momento de realizar sus

mediciones, se ha diseñado un pequeño vehículo que puede rodar libremente

sobre la barra y al que se ha adherido una lámina de cartón y que sustituirá a la

bola del experimento original. La señal de ultrasonido podrá reflejarse más

fácilmente en esta lámina, por lo que las mediciones serán también más

confiables.

Vehículo que sustituye a la “bola” del experimento original

Page 195: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

A.9

El sensor de ultrasonido se encuentra en uno de los extremos de la barra y en el

otro se encuentra el servomotor que hace las veces del actuador que permite

cambiar el ángulo de inclinación de la barra. Al eje del motor se encuentra

acoplado un engranaje de 40 dientes, el mismo que acciona a otro de 10 dientes y

que se encuentra montado sobre el eje que se encarga de soltar o recoger el hilo

nilón que permite a la barra variar su inclinación.

Detalles del sistema de engranajes acoplados al motor y de la cuerda que sostiene a la “viga” y

que le permite variar su ángulo de inclinación.

Se usó este sistema de engranajes para poder tener una mayor velocidad de

reacción frente a cambios en la posición de la “bola” sobre la barra.

En las siguientes figuras se puede ver cómo se ubica la “bola” sobre la barra en el

experimento diseñado.

Detalle de la “bola” sobre la “viga” en el prototipo diseñado con Lego Mindstorms.

Page 196: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

A.10

PROGRAMA DESARROLLADO

El programa que permite cumplir con el objetivo planteado fue desarrollado en el

lenguaje NXC.

Diagrama de flujo del programa “Viga y Bola”:

Page 197: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

A.11

Código NXC del programa “Viga y Bola”:

// Programa BEAM AND BALL (PID)

task main() // INICIO DE LA TAREA PRINCIPAL SetSensorLowspeed(IN_4); // Sensor de ultrasonido en el puerto 4

// Valores predefinidos

int tolerancia = 4; // Tolerancia permitida para el proceso int P = 10; // Constante de ganancia proporcional int I = 90; // Constante integral int D = 400; // Constante derivativa

int scale = 10; // Factor de escalamiento por la ganancia de las constantes // debido a que no se pueden ingresar valores decimales int setPoint=20;// Inicializa la variable que indica la distancia a mantener.

// Mensaje de inicio

TextOut(0,LCD_LINE1,"Pulse el boton", true); // true: borra pantalla anterior TextOut(0,LCD_LINE2,"naranja para", false); TextOut(0,LCD_LINE3,"para iniciar!", false); TextOut(29,LCD_LINE8,"Iniciar", false);

until(ButtonPressed(BTN4,true));// Espera a que se presione el botón naranja

ClearScreen(); TextOut(0,LCD_LINE4,"... ... ..."); int distancia = SensorUS(IN_4); // Lectura de la distancia inicial

// Variables a ser usadas en el lazo de control

int error=0; // Error actual en la posición int prevError=0; // Error del lazo anterior int sumError=0; // Suma de errores usada en el término integral

int pOut=0; // Potencia de salida para los términos proporcional, int iOut=0; // integral y int dOut=0; // derivativo

int totalOut=0; // Suma de los tres términos individuales

long to, dt; // Variables que permiten determinar tiempo de lazo

// Código que realiza el cálculo de la corrección en ángulo del motor para

// conseguir una corrección en la posición final del automóvil.

to = CurrentTick();

while(true) // INICIO DEL ALGORITMO DE CONTROL

prevError = error; // Almacena el error previo (lazo anterior) distancia = SensorUS(IN_4); // Lee la distancia a través del sensor de US

error = distancia-setPoint; // Calcula el error actual

dt = CurrentTick()-to; // Cálculo del tiempo del último lazo to = CurrentTick();

pOut = error*P; // Genera la salida proporcional

sumError += error*dt; // Añade el error actual a la suma

Page 198: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

A.12

iOut = sumError*I; // Calcula la salida integral

dOut = D*(error-prevError)/dt; // Calcula la salida derivativa

totalOut = (pOut+iOut/(scale*scale)+dOut)/scale; // Salida total

if(totalOut > 250) totalOut=250; else if(totalOut < -250) totalOut=-250;

if(abs(error)>tolerancia) // Chequea si la posición actual está fuera // del margen de tolerancia

RotateMotor(OUT_A,100,totalOut); else sumError=0; // Resetea la suma cuando se ha conseguido el // resultado deseado

El programa utiliza un algoritmo PID para controlar la posición final de la “bola”. El

algoritmo requiere de una señal de referencia, la misma que es ingresada

directamente en el programa a través de la constante setPoint. Luego, el

programa hace que el sensor de ultrasonido entregue mediciones de la distancia,

las mismas que son comparadas con la señal referencial para generar un error.

Esta señal de error es tratada por el algoritmo PID:

- Salida proporcional: PerrorpOut ⋅= , donde P representa a la constante

proporcional del controlador.

- Salida integral: IsumErroriOut ⋅= , donde I representa a la constante integral

del controlador y sumError es la suma de los errores de los lazos anteriores,

antes de la última estabilización del sistema, multiplicados cada uno por el

tiempo del lazo de control (dt).

- Salida derivativa: dtprevErrorerrorDdOut ⋅−⋅= )( , donde D representa a la

constante derivativa del controlador, prevError es el error del lazo anterior y dt

el tiempo del último lazo de control.

La suma de las tres salidas genera la salida total totalOut, la misma que es

mandada al motor y representa el valor del ángulo que debe girar el servomotor.

El signo de esta salida indicará si la barra debe subir o bajar para lograr el

equilibrio deseado de la “bola”.

Page 199: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

A.13

Ya que solo se permite el uso de números enteros para los cálculos aritméticos,

se han escalado las constantes con un factor de 10 (scale), factor que debe ser

eliminado del resultado final mediante una simple división entre 10.

RESULTADOS OBTENIDOS

Para la calibración del controlador PID diseñado se han seguido los siguientes

pasos:

- Primero se ajusta la constante proporcional hasta que el sistema se comporte

de una manera aceptable, aunque no se logra estabilidad en ningún caso. Lo

que se ha buscado con esta calibración es que la constante no sea tan

grande como para que provoque un ángulo de giro sobre la barra muy grande.

Una revolución del eje del motor equivale a 5 revoluciones del eje al que se

encuentra atada la cuerda, cuyo diámetro es de aproximadamente 7,5mm;

esto se debe al uso del sistema de engranajes. Por lo tanto, una revolución

completa del eje del motor equivale a una extensión de 117,8mm de la

cuerda, tal y como se puede observar en la siguiente tabla:

Giro del eje

del motor

Giro del eje al que

está sujeta la cuerda

Longitud de la cuerda

(eje de 7,5mm de diámetro)

360° 360°·5 = 1800° mmmm

8,117360

75,321800 =

⋅⋅

⋅o

Usando los resultados de la tabla anterior, se tiene que, para provocar una

extensión máxima de la cuerda de 40mm desde su posición horizontal

(corresponde a los 5° de inclinación que se mencion aron en un inicio), el

ángulo que debe girar el eje del motor y, por lo tanto la salida del controlador

PID), debe ser de aproximadamente 122°.

o

o

2,122408,117

360=⋅ mm

mm

Page 200: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

A.14

En el programa se han considerado valores extremos para totalOut de ±250,

tomando en cuenta que en algún momento la barra puede ubicarse en el

punto más alto o más bajo de su recorrido.

Por lo tanto, ante un error máximo de 30cm, la constante proporcional (si se

trata de un control exclusivamente proporcional) no debe generar un valor

muy elevado. Pensando en los aproximadamente 122° d e desviación máxima

sobre la horizontal, el valor de P máximo debería ser de 4.

- El siguiente paso es encontrar un valor adecuado para la constante derivativa,

la misma que otorga al sistema de velocidad de respuesta frente al error

existente. Esta calibración se realiza mediante el proceso de “prueba y error”.

- Una vez que el sistema tiene una respuesta aceptable, se procede a darle un

valor a la constante integral. Esta constante permite básicamente que el

sistema alcance más “suavemente” el equilibrio, aunque un valor muy alto

puede llevarlo fácilmente a la inestabilidad.

- Algo que hace falta mencionar es la dificultad que representa la alta inercia

del vehículo que está rodando sobre la barra y que hace difícil el que se

llegue fácilmente a alcanzar el equilibrio en el punto deseado. Para disminuir

esta dificultad se puede usar en la realidad una bola de material más liviano,

pero en este caso hubo dificultades por cuanto el sensor de ultrasonido no

siempre determina la posición del objeto.

Finalmente, las constantes probadas en el sistema son las siguientes: P=4; I=0,1

y D=500. Con estos valores se hicieron pruebas para que el sistema alcance el

equilibrio alrededor de un valor referencial predefinido (d=20cm) y se lo consiguió.

Por supuesto, estas constantes deberán variarse si la estructura es diferente a la

diseñada.

Page 201: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

A.15

CONCLUSIONES

- Se puede concluir que se consiguió lo esperado, por cuanto la respuesta del

controlador es buena. Este proyecto servirá para demostrar a los estudiantes,

algunas de las capacidades de los sistemas de control. Los estudiantes

podrán cambiar los parámetros de los controladores y observar cómo afectan

estos cambios a la repuesta del sistema.

- Se pueden así mismo experimentar otros tipos de control, como por ejemplo

mediante lógica difusa utilizando la misma planta. En este caso lo que se

debería probar es otro lenguaje de programación que ofrezca mayores y

mejores opciones.

- Se diseñó un controlador PID para estabilizar al sistema total en lazo cerrado,

pero el sistema muestra error de estado estacionario, debido a la diferencia

que existe entre la fricción estática y dinámica de la “bola”.

- El uso de equipos de fácil adquisición y manejo similares a Lego, facilita los

estudios y cálculos necesarios para la implementación de sistemas de control

y logra reemplazar dispositivos convencionales, demostrando que es posible,

mediante equipos considerados inicialmente “juguetes”, mejorar sistemas

tradicionales, alcanzar alta confiabilidad y eficiencia y entretenerse en el

intento.

REFERENCIAS BIBLIOGRÁFICAS Y ELECTRÓNICAS

- Ataei-Esfahani, Armin; “Ball-on-Beam Balancer”; 2006;

http://www.personal.psu.edu/users/a/x/axa943/ball_on_beam_balancer.htm

- Carnegie Mellon University; “CTMS Example: Ball & Beam Modeling in

Simulink”

http://www.library.cmu.edu/ctms/ctms/simulink/examples/ball/ballsim.htm

Page 202: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

A.16

- CINVESTAV-IPN; Yu, Wen; “Nonlinear PD regulation for ball and beam

system”; México; http://www.ctrl.cinvestav.mx/~yuw/pdf/ijeee.pdf

- Connexions; Luther, Erik; “Interactive Ball and Beam Experiment”; 2009

http://cnx.org/content/m14028/latest/

- Dorf, Robert, Bishop, H.; “Modern Control Systems’

- Liebermann, Jeff; “A Robotic Ball Balancing Beam”; 2004

http://web.media.mit.edu/~xercyn/sight/rbbb/rbbb.pdf

- Ogata, K.; “Ingeniería de Control Moderna”; Prentice Hall

- Smith, Carlos A., Corripio Armando B.; “Control Automático de Procesos”

- Swarthmore College; Wanjohi, William; “Ball and Beam Control Theory

Demonstrator”; 2005;

http://www.engin.swarthmore.edu/academics/courses/e90/2004_5/ww/ww_fin

al_e90.pdf

- The University of Michigan; “CTM Example: Ball & Beam Modeling”; 1997;

http://www.engin.umich.edu/group/ctm/examples/ball/ball.html

- Wellstead, Peter; “Ball and Beam 1: Basics”;

http://www.control-systems-principles.co.uk/whitepapers/ball-and-beam1.pdf

- Wellstead, Peter; “Ball and Beam 2: Robust Control”;

http://www.control-systems-principles.co.uk/whitepapers/ball-and-beam2a.pdf

Page 203: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

B.1

ANEXO B: MENÚ PRINCIPAL DEL NXT

Fuente: 9797_LME_UserGuide_US_low.pdf en www.mindstorms.com

Page 204: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

B.2

Page 205: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

C.1

ANEXO C: DIAGRAMAS ELÉCTRICOS DEL HARDWARE UTILIZADO EN EL

PRODUCTO LEGO MINDSTORMS NXT

Fuente: LEGO MINDSTORMS NXT Hardware Developer Kit en

www.mindstorms.com

Documentos adjuntos:

1. LEGO MINDSTORMS NXT hardware schematic.pdf

2. LEGO MINDSTORMS NXT Keypad schematic.pdf

3. LEGO MINDSTORMS NXT Light Sensor hardware schematic.pdf

4. LEGO MINDSTORMS NXT Sound Sensor hardware schematic.pdf

5. LEGO MINDSTORMS NXT Touch Sensor hardware schematic.pdf

6. LEGO MINDSTORMS NXT Ultrasonic Sensor hardware schematic.pdf

Page 206: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

5 5

4 4

3 3

2 2

1 1

DD

CC

BB

AA

INT

A0

DIR

A

INT

B0

DIR

B

INT

C0

DIR

C

MC

IN0

MC

PW

M

AD

C_

A0

I_O

NA

DIG

IA1

DIG

IA0

P_

EN

AD

C_

B0

I_O

NB

DIG

IB1

DIG

IB0

AD

C_

C0

I_O

NC

DIG

IC1

DIG

IC0

DO

A

RE

A

DE

A

DIA

AD

C_

D0

I_O

ND

DIG

ID1

DIG

ID0

INT

B0

DIG

IB0

VM

BT

_R

EQ

RX

BT

VC

C1

.8V

VC

C1

.8V

VC

C1

.8V

TC

KC

SB

T

TD

I

VC

C1

.8V

XIN

TS

T

DIR

AIN

TC

0

DIG

ID0

AV

RS

CL

DO

AD

IA

DE

AR

EA

DIR

C

RS

TB

T

CT

S@

AR

M

INT

A0

RT

SB

T

DIG

IC1

DIG

IA0

DIG

IB1

DIG

IA1

SO

UN

D_

AR

MA

TXB

T

MIS

OB

T

SC

KB

T

VC

C1

.8V

SO

UN

D_

AR

MA

RT

SB

TR

TS

@B

T

MC

IN1

AV

RS

DA

DIG

ID1

VC

C3

V

NR

ST

DD

P

DD

M

DD

PD

DM

US

B_

AD

C

US

B_

AD

C

CS

BT

MA

IN0

MA

PW

M

MA

IN1

MB

IN0

MB

PW

M

MB

IN1

MA

IN1

I_O

NB

MC

IN1

P_

EN

MB

IN0

I_O

NA

MC

PW

M

MC

IN0

AV

RS

I

AV

RS

CK

BU

TT

ON

0

VC

C_

AV

R5

V

MB

PW

M

AD

C_

C0

AD

C_

D0

MB

IN1

AD

C_B

AT

T

AD

C_

A0

MA

IN0

AV

RS

O

AD

C_

B0

VM

BT_S

TA

TE

AD

C_

I

BA

TT

_P

ULS

VC

C1

.8V

DIR

B

DIG

IC0

VC

C3

V

RS

TB

T

I_O

ND

JT

AG

SE

L

BA

TT

_P

ULS

SC

KB

T

BU

TT

ON

0

SIB

T

SO

BT

SC

KB

TC

SD

IS

GN

DB

UT

T_

AD

C

SO

BT

VC

C3

V

MA

PW

M

I_O

NC

GN

D

RX

BT

TXB

T

SO

BT

MIS

OB

T

VM

BT_S

TA

TE

VM

BT

_R

EQ

AD

C_

I

BU

TT

_A

DC

GN

DV

CC

_A

VR

5V

AV

RS

IA

VR

SO

AV

RS

CK

VM

BT_S

TA

TE

SIB

T

SIB

T

DIG

ID1

AV

RS

CL

AV

RS

DA

CS

DIS

AV

RR

ES

ET

AV

RR

ES

ET

BA

TT

_P

ULS

AD

C_B

AT

T

VC

C_

AV

R5

V

US

B_

DP

VC

C3

V

US

B_

DP

TS

T

PU

10

K

TD

I

TM

S

GN

D

VC

C3

V

NR

ST

GN

D

TM

ST

CK VC

C3

V

VC

C5

V

GN

D

TXB

T

CT

S@

AR

MR

TS

@B

T

TD

O

TD

O

AD

C_

A0

AD

C_

B0

AD

C_

C0

AD

C_

D0

RT

S@

BT

CT

S@

AR

M

TXB

T

VC

C5

V

VC

C3

V

VC

C_

AV

R5

VV

CC

_A

VR

5V

VC

C3

V

VC

C9

V

VC

C_

SN

D

VC

C3

VV

CC

3V

VC

C3

V

VC

C3

V

VC

C_

SN

D

VC

C3

V

VC

C3

V

VC

C3

V

VC

C3

V

VC

C3

VV

CC

3V

RE

A

DE

A

DIA

DO

A

DIR

B

INT

A0

DIR

A

MC

IN1

MC

IN0

MC

PW

M

INT

B0

INT

C0

DIR

C

AD

C_

A0

I_O

NA

DIG

IA0

DIG

IA1

DIG

ID1

DIG

IC1

DIG

IB1

AD

C_

B0

I_O

NB

DIG

IB0

AD

C_

C0

I_O

NC

DIG

IC0

AD

C_

D0

I_O

ND

DIG

ID0

MA

IN1

MA

IN0

MA

PW

M

MB

IN1

MB

IN0

MB

PW

M

AD

C_

I

P_

EN

BA

TT

_P

ULS

AD

C_B

AT

T

TS

T

of

Title

Pro

ject

Nu

mb

er

En

gin

ee

r/co

nstr

ucte

r

Sch

em

ati

c N

am

e

Da

te (

YY

YY

/MM

/DD

)

Dra

fte

rD

ate

(Y

YY

Y/M

M/D

D)

Sh

ee

tP

age S

ize

Ve

rsio

n

14

A3

LE

GO

Ha

rdw

are

LE

GO

I

4.7 and 2.2 must be X7R

100 nF and 470 pF must be NP0

Blue Tooth PCB to PCB connector

GND

GND

N.C.

N.C.

ARM JTAG interface

2 1

4 3

6 5

8 7

10 9

12 11

14 13

16 15

18 17

20 19

GND

GND

GND

GND

GND

GND

GND

VCC3V

VCC3V

TDI

TMS

TCK

TDO

10k PULL UP

TCK

1 2

3 4

5 6

7 8

9 10

GND

AVRRESET

VCC_AVR5V

GND

N.C.

AVRSCK

AVRSO

AVRSI

N.C.

N.C.

AVR JTAG interface

2 1

NRST

Small connector

single row, 1,27 pitch

Small connector

single row, 1,27 pitch

Must be one pack or single,

Not mounted on the final version

Speaker

Connector to LCD and button PCB

TP69

TP70

TP62

TP71

NM

NM=NOT MOUNTED

NM

L

EG

O

MIN

DS

TO

RM

S N

XT

R7

8

15K

U8

AT

me

ga

48

/V

PD

3 (

PC

INT

19

/OC

2B

/IN

T1

)1

PD

4 (

PC

INT

20

/XC

K/T

0)

2

GN

D3

VC

C4

GN

D5

VC

C6

PB

6 (

PC

INT

6/X

TA

L1

/TO

SC

1)

7

PB

7 (

PC

INT

7/X

TA

L2

/TO

SC

2)

8

PD5 (PCINT21/OC0B/T1) 9

PD6 (PCINT22/OC0A/AIN0) 10

PD7 (PCINT23/AIN1) 11

PB0 (PCINT0/CLKO/ICP1) 12

PB1 (PCINT1/OC1A) 13

PB2 (PCINT2/SS/OC1B) 14

PB3 (PCINT3/OC2A/MOSI) 15

PB4 (PCINT4/MISO) 16

PC

1 (

AD

C1

/PC

INT

9)

24

PC

0 (

AD

C0

/PC

INT

8)

23

AD

C7

22

GN

D2

1

AR

EF

20

AD

C6

19

AV

CC

18

PB

5 (

SC

K/P

CIN

T5

)1

7

PD2 (INT0/PCINT18)32

PD1 (TXD/PCINT17)31

PD0 (RXD/PCINT16)30

PC6 (RESET/PCINT14)29

PC5 (ADC5/SCL/PCINT13)28

PC4 (ADC4/SDA/PCINT12)27

PC3 (ADC3/PCINT11)26

PC2 (ADC2/PCINT10)25

J1

0

1 P

ad

R1

09

10K

C5

2

10

0n

F

R9

22

.2K

C5

4

2.2

nF

TP

66

J1

5

10

pin

12

34

56

78

91

0

R8

2

27

R

C2

9

1n

F

R8

910K

C3

9

47

0p

F

R9

9

10K

C4

2

10

0n

F

C7

0

47

pF

TP

68

C4

9

10

0n

F

U1

5A

74

HC

73

J1

4

CL

K1

K3

Q1

2

Q1

3

VCC4 GND 11

CL

R2

R8

4

10K

C5

5

10

0n

FJ1

7

10

pin

1 2 3 4 5 6 7 8 9 10

R2

5

1M

EG

R3

1

10K

U7

AT

91S

AM

7S

256

AD

VR

EF

1

GN

D2

AD

43

AD

54

AD

65

AD

76

VC

C_

IN7

VC

C_

OU

T8

PA

17

/PG

MD

5/A

D0

9

PA

18

/PG

MD

6/A

D1

10

PA

21

/PG

MD

91

1

VC

C_

CO

RE

12

PA

19

/PG

MD

7/A

D2

13

PA

22

/PG

MS

10

14

PA

23

/PG

MD

11

15

PA

20

/PG

MD

8/A

D3

16

GND 17

VCC_IO 18

PA16/PGMD4 19

PA15/PGM3 20

PA14/PGMD2 21

PA13/PGMD1 22

PA24/PGMD12 23

VCC_CORE 24

PA25/PGMD13 25

PA26/PGMD14 26

PA12/PGMD0 27

PA11/PGMM3 28

PA10/PGMM2 29

PA9/PGMM1 30

PA8/PGMM0 31

PA7/PGMNVALID 32

VCC_PLL64

PLLRC63

XIN/PGMCK62

XOUT61

GND60

VCC_FLASH59

VCC_IO58

DDP57

DDM56

ERASE55

VCC_CORE54

TCK53

PA3152

TMS51

JTAGSEL50

TDO49 PA

0/P

GM

EN

04

8

PA

1/P

GM

EN

14

7

GN

D4

6

VC

C_

IO4

5

PA

24

4

PA

34

3

PA

30

42

PA

29

41

TS

T4

0

NR

ST

39

PA

28

38

PA

27

/PG

MD

15

37

PA

4/P

GM

NC

MD

36

PA

5/P

GM

RD

Y3

5

PA

6/P

GM

NO

E3

4

TD

I3

3

C3

0

22

pF

R1

7

0R

R8

1

27

R

R4

2

1M

EG

R8

0

22K

R9

7

15K

TP

61 C

45

10

0n

F

R7

9

1.5

K

X1

18.4

32M

Hz

C5

1

1u

F

C7

1

47

pF

U9

SP

Y0

03

0A

SP

N1

SP

P2

GN

D3

INN

4

VC

C8

CE

7

VR

EF

6

AC

IN5

J2

0

2 P

ad

12

C5

8

10

0n

F

C3

4

15

pF

C3

8

2.2

uF

R8

5

10K

RA

4B

10K

7 2

TP

64

TP

86

C3

3

33

pF

C4

8

10

0n

F

J1

6

8 p

in

1 2 3 4 5 6 7 8

C3

1

22

pF

C3

5

15

pF

C2

8

10

0n

F

U4

A

74

HC

73

J1

4

CL

K1

K3

Q1

2

Q1

3

VCC4 GND 11

CL

R2

TP

82

R9

4

10K

C4

4

10

0n

F

Q15

BC

85

7B

1

23

C3

7

4.7

uF

TP

59

C7

2

47

pF

C4

3

10

0n

F

TP

85

TP

65

RA

4C

10K

6 3

C5

3

3.3

nF

RA

4A

10K

8 1

R8

3

1.5

K

U1

5B

74

HC

73

J7

CL

K5

K1

0Q

9

Q8

VCC4 GND 11

CL

R6

C3

2

10

nF

TP

67

TP

83

TP

60

R9

8

10K

R3

0

10K

D2

3

SM

4002

R9

32

.2K

U4

B

74

HC

73

J7

CL

K5

K1

0Q

9

Q8

VCC4 GND 11

CL

R6

R9

110K

TP

81

RA

4D

10K

5 4

C7

7

10

0n

F

TP

58

C4

1

10

0n

F

R9

010K

J1

9

16

Pa

d

12

34

56

78

91

01

11

21

31

5

C6

9

47

pF

C3

6

10

0n

F

TP

84

J1

2

US

B

1 2 3 4

Page 207: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

5 5

4 4

3 3

2 2

1 1

DD

CC

BB

AA

BA

TT

_P

ULS

P_

EN

AD

C_B

AT

T

AD

C_

I

TS

T

INT

C0

DIR

A

DIG

ID1

P_

EN

AD

C_

I

BA

TT

_P

ULS

AD

C_B

AT

T

SA

MB

A

TS

T

INT

C0

DIR

A

DIG

ID1

VC

C9

V

VC

C9

V_

MO

TO

R

VC

C_

SW

VC

C_

AV

R5

V

VC

C_

SW

VC

C5

VV

CC

3V

VC

C_

AV

R5

V

VC

C_

RS

48

5

VC

C9

V_

MO

TO

R

VC

C_

AV

R5

V

VC

C3

V

VC

C3

V

VC

C3

V

VC

C3

V

VC

C_

SN

D

VC

C9

V_

MO

TO

R

VC

C5

V

VC

C_

RS

48

5

VC

C_

RS

48

5

BA

TT

_P

ULS

P_

EN

AD

C_B

AT

T

AD

C_

I

TS

T

INT

C0

DIR

A

DIG

ID1

of

Title

Pro

ject

Nu

mb

er

En

gin

ee

r/co

nstr

ucte

r

Sch

em

ati

c N

am

e

Da

te (

YY

YY

/MM

/DD

)

Dra

fte

rD

ate

(Y

YY

Y/M

M/D

D)

Sh

ee

tP

age S

ize

Ve

rsio

n

24

A3

LE

GO

Hard

ware

LE

GO

I

Batteri

minus

R13, R20, R29 N.M.

MUST BE SHORTED

WITH SOLDER

Batteri

plus

Steering for display PCB

NM

NM=NOT MOUNTED

TP50

TP40

Bleeder

resistor

TP42

TP51

Screwholes

Rechargeble

Battery

detect

TP87

NM

NM

NM

NM

NM

NM

NM

NM

NM

NM

NM

NM

NM

NM

NM

NM

Shorted beneath components

TP77

TP90

L

EG

O

MIN

DS

TO

RM

S N

XT

Q18A

PU

MH

4

Q22

XP

162A

12A

6P

R

1

23

TP

52

J3

9D

RIL

L 4

.6 m

m

R9

5

220K

R6

4

0.4

3R

C1

4

10

0n

F

U1

4X

C6202P

50

Vo

ut

1V

in3

GND 2

Q18B

PU

MH

4

SW

2

ON

/OF

F

1 2

R2

4

10K

Q20A

PU

MT

1

+C

8

10

00

uF

C5

6

1n

F

Q20B

PU

MT

1

C6

0

47

0n

F

+ -U

6A

LM

358

3 21

8 4

R2

00

R

R9

6

390K

RA

3A

47

k

81

TP

39

D3

1

RS

X301L-3

0

R4

01

KC

12

10

0n

F

+C

7

10

00

uF

TP

37

J1

3D

RIL

L 4

.7 m

m

Q1B

IRF

58

10

3

42

Q17

BC

84

8B

1

3 2

TP

36

RA

2B

120K

7 2

R2

8

330K

R1

4

10K

R4

1

4.7

K

D2

9

RS

X301L-3

0

R1

6

0.4

3R

RA

3B

47

k

72

TP

73

J4

1 P

ad

+C

13

56

0u

F

D2

7B

ZG

03

1

5V

D7

BA

S85

U5

XC

9302

CE

5

VO

UT

4E

XT

/3

VC

C2

GN

D1

R1

30

R

+C

64

22

0u

F

C7

4

10

nF

R2

3

10K

+ -U

6B

LM

358

5 67

8 4

C7

5

10

nF

RA

2A

120K

81

J2

3D

RIL

L 4

.7 m

m

TP

74

TP

TP

2

C5

71

00

nF

R1

00

6.8

K

R6

5

10K

RA

2C

120K

63

Q21A

PU

MT

1

TP

78

Q1A

IRF

58

10

1

65

J5

1 P

ad

C1

5

47

0n

F

+C

59

10

uF

D2

8

RS

X301L-3

0

RA

3C

47

k

63

C1

0

10

0n

F

J3

7D

RIL

L 4

.6 m

m

C5

0

10

0p

F

U1

0X

C6202P

33

Vo

ut

1V

in3

GND 2

R2

90

R

TP

72

C4

6

10

pF

R2

7

10K

TP

41

TP

63

R6

7

47

0R

Q23

XP

161A

1265P

R1

2 3

J4

0D

RIL

L 4

.6 m

m

+C

62

47

uF

TP

75

TP

RA

2D

120K

5 4

Q16A

PU

MT

1

R1

11

4.7

R

Q16B

PU

MT

1

J3

8D

RIL

L 4

.6 m

m

R4

3

0.4

3R

R2

1

220K

Q21B

PU

MT

1

U1

3X

C6202P

50

Vo

ut

1V

in2

GND 3

R1

9

10K

RA

3D

47

k

54

TP

53

TP

38

+C

11

22

0u

F

R1

5

0.4

3R

R6

9

RU

E1

85

+C

76

15

0u

F

TP

76

L1

15

uH

SW

1

Ta

ctile

1

2

3

4

Page 208: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

5 5

4 4

3 3

2 2

1 1

DD

CC

BB

AA

MC

0

MA

0

MB

1

TA

CH

OA

0T

AC

HO

A1

TA

CH

OB

0T

AC

HO

B1

TA

CH

OC

0T

AC

HO

C1

GN

D

GN

D

GN

D

PO

WE

RM

B

PO

WE

RM

C

PO

WE

RM

A

MC

IN1

IPO

WE

RD

IPO

WE

RC

DIG

ICI1

DIG

IDI1

IPO

WE

RB

MC

IN0

MC

PW

M

MC

1

MA

1

MB

0

INT

A0

DIR

A

INT

B0

DIR

B

INT

C0

DIR

C

MC

IN0

MC

PW

M

AD

C_

A0

I_O

NA

DIG

IA1

DIG

IA0

AD

C_

B0

I_O

NB

DIG

IB1

DIG

IB0

AD

C_

C0

I_O

NC

DIG

IC1

DIG

IC0

DO

A

RE

A

DE

A

DIA

AD

C_

D0

I_O

ND

DIG

ID1

DIG

ID0

MC

IN1

MA

0M

AIN

1M

A1

DIG

IAI1

MB

IN0

MB

PW

M

MB

IN1

MA

IN0

MA

IN1

MA

PW

M

MB

IN0

MB

IN1

MB

PW

M

MA

IN0

INT

B0

DIR

B

RE

AD

IGID

I0D

IGID

I1

DO

A

MA

PW

M

MA

IN0

MA

IN1

DE

A

DIG

IA1

DIG

IA0

DIG

IC0

DIG

IC1

DIG

ID1

DIG

IB0

DIG

IBI1

DIG

IB1

DIG

ID0

GN

DG

ND

DIG

IAI1

GN

D

IPO

WE

RB

IPO

WE

RA

GN

DG

ND

AD

C_

B0

GN

D

DIG

ICI0

IPO

WE

RC

GN

DIP

OW

ER

DD

IGIA

I0

I_O

NB

IPO

WE

RA

PO

WE

RM

A

I_O

NA

DIG

ICI1

AD

C_

A0

I_O

ND

DIG

IBI1

DIG

IBI0

I_O

NC

PO

WE

RM

B

DIG

IDI0

GN

D

PO

WE

RM

C

DIG

IDI1

TA

CH

OA

1

TA

CH

OA

0T

AC

HO

B0

TA

CH

OB

1T

AC

HO

C1

DIR

C

TA

CH

OC

0

AD

C_

D0

AD

C_

C0

DIA

INT

A0

DIR

A

INT

C0

P_

EN

MB

0

MB

IN1

MB

1

MB

IN0

MC

0M

CIN

0

MC

1

MC

IN1

DIG

IAI0

DIG

IBI0

DIG

ICI0

DIG

IDI0

VC

C3V

VC

C3V

VC

C3V

VC

C3V

VC

C3V

VC

C3V

VC

C3V

VC

C3V

VC

C3V

VC

C_

RS

48

5

VC

C9

V_

MO

TO

R

VC

C3V

VC

C3V

VC

C3V

VC

C3V

VC

C3V

VC

C3V

VC

C3V

VC

C5V

VC

C_

AV

R5

V

VC

C9V

VC

C9V

VC

C5V

VC

C5V

VC

C9V

VC

C5V

VC

C_

AV

R5

VV

CC

_A

VR

5V

VC

C9V

VC

C_

AV

R5

V

VC

C_

RS

48

5

VC

C3V

VC

C3V

VC

C3V

VC

C3V

VC

C3V

VC

C3V

VC

C_

RS

48

5V

CC

_R

S4

85

VC

C_

RS

48

5V

CC

_R

S4

85

VC

C_

RS

48

5V

CC

_R

S4

85

VC

C_

RS

48

5V

CC

_R

S4

85

RE

A

DE

A

DIA

DO

A

DIR

B

INT

A0

DIR

A

MC

IN1

MC

IN0

MC

PW

M

INT

B0

INT

C0

DIR

C

AD

C_

A0

I_O

NA

DIG

IA0

DIG

IA1

DIG

ID1

DIG

IC1

DIG

IB1

AD

C_

B0

I_O

NB

DIG

IB0

AD

C_C

0

I_O

NC

DIG

IC0

AD

C_D

0

I_O

ND

DIG

ID0

MB

IN1

MB

IN0

MB

PW

M

MA

IN0

MA

PW

M

MA

IN1

P_

EN

of

Title

Pro

ject

Nu

mb

er

En

gin

ee

r/co

nstr

ucte

r

Sch

em

atic N

am

e

Da

te (

YY

YY

/MM

/DD

)

Dra

fte

rD

ate

(Y

YY

Y/M

M/D

D)

Sh

ee

tP

age S

ize

Ve

rsio

n

34

A2

LE

GO

Hard

ware

LE

GO

I

MotorA

MotorB

MotorC

MotorA

MotorB

MotorC

NM=NOT MOUNTED

TP88

NM

NM

NM

NM

NM

NM

NM

NM

L

EG

O

MIN

DS

TO

RM

S N

XT

C68

47

pF

C23

10

pF

R1

02

1M

EG

Q6A

PU

MH

4

C21

10

pF

TP

7

Q7B

PU

MT

1

U12F

74

HC

14

13

12

14 7

TP

15

R5

1M

EG

R36

10K

R38

10K

RA

1B

4.7

k

72

D20

1P

S226

C5

10

0p

F

R66

1M

EG

TP

29

TP

57

Q5B

PU

MT

1

R18

1M

EG

R49

10K

R39

10K

J7

Modula

r

1 2 3 4 5 6

R61

4.7

K

TP

23

TP

31

Q6B

PU

MH

4

C3

10

0p

F

R22

4.7

K

R57

1K

C25

10

pF

D6

1P

S226

TP

55

TP

8

TP

3

TP

45

R55

1K

TP

16

R1

05

1K

R1

03

1M

EG

R74

4.7

K

D11

1P

S226

R11

10K

D19

BA

T54S

TP

30

Q10

SS

8550

2

1 3

U12C

74

HC

14

56

14 7

RA

1A

4.7

k

81

TP

24

R3

10K

TP

32

C4

10

0p

F

Q3A

PU

MT

1

R8

1M

EG

U1

2E

74

HC

14

11

10

14 7C

65

47

pF

J3

Modula

r

1 2 3 4 5 6

TP

47

TP

17

R75

4.7

K

R26

4.7

K

R87

10K

C6

10

0p

F

D16

1P

S226

TP

4

TP

25

R73

1M

EG

TP

33

LB1836M

U1

LB

1836M

VC

C1

IN1

2

OU

T1

3

Vs1

4

OU

T2

5

IN2

6

GN

D7

GN

D14

IN3

13

OU

T3

12

Vs2

11

OU

T4

10

IN4

9

Vcont

8

D5

1P

S226

R44

4.7

K

D2

1P

S226

R1

19

82K

RA

1D

4.7

k

54

TP

79

R52

1K

R47

4.7

K

J8

Modula

r

1 2 3 4 5 6

C24

10

pF

TP

56

U1

2A

74

HC

14

12

14 7

R1

16

82K

TP

46

Q9A

PU

MT

1

TP

18

J9

Modula

r

1 2 3 4 5 6

R37

10K

R12

10K

D1

1P

S226

D17

BA

T54S

TP

43

D14

1P

S226

R1

04

1M

EG

TP

11

R1

12

82K

R10

10K

R48

10K

J1

Modula

r

1 2 3 4 5 6

TP

26

TP

34

Q7A

PU

MT

1

C66

47

pF

R51

10K

R72

1M

EG

R2

10K

D24

BA

S85

D30

RS

X301L-3

0

R86

10K

R33

39R

Q5A

PU

MT

1

TP

48

R46

4.7

K

TP

1

TP

10

TP

54

R7

1M

EG

TP

44

R1

10K

TP

12

C1 1

00

pF

Q4B

PU

MH

4

R32

39R

R63

4.7

K

TP

27

R59

1K

R68

1M

EG

D18

1P

S226

TP

35

R62

4.7

K

C27

10

pF

LB1930M

U2

LB

1930M

Vcc

1

NC

2

IN1

3

IN2

4

S-G

ND

5

NC

10

OU

T1

9

NC

8

OU

T2

7

P-G

ND

6

R35

39R

R1

17

82K

R53 1K

R1

14

82K

R58

1K

RA

1C

4.7

k

63

R50

10K

R60

4.7

K

R76

4.7

K

D21

1P

S226

C20

10

pF

TP

19

R6

1M

EG

R45

4.7

K

TP

9

TP

5D

31P

S226

R77

4.7

K

TP

49

R4

1M

EG

D13

1P

S226

D22

1P

S226

TP

13

C67

47

pF

Q3B

PU

MT

1

TP

28

R1

15

82K

R1

10

10K

D4

1P

S226

U3

ST

485

RO

1

RE

2

DE

3

DI

4

VC

C8

B7

A6

GN

D5

R9

1M

EG

TP

21

R56

1K

C22

10

pF

R34

39R

Q8

BC

85

7B

1

2 3

TP

80

C2

10

0p

F

TP

6

Q4A

PU

MH

4

R1

13

82K

R1

06

1.8

R

C26

10

pF

J2

Modula

r

1 2 3 4 5 6

TP

14

TP

89

U1

2B

74

HC

14

34

14 7

J6

Modula

r

1 2 3 4 5 6

R1

18

82K

TP

20

D12

1P

S226

R54

1K

C40

10

0n

F

TP

22

D8

LL4148

Q9B

PU

MT

1

U12D

74

HC

14

98

14 7

+C

61

22

0u

F

D15

1P

S226

Page 209: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

5 5

4 4

3 3

2 2

1 1

DD

CC

BB

AA

of

Title

Pro

ject

Nu

mb

er

En

gin

ee

r/co

nstr

ucte

r

Sch

em

atic N

am

e

Da

te (

YY

YY

/MM

/DD

)

Dra

fte

rD

ate

(Y

YY

Y/M

M/D

D)

Sh

ee

tP

age S

ize

Ve

rsio

n

44

A2

LE

GO

Hard

ware

LE

GO

I

POWER BLOCK

BATTERY SUPPLY

VCC9V

VCC_AVR5V

VCC3V

STEP-DOWN 5V

9V SENSOR

CURRENT GENERATOR

SENSER VOLTAGE

RS485

LDO 3.3V

AT91SAM7S ARM

DISPLAY

BT

ATMEGA48

BUTTOM 0 - 3

ON/OFF

POWER_EN FROM ATMEGA48(PB7)

COMMUNICATION BLOCK

AT91SAM7S

BLUE TOOTH

FULL UART 4 WIRE

VMBT_STATE

VMBT_REQ

I2C

ATMEGA48

DISPLAY

RXD0

TXD0

RS 485

HS PORT

DEA REA

SPI

ARM BLOCK

OUTPUT

INPUT

AT91SAM7S

MAPWM

MAIN1

MBPWM

MCPWM

MCIN0

MCIN1

INTA

INTB

INTC

DIR_A

DIR_B

DIR_C

ADC_A0

ION_A

DIGIA0

ATMEGA48

INPUT

OUTPUT

AVR BLOCK

ADC_B0

ADC_C0

ADC_D0

ION_B

ION_C

ION_D

DIGIA1

DIGIB0

DIGIB1

DIGIC0

DIGIC1

DIGID0

DIGID1

DOA

DIA

BUTTOM 1 - 3 ADC

MBIN1

SPI

MOTORDRIVER

MBIN0

MAIN0

SOUND

VCC9V ADC_BATT

PC_USB

BUTTOM 0

BTRST

BATT_ADC/SAMBA

BATT_PULS

USB_DP_PULL_UP

DDP, DDM

9V

DEA REA

ADC_I

USB_ADC

DIGID1_ADC

VCC9V_MOTOR

VCC5V_SW

SENSOR PULL-UP

SAMBA

VCC_RS485

VCC5V

5V LDO

SOUND VOLTAGE

L

EG

O

MIN

DS

TO

RM

S N

XT

Page 210: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

5 5

4 4

3 3

2 2

1 1

DD

CC

BB

AA

RS

TD

IS

BU

TT

ON

0

BU

TT

_A

DC

GN

DS

OB

T

SIB

TS

CK

BT

CS

DIS

BU

TT

_A

DC

VC

C5

V

GN

DV

CC

3V

VC

C3

V

SO

BT

CS

DIS

SC

KB

TS

IBT

BU

TT

ON

0

VC

C3

V

VC

C3

VV

CC

5V

of

Title

Pro

ject

Nu

mb

er

En

gin

ee

r/co

nstr

ucte

r

Sch

em

ati

c N

am

e

Da

te (

YY

YY

/MM

/DD

)

Dra

fte

rD

ate

(Y

YY

Y/M

M/D

D)

Sh

ee

tP

ag

e S

ize

Ve

rsio

n

11

A4

LE

GO

Ke

yp

ad

LE

GO

A

Connector to main PCB

TP1

TP4

TP5

L

EG

O

MIN

DS

TO

RM

S N

XT

J1

10

pin

12

34

56

78

910

C2

1u

F

J5

DR

ILL

2.0

mm

J2

DR

ILL

2.0

mm

R5

10

ME

G

TP

7

SW

2O

N/O

FF

12

TP

2

R6

0R

R3

1K

J3

DR

ILL

2.0

mm

TP

8

TP

3

TP

9

TP

11

J4

DR

ILL

2.0

mm

LC

D1

LC

D

CS

01

RS

T2

CD

3

SC

K4

SD

A5

VC

C6

GN

D7

VB

1+

8

VB

1-

9

VB

0-

10

VB

0+

11

VLC

D12

C3

10

0n

FR

14

.7K

TP

10

R4

10

0K

SW

4O

N/O

FF

12

C1

1u

F

C4

33

nF

SW

3O

N/O

FF

12

R2

2.2

K

SW

1O

N/O

FF

12

TP

6

Page 211: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

54

32

1

DD

CC

BB

AA

of

Title

Pro

ject

Nu

mb

er

En

gin

ee

r/co

nstr

ucte

r

Sch

em

ati

c N

am

e

Da

te (

YY

YY

/MM

/DD

)

Dra

fte

rD

ate

(Y

YY

Y/M

M/D

D)

Sh

ee

tP

age S

ize

Ve

rsio

n

11

A4

LE

GO

Lig

ht se

nso

r

LE

GO

F

Drills for

LED fix

L

EG

O

MIN

DS

TO

RM

S N

XT

J2

DR

ILL

2.3

mm

R2

4.7

K

R6

56

0R

Q2B

PU

MX

1

J3

DR

ILL

2.3

mm

Q1A

PU

MT

1

Q1B

PU

MT

1

R9

10K

D1

Re

d

R1

18

0R

R4

33

0k

Q3

SF

H3

09

-4

Q4

BC

84

71

3 2

Q2A

PU

MX

1

R3

33

0R

J1

Modula

r

1 2 3 4 5 6

R7

10K

R8

1.8

K

R5

6.8

kC

2

47

0n

F

Page 212: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

5 5

4 4

3 3

2 2

1 1

DD

CC

BB

AA

VC

C/2

DIG

IAI0

VC

C/2

DIG

IAI0

DIG

IAI1

VC

C/2

Re

ct.

in

VC

C/2

Re

ct.

in

DIG

IAI1

VC

C

VC

C

VC

CV

CC

VC

C

VC

C

VC

C

VC

C

VC

C

VC

C

of

Title

Pro

ject

Nu

mb

er

En

gin

ee

r/co

nstr

ucte

r

Sch

em

ati

c N

am

e

Da

te (

YY

YY

/MM

/DD

)

Dra

fte

rD

ate

(Y

YY

Y/M

M/D

D)

Sh

ee

tP

ag

e S

ize

Ve

rsio

n

11

A4

LE

GO

So

un

d s

en

so

r

LE

GO

C

U1 cap

U2 cap

L

EG

O

MIN

DS

TO

RM

S N

XT

R1

2

56

0K

TP

5

TP

1

J1

Mo

du

lar

1 2 3 4 5 6

+C

2

10

uF

C1

28

.2p

F

C1

22

0n

F

R2

0

22

0K

R1

64

70

K

R9

4.7

K

C5

2.2

nF

D1

BA

V9

9

C8

47

0n

F

+ -U

1A

LM

32

4

3 21

4 11

R1

0

10

K

R5

82

k

C7

4.7

uF

TP

2

R4

4.7

K

R1

22

0K

R2

1

56

0R

R1

8

82

K

+ -U

1B

LM

32

4

5 67

4 11

C6

68

pF

C9

10

0n

F

R1

4

4.7

K

R7

18

K

TP

3

R6

56

0K

+ -U

2A

LM

35

8

3 21

8 4

R3

1K

+ -U

1D

LM

32

4

12

13

14

4 11

R2

22

0K

R1

9

47

0K

C1

0

10

0n

F

R8

10

0K

C3

22

0n

F

R1

1

56

KC

11

10

nF

+ -U

1C

LM

32

4

10 9

8

4 11

TP

4

J2

2 P

ad

12

+ -U

2B

LM

35

8

5 67

8 4

R1

7

22

0K

R2

2

10

K

R1

5

10

0K

R1

3

4.7

K

Q1

BC

84

8B

1

3 2

C4

68

nF

Page 213: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

5 5

4 4

3 3

2 2

1 1

DD

CC

BB

AA

of

Title

Pro

ject

Nu

mb

er

En

gin

ee

r/co

nstr

ucte

r

Sch

em

ati

c N

am

e

Da

te (

YY

YY

/MM

/DD

)

Dra

fte

rD

ate

(Y

YY

Y/M

M/D

D)

Sh

ee

tP

ag

e S

ize

Ve

rsio

n

11

A4

LE

GO

To

uch

se

nso

r

LE

GO

A

BN Cable:

1: White

2: Black

3: Red

4: Green

5: Yellow

6: Blue

L

EG

O

MIN

DS

TO

RM

S N

XT

R1

2.2

K

SW

1

D3

C

12

3

J1

Mo

du

lar

1 2 3 4 5 6

Page 214: FACULTAD DE INGENIERÍA ELÉCTRICA Y …bibdigital.epn.edu.ec/bitstream/15000/3951/1/CD-3719.pdf · equipado el kit 8527: de contacto, de luz, de sonido, de ultrasonido y de rotación.

5 5

4 4

3 3

2 2

1 1

DD

CC

BB

AA

DIG

IAI0

DIG

IAI1

VC

C_

5V

VC

CG

ND

GN

D

P1

.0

DIG

IAI1

DIG

IAI0

P3

.0/S

DA

P1

.3/S

CL

P1

.0

P2

.0P

3.0

/SD

A

P2

.1

P1

.3/S

CL

P2

.1

RE

SE

T

P2

.0

VC

C

VC

C_

5V

VC

C_

5V

VC

C

VC

C

VC

C_

5V

VC

C_

5V

VC

C_

5V

VC

C_

5V

VC

C_

5V

4.3

V_P

ow

er

4.3

V_P

ow

er

4.3

V_P

ow

er

of

Title

Pro

ject

Num

be

r

En

gin

ee

r/co

nstr

ucte

r

Sch

em

ati

c N

am

e

Da

te (

YY

YY

/MM

/DD

)

Dra

fte

rD

ate

(Y

YY

Y/M

M/D

D)

She

et

Page S

ize

Ve

rsio

n

11

A3

LE

GO

Ult

raso

nic

se

nso

r

LE

GO

G

TP12

TP13

TP14

TP3

L

EG

O

MIN

DS

TO

RM

S N

XT

+C

13

10

uF

U1

F

CD

40

49

14

15

C8

10

pF

D3

BA

V99

C5

22

0pF

Q3A

PU

MH

4

U1

C

CD

40

49

76

R1

9

10K

C1

1n

F

Q3B

PU

MH

4

Q1A

PU

MX

1

C1

5

22

pF

X1

3.5

8M

Hz

13

2

PZ

1

TC

T40-1

2S

2

21

C9

10

nF

TP

10

R1

0

100K

R7

22

0R

TP

5

C1

0

47

pF

R1

4

4.7

K

RA

1B

10K

72

Q2B

PU

MX

1

R1

7100K

R6

1M

EG

C2

10

0pF

D4

LL4148

U1

E

CD

40

49

11

12

R2

410K

R1

6

10

0R

TP

12

RA

1D

10K

54

U1

D

CD

40

49

910

TP

6

R1

3

82K

TP

11

R1

4.7

K

R3

22

0R

R2

310K

C1

1

47

pF

C1

91

00

nF

R1

5

4.7

K

R1

2

82K

R9

22K

R2

1M

EG

C6

10

0pF

TP

7

PZ

2

TC

T40-1

2F

221

C3

10

0pF

Q2A

PU

MX

1

RA

1C

10K

63

Q6A

PU

MH

4

R2

1

3.3

ME

G

J1

Modula

r

1 2 3 4 5 6

C1

41

00

nF

U1

A

CD

40

49

32

TP

8

U1

B

CD

40

49

54

TP

2C

7

10

pF

U2

ES

C015

GN

D11

VC

C14

P3.0

24

P2.2

26

RE

SE

TB

34

P1.0

33

P1.1

32

P1.2

31

P1.3

30

VC

C29

P2.0

28

P2.1

27

GN

D38

OS

CO

37

OS

CI

36

P3.1

23

RA

1A

10K

81

C4

1n

F

R8

47K

R1

81.5

ME

G

R5

22

0R

Q1B

PU

MX

1

R2

2

1.8

ME

G

R1

1

330K

D2

BA

V99

+C

16

10

uF

C1

2

10

0nF

Q6B

PU

MH

4

R4

1M

EG

TP

9