Está en la página 1de 86

DESARROLLO DE UN PROTOTIPO DE BRAZO ROBÓTICO CON COMUNICACIÓN

INALÁMBRICA “BLUETOOTH” PARA LA REALIZACIÓN DE TAREAS ESPECÍFICAS


PROMOVIENDO LA AUTOMATIZACIÓN DE PROCESOS COMO SOLUCIÓN VIABLE
EN EL AUMENTO DE LA PRODUCTIVIDAD

DANIEL OSORIO CÁRDENAS

PROYECTO DE GRADO PARA OPTAR AL TÍTULO DE BACHILLER

PROYECTO DE ROBÓTICA

DIRECTOR: Ing. IVÁN D. ERAZO GONZÁLEZ

COLEGIO JEFFERSON

ÁREA DE CIENCIAS DE LA COMPUTACIÓN

YUMBO

2019-2020
Nota de aceptación:

Aprobado por el Comité de Grado en


cumplimiento de los requisitos exigidos por
la Colegio Jefferson para optar al título de
Bachiller.

Jurado

Jurado

Yumbo, día de mes de 2020


AGRADECIMIENTOS

Quiero agradecerle a mi familia por todas las horas que no dediqué a estar con ellos debido
a la elaboración de este proyecto, pero que estuvieron siempre apoyándome anímicamente
para lograr sacar este trabajo adelante. Agradecerle a mi tutor de proyecto por los
conocimientos que me dio y por su disponibilidad incondicional siempre que lo necesité. Por
último, agradezco a todos los ingenieros, profesores y compañeros que de alguna u otra
forma aportaron para que este trabajo esté completado. Cada aporte, por más mínimo que
haya sido, se ha reflejado en la producción final del proyecto. Infinitas gracias a todos.

3
ÍNDICE

1. PLANTEAMIENTO DEL PROBLEMA ......................................................................... 14

2. MODALIDAD DEL PROYECTO .................................................................................. 16

3. OBJETIVOS ................................................................................................................ 17

3.1 OBJETIVO GENERAL ............................................................................................... 17

3.2 OBJETIVOS ESPECÍFICOS ...................................................................................... 17

4. JUSTIFICACIÓN ......................................................................................................... 18

5. DELIMITACIÓN DEL OBJETO DE ESTUDIO ............................................................. 20

6. MARCO TEÓRICO ...................................................................................................... 21

6.1 ORIGEN DE LA ROBÓTICA ...................................................................................... 21

6.2 TIPOS DE ROBOT .................................................................................................... 22

6.2.1 Definición de Robot Industrial Manipulador ............................................................. 22

6.2.2 Otras definiciones de robots ................................................................................... 23

6.2.3 Clasificación Para los distintos Robots.................................................................... 24

6.3 ESTRUCTURA DEL ROBOT ..................................................................................... 25

6.3.1 Grados de libertad de un robot................................................................................ 26

6.3.2 Elementos terminales ............................................................................................. 27

6.4 SISTEMA ELECTRÓNICO ........................................................................................ 28

6.4.1 Electrónica digital .................................................................................................... 28

6.4.2 Números binarios .................................................................................................... 31

6.4.3 Lógica programable ................................................................................................ 32

6.5 PROGRAMACIÓN ..................................................................................................... 32

4
6.5.1 Concepto de programación ..................................................................................... 32

6.5.2 Lenguaje de programación ..................................................................................... 33

6.5.3 Algoritmos computacionales ................................................................................... 34

6.5.4 Programación en Arduino ....................................................................................... 35

7. ARQUITECTURA MODULAR ..................................................................................... 39

8. DISEÑO VIRTUAL EN 3D DE LA ESTRUCTURA DEL ROBOT................................. 40

8.1 VISTA EN EXPLOSIÓN ............................................................................................. 40

8.2 DESCRIPCIÓN ESTRUCTURA BRAZO ROBÓTICO 3D .......................................... 41

8.3 IMPRESIÓN 3D ......................................................................................................... 44

9. DISEÑO ELECTRÓNICO ............................................................................................ 46

9.1 PLACA ARDUINO ..................................................................................................... 46

9.2 MÓDULO HC-05........................................................................................................ 47

9.2.1 Indicaciones y recomendaciones del módulo Bluetooth .......................................... 49

9.3 SERVOMOTOR ......................................................................................................... 50

9.3.1 MG996R ................................................................................................................. 50

9.3.2 SG90 ...................................................................................................................... 52

9.3.3 Implementación ...................................................................................................... 53

9.4 FUENTE DE ENERGÍA EXTERNA ............................................................................ 58

10. ESTRUCTURA DE LA PROGRAMACIÓN ................................................................ 63

10.1 APP INVENTOR ...................................................................................................... 63

10.2 PROGRAMACIÓN APP INVENTOR ........................................................................ 64

10.2.1 Programación Pantalla de Inicio en App Inventor .................................................. 65

10.2.2 Programación Comunicación Bluetooth en App Inventor ...................................... 65

5
10.2.3 Programación Servomotores en App Inventor ....................................................... 67

10.2.4 Programación botón cerrar aplicación en App Inventor ......................................... 68

10.3 PROGRAMACIÓN ARDUINO .................................................................................. 69

10.3.1 Código Arduino ..................................................................................................... 72

11. INTEGRACIÓN DE LOS DIFERENTES MÓDULOS ................................................. 81

12. CONCLUSIONES ...................................................................................................... 82

13. REFERENCIAS Y BIBLIOGRAFÍA ........................................................................... 85

6
ÍNDICE DE FIGURAS

Figura 1. Brecha entre accidentes reportados y calificados como de origen laboral,


Colombia, 2003-2010 ............................................................................................... 15

Figura 2. Robot density in the manufacturing industry, 2018 ........................................... 18

Figura 3. Annual installations of industrial robots, 2017-2018 and 2019*-2022* .............. 19

Figura 4. Estructura mecánica de un robot y las piezas que lo componen ...................... 26

Figura 5. Fórmula de Grübler .......................................................................................... 27

Figura 6. Rango de niveles lógicos de tensión para un circuito digital ............................. 29

Figura 7. Impulsos ideales .............................................................................................. 30

Figura 8. Ejemplos de formas de onda digitales .............................................................. 31

Figura 9. Modelo de desarrollo en cascada..................................................................... 34

Figura 10. Diagrama de flujo de una lámpara ................................................................. 35

Figura 11. Condicionales ................................................................................................ 37

Figura 12. Ciclos ............................................................................................................. 37

Figura 13. Funciones digitales ........................................................................................ 38

Figura 14. Funciones analógicas .................................................................................... 38

Figura 15. Diseño del brazo robótico ensamblado en la plataforma Tinkercad ................ 39

Figura 16. Vista en explosión de la estructura del brazo ................................................. 40

Figura 17. Vista en explosión de la estructura de la pinza ............................................... 41

Figura 18. Organización del brazo para la impresión 3D ................................................. 45

Figura 19. Organización de la pinza para la impresión 3D .............................................. 45

Figura 20. Diseño electrónico para brazo robótico de 6 servomotores con comunicación
Bluetooth. Diseñado con el programa Fritzing .......................................................... 46

Figura 21. Componentes principales de la placa Arduino UNO. ...................................... 47

Figura 22. Módulo Bluetooth HC-05 ................................................................................ 48

7
Figura 23. Conexión Arduino y módulo Bluetooth ........................................................... 48

Figura 24. Circuito módulo Bluetooth ensamblado .......................................................... 49

Figura 25. Servomotor MG996R con accesorios ............................................................. 50

Figura 26. Plano Servomotor MG966R ........................................................................... 51

Figura 27. Microservomotor Sg90 con accesorios........................................................... 52

Figura 28. Plano servomotor SG90 ................................................................................. 52

Figura 29. Terminales de un servomotor convencional ................................................... 54

Figura 30. Ensamble del servomotor MG996R dentro del pedestal ................................ 54

Figura 31. Tornillos utilizados para conectar el horn con la base .................................... 55

Figura 32. Ensamblaje del servomotor base terminado................................................... 55

Figura 33. Ubicación servomotor brazo ........................................................................... 56

Figura 34. Ubicación servomotor antebrazo .................................................................... 56

Figura 35. Ubicación servomotor rotación ....................................................................... 57

Figura 36. Ubicación servomotor inclinación ................................................................... 57

Figura 37. Ubicación servomotor pinza ........................................................................... 58

Figura 38. Suministro de cargador de celular de 5.3V 2.0A ............................................ 59

Figura 39. Fuente de alimentación alternativa 5.3V 2.0A ................................................ 60

Figura 40. Banda elástica ubicada en la base ................................................................. 61

Figura 41. Revestimiento de cables con manguera en espiral ½ pulgada ....................... 61

Figura 42. Brazo robótico ensamblado............................................................................ 62

Figura 43. Interfaz de usuario de App Inventor para diseñar la aplicación móvil ............. 64

Figura 44. Interfaz de usuario de App Inventor para los bloques de programación ......... 64

Figura 45. Bloques para la pantalla de inicio ................................................................... 65

Figura 46. Bloques para la comunicación “Bluetooth” ..................................................... 66

Figura 47. Bloque para el control de un servomotor con App Inventor ............................ 67

8
Figura 48. Bloques para botón de cerrar aplicación ........................................................ 68

Figura 49. Inclusión de librerías y declaración de servomotores ..................................... 69

Figura 50. Programación del setup ................................................................................. 70

Figura 51. Programación del loop ................................................................................... 71

Figura 52. Programación para control de velocidad del servomotor ................................ 72

9
ÍNDICE DE TABLAS

Tabla 1. Clasificación de los robots según generaciones ................................................ 24

Tabla 2. Operadores lógicos de las variables .................................................................. 36

Tabla 3. Descripción de la estructura .............................................................................. 44

Tabla 4. Características Servomotor MG996R ................................................................ 51

Tabla 5. Características Servomotor SG90 ..................................................................... 53

10
GLOSARIO

Actuadores: Generan el movimiento de los elementos del robot según las órdenes dadas
por la unidad de control.

Algoritmos: Un algoritmo es un conjunto de instrucciones preestablecidas, con sintaxis y


semántica que permita generar una estructura organizada para la ejecución de una
determinada tarea.

Amperaje: Unidad de medida utilizada en circuitos eléctricos para medir el flujo de corriente
eléctrica.

Arduino: Es una compañía líder en la comercialización de hardware y software de fuente


abierta. Su fuerte es el diseño de placas para el desarrollo de dispositivos digitales, con los
cuales se puede interactuar con objetos y controlarlos.

Automatización: Aplicación de máquinas o de procedimientos automáticos en la


realización de un proceso o en una industria.

Baudios: Es una unidad de medida utilizada en telecomunicaciones, que representa el


número de símbolos por segundo en un medio de transmisión digital.

Bluetooth: Es una especificación industrial para redes inalámbricas de área personal


(WPAN) creado por Bluetooth Special Interest Group, Inc. que posibilita la transmisión de
voz y datos entre diferentes dispositivos mediante un enlace por radiofrecuencia en la
banda ISM de los 2.4 GHz.

Breadboard: Es una placa de pruebas para electrónica que contiene numerosos orificios
en los que es posible insertar cables y componentes para montar circuitos.

Cadena cinemática: Es una serie de eslabones o barras unidas por articulaciones. La


estructura mecánica de un robot manipulador constituye una cadena cinemática.

Comunicación serial: En telecomunicaciones e informática, es el proceso de envío de


datos de un bit a la vez, de forma secuencial, sobre un canal de comunicación o un bus.

Elemento terminal de robot: Objeto unido a la interfaz mecánica dispuesta en el extremo


del robot, para dotarle a éste de la funcionalidad necesaria para realizar su tarea. Se
incluyen pinzas, herramientas y dispositivos para facilitar la conexión con otros elementos.

11
Esclavo: Configuración del módulo Bluetooth en la cual se recibe información por medio
de la antena.

Grados De Libertad: Cada uno de los movimientos independientes que puede realizar
cada articulación con respecto a la anterior.

Hardware: Conjunto de elementos físicos o materiales que constituyen una computadora o


un sistema informático.

Interfaz de usuario: Es el medio con que el usuario puede comunicarse con una máquina,
equipo, computadora o dispositivo, y comprende todos los puntos de contacto entre el
usuario y el equipo.

Jumpers: Es un elemento que permite cerrar el circuito eléctrico del que forma parte dos
conexiones.

Lenguaje de programación: Un idioma artificial diseñado para expresar operaciones que


pueden ser llevadas a cabo por máquinas como los computadores.

Maestro: Configuración de módulo Bluetooth en la cual se envía información por medio de


la antena.

Modificación física: Modificación de la estructura mecánica o del sistema de control (se


excluyen cambios en los soportes de memoria: Disco, cinta, ROM, etc.).

Monitor serial: Esta herramienta abrirá una consola con la que podemos comunicarnos
con Arduino, tanto para mandarle comandos como para recibir información . Esto es muy
útil para conocer el estado de las variables de programa y saber qué es lo que realmente
está pasando dentro de nuestro Arduino.

Pinza: Elemento Terminal concebido para coger y sujetar.

Programación: El proceso por medio del cual se diseña, codifica, limpia y protege el código
fuente de programas computacionales.

Robot: Máquina programable capaz de realizar trabajos antes reservados solo a las
personas.

Robot Industrial Manipulador: Manipulador de 3 o más ejes, con control automático,


reprogramable, multiaplicación, móvil o no, destinado a ser utilizado en aplicaciones de

12
automatización industrial. Incluye al manipulador (sistema mecánico y accionadores) y al
sistema de control (software y hardware de control y potencia).

Robot manipulador industrial Reprogramable: Aquéllos en los que los movimientos


programados o las funciones auxiliares pueden cambiarse sin modificación física.

Robot redundante: Aquellos robots que tengan más grados de libertad controlables que
los mínimamente necesarios para posicionarse y orientarse en su espacio de trabajo
presentarán cierto nivel de redundancia.

Robot Teleoperado: Un robot que puede ser controlado remotamente por un operador
humano, extendiendo las capacidades sensoriales y motoras de éste a localizaciones
remotas.

Software: Conjunto de programas y rutinas que permiten a la computadora realizar


determinadas tareas.

Telerobot: Cualquier robot cuya tarea pueda ser monitorizada y reprogramada a distancia
por el humano.

Tensión: Magnitud física que cuantifica la diferencia de potencial eléctrico entre dos puntos.

Voltaje: Trabajo por unidad de carga ejercido por el campo eléctrico sobre una partícula
cargada para moverla entre dos posiciones determinadas.

13
1. PLANTEAMIENTO DEL PROBLEMA

Las dinámicas de trabajo actuales implican ciertos riesgos inherentes a las actividades que
se realizan. Es bien sabido que cualquier persona que trabaja, así sea desde su casa, está
expuesta a diferentes circunstancias que pueden ser perjudiciales tanto a corto como a
largo plazo. En empresas donde los empleados están desarrollando trabajos manuales,
como en metaleras, líneas de producción, entre otras; los riesgos laborales se presentan
más la exposición a sustancias peligrosas, cargas pesadas, o movimientos repetitivos que
ponen en peligro la salud e incluso la vida de los trabajadores.

Tal como lo dice el tercer artículo de la ley 1562 de 2012: “Accidente de trabajo. Es
accidente de trabajo todo suceso repentino que sobrevenga por causa o con ocasión del
trabajo, y que produzca en el trabajador una lesión orgánica, una perturbación funcional o
psiquiátrica, una invalidez o la muerte” (Ministerio de Salud, 2012).

También lo expresado en el cuarto artículo de la misma ley:

Enfermedad laboral. Es enfermedad laboral la contraída como resultado de


la exposición a factores de riesgo inherentes a la actividad laboral o del
medio en el que el trabajador se ha visto obligado a trabajar. El Gobierno
Nacional, determinará, en forma periódica, las enfermedades que se
consideran como laborales y en los casos en que una enfermedad no figure
en la tabla de enfermedades laborales, pero se demuestre· la relación de
causalidad con los factores de riesgo ocupacionales será reconocida como
enfermedad laboral, conforme lo establecido en las normas legales vigentes.

Es así como en estos ambientes laborales los trabajadores están bajo un peligro constante,
que podría evitarse mediante procesos que no involucren personal humano en el trabajo de
campo, sino en el control de estos sistemas de automatización que evitan estos riesgos
laborales.

Como lo expone Mauricio Tovar en el Encuentro de Salud y Trabajo en Medellín en el 2015.


En el mundo diariamente ocurren 5000 muertes por condiciones laborales, que anualmente
suman un total de 2.300.000 muertos. Además, se registran 270 millones de accidentes de
trabajo cada año y se diagnostican 160 millones de enfermedades profesionales anuales.
Esto se ve reflejado en una pérdida del 4% del PIB mundial (Torres Tovar, 2015).

14
Figura 1. Brecha entre accidentes reportados y calificados como de origen laboral,
Colombia, 2003-2010 (Fuente: Torres Tovar, 2015).

En la Figura 1 queda demostrado que las cifras ya dadas de accidentes laborales podrían
ser aún mayores, ya que las empresas buscan a toda costa evitar pagar los costos que
estos accidentes implican, además teniendo en cuenta que estos costos no solo aplican a
accidentes mortales ni a incapacidades permanentes, sino a cualquier perjuicio ocasionado
con el trabajador.

15
2. MODALIDAD DEL PROYECTO

Este trabajo expondrá principalmente una producción tecnológica, que consiste en el


desarrollo de un brazo robótico que sea práctico y funcional. Esto se logrará a partir de los
conocimientos adquiridos en la clase de Ciencias de la Computación, los conceptos
investigados en el marco teórico, y la supervisión del ingeniero y tutor Iván Darío Erazo

Asimismo, se creará una aplicación para dispositivos móviles en la cual se encontrarán


todos los controles y funciones del brazo. Esta aplicación es un complemento que permitirá
el manejo remoto del brazo robótico.

Por otro lado, se realizará un informe que contenga el registro del proceso, las dificultades,
conclusiones y recomendaciones que se encuentren durante el desarrollo del brazo
robótico. Esto para orientar a las personas que se motiven a desarrollar su propio prototipo
de robot.

La idea es promover y demostrar que el uso de este tipo de herramientas en el ámbito


escolar es perfectamente viable para lograr enriquecer los conocimientos y aplicarlos a la
resolución de problemáticas reales, como el aumento de la productividad en el sector
industrial.

16
3. OBJETIVOS

3.1 OBJETIVO GENERAL

Desarrollar un prototipo de brazo robótico con comunicación inalámbrica “Bluetooth” para


la realización de tareas específicas promoviendo la automatización de procesos como
solución viable en el aumento de la productividad.

3.2 OBJETIVOS ESPECÍFICOS

♦ Diseñar la estructura mecánica del dispositivo con 5 Grados De Libertad (GDL) para su
posterior materialización con tecnologías de impresión tridimensional permitiendo la
realización de tareas específicas.

♦ Construir el sistema electrónico del brazo robótico utilizando Arduino y tecnología


Bluetooth que ejecute instrucciones concretas para un funcionamiento práctico en líneas de
producción.

♦ Elaborar los algoritmos computacionales necesarios que realicen la comunicación


maestro-esclavo entre el brazo robótico y el controlador mediante una aplicación móvil para
el manejo preciso y seguro del brazo robótico.

♦ Integrar los diferentes subsistemas para el completo funcionamiento del brazo robótico
con una relación operador-robot eficaz y práctica.

17
4. JUSTIFICACIÓN

Colombia es uno de los países con menor proporción de robots por trabajadores. Es tan
bajo el uso de robots en el sector industrial que a hoy no existe una estadística oficial del
Estado que indique la proporción exacta. Algunos expertos como el ingeniero Camilo
Barrera, gerente general de la empresa Robotika, aseguran que es menor al 1 por cada
10.000 trabajadores (Barrera, 2017). Por otro lado, según la Federación Internacional de
Robótica, en Latinoamérica hay 42.041 robots instalados, de los cuales en Colombia aporta
solamente 149 (Federación Internacional de Robótica, 2016).

Figura 2. Robot density in the manufacturing industry, 2018 (Fuente: IFR, 2019).

Regiones como Asia y Europa tienen un número muy alto de robots comparado al
continente americano, además hay que tener en cuenta que en América la gran mayoría de
robots los concentra entre EE.UU, Canadá y México, por lo que el panorama para
Latinoamérica es aún peor. Esto está evidenciado en las estadísticas de la Federación
Internacional de Robótica en el 2019.

18
Figura 3. Annual installations of industrial robots, 2017-2018 and 2019*-2022* (Fuente:
IFR, 2019).

En Colombia hay una tendencia generalizada en creer que las soluciones industriales como
los robots son excesivamente costosos, por lo que muchas empresas ni siquiera lo
consideran como una opción. Además, se cree que los robots todavía son cosa de países
desarrollados y que el mantenimiento de estos sistemas sólo puede venir del extranjero ya
que se piensa que en Colombia no hay personal capacitado para estas máquinas. Esto
explica el bajo uso de estos recursos en Colombia.

Con base en las estadísticas anteriores, el presente trabajo contribuiría significativamente


en el aumento de la productividad, por medio de la producción tecnológica a desarrollar que
pretende concientizar sobre los procesos de automatización, mostrando como estos
pueden ser implementados eficazmente en líneas de producción. Además, en el ámbito
escolar del colegio Jefferson demostraría que las soluciones a los grandes problemas de
producción en las industrias pueden comenzar a resolverse incluso desde iniciativas
escolares, implementando los conocimientos de las clases y materializándolos.

19
5. DELIMITACIÓN DEL OBJETO DE ESTUDIO

Con base en lo expresado anteriormente en este informe, se considera importante en el


marco del proceso escolar del Colegio Jefferson, el desarrollo de un brazo robótico. Esta
producción está dividida en tres fases: Diseño, programación y ensamble.

La fase de diseño se realizará con tecnologías de diseño e impresión 3D, teniendo en


cuenta los grados de libertad establecidos; posteriormente, se elaborará el circuito
electrónico que permita el funcionamiento correcto del brazo robótico con tecnología
Bluetooth. Además, se diseñará el circuito electrónico que ejecute las instrucciones
específicas.

La fase de programación incluye todos los algoritmos computacionales que necesita el


sistema electrónico para poder ejecutar las tareas, también incluye la aplicación móvil que
permitirá entregar las instrucciones al brazo de manera remota y eficaz.

La fase de ensamble consiste en integrar todos los subsistemas para que el brazo robótico
pueda ejercer sus funciones a cabalidad y cumpliendo con los objetivos establecidos.

Mediante la elaboración de este proyecto se podrá demostrar que los robots son una
herramienta viable para dar soluciones en el sector industrial; dejando atrás los paradigmas
mencionados anteriormente; que retrasan el progreso, la productividad y la innovación de
países en vía de desarrollo.

Esta producción tecnológica sobre el desarrollo de un brazo robótico operado remotamente


se llevará a cabo en el Colegio Jefferson, ubicado en el municipio de Yumbo en el Valle del
Cauca, Colombia. Este municipio es reconocido nacionalmente por ser un epicentro donde
se establecen grandes fábricas e industrias que satisfacen la demanda nacional e
internacional.

20
6. MARCO TEÓRICO

6.1 ORIGEN DE LA ROBÓTICA

La historia de los robots tiene su origen en la búsqueda del ser humano en tener máquinas
que logren imitar movimientos y funciones propias de los organismos vivos, con intención
de reemplazar el esfuerzo físico humano por máquinas que mejoren la calidad de vida.

Los robots han sido motivo de numerosos escritos de ciencia ficción, ya que en épocas
pasadas se pensaba que eran ideas demasiado futuristas. Por lo tanto, a lo largo de la
historia existen evidencias tanto de robots o autómatas reales, como de escritos meramente
imaginativos. De hecho, el término robot viene del checo roboti, inventado por Josef Čapek
basándose en la palabra eslava robota, que literalmente significa “trabajo forzado”. El
término fue inventado por Josef cuando su hermano menor, Karel Čapek le preguntó cómo
renombrar la palabra laboři para usarla en su obra (Čapek, 1933, págs. 435-436). Así es
como la palabra aparece formalmente por primera vez en 1921, en la obra teatral de Karel
titulada Rossumovi univerzální roboti. El argumento de esta obra brevemente consiste en
unos robots construidos por el científico llamado Rossum, que luego de realizar numerosos
trabajos físicos para sus patrones, terminan por revelarse y acaban con la humanidad
(Aracil, Barrientos, Balaguer, & Peñin, 2007).

Finalmente, es el escritor de raíces rusas Isaac Asimov quien logra darle relevancia al
término robot con su obra literaria. Él, en su historia titulada “The Caves of Steel”, propone
lo que para él son las tres leyes de la robótica (Asimov, The Caves of Steel, 1942):

1. Un robot no puede perjudicar a un ser humano, ni con su inacción permitir


que un ser humano sufra daño.

2. Un robot ha de obedecer las órdenes recibidas de un ser humano, excepto


si tales órdenes entran en conflicto con la primera ley.

3. Un robot debe proteger su propia existencia mientras tal protección no


entre en conflicto con la primera o segunda ley.

Asimov agregaría posteriormente una cuarta ley en 1985 en la novela Robots e Imperio,
llamada la ley cero que dice: “un robot no puede lastimar a la humanidad o, por falta de
acción, permitir que la humanidad sufra daño”. Esta ley reemplaza a la primera ley
propuesta en 1942 ya que antepone el bien común sobre el individual (Asimov, 1985). Es

21
así como Isaac Asimov determinó las reglas principales que debe cumplir un robot para no
convertirse en una amenaza contra la humanidad.

6.2 TIPOS DE ROBOT

El término robot, gracias al acelerado auge que ha tenido la robótica en las ciencias,
recurrentemente necesita ser especificado y en ocasiones ampliado. Esto debido a que los
avances tecnológicos han logrado materializar aquellas fantasiosas maquinarias de
escritores como Asimov o Bradbury, haciendo entonces que el término pasase de ser un
imaginario lejano a ser realidad.

Según la Real Academia Española, la definición de robot es “Máquina programable capaz


de realizar trabajos antes reservados solo a las personas” (Real Academia Española, 2020).

Aún para expertos en robótica como Antonio Barrientos, esta definición universal sobre los
robots se queda corta para lograr incluir el diverso conjunto de dispositivos que son
considerados actualmente como robots (Aracil, Barrientos, Balaguer, & Peñin, 2007).

Es por esto que últimamente para lograr referirse a los robots de manera más específica,
se utiliza un adjetivo posterior a la palabra robot. Esto para su fácil identificación de acuerdo
a sus características inherentes o campos de trabajo. Existen robots aéreos, autónomos,
espaciales, manipuladores, bio-médicos, de educación, de entretenimiento, por nombrar
algunos ejemplos.

Aunque hoy en día exista un amplio catálogo de los diferentes robots que existen, esto no
siempre ha sido así. Hasta mediados de los ochenta predominaban los robots
manipuladores utilizados principalmente en líneas de producción de fábricas o talleres. Este
tipo de robot se conoce técnicamente como robot industrial manipulador, por la función y el
campo de trabajo en el que ejerce. La definición de este tipo de robot si se ha logrado
establecer de manera correcta debido a que ha sido este el más utilizado y estudiado por
diferentes autoridades, a diferencia de otros tipos de robots cuyas definiciones todavía no
han logrado establecerse completamente. (Aracil, Barrientos, Balaguer, & Peñin, 2007)

6.2.1 Definición de Robot Industrial Manipulador

De lo anteriormente expuesto, se hace necesario determinar la definición de los robots


industriales manipuladores. Además, este será el prototipo de robot que se aspira a crear
al culminar este trabajo.

22
Continuando, la definición actual sobre robot manipulador industrial está inscrita en la
Organización Internacional de Estándares (ISO) en la que en la norma ISO 8373 establece:

Robot manipulador industrial (ISO): Manipulador de 3 o más ejes, con


control automático, reprogramable, multiaplicación, móvil o no, destinado a
ser utilizado en aplicaciones de automatización industrial. Incluye al
manipulador (sistema mecánico y accionadores) y al sistema de control
(software y hardware de control y potencia).

Reprogramable (ISO): Aquéllos en los que los movimientos programados o


las funciones auxiliares pueden cambiarse sin modificación física.

Modificación física (ISO): Modificación de la estructura mecánica o del


sistema de control (se excluyen cambios en los soportes de memoria: Disco,
cinta, ROM, etc.).

Esta definición incluye a aquellos robots que tengan como mínimo 3 grados de libertad, por
lo que cualquier robot con menor número de grados de libertad y con capacidad más
limitada quedará por fuera de esta definición (Organización Internacional de Normalización,
2012). El concepto de grados de libertad (GDL) será explicado posteriormente.

6.2.2 Otras definiciones de robots

El brazo robótico que se desarrolla en este trabajo, además de tener las características
explicadas anteriormente, será controlado de manera remota. Por lo tanto, se darán las
definiciones claras sobre este tipo de robot.

 Telerobot (RIA): Cualquier robot cuya tarea pueda ser monitorizada y


reprogramada a distancia por el humano.

 Robots teleoperados (NASA): Dispositivos robóticos con brazos


manipuladores y sensores y cierto grado de movilidad, controlados
remotamente por un operador humano de manera directa o a través de un
ordenador.

23
 Robot Teleoperado (ISO): Un robot que puede ser controlado
remotamente por un operador humano, extendiendo las capacidades
sensoriales y motoras de éste a localizaciones remotas.

6.2.3 Clasificación Para los distintos Robots

Como se ha explicado en las secciones anteriores, los robots se pueden clasificar


dependiendo de sus características específicas, desde los campos de operación en los que
se desenvuelve, desde la propia esencia o incluso desde la tarea o función que
desempeñan.

La clasificación puede darse desde la Generación en la que se desarrolló el robot, es


decir, en el periodo histórico en el que se crea el robot. Estas generaciones están
determinadas por innovaciones tecnológicas que aporten relevantes mejoras en las
capacidades de un robot.

Primera Repite la tarea programada secuencialmente.


Generación No toma en cuenta las posibles alteraciones de su entorno.

Segunda Adquiere información limitada de su entorno y actúa en consecuencia.


Generación Puede localizar, clasificar (visión) y detectar esfuerzos y adaptar sus
movimientos en consecuencia.

Tercera Su programación se realiza mediante el empleo de un lenguaje natural.


Generación Posee capacidad para la planificación automática de tareas.

Tabla 1. Clasificación de los Robots según generaciones (Aracil, Barrientos, Balaguer, &
Peñin, 2007).

Desde el Área de Aplicación la clasificación de los robots se da con base en el trabajo que
desempeñan en una determinada sección económica o laboral. Por ejemplo, para la
clasificación de los robots industriales manipuladores según su aplicación existen de
manipulación en fundición, de manipulación en moldeo de plásticos, de soldadura, para el
control de calidad, de empaquetado, de formación, de enseñanza, de investigación. (Aracil,

24
Barrientos, Balaguer, & Peñin, 2007) De esta clasificación los que se amoldan al tipo de
robot de este trabajo es el robot de formación o enseñanza.

Clasificar los robots desde el tipo de actuadores depende de cual sea el tipo de energía o
de sistema utilizado mayoritariamente en las diferentes partes y ejes del robot. Estos
pueden ser robots neumáticos, hidráulicos o eléctricos. Sin embargo, hoy en día la mayoría
de los robots son de ejecución eléctrica. Los sistemas hidráulicos son principalmente
usados cuando el robot necesita de una gran capacidad de carga respecto al peso mismo
del robot.

Desde el Número de Ejes la clasificación se logra desde el número de movimientos


independientes con los que cuenta un robot. Esto va relacionado con los grados de libertad,
que se explicarán a continuación. Esta definición deja por fuera a aquellos robots con
funciones móviles, ya que sólo aplica a los robots manipuladores.

La clasificación desde la configuración es aplicable a aquellos robots con cadena


cinemática. Es así como la configuración de un robot está determinada por los movimientos
permitidos entre dos eslabones de una cadena. Se tiene como tipo de configuración los
robots Cartesianos, Cilíndricos, Esféricos, Articulares, Paralelos y los SCARA (Aracil,
Barrientos, Balaguer, & Peñin, 2007).

De acuerdo con la Federación Internacional de Robótica y a la norma ISO 8373, la


clasificación por medio de los diferentes tipos de control son los Robots Secuenciales, los
Robots controlados por trayectoria, los Robots adaptativos y los Robots teleoperados
(Organización Internacional de Normalización, 2012).

6.3 ESTRUCTURA DEL ROBOT

Según Antonio Barrientos en su libro Fundamentos de Robótica, establece que un robot


contiene una estructura mecánica, un sistema de accionamiento, transmisiones, un sistema
sensorial, un sistema de potencia y control, y finalmente contiene elementos terminales
(Aracil, Barrientos, Balaguer, & Peñin, 2007).

25
Figura 4. Estructura mecánica de un robot y las piezas que lo componen (Aracil,
Barrientos, Balaguer, & Peñin, 2007).

Es así como existen seis articulaciones en la morfología del robot, en los cuales el
movimiento puede darse en forma de desplazamiento, de giro, o una mezcla de ambos
(Reuleaux, 1876). En general, los robots realmente sólo utilizan articulaciones rotativas o
prismáticas.

Una cadena cinemática, es una serie de eslabones o barras unidas por articulaciones. La
estructura mecánica de un robot manipulador constituye una cadena cinemática.

6.3.1 Grados de libertad de un robot

El término Grados de Libertad, en robótica, hace alusión al número de coordenadas o


movimientos independientes necesarios para expresar la posición de todas las partes de
un robot (Rodríguez, 2015). Los grados de libertad en un robot sirven para establecer los
movimientos posibles y el alcance con la que el sistema puede dirigir su instrumento,
determinando así la accesibilidad con la que el autómata logra desenvolverse en los
diferentes espacios. Un robot capaz de ubicarse en tres ejes de coordenadas posee como

26
mínimo 6 grados de libertad, de los cuales 3 son para fijar cada eje y 3 para precisar la
orientación. Un robot que supere los grados de libertad necesarios para un correcto
funcionamiento en un espacio de trabajo tridimensional, es considerado como redundante
(Barrientos, del Cerro, Martí, & Terrile, 2018).

El número de grados de libertad de una cadena cinemática puede ser obtenido mediante
la fórmula de Grübler, según la cual:

Figura 5. Fórmula de Grübler (Aracil, Barrientos, Balaguer, & Peñin, 2007).

Donde:

λ: GDL del espacio de trabajo (Típicamente tres en el plano, seis en el espacio).


n: Número de eslabones (debe incluirse el eslabón fijo o base).
j: número de articulaciones.
fi: Grados de libertad permitidos a la articulación i.

6.3.2 Elementos terminales

El término grados de libertad también va orientado a la capacidad del robot para ubicar y
ejecutar de manera efectiva la función de su herramienta terminal. La definición de elemento
terminal establecida por la normativa ISO (Organización Internacional de Normalización,
2012) es:

Elemento terminal de robot (ISO): Objeto unido a la interfase mecánica


dispuesta en el extremo del robot, para dotarle a éste de la funcionalidad
necesaria para realizar su tarea. Se incluyen pinzas, herramientas y
dispositivos para facilitar la conexión con otros elementos.

Pinza (ISO): Elemento Terminal concebido para coger y sujetar.

27
6.4 SISTEMA ELECTRÓNICO

6.4.1 Electrónica digital

Dentro de los circuitos electrónicos existen dos grandes grupos: analógicos y digitales. Tal
como lo describe Thomas Floyd, “la electrónica digital utiliza magnitudes con valores
discretos y la electrónica analógica emplea magnitudes con valores continuos” (Floyd,
2006). Por magnitudes discretas se refiere a que puede tomar valores fijos y claramente
definibles, en este caso los dígitos 0 y 1. Por magnitudes con valores continuos se refiere
a esas variables que pueden tomar múltiples números dentro de un conjunto y, por lo tanto,
no pueden medirse con precisión exacta, por lo que se manejan márgenes de error. Las
magnitudes analógicas se pueden ver reflejadas en la naturaleza. Por ejemplo, un automóvil
pasa de manera instantánea de un punto a otro al desplazarse, sino que dentro de ese
intervalo ocupa en algún momento los infinitos valores dentro de esa distancia que recorrió.
Esto no ocurre con las magnitudes digitales, en las cuales únicamente pueden adoptar uno
de los dos valores posibles, 0 ó 1, pero nunca un valor intermedio entre estos dos valores.

Es entonces que, para la electrónica, las magnitudes con valores discretos poseen mayores
ventajas frente a las magnitudes con valores continuos. Una de estas ventajas es que los
valores discretos permiten que en la electrónica digital los valores puedan ser enviados con
mayor seguridad y precisión que en su presentación analógica. Por otro lado, al momento
de almacenar información la electrónica digital lo hace de manera más eficiente y
sintetizada, además de otorgar ventajas en la exactitud y calidad de lo almacenado (Floyd,
2006).

Es así como queda claro que la electrónica digital solo permite en sus circuitos dos estados
posibles. Estos valores se ven ilustrados en dos niveles de tensión, los cuales son ALTO y
BAJO (HIGH y LOW en inglés). La combinación de estos dos estados es utilizada para
representar multitud de funciones, caracteres, números, sonidos, imágenes, entre muchas
otras posibilidades; y esta combinación se denomina código (Floyd, 2006). Para la
representación de estos dos estados se utiliza el sistema de numeración binario y se
emplean los dígitos 0 y 1, cada dígito binario se le es llamado bit como la contracción del
inglés binary digit. La convención que establece que el bit 0 representa el estado de tensión
BAJO y el bit 1 representando HIGH es denominada como “lógica positiva”. El sistema en

28
el que el 0 representa HIGH y el 1 representa LOW se conoce como “lógica negativa” (Floyd,
2006).

Los “niveles lógicos” hacen alusión a las tensiones utilizadas para representar el sistema
digital. Tal como lo explica Thomas Floyd en su libro Fundamentos de sistemas digitales

En el caso ideal, un nivel de tensión representa un nivel ALTO y otro nivel de


tensión representa un nivel BAJO. Sin embargo, en un circuito digital real, un
nivel ALTO puede ser cualquier tensión entre un valor mínimo y un valor
máximo especificados. Del mismo modo, un nivel BAJO puede ser cualquier
tensión comprendida entre un mínimo y máximo especificados. No puede
existir solapamiento entre el rango aceptado de niveles ALTO y el rango
aceptado de niveles BAJO (Floyd, 2006).

Figura 6. Rango de niveles lógicos de tensión para un circuito digital (Floyd, 2006).

La variable VH(máx) representa el valor máximo de tensión para el nivel


ALTO y VH(mín) representa el valor de tensión mínimo para el nivel ALTO.
El valor máximo de tensión para el nivel BAJO se representa mediante
VL(máx) y el valor mínimo de tensión para el nivel BAJO mediante VL(mín).
Los valores de tensión comprendidos entre VL(máx) y VH(mín) no son
aceptables para un funcionamiento correcto. Una tensión en el rango no

29
permitido puede ser interpretada por un determinado circuito tanto como un
nivel ALTO cuanto como un nivel BAJO, por lo que no puede tomarse como
un valor aceptable. Por ejemplo, los valores para el nivel ALTO en un
determinado tipo de circuito digital denominado CMOS pueden variar en el
rango de 2 V a 3,3 V y los valores para el nivel BAJO en el rango de 0 V a
0,8 V. De esta manera, si por ejemplo se aplica una tensión de 2,5 V, el
circuito lo aceptará como un nivel ALTO, es decir, un 1 binario. Si se aplica
una tensión de 0,5 V, el circuito lo aceptará como un nivel BAJO, es decir,
un 0 binario. En este tipo de circuito, las tensiones comprendidas entre 0,8 V
y 2 V no son aceptables (Floyd, 2006).

Ya entendido cómo se representan los bits y su respectiva interpretación por los circuitos
digitales, se hace necesario explicar los impulsos digitales. Un impulso positivo tiene origen
cuando la intensidad de la tensión pasa de su estado BAJO a su estado ALTO para luego
regresar a su estado BAJO. Lo mismo ocurre con un impulso negativo, pero con los estados
lógicos al contrario.

Figura 7. Impulsos ideales (Floyd, 2006).

Una serie de impulsos es lo que conforma una señal digital, también se le llama en
ocasiones como trenes de impulsos. Estas se pueden clasificar en dos grupos: series de
impulsos periódicas y no periódicas.

Como bien lo dice Thomas Floyd:

Un tren de impulsos periódico es aquel que se repite a intervalos de tiempo


fijos; este intervalo de tiempo fijo se denomina período (T). La frecuencia (f)
es la velocidad a la que se repite y se mide en hercios (Hz). Por supuesto,
un tren de impulsos no periódico no se repite a intervalos de tiempo fijos y

30
puede estar formado por impulsos de distintos anchos y/o impulsos que
tienen intervalos distintos de tiempo entre los pulsos (Floyd, 2006).

Figura 8. Ejemplos de formas de onda digitales (Floyd, 2006).

Mediante estas señales digitales es que se puede controlar el apagado o encendido de un


diodo, la comunicación inalámbrica a distancia, el movimiento de un servomotor, el
almacenamiento de datos en la nube, entre muchas más aplicaciones complejas que tienen
sus bases en estos conceptos básicos como lo son los ceros y unos.

6.4.2 Números binarios

Es así como hay que comprender los números binarios. Este sistema numérico es más
sencillo que el decimal ya que sólo emplea dos dígitos. El sistema decimal está en base 10
mientras que el binario está en base 2. Los bits entonces representan los dos dígitos
binarios, y su posición dentro de un número binario indica su peso. El peso de cada posición
de un número binario escala en potencias de dos (Floyd, 2006).

Para aprender a contar en el sistema binario, en primer lugar; es preciso


observar cómo se cuenta en el sistema decimal. Comenzamos en cero y
continuamos hasta el nueve antes de quedarnos sin dígitos. Luego,
comenzamos con otra posición de dígito (a la izquierda) y continuamos
contando desde 10 hasta 99. En este punto, se terminan todas las
combinaciones con dos dígitos, por lo que es necesaria una tercera posición
de dígito para poder contar desde 100 hasta 999. Cuando contamos en

31
binario se produce una situación similar, excepto en que sólo disponemos de
dos dígitos, denominados bits. Empezamos a contar: 0, 1. En este punto, ya
hemos utilizado los dos dígitos, por lo que incluimos otra posición de dígito y
continuamos: 10, 11. Ahora, hemos agotado todas las combinaciones de dos
dígitos, por lo que es necesaria una tercera posición. Con tres posiciones de
dígito podemos continuar contando: 100, 101, 110 y 111. Ahora necesitamos
una cuarta posición de dígito para continuar, y así sucesivamente.

6.4.3 Lógica programable

La lógica programable requiere la mezcla entre hardware y software. Estos dispositivos


electrónicos pueden programarse para atender las necesidades el usuario. Los dispositivos
de lógica fija carecen de esta capacidad y por lo tanto tienen esa desventaja además de ser
más grandes en dimensiones de hardware. “Un dispositivo lógico programable (PLD,
Programmable Logic Device) es aquel que inicialmente no tiene una función lógica fija pero
que puede programarse para implementar cualquier diseño lógico” (Floyd, 2006).

Los dispositivos lógicos programables más comunes son el PLD y el FPGA (Field
Programmable Gate Array) que traduce “matrices de puertas programable por campo”:
Estos dispositivos son “un <<circuito en blanco>> en el que se va a implementar un circuito
o sistema específico utilizando un determinado proceso” (Floyd, 2006). Para lograr esto es
necesario instalar un programa para el desarrollo de software que dé la capacidad al
dispositivo de modelar un diseño.

6.5 PROGRAMACIÓN

Una herramienta clave para poder crear soluciones a problemas de la vida real es la
programación, la cual a través de pasos lógicos pueden cumplir con los requerimientos de
los circuitos para que su funcionamiento sea eficaz.

6.5.1 Concepto de programación

El arte de programar consiste en lograr entregar a la computadora, sistema o circuito;


instrucciones de qué es lo que debe de hacer. Un programa es una serie de instrucciones
organizadas y lógicas para lograr un objetivo. Los programadores trabajan en equipo para
crear soluciones a problemas de la vida. Para poder programar se requieren conocimientos
en múltiples áreas que no necesariamente tienen que estar asociadas con la programación,

32
además al ser la programación un lenguaje implica que esta debe manejar una sintaxis
lógica y formal. Un programador con buenos hábitos para redactar su código permite que
éste pueda ser entendido en un futuro por otras personas con mayor facilidad, ayudando al
aprendizaje del común (Hernández Yañez, 2014).

6.5.2 Lenguaje de programación

Los lenguajes de programación permiten entregar las instrucciones a las computadoras de


manera mucho más organizada y precisa, a medida que estos se han ido simplificando con
el tiempo. En los inicios de la informática los ordenadores sólo podían procesar lenguajes
de bajo nivel, también llamado código máquina, el cual consistía inicialmente en cadenas
de dígitos binarios o en base hexadecimal.

Para facilitar el trabajo de programación, los primeros científicos que


trabajaban en el área decidieron reemplazar las instrucciones, secuencias
de unos y ceros, por palabras o letras provenientes del inglés, codificándolas
así y creando un lenguaje de mayor nivel, que se conoce como Assembly o
lenguaje ensamblador En realidad escribir en lenguaje ensamblador es
básicamente lo mismo que hacerlo en lenguaje máquina, pero las letras y
palabras son bastante más fáciles de recordar y entender que secuencias de
números binarios (Tienda de Robótica, 2017).

Los lenguajes de alto nivel aparecen cuando las tareas de los computadores se convirtieron
en problemas cada vez más complejos, a la vez que el uso de computadores aumentaba
de manera exponencial. Por lo que se encontró necesario simplificar el método para la
programación, para lograr hacer instrucciones complejas en menos pasos, con menos
caracteres de código, y más entendible que una cadena de ceros y unos.

Se entiende por lenguaje de programación “un idioma artificial diseñado para expresar
operaciones que pueden ser llevadas a cabo por máquinas como los computadores”. Estos
están compuestos por funciones y reglas para crear un método de escritura organizado y
lógico. Al proceso por el cual se escribe, se prueba, se depura, se compila y se mantiene el
código fuente de un programa informático se le llama modelo de desarrollo de software en
cascada (Hernández Yañez, 2014)

33
Figura 9. Modelo de desarrollo en cascada (Hernández Yañez, 2014).

6.5.3 Algoritmos computacionales

Un algoritmo es un conjunto de instrucciones preestablecidas, con sintaxis y semántica que


permita generar una estructura organizada para la ejecución de una determinada tarea.
Estos procesos de instrucciones lógicas consecutivas deben ser claras para no generar
confusión en el computador que lea el programa. “Dados un estado inicial y una entrada,
siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución” (Tienda
de Robótica, 2017). La representación gráfica de un algoritmo se denomina Diagrama de
flujo.

34
Figura 10. Diagrama de flujo de una lámpara (Tienda de Robótica, 2017).

Mediante los diagramas de flujo se puede detallar mejor los protocolos que deben seguirse
de manera organizada para poder entender un problema de la mejor manera, y así buscar
soluciones que sean prácticas y lógicas

6.5.4 Programación en Arduino

La programación de la placa Arduino se realiza en el lenguaje de programación de alto nivel


C y C++, la estructura de la programación en Arduino se puede generalizar en los siguientes
módulos: estructuras, variables, operadores matemáticos, operadores lógicos, operadores
booleanos, estructuras de control y funciones (Tienda de Robótica, 2017).

6.5.4.1 Estructuras en Arduino

El código de Arduino presenta dos estructuras principales denominadas setup y loop. El


código que se encuentra en el setup sólo se ejecutara una vez cuando el programa esté en
operación. Esta estructura se usa generalmente para establecer pines ya que son
instrucciones que sólo necesitan ejecutarse una vez. Por otro lado, la estructura loop repite
el código dentro de ella de manera indefinida siempre y cuando el Arduino esté funcionando.
Esta estructura va siempre después del setup y se utiliza para instrucciones que puedan
variar su estado en cada repetición del código (Tienda de Robótica, 2017).

35
6.5.4.2 Variables

Las variables tienen la función de ser un dato o un conjunto de datos de los cuales su valor
sea susceptible al cambio a lo largo de la ejecución del programa. Los tres tipos de variable
más comunes son la variable booleana, la variable entera y la variable de carácter; cada
uno tiene sus respectivos operadores.

Símbolo Significado

== “Igual a…”

!= “Diferente de…”

< “Menor que…”

<= “Menor o igual a”

> “Mayor que”

>= “Mayor o igual a”

&& Funciona como la compuerta AND

|| Funciona como la compuerta OR

! Funciona como una negación

= Asignar

% Módulo

+ Suma

- Resta

* Multiplicación

/ División

++ Incremento

-- Decremento

Tabla 2. Operadores lógicos de las variables (Tienda de Robótica, 2017).

36
6.5.4.3 Estructuras de control

Este tipo de algoritmos permiten elaborar repeticiones y lograr crear condiciones bajo las
cuales se deba ejecutar cierto código bajo ciertos requerimientos previos. Los condicionales
son óptimos para la ejecución de código bajo ciertas condiciones lógicas que se cumplan.
Los ciclos sirven para repetir una acción de manera indefinida siempre y cuando se cumpla
una condición.

Figura 11. Condicionales (Tienda de Robótica, 2017).

Figura 12. Ciclos (Tienda de Robótica, 2017).

6.5.4.4 Funciones

Una función es un algoritmo que realiza una tarea o “función” específica de que al ejecutarse
devuelve un valor. Estas funciones pueden ser configuradas para modificar su modo de

37
operación y su principal característica es ayudar a convertir tareas complejas en una línea
de código sencilla para reducir la cantidad de código de la programación.

Las funciones digitales permiten chequear el estado de una entrada y configurar las
entradas y las salidas digitales. Por otro lado, las funciones análogas están orientadas a “la
lectura y escritura de valores análogos” (Tienda de Robótica, 2017).

Figura 13. Funciones digitales (Tienda de Robótica, 2017).

Figura 14. Funciones analógicas (Tienda de Robótica, 2017).

38
7. ARQUITECTURA MODULAR

La arquitectura del brazo robótico está integrada por los siguientes módulos: módulo del
diseño mecánico, módulo del diseño electrónico y módulo de la programación.

El módulo del diseño mecánico contiene la estructura física del robot. Esta arquitectura está
compuesta por las articulaciones, la base y los elementos terminales.

El módulo del esquema electrónico comprende los componentes electrónicos para el


funcionamiento del robot, este incluye los servomotores, el cableado, la comunicación
maestro-esclavo y el cerebro del brazo.

El módulo de la programación integra los algoritmos necesarios para el funcionamiento del


robot mediante los componentes electrónicos. Aquí se incluye la programación de los
servomotores, la programación de la comunicación Bluetooth y el desarrollo de la aplicación
móvil.

Figura 15. Diseño del brazo robótico ensamblado en la plataforma Tinkercad (Fuente
propia).

39
8. DISEÑO VIRTUAL EN 3D DE LA ESTRUCTURA DEL ROBOT

Para diseñar la estructura del robot se utilizó una plataforma online llamada Tinkercad. Esta
es una plataforma donde se pueden modelar objetos para su posterior impresión en 3D.
Para poder utilizar el servicio basta con crear una cuenta con un correo electrónico o iniciar
sesión utilizando una cuenta de Google o de Facebook. Luego de iniciar sesión en el
apartado de Galería se pueden buscar diferentes diseños. De ahí luego de una exhaustiva
búsqueda encontramos el diseño de un brazo robótico acorde con nuestras necesidades.

8.1 VISTA EN EXPLOSIÓN

Figura 16. Vista en explosión de la estructura del brazo (Fuente propia).

40
Figura 17. Vista en explosión de la estructura de la pinza (Fuente propia).

8.2 DESCRIPCIÓN ESTRUCTURA BRAZO ROBÓTICO 3D

Imagen Nombre Descripción

Pedestal Es la única pieza que reposa


permanentemente sobre el suelo. Esta sirve
de soporte para toda la estructura del brazo.
En su interior se inserta un servomotor para
lograr el movimiento giratorio de la base.

41
Imagen Nombre Descripción

Base Es la pieza sobre la cual recae el peso de la


mayoría del brazo. Esta tiene el mismo
diámetro del pedestal y esta sujetada al
primer servomotor que se encuentra dentro
del pedestal. De esta manera la base puede
rotar 180 grados sobre su propio eje.

El brazo conforma la primera articulación


que puede desplazarse sobre el espacio.
Brazo
Este brazo esta sujetado a un servomotor
perpendicular a la base. De esta manera
esta articulación tiene un rango de 180
grados de movimiento para realizar
desplazamientos. Cabe recordar que esta
articulación al ser tan flexible sobrecarga al
servomotor que lo sujeta, por lo que hay que
utilizar un tipo de contrapeso.

Antebrazo El antebrazo es la pieza que suma alcance


al brazo. De esta manera el servomotor que
la sujeta al brazo se asemeja a un codo
humano. Permite orientar mejor la
herramienta terminal y dirigirla hacia el piso
o subirla.

42
Imagen Nombre Descripción

Muñeca Dentro del antebrazo va integrado un


servomotor SG90 que soporta la muñeca
del robot. Esta articulación permite una
rotación en la orientación de la herramienta
terminal de manera que la pinza pueda
agarrar objetos de múltiples maneras.

Nivelador Pinza Esta pieza está sujetada a un servomotor en


la muñeca y nos permite controlar la
pendiente de la pinza. Así es como esta
articulación puede manejar la inclinación
con la que la pinza ataca al objetivo.

Soportes Pinza Este par de piezas sirven de soporte a la


pinza, ya que permiten que la pinza pueda
ejercer presión entre sus tenazas.

Estos engranajes cumplen la función de


Engranajes transmitir el movimiento del servomotor
Pinza ubicado en el nivelador para poder agarrar
objetos. Estos engranajes acompañados de
los soportes son los que sostienen las
pinzas y las mueven.

43
Imagen Nombre Descripción

Pinza Es la última pieza impresa con tecnología


3D. Esta cumple la función de sujetar
objetos para transportarlos a través del
movimiento en conjunto de todas las piezas
del brazo.

Papel de Lija El papel de lija es recortado y pegado en las


caras interiores de la pinza para permitir un
mejor contacto entre la herramienta terminal
y el objeto. De esta manera la fricción
ejercida por la contextura de la lija permite
un mejor agarre, más seguro y eficaz.

Banda elástica Como fue mencionado en la pieza del brazo,


el servomotor que mueve el brazo es el que
más carga maneja, por lo tanto para no
sobrecargarlo se pueden utilizar resortes o,
en este caso, un caucho elástico para que
éste logre ayudar los movimientos del
servomotor.

Tabla 3. Descripción de la estructura (Fuente propia).

8.3 IMPRESIÓN 3D

Una vez listo el diseño en la plataforma Tinkercad, se tienen que separar las piezas para
poder realizar la impresión 3D correctamente. La impresora utilizada fue la que adquirió el
Colegio Jefferson este año. Es de la compañía MakerBot y su modelo es la Replicator +. El

44
material utilizado por la impresora es el PLA, que es un tipo de filamento utilizado para este
tipo de impresiones. El PLA (ácido poliláctico) es un polímero sintético creado a partir del
maíz. Cabe destacar que, aunque este material esté creado a partir de materias renovables
no significa que sea biodegradable o necesariamente amigable con el medio ambiente. Sin
embargo, si existen maneras de reutilizarlo.

Figura 18. Organización del brazo para la impresión 3D (Fuente propia).

Figura 19. Organización de la pinza para la impresión 3D (Fuente propia).

45
9. DISEÑO ELECTRÓNICO

El diseño electrónico integra múltiples componentes para lograr otorgar movilidad y


solvencia al brazo robótico de manera eficiente y organizada. El circuito electrónico se
encarga de ejecutar comandos programados para poder movilizar la estructura física del
brazo. A continuación, se explicará en detalle cada componente utilizado, su propósito y
funcionalidad dentro del circuito. Cabe recordar que además de los componentes expuestos
a continuación, se recomienda utilizar una breadboard y jumpers para las conexiones.

Figura 20. Diseño electrónico para brazo robótico de 6 servomotores con comunicación
Bluetooth. Diseñado con el programa Fritzing (Fuente propia).

9.1 PLACA ARDUINO

Arduino es una compañía líder en la comercialización de hardware y software de fuente


abierta. Su fuerte es el diseño de placas para el desarrollo de dispositivos digitales, con los
cuales se puede interactuar con objetos y controlarlos. Su módelo más vendido es el
Arduino UNO, el cual es el modelo utilizado en este trabajo.

46
Figura 21. Componentes principales de la placa Arduino UNO (Tienda de Robótica, 2017).

Esta placa cumple la función de ser el cerebro del brazo robótico. Mediante la programación
la placa se configura de manera que reciba datos del módulo Bluetooth para así
interpretarlos y enviar señales a los servomotores para accionarlos. Se recomienda el uso
de esta placa por su precio, su tamaño y su capacidad de pines, además de ser un
excelente punto de inicio debido a su simplicidad y experiencia de usuario creada con el
propósito de facilitar el aprendizaje.

9.2 MÓDULO HC-05

El módulo HC-05 es un componente utilizado para lograr comunicación Bluetooth. Este


puede ser configurado como maestro o como esclavo. En este proyecto se ve necesario
utilizar el módulo Bluetooth como esclavo ya que este será el que recibirá la información de
la aplicación del teléfono móvil para luego ser interpretada por la placa Arduino.

47
Figura 22. Módulo Bluetooth HC-05 (Tienda de Robótica, 2017).

El pin Key es para cambiar entre la opción maestro-esclavo, pero para este proyecto se
necesita. El pin VCC va conectado al positivo, el pin GND va conectado a tierra, el pin TXD
envía los datos recibidos por el módulo Bluetooth, el pin RXD recibe datos para enviarlos
por medio de la señal Bluetooth. Por último, el pin de State es utilizado para verificar el
correcto funcionamiento del módulo, aunque para efectos de este proyecto no es necesario.

Figura 23. Conexión Arduino y módulo Bluetooth (HowToMechatronics, 2018).

48
Figura 24. Circuito módulo Bluetooth ensamblado (fuente propia).

9.2.1 Indicaciones y recomendaciones del módulo Bluetooth

Para conectar el módulo Bluetooth HC-05 a la placa Arduino se deben de tener en cuenta
algunas cuestiones. Primero, si se conectan a los pines 0 y 1 del Arduino que vienen
predispuestos para la comunicación Bluetooth, no tendrá que incluir la librería de la
comunicación Bluetooth <Softwareserial.h>, pero de escoger esta opción tendrá que
desconectar el módulo cada vez que vaya a cargar el código al Arduino, esto se debe a que
el Arduino utiliza esos dos pines (0 y 1) para poder subir el código a la placa, por lo que
deberán ser desconectados o de lo contrario marcará error. Se recomienda entonces
conectar los pines de transmisión y envío de datos en pines diferentes a los mencionados
anteriormente, para evitar inconvenientes (recordar incluir la librería <Softwareserial.h>).
Segundo, los pines TXD y RXD se tienen que conectar de manera cruzada con la placa de
Arduino, es decir que el TXD del módulo Bluetooth debe conectarse al RXD de la placa
Arduino y lo mismo con los otros dos pines. Esto es debido a que lo que transmite el módulo
Bluetooth tiene que ser recibido por la placa Arduino, y lo que es transmitido a su vez por
la placa Arduino debe ser recibido por el módulo Bluetooth; de esta manera no es posible
que el módulo Bluetooth reciba información por el TXD ni que la placa Arduino envíe
información a través del RXD o viceversa. Tercero, en este trabajo se optó por comprar el
módulo Bluetooth HC-05, aunque también se puede adquirir el módulo HC-06 y funcionar

49
correctamente. Recomendamos el HC-05 porque puede utilizarse como en ambos modos:
maestro y esclavo, mientras que el módulo HC-06 únicamente puede utilizarse como
esclavo, por lo que su reutilización puede limitarse para otros futuros proyectos.

9.3 SERVOMOTOR

El servomotor es un componente extensamente utilizado en la robótica educacional debido


a que son pequeños motores que trabajan con voltajes bajos y que, además, pueden
manejar grandes pesos en relación a su reducido tamaño. Los servomotores utilizados en
este proyecto son de dos modelos diferentes: uno es el servomotor MG996R y el otro es el
servomotor SG90, ambos de la compañía TowerPro.

9.3.1 MG996R

Figura 25. Servomotor MG996R con accesorios (Tienda de Robótica, 2017).

50
Figura 26. Plano Servomotor MG966R (Tienda de Robótica, 2017).

Características Servo MG966R

Peso(g) 55

Torque(kg/cm)(4.8v) 9.4

Velocidad de operación (sec/60°) a 4.8v 0.19

Velocidad de operación (sec/60°) a 6v 0.15

A(mm) 42.7

B(mm) 40.9

C(mm) 37

D(mm) 20

E(mm) 54

F(mm) 26.8

Rango de voltaje de operación (v) 4.8 – 6.6

Tipo de piñonería Metálica

Ancho banda muerta (μs) 1

Longitud del cable (cm) 32

Consumo de corriente en reposo (mA) 10

Consumo de corriente en operación sin carga (mA) 170

Tabla 4. Características Servomotor MG996R (Tower Pro, 2014).

51
9.3.2 SG90

Figura 27. Microservomotor Sg90 con accesorios (Tower Pro, 2014).

Figura 28. Plano servomotor SG90. (Tower Pro, 2014).

52
Características Servo MG966R

Peso(g) 9

Torque(kg) a 4.8v 1.8

Velocidad de operación (sec/60°) a 4.8v 0.12

A(mm) 34.5

B(mm) 22.8

C(mm) 26.7

D(mm) 12.6

E(mm) 32.5

F(mm) 16

Rango de voltaje de operación (v) 4.8

Tipo de piñonería Poliacetal (POM)

Ancho banda muerta (μs) 1

Longitud del cable (cm) 25

Consumo de corriente en reposo (mA) 10

Consumo de corriente en operación sin


100-250
carga (mA)

Tabla 5. Características Servomotor SG90 (Tower Pro, 2014).

9.3.3 Implementación

Para el desarrollo del brazo robótico se utilizaron las dos referencias de servomotor
mencionadas anteriormente. El servomotor MG966R es más grande que el SG90, y a su
vez maneja mayor fuerza. Teniendo en cuenta esta información se diseñó el brazo, pensado
para tres servomotores MG966R y tres servomotores SG90 para un total de seis
servomotores. Los MG996R son utilizados en las piezas mayores, es decir las

53
articulaciones que manejan la mayor cantidad de peso; por otro lado, los SG90 son
utilizados principalmente en la orientación de la herramienta terminal (pinza) y para accionar
el movimiento de la pinza. Como se muestra en la imagen de arriba, cada servomotor
cuenta con 3 cables: rojo para el voltaje, negro a tierra y amarillo/naranja para señal que
controla el movimiento.

Figura 29. Terminales de un servomotor convencional (desconocido).

Figura 30. Ensamble del servomotor MG996R dentro del pedestal (fuente propia).

54
Figura 31. Tornillos utilizados para conectar el horn con la base (Fuente propia).

El servomotor MG966R viene con cinco tornillos: cuatro de ellos se ven en la Figura 24: dos
de ellos se utilizan para la base y los otros dos se utilizan para sujetar la pieza al accesorio
(estas piezas en inglés se conocen como “horns”). El quinto tornillo se utiliza para conectar
el “horn” con el servomotor una vez esté listo el montaje para que este no se pueda salir
del piñón.

Figura 32. Ensamblaje del servomotor base terminado (Fuente propia).

55
Siguiendo este mismo protocolo es que se fueron ensamblando cada uno de los
servomotores en el brazo robótico. El servomotor SG90 sólo trae tres tornillos de los cuales
dos fueron utilizados para sujetar la pieza al horn, el tercer tornillo es el que ajusta el horn
al piñón para evitar que se salga el mismo. Es así como no hay tornillos para sujetar el
servomotor a una superficie de la pieza, por lo que se recomienda usar cualquier otro tornillo
que tenga un tamaño similar para atornillar el servomotor a la pieza o usar un pegante fuerte
para reemplazar los tornillos.

Figura 33. Ubicación servomotor brazo (Fuente propia).

Figura 34. Ubicación servomotor antebrazo (Fuente propia).

56
Figura 35. Ubicación servomotor rotación (Fuente propia).

Figura 36. Ubicación servomotor inclinación (Fuente propia).

57
Figura 37. Ubicación servomotor pinza (Fuente propia).

9.4 FUENTE DE ENERGÍA EXTERNA

La fuente de energía requerida para este proyecto tiene que ser externa, que entregue 5
voltios y como mínimo 2 amperios. Es por esto que la fuente de poder tiene que ser externa,
ya que el Arduino, aunque funciona con 5v, no entrega el amperaje suficiente para usar los
6 servomotores en simultáneo.

Lo recomendado es usar una fuente de poder convencional y ajustarla al voltaje dicho, pero
ante la situación del COVID-19, se tuvo la necesidad de crear una fuente de voltaje opcional.
Para esto se utilizó un cargador de teléfono antiguo, el cual primero hay que verificar que
su suministro entregue el voltaje y el amperaje necesario.

58
Figura 38. Suministro de cargador de celular de 5.3V 2.0A (Fuente propia).

Una vez verificado que el suministro cumpla con las expectativas, se tomó el cable del
cargador y se cortó en un punto cercano al terminal que entra al celular. Luego se retira el
cubrimiento del cable y dentro se encontrarán cuatro cables: rojo, negro, verde y blanco.
Los cables verde y blanco se ignoran y se utilizan los cables rojo y negro, los cuales llevan
el suministro de energía. Estos dos cables se tienen que soldar a dos conectores macho
para facilitar su uso en la protoboard, además de envolverse con cinta aislante como
precaución

59
Figura 39. Fuente de alimentación alternativa 5.3V 2.0A (Fuente propia).

Se reitera que el uso de esta fuente de alimentación alternativa es un último recurso, en


caso de poder adquirir una fuente de voltaje apropiada se recomienda hacerlo para
salvaguardar la vida de los componentes electrónicos.

El uso de la banda elástica mencionada en la sección anterior, tiene como propósito ayudar
al servomotor ubicado sobre la base. Este servomotor se encarga de mover el brazo y es
el que recibe más sobrecarga, por este motivo es que se hace necesario la implementación
de la banda elástica para servir como contrapeso al servomotor,ayudándolo a soportar la
gran carga y a ejecutar movimientos.

60
Figura 40. Banda elástica ubicada en la base (Fuente propia).

Debido al alto número de cables que se utilizan en este proyecto (aproximadamente 28


cables, se recomienda usar algún tipo de protección para estos cables. En este caso se
optó por utilizar una manguera en espiral de ½ pulgada. El beneficio de usar cualquier tipo
de revestimiento sobre los cables es que permite

Figura 41. Revestimiento de cables con manguera en espiral ½ pulgada (Fuente propia).

61
Figura 42. Brazo robótico ensamblado (Fuente propia).

62
10. ESTRUCTURA DE LA PROGRAMACIÓN

Luego de terminar el montaje físico del brazo robótico, se necesitan programar los
algoritmos computacionales que permitirán el uso eficaz del robot y sus componentes. La
programación del brazo robótico se divide en dos bloques: el bloque de la programación del
Arduino para controlar los componentes electrónicos y el bloque de la programación de la
aplicación móvil desde la cual se controlará el robot de manera remota.

Por cuestiones de la explicación, se empezará entendiendo la programación de la


aplicación primero debido a que los comandos que escribiremos en la aplicación móvil son
los que posteriormente se enviarán por comunicación Bluetooth a la placa de Arduino, y
estos serán recibidos e interpretados por la programación del Arduino para poder realizar
los movimientos del robot.

10.1 APP INVENTOR

App Inventor es un ambiente de desarrollo de Software especialmente diseñado para la


creación de aplicaciones móviles en Android. Esta plataforma está en Internet y su uso es
completamente gratis. Este entorno fue creado por Google Labs en colaboración con el
Instituto Tecnológico de Massachussetts (MIT por sus siglas en inglés). La experiencia en
esta plataforma es realmente amena ya que está diseñada para personas que no están del
todo familiarizadas con el pensamiento computacional; por lo tanto, es una herramienta muy
eficaz a la hora de empezar con el mundo de la programación y a la vez permite crear
aplicaciones muy sencillas que se adaptan a nuestros fines.

63
10.2 PROGRAMACIÓN APP INVENTOR

Para el desarrollo de esta aplicación móvil se tuvo en cuenta la experiencia de usuario para
ubicar los botones y cuadros de inserción de texto en lugares óptimos para que el contacto
con el usuario sea ameno y didáctico.

Figura 43. Interfaz de usuario de App Inventor para diseñar la aplicación móvil (Fuente
propia).

Figura 44. Interfaz de usuario de App Inventor para los bloques de programación (Fuente
propia).

64
10.2.1 Programación Pantalla de Inicio en App Inventor

Para poder crear la pantalla de inicio sólo se necesitan las opciones de Button, Label y
Notifier. Estos se pueden encontrar en la parte izquierda de la plataforma. Primero se usan
los Label para escribir texto en la aplicación. Luego se utilizan Button para generar acciones
al presionarlos. Finalmente, se utiliza el Notifier para crear ventanas de alerta que podrá ver
el usuario.

Figura 45. Bloques para la pantalla de inicio (Fuente propia).

Este es el bloque de código para crear la pantalla de inicio. En el primer bloque se utiliza el
botón de “Iniciar” para pasar de la pestaña de inicio hacia la pantalla de control. Luego, en
el segundo bloque se crea una ventana emergente en la cual aparecen las
recomendaciones para utilizar el brazo robótico. Por último, en el tercer bloque, se crea otra
ventana emergente en la cual se da información acerca de los desarrolladores del proyecto
y su propósito.

10.2.2 Programación Comunicación Bluetooth en App Inventor

Para permitir la comunicación maestro-esclavo entre la aplicación móvil y la placa de


Arduino se utilizaron tres herramientas disponibles en la interfaz de usuario (User Interface
en inglés) que aparece al lado izquierdo en la ventana de diseño del App Inventor (ver
Figura 43). Estos elementos son el ListPicker, utilizado para mostrar la lista de dispositivos

65
Bluetooth visibles. El segundo es el Label el cual permite informar al usuario del estado de
la conexión con el módulo Bluetooth HC-05. Finalmente, el tercer elemento es el Button, el
cual se utiliza para poder terminar en cualquier momento la conexión del teléfono con el
módulo Bluetooth. Además de estos tres elementos hay que añadir el BluetoothClient que
está disponible a la izquierda en el apartado de Connectivity y el sensor de Clock disponible
en el apartado de Sensors.

Figura 46. Bloques para la comunicación “Bluetooth” (Fuente propia).

En el primer bloque se establece que al presionar el botón de la Lista_Bluetooth aparezca


una lista con todos los dispositivos Bluetooth disponibles para conectar. Luego en el
segundo bloque se establece que cuando se seleccione un dispositivo de esa lista se inicie
el proceso de emparejar ese dispositivo seleccionado. En el tercer bloque se utiliza el
sensor de Reloj, el cual ejecuta una acción cada cierto tiempo transcurrido. En este caso

66
se utiliza esta función para actualizar el texto que informa al usuario del estado de la
conexión Bluetooth. Esta información se actualiza cada segundo y está programada de
manera que, si el dispositivo está emparejado correctamente, el texto aparece como
“Conectado” en color verde. De lo contrario, si el dispositivo no se empareja, el texto
aparece como “Desconectado” en color rojo. Posteriormente en el cuarto bloque se
configura el botón para desconectar el dispositivo de la conexión Bluetooth con el Arduino.
Finalmente, el quinto bloque es para que, en caso de error en la conectividad Bluetooth, el
texto que indica el estado de la conexión Bluetooth aparezca como “Desconectado”,
además de ejecutar la función que desconecta al dispositivo para poder permitir un reintento
de conexión.

10.2.3 Programación Servomotores en App Inventor

Continuando, para poder controlar los servomotores desde la aplicación se utilizan cuatro
herramientas del User Interface las cuales son el Label, el Button, el TextBox y el Notifier.

Figura 47. Bloque para el control de un servomotor con App Inventor (Fuente propia).

En la figura de arriba podemos ver como utilizamos las cuatro herramientas nombradas
anteriormente. Primero se utiliza el Button para ejecutar la lectura de los grados insertados
en el TextBox. Luego se verifica que el valor insertado sea mayor a 18 y menor o igual a

67
180; de ser esto cierto se crea una variable con el valor insertado, se envía el texto con el
valor insertado acompañado de un prefijo que indica cuál servomotor se está accionando y
finalmente se muestra un texto con los grados que insertó el usuario que indica la posición
en la que se debe de encontrar el servomotor; de lo contrario se usa el Notifier para mostrar
una ventana de advertencia que indique que el valor insertado en el TextBox debe estar
entre los grados permitidos para cada servomotor. No sobra decir que este bloque de
programación debe repetirse para cada uno de los servomotores del robot, teniendo
especial cuidado en que los botones y cuadros para insertar texto coincidan con el del
servomotor que están programando. Esta es la programación básica de la aplicación para
teléfono con sistema operativo Android

10.2.4 Programación botón cerrar aplicación en App Inventor

Para completar la aplicación, se optó por agregar un botón para cerrar la aplicación, ya que
se pensó en la experiencia de usuario al momento de su desarrollo.

Figura 48. Bloques para botón de cerrar aplicación (Fuente propia).

En el primer bloque se llama al botón de CerrarApp y se indica que al hacer click se llame
la ventana emergente donde aparecerá la alerta indicando si está seguro de salir de la
aplicación. Se configuran dos opciones de respuesta “No” y “Si”. Luego en el siguiente
bloque se establece que luego de escoger entre las dos opciones si se escoge la opción
“Si” se ejecuta el comando que cierra la aplicación.

68
10.3 PROGRAMACIÓN ARDUINO

Para la programación de la placa Arduino se empieza por incluir las librerías SoftwareSerial
y Servo. El primero se encarga de la comunicación serial del módulo Bluetooth y el segundo
habilita el control de los servomotores, estos se incluyen utilizando #include. Posteriormente
se declaran los seis servomotores y sus respectivos nombres. Lo siguiente es configurar
los pines de la comunicación serial para el módulo Bluetooth (los predeterminados son los
pines 0 y 1 pero se recomienda cambiarlos, más información en el apartado específico de
este módulo). Luego se crean variables para cada servomotor que posteriormente se
utilizarán para los loops de control de velocidad, estas variables son de posición previa de
cada servomotor y de la posición actual. Finalmente se crea una variable donde se
almacena la comunicación recibida a través del módulo Bluetooth.

Figura 49. Inclusión de librerías y declaración de servomotores (Fuente propia).

En la sección del setup se empieza iniciando el monitor serie, luego se asignan los seis
servomotores a sus respectivos pines de señal. Posteriormente se inicia la comunicación
Bluetooth con una tasa de 9600 baudios (también puede servir con 38400, aunque el
monitor en serie tendría que configurarse con esa misma tasa), luego se establece que los
datos de entrada del Bluetooth se actualicen cada milisegundo con la función setTimeout().
Por último, se inicia cada servomotor en su posición inicial al prenderse la placa Arduino y
se establece que estas posiciones de los servomotores sean guardadas como la primera
posición previa.

69
Figura 50. Programación del setup (Fuente propia).

Para la estructura del loop se empieza chequeando si hay datos llegando del módulo
Bluetooth. Esto se hace con la función available(), luego se establece que en el caso de
llegar datos de entrada estos se almacenen en la variable DataIn. Estos datos se almacenan
utilizando la función read.string() sobre los datos recibidos por el Bluetooth para
almacenarlos como texto (variable como string). Luego se revisa el prefijo del texto recibido
a través del Bluetooth para determinar cuál servomotor es el que se desea mover, esto se
hace con la función startsWith(“s1”). Esta función traduce “comienza con ()” y sirve para leer
la primera parte del texto. El texto varía dependiendo del servomotor, “s1” se estableció
como el primer servomotor en el código de la aplicación, y lo mismo con los otros
servomotores. Una vez se revise el prefijo del texto se procede a remover el prefijo para
dejar únicamente los grados que moverá el servomotor. Esto se realiza mediante la función
substring (valor inicial, valor final), entonces se establece que sólo se tome en cuenta desde
la posición 2 que es donde se sitúa el primer dígito de los grados en la función DataIn (tener
en cuenta que las posiciones se cuentan desde el cero, entonces en el texto “s180” la
posición 0 la ocupa la letra “s”, la posición 1 el número “1”, y la posición 2 el número “8”).
Luego se escribe la función length que indica que el texto resultante se tome en cuenta
hasta el final, ya que hay momentos en los que los valores de los grados son de dos o tres

70
dígitos. Lo siguiente es establecer la posición actual del servo en una variable int (del inglés
integer que significa “entero”) con el valor de los grados que moverá el servomotor para así
poder usar los loops de velocidad.

Figura 51. Programación del loop (Fuente propia).

La variable se guarda en int en vez de mantenerse en string debido a que las funciones de
movimiento de los servomotores no pueden leer números en forma de texto. Una vez listo
el valor de los grados para el servomotor indicado, se utilizan loops para tener un
movimiento con velocidad controlada, de manera que el servomotor no trabaje a velocidad
máxima y que el movimiento sea fluido.

71
Figura 52. Programación para control de velocidad del servomotor (Fuente propia).

Primero se establece un filtro de los datos de entrada, en los que sólo los valores mayores
a 18 puedan ser escritos en el servomotor, esto debido a que haciendo pruebas con el
monitor en serie se encontraron fallas en la transferencia de datos, que daba lugar a que
en ocasiones se escribieran valores en el servomotor que no habían sido indicados. Ahora
bien, en el primer caso; si la posición previa del servomotor es mayor a la posición actual
(posición a la que se moverá el servomotor), se usará la función for para crear un loop en
el que se disminuirán los grados desde la posición previa hasta la posición actual de manera
progresiva. En el segundo caso la posición previa es menor a la posición actual. Se usa la
misma función, sólo que en este caso se aumentarán los grados desde la posición previa
hasta llegar. La función servo.write() establece la posición en los servomotores y el delay
establece la velocidad con la que se va aumentando o disminuyendo los grados.

10.3.1 Código Arduino

//Incluir las librerías

#include <SoftwareSerial.h> //Librería comunicación serial

#include <Servo.h> //Librería control servomotores

72
//Definir los seis servos del robot

Servo servo1;

Servo servo2;

Servo servo3;

Servo servo4;

Servo servo5;

Servo servo6;

// Configuración de los pines de la comunicación Bluetooth

SoftwareSerial Bluetooth (3, 4); //Arduino (RX, TX) - HC-05 Bluetooth (TX, RX)

//Variables para crear los loops de control de velocidad

int servo1Pos, servo2Pos, servo3Pos, servo4Pos, servo5Pos, servo6Pos; //Variables para


guardar la posición actual

int servo1Pre, servo2Pre, servo3Pre, servo4Pre, servo5Pre, servo6Pre; //Variables para


guardar la posición previa

String dataIn = ""; //Variable creada para almacenar los datos de entrada

void setup() {

Serial.begin(9600); //Iniciar el monitor serie

//Asignar cada servo a su respectivo PIN

servo1.attach(8); //Servo Base

servo2.attach(9); //Servo Brazo

servo3.attach(10); //Servo Antebrazo

servo4.attach(11); //Servo Rotación Pinza

servo5.attach(12); //Servo Inclinación Pinza

servo6.attach(13); //Servo Pinza

73
//Iniciar la comunicación Bluetooth

Bluetooth.begin(9600); //Iniciar Bluetooth serial 9600

Bluetooth.setTimeout(1);//Tiempo de actualización de la comunicación Bluetooth (un


milisegundo)

delay(20);

//Poner cada servo en su posición inicial

//Establecer estas posiciones como la posición previa inicial

servo1Pre = 90;

servo1.write(servo1Pre);

servo2Pre = 150;

servo2.write(servo2Pre);

servo3Pre = 180;

servo3.write(servo3Pre);

servo4Pre = 60;

servo4.write(servo4Pre);

servo5Pre = 90;

servo5.write(servo5Pre);

servo6Pre = 140;

servo6.write(servo6Pre);

void loop() {

//Revisar si hay datos de entrada

if (Bluetooth.available() > 0) {

dataIn = Bluetooth.readString(); //Leer como datos de entrada como String

74
//Movimiento Servo 1 (base)

if (dataIn.startsWith("s1")) {

String dataInS = dataIn.substring(2, dataIn.length()); // Extraer el número solamente. E.g.


de "s190" a "90"

Serial.println(dataIn);

servo1Pos = dataInS.toInt(); //convierte el String en Integer (entero) para poder escribir


la posición en el servo

Serial.println(servo1Pos);

//Se usan loops para controlar la velocidad del servo

if(servo1Pos > 18) {

if (servo1Pre > servo1Pos) //Si posición previa es mayor a la posición actual

for ( int j = servo1Pre; j >= servo1Pos; j--) //Disminuye los grados del servo gradualmente

servo1.write(j);

delay(20); //Velocidad con la que rota el servo

if (servo1Pre < servo1Pos) //Si posición previa es menor a la posición actual

for( int j = servo1Pre; j <= servo1Pos; j++) //Aumentar los grados del servo gradualmente

servo1.write(j);

delay(20);

75
}

servo1Pre = servo1Pos; //Convertir la posición actual en la posición previa

//Movimiento Servo 2 (Brazo)

if (dataIn.startsWith("s2")) {

String dataInS = dataIn.substring(2, dataIn.length());

Serial.println(dataIn);

servo2Pos = dataInS.toInt();

Serial.println(servo2Pos);

if (servo2Pos > 17) {

if (servo2Pre > servo2Pos) {

for ( int j = servo2Pre; j >= servo2Pos; j--) {

servo2.write(j);

delay(20);

if (servo2Pre < servo2Pos) {

for( int j = servo2Pre; j <= servo2Pos; j++) {

servo2.write(j);

delay(20);

servo2Pre = servo2Pos;

76
}

//Movimiento Servo 3 (Antebrazo)

if (dataIn.startsWith("s3")) {

String dataInS = dataIn.substring(2, dataIn.length());

Serial.println(dataIn);

servo3Pos = dataInS.toInt();

Serial.println(servo3Pos);

if(servo3Pos > 17) {

if (servo3Pre > servo3Pos) {

for ( int j = servo3Pre; j >= servo3Pos; j--) {

servo3.write(j);

delay(20);

if (servo3Pre < servo3Pos) {

for( int j = servo3Pre; j <= servo3Pos; j++) {

servo3.write(j);

delay(20);

servo3Pre = servo3Pos;

77
//Movimiento Servo 4 (Rotación Pinza)

if (dataIn.startsWith("s4")) {

String dataInS = dataIn.substring(2, dataIn.length());

Serial.println(dataIn);

servo4Pos = dataInS.toInt();

Serial.println(servo4Pos);

if(servo4Pos > 17) {

if (servo4Pre > servo4Pos) {

for ( int j = servo4Pre; j >= servo4Pos; j--) {

servo4.write(j);

delay(20);

if (servo4Pre < servo4Pos) {

for( int j = servo4Pre; j <= servo4Pos; j++) {

servo4.write(j);

delay(20);

servo4Pre = servo4Pos;

//Movimiento Servo 5 (Inclinación Pinza)

if (dataIn.startsWith("s5")) {

String dataInS = dataIn.substring(2, dataIn.length());

78
Serial.println(dataIn);

servo5Pos = dataInS.toInt();

Serial.println(servo5Pos);

if (servo5Pos > 17) {

if (servo5Pre > servo5Pos) {

for ( int j = servo5Pre; j >= servo5Pos; j--) {

servo5.write(j);

delay(20);

if (servo5Pre < servo5Pos) {

for ( int j = servo5Pre; j <= servo5Pos; j++) {

servo5.write(j);

delay(20);

servo5Pre = servo5Pos;

//Movimiento Servo 6 (Pinza)

if (dataIn.startsWith("s6")) {

String dataInS = dataIn.substring(2, dataIn.length());

Serial.println(dataIn);

servo6Pos = dataInS.toInt();

79
Serial.println(servo6Pos);

if(servo6Pos > 18) {

if (servo6Pre > servo6Pos) {

for ( int j = servo6Pre; j >= servo6Pos; j--) {

servo6.write(j);

delay(20);

if (servo6Pre < servo6Pos) {

for( int j = servo6Pre; j <= servo6Pos; j++) {

servo6.write(j);

delay(20);

servo6Pre = servo6Pos;

80
11. INTEGRACIÓN DE LOS DIFERENTES MÓDULOS

Por último, para poner el brazo robótico a funcionar se deben tener en cuenta y revisar con
detenimiento los siguientes apartados.

Primero se debe subir el código a la placa de Arduino, revisar que este no contenga errores
ni de sintaxis, ni semánticos, ni de lógica, y de tenerlos corregirlos inmediatamente.

Segundo, estar seguro de que el suministro de energía para el sistema electrónico cumpla
con los parámetros establecidos de voltaje y amperaje, esto para evitar un posible daño en
los componentes electrónicos. Además, tener en cuenta que todos los servomotores tienen
que estar conectados a la placa Arduino y al suministro de energía. Lo mismo con el módulo
Bluetooth.

Tercero, revisar que la estructura del brazo robótico se encuentre firme y en buenas
condiciones. Esto implica revisar que los tornillos estén apretados y que las piezas estén
aseguradas a los servomotores.

81
12. CONCLUSIONES

Retomando los objetivos planteados para este proyecto, se encontró que el diseño de la
estructura mecánica cumplió a cabalidad con los requerimientos estipulados. Este diseño
se logró materializar con la impresora 3D del colegio Jefferson la cual realizó un excelente
trabajo que no presentó ningún inconveniente. En cuanto a la estructura esta estuvo
diseñada de manera precisa y acertada, por lo que se lograron incorporar todos los
componentes electrónicos a la estructura sin ningún inconveniente. Lo que sí podría
mejorarse es el orificio donde se pasan los cables a través de la estructura del brazo ya que
es un poco pequeño para la cantidad de cables que lo ocupan, pero cumplió con su función.

El sistema electrónico tuvo dificultades en sus inicios como se expresó en el desarrollo de


este módulo debido a que no se lograron adquirir los componentes necesarios como la
fuente de alimentación correcta para el funcionamiento del circuito. De igual manera, se
logró resolver este imprevisto de manera eficaz y esta falencia no se ve reflejada en el
producto final ya que este funciona completamente. El módulo Bluetooth presentó unos
inconvenientes con la transmisión de datos que no se lograron identificar, ya que la
comunicación de datos con el módulo HC-05 en ocasiones presentaba errores con el valor
de los datos transmitidos, que se veían reflejados en un malfuncionamiento del robot. Se
encontró que los servomotores cercanos a la herramienta terminal presentaban cierto nivel
de ruido al funcionar, aunque esto no afectó el desempeño en general del brazo robótico.

Por el lado de la programación, se logró de manera eficaz corregir el problema encontrado


con la comunicación Bluetooth a través del código de la placa Arduino. Este código logró
abarcar todas las funciones propuestas para el funcionamiento del brazo robótico, como el
control de velocidad y el manejo preciso. Debido a los problemas con el módulo Bluetooth,
la aplicación hecha en App Inventor se vio ligeramente afectada ya que esta se tenía
pensada en un principio para funcionar con deslizadores, pero estos al enviar un gran flujo
de datos terminaban por sobrecargar la comunicación serial del Bluetooth, que se veía
reflejada en la inoperatividad de robot. Fue en ese entonces cuando se pensó la solución
de los bloques de texto, en donde se lograba manejar el flujo de datos de manera eficaz
además de lograr entregar instrucciones más precisas al Arduino.

En general, ninguno de los módulos falló con los objetivos establecidos al iniciar este
proyecto. Bien es cierto que se presentaron diversas dificultades a lo largo del desarrollo

82
del brazo robótico, pero ninguna significó la inutilidad del sistema; por el contrario, se
encontraron soluciones que además de resolver el problema lograron hacer que los
conocimientos adquiridos se perfeccionaran y se enriquecieran.

Luego de finalizar este trabajo realizado durante los últimos meses, se logró un producto
final que cumplió y superó todas las expectativas. Se lograron integrar muchos conceptos
y aprendizajes del área de las Ciencias de la Computación que permitieron el correcto
funcionamiento de todo el sistema. Teniendo en cuenta los tiempos en los que se logró este
trabajo y los conocimientos sobre electrónica, mecánica y programación que se poseían
previo a la elaboración de este trabajo (que eran escasos por no decir nulos), se puede
evidenciar que la robótica es en realidad una solución completamente plausible en países
Latinoamericanos, y especialmente en Colombia.

Todos los paradigmas alrededor de esta área del conocimiento son completamente
inválidos, empezando por el paradigma de la mano de obra calificada. Este es un proyecto
de grado de Colegio, y se logró crear un robot desde cero y desarrollando cada una de sus
partes, por lo que se puede intuir que, habiendo carreras universitarias especializadas en
estos temas, es imposible que no exista mano de obra calificada. Por otro lado, la
financiación de este proyecto no necesitó recursos externos, por lo que tampoco es válido
esa afirmación de que los robots son soluciones de automatización extremadamente
costosas.

Este proyecto escolar es una demostración que las soluciones de automatización son una
realidad, y que no hay que esperar años a que las tecnologías de los países desarrollados
sean implementadas en los países subdesarrollados, sino que se pueden comenzar
iniciativas propias de desarrollo. Los países deben promover estas iniciativas que como
bien se ha demostrado pueden iniciar desde la educación media, en donde temas de
robótica puedan enseñarse para preparar a las futuras generaciones para la revolución que
estas tecnologías innovadoras tendrán en el mundo, por lo que, si no se capacita y
concientiza a la población de estas alternativas, serán las multinacionales externas las que
lleguen a monopolizar el mercado de estos países que no lograron prever el futuro de la
tecnología y el impacto que esta tendrá en las vidas de todos.

Para culminar este extenso proyecto, se encuentra pertinente hacer un llamado de atención
a todas esas personas que disfrutan de la tecnología, ya sea si sólo utilizan redes sociales

83
o si desarrollan sus propios proyectos. La tecnología avanza exponencialmente y el número
de personas capacitadas para estos ministerios no está aumentando en Latinoamérica de
manera congruente con lo que está ocurriendo en todo el mundo. El consejo es estudiar
carreras que aporten al desarrollo de la tecnología; debido a que, si no se crea ese sentido
de pertenencia por el desarrollo de tecnologías propias, llegarán otros a imponer y a
desemplear los países en vía de desarrollo, arrasando con las economías locales y
estancando el progreso de los países.

84
13. REFERENCIAS Y BIBLIOGRAFÍA

Aracil, R., Barrientos, A., Balaguer, C., & Peñin, L. F. (2007). Fundamentos de Robótica (2
ed.). (C. Sánchez González, Ed.) Madrid, España: Mcgraw-Hill / Interamericana De
España, S.A.

Asimov, I. (1942, Octubre). The Caves of Steel. Galaxy Science Fiction, 54.

Asimov, I. (1985). Robots e Imperio. Estados Unidos: Editorial Doubleday.

Barrera, C. (Julio de 2017). Feria Automatisa 2017. Bogotá. Obtenido de


http://www.metalmecanica.com/temas/En-Colombia-hay-menos-de-un-robot-
industrial-por-cada-10000-trabajadores+120347

Barrientos, A., del Cerro, J., Martí, A., & Terrile, S. (2018). Robots Hiper-Redundantes:
Clasificación, Estado del Arte y Problemática. Revista Iberoamericana de
Automática e Informática Industrial, 12. doi:https://doi.org/10.4995/riai.2018.9207

Camargo, A. G. (2017). Astronomía Network. Obtenido de


https://www.astromia.com/historia/sondasespaciales.htm

Čapek, K. (24 de Diciembre de 1933). O SLOVĚ ROBOT. O UMĚNÍ A KULTUŘE III, 435-
436. Praga, Bohemia, Checoslovaquia. Obtenido de
https://blog.oup.com/2012/11/words-were-thankful-for/

Eveleth, R. (12 de Mayo de 2014). British Broadcasting Corporation. Obtenido de


https://www.bbc.com/mundo/noticias/2014/05/140520_vert_fut_salud_cirujano_a_d
istancia_gtg

Federación Internacional de Robótica. (2016). Statista Database Company. Obtenido de


https://es.statista.com/grafico/13658/la-densidad-de-robots-industriales-en-espana-
dobla-la-media-mundial/

Floyd, T. L. (2006). Fundamentos de sistemas digitales (Novena edición ed.). (M. Martín-
Romo, Ed., & Vuelapluma, Trad.) Madrid, España: Pearson Educación S.A.

Germán Buitrago-Salazar, O. L.-S.-H. (2016). Sistema de telerobótica para entrenamiento


en asistencia quirúrgica. Obtenido de SciELO Database:
http://scielo.sld.cu/scielo.php?script=sci_arttext&pid=S1815-59442016000300001

85
Hernández Yañez, L. (2014). Fundamentos de la programación. Universidad Complutense,
Facultad de informática. Obtenido de https://www.fdi.ucm.es/profesor/luis/fp/fp.pdf

Ministerio de Salud. (2012). Ley 1562 de 2012. Obtenido de


https://www.minsalud.gov.co/sites/rid/Lists/BibliotecaDigital/RIDE/DE/DIJ/Ley-
1562-de-2012.pdf

Organización Internacional de Normalización. (2012). Robots and robotic devices -


Vocabulary. (8373:2012), 38. Retrieved from
https://www.iso.org/standard/55890.html

Real Academia Española. (2020). Definición de Robot. Obtenido de Real Academia


Española: https://www.rae.es/dpd/robot

Reuleaux, F. (1876). Kinematics of Machinery. Londres: Macmillan and Co. Obtenido de


https://www.db-
thueringen.de/servlets/MCRFileNodeServlet/dbt_derivate_00009449/498952592_r
euleaux.pdf

Rodríguez, M. (2015). ¿Sabes en robótica la diferencia entre grados de libertad y grados


de movilidad? Revista Digital INESEM. Obtenido de
https://revistadigital.inesem.es/gestion-integrada/diferencia-robotica-grados-
libertad-movilidad-3/

Tienda de Robótica. (2017). Guía Básica de Arduino. Obtenido de Tienda de Robótica:


tiendaderobotica.com

Torres Tovar, M. (2015). Accidentalidad y Enfermedad Laboral en Colombia. Encuentro


Internacional de Salud y Trabajo. Obtenido de http://www.ens.org.co/wp-
content/uploads/2016/11/Accidentalidad-y-enfermedad-laboral-Encuentro-
Internacional-de-SyT-ENS-MAURICIO-TORRES-TOVAR.pdf

Tower Pro. (2014). Tower Pro. Obtenido de https://www.towerpro.com.tw

Unión Internacional de Telecomunicaciones. (2015). Statista Database company. Obtenido


de https://es.statista.com/grafico/6791/un-44-de-la-poblacion-mundial-tiene-
acceso-a-internet/

86

También podría gustarte