0% encontró este documento útil (0 votos)
56 vistas213 páginas

PG 8428

TESIS
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
56 vistas213 páginas

PG 8428

TESIS
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

UNIVERSIDAD MAYOR DE SAN ANDRÉS

FACULTAD DE INGENIERÍA

CARRERA DE INGENIERÍA ELECTRÓNICA

PROYECTO DE GRADO

DISEÑO E IMPLEMENTACIÓN DE UN BRAZO ROBÓTICO, BASADO EN

IOT, PARA EL LABORATORIO DE LA CARRERA DE INGENIERÍA

ELECTRÓNICA

Proyecto de grado para optar al título de licenciatura en Ingeniería Electrónica

Postulante : Univ. Juan Pablo Albarez Flores


Tutor : Ing. Hugo Balderrama Barrios

La Paz - Bolivia
2023
UNIVERSIDAD MAYOR DE SAN ANDRÉS
FACULTAD DE INGENIERIA

LA FACULTAD DE INGENIERIA DE LA UNIVERSIDAD MAYOR DE SAN


ANDRÉS AUTORIZA EL USO DE LA INFORMACIÓN CONTENIDA EN ESTE
DOCUMENTO SI LOS PROPÓSITOS SON ESTRICTAMENTE ACADÉMICOS.

LICENCIA DE USO

El usuario está autorizado a:

a) Visualizar el documento mediante el uso de un ordenador o dispositivo móvil.


b) Copiar, almacenar o imprimir si ha de ser de uso exclusivamente personal y privado.
c) Copiar textualmente parte(s) de su contenido mencionando la fuente y/o haciendo
la cita o referencia correspondiente en apego a las normas de redacción e
investigación.

El usuario no puede publicar, distribuir o realizar emisión o exhibición alguna de este


material, sin la autorización correspondiente.

TODOS LOS DERECHOS RESERVADOS. EL USO NO AUTORIZADO DE LOS


CONTENIDOS PUBLICADOS EN ESTE SITIO DERIVARA EN EL INICIO DE
ACCIONES LEGALES CONTEMPLADAS EN LA LEY DE DERECHOS DE AUTOR.
DEDICATORIA

Este trabajo lo dedico principalmente a Dios, por la salud, guía y fuerza en este

proceso de culminación profesional.

A mis padres, por todo el apoyo, ánimo y confianza incondicional en la culminación

del proyecto.
AGRADECIMIENTOS

A Dios, por la salud, por las bendiciones de todos los días y la guía en la culminación

profesional.

A mis amados padres y hermanos por todo su apoyo.

A todas las personas que me han apoyado e hicieron que el trabajo se concluya con

éxito en especial a los que me compartieron sus conocimientos.


Resumen

El internet ha tomado mucha importancia hoy debido a la necesidad de interconectarse,

por esta y varias razones es que el Internet de las cosas es un campo que toma cada vez

más peso en su investigación y desarrollo.

En el presente proyecto se aborda conceptos del IoT y robótica para desarrollar un

Brazo robótico del tipo SCARA en el entorno IoT, de esta forma mandar instrucciones al

robot desde una interfaz de usuario del servidor ejecutado en la computadora de

desarrollo Raspberry pi.

Para el diseño del Brazo robot en el entorno IoT se utilizó la metodología en cascada, en

el cual se realizó cálculos de cinemática directa y transmisión de movimiento para

realizar la programación en Raspberry pi con el lenguaje Python, de esta forma dar

operabilidad al brazo robot.


Abstract

The internet has taken on a lot of importance today due to the need to interconnect, for

this and several reasons is that the Internet of Things is a field that takes more and more

weight in its research and development.

This project addresses concepts of IoT and robotics to develop a robotic arm of the

SCARA type in the IoT environment, thus sending instructions to the robot from a

server user interface running on the Raspberry pi development computer.

For the design of the robot arm in the IoT environment, the cascade methodology was

used, in which direct kinematics and motion transmission calculations were performed

to perform programming in Raspberry pi with the Python language, thus giving

operability to the robot arm.


ÍNDICE
Capítulo 1 ........................................................................................................................................ 1

1 Marco Referencial .................................................................................................................... 1

1.1 Introducción........................................................................................................................... 1

1.2 Antecedentes ......................................................................................................................... 2

1.3 Planteamiento del problema central ...................................................................................... 3

1.4 Objetivo general y específicos .............................................................................................. 3

1.4.1 Objetivo General ............................................................................................................. 3

1.4.2 Objetivos Específicos...................................................................................................... 3

1.5 Justificación del Proyecto ...................................................................................................... 4

1.5.1 Justificación Social ......................................................................................................... 4

1.5.2 Justificación Tecnológica................................................................................................ 4

1.6 Alcances y Limites ................................................................................................................ 4

1.6.1 Alcances .......................................................................................................................... 4

1.6.2 Limites ............................................................................................................................ 5

1.7 Metodología del Proyecto ..................................................................................................... 5

Capítulo 2 ........................................................................................................................................ 7

2 Marco Teórico .............................................................................................................................. 7

2.1. Brazo robótico ...................................................................................................................... 7


2.2 Clasificación de los brazos robóticos .................................................................................... 7

2.2.1 Según sus grados de libertad ........................................................................................... 7

2.2.2 Según su espacio geométrico de trabajo ......................................................................... 8

2.2.3 Según su tecnología motriz ............................................................................................. 8

2.3 Robots SCARA ..................................................................................................................... 9

2.4 Partes de un brazo robótico ................................................................................................. 10

2.4.1 Eslabones ...................................................................................................................... 11

2.4.2 Articulaciones. .............................................................................................................. 11

2.4.3 Elementos terminales. ................................................................................................... 13

2.4.4 Base ............................................................................................................................... 14

2.4.5 Actuadores .................................................................................................................... 15

2.4.6 Sistemas de control y componentes eléctricos. ............................................................. 15

2.4.7 Espacio de tarea ............................................................................................................ 15

2.5 Software CAD para diseño mecánico ................................................................................. 16

2.5.1 Solidwoks...................................................................................................................... 16

2.5.2 FreeCad ......................................................................................................................... 16

2.5.4 Meshmixer .................................................................................................................... 17

2.5.5 Archivos STL ................................................................................................................ 17

2.6 Modelo Cinemático ............................................................................................................. 18


2.6.1 Cinemática Directa........................................................................................................ 19

2.6.2 Metodología de Denavit Hartenberg ............................................................................. 21

2.6.3 Cinemática inversa ........................................................................................................ 25

2.7 Motores paso a paso (PAP) ................................................................................................. 36

2.7.1 Motor unipolar .............................................................................................................. 38

2.7.2 Motor bipolar ................................................................................................................ 39

2.7.3 Secuencia de pasos ........................................................................................................ 40

2.7.4 Motores Nema ............................................................................................................... 44

2.8 Hardware libre para IoT ...................................................................................................... 51

2.8.1 Raspberry Pi .................................................................................................................. 51

2.8.2 Arduino ......................................................................................................................... 53

2.8.3 ESP32............................................................................................................................ 55

2.9 Driver A4988 ....................................................................................................................... 56

2.10 Internet de las cosas ........................................................................................................... 59

2.10.1 Modelos de comunicación del Internet de las cosas ................................................... 60

2.11 Protocolo MQTT ............................................................................................................... 64

2.11.1 Terminología ............................................................................................................... 66

2.11.2 Representación de datos .............................................................................................. 68

2.12 Modelo de referencia TCP/IP ............................................................................................ 69


2.13. HTTP ................................................................................................................................ 71

2.13.1. Métodos de petición ................................................................................................... 71

2.13.2. Mensajes de respuesta ................................................................................................ 72

2.14. CoAP ................................................................................................................................ 74

Capítulo 3 ...................................................................................................................................... 75

3 Marco práctico ........................................................................................................................... 75

3.1 Requerimientos .................................................................................................................... 75

3.1.1 Descripción del sistema ................................................................................................ 75

3.1.2 Requerimientos ............................................................................................................. 76

3.1.3 Servidor web ................................................................................................................. 77

3.2 Diseño .................................................................................................................................. 77

3.2.1 Parte Mecánica .............................................................................................................. 77

3.2.2 Parte Electrónica ........................................................................................................... 99

3.2.3 Interfaz de usuario....................................................................................................... 105

3.2.4 Programación .............................................................................................................. 107

3.3 Implementación ................................................................................................................. 130

3.3.1 Parte mecánica ............................................................................................................ 130

3.3.2 Parte electrónica .......................................................................................................... 134

3.3.3 Programación e interfaz de usuario............................................................................. 136


3.4 Verificación ....................................................................................................................... 146

3.4.1 Mediciones .................................................................................................................. 146

3.4.2 Pruebas del sistema en conjunto ................................................................................. 148

Capítulo 4 .................................................................................................................................... 150

4 Funcionamiento y Resultados .................................................................................................. 150

4.1. Comunicación entre usuarios y el sistema robot SCARA ................................................ 150

4.2. Costos del proyecto .......................................................................................................... 152

Capítulo 5 .................................................................................................................................... 157

5 Conclusiones y Recomendaciones ........................................................................................... 157

5.1. Conclusiones .................................................................................................................... 157

5.2. Estado de objetivos específicos. ....................................................................................... 157

5.3. Estado de objetivo general. .............................................................................................. 158

5.4. Recomendaciones. ............................................................................................................ 158

Bibliografía ................................................................................................................................. 160

Anexos ........................................................................................................................................ 163


Lista de acrónimos
IoT Internet of Things

TCP Transmision Control Protocol

IP Internet Protocol

HTTP Hypertext Transfer Protocol

LAN Local Area Network

WAN World Area Network

MQTT Message Queue Telemetry Transport

IEEE Institute of Electrical and Electronic Engineers

CoAP Constrained Application Protocol

SCARA Selective Compliant Articulated Robot Arms

IAB Internet Architecture Board

RFC Request for Comments

CAD Computer-Aided Design

STL Stereolithography

PAP Paso a Paso


Lista de Figuras

Figura 1: Modelo en cascada. Fuente: (Onios, 2019) .................................................................... 6

Figura 2: Robot SCARA. Fuente: (Talavera et al., 2018) ........................................................... 10

Figura 3: Articulaciones para robots. Fuente: (Barrientos et al., 2007) ....................................... 12

Figura 4: Simbología de la articulación tipo revoluta. Fuente: (Khalil, 2013) ............................ 12

Figura 5: Simbología de la articulación tipo prismática. Fuente: (Khalil, 2013) ........................ 13

Figura 6: Pinza Robótica. Fuente: https://tienda.sawers.com.bo/robotica/kits-y-partes-de-

robotica/garra-aluminio-para-robot-compatible-mg995 ............................................................... 14

Figura 7: Diagrama de relación entre cinemática directa e inversa. Fuente: (Barrientos et al.,

2007) ............................................................................................................................................. 19

Figura 8: Robot articular 3 GDL. Fuente: (Barrientos et al., 2007)............................................. 28

Figura 9: Elementos 2 y 3 contenidos en un plano de la Figura 8. Fuente: (Barrientos et al.,

2007). ............................................................................................................................................ 30

Figura 10: Robot de 3 GDL Fuente: (Barrientos et al., 2007) ................................................... 31

Figura 11: Asignación de sistemas de referencia del Robot de 3 GDL de la Figura 10. Fuente:

(Barrientos et al., 2007) ................................................................................................................ 32

Figura 12: Motor Paso a Paso (Nema 23). Fuente: https://tienda.sawers.com.bo/nema23-motor-

paso-paso-bipolar?search=motor%20paso%20a%20paso ............................................................ 37

Figura 13: Modelo conceptual del Motor PAP unipolar Fuente: (Begle, 2013).......................... 39

Figura 14: Modelo conceptual del Motor PAP bipolar. Fuente: (Begle, 2013)........................... 40
Figura 15: Dimensiones para bridas de montaje. Fuente: (ICS, 2001) ....................................... 49

Figura 16: Dimensiones para bridas de montaje, motores con dimensiones en pulgadas. Fuente:

(ICS, 2001).................................................................................................................................... 50

Figura 17: Raspberry pi 3 B+ Fuente: (Fundation, 2020)............................................................ 53

Figura 18: Arduino Yun. Fuente: (Arduino, 2020) ..................................................................... 55

Figura 19: Diagrama de aplicación Típica Driver A4988. Fuente: (MicroSystems, 2009) ........ 57

Figura 20: Ejemplo de Modelo de comunicación dispositivo a dispositivo. Fuente: (Karen Rose,

2015) ............................................................................................................................................. 61

Figura 21: Diagrama de Modelo de comunicación dispositivo a la nube. Fuente: (Karen Rose,

2015) ............................................................................................................................................. 62

Figura 22: Ejemplo de Modelo de comunicación dispositivo a puerta de enlace. Fuente: (Karen

Rose, 2015) ................................................................................................................................... 63

Figura 23: Diagrama del Modelo de intercambio de datos a través del back-end. Fuente: (Karen

Rose, 2015) ................................................................................................................................... 64

Figura 24: Arquitectura de publicación /suscripción MQTT. Fuente: (OASIS, mqtt, 2014) ...... 66

Figura 25: Estructura de cadenas codificadas en UTF-8. Fuente: (Banks et al., 2019) ............... 68

Figura 26: Modelo de referencia OSI. Fuente: (Pearson, 2012) .................................................. 69

Figura 27: Modelo de referencia TCP/IP. Fuente: (Pearson, 2012) ............................................ 70

Figura 28: Modelo TCP/IP con algunos protocolos. Fuente: (Pearson, 2012) ............................ 70

Figura 29: Códigos de respuesta HTTP (parte 1). Fuente: (Primo, 2012) ................................... 72
Figura 30: Códigos de respuesta HTTP (parte 2). Fuente: (Primo, 2012) ................................... 73

Figura 31: Capas abstractas de CoAP. Fuente: (TZI, 2014) ........................................................ 74

Figura 32: Diagrama del sistema robot SCARA. Fuente: (Elaboración propia) ......................... 76

Figura 33: Robot Hibot 2442 SCARA. Fuente: (HITBOT, 2020) .............................................. 78

Figura 34: Pantalla de LibreCad (Part). Fuente: (Elaboración propia) ........................................ 79

Figura 35: Cuerpo del robot SCARA en LibreCad. Fuente: (Elaboración propia) ..................... 82

Figura 36: Base del robot SCARA en LibreCad. Fuente: (Elaboración propia) ......................... 83

Figura 37: Soporte superior del robot SCARA en LibreCad. Fuente: (Elaboración propia) ....... 83

Figura 38: Engranaje doble en LibreCad. Fuente: (Elaboración propia) ..................................... 84

Figura 39: Primer eslabón del tipo revoluta robot SCARA en LibreCad. Fuente: (Elaboración

propia) ........................................................................................................................................... 85

Figura 40: Segundo eslabón del tipo revoluta robot SCARA en LibreCad. Fuente: (Elaboración

propia) ........................................................................................................................................... 86

Figura 41: Robot SCARA en LibreCad. Fuente: (Elaboración propia) ....................................... 86

Figura 42: Rodamiento 608Z. Fuente: https://es.aliexpress.com/item/33025587195.html ......... 87

Figura 43: Rodamiento KFL08. Fuente: https://www.amazon.com/-/es/SYDIEN-KFL08-0-315-

identificaci%C3%B3n-rodamiento/dp/B07C4Y7P2C .................................................................. 88

Figura 44: Soporte SHF8. Fuente: https://www.amazon.com.mx/Soportes-aleaci%C3%B3n-

aluminio-impresora-fresadora/dp/B09R12Q6J7 ........................................................................... 88

Figura 45: Husillo THSL 4 hilos. Fuente: https://es.aliexpress.com/item/32814991542.html ... 89


Figura 46: Acople flexible 5-8 [mm]. Fuente: https://www.amazon.com/-/es/OctagonStar-

Acoplamientos-flexibles-impresora-unidades/dp/B01HBPHSII .................................................. 90

Figura 47: Motor PAP 17HS4401. Fuente:

https://www.techlookelectronica.com/producto/nema-17-17hs4401-motor-paso-a-paso-12v-con-

cable/ ............................................................................................................................................. 91

Figura 48: Motor PAP KS42STH34-1504A. Fuente: https://www.deltakit.net/product/nema17-

ks42sth34-1504a-stepper-motor-1-5a-34mm/ .............................................................................. 92

Figura 49: Polea GT2 20 dientes, 5 [mm]. Fuente: https://www.amazon.com/-/es/GT2-0-236-

impresora-tornillos-fijaci%C3%B3n-XIAOYING/dp/B08MPW5KG4 ....................................... 93

Figura 50: Correa dentada 2GT 160 [mm] Fuente: https://www.amazon.es/Correa-dentada-

piezas-ancho-GT2/dp/B075GRJCSD ........................................................................................... 93

Figura 51: Soporte de goma 5 [mm] Fuente: https://nauticagmus.com/tienda/partes-del-

motor/goma-lateral-de-soporte-de-motor-johnson-evinrude-90-175-hp-328584/ ........................ 94

Figura 52: Módulo electroimán 5[V]. Fuente: https://es.aliexpress.com/item/32897489260.html/

....................................................................................................................................................... 95

Figura 53: Transmisión de movimiento para la variable articular q2. Fuente: (Elaboración

propia) ........................................................................................................................................... 95

Figura 54: Transmisión de movimiento variable articular q3 Fuente: (Elaboración propia) ...... 96

Figura 55: Driver 4988. Fuente: https://www.amazon.com/Reprap-Stepper-Driver-Stepper-

Motor-Driver-Module/dp/B07VD86HVS?th=1 ........................................................................... 99
Figura 56: Diagrama de conexiones A4988. Fuente:

https://es.aliexpress.com/item/1005002253869295.html............................................................ 100

Figura 57: Placa de extensión para el driver A4988. Fuente: https://www.amazon.com/LM-YN-

Printer-Stepper-Extension/dp/B01LWO9DI7............................................................................. 101

Figura 58: Asignación de pines BCM y BOARD (color gris) Raspberry pi. Fuente:

https://www.prometec.net/usando-los-gpio-con-python/ ........................................................... 102

Figura 59: Escritorio del Sistema Operativo Raspberry pi OS. Fuente: (Elaboración propia) .. 103

Figura 60: Diagrama de conexiones del sistema. Fuente: (Elaboración propia) ....................... 104

Figura 61: Fuente de energía para Raspberry pi. Fuente:

https://es.aliexpress.com/item/32835858930.html...................................................................... 105

Figura 62: Esquema analítico para el método D-H. Fuente: (Elaboración propia) ................... 107

Figura 63: Diagrama ejes de revoluta robot SCARA. Fuente: (Elaboración propia) ................ 110

Figura 64: Diagrama ejes de revoluta robot SCARA (análisis geométrico). Fuente: (Elaboración

propia) ......................................................................................................................................... 114

Figura 65: Área de trabajo del robot SCARA. Fuente: (Elaboración propia) ........................... 116

Figura 66: Datos obtenidos para el eje x con 2 decimales (robot SCARA). Fuente: (Elaboración

propia) ......................................................................................................................................... 117

Figura 67: Datos obtenidos para el eje x con un decimal (robot SCARA). Fuente: (Elaboración

propia) ......................................................................................................................................... 118

Figura 68: Cantidad de datos faltantes eje x con un decimal (robot SCARA). Fuente:

(Elaboración propia) ................................................................................................................... 119


Figura 69: Cantidad de datos faltantes eje x sin decimales (robot SCARA). Fuente: (Elaboración

propia) ......................................................................................................................................... 120

Figura 70: Datos obtenidos para el eje y con dos decimales (robot SCARA). Fuente:

(Elaboración propia) ................................................................................................................... 121

Figura 71: Datos obtenidos para el eje y con un decimal (robot SCARA). Fuente: (Elaboración

propia) ......................................................................................................................................... 122

Figura 72: Cantidad de datos faltantes eje y con un decimal (robot SCARA). Fuente:

(Elaboración propia) ................................................................................................................... 122

Figura 73: Cantidad de datos faltantes eje y sin decimales (robot SCARA). Fuente: (Elaboración

propia) ......................................................................................................................................... 123

Figura 74: Algoritmo general del sistema (robot SCARA). Fuente: (Elaboración propia) ....... 124

Figura 75: Proceso de Ajuste codo abajo o codo arriba (robot SCARA). Fuente: (Elaboración

propia) ......................................................................................................................................... 126

Figura 76: Algoritmo de funcionamiento (robot SCARA). Fuente: (Elaboración propia) ........ 128

Figura 77: Algoritmo detallado (robot SCARA). Fuente: (Elaboración propia) ....................... 129

Figura 78: Primer eslabón del tipo revoluta impreso (robot SCARA). Fuente: (Elaboración

propia) ......................................................................................................................................... 131

Figura 79: Segundo eslabón del tipo revoluta impreso (robot SCARA). Fuente: (Elaboración

propia) ......................................................................................................................................... 131

Figura 80: Soporte superior y engranaje doble, ambos impresos (robot SCARA). Fuente:

(Elaboración propia) ................................................................................................................... 132


Figura 81: Cuerpo del robot impreso más accesorios ensamblados (robot SCARA). Fuente:

(Elaboración propia) ................................................................................................................... 132

Figura 82: Base del robot impreso más accesorios ensamblados (robot SCARA). Fuente:

(Elaboración propia) ................................................................................................................... 133

Figura 83: Robot SCARA ensamblado completo. Fuente: (Elaboración propia) ...................... 134

Figura 84: Ajuste del Vref para el driver A4988. Fuente: (Elaboración propia) ....................... 135

Figura 85: Interfaz de usuario (imagen del área de trabajo). Fuente: (Elaboración propia) ...... 138

Figura 86: Interfaz de usuario (datos de entrada). Fuente: (Elaboración propia) ...................... 138

Figura 87: Algoritmo del área de trabajo (robot SCARA). Fuente: (Elaboración propia) ........ 140

Figura 88: Algoritmo de cálculo de valores de “y” para cada valor de “x” (robot SCARA).

Fuente: (Elaboración propia) ...................................................................................................... 142

Figura 89: Grafica Torque vs pulsos/s para el motor paso a paso. Fuente: (Kothari & Nagrath,

2010, pág. 764) ........................................................................................................................... 145

Figura 90: Iniciando el servidor (Robot SCARA). Fuente: (Elaboración propia) ..................... 148

Figura 91: Brazo Robot SCARA en funcionamiento. Fuente: (Elaboración propia) ................ 149

Figura 92: Usuario accediendo al servidor (robot SCARA). Fuente: (Elaboración propia) ...... 150

Figura 93: Usuario 2 accediendo al servidor (robot SCARA). Fuente: (Elaboración propia) ... 151

Figura 94: Cambios realizados en la interfaz del servidor (robot SCARA). Fuente: (Elaboración

propia) ......................................................................................................................................... 152


Lista de tablas
Tabla 1: Parámetros D-H del robot de la figura 9 ....................................................................... 33

Tabla 2: Secuencia de pasos para motores bipolares ................................................................... 40

Tabla 3: Secuencia de pasos para motores Unipolares (wave drive) ........................................... 41

Tabla 4: Secuencia de pasos para motores Unipolares (Secuencia normal) ............................... 42

Tabla 5: Secuencia de pasos para motores Unipolares (Secuencia de medio paso) .................... 42

Tabla 6: Características de las diferentes clases de un motor paso a paso ................................. 46

Tabla 7: Designación de Diámetro del eje, de acuerdo al número de brida de un motor paso a

paso ............................................................................................................................................... 47

Tabla 8: Tabla de verdad de la resolución de micro pasos .......................................................... 57

Tabla 9: Lista de piezas del robot SCARA .................................................................................... 79

Tabla 10: Lista de elementos mecánicos y electromecánicos del robot SCARA .......................... 80

Tabla 11: Asignación de pines del driver A4988 y la placa electrónica Raspberry pi para cada

motor PAP................................................................................................................................... 101

Tabla 12: Parámetros D-H del robot SCARA de la figura ......................................................... 108

Tabla 13: Asignación de pines para el sistema completo. .......................................................... 125

Tabla 14: Prueba de funcionamiento de motor pap 17HS4401 (eje prismático robot SCARA). 136

Tabla 15: Errores relativos y absolutos para las variables de revoluta “q2” y “q3” (Robot

SCARA). ...................................................................................................................................... 146

Tabla 16: Errores relativos y absolutos del eje prismático ........................................................ 147
Tabla 17: Lista de piezas del robot SCARA (parte mecánica).................................................... 153

Tabla 18: Lista de piezas del robot SCARA (parte electrónica). ................................................ 154

Tabla 19: Lista de costos mano de obra para el robot SCARA. ................................................. 155

Tabla 20: Lista total de precios robot SCARA. ........................................................................... 156


Capítulo 1

1 Marco Referencial

1.1 Introducción

En 1999 se menciona el término de IoT1 (Internet of things) por primera vez por el británico

Kevin Ashton (Karen Rose, 2015), para describir a un sistema en el cual los objetos se puedan

conectar a internet, sin embargo, este concepto se refiere a que los dispositivos como

automóviles, servicios públicos, componentes industriales u objetos cotidianos tengan

conectividad a internet, esto permite recopilar, monitorear e intercambiar datos también el

controlar objetos de forma remota.

Empresas como Cisco estimaron que el tráfico generado por dispositivos que no son

computadoras personales aumentara un 70 % en 2019, por lo tanto, esto toma importancia hoy y

a futuro.

En cuanto a modelos de comunicación del internet de las cosas en marzo del 2015 el Comité de

Arquitectura de Internet (IAB) dio a conocer un documento informativo de guía para el diseño de

redes de objetos inteligentes (RFC 7452), que describe cuatro modelos de comunicación

comunes que utilizan los dispositivos del IoT (Karen Rose, 2015).

• Modelo de comunicación dispositivo a dispositivo

• Modelo de comunicación dispositivo a la nube

• Modelo de comunicación dispositivo a puerta de enlace

• Modelo de intercambio de datos a través del back-end

1
IoT: Internet de las cosas, concepto de la interconexión digital de objetos a internet.
1
Los robots se utilizan ampliamente en las industrias principalmente para acceder a sectores

peligrosos, o acciones que requieran precisión, rapidez, etc.

Un robot se describe como una máquina para realizar una tarea específica o bien múltiples tareas,

el robot más común es el brazo robótico que generalmente se programa para realizar tareas

similares a la de un brazo humano, tal como llevar objetos de un lugar a otro.

El robot SCARA es un tipo de brazo robótico, generalmente de 3 o 4 grados de libertad, usado en

aplicaciones para trasladar objetos.

En el presente proyecto de grado se diseñará un brazo robótico del tipo SCARA, basado en un

entorno IoT, para el laboratorio de la carrera de Ingeniería Electrónica de la Universidad Mayor

de San Andrés en contribución académica para los estudiantes en las materias de programación,

mecánica aplicada, tecnología de los componentes e interacción hardware software con el fin de

afirmar sus conocimientos e incursionar en este concepto relativamente reciente del IoT.

1.2 Antecedentes

Este concepto reciente de IoT ha permitido que varias universidades realicen sus propuestas de

aplicación, como también empresas en todo el mundo, destacando las herramientas tecnológicas

Open-Source2 como la placa electrónica Raspberry Pi y Arduino entre otras; algunos de los

proyectos con referencia al IoT que destacamos son los siguientes:

Sistema embebido para la prevención de accidentes de tránsito ocasionados por conductores en

estado de ebriedad aplicando el internet de las cosas, esta propuesta sugiere el uso de tecnologías

2
Open-Source: Software de código abierto es un código diseñado de manera que sea accesible al público, cuyo
propietario de los derechos de autor permite a los usuarios utilizar, cambiar y redistribuir el software.
2
Open-Source para la implementación de un sistema embebido que analiza el grado alcohólico de

un conductor para notificarlo a sus parientes en caso de ser necesario. (Parisaca, 2016)

Diseño e implementación de un sistema de comunicación entre máquinas para entornos IoT

aplicado al laboratorio de control de la Carrera de Ingeniería Electrónica, la propuesta planteada

sugiere un costo reducido ya que se utiliza la placa electrónica Raspberry Pi para la

comunicación entre un equipo de entrenamiento industrial del laboratorio de control de

Ingeniería Electrónica e intercambio de datos por medio de la nube (servidores de Amazon)

mediante el protocolo MQTT. (Maldonado, 2021)

1.3 Planteamiento del problema central

Planteamiento del problema.

La carrera de Ingeniería Electrónica de la Universidad Mayor de San Andrés no cuenta con un

brazo robótico tipo SCARA que pueda ser controlado mediante IoT para aspectos académicos.

1.4 Objetivo general y específicos

1.4.1 Objetivo General

• Diseñar e implementar un brazo robótico del tipo SCARA, basado en IoT, para la Carrera

de Ingeniería Electrónica de la Universidad Mayor de San Andrés

1.4.2 Objetivos Específicos

✓ Realizar un diseño factible de la estructura del brazo robótico tipo SCARA de acuerdo a un

diseño/modelo referencial.

✓ Ensamblar el brazo robótico del tipo SCARA de acuerdo a lo establecido previamente.

✓ Realizar el procedimiento para Cinemática directa del brazo robótico por Denavit

3
Hartenberg3 (cálculo de la matriz de posición).

✓ Elegir el hardware adecuado para nuestro robot.

✓ Realizar la programación para el brazo robótico tipo SCARA.

✓ Realizar pruebas de funcionamiento vía remoto.

1.5 Justificación del Proyecto

1.5.1 Justificación Social

• Este proyecto tiene como objetivo ser de apoyo académico para carrera de Ingeniería

Electrónica de la Universidad Mayor de San Andrés y los estudiantes tengan a su

disposición un robot para el desarrollo de sus conocimientos e incursionar en la

tecnología de IoT.

1.5.2 Justificación Tecnológica

• Debido a que no hay muchos proyectos relacionados con IoT, el proyecto es de aporte

para el desarrollo tecnológico del área además que proporciona un conocimiento a la

comunidad estudiantil sobre el control vía remoto IoT y plataformas Open-Source.

1.6 Alcances y Limites

1.6.1 Alcances

• Se diseñará e implementará un robot tipo SCARA factible, considerando un diseño

referencial.

• Se abordará la parte de la cinemática directa del robot.

3
Parámetros de Denavit Hartenberg: También llamados parámetros DH son los cuatro parámetros que se utilizan
para hallar el modelo analítico de cambio de posición de un robot.
4
• Se realizará la programación con una placa electrónica Open Source, debido a la facilidad

de desarrollo.

• Se realizará pruebas vía remoto.

1.6.2 Limites

• No se considerará la dinámica del robot.

• No se considerará el análisis de materiales para el robot.

• No se considerará análisis de fuerza y torque para el robot.

1.7 Metodología del Proyecto

En el presente proyecto se realizará un procedimiento semejante al modelo en cascada bastante

utilizado en el área de ingeniería de software, pero también es aplicable en mecánica, electrónica,

etc.

De estos 5 pasos solo tomaremos 4: análisis o requerimientos, diseño, implementación y

verificación o pruebas; ya que la parte de mantenimiento corresponde a casos en los cuales es

posible realizar mantenimiento y mejora del sistema.

A continuación, se muestra un esquema del modelo en cascada.

5
Figura 1: Modelo en cascada. Fuente: (Onios, 2019)

6
Capítulo 2

2 Marco Teórico

2.1. Brazo robótico

Un Brazo robótico es un dispositivo electromecánico, programable con funciones parecidas a la

de un brazo humano, las partes de estos están interconectados a través de articulaciones que

permiten movimientos rotacionales, como traslacionales y en cuya aplicación son ampliamente

usados para aumentar la velocidad de producción y reducir el error humano en una Industria.

2.2 Clasificación de los brazos robóticos

Los brazos robóticos que pertenecen al grupo de robots estacionarios, son llamados así debido a

que estos siempre realizan su secuencia de movimientos con respecto a una base fija. En la

industria existen varios tipos de robots estacionarios que se pueden diferenciar por su tamaño,

por la configuración de sus articulaciones, por sus grados de libertad, por el método de

programación, etc.

Estos se clasifican:

• Según sus grados de libertad

• Según su espacio geométrico de trabajo

• Según su tecnología motriz

2.2.1 Según sus grados de libertad

Esta clasificación describe la facultad que tiene un brazo robótico para realizar una tarea de

acuerdo al rango de movimiento y precisión que tengan sus articulaciones, vale recalcar que un

7
brazo robot solo puede tener máximo 6 grados de libertad para cumplir una tarea general, más

allá de los 6 grados de libertad se consideran robots redundantes, estos robots se pueden

clasificar de la siguiente manera:

• Robot de propósito general (6 grados de libertad).

• Robot redundante (más de 6 grados de libertad).

• Robot deficiente (menos de 6 grados de libertad).

2.2.2 Según su espacio geométrico de trabajo

Esta clasificación hace referencia al movimiento geométrico que realiza el brazo robótico,

dependiendo de su espacio de trabajo disponible, su diseño y del tipo de articulaciones que

utiliza, entre los cuales se puede mencionar:

• Robots cartesianos.

• Robots cilíndricos.

• Robots esféricos.

• Robots SCARA.

• Robots articulados.

• Robots paralelos.

2.2.3 Según su tecnología motriz

Esta clasificación describe el tipo de accionamiento que permite al robot realizar sus

movimientos.

Las tecnologías más usadas para dicho propósito son:

• Neumática.

8
• Hidráulica.

• Eléctrica.

2.3 Robots SCARA

Esta clase de brazo robótico cuya sigla significa (Selective Compliant Articulated Robot Arms),

que traducido al español es “brazo robótico articulado de obediencia selectiva”, lo cual describe

que este robot es obediente a movimientos en el plano XY y rígido en el eje Z; además de su

movimiento en el espacio, los robots SCARA son factibles en cuanto al diseño y fabricación si

comparamos con otro tipo de robots, debido a que la complejidad de su geometría depende del

fabricante y de la aplicación, también los movimientos de sus articulaciones por lo general ya

están establecidos debido a que los robots SCARA son robots de tres y cuatro grados de libertad.

Los brazos robóticos SCARA son ampliamente usados en la industria en procesos de ensamble

que requieran mucha precisión, ya que su diseño de ejes paralelos les permite realizar

movimientos muy limpios horizontalmente a pesar de ser rígidos verticalmente, en su mayoría

son de un tamaño pequeño debido a que trabajan a una gran velocidad para grandes cargas de

producción, entre sus principales aplicaciones está el ensamble de piezas pequeñas,

manipulación de herramientas para corte o rectificación, embalaje y posicionamiento de piezas,

etc.

El primer brazo robótico tipo SCARA diseñado surgió en el laboratorio de robótica de la

Universidad de Yamanashi en el año 1978 gracias al ingenio del profesor Hiroshi Makino, quien

propuso un prototipo de brazo robot que contaba con cuatros ejes de movimiento y una

considerable simplicidad en su diseño, porque poseía una limitada movilidad, pero gozaba de

una buena precisión y velocidad.

9
Figura 2: Robot SCARA. Fuente: (Talavera et al., 2018)

2.4 Partes de un brazo robótico

Algunos de los elementos del brazo robótico se asemejan a las de un brazo humano como cadera,

hombro, codo y muñeca que corresponden a la posición que tiene cada uno de los elementos

dentro de la morfología del brazo robot.

Un brazo robótico está conformado por un conjunto de piezas y elementos, estas pueden ser

mecánicas o eléctricas, las cuales cumplen diferentes funciones establecidas, que están limitadas

por los requerimientos del usuario.

No todos los brazos requieren de la misma cantidad de partes, ya que estas dependerán de los

grados de libertad (GDL o sus siglas en ingles DOF) y de la complejidad del entorno del brazo

10
robot, ya que este determina el tipo de movimiento que se generara para realizar las tareas

asignadas, a continuación, se muestra las partes principales de un brazo robot:

• Eslabones

• Articulaciones

• Base

• Actuadores

• Elementos terminales o efector final

• Espacio de tarea

• Sistema de control y componentes eléctricos

2.4.1 Eslabones

Los eslabones son los elementos rígidos de la parte de un brazo robot que se conectan mediante

juntas o articulaciones, las cuales permiten el movimiento relativo en cada par de eslabones

consecutivos.

2.4.2 Articulaciones.

También se conocidas como juntas, y son elementos que permiten realizar los movimientos

relativos entre los eslabones que se encuentren posicionados de manera consecutiva.

Las articulaciones permiten movimientos de rotación, desplazamiento o ambas. Los grados de

libertad (GDL) son los movimientos independientes que puede realizar cada articulación

respecto al eslabón en el que se encuentre.

11
Figura 3: Articulaciones para robots. Fuente: (Barrientos et al., 2007)

Articulación revoluta (rotación)

La articulación de revoluta produce un movimiento rotacional sobre un eje común entre dos

eslabones, y la localización relativa entre ambos se encuentra expresada por el ángulo que

forman sus ejes.

Se suele utilizar la notación con la letra R y su símbolo es el que se muestra en la Figura 4.

Figura 4: Simbología de la articulación tipo revoluta. Fuente: (Khalil, 2013)

12
Articulación prismática

La articulación prismática es el permite el movimiento relativo de traslación a largo del eje de la

articulación, su localización relativa está determinada por la distancia medida desde la base

rígida o sobre el eje anterior.

Se suele utilizar la notación con la letra P y su símbolo es el que se muestra en la Figura 5.

Figura 5: Simbología de la articulación tipo prismática. Fuente: (Khalil, 2013)

2.4.3 Elementos terminales.

También son denominados como efectores finales, los cuales permiten la interacción del brazo

robótico con su entorno, dentro de estos elementos se encuentran diferentes tipos de herramientas

de acuerdo a la aplicación que tengan entre los cuales se puede mencionar las siguientes:

• Pinzas.

• Soldadoras.

• Dispersores de pintura.

• Cañones de agua a presión.

• Ventosas.

13
entre otros, de igual forma se pueden encontrar elementos de aprehensión o agarre como los

dripper4, electroimanes, ventosas de vacío, etc.

Figura 6: Pinza Robótica. Fuente: https://tienda.sawers.com.bo/robotica/kits-y-partes-de-

robotica/garra-aluminio-para-robot-compatible-mg995

2.4.4 Base

Es una estructura diseñada para mantener en una posición estable el brazo robótico mientras este

ejecuta las diferentes funciones que debe cumplir en su entorno.

4Dripper: Es una pinza de agarre electromecánico, cuya función es el agarrar y sostener determinados
objetos.
14
2.4.5 Actuadores

Los actuadores son elementos que permiten ejecutar acción mecánica, mediante una energía que

es proporcionada por diferentes tipos de fuentes, y por consiguiente transmitir una fuerza que

genera diferentes movimientos en otros elementos del brazo robot.

Algunas de las características que se deben tomar en cuenta al momento de seleccionar los

actuadores son la potencia, la controlabilidad, la precisión, la velocidad, el mantenimiento, el

coste, el peso y el volumen.

Los actuadores se pueden clasificar en función de la fuente de alimentación que utilizan como se

menciona a continuación.

• Actuadores neumáticos.

• Actuadores hidráulicos.

• Actuadores eléctricos.

2.4.6 Sistemas de control y componentes eléctricos.

Son los componentes encargados del sistema de control, la conducción eléctrica para los otros

elementos del brazo robótico.

Mediante conexiones entre una placa de control, un ordenador y un codificador, el brazo robótico

puede cumplir determinadas funciones prestablecidas por el usuario.

2.4.7 Espacio de tarea

Es también conocida como área de trabajo, es la superficie en el que se desenvuelve el brazo

robot, donde se reconocen localización, posición y orientación del efector final, generalmente

expresadas en coordenadas cartesianas.

15
2.5 Software CAD para diseño mecánico

CAD o Diseño asistido por computadora, es una tecnología para diseño y documentación

técnica, el cual sustituye el dibujo manual por un proceso automatizado.

A continuación, se expone algunos de los softwares más utilizados para diseño mecánico.

• Inventor

• SolidWorks

• Shapr3D

• FreeCAD

• LibreCAD

De los cuales FreeCAD y LibreCAD son software Open-sourse.

2.5.1 Solidwoks

SolidWorks es un software CAD para modelado mecánico en 2D y 3D, desarrollado en la

actualidad por SolidWorks Corp., para el sistema operativo Microsoft de Windows.

Su primera versión fue lanzada al mercado en 1995 con el propósito de hacer la tecnología CAD

más accesible a público.

2.5.2 FreeCad

FreeCAD es una aplicación libre (Open-sourse) para diseño asistido por computadora en tres

dimensiones, ingeniería asistida por computadora, para la asistencia en ingeniería mecánica y el

diseño de elementos mecánicos en general.

Formatos de archivo compatibles.

16
Además del propio formato de archivo de FreeCAD, pueden manejarse los siguientes formatos

de archivos:

• DXF.

• SVG (Scalable Vector Graphics).

• STEP.

• IGES.

• STL (STereoLithography).

• OBJ (Wavefront).

• DAE (Collada).

• SCAD (OpenSCAD).

• IV (Inventor).

• IFC.

2.5.4 Meshmixer

Es un software para la edición de archivos STL, el cual nos ayuda a generar soportes a las piezas

que así lo requieran entre otras funciones como escalamiento de piezas, etc., se utiliza

generalmente un paso antes de la impresión de la pieza.

2.5.5 Archivos STL

El formato de archivos STL es el formato de transmisión de datos estándar en la industria de

diseño de prototipos, este formato se aproxima a la superficie solida por triángulos mientras más

compleja sea la superficie más triángulos se utilizará.

17
Es el formato fue desarrollado originalmente para la impresión 3D por estereolitografía5, el

formato de archivo más aceptado en el ámbito de la impresión 3D. Almacena únicamente datos

de geometría y tiene un tamaño compacto.

Casi todos los sistemas CAD actuales pueden generar un archivo STL.

2.6 Modelo Cinemático

La cinemática es una rama de la física que estudia el movimiento en este caso particular el

movimiento del brazo robótico con respecto a su base sin tener en cuenta las fuerzas que este

mismo produce, este estudio principalmente se interesa por la descripción analítica del espacio

en el que se mueve el brazo robótico, tomando en cuenta parámetros de posición y orientación

del efector final o los valores de las coordenadas articulares. Se utiliza el álgebra vectorial y

matricial para encontrar la posición de un objeto en el espacio tridimensional con respecto a la

base del brazo robótico que actúa como elemento fijo.

El modelo cinemático es una metodología que describe las relaciones estáticas entre las

posiciones de las articulaciones de un robot, las coordenadas cartesianas y la posición de su

efector final. (Stone, 1986)

En el campo de la cinemática de un robot existen dos problemas que son fundamentales: el

problema cinemático directo y el problema cinemático inverso.

El problema cinemático directo consiste en determinar cuál es la posición y orientación del

efector final en un sistema de coordenadas teniendo como datos los parametros geometicos del

robot y el valor de las aticulaciones conocidos como coordenadas articulares.

5Estereolitografía: Es una tecnología de fabricación aditiva es decir la fabricación de piezas mediante la


superposición de capas sucesivas del material con una considerable precisión.
18
El segundo es el problema cinematico inverso el cual consiste en determinar que configuracion

de coordenadas articulares debe adoptar para la posicion y orientacion que tomara el efector final

del robot.

En la Figura 7 se muestra la relacion entre cinematica direca e inversa.

Figura 7: Diagrama de relación entre cinemática directa e inversa. Fuente: (Barrientos et al.,

2007)

2.6.1 Cinemática Directa

La cinemática directa es el estudio de los movimientos del robot utilizando fundamentalmente el

algebra vectorial y matricial para describir la posición del efector final del robot con respecto a

un sistema de referencia fijo, en este análisis el robot se considera como una cadena cinemática

conformada por eslabones unidos entre sí por articulaciones.

Situando un sistema de referencia fijo en base del robot se puede especificar la posición de cada

eslabón con respecto al sistema de referencia ya establecido, entonces el problema de la

cinemática directa se resume en encontrar una matriz homogénea de transformación a la que se

denomina matriz T, esta matriz relaciona la posición y orientación del efector final con respecto

al sistema de referencia fijo y está en función de las coordenadas articulares.


19
A continuación, se realizará la resolución del problema cinemático directo mediante matrices de

transformación homogénea.

Como el problema de la cinemática directa consiste en encontrar las relaciones que permite

conocer la posición del efector final del robot a partir de los valores de sus coordenadas

articulares, en este caso se considera las coordenadas cartesianas y los ángulos de Euler para las

posición y orientación del efector final del robot.

Entonces considerando un robot de 6 grados de libertad (robot de propósito general) se tendría lo

siguiente:

𝑥 = 𝑓𝑥 (𝑞1 , 𝑞2 , 𝑞3 , 𝑞4 , 𝑞5 , 𝑞6 )

𝑦 = 𝑓𝑦 (𝑞1 , 𝑞2 , 𝑞3 , 𝑞4 , 𝑞5 , 𝑞6 )

𝑧 = 𝑓𝑧 (𝑞1 , 𝑞2 , 𝑞3 , 𝑞4 , 𝑞5 , 𝑞6 )

𝛼 = 𝑓𝛼 (𝑞1 , 𝑞2 , 𝑞3 , 𝑞4 , 𝑞5 , 𝑞6 )

𝛽 = 𝑓𝛽 (𝑞1 , 𝑞2 , 𝑞3 , 𝑞4 , 𝑞5 , 𝑞6 )

𝛾 = 𝑓𝛾 (𝑞1 , 𝑞2 , 𝑞3 , 𝑞4 , 𝑞5 , 𝑞6 )

Siendo: 𝑞1 , 𝑞2 , 𝑞3 , 𝑞4 , 𝑞5 𝑦 𝑞6 las coordenadas articulares del robot.

Analizando de manera general un robot de n grados de libertad está conformado por n eslabones

unidos por n articulaciones, entonces cada par articulación – eslabón conforma un grado de

libertad luego a cada eslabón se puede asignar un sistema de referencia solidario, posteriormente

utilizando las transformaciones homogéneas, es factible representar las rotaciones y traslaciones

relativas de los distintos eslabones que componen al robot.

20
Para la notación, la matriz de transformación homogénea que representa la posición y orientación

relativa correspondiente a dos eslabones consecutivos del robot a la cual se asigna la notación de

𝐴𝑖−1/𝑖 , luego 𝐴0/1 describe la posición del primer eslabón con respecto al sistema de referencia

solidario (base fija del robot), posteriormente 𝐴1/2 la posición y orientación del segundo eslabón

con respecto al primero y es así que de manera general se puede denominar 𝐴0/𝑛 a la matriz

resultante del producto de matrices 𝐴𝑖−1/𝑖 donde i tiene valores de 1 hasta n y ∈ ℕ, vale aclarar

que es posible representar en forma parcial o total la cadena cinemática del robot

Si consideramos todos los grados de libertad, la matriz 𝐴0/𝑛 será la matriz T, entonces un robot

de n grados de libertad tendrá una posición y orientación de su efector final descrita por la matriz

T de la siguiente manera:

𝑻 = 𝐴0/𝑛 = 𝐴0/1 𝐴1/2 𝐴2/3 … 𝐴𝑛− 1 [2.1]


𝑛

2.6.2 Metodología de Denavit Hartenberg

Jacques Denavit y Richard Hartenberg en el año 1995 propusieron un método matricial que nos

permite obtener de manera sistemática un sistema de coordenadas que se llamara {𝑆𝑖 } ligado a

cada eslabón 𝑖 en una cadena articulada luego posteriormente calcular las ecuaciones cinemáticas

de cada cadena.

La representación de Denavit y Hartenberg también conocido como D-H, indica que, escogiendo

adecuadamente los sistemas de coordenadas para cada eslabón del robot, se puede pasar de uno

al siguiente mediante 4 transformaciones básicas que dependen de las características geométricas

de los eslabones.

21
Las trasformaciones básicas de las que se menciona consisten en una sucesión de rotaciones y

traslaciones los cuales nos permiten relacionar el sistema de referencia del elemento 𝑖 con el

elemento 𝑖 − 1, pero para este propósito de pasar del {𝑆𝑖−1 } al {𝑆𝑖 } mediante las 4

transformaciones será posible si los {𝑆𝑖−1 } y {𝑆𝑖 } son definidos de acuerdo a unas normas

establecidas correspondientes a D-H.

A continuación, se expone las transformaciones mencionadas:

1. Rotación alrededor del eje 𝒛𝒊−𝟏 con un ángulo 𝜃𝑖 .

2. Traslación a lo largo de 𝒛𝒊−𝟏 mediante una distancia 𝑑𝑖 ; vector 𝒅𝒊 (0,0, 𝑑𝑖 ).

3. Traslación a lo largo de 𝒙𝒊 mediante una distancia 𝑎𝑖 ; vector 𝒂𝒊 (0,0, 𝑎𝑖 ).

4. Rotación alrededor del eje 𝒙𝒊 con un ángulo 𝛼𝑖 .

Como el producto de matrices no es conmutativo la representación de las trasformaciones

tendrán el siguiente orden:

𝑨𝒊−𝟏/𝒊 = 𝑻(𝒛, 𝜃𝑖 ) 𝑻(0,0, 𝑑𝑖 ) 𝑻(𝑎𝑖 , 0,0) 𝑻(𝒙, 𝛼𝑖 ) [2.2]

Luego realizando el producto entre las matrices se obtiene:

𝐶𝜃𝑖 −𝑆𝜃𝑖 0 0 1 0 0 0 1 0 0 𝑎𝑖 1 0 0 0
𝑨𝒊−𝟏/𝒊
𝑆𝜃
=[ 𝑖
𝐶𝜃𝑖 0 0] [0 1 0 0 ] [0 1 0 0 ] [0 𝐶𝛼𝑖 −𝑆𝛼𝑖 0
]
0 0 1 0 0 0 1 𝑑𝑖 0 0 1 0 0 𝑆𝛼𝑖 𝐶𝛼𝑖 0
0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1

𝐶𝜃𝑖 −𝐶𝛼𝑖 𝑆𝜃𝑖 𝑆𝛼𝑖 𝑆𝜃𝑖 𝑎𝑖 𝐶𝜃𝑖


𝑆𝜃 𝐶𝛼𝑖 𝐶𝜃𝑖 −𝑆𝛼𝑖 𝐶𝜃𝑖 𝑎𝑖 𝑆𝜃𝑖
=[ 𝑖 ] [2.3]
0 𝑆𝛼𝑖 𝐶𝛼𝑖 𝑑𝑖
0 0 0 1

Donde 𝜃𝑖 , 𝑎𝑖 , 𝑑𝑖 , 𝛼𝑖 son los llamados parámetros D-H del eslabón 𝑖.

22
Entonces, identificando los parámetros 𝜃𝑖 , 𝑎𝑖 , 𝑑𝑖 , 𝛼𝑖 (parámetros D-H) es suficiente para

obtener la matriz A y así obtener la relación de todos los eslabones del robot.

Como se indicó anteriormente para que la matriz 𝑨𝒊−𝟏/𝒊 relacione los sistemas {𝑆𝑖−1 } y {𝑆𝑖 } es

necesario regirse bajo unas determinadas normas, las normas y los 4 parámetros de D-H

conforman el llamado algoritmo de Denavit Hartenberg para la resolución del problema de la

cinemática directa.

Algoritmo de Denavit Hartenberg para la obtención del modelo cinemático directo

D-H 1. Numerar los eslabones comenzando con 1 (primer eslabón móvil de la cadena) y

acabando con n (último eslabón móvil). Se numerará como eslabón 0 a la base fija del robot.

D-H 2. Numerar cada articulación comenzando por 1 (la correspondiente al primer grado de

libertad) y acabando en n.

D-H 3. Localizar el eje de cada articulación. Si esta es rotativa, el eje será su propio eje de giro.

Si es prismática, será el eje a lo largo del cual se produce el desplazamiento.

D-H 4. Para i de 0 a n-1 situar el eje 𝒛𝒊 sobre el eje de la articulación i+1.

D-H 5. Situar el origen del sistema de la base {𝑆0 } en cualquier punto del eje 𝒛𝟎 . Los ejes 𝒙𝟎 e

𝒚𝟎 se situarán de modo que formen un sistema dextrógiro con 𝒛𝟎 .

D-H 6. Para i de 1 a n-1, situar el sistema {𝑆𝑖 } (solidario al eslabón i) en la intersección del eje

𝒛𝒊 con la línea normal común a 𝒛𝒊−𝟏 y 𝒛𝒊 . Si ambos ejes se cortasen se situaría {𝑆𝑖 } en el punto

de corte. Si fuesen paralelos {𝑆𝑖 } se situaría en la articulación i+1.

D-H 7. Situar 𝒙𝒊 en la línea normal común a 𝒛𝒊−𝟏 y 𝒛𝒊 .

D-H 8. Situar 𝒚𝒊 de modo que forme un sistema dextrógiro con 𝒙𝒊 y 𝒛𝒊 .

23
D-H 9. Situar el sistema {𝑆𝑛 } en el extremo del robot de modo que 𝒛𝒏 coincida con la dirección

de 𝒛𝒏−𝟏 y 𝒙𝒏 sea normal a 𝒛𝒏−𝟏 y 𝒛𝒏 .

D-H 10. Obtener 𝜃𝑖 como el ángulo que hay que girar en torno a 𝒛𝒊−𝟏 para que 𝒙𝒊−𝟏 y 𝒙𝒊 queden

paralelos.

D-H 11. Obtener 𝑑𝑖 como la distancia, medida a lo largo de 𝒛𝒊−𝟏 , que habría que desplazar

{𝑆𝑖−1 } para que 𝒙𝒊 y 𝒙𝒊−𝟏 quedasen alineados.

D-H 12. Obtener 𝑎𝑖 como la distancia medida a lo largo de 𝒙𝒊 (que ahora coincidiría con 𝒙𝒊−𝟏 )

que habría que desplazar el nuevo {𝑆𝑖−1 } para que su origen coincidiese con {𝑆𝑖 }.

D-H 13. Obtener 𝛼𝑖 como el ángulo que habría que girar en torno a 𝒙𝒊 (que ahora coincidiría

con 𝒙𝒊−𝟏 ), para que el nuevo {𝑆𝑖−1 } coincidiese totalmente con {𝑆𝑖 }.

D-H 14. Obtener las matrices de transformación 𝑨𝒊−𝟏/𝒊 definidas en [2.3].

D-H 15. Obtener la matriz de transformación que relaciona el sistema de la base con el del

extremo del robot 𝑻 = 𝑨𝟎/𝟏 𝑨𝟏/𝟐 𝑨𝟐/𝟑 … 𝑨𝒏−𝟏 .


𝒏

D-H 16. La matriz T define la orientación (submatriz de rotación) y posición (submatriz de

traslación) del extremo referido a la base en función de las n coordenadas articulares.

(Barrientos et al., 2007, págs. 97-99)

Los parámetros D-H dependen solo de las características geométricas del eslabón y las

articulaciones que los unen consecutivamente.

Una vez obtengamos los parámetros D-H el cálculo que relaciona los eslabones consecutivos del

robot es al instante, debido a que están dadas por las matrices 𝐴 que se calculan con la expresión

[2.3] ya expuesta anteriormente, luego la relación de eslabones que no sean consecutivos está

24
dada por las matrices 𝑇 que se calculan mediante el producto del conjunto de matrices 𝐴 como se

expuso anteriormente.

2.6.3 Cinemática inversa

La cinemática inversa es un estudio en el que las ecuaciones son no lineales para los valores de

las articulaciones, por tanto, pueden existir diferentes soluciones, soluciones infinitas o no

encontrar solución para el problema en específico, en esencia consiste en encontrar por medio de

las matrices de transformación los valores correspondientes a la posición y orientación de todas

las articulaciones, siendo como dato la posición y orientación del efector final del robot, sin

embargo existen otros métodos como los métodos geométricos y por medio de cuaternios que

también se usan para el problema cinemático directo.

El objetivo del problema cinemático inverso consiste en que valores deben adoptar las

coordenadas articulares 𝑞 = [𝑞1 , 𝑞2 , … , 𝑞𝑛 ]𝑇 para una determinada posición y orientación del

efector final del robot.

En la cinemática directa es posible abordar el problema de una manera sistemática y ordenada,

por medio de la utilización de las matrices de transformación homogéneas, sin importar como

este configurado el robot. En cambio, en la cinemática inversa no es así, ya que el procedimiento

de obtención de las ecuaciones está considerablemente ligada a la configuración del robot.

Es posible por medio de procedimientos genéricos para la programación, llegar a una solución

del problema cinemático inverso por parámetros de Denavid-Heisenberg por ejemplo, y así

obtener los valores articulares para llegar a la posición y orientación establecido para el efector

final del robot, pero estos procedimientos requieren de métodos numéricos iterativos entonces la

convergencia de la solución no siempre está garantizada, por esta razón es más adecuado tener

25
una solución concreta para el problema cinemático inverso, esta solución debe tener una relación

matemático de la forma:

𝑞𝑘 = 𝑓𝑘 (𝑥, 𝑦, 𝑧, 𝛼, 𝛽, 𝛾) 𝑘 = 1 … 𝑛 (𝐺𝐷𝐿) [2.4]

De esta solución se puede destacar las siguientes ventajas:

1. En muchas aplicaciones, el problema cinemático inverso ha de resolverse en tiempo real

(por ejemplo, en el seguimiento de una determinada trayectoria). Una solución de tipo

interactivo no garantiza tener la solución en el momento adecuado.

2. Al contrario de lo que ocurriría en el problema cinemático directo, con cierta frecuencia

la solución del problema cinemático inverso no es única; existiendo diferentes n-uplas

[𝑞1 , 𝑞2 , … , 𝑞𝑛 ]𝑇 que posicionan y orientan el extremo del robot del mismo modo. En estos

casos una solución cerrada permite incluir determinadas reglas o restricciones que

aseguren que la solución obtenida sea la más adecuada de entre las posibles (por

ejemplo, los límites en los recorridos articulares). (Barrientos et al., 2007, pág. 108)

A pesar de las distintas dificultades la mayoría de los robots tienen cinemáticas relativamente

sencillas, por lo que el facilitan la solución del problema cinemático inverso. Como ejemplo se

puede considerar los tres primeros grados de libertad en general de varios robots, los cuales

cuyos elementos generalmente están en un plano, a esto se conoce como estructura planar lo que

facilita la solución del problema, por otro lado en varios robots se da la situación que sus tres

últimos grados de libertad están dedicados a la orientación del efector final del robot, tienen giros

sobre ejes que se cortan en un punto, situación que nuevamente facilita el cálculo de

[𝑞1 , 𝑞2 , … , 𝑞𝑛 ]𝑇 que corresponden a la posición y orientación deseadas, entonces de esta manera

26
es posible establecer una pautas generales para resolver de manera sistemática el cinemático

inverso del robot.

Es normalmente utilizar los métodos geométricos para obtener los valores de las primeras

variables articulares que corresponden a la posición del robot (sin contar la orientación de efector

final), en este método se utilizan relaciones trigonométricas y geométricas de esta manera por el

método de triángulos por ejemplo llegar a la solución.

Entonces como alternativa podemos recurrir a manejar directamente las ecuaciones

correspondientes al problema la cinemateca directa, se establece una relación como se muestra a

continuación.

𝑛 𝑜 𝑎 𝑝
[ ] = [𝑡𝑖𝑗 ] [2.5]
0 0 0 1

Donde los elementos de 𝑡𝑖𝑗 están en función de las coordenadas articulares [𝑞1 , 𝑞2 , … , 𝑞𝑛 ]𝑇 ,

luego desde esta lógica se puede pensar que es posible despejar las 𝑛 variables articulares 𝑞𝑖 en

función de las componentes de los vectores n, o, a y p.

A continuación, se observa dos métodos para resolver el problema cinemático inverso con

algunos ejemplos tomados del libro “Fundamentos de Robótica” de Antonio Barrientos.

Resolución del problema cinemático inverso por métodos geométricos.

Este método es adecuado para robots de pocos grados de libertad o para casos en donde se

consideren los primeros grados de libertad para posicionar el efector final.

27
Este procedimiento consiste encontrar relaciones geométricas suficientes de las coordenadas del

efector final del robot, coordenadas articulares y dimensiones físicas de los eslabones.

Figura 8: Robot articular 3 GDL. Fuente: (Barrientos et al., 2007)

A manera de explicar el procedimiento, se aplicará el método al problema cinemático inverso del

robot de 3 GDL que se muestra en la Figura 8, siendo esta una estructura típica articular donde el

dato de partida (px, py y pz) correspondientes al {𝑆0 } a las que vamos a posicionar el efector

final del robot.

Como se puede observar este robot tiene una estructura planar por lo que el ángulo del plano

queda definido por la primera variable articular 𝑞1 , este valor se obtiene de forma inmediata

como se muestra a continuación:

28
𝑝𝑦
𝑞1 = arctan ( )
𝑝𝑥

Luego se puede observar que los elementos 2 y 3 están en otro plano, entonces por el teorema de

los cosenos tendremos:

𝑝𝑥2 + 𝑝𝑦2 + 𝑝𝑧2 − 𝑙22 − 𝑙32


cos 𝑞3 =
2𝑙2 𝑙3

Esta expresión permite obtener 𝑞3 en función del vector posición, sin embargo, por conveniencia

computacional es mejor utilizar arcotangente:

𝑠𝑒𝑛 𝑞3 = ±√1 − 𝑐𝑜𝑠 2 𝑞3

Entonces:

±√1 − 𝑐𝑜𝑠 2 𝑞3
𝑞3 = 𝑎𝑟𝑐𝑡𝑔 ( )
cos 𝑞3

Se puede observar que se tiene dos posibles soluciones, signo negativo o positivo corresponden a

las dos configuraciones en el codo del robot.

29
Figura 9: Elementos 2 y 3 contenidos en un plano de la Figura 8. Fuente: (Barrientos et al.,

2007).

El cálculo de 𝑞2 se realiza por la diferencia de ángulos como se muestra a continuación:

𝑞2 = 𝛽 − 𝛼

𝑝𝑧
𝛽 = 𝑎𝑟𝑐𝑡𝑔 ( )
±√𝑝𝑥2 + 𝑝𝑦2

𝑙3 𝑠𝑒𝑛 𝑞3
𝛼 = 𝑎𝑟𝑐𝑡𝑔 ( )
𝑙2 + 𝑙3 𝑐𝑜𝑠 𝑞3

𝑝𝑧 𝑙3 𝑠𝑒𝑛 𝑞3
𝑞2 = 𝑎𝑟𝑐𝑡𝑔 ( ) − 𝑎𝑟𝑐𝑡𝑔 ( )
±√𝑝𝑥2 + 𝑝𝑦2 𝑙2 + 𝑙3 𝑐𝑜𝑠 𝑞3

Nuevamente el signo da lugar a dos posibles valores de 𝑞2 que corresponden al codo de la Figura

9.

Resolución del problema cinemático inverso a partir de la matriz de transformación

homogénea

30
Se puede obtener el modelo cinemático inverso de un robot partiendo del modelo cinemático

directo, entonces teniendo conocidas las relaciones del valor de la posición y orientación del

efector final en función de las coordenadas articulares, a partir de ellas hallar las relaciones

inversas, esto en la práctica puede ser complejo, lo que significa que a veces obliga a desecharla.

Aplicando el procedimiento al robot de 3 GDL de la Figura 9, se observa que el robot queda

contenido en un plano donde actúa el ángulo 𝑞1 .

Figura 10: Robot de 3 GDL Fuente: (Barrientos et al., 2007)

Inicialmente para resolver el problema cinemático inverso se debe obtener la expresión de [2.5]

para este robot, naturalmente obtener la matriz T que relaciona {𝑆0 } (asociado a la base) con el

sistema {𝑆3 } (asociado a su efector final), en la Figura 10 podemos observar la representación de

la asignación de sistemas de referencia para los criterios de Denavid – Heisenberg, teniendo

31
como posición inicial (𝑞1 = 𝑞2 = 0), luego en la Tabla 1 tenemos los valores correspondientes a

los parámetros de Denavid – Heisenberg.

Figura 11: Asignación de sistemas de referencia del Robot de 3 GDL de la Figura 10. Fuente:

(Barrientos et al., 2007)

Con esto se puede obtener inmediatamente las matrices A y T.

𝑨𝟎/𝟑 = 𝑨𝟎/𝟏 𝑨𝟏/𝟐 𝑨𝟐/𝟑

𝐶1 0 𝑆1 0 𝐶2 0 −𝑆2 0 1 0 0 0
𝑆 0 −𝐶1 0 𝑆2 0 𝐶2 0 0 1 0 0]
𝑻 = 𝑨𝟎/𝟑 =[ 1 ][ ][
0 1 0 𝑙1 0 −1 0 0 0 0 1 𝑞3
0 0 0 1 0 0 0 1 0 0 0 1

𝐶1 𝐶2 −𝑆1 −𝐶1 𝑆2 0
𝑆𝐶 𝐶1 −𝑆1 𝑆2 0
𝑨𝟎/𝟐 =[ 1 2 ]
𝑆2 1 𝐶2 𝑙1
0 0 0 1

32
𝐶1 𝐶2 −𝑆1 −𝐶1 𝑆2 −𝑞3 𝐶1 𝑆2
𝑆𝐶 𝐶1 −𝑆1 𝑆2 −𝑞3 𝑆1 𝑆2
𝑻 = 𝑨𝟎/𝟑 =[ 1 2 ]
𝑆2 0 𝐶2 𝑞3 𝐶2 + 𝑙1
0 0 0 1

Tabla 1: Parámetros D-H del robot de la figura 9

Articulación Θ d A Α

1 𝑞1 𝑙1 0 90

2 𝑞2 0 0 -90

3 0 𝑞3 0 0

Una vez teniendo T en función de las coordenadas articulares (𝑞1 , 𝑞2 , 𝑞3 ), luego suponiendo una

dirección de destino del efector final dado por los vectores 𝑛, 𝑜, 𝑎 𝑦 𝑝, se pueden operar las 12

ecuación resultantes con el objetivo de despejar 𝑞1 , 𝑞2 𝑦 𝑞3 en función de 𝑛, 𝑜, 𝑎 𝑦 𝑝.

Por otro lado, este procedimiento directo es complejo, es por eso que es más adecuado aplicar el

siguiente procedimiento.

Partiendo de 𝑻 = 𝑨𝟎/𝟏 𝑨𝟏/𝟐 𝑨𝟐/𝟑 se tiene:

(𝑨𝟎/𝟏 )−𝟏 𝑻 = 𝑨𝟏/𝟐 𝑨𝟐/𝟑

(𝑨𝟏/𝟐 )−𝟏 (𝑨𝟎/𝟏 )−𝟏 𝑻 = 𝑨𝟐/𝟑 [𝟐. 𝟔]

𝑛 𝑜 𝑎 𝑝
Como 𝑇 = [ ] es conocido, los miembros a la izquierda de las expresiones [2.6] son
0 0 0 1

función de las variables articulares (𝑞1 , . . , 𝑞𝑘 ) luego los miembros de la derecha son de las

variables articulares (𝑞𝑘+1 , . . , 𝑞𝑛 ).

33
Entonces de la primera expresión de [2.6] se obtiene a 𝑞1 aislado de las variables articulares con

lo que es posible despejarlo, posteriormente con la segunda ecuación de [2.6] y 𝑞1 conocido

permite hallar 𝑞2 , luego con 𝑞1 y 𝑞2 se obtiene 𝑞3 con la ecuación [2.5].

Para poder aplicar este procedimiento, es necesario que en primer lugar obtener las inversas de

las matrices 𝑨𝒊−𝟏/𝒊 . Esto es sencillo si se considera que la inversa de una matriz de

transformación homogénea dada por:

𝑛𝑥 𝑛𝑦 𝑛𝑧 −𝑛𝑇 𝑝
𝑜𝑥 𝑜𝑦 𝑜𝑧 −𝑜𝑇 𝑝
𝑇 −1 =
𝑎𝑥 𝑎𝑦 𝑎𝑧 −𝑎𝑇 𝑝
[0 0 0 1 ]

𝑛𝑥 𝑛𝑦 𝑛𝑧 𝑝𝑥 𝑛𝑥 𝑛𝑦 𝑛𝑧 −𝑛𝑇 𝑝
𝑜 𝑜𝑦 𝑜𝑧 𝑝𝑦 𝑜𝑥 𝑜𝑦 𝑜𝑧 −𝑜𝑇 𝑝
[𝑎𝑥 𝑎𝑦 ]=
𝑥 𝑎𝑧 𝑝𝑧 𝑎𝑥 𝑎𝑦 𝑎𝑧 −𝑎𝑇 𝑝
0 0 0 1 [0 0 0 1 ]

Luego se tiene:

𝐶1 0 𝑆1 0 −1 𝐶1 𝑆1 0 0
𝑆1 0 −𝐶1 0 1 −𝑙1
(𝑨𝟎/𝟏 )−𝟏 =[ ] =[ 0 0 ]
0 1 0 𝑙1 𝑆1 −𝑆1 0 0
0 0 0 1 0 0 0 1

𝐶2 0 −𝑆2 0 −1 𝐶2 𝑆2 0 0
𝑆2 0 𝐶2 0 −1 0]
(𝑨𝟏/𝟐 )−𝟏 =[ ] =[ 0 0
0 −1 0 0 −𝑆2 𝐶2 0 0
0 0 0 1 0 0 0 1

1 0 0 0 −1 1 0 0 0
(𝑨𝟐/𝟑 ) −𝟏
= [0 1 0 0 ] = [0 1 0 0 ]
0 0 1 𝑞3 0 0 1 −𝑞3
0 0 0 1 0 0 0 1

Posteriormente, utilizando la primera ecuación de [2.6] se tiene:

34
𝐶1 𝑆1 0 0 𝑛𝑥 𝑛𝑦 𝑛𝑧 𝑝𝑥
1 −𝑙1 𝑜𝑥 𝑜𝑦 𝑜𝑧 𝑝𝑦
(𝑨𝟎/𝟏 )−𝟏 𝑻 = 𝑨𝟏/𝟐 𝑨𝟐/𝟑 =[ 0 0 ][ ]
𝑆1 −𝑆1 0 0 𝑎𝑥 𝑎𝑦 𝑎𝑧 𝑝𝑧
0 0 0 1 0 0 0 1

𝐶2 0 −𝑆2 0 1 0 0 0 𝐶2 0 −𝑆2 −𝑆2 𝑞3


𝑆 0 𝐶2 0 0 1 0 0 ] = [ 𝑆2 0 𝐶2 −𝐶2 𝑞3
= [ 2 ][ ] [2.7]
0 −1 0 0 0 0 1 𝑞3 0 −1 0 0
0 0 0 1 0 0 0 1 0 0 0 1

De las ecuaciones que se forman de [2.7] interesa las que tiene a 𝑞1 en función de constantes,

tomando 3,4:

𝑝𝑦 𝑝𝑦
𝑆1 𝑝𝑥 − 𝐶1 𝑝𝑦 = 0 → tan 𝑞1 = 𝑝𝑥
→ 𝑞1 = arctan (𝑝 ) [2.8]
𝑥

Usando la segunda ecuación de [2.6]:

𝐶2 𝑆2 0 0 𝐶1 𝑆1 0 0 𝑛𝑥 𝑛𝑦 𝑛𝑧 𝑝𝑥
−1 0] [ 0 0 1 −𝑙1 𝑜𝑥 𝑜𝑦 𝑜𝑧 𝑝𝑦
(𝑨𝟏/𝟐 )−𝟏 (𝑨𝟎/𝟏 )−𝟏 𝑻 = 𝑨𝟐/𝟑 =[ 0 0 ][
𝑝𝑧 ]
−𝑆2 𝐶2 0 0 𝑆1 −𝑆1 0 0 𝑎𝑥 𝑎𝑦 𝑎𝑧
0 0 0 1 0 0 0 1 0 0 0 1

1 0 0 0
= [0 1 0 0]
0 0 1 𝑞3
0 0 0 1

𝐶2 𝐶1 𝐶2 𝑆1 𝑆2 −𝑙1 𝑆2 𝑛𝑥 𝑛𝑦 𝑛𝑧 𝑝𝑥 1 0 0 0
[
−𝑆1 𝐶1 0 0 ] [ 𝑜𝑥 𝑜𝑦 𝑜𝑧 𝑝𝑦 0 1 0 0]
𝑝𝑧 ] = [0
[2.9]
−𝑆2 𝑆1 −𝑆2 𝑆1 𝐶2 −𝐶2 𝑙1 𝑎𝑥 𝑎𝑦 𝑎𝑧 0 1 𝑞3
0 0 0 1 0 0 0 1 0 0 0 1

Tomando el elemento (1,4):

𝐶1 𝑝𝑥 + 𝑆1 𝑝𝑦
𝐶2 𝐶1 𝑝𝑥 + 𝐶2 𝑆1 𝑝𝑦 + 𝑆2 𝑝𝑍 − 𝑙1 𝑆2 = 0 → tan 𝑞2 = [2.10]
𝑝𝑍 − 𝑙1

Luego por [2.8]:

2
𝑆1 𝑝𝑥 − 𝐶1 𝑝𝑦 = 0 → (𝑆1 𝑝𝑥 − 𝐶1 𝑝𝑦 ) = 0 → 𝐶1 𝑝𝑥 + 𝑆1 𝑝𝑦 = √𝑝𝑥2 + 𝑝𝑦2

35
Se obtiene:

√𝑝𝑥2 + 𝑝𝑦2
𝑞2 = arctan [2.11]
𝑙1 − 𝑝𝑧

Finalmente, tomando de [2.9] el elemento (3,4):

−𝑆2 𝐶1 𝑝𝑥 − 𝑆2 𝑆1 𝑝𝑦 + 𝐶2 𝑝𝑧 − 𝐶2 𝑙1 = 𝑞3 → 𝑞3 = 𝐶2 (𝑝𝑧 − 𝑙1 ) − 𝑆2 √𝑝𝑥2 + 𝑝𝑦2 [2.12]

Las expresiones dadas [2.8], [2.11] y [2.12] son la solución del problema cinemático inverso del

robot.

𝑝𝑦
𝑞1 = arctan ( )
𝑝𝑥

√𝑝𝑥2 + 𝑝𝑦2
𝑞2 = arctan
𝑙1 − 𝑝𝑧

𝑞3 = 𝐶2 (𝑝𝑧 − 𝑙1 ) − 𝑆2 √𝑝𝑥2 + 𝑝𝑦2

Es necesario recalcar que mediante consideraciones geométricas se podría haber llegado al

mismo resultado.

2.7 Motores paso a paso (PAP)

El motor paso a paso permite transformar un impulso eléctrico en movimiento angular, este tipo

de motor es muy utilizado en los dispositivos donde se desea realizar un control de velocidad o

de posición, además de ser típico de los sistemas de posicionamiento, el uso más común que se

da a este tipo de motores es en impresoras conectadas a una computadora, para el

posicionamiento del cabezal de impresión y rotación del rodillo del porta papeles en las

36
impresoras matriciales, de margarita y de inyección de tinta, o bien en la rotación del rodillo

porta papeles en las impresoras para xerografía6.

Los motores paso a paso del tipo nema son bastante utilizados en estas la apariencia de este tipo

de motores es el que se muestra en la Figura 12.

Figura 12: Motor Paso a Paso (Nema 23). Fuente: https://tienda.sawers.com.bo/nema23-motor-

paso-paso-bipolar?search=motor%20paso%20a%20paso

Los motores paso a paso no necesariamente se caracterizan por ser rápidos, esta familia de

motores raramente supera la velocidad de 3000 [rev/min].

Pero gracias a ese funcionamiento lento estos motores funcionan normalmente sin escobillas,

siendo que la mayoría de los motores paso a paso de buena calidad están mayormente equipados

por rodamientos de bolas, por lo tienen una duración de vida considerable, sin necesidad de

mantenimiento. Los motores paso a paso son aquellos que giran de acuerdo a los pulsos

eléctricos que reciben en sus bobinas, entonces el ángulo de rotación mínimo denominada “paso”

6Xerografía: Es el proceso de impresión que se emplea mediante electrostática en seco para la


producción para la copia de documentos o imágenes.
37
es el producido por la modificación de estos pulsos, una característica principal de los motores

PAP es el número de pasos por cada vuelta, de los cuales los más comunes son 48, 100 o 200 por

cada vuelta.

Existes tres tipos de tecnologías en los motores PAP:

• Motor de imanes permanentes.

• Motor de reluctancia variable.

• Motor híbrido combinando el imán y la reluctancia variable

Además de dos tipos de motores PAP:

• Motor unipolar.

• Motor bipolar.

2.7.1 Motor unipolar

Los motores unipolares tienen cinco o seis terminales de salida que depende de la conexión

interna del mismo, este tipo de motores suelen ser sencillos de controlar ya que sus devanados

son alimentados siempre en el mismo sentido por una tensión única del cual viene el nombre de

unipolar (una polaridad).

38
Figura 13: Modelo conceptual del Motor PAP unipolar Fuente: (Begle, 2013)

2.7.2 Motor bipolar

Los motores bipolares tienen generalmente 4 terminales de salida, estos requieren del cambio de

dirección de flujo de corriente a través de las bobinas en la secuencia apropiada para realizar un

movimiento, en un sentido crea un polo norte y en el otro un polo sur, de ahí su nombre de

bipolar (dos polaridades).

39
Figura 14: Modelo conceptual del Motor PAP bipolar. Fuente: (Begle, 2013)

2.7.3 Secuencia de pasos

Secuencias para manejar motores paso a paso Bipolares.

Como mencionamos, los motores bipolares necesitan de corriente en las bobinas con una

secuencia determinada, cada secuencia provoca el movimiento en un paso del motor, entonces la

secuencia seguida de pasos provocará le movimiento circular, luego el sentido de giro depende

del cambio de secuencia natural o invertida.

A continuación, se observa la tabla con la secuencia necesaria para controlar motores paso a paso

del tipo bipolar:

Tabla 2: Secuencia de pasos para motores bipolares

Paso A B C D

1 1 0 1 0

40
2 1 0 0 1

3 0 1 0 1

4 0 1 1 0

Secuencias para manejar motores paso a paso Unipolares

Existen tres secuencias posibles para este tipo de motores, todas las secuencias comienzan

nuevamente por el paso 1 una vez alcanzado el paso final (4 u 8). Para revertir el sentido de giro,

simplemente se deben ejecutar las secuencias en modo inverso.

Secuencia del tipo wave drive:

La secuencia del tipo ware drive consiste en activar una sola bobina a la vez, en algunos motores

esto brinda un funcionamiento más suave, la deficiencia es que al estar solo una bobina activada

el torque de paso y retención son menores.

Tabla 3: Secuencia de pasos para motores Unipolares (wave drive)

Paso A B C D

1 1 0 0 0

2 0 1 0 0

3 0 0 1 0

41
4 0 0 0 1

Secuencia Normal:

Esta secuencia es la más usada, también la que generalmente recomienda el fabricante, con esta

secuencia el motor avanza un paso por a la vez, entonces como siempre hay al menos dos

bobinas activadas, se obtiene un alto torque de paso y de retención.

Tabla 4: Secuencia de pasos para motores Unipolares (Secuencia normal)

Paso A B C D

1 1 1 0 0

2 0 1 1 0

3 0 0 1 1

4 1 0 0 1

Secuencia a Medio Paso

La secuencia a medio paso es la combinación de las dos secuencias anteriores, donde se enciende

una bobina intercalada con la activación de 2 bobinas, por lo que puede ser aplicado en

situaciones que requieran de una mayor precisión.

Tabla 5: Secuencia de pasos para motores Unipolares (Secuencia de medio paso)

Paso A B C D

42
1 1 0 0 0

2 1 1 0 0

3 0 1 0 0

4 1 1 1 0

5 0 0 1 0

6 0 0 1 1

7 0 0 0 1

8 1 0 0 1

Por último, recalcar que como los motores paso a paso son dispositivos mecánicos deben vencer

ciertas inercias, lo que significa que el tiempo de duración y frecuencias de pulsos deben ser

considerados a la hora de utilizar los motores paso a paso, en este sentido los motores deben

alcanzar a reconocer el paso antes de la próxima secuencia de pulsos, entonces si la frecuencia de

pulsos es elevada el motor puede reaccionar como detallamos a continuación:

• Reaccionar sin ningún movimiento en absoluto.

• Comenzar a vibrar, pero sin llegar realizar giro.

• Girar de forma errática.

• Llegar a girar en sentido opuesto.


43
Entonces para obtener un arranque suave y preciso, es recomendable comenzar con una

frecuencia de pulso baja y gradualmente ir subiendo hasta la velocidad deseada sin superar la

máxima tolerada, el giro en reversa debería también ser realizado previamente bajando la

velocidad de giro, luego cambiar el sentido de rotación.

Invertir giro motor paso a paso

Si queremos invertir el giro del motor PAP, basta con aplicar las secuencias al revés (de ultimo a

primero).

Velocidad Motor Paso a Paso

La velocidad del motor paso a paso depende de la velocidad en la que se envían los pasos

entonces para aumentar o disminuir la velocidad del motor PAP, se debe programar al

controlador de esta manera, entre menos tiempo se tome enviando los pasos, más rápido se

moverá el motor PAP.

2.7.4 Motores Nema

Las siglas NEMA son de National Electric Manufactures Association, son los estándares

principales en los Estados Unidos y la Norma Nema MG1 dicta los estándares para la producción

de motores y generadores.

Clasificación de motores NEMA y sus principales aplicaciones

La variación existente en cuanto a la construcción de motores de inducción es evidente, debido a

que se pueden obtener curvas de par velocidad con la modificación en la construcción del rotor,

la variación hace que se tenga varios valores de potencia para las diferentes aplicaciones, por esta

situación NEMA y su equivalente europeo IEC realizaron estandarizaciones de los tipos de

44
diseño en motores, cuya diferencia es la forma de las ranuras de las láminas de núcleo llamado

también codificador rotatorio, codificador de eje o generador de pulsos.

Los motores se pueden clasificar mediante determinadas clases según (Martínez, 2019) las cuales

detallamos a continuación.

Clase A

El motor clase A es aquel motor de jaula de ardilla estándar fabricado para usos a velocidad

constante, tiene áreas considerablemente grandes en las ranuras lo cual facilita la disipación del

calor generado, en el periodo de arranque en la superficie del rotor la densidad de corriente es

alta, en el periodo de marcha la densidad de corriente disminuye, esta diferencia hace que se

tenga algo de resistencia y baja reactancia de arranque, por lo que se tiene un par de arranque de

entre 1.5 y 1.75 veces al nominal y corriente de arranque varie entre 5 y 7 veces la corriente

nominal normal.

Clase B

Los motores de clase B llamados también motores de propósito general, las ranuras del motor

están un poco más profundo que los motores de clase A, esta profundidad tiende a aumentar la

reactancia de arranque y la marcha del rotor, lo que produce un decremento en el par y la

corriente de arranque, entonces las corrientes de arranque suelen variar de entre 4 y 5 veces la

corriente nominal, estos motores son utilizados generalmente en bombas centrifugas y

sopladores.

Clase C

Los motores de clases C tiene doble jaula de ardilla, lo que ocasiona un alto par de arranque y

menor corriente de arranque, por lo que acelera rápidamente, pero cuando está sometido a

45
grandes cargas, la disipación térmica se encuentra limitada, en condiciones de arranque frecuente

el rotor tiende a sobre calentarse, tiene aplicaciones en bombas y compresores de pistón.

Clase D

Los motores de clase D conocidas también como de alto par y resistencia, cuya relación de

resistencia a reactancia del rotor de arranque es mayor a los expuestos anteriormente, estos

motores son utilizados para aplicaciones de arranque pesado como cizallas o troqueles que

necesitan alto par.

Clase F

Los motores de clase F también conocidos como de doble jaula y bajo par, están diseñados como

motores de baja corriente ya que necesitan la menor corriente de arranque en comparación con

las demás clases, este motor produce parres de arranque 1.25 veces el par nominal y bajas

corrientes de arranque de entre de dos a cuatro veces a la nominal.

En la siguiente tabla se dan las características para cada clase de motor:

Tabla 6: Características de las diferentes clases de un motor paso a paso

Clase Par de Corriente de Regulación de Tipo


arranque [N m] arranque [A] velocidad [%]

A 1.5 – 1.75 5-7 2-4 Normal

B 1.4 – 1.6 4.5-5 3.5 De propósito


general

C 2-2.5 3.5-5 4-5 De doble jaula


de ardilla y alto
par

46
D 2.5-3 3-8 5-8, 8-13 Alto par y alta
resistencia

F 1.25 2-4 >5 De doble jaula,


bajo par y baja
corriente de
arranque

Designación de motores de acuerdo a sus dimensiones en pulgadas

Los motores clasificados por sus dimensiones se designan de acuerdo a número de brida7 que

poseen, seguido del tipo de brida y terminando con el número de eje.

Números de brida: 17 a 56.

Tipos de bridas: La brida tipo C tiene orificios de montaje roscados en el diámetro del círculo

primitivo M, la brida tipo D tiene orificios libres (orificios de paso) en el diámetro del círculo

primitivo M.

Números de eje: 019 a 113: estos números de 3 dígitos representan el diámetro del eje D, en

pulgadas x 100.

Si el número del eje no está incluido en la designación expuesta, el diámetro del eje por defecto

debe especificarse como se indica en la Tabla.

Tabla 7: Designación de Diámetro del eje, de acuerdo al número de brida de un motor paso a
paso

7
Brida: Es el elemento principal de un motor que para fijar este a una máquina para ejercer acción el cual cumple
con parámetro y estándares.
47
Número 17 23 34 42 48 56

de brida

Número 020 025 038 063 063 063

de eje

Diámetro 0.1969 0.2500 0.3750 0.6250 0.6250 0.6250

del eje D

en

pulgadas

Dimensiones para bridas de montaje

48
Figura 15: Dimensiones para bridas de montaje. Fuente: (ICS, 2001)

1) El contorno externo de la brida de montaje no puede ser circular, pero debe permanecer

dentro de los límites del diámetro P como se puede observar en la figura 2.1.

2) Se requiere acceso a la parte posterior de la brida de montaje para la brida tipo D y acceso

a la parte trasera de la brida de montaje que no es necesario para la brida tipo C.

49
Figura 16: Dimensiones para bridas de montaje, motores con dimensiones en pulgadas.

Fuente: (ICS, 2001)

50
2.8 Hardware libre para IoT

Se denomina hardware libre o hardware de código abierto, a aquellos dispositivos de hardware

cuyas especificaciones y diagramas esquemáticos son de acceso público, de manera similar al

software libre no necesita de la compra de licencia para su uso.

En general existes varias plataformas de hardware y software libre para aplicaciones IoT en el

mercado entre los cuales podemos destacar.

• Raspberry pi

• Beaglebone

• Arduino Yun

• Esp32

2.8.1 Raspberry Pi

La Raspberry Pi es un pequeño ordenador SBC8 (Single Board Computer) o PC de placa única,

desarrollada por la fundación Raspberry Pi con sede en el Reino Unido con objetivos de

educación, aprendizaje no formal e investigación.

El Raspberry Pi 3 Model B+ mantiene el mismo espacio mecánico que el Raspberry Pi 2 Model

B y el Raspberry Pi 3 Model B, la placa Raspberry pi 3 B + con un procesador Quad-core de 64

bits a 1,4 GHz, LAN inalámbrica de doble banda, bluetooth 4.2/BLE, ethernet más rápido y

compatibilidad con Power-over-Ethernet (con PoE HAT independiente) tiene características

como se muestra a continuación:

8SBC: Ordenador de Placa Única, los cuales contiene todos o la mayor parte de los componentes de un
ordenador.
51
• Procesador: SoC Broadcom BCM2837B0, Cortex-A53 de 64 bits a 1,4 GHz

• Memoria: 1 GB LPDDR2 SDRAM

• Conectividad: LAN inalámbrica 2.4GHz y 5GHz IEEE 802.11.b/g/n/ac, Bluetooth 4.2,

BLE Gigabit Ethernet sobre USB 2.0 (rendimiento máximo 300Mbps)

4 × USB 2.0 puertos.

• Acceso: Extensión GPIO 40 pines

• Video & Sonido: 1 HDMI tamaño completo

Puerto de pantalla MIPI DSI

Puerto de cámara MIPI CSI

Salida estéreo de 4 polos

Puerto de video compuesto

• Multimedia: H.264, Decodificador MPEG-4 (1080p30); Codificador H.264

(1080p30); Gráficos OpenGL ES 1.1, 2.0

• Soporte de Tarjeta SD: Formato Micro SD para cargar sistema operativo y

almacenamiento de datos

• Potencia de entrada: 5 V/2,5 A CC a través de conector micro USB

5 V CC a través de la extensión GPIO

• Alimentación a través de Ethernet (PoE) habilitada (requiere PoE HAT por separado).

52
Figura 17: Raspberry pi 3 B+ Fuente: (Fundation, 2020)

2.8.2 Arduino

Arduino es una plataforma electrónica de código abierto basada en hardware y software libre

de fácil acceso.

Arduino también simplifica el proceso de trabajar con microcontroladores, ofrece algunas

ventajas destacables para profesores, estudiantes y aficionados interesados sobre estos

sistemas, a continuación, destacamos algunas ventajas del Arduino.

• Multiplataforma: El software Arduino (IDE) se ejecuta en los sistemas operativos

como Windows, Macintosh OSX y Linux, siendo que la mayoría de los sistemas de

microcontroladores están limitados a Windows.

53
• Entorno de programación simple y claro: El software Arduino (IDE) es sencillo de

usar para principiantes, pero al mismo tiempo suficientemente flexible para que los

usuarios avanzados, se basa de manera conveniente en el entorno de programación

Processing.

• Software de código abierto y extensible: El software de Arduino se publica como

herramientas de código abierto, lo que significa que están disponibles para su extensión

por parte de programadores experimentados, el lenguaje se puede expandir a través de

bibliotecas C++, por otro lado, las personas que deseen comprender los detalles

técnicos pueden hacerlo a través de AVR C en el que se basa.

Arduino Yun

La placa electrónica Arduino Yún es una placa microcontrolador basada en ATmega32u4 y el

Atheros AR9331, el procesador Atheros admite una distribución de Linux basada en OpenWrt

llamada Linino OS, esta placa tiene soporte Ethernet y WiFi incorporado, un puerto USB-A,

ranura para tarjeta micro-SD, 20 pines de entrada/salida digital (7 de ellos pueden usarse como

salidas PWM y 12 como entradas analógicas), un cristal de 16 MHz oscilador, una conexión

micro USB, un encabezado ICSP y 3 botones de reinicio.

Arduino Yún es distinguible de otras placas de Arduino debido a la capacidad de comunicarse

con la distribución de Linux integrada, ofreciendo una buena computadora en red con la

facilidad de un Arduino, además de los comandos de Linux como cURL, permite escribir los

scripts de shell y python para interacciones sólidas, es similar al Leonardo con el

ATmega32u4, excepto que tiene Linux como Sistema Operativo, como tiene comunicación

USB incorporado, elimina la necesidad de un procesador secundario en caso de requerirlo.

54
A continuación, se muestra algunas de sus características:

• Procesador: Atheros AR9331 arquitectura MIPS Memoria

• RAM: 64 MB DDR2 Memoria

• Flash: 16 MB

• Ethernet: 802.3 10/100 Mbit/s Wi-Fi: 802.11 b/g/n 2.4 GHz

• Alimentación: 5 V

• Reloj: 400 MHz CPU

• OS: Linino OS

Figura 18: Arduino Yun. Fuente: (Arduino, 2020)

2.8.3 ESP32

ESP32 es la denominación de una familia de chips SoC de bajo consumo de energía, con

tecnología Wi-Fi y Bluetooth de 2.4 GHz diseñado con las tecnologías TSMC de ultra baja

55
potencia de 40 nm, con el objetivo de lograr el mejor rendimiento de potencia y RF, es robusta,

versátil y confiable para una amplia variedad de aplicaciones.

A continuación, se muestra algunas sus características:

• Procesador: Xtensa LX6 de 32 bits de single/dual core arriba de 600 MIPS

• Memoria Flash: 520 KB SRAM

• Wi-Fi: 802.11 /b/g/n 2.4 GHz, más de 150 Mbps

• Bluetooth: Bluetooth 4.2 BR/EDR y BLE

• Alimentación: 3.3 V

• Corriente de salida: Acumulativa E/S 1200 mA

2.9 Driver A4988

El driver A4988 es un controlador de motor de micro pasos completo con un traductor

incorporado para una factible operación, este driver está diseñado para operar motores paso a

paso del tipo bipolar en modos de paso completo, medio, cuarto, octavo y decimosexto, con una

capacidad de accionamiento de salida de hasta 35 V y ±2 A. (MicroSystems, 2009)

56
Figura 19: Diagrama de aplicación Típica Driver A4988. Fuente: (MicroSystems, 2009)

A continuación, se muestra la tabla de verdad para los terminales de entrada MS1, MS2, MS3.

Tabla 8: Tabla de verdad de la resolución de micro pasos

MS1 MS2 MS3 Resolución de Modo de


micro paso excitación

L L L Paso completo 2 fase

H L L Medio paso 1-2 fase

L H L Cuarto paso Fase W1-2

H H L Octavo paso Fase 2W1-2

H H H Décimo sexto Fase 4W1-2


paso

Selección de micro pasos (MSx).


57
La resolución de micro pasos está dada por el voltaje de entradas analógicas MSx, como se

observa en la tabla 8, los pines tienen una resistencia pull-down de 100kΩ para MS1 y MS3 y 50

kΩ para MS2, si cambiamos el modo de paso el cambio no se efectúa hasta el siguiente

flanco ascendente de paso. (MicroSystems, 2009)

Control de corriente PWM interno.

El valor máximo de limitación de corriente se establece mediante la selección de RSx y el voltaje

en el pin 𝑉𝑅𝐸𝐹 , luego la función de transconductancia se aproxima por el valor máximo de

limitación de corriente, 𝐼𝑇𝑟𝑖𝑝𝑀𝐴𝑋 (A), que se establece mediante la siguiente ecuación:

𝑉𝑅𝐸𝐹
𝐼𝑇𝑟𝑖𝑝𝑀𝐴𝑋 =
8 × 𝑅𝑆

Donde 𝑅𝑆 es la resistencia del resistor de detección en [Ω], 𝐼𝑇𝑟𝑖𝑝𝑀𝐴𝑋 la corriente máxima del

motor paso a paso en [A] y 𝑉𝑅𝐸𝐹 es el voltaje de entrada en el pin VREF en [V].

La salida DAC reduce la salida 𝑉𝑅𝐸𝐹 al comparador de sentido actual en pasos precisos,

entonces:

%𝐼𝑇𝑟𝑖𝑝𝑀𝐴𝑋
𝐼𝑇𝑟𝑖𝑝 = ( ) × 𝐼𝑇𝑟𝑖𝑝𝑀𝐴𝑋
100

Es fundamental que no se exceda la clasificación máxima (0,5 V) en los pines SENSE1 y

SENSE2.

Por ejemplo, el dato para pasos completos de %𝐼𝑇𝑟𝑖𝑝𝑀𝐴𝑋 es 70.7 (ver Tabla 2 de Controlador de

micro pasos DMOS con traductor y protección contra sobre corriente A4988 en Anexos) luego la

ecuación del 𝑉𝑅𝐸𝐹 será:

𝑉𝑅𝐸𝐹 = 𝐼𝑇𝑟𝑖𝑝𝑀𝐴𝑋 × (8 × 𝑅𝑆 ) × 0.707

58
Siendo 𝐼𝑇𝑟𝑖𝑝𝑀𝐴𝑋 una constante acorde al motor que se utilizara y el valor de 0,1 Ω para 𝑅𝑆

correspondiente al código para resistencias SMD. (MicroSystems, 2009)

2.10 Internet de las cosas

Por lo general, el término internet de las cosas se refiere a escenarios en los que la conectividad

de red y la capacidad de cómputo es entendible a objetos, sensores y artículos de uso diario no

siendo estas consideradas computadoras, permitiendo que estos dispositivos intercambien y

consuman datos con una mínima intervención humana. Sin embargo, no existe ninguna

definición única y universal aceptada para este término, por lo cual a continuación se verá

algunas definiciones de IoT en el medio.

Infraestructura mundial para la sociedad de la información que propicia la prestación de

servicios avanzados mediante la interconexión de objetos (físicos y virtuales) gracias a la

interoperabilidad de tecnologías de la información y la comunicación presentes y futuras. (UIT,

2012)

El "Internet de las cosas" (IoT) se refiere a una (potencialmente) arquitectura de Internet en un

futuro cercano donde a miles de millones de objetos cotidianos se les asignará una dirección IP,

lo que permitirá a las personas interactuar con estos objetos a través de Internet y que los

objetos interactúen. juntos. Las "posiciones" representativas de la industria en IoT incluyen

Microsoft [Microsoft IoT], Cisco [Cisco IoT] y Google [Google IoT], solo por nombrar

algunas. Aunque los detalles de cómo se verá exactamente el IoT del futuro aún no están claros,

está claro que el IoT tiene el potencial de transformar la forma en que interactuamos con

nuestro mundo. Sin duda, hay una gran cantidad de desafíos técnicos, y el IEEE está

59
desempeñando un papel central en la coordinación y publicación de investigaciones de

vanguardia en IoT. (Weber, 2014)

El Consejo de Arquitectura de Internet (IAB) también tiene una definición de IoT en el

documento RFC 7452 “Architectural Considerations in Smart Object Networking’’

El término “Internet de las Cosas” (IoT) denota una tendencia en que un gran número de

dispositivos embebidos utilizan los servicios de comunicación que ofrecen los protocolos de

Internet. A estos dispositivos suelen llamarles “objetos inteligentes’’ y no son operados

directamente por un ser humano, sino que existen como componentes en edificios o vehículos o

están distribuidos en el entorno. (McPherson, 2015)

2.10.1 Modelos de comunicación del Internet de las cosas

Precisamente en marzo del 2015 el Comité de Arquitectura de Internet (IAB) dió a conocer un

documento informativo dado como guía para ingenieros en el diseño de redes de objetos

inteligentes (RFC 7452), el cual describe cuatro modelos de comunicación comunes que utilizan

los dispositivos IoT, los cuales se exponen a continuación.

Modelo de comunicación dispositivo a dispositivo:

El modelo de comunicación dispositivo a dispositivo consiste en comunicar dos o más

dispositivos directamente entre sí sin considerar servidores intermediarios, estos dispositivos se

pueden comunicar sobre varios tipos de redes, entre ellas se destaca las redes IP o Internet, pero

es más común para establecer comunicaciones directas dispositivo a dispositivo con protocolos

como Bluetooth, Z-Wave o ZigBee, como se muestran en la Figura 2.19.

60
Figura 20: Ejemplo de Modelo de comunicación dispositivo a dispositivo. Fuente: (Karen Rose,

2015)

Modelo de comunicación dispositivo a la nube:

El modelo de comunicación de dispositivo a la nube, consiste conectar el dispositivo IoT

directamente a un servicio en la nube, en este enfoque se aprovecha los mecanismos de

comunicación existentes como, por ejemplo, las conexiones Wi-Fi o Ethernet cableadas

tradicionales, para establecer una sólida conexión entre el dispositivo y la red IP, para

posteriormente conectar al servidor en la nube, como se puede observar en la Figura 2.20.

61
Figura 21: Diagrama de Modelo de comunicación dispositivo a la nube. Fuente: (Karen Rose,

2015)

Modelo de comunicación dispositivo a puerta de enlace:

El modelo dispositivo a puerta de enlace, consiste en que el dispositivo IoT se conecte a través

de un servidor ALG (puerta de enlace a nivel de aplicación) como forma de llegar a un servicio

en la nube, esto quiere decir que existe un software de aplicación corriendo en un dispositivo de

puerta de enlace local, actuando como intermediario entre el dispositivo y la nube que a su vez

da seguridad y otras funciones como traducir protocolos, por ejemplo, en la Figura 2.21 Se

observa el modelo.

62
Figura 22: Ejemplo de Modelo de comunicación dispositivo a puerta de enlace. Fuente: (Karen

Rose, 2015)

Modelo de intercambio de datos a través de back-end:

El modelo de intercambio de datos a través del back-end, consiste en la idea de que los usuarios

tengan la posibilidad de exportar y analizar datos de objetos inteligentes de un determinado

servicio en la nube comparando datos de otras fuentes, por lo que esta arquitectura permite que

otras personas tengan acceso a los datos subidos por los sensores, el modelo tiene un enfoque del

modelo de comunicación dispositivo a la nube, en la Figura 2.22 se muestra lo expuesto.

63
Figura 23: Diagrama del Modelo de intercambio de datos a través del back-end. Fuente: (Karen

Rose, 2015)

Los cuatro modelos básicos de comunicación expuestos muestran las estrategias de diseño

utilizadas para permitir el funcionamiento de los dispositivos IoT. De lo cual se puede recalcar la

importancia de la interoperabilidad9 y estándares en los dispositivos IoT que son relevantes en

cuanto al diseño de los mismos.

2.11 Protocolo MQTT

MQTT (Message Queuing Telemetry Transport), es un protocolo de transporte de mensajes de

tipo publicar/suscribir del servidor cliente, usado para la comunicación máquina a máquina

M2M10, actualmente es un protocolo de mensajería estándar de OASIS11 para Internet de las

9 Interoperabilidad: Es la capacidad de comunicación entre distintos sistemas con distintos datos y


formatos.
10 M2M: Maquina a máquina.
11 OASIS: (Organization for the Advancement of Structured Information Standards) es un consorcio internacional
64
cosas, es ligero y sencillo de implementar e ideal para dispositivos que tengan limitación en

cuanto a recursos de hardware tanto en CPU y RAM.

MQTT fue inventado por el Dr. Andy Stanford Clark de IBM y Arlen Nipper de Arcomen en

1999. Los principios de diseño son minimizar el ancho de banda de la red y los requisitos de

recursos del dispositivo al mismo tiempo que intentan garantizar la confiabilidad y cierto grado

de garantía de entrega. (Support, 2022)

El protocolo MQTT es ejecutable en protocolos de red que proporcionan conexiones

bidireccionales como el TCP/IP, a continuación, exponemos algunas características.

• El uso del patrón de mensajes publicación/suscripción proporciona

distribución de mensajes de uno a muchos y a su vez desacoplamiento de

aplicaciones.

• El transporte de mensajería es independiente del contenido de la carga útil.

• Posee una sobrecarga de transporte pequeña y los intercambios de protocolo

minimizados para la reducción del tráfico de red.

• Un mecanismo de notificación a los interesados cuando se produzca una

desconexión irregular.

OASIS tiene comités técnicos trabajando en la IoT supervisando MQTT y otros dos estándares,

AMQP (Advanced Message Queuing Protocol) y oBIX (OASIS Open Building Information

Exchange). (OASIS, OASIS Committee Categories: IoT/M2M, 2014)

sin fines de lucro que se orienta al desarrollo, la convergencia y la adopción de los estándares de comercio
electrónico y servicios web.
65
Figura 24: Arquitectura de publicación /suscripción MQTT. Fuente: (OASIS, mqtt, 2014)

2.11.1 Terminología

Conexión de red

En cuanto a conexión de red MQTT tendrá las siguientes características:

• Es posible la conexión del Cliente con el Servidor.

• Existen los medios necesarios para enviar un flujo de bytes ordenado y sin pérdidas

para ambas direcciones.

Mensaje de la aplicación

Cuando los mensajes de aplicación MQTT son transportados, estos contienen datos de carga útil,

calidad de servicio (QoS), colección de propiedades y nombre de tema.

Cliente

En un programa o bien un dispositivo que utiliza MQTT el cliente:

• Puede abrir la conexión de red al servidor

66
• Puede publicar los mensajes de la aplicación que podrían interesar a otros

clientes.

• Puede suscribirse para solicitar mensajes de aplicación que le interese

recibir.

• Puede cancelar la suscripción para eliminar una solicitud de mensajes de la

aplicación.

• Puede cerrar la conexión de red al servidor.

Servidor

En un programa o dispositivo que actúa como un intermediario entre clientes que publican

mensajes y otros que se suscribieron, un servidor:

• Puede aceptar conexiones de red de clientes.

• Puede aceptar mensajes de aplicación publicados por los clientes.

• Puede procesar las solicitudes de suscripción y cancelación de suscripción de los

clientes.

• Puede reenviar mensajes de aplicación que coincidan con las suscripciones de

clientes.

• Puede cerrar la conexión de red del cliente.

Otros términos utilizados son los siguientes:

• Sesión.

• Suscripción.

• Suscripción compartida.

• Suscripción comodín.

67
• Nombre del tema.

• Filtro de tema.

• Paquete de control MQTT.

• Paquete malformado.

• Error de protocolo.

• Mensaje de voluntad.

• Punto de código Unicode no permitido.

2.11.2 Representación de datos

Cadena codificada UTF-8.

Las cadenas UTF-812 son una codificación eficiente basado en caracteres Unicode13 que mejora

la codificación de los caracteres ASCII con el fin de establecer comunicaciones basadas en texto,

cada cadena tiene como prefijo un campo de 2 bytes de longitud que provee el número de bytes

en una cadena codificada UTF-8 como se muestra en la Figura 2.24.

Figura 25: Estructura de cadenas codificadas en UTF-8. Fuente: (Banks et al., 2019)

12UTF-8: Es un formato de codificación de caracteres Unicode e ISO 10646 que utiliza símbolos de longitud
variable, está definido como estándar por la “RFC 3629” de la Internet Engineering Task Force (IETF).
13 Unicode: Es un estándar de codificación de caracteres utilizado para facilitar su tratamiento
informático.
68
2.12 Modelo de referencia TCP/IP

El modelo de referencia TCP/IP presenta 4 capas de las 7 capas del modelo de referencia OSI14,

a continuación, detallamos las capas correspondientes.

Figura 26: Modelo de referencia OSI. Fuente: (Pearson, 2012)

Modelo de referencia TCP/IP

Capa de enlace

La capa de enlace es la más baja en este modelo, esta capa se puede entender como una interfaz

entre host y enlaces de transmisión.

Capa de interred

14OSI: Modelo de referencia lanzado por la organización Internacional de normas ISO, como un primer
paso para la estandarización de protocolos.
69
La capa de interred tiene como objetivo permitir que los hosts puedan enviar paquetes en

cualquier red y luego estos paquetes viajen de forma independiente a su determinado destino.

Figura 27: Modelo de referencia TCP/IP. Fuente: (Pearson, 2012)

Capa de transporte.

En la capa de transporte actúan 2 protocolos de transporte de extremo a extremo TCP (Protocolo

de Control de Transmisión) y UDP (Protocolo de Datagrama de Usuario).

Capa de aplicación.

La capa de aplicación contiene todos los protocolos de alto nivel entre los cuales podemos

mencionar TELNET, transferencia de archivos (FTP), correo electrónico (SMPT), etc.

Figura 28: Modelo TCP/IP con algunos protocolos. Fuente: (Pearson, 2012)

70
2.13. HTTP

El protocolo HTTP o protocolo de transferencia de hipertexto es un tipo de protocolo cliente –

servidor, que soporta los servicios de conexión del modelo de comunicación TCP/IP.

Entonces el servidor escucha en un determinado puerto de comunicaciones TCP, supongamos el

puerto 80, luego está en espera de las solicitudes de conexión de los clientes web, una vez

establecida la conexión, el protocolo TCP se encarga de garantizar la libre comunicación

(intercambio de datos) sin errores.

En la comunicación HTTP existen dos tipos de mensajes, los mensajes de petición y los

mensajes de respuesta.

2.13.1. Métodos de petición

Los mensajes de petición comienzan siempre con una cadena GET, POST o HEAD y terminan

con una línea que hace relación al retorno de carro y nueva línea.

La cantidad de líneas es variable pero mínimamente habrá una primera línea de petición donde

indica el tipo petición (GET), la página HTML solicitada /directorio/pagina.html y finalmente la

versión del protocolo HTTP utilizado el cual es HTTP/1.1.

A continuación, detallamos algunos de los métodos más usados.

Método GET

El método GET nos devuelve como resultado el recurso que se identifica en la URL solicitada.

Método POST

El método POST indica al servidor que se disponga a recibir información del cliente, se usa

generalmente para enviar información al servidor desde formularios.


71
Método PUT

El método PUT envía el recurso identificado en la URL, del cliente al servidor.

Método DELETE

El método DELETE realiza una solicitud al servidor de eliminar el recurso solicitado en la

determinada URL.

2.13.2. Mensajes de respuesta

En los mensajes de respuesta obtenemos generalmente un código de mensaje, el cual nos

proporciona información de la solicitud realizada, por ejemplo, el código de mensaje 200 tiene

como significado “solicitud realizada exitosamente”, así cada código está ligado a un mensaje de

respuesta, a continuación, se detalla los códigos de respuesta.

Figura 29: Códigos de respuesta HTTP (parte 1). Fuente: (Primo, 2012)

72
Figura 30: Códigos de respuesta HTTP (parte 2). Fuente: (Primo, 2012)

73
2.14. CoAP

El protocolo de aplicación restringida CoAP es un protocolo similar al modelo cliente/servidor

del protocolo HTTP, entonces las solicitudes en COAP equivalen a las solicitudes en HTTP,

luego el servidor envía la respuesta CoAP con la respuesta código.

Este protocolo tiene el objetivo de ser útil en redes restringidas, por microcontroladores en

deficiencia en cuanto a memoria ROM y RAM, el protocolo está diseñado para aplicaciones

máquina a máquina M2M.

A diferencia de HTTP, trata los procedimientos mencionados de forma asíncrona.

En el protocolo CoAP existen cuatro tipos de mensajes:

• Confirmable (CON).

• Non-Confirmable (NON).

• Acknowledgement (ACK).

• Reset (RST).

Figura 31: Capas abstractas de CoAP. Fuente: (TZI, 2014)

74
Capítulo 3

3 Marco práctico
En la ingeniería de proyecto, o marco práctico, se realizará mediante un método semejante al

modelo en cascada el cual tiene 5 pasos de los cuales se tomará 4 (Requerimientos, diseño,

implementación y verificación), estos se desarrollan a continuación.

3.1 Requerimientos

3.1.1 Descripción del sistema

El robot del tipo SCARA bajo entorno IoT permitirá que dispositivos dentro de una misma red

puedan acceder a la mediante una interfaz de usuario, en el cual mediante datos requeridos el

usuario puede ejecutar una instrucción Pick & Place, los componentes que debe tener este

sistema son:

• Parte mecánica del robot tipo SCARA, la parte física es el que recibe las instrucciones

para el proceso de Pick & Place, tiene 3 grados de libertad, 3 motores, 2 eslabones con

ejes paralelos correspondientes para el movimiento en el plano cartesiano XY y otro para

el eje Z.

• Parte electrónica del robot SCARA, el cual consta de 3 drives, uno para cada motor, una

placa electrónica (Raspberry pi) con Wifi por el cual se envía las instrucciones para el

movimiento del motor y un efector final (electroimán) para recoger y colocar un

elemento ferromagnético.

75
• Interfaz de usuario, en el cual el usuario podrá ingresar instrucciones al robot SCARA

para el proceso Pick & Place, parámetros como posición 1 (donde se recogerá el objeto

inicialmente), posición 2 (donde se colocará el objeto) y numero de ciclos.

Figura 32: Diagrama del sistema robot SCARA. Fuente: (Elaboración propia)

3.1.2 Requerimientos

Los requerimientos para este sistema se pueden dividir en 3 áreas, los cuales se detallan a

continuación.

1. Parte mecánica, que consta de 3 eslabones, 2 con ejes paralelos, 3 motores y un efector

final para elementos ferromagnéticos.

2. Parte electrónica, que consta de 3 drivers y una placa electrónica open sourse con wifi.

3. Interfaz de usuario, en el cual se podrá mandar instrucciones de pick and place al robot.

76
3.1.3 Servidor web

Existes opciones muy viables para realizar un servidor web o bien servidores donde ofrecen el

almacenamiento de datos, unos que consumen más recursos que otras, entonces los principales

requerimientos para este proyecto son:

• Elegir una plataforma que consuma pocos recursos de hardware (para que funcione

adecuadamente en la placa electrónica open sourse).

• Administración del bróker (servidor web) para el protocolo HTTP.

3.2 Diseño

En la presente sección abordaremos la parte de diseño del robot SCARA pasando por la parte

mecánica, parte electrónica, interfaz de usuario y la programación.

3.2.1 Parte Mecánica

Construir un robot tipo SCARA requiere de varios puntos como el estudio de materiales,

esfuerza de las piezas, tipo de movimiento, etc. Sin embargo, en esta parte se limita a construir el

robot de acuerdo a un diseño referencial como se muestra en la figura.

77
Figura 33: Robot Hibot 2442 SCARA. Fuente: (HITBOT, 2020)

Las piezas fueron tomadas del canal educativo Mundo CNC con Arduino en YouTube, estas

piezas estuvieron sujetas a modificaciones considerables, pero en esencia son lo mismo y

corresponden al tipo de robot Hibot 2442 SCARA.

Diseño asistido por computadora (CAD)

Una vez analizando las piezas y ubicaciones correspondientes, se realizó las modificaciones

pertinentes para esta aplicación.

El software utilizado para lo expuesto fue LibreCad, debido a su factibilidad en uso y además de

ser un software open sourse.

78
Figura 34: Pantalla de LibreCad (Part). Fuente: (Elaboración propia)

Algunas de las herramientas de este software que podemos destacar son las que se utilizan para

diseño de piezas 2D y 3D como el unir sólidos, restar sólidos, hacer cilindros, cubos, extruir

sólidos, etc.

Tabla 9: Lista de piezas del robot SCARA

NOMBRE MATERIAL TIPO DE FABRICACION

1 Base del robot SCARA PLA Impresora 3D

2 Cuerpo del robot SCARA PLA Impresora 3D

3 Soporte superior PLA Impresora 3D

4 Engranaje doble PLA Impresora 3D

79
5 Eslabón 1 PLA Impresora 3D

6 Eslabón 2 PLA Impresora 3D

Tabla 10: Lista de elementos mecánicos y electromecánicos del robot SCARA

Nro. CANTIDAD NOMBRE ESPECIFICACIÓN

1 1 Tornillo sin fin 30 cm THSL4

2 1 Tuerca de tornillo sin fin

3 8 Rodamientos

4 1 Varilla lisa 30 cm 8 mm de diámetro

5 1 Bloque deslizante lineal para varilla 8 mm de diámetro

6 1 Soporte para varilla 8 mm SHF8

7 1 Rodamiento para tornillo sin fin KFL08

8 1 Acoplamiento flexible 5-8

9 2 Polea GT2 20T 5 mm

10 1 Motor paso a paso 17HS4401

11 2 Motor paso a paso KS42STH34-1504A

12 4 Perno M8, 2 tuercas,1 arandela Inoxidable

80
13 1 Perno M8, 1 tueca, 2 arandelas 6 cm

14 1 Perno M8, 1 tuerca, 2 arandelas 8 cm

15 12 Perno M3, 1 arandela

16 6 Perno M4, 1 tuerca, 1 arandela

17 2 Perno M5, 1 tuerca, 1 arandela

18 2 Perno M2, 1 tuerca

A continuación, se muestra cada una de las piezas del robot.

Cuerpo del robot

El cuerpo del robot es en el que se encuentra el primer grado de libertad para el movimiento

“prismático” en el eje Z, también donde se encuentra uno de los eslabones con ejes paralelos para

describir el movimiento en el plano XY, los motores y la guía lineal.

Como se puede apreciar este elemento debe soportar un peso determinado principalmente por

dos motores, una guía lineal, pernos y los eslabones para el plano XY, entonces la pieza debe ser

firme y a la vez de un peso relativamente bajo, en este caso se decidió que la pieza tenga un

relleno del 80% y conservar estas características.

81
Figura 35: Cuerpo del robot SCARA en LibreCad. Fuente: (Elaboración propia)

Base del robot

La base del robot es la encargada de soportar el peso del robot SCARA, de igual forma como en

la pieza anterior el relleno será del 80%.

82
Figura 36: Base del robot SCARA en LibreCad. Fuente: (Elaboración propia)

Soporte superior

La pieza correspondiente al soporte superior es la pieza de sujeción para el husillo y la varilla, al

anterior que las anteriores piezas también tendrán un relleno del 80 %.

Figura 37: Soporte superior del robot SCARA en LibreCad. Fuente: (Elaboración propia)

83
Engranaje doble

El engranaje doble será una pieza intermediaria para trasmitir movimiento al segundo eslabón de

revoluta, en este caso esta pieza tendrá un relleno del 20 % para no generará peso considerable al

cuerpo del robot SCARA ya que ubicará en dicha posición.

Figura 38: Engranaje doble en LibreCad. Fuente: (Elaboración propia)

Primer eslabón

El primer estabón de revoluta al igual que el engranaje doble tendrá un relleno del 20 % para no

generar peso considerable, pero al mismo tiempo tenga una firmeza adecuada para la aplicación.

84
Figura 39: Primer eslabón del tipo revoluta robot SCARA en LibreCad. Fuente: (Elaboración

propia)

Segundo eslabón

El segundo eslabón de revoluta al igual el anterior tendrá un relleno del 20 %, en la parte final de

este eslabón se encuentra el efector final que en este caso será un electroimán, este espacio se

puede apreciar en la figura.

85
Figura 40: Segundo eslabón del tipo revoluta robot SCARA en LibreCad. Fuente: (Elaboración

propia)

Vista completa del robot tipo SCARA

Figura 41: Robot SCARA en LibreCad. Fuente: (Elaboración propia)

86
Elementos mecánicos

Rodamientos

Los rodamientos a utilizar serán 608ZZ de 8*22*7 [mm] para libre movilidad de los ejes de

rotación, se usara 8 rodamientos 4 para cada eje.

Figura 42: Rodamiento 608Z. Fuente: https://es.aliexpress.com/item/33025587195.html

Otro rodamiento a utilizar será el KFL08 que se utilizará en la parte superior del robot para la

fácil rotación del tornillo sin fin en el eje Z, pero fijo en el plano XY, a continuación, se observa

una imagen de la misma.

87
Figura 43: Rodamiento KFL08. Fuente: https://www.amazon.com/-/es/SYDIEN-KFL08-0-315-

identificaci%C3%B3n-rodamiento/dp/B07C4Y7P2C

Soporte metálico

El soporte metálico a utilizar será SHF08 de 8 [mm], para una sujeción efectiva de la varilla lisa,

este soporte se ubicará en la parte superior del robot SCARA, a continuación, una imagen de la

misma.

Figura 44: Soporte SHF8. Fuente: https://www.amazon.com.mx/Soportes-aleaci%C3%B3n-

aluminio-impresora-fresadora/dp/B09R12Q6J7

88
Tornillos sin fin y tuerca

Los tornillos sin fin, también conocidos como husillos, se utiliza para la transmisión de

movimiento y conversión de movimiento rotacional a movimiento lineal en este caso para el eje

Z, el husillo THSL de 4 hilos es el que se utilizará en este proyecto.

Figura 45: Husillo THSL 4 hilos. Fuente: https://es.aliexpress.com/item/32814991542.html

Acoplamiento

Los acoples se utilizan para unir la fuente de rotacion que es el motor y tornillo sin fin, en este

caso se utilizará el acople flexible de 5 [mm] a 8 [mm] para eje de motor nema 17.

89
Figura 46: Acople flexible 5-8 [mm]. Fuente: https://www.amazon.com/-/es/OctagonStar-

Acoplamientos-flexibles-impresora-unidades/dp/B01HBPHSII

Motores nema 17

Los motores nema 17 a utilizar son el motor pap 17HS4401 y el motor pap KS42STH34-1504A,

ambos con 1.8 grados de precisión.

A continuación, las características:

Motor PAP KS42STH34-1504A

• Dimensiones: 42 mm x 42 mm x 34 mm (largo x ancho x ancho)

• Ángulo de movimiento: 1,8 grados

• Resistencia / fase: 1.5Ω

• Corriente/fase: 1,5 A

• Par de retención: 0,22 Nm

• Inductancia/fase: 2,8 mH

• Peso: 0,22 kg

• Diámetro del eje: 5mm

90
Motor PAP 17HS4401

• Tipo: Bipolar.

• Voltaje: 12V.

• Corriente: 1.7A

• Torque: 4000g/cm.

• Modelo: 17HS4401, 17HS series tamaño 42mm.

• Angulo de pasos de 1.8 Grados.

• No. Pasos: 200.

• No. de Cables: 4.

• Resistencia de la fase: 1.5 ohms.

• Inductancia de la bobina: 2.8mH.

• Eje de 5mm diámetro / 20 mm de Largo.

Figura 47: Motor PAP 17HS4401. Fuente:

https://www.techlookelectronica.com/producto/nema-17-17hs4401-motor-paso-a-paso-12v-con-

cable/
91
Figura 48: Motor PAP KS42STH34-1504A. Fuente: https://www.deltakit.net/product/nema17-

ks42sth34-1504a-stepper-motor-1-5a-34mm/

Poleas para motores nema 17

Las poleas se utilizan para trasmitir movimiento mediante las correas dentadas, en el mercado

existen varios tipos de poleas para distintos tipos de correas dependiendo de la aplicación, en este

caso las poleas a utilizar serán las GT2 o 2GT para de 5 [mm] 20 dientes, para correas 2GT

utilizado generalmente en impresoras 3D.

92
Figura 49: Polea GT2 20 dientes, 5 [mm]. Fuente: https://www.amazon.com/-/es/GT2-0-236-

impresora-tornillos-fijaci%C3%B3n-XIAOYING/dp/B08MPW5KG4

Correas dentadas

Las correas dentadas se utilizan con las poleas acopladas al motor para la transmicion de

movimiento a otro eje de rotacion, las correas que se utilizarán son 2GT de 160 y 300 mm.

Figura 50: Correa dentada 2GT 160 [mm] Fuente: https://www.amazon.es/Correa-dentada-

piezas-ancho-GT2/dp/B075GRJCSD

93
Soporte de goma

La utilidad que se dará al soporte de goma será el de inhibidor de vibraciones, para evitar

vibraciones considerables en la parte física del robot SCARA.

Figura 51: Soporte de goma 5 [mm] Fuente: https://nauticagmus.com/tienda/partes-del-

motor/goma-lateral-de-soporte-de-motor-johnson-evinrude-90-175-hp-328584/

Módulo electroimán

El módulo electroimán se utilizará para proceso pick and place como efector final del robot para

elementos ferromagnéticos.

94
Figura 52: Módulo electroimán 5[V]. Fuente: https://es.aliexpress.com/item/32897489260.html/

Análisis de transmisión de movimiento

Figura 53: Transmisión de movimiento para la variable articular q2. Fuente: (Elaboración

propia)

Con los valores de los diámetros para la Figura 53:


95
𝐷1 = 12.22 [𝑚𝑚]

𝐷2 = 38.8 [𝑚𝑚]

Y en 2 y 3 como las poleas son concéntricas:

𝜃2 = 𝜃3

Luego se tiene:

𝑉1 = 𝑉2

𝜔1 ∗ 𝐷1 = 𝜔2 ∗ 𝐷2

𝜃1 ∗ 𝐷1 = 𝜃2 ∗ 𝐷2

𝐷1
𝜃2 = ∗ 𝜃 = 0.3149 ∗ 𝜃1
𝐷2 1

Figura 54: Transmisión de movimiento variable articular q3 Fuente: (Elaboración propia)

Para la Figura 54, como la velocidad angular en 3 es la misma que en 4, se tiene:

96
𝜃3 = 𝜃4

Luego de igual forma como la velocidad tangencial en 2 es la misma que en 3 y 𝐷2 es igual a

𝐷3 se tiene:

𝜃2 = 𝜃3

Entonces con los valores del diámetro en 1 y 2:

𝐷1 = 12.22 [𝑚𝑚]

𝐷2 = 38.8 [𝑚𝑚]

Tenemos que:

𝑉1 = 𝑉2

𝜔1 ∗ 𝐷1 = 𝜔2 ∗ 𝐷2

𝜃1 ∗ 𝐷1 = 𝜃2 ∗ 𝐷2

𝐷1
𝜃2 = ∗ 𝜃 = 0.3149 ∗ 𝜃1
𝐷2 1

∴ 𝑒𝑙 𝑓𝑎𝑐𝑡𝑜𝑟 𝑑𝑒 𝑝𝑟𝑜𝑝𝑜𝑟𝑐𝑖𝑜𝑛𝑎𝑙𝑖𝑑𝑎𝑑 𝑒𝑛𝑡𝑟𝑒 𝜃2 𝑦 𝜃1 𝑒𝑠 0.3149

Cálculo de correas dentadas

97
Para la correa entre 1 y 2 de la Figura 53 se tiene la siguiente ecuación de cálculo de correas:

𝜋 ∗ (𝐷 + 𝑑) (𝐷 − 𝑑)2
𝐿𝑃 = + +2∗𝑎
2 4∗𝑎

Donde:

D = Diámetro mayor de la polea

d = Diámetro menor de la polea

a = Distancia entre ejes de rotación

Luego con los valores:

𝐷1 = 12.22 [𝑚𝑚]

𝐷2 = 38.8 [𝑚𝑚]

𝑎 = 38 [𝑚𝑚]

Obtenemos el valor de:

𝐿𝑃 = 160 [𝑚𝑚]

Por tanto, para ambos casos de las Figura 53 y Figura 54 entre los 1 y 2 se tiene que las correas

dentadas serán de 160 [mm].

Para la correa entre 2 y 3 de la Figura 54:

Si: 𝐷 = 𝑑

Entonces:

98
𝐿𝑃 = 𝜋 ∗ 𝐷 + 2 ∗ 𝑎

Luego con los valores:

𝐷 = 38.8 [𝑚𝑚]

𝑎 = 89.2 [𝑚𝑚]

Obtenemos el valor de:

𝐿𝑃 = 300 [𝑚𝑚]

Luego la correa dentada entre 2 y 3 de la Figura 54 será de 300 [mm].

3.2.2 Parte Electrónica

A continuación, se detalla todos los componentes electrónicos a utilizar.

Driver a4988

Figura 55: Driver 4988. Fuente: https://www.amazon.com/Reprap-Stepper-Driver-Stepper-

Motor-Driver-Module/dp/B07VD86HVS?th=1

99
El driver A4988 se utiliza para el control de pasos del motor pap, las configuraciones de los

terminales MS1, MS2 y MS3 son para la resolución del motor, pero también afectan al torque del

motor, en este caso los pines estarán en nivel bajo, lo que significa que la presión será de 1.8

grados y se conservará la capacidad de torque en los motores pap.

Figura 56: Diagrama de conexiones A4988. Fuente:

https://es.aliexpress.com/item/1005002253869295.html

En el diagrama de la Figura 56 se observa las conexiones que se realizan para cada motor.

Placa de extensión para driver a4988

La placa de extensión para el driver a4988 facilita las conexiones del motor pap y el driver

además de ser practico para la configuración de los terminales MS1, MS2 y MS3.

En esta aplicación se utilizará 3 drivers uno para cada motor pap.

100
Figura 57: Placa de extensión para el driver A4988. Fuente: https://www.amazon.com/LM-YN-

Printer-Stepper-Extension/dp/B01LWO9DI7

Raspberry pi

La placa electrónica de desarrollo a utilizar será la Raspberry pi 3 B+, en la cual se asigna 2

pines para cada motor que corresponden a los terminales STEP y DIR del driver A4988, también

se alimentará a los 3 diferentes drivers como se muestra en la Figura 3.16, a continuación,

detallamos la asignación de pines para cada driver.

Tabla 11: Asignación de pines del driver A4988 y la placa electrónica Raspberry pi para cada

motor PAP.

MOTOR PAP PINES DEL DRIVER A4988 PINES DE LA RASPBERRY PI

STEP 26

MOTOR q1
DIR 19

101
STEP 21

MOTOR q2
DIR 20

STEP 6

MOTOR q3
DIR 5

Es importante aclarar que los pines que se muestran en la Tabla 3.3 son correspondientes a la

configuración BCM del Rasberry pi.

Figura 58: Asignación de pines BCM y BOARD (color gris) Raspberry pi. Fuente:

https://www.prometec.net/usando-los-gpio-con-python/

102
Como se observa en la Figura 58, se puede ver la diferencia entre la asignación de pines BCM y

BOAD, la asignación de pines tipo BCM está diferenciada en varios colores, la asignación de

pines BOARD está en color gris (recuento progresivo desde la parte superior).

Raspberry pi es considerado una pequeña computadora, esta puede ser usada con diferentes

sistemas operativos que están disponibles en la página oficial, en este caso se usa el sistema

operativo Raspberry Pi OS distribución del sistema operativo GNU/Linux basado en Debian.

Figura 59: Escritorio del Sistema Operativo Raspberry pi OS. Fuente: (Elaboración propia)

Diagrama de conexiones de alimentación

103
Figura 60: Diagrama de conexiones del sistema. Fuente: (Elaboración propia)

Fuente de energía

La fuente de energía de la Raspberry pi comúnmente utilizada es de 5 V y 2.5 A a 3 A de

corriente, en cambio para los motores paso a paso se utilizará una fuente de 12 V y 1 A.

104
Figura 61: Fuente de energía para Raspberry pi. Fuente:

https://es.aliexpress.com/item/32835858930.html

3.2.3 Interfaz de usuario

La interfaz de usuario, de acuerdo a los requerimientos mencionados anteriormente, es en el cual

el usuario pueda ingresar datos de posición y el número de ciclos.

La posición 𝑃1(𝑥1, 𝑦1, 𝑧1) es donde se encuentra el elemento ferromagnético a mover para

luego colocar en una posición 𝑃2(𝑥2, 𝑦2, 𝑧2), todo el proceso inicia partiendo de una posición

𝑃0(𝑥0, 𝑦0, 𝑧0).

El número de ciclo es la cantidad de repeticiones que realizará el proceso de recoger y colocar el

objeto, entonces si el número de ciclos es 3, el robot moverá 3 objetos, luego finalmente el robot

regresará a la posición inicial, para volver a pedir nuevos datos al usuario.

105
La posición inicial 𝑃0(𝑥0, 𝑦0, 𝑧0) será 𝑃0(178.4,0,0), donde x0 es la suma del largo de los dos

eslabones de ejes paralelos de igual dimensión 𝑎 = 89.2, el usuario solo podrá ingresar datos

contenidos en el área de trabajo del robot SCARA.

Límite de datos de la interfaz de usuario

Para realizar una limitación de datos primeramente se considera los siguientes datos:

✓ Número de pasos por vuelta del 𝑚𝑜𝑡𝑜𝑟 𝑝𝑎𝑝 = 200

Para eje prismático:

El husillo a utilizar se mueve 8 mm por cada vuelta, luego:

8 [𝑚𝑚] 𝑚𝑚
𝜏1 = 𝑝𝑟𝑒𝑠𝑖𝑐𝑖𝑜𝑛 = = 0.04 [ ]
200 [𝑝𝑎𝑠𝑜𝑠] 𝑝𝑎𝑠𝑜

Para los ejes de revoluta:

Se tiene que: 1 𝑃𝑎𝑠𝑜 = 1.8 𝑔𝑟𝑎𝑑𝑜𝑠

Que posteriormente se estimará la posición en [mm] utilizando la cinemática inversa.

Flask

Flask es un tipo de framework para Python que permite hacer páginas web, open sourse de libre

acceso y depende del motor de plantillas jinja2.

La ventaja principal de Flask es la de consumir pocos recursos de hardware debido a que cada

usuario solo toma lo que necesita la página a realizar.

106
3.2.4 Programación

La cinemática directa consiste en llegar partiendo de las variables articulares del robot a las

variables coordenadas en el espacio y la cinemática inversa es el proceso contrario partiendo de

las variables coordenadas llegar a un determinado valor de las variables articulares, en esta

aplicación es necesario tener ambas ya que nos será útil para estimar las posiciones que tomará el

robot SCARA de acuerdo a los parámetros que ingrese el usuario.

Cinemática directa

Método de Denavit Hartenberg

Primeramente, realizamos la tabla de Denavit Hartenberg de acuerdo a la siguiente figura.

Figura 62: Esquema analítico para el método D-H. Fuente: (Elaboración propia)

107
Tabla 12: Parámetros D-H del robot SCARA de la figura

Articulación Θ D a α

1 0 𝑞1 0 0

2 𝑞2 0 L1 0

3 𝑞2 − 𝑞3 0 L2 0

Luego efectuando en la ecuación [2.3] del anterior capitulo:

𝐶𝜃𝑖 −𝐶𝛼𝑖 𝑆𝜃𝑖 𝑆𝛼𝑖 𝑆𝜃𝑖 𝑎𝑖 𝐶𝜃𝑖


𝑆𝜃𝑖 𝐶𝛼𝑖 𝐶𝜃𝑖 −𝑆𝛼𝑖 𝐶𝜃𝑖 𝑎𝑖 𝑆𝜃𝑖
𝐴𝑖−1/𝑖 = [ ]
0 𝑆𝛼𝑖 𝐶𝛼𝑖 𝑑𝑖
0 0 0 1

Obtenemos los valores correspondientes:

1 0 0 0
𝐴1/0 = [0 1 0 0]
0 0 1 𝑞1
0 0 0 1

𝐶𝑞2 −𝑆𝑞2 0 𝐿1 ∗ 𝐶𝑞2


𝑆𝑞 𝐶𝑞2 0 𝐿1 ∗ 𝑆𝑞2
𝐴2/1 =[ 2 ]
0 0 1 0
0 0 0 1

108
𝐶(𝑞2 − 𝑞3 ) 𝑆(𝑞2 − 𝑞3 ) 0 𝐿2 ∗ 𝐶(𝑞2 − 𝑞3 )
−𝑆(𝑞2 − 𝑞3 ) 𝐶(𝑞2 − 𝑞3 ) 0 −𝐿2 ∗ 𝑆(𝑞2 − 𝑞3 )
𝐴3/2 =[ ]
0 0 1 0
0 0 0 1

Finalmente:

𝐶𝑞3 𝑆(−𝑞3 ) 0 𝐿1 ∗ 𝐶𝑞2 + 𝐿2 ∗ 𝐶𝑞3


𝑆𝑞 𝐶𝑞3 0 𝐿1 ∗ 𝑆𝑞2 + 𝐿2 ∗ 𝑆𝑞3
𝐴3/0 =[ 3 ]
0 0 1 𝑞1
0 0 0 1

O bien:

𝐶𝑞3 −𝑆𝑞3 0 𝐿1 ∗ 𝐶𝑞2 + 𝐿2 ∗ 𝐶𝑞3


𝑆𝑞 𝐶𝑞3 0 𝐿1 ∗ 𝑆𝑞2 + 𝐿2 ∗ 𝑆𝑞3
𝐴3/0 =[ 3 ]
0 0 1 𝑞1
0 0 0 1

Entonces:

𝑥 = 𝐿1 ∗ 𝐶𝑞2 + 𝐿2 ∗ 𝐶𝑞3

𝑦 = 𝐿1 ∗ 𝑆𝑞2 + 𝐿2 ∗ 𝑆𝑞3

𝑧 = 𝑞1

Método geométrico

Para el eje de prismático tendremos:

8 [mm] = 360 [grados]

Luego:

8 [𝑚𝑚] 1
𝑔𝑟𝑎𝑑𝑜𝑠 ∗ = [𝑚𝑚/𝑔𝑟𝑎𝑑𝑜𝑠]
360 [𝑔𝑟𝑎𝑑𝑜𝑠] 45

1 𝑞1
𝑧 = 𝑞1 ∗ =
45 45

109
Para los ejes de revoluta los eslabones tienen medidas de 𝐿1 y 𝐿2 con variables de 𝑞2 y

𝑞3 respectivamente.

Figura 63: Diagrama ejes de revoluta robot SCARA. Fuente: (Elaboración propia)

Observado la Figura 63 se puede llegar partiendo de la posición inicial 𝑃0 a la posición final del

eslabón 1 mediante consideraciones geométricas con triángulos rectángulos.

𝑥1 = 𝐿1 ∗ cos(𝑞2 )

𝑦1 = 𝐿2 ∗ sen (𝑞2 )

De igual forma para 𝑃(𝑥, 𝑦) partiendo de 𝑃1.

𝑥2 = 𝐿1 ∗ cos(𝑞3 )

𝑦2 = 𝐿2 ∗ sen (𝑞3 )

Luego la suma estas ecuaciones en 𝑋 e 𝑌 da como resultado lo siguiente.

𝑥 = 𝐿1 ∗ cos(𝑞2 ) + 𝐿1 ∗ cos(𝑞3 )

110
𝑦 = 𝐿2 ∗ sen(𝑞2 ) + 𝐿2 ∗ sen (𝑞3 )

Estas ecuaciones finales son las correspondientes a la cinemática directa en el plano 𝑋 e 𝑌.

Cinemática inversa

Método a partir de la matriz de transformación homogénea (Denavit Hartenberg)

1 0 0 0 −1 1 0 0 0
(𝑨𝟎/𝟏 ) −𝟏
= [0 1 0 0 ] = [0 1 0 0 ]
0 0 1 𝑞1 0 0 1 −𝑞1
0 0 0 1 0 0 0 1

−1 −(𝑆𝑞2 )2 + 1
𝐶𝑞2 −𝑆𝑞2 0 𝐿1 ∗ 𝐶𝑞2 𝑆𝑞2 0 −𝐿1
𝑆𝑞 𝐶𝑞2 0 𝐿1 ∗ 𝑆𝑞2 𝐶𝑞2
(𝑨𝟏/𝟐 )−𝟏 =[ 2 ] = 0 0
0 0 1 0 −𝑆𝑞2 𝐶𝑞2
0 0 0 1 0 0 1 0
[ 0 0 0 1 ]

𝐶(𝑞2 − 𝑞3 ) 𝑆(𝑞2 − 𝑞3 ) 0 𝐿2 ∗ 𝐶(𝑞2 − 𝑞3 ) −1


−𝑆(𝑞2 − 𝑞3 ) 𝐶(𝑞2 − 𝑞3 ) 0 −𝐿2 ∗ 𝑆(𝑞2 − 𝑞3 )
(𝑨𝟐/𝟑 )−𝟏 =[ ]
0 0 1 0
0 0 0 1

−(𝑆(𝑞2 − 𝑞3 ))2 + 1
−𝑆(𝑞2 − 𝑞3 ) 0 −𝐿2
𝐶(𝑞2 − 𝑞3 )
= 0 0
𝑆(𝑞2 − 𝑞3 ) 𝐶(𝑞2 − 𝑞3 )
0 0 1 0
[ 0 0 0 1 ]

Luego:

111
1 0 0 0 𝑛𝑥 𝑛𝑦 𝑛𝑧 𝑥
(𝐴0/1 )−1 𝑇 = 𝐴1/2 𝐴2/3 = [0 1 0 0 ] [ 𝑜𝑥 𝑜𝑦 𝑜𝑧 𝑦
0 0 1 −𝑞1 𝑎𝑥 𝑎𝑦 𝑎𝑧 𝑧]
0 0 0 1 0 0 0 1

𝐶𝑞2 −𝑆𝑞2 0 𝐿1 ∗ 𝐶𝑞2 𝐶(𝑞2 − 𝑞3 ) 𝑆(𝑞2 − 𝑞3 ) 0 𝐿2 ∗ 𝐶(𝑞2 − 𝑞3 )


𝑆𝑞 𝐶𝑞2 0 𝐿1 ∗ 𝑆𝑞2 −𝑆(𝑞2 − 𝑞3 ) 𝐶(𝑞2 − 𝑞3 ) 0 −𝐿2 ∗ 𝑆(𝑞2 − 𝑞3 )
= [ 2 ][ ]
0 0 1 0 0 0 1 0
0 0 0 1 0 0 0 1

𝐶𝑞3 −𝑆𝑞3 0 𝐿1 ∗ 𝐶𝑞2 + 𝐿2 ∗ 𝐶𝑞3


𝑆𝑞 𝐶𝑞3 0 𝐿1 ∗ 𝑆𝑞2 + 𝐿2 ∗ 𝑆𝑞3
=[ 3 ]
0 0 1 0
0 0 0 1

Tomando (3,4):

𝑞1 = 𝑧

(𝑨𝟏/𝟐 )−𝟏 (𝑨𝟎/𝟏 )−𝟏 𝑻 = 𝑨𝟐/𝟑

−(𝑆𝑞2 )2 + 1
𝑆𝑞2 0 −𝐿1 1 0 0 0 𝑛𝑥 𝑛𝑦 𝑛𝑧 𝑥
𝐶𝑞2 0 0 ] [ 𝑜𝑥 𝑜𝑦 𝑜𝑧 𝑦
= 0 0 [0 1
−𝑆𝑞2 𝐶𝑞2 0 0 1 −𝑞1 𝑎𝑥 𝑎𝑦 𝑎𝑧 𝑧]
0 0 1 0 0 0 0 1 0 0 0 1
[ 0 0 0 1 ]

𝐶(𝑞2 − 𝑞3 ) 𝑆(𝑞2 − 𝑞3 ) 0 𝐿2 ∗ 𝐶(𝑞2 − 𝑞3 )


−𝑆(𝑞2 − 𝑞3 ) 𝐶(𝑞2 − 𝑞3 ) 0 −𝐿2 ∗ 𝑆(𝑞2 − 𝑞3 )
=[ ]
0 0 1 0
0 0 0 1

𝐶𝑞2 𝑆𝑞2 0 −𝐿1 𝑛𝑥 𝑛𝑦 𝑛𝑧 𝑥


[
−𝑆𝑞2 𝐶𝑞2 0 0 ] [ 𝑜𝑥 𝑜𝑦 𝑜𝑧 𝑦
0 0 1 −𝑞1 𝑎𝑥 𝑎𝑦 𝑎𝑧 𝑧]
0 0 0 1 0 0 0 1

𝐶(𝑞2 − 𝑞3 ) 𝑆(𝑞2 − 𝑞3 ) 0 𝐿2 ∗ 𝐶(𝑞2 − 𝑞3 )


−𝑆(𝑞2 − 𝑞3 ) 𝐶(𝑞2 − 𝑞3 ) 0 −𝐿2 ∗ 𝑆(𝑞2 − 𝑞3 )
=[ ]
0 0 1 0
0 0 0 1

Otra vez multiplicando a la izquierda por (𝑨𝟐/𝟑 )−𝟏:

112
(𝑨𝟐/𝟑 )−𝟏 (𝑨𝟏/𝟐 )−𝟏 (𝑨𝟎/𝟏 )−𝟏 𝑻 = 𝑰

−(𝑆(𝑞2 − 𝑞3 ))2 + 1 −(𝑆𝑞2 )2 + 1


−𝑆(𝑞2 − 𝑞3 ) 0 −𝐿2 𝑆𝑞2 0 −𝐿1 1 0 0 0
𝐶(𝑞2 − 𝑞3 ) 𝐶𝑞2
0 0 0 0 [0 1 0 0 ]
𝑆(𝑞2 − 𝑞3 ) 𝐶(𝑞2 − 𝑞3 ) −𝑆𝑞2 𝐶𝑞2 0 0 1 −𝑞1
0 0 1 0 0 0 1 0 0 0 0 1
[ 0 0 0 1 ] [ 0 0 0 1 ]

𝑛𝑥 𝑛𝑦 𝑛𝑧 𝑥 1 0 0 0
𝑜 𝑜𝑦 𝑜𝑧 𝑦 0 1 0 0]
[𝑎𝑥
𝑥 𝑎𝑦 𝑎𝑧 𝑧 ] = [0 0 1 0
0 0 0 1 0 0 0 1

𝐶𝑞3 𝑆𝑞3 0 −𝐿1 ∗ 𝐶(𝑞2 − 𝑞3 ) − 𝐿2 𝑛𝑥 𝑛𝑦 𝑛𝑧 𝑥 1 0 0 0


−𝑆𝑞3 𝐶𝑞3 0 −𝐿1 ∗ 𝑆(𝑞2 − 𝑞3 ) 𝑜 𝑜𝑦 𝑜𝑧 𝑦 0 1 0 0]
[ ] [𝑎𝑥
0 0 1 −𝑞1 𝑥 𝑎𝑦 𝑎𝑧 𝑧 ] = [0 0 1 0
0 0 0 1 0 0 0 1 0 0 0 1

Tomando la ecuación (2,4):

−𝑆𝑞3 ∗ 𝑥 + 𝐶𝑞3 ∗ 𝑦 − 𝐿1 ∗ 𝑆(𝑞2 − 𝑞3 ) = 0

Pero:

𝑆(𝑞2 − 𝑞3 ) = 𝑆𝑞2 ∗ 𝐶𝑞3 − 𝐶𝑞2 ∗ 𝑆𝑞3

Entonces:

−𝑆𝑞3 ∗ 𝑥 + 𝐶𝑞3 ∗ 𝑦 = 𝐿1 ∗ 𝑆𝑞2 ∗ 𝐶𝑞3 − 𝐿1 ∗ 𝐶𝑞2 ∗ 𝑆𝑞3

Factorizando y despejando 𝑞3:

𝑦 − 𝐿1 ∗ 𝑆𝑞2
𝑞3 = 𝑎𝑟𝑐𝑡𝑔( )
𝑥 − 𝐿1 ∗ 𝐶𝑞2

Ahora se tiene que hallar 𝑞2 en función de términos constantes, en este caso 𝑥 e 𝑦 se toman

como términos constantes, por facilidad realizaremos esto por consideraciones geométricas.

113
Figura 64: Diagrama ejes de revoluta robot SCARA (análisis geométrico). Fuente: (Elaboración

propia)

En la figura se observa que el ángulo 𝑞2 depende de dos ángulos formados por el triángulo

formado de color amarillo, un ángulo naranja que llamaremos 𝛼 y un ángulo verde que

llamaremos 𝛽.

𝑞2 = 𝛼 + 𝛽

El valor de 𝛼 se obtiene de manera inmediata por el triángulo rectángulo formado:

𝑦
𝛼 = 𝑎𝑟𝑐𝑡𝑔( )
𝑥

Para el ángulo 𝛽 se aplica el teorema de los cosenos en el triángulo amarillo:

𝐿12 + 𝑥 2 + 𝑦 2 − 𝐿22
D = cos(𝛽) =
2 ∗ 𝐿1 ∗ √𝑥 2 + 𝑦 2

114
Luego:

𝑠𝑒𝑛(𝛽) = ∓√1 − 𝐷2

De la 𝑡𝑎𝑛(𝛽) se despeja 𝛽:

∓√1 − 𝐷2
𝛽 = 𝑎𝑟𝑐𝑡𝑔( )
𝐷

Entonces el valor de 𝑞2 es:

𝑦 ∓√1 − 𝐷2
𝑞2 = 𝑎𝑟𝑐𝑡𝑔 ( ) + 𝑎𝑟𝑐𝑡𝑔( )
𝑥 𝐷

En la raíz cuadrada del ángulo 𝛽 tenemos dos signos, se toma el signo negativo cuando los

eslabones toman la posición de codo arriba y el signo positivo codo abajo ambos son solución

para llegar a la misma posición.

Es necesario aclarar que solo utilizando el método geométrico se hubiera llegado a los mismos

resultados.

Área de trabajo del robot SCARA

Mediante un algoritmo de programación con los datos: 1 [𝑝𝑎𝑠𝑜] = 1.8 [𝑔𝑟𝑎𝑑𝑜𝑠], 𝐿1 =

89.2 [𝑚𝑚] y 𝐿2 = 89.2 [𝑚𝑚], es posible obtener el área de trabajo del robot tipo SCARA.

115
Figura 65: Área de trabajo del robot SCARA. Fuente: (Elaboración propia)

Cuyos límites son en 𝑥 [−89.2, 178.4] e 𝑦 [−178.4, 178.4].

Análisis de datos del robot SCARA

En la interfaz de usuario se utilizará HTML, en el cual las entradas input tipo numero

necesariamente requieren un atributo llamado step, que es la diferencia entre datos consecutivos,

entonces para cada variable de entrada los datos consecutivos son equidistantes, por lo cual se

realizará un análisis de datos para buscar solo datos equidistantes entre si para cada variable.

116
Análisis para el eje 𝒙

Figura 66: Datos obtenidos para el eje 𝑥 con 2 decimales (robot SCARA). Fuente: (Elaboración

propia)

Si se analiza los datos en el eje 𝑋 partiendo de 0, tomando una muestra de los primeros 48 datos

en el intervalo de 0.00 a 2.01, se tiene:

0.0, 0.04, 0.13, 0.18, 0.22, 0.31, 0.35, 0.39, 0.4, 0.48, 0.53, 0.57, 0.65, 0.66, 0.7, 0.74, 0.82, 0.88,

0.91, 0.92, 0.99, 1.05, 1.07, 1.1, 1.15, 1.18, 1.22, 1.23, 1.31, 1.39, 1.4, 1.44, 1.46, 1.54, 1.56,

1.58, 1.61, 1.68, 1.7, 1.73, 1.75, 1.82, 1.89, 1.9, 1.95, 1.96, 1.97, 2.01

De estos datos se obtiene la diferencia entre datos consecutivos:

0.04, 0.09, 0.05, 0.04, 0.09, 0.04, 0.01, 0.08, 0.05, 0.04, 0.08, 0.01, 0.04, 0.04, 0.08, 0.06, 0.03,

0.01, 0.07, 0.06, 0.02, 0.05, 0.03, 0.04, 0.01, 0.08, 0.08, 0.01, 0.04, 0.02, 0.08, 0.02, 0.02, 0.03,

0.07, 0.02, 0.03, 0.02, 0.07, 0.07, 0.01, 0.05, 0.01, 0.01, 0.04.

117
Claramente se observa que estos datos no son equidistantes, entonces se procede a realizar

redondeo a un decimal.

Figura 67: Datos obtenidos para el eje x con un decimal (robot SCARA). Fuente: (Elaboración

propia)

Analizando los datos de 0.0 a 18.0.

0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1,

2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 4.0, 4.1, 4.2, 4.3,

4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 6.0, 6.1, 6.2, 6.3, 6.4, 6.5,

6.6, 6.7, 6.9, 7.0, 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.8, 7.9, 8.0, 8.1, 8.2, 8.3, 8.4, 8.5, 8.6, 8.8, 8.9,

9.0, 9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7, 9.8, 9.9, 10.0, 10.1, 10.2, 10.3, 10.4, 10.5, 10.6, 10.7, 10.8,

10.9, 11.0, 11.1, 11.2, 11.3, 11.4, 11.5, 11.7, 11.8, 11.9, 12.0, 12.2, 12.3, 12.4, 12.5, 12.6, 12.7,

12.8, 12.9, 13.1, 13.2, 13.3, 13.4, 13.5, 13.6, 13.7, 13.8, 13.9, 14.0, 14.1, 14.2, 14.3, 14.4, 14.5,

118
14.7, 14.8, 14.9, 15.0, 15.1, 15.2, 15.3, 15.4, 15.5, 15.6, 15.7, 15.8, 15.9, 16.0, 16.1, 16.3, 16.4,

16.5, 16.6, 16.7, 16.8, 16.9, 17.0, 17.1, 17.2, 17.3, 17.5, 17.6, 17.7, 17.8, 17.9, 18.0

Se observa que faltan los datos:

6.8, 8.7, 11.6, 12.1, 13.0, 14.6, 16.2, 17.4.

Con la diferencia entre términos es posible contar el número total de datos que faltan.

Figura 68: Cantidad de datos faltantes eje x con un decimal (robot SCARA). Fuente:

(Elaboración propia)

Como se observa en la Figura 68 en total faltan 494 datos para completar un rango de datos de

0.1 [mm] de paso, estos datos faltantes tienen una diferencia de entre 0.2 a 0.6 [mm].

De acuerdo al análisis realizado, se observa que con dos decimales no es posible obtener un

factor de proporcionalidad o algo semejante, debido a que la diferencia entre datos consecutivos

119
no es equidistante y consecuente, en el caso de un decimal la situación mejora sin embargo con

la falta de datos dispersos y variables no es posible tener un paso de 0.1 [mm].

Figura 69: Cantidad de datos faltantes eje x sin decimales (robot SCARA). Fuente: (Elaboración

propia)

En la Figura 69 se observa que, si se hace un redondeo de datos sin decimales, ya no se tiene el

problema de datos faltantes, sin embargo, tenemos una penalización de perder el dato

178.4 [𝑚𝑚], último dato para 𝑥.

120
Análisis para el eje 𝒚

Figura 70: Datos obtenidos para el eje y con dos decimales (robot SCARA). Fuente:

(Elaboración propia)

121
Figura 71: Datos obtenidos para el eje 𝑦 con un decimal (robot SCARA). Fuente: (Elaboración

propia)

Figura 72: Cantidad de datos faltantes eje 𝑦 con un decimal (robot SCARA). Fuente:

(Elaboración propia)

122
Obtenemos 674 datos faltantes 𝑦 la variación entre datos consecutivos es de 0.2 a 0.3 [𝑚𝑚].

Figura 73: Cantidad de datos faltantes eje 𝑦 sin decimales (robot SCARA). Fuente: (Elaboración

propia)

Finalmente se observa de manera similar al eje 𝑥 con redondeo a datos sin decimales se resuelve

el problema de datos faltantes con la penalidad de perder los datos −178.4 y 178.4 en el eje 𝑦.

123
Algoritmo de funcionamiento

Figura 74: Algoritmo general del sistema (robot SCARA). Fuente: (Elaboración propia)

124
Asignación de pines y variables

En la etapa de asignación de pines son las correspondientes a las expuestas en la sección 3.2.2,

agregando un pin que corresponde al electroimán.

Tabla 13: Asignación de pines para el sistema completo.

ELEMENTO PINES A4988, PINES DE LA RASPBERRY PI

ELECTROIMAN

STEP 26

MOTOR q1
DIR 19

STEP 21

MOTOR q2
DIR 20

STEP 6

MOTOR q3
DIR 5

ELECTROIMAN SIG 25

Declarando las constantes y variables:

𝐿1 = 89.2

𝐿2 = 89.2

“𝑥”, “𝑦”, “𝑧”, “𝑥2”, “𝑦2”, “𝑧2” 𝑦 “𝐶𝑖𝑐𝑙𝑜𝑠”.

Después de recibir los datos correspondientes, se realiza el cálculo de la variable 𝐷.

125
Cinemática inversa (cálculo de la variable D)

𝐿12 + 𝑥 2 + 𝑦 2 − 𝐿22
D = cos(𝛽) =
2 ∗ 𝐿1 ∗ √𝑥 2 + 𝑦 2

Con los datos recibidos y las constantes se calcula 𝐷 para cada punto.

Proceso de ajuste codo abajo o codo arriba

Como se había visto anteriormente existen dos posibles soluciones para llegar a un determinado

punto en el plano 𝑋𝑌, codo abajo y codo arriba, estos casos dependen del signo de la expresión

(∓√1 − 𝐷2 ) en el cálculo de 𝑞2. Para aspectos prácticos se toma la decisión de que para datos

positivos de 𝑦 sea codo abajo y para datos negativos codo arriba.

Figura 75: Proceso de Ajuste codo abajo o codo arriba (robot SCARA). Fuente: (Elaboración

propia)

Luego calculamos el valor de 𝑞2:

𝑦 ∓√1 − 𝐷2
𝑞2 = 𝑎𝑟𝑐𝑡𝑔 ( ) + 𝑎𝑟𝑐𝑡𝑔( )
𝑥 𝐷

126
Cinemática inversa (cálculo de 𝒒𝟑)

Una vez obtenido 𝑞2 se procede calcular el valor de 𝑞3 que se encuentra en función de 𝑞2 como

se observa en la ecuación.

𝑦 − 𝐿1 ∗ 𝑆𝑞2
𝑞3 = 𝑎𝑟𝑐𝑡𝑔( )
𝑥 − 𝐿1 ∗ 𝐶𝑞2

Ajuste de variables articulares

Con las variables 𝑞1, 𝑞2 𝑦 𝑞3 se procede a realizar un ajuste convirtiendo primeramente a grados

y luego a pasos correspondientes a los motores PAP.

𝑞1 = 45 ∗ 𝑧 (360 [𝑔𝑟𝑎𝑑𝑜𝑠]/8 [𝑚𝑚], datos correspondientes al husillo utilizado)

𝑝1 = 𝑞1/1.8

𝑞2 = 𝑞2 ∗ 180/𝜋

𝑝2 = 𝑞1/1.8

𝑞3 = 𝑞3 ∗ 180/𝜋

𝑝3 = 𝑞3/1.8

Proceso de funcionamiento

En esta etapa se procede a realizar un proceso como se muestra en la siguiente Figura.

127
Figura 76: Algoritmo de funcionamiento (robot SCARA). Fuente: (Elaboración propia)

128
Figura 77: Algoritmo detallado (robot SCARA). Fuente: (Elaboración propia)

129
Para llegar de la posición inicial 𝑃0 primeramente se realiza el movimiento en el plano 𝑋𝑌,

luego “bajamos” a la posición en 𝑧 dada por el usuario.

Se debe aclarar que los elementos a mover deben estar debajo del robot SCARA inicialmente.

En la Figura 76 se observa el proceso de funcionamiento del robot SCARA, como cada motor

PAP funciona de manera independiente una a una, necesitamos ajustar en el proceso de 𝑃1 a 𝑃2

y volver de 𝑃2 a 𝑃1.

Entonces en el proceso de 𝑃1 a 𝑃2 si 𝑧 > 𝑧2 primero se realiza el movimiento en plano 𝑋𝑌

para después “bajar” a la posición 𝑧2, caso contrario se necesita primero “subir” a 𝑧2, para luego

moverse en el plano 𝑋𝑌.

En el proceso de 𝑃2 a 𝑃1, es la misma lógica, pero tomando en cuenta que se parte de la

posición 𝑃2 para “volver” a la posición 𝑃1, ajustando la condición a 𝑧 < 𝑧2, luego si la

condición se cumple primero se realiza el movimiento en el plano 𝑋𝑌 para luego “bajar” a 𝑧1,

caso contrario primero “se sube” a 𝑧1 para luego moverse en el plano 𝑋𝑌 de esta manera volver

a la posición 𝑃1.

Este proceso se realiza hasta cumplir con el número de ciclos dado por el usuario, finalmente

estando en la posición 𝑃2 y con el electroimán desactivado, el robot SCARA vuelve a la

posición inicial 𝑃0.

3.3 Implementación

3.3.1 Parte mecánica

Las piezas en impresoras 3d poseen un pequeño error en debido a la dilatación del material PLA,

por lo que se tomó las previsiones correspondientes en la etapa de diseño, colocando alrededor

130
de 0.2 a 0.5 [mm] de más a las medidas donde se ajustan o unen piezas que es lo recomendable

en las impresiones 3d con PLA.

A continuación, se muestra imágenes de las piezas terminas.

Figura 78: Primer eslabón del tipo revoluta impreso (robot SCARA). Fuente: (Elaboración

propia)

Figura 79: Segundo eslabón del tipo revoluta impreso (robot SCARA). Fuente: (Elaboración

propia)

131
Figura 80: Soporte superior y engranaje doble, ambos impresos (robot SCARA). Fuente:

(Elaboración propia)

Figura 81: Cuerpo del robot impreso más accesorios ensamblados (robot SCARA). Fuente:

(Elaboración propia)

132
Figura 82: Base del robot impreso más accesorios ensamblados (robot SCARA). Fuente:

(Elaboración propia)

133
Figura 83: Robot SCARA ensamblado completo. Fuente: (Elaboración propia)

3.3.2 Parte electrónica

Para implementar el driver a4988 con el motor pap se necesita realizar un ajuste de voltaje de

acuerdo a la siguiente ecuación.

Imax = Vref/(8*Rs) * 0.707

134
El cual esta multiplicado por 0.707 correspondiente para pasos completos del motor pap que se

observa en la hoja de datos tabla 2 adjunto en los anexos.

Luego con el valor de Rs = 0.1 Ω

Despejando Vref:

𝑉𝑅𝐸𝐹 = 𝐼𝑇𝑟𝑖𝑝𝑀𝐴𝑋 × (8 × 0.1) × 0.707

Para diferentes valores de 𝐼𝑇𝑟𝑖𝑝𝑀𝐴𝑋 corriente del motor pap obtenemos los correspondientes

valores de 𝑉𝑅𝐸𝐹 y así observar el funcionamiento del motor pap, entonces una vez obtenido el

valor de 𝑉𝑅𝐸𝐹 por medio un desarmador o destornillador estrella conectado a un multímetro

ajustamos hasta llegar al valor calculado.

Figura 84: Ajuste del Vref para el driver A4988. Fuente: (Elaboración propia)

135
Tabla 14: Prueba de funcionamiento de motor pap 17HS4401 (eje prismático robot SCARA).

Nro. Valor de corriente [A] Valor de voltaje ref. [V] funcionamiento

1 0.5 0.28 No ejecuta movimiento

2 0.7 0.392 No ejecuta movimiento

3 0.8 0.448 No ejecuta movimiento

4 0.9 0.504 Ejecuta movimiento sin carga

5 0.95 0.532 Ejecuta movimiento con carga

6 1 0.56 Movimiento funcional

7 1.1 0.62 Movimiento funcional

Luego la calibración correspondiente para los motores pap será para 1.1 [A] con lo que es

suficiente para el movimiento libre en los motores, el voltaje de referencia será de 0.62 [V].

3.3.3 Programación e interfaz de usuario

La interfaz de usuario posee siete entradas numéricas:

• X1, componente en x para la posición 1.

• Y1, componente en y para la posición 1.

• Z1, componente en z para la posición 1.

• X2, componente en x para la posición 2.

• Y2, componente en y para la posición 2.

136
• Z2, componente en z para la posición 2.

• Nro. de ciclos o número de repeticiones.

De estas entradas 𝑌1 e 𝑌2 son entradas dependientes de 𝑋1 y 𝑋2 respectivamente, debido al

comportamiento que se tiene en el movimiento de los eslabones para cada valor de 𝑋1 y 𝑋2

obtendremos diferentes valores de 𝑌1 e 𝑌2 como se observa en área de trabajo en el plano 𝑋𝑌.

Rango de datos:

X1 (60 – 178) [mm], Paso = 1.

Y1 f (X1) [mm], Paso = datos contenidos de acuerdo a la selección de 𝑋1.

Z1 (-100 – 0) [mm], Paso = 5.

X2 (60 – 178) [mm], Paso = 1.

Y2 f (X1) [mm], Paso = datos contenidos de acuerdo a la selección de 𝑋2.

Z2 (-100 – 0) [mm], Paso = 5.

137
Figura 85: Interfaz de usuario (imagen del área de trabajo). Fuente: (Elaboración propia)

Figura 86: Interfaz de usuario (datos de entrada). Fuente: (Elaboración propia)

138
En la Figura 82 se observa una gráfica la cual representa el área de trabajo final del robot

SCARA, en este caso 𝑥 parte de 60 [mm] que es la posición en la cual el efector final no tiene

ningún obstáculo en moverse, para datos menores a 60[mm] existe un conflicto de movimiento

debido a la parte física del eje de revoluta y a las dimensiones del efector final.

Luego para dibujar el área de trabajo ejecutamos el siguiente algoritmo en el cual necesitaremos

las ecuaciones de la cinemática directa para este proceso.

L1 = 89.2
L2 = 89.2
x1=0
y1=0
x=[]
y=[]
#############################################
#grafica
for i in range(0,100): # media vuelta
for j in range(0,200): #una vuelta
q2 = i*1.8 - 90 # desde -90 hasta 90 para completar 2 cuadrantes
q3 = j*1.8 - 90
q2=q2*math.pi/180
q3=q3*math.pi/180
x1 = L1*math.cos(q2) + L2*math.cos(q3)
y1 = L1*math.sin(q2) + L2*math.sin(q3)
x1 = int(x1)
y1 = int(y1)
if x1 > 59:
x1=round(x1) #redondeo a un decimal
y1=round(y1) #redondeo a un decimal
x.append(x1) #colocar datos en lista
y.append(y1) #colocar datos en lista
#mostrar figura
fig = px.scatter(x=x,y=y)
fig.update_traces(marker_size=3)

139
Figura 87: Algoritmo del área de trabajo (robot SCARA). Fuente: (Elaboración propia)

Debido a que la variable 𝑦 depende la variable 𝑥 necesitamos un programa para realizar cambios

en y en función de los cambios en 𝑥 luego para cada valor de 𝑥 tendremos diferentes valores en 𝑦

para designar, este proceso se detalla en las siguientes figuras.

df = [x,y]
df = np.asarray(df)
df1 = np.array(x)
#proceso de ver los valores repetidos
a = np.where(df1 == int(xv1)) #ver numero de datos repetidos y organizar por
ubicacion en una tupla de matrices a
a = np.asarray(a)# convertir una tupla en una matriz
tam = np.shape(a)# tamaño de la matriz de a
tam = np.asarray(tam) # ver numero de datos en y

140
#numero de datos repetidos
ndr = tam[1]
#######################
a2 = np.where(df1 == int(xv2))
a2 = np.asarray(a2)
tam2 = np.shape(a2)
tam2 = np.asarray(tam2)
ndr2 = tam2[1]
#######################
q=[]
q2=[]
for j in range(ndr2):
qwe = df[1,a2[0,j]]
q2.append(qwe)
q2 = set(q2)
q2 = sorted(q2)
#######################
for i in range(ndr):
qwe = df[1,a[0,i]]
q.append(qwe)
q = set(q)
q = sorted(q)

141
Figura 88: Algoritmo de cálculo de valores de “y” para cada valor de “x” (robot SCARA).

Fuente: (Elaboración propia)

142
La interfaz lleva un botón llamado Iniciar, este botón inicia el proceso con los datos que el

usuario selecciona (posiciones 𝑃1, 𝑃2 y número de ciclos).

Como aclaración la posición inicial 𝑃0(178,0,0) estará por defecto al comenzar el programa.

Luego se ejecuta el algoritmo presentado en la etapa de diseño hasta completa el número de

ciclos ingresado, finalmente el proceso terminará volviendo a la posición inicial.

from dash import Dash, html, Input, Output, ctx


import numpy as np
from dash import dcc
import plotly.express as px
import time
import RPi.GPIO as GPIO
import math
import time
from RpiMotorLib import RpiMotorLib

Las librerías utilizadas son correspondientes a Dash y Plotly principalmente el cual ayuda a

realizar el grafico interactivo, otras principales son las librerías math, time, numpy, que son las

que proporcionan las herramientas en las ecuaciones de cinemática directa e inversa manejar los

retardos y manipular los datos tipo matriz.

Las librerías GPIO, motorstep, para manipular los puertos del Raspberry Pi e interactuar con los

motores paso a paso.

Las funciones principales son def inicio y def proceso:

Def inicio, es la función encargada del proceso de obtención de datos de 𝑌 de acuerdo a los datos

ingresados en 𝑋.

@app.callback(
Output("output", "children"),
Input("xv1", "value"),
Input("xv2", "value"),
)
def inicio(xv1,xv2):

df = [x,y]

143
df = np.asarray(df)
df1 = np.array(x)
a = np.where(df1 == int(xv1))
a = np.asarray(a)
tam = np.shape(a)
tam = np.asarray(tam)
ndr = tam[1]

a2 = np.where(df1 == int(xv2))
a2 = np.asarray(a2)
tam2 = np.shape(a2)
tam2 = np.asarray(tam2)
ndr2 = tam2[1]

Def proceso, es la función que recopila los datos 𝑃1, 𝑃2 y Nro. de ciclos para ejecutar el

algoritmo de funcionamiento del robot SCARA.

@app.callback(
Output("output1", "children"),
Input("xv1", "value"),
Input("xv2", "value"),
Input("yv1", "value"),
Input("yv2", "value"),
Input("zv1", "value"),
Input("zv2", "value"),
Input("ciclo", "value"),
Input("iniciar", "n_clicks"),
)

def proceso(xv1,xv2,yv1,yv2,zv1,zv2,ciclo,iniciar):
asd = ["PROCESO STAND BY"]
if "iniciar" == ctx.triggered_id:
#define GPIO pins
GPIO_pins = (14, 15, 18)
#variable articular q1 (z)
direction1 = 17
step1 = 27
#variable articular q2
direction2 = 20 # Direction -> GPIO Pin
step2 = 21 # Step -> GPIO Pin
#variable articular q3
direction3 = 5
step3 = 6
######################
#pin electroiman
ELE = 25
GPIO.setmode(GPIO.BCM)
GPIO.setup(ELE, GPIO.OUT)
#Inicializando en 0
GPIO.output(ELE, GPIO.LOW)

144
Velocidad de los motores pap

Para tomar un criterio adecuado en cuanto a la asignacion de la velocidad de los motores pap, se

requiere tomar en cuenta la siguiente grafica torque vs pulsos/s, la cual proporciona datos

relevantes para la asignacion de una determinada frecuencia (pusos por segundo) adecuada para

esta aplicación.

Figura 89: Grafica Torque vs pulsos/s para el motor paso a paso. Fuente: (Kothari & Nagrath,
2010, pág. 764)

145
3.4 Verificación

3.4.1 Mediciones

En esta etapa se muestra parámetros como el error y la repetibilidad del robot SCARA.

Tabla 15: Errores relativos y absolutos para las variables de revoluta “q2” y “q3” (Robot
SCARA).

Angulo Angulo Angulo “q2” “q3”

deseado medido medido


Error Error Error Error
“q2” “q3” absoluto relativo absoluto relativo

(%) (%)

-90 -91.69 -90.17 1.69 1.88 0.17 0.19

-72 -72.16 -72.04 0.16 0.22 0.04 0.06

-54 -54.17 -54.06 0.17 0.31 0.06 0.11

-36 -36.76 -36.04 0.76 2.11 0.04 0.11

-18 -18.16 -18.14 0.16 0.89 0.14 0.78

0 -0.15 0.4 0.15 Inf 0.4 inf

18 18.21 18.07 0.21 1.16 0.07 0.39

36 36.10 36.11 0.10 0.28 0.11 0.31

54 54.09 54.20 0.09 0.17 0.20 0.37

146
72 72.23 72.91 0.23 0.32 0.91 1.26

90 90.30 91.19 0.30 0.33 1.19 1.32

De los datos de la tabla 15 se puede obtener los errores relativos de las variables articulares de

revoluta, 0.69 % y 0.44% para 𝑞2 y 𝑞3 respectivamente.

También podemos obtener datos de precisión y repetibilidad.

Exactitud = 0.21 [grados]

Repetibilidad = 0.28 [grados]

Siendo así la exactitud la diferencia entre el valor de las variables articulares de revoluta en el

plano 𝑋𝑌 obtenido de acuerdo a la posición ingresada por el usuario y el valor medido.

La repetibilidad es la medida de la habilidad del robot SCARA para regresar a la misma

posición.

Para la variable articular prismática.

Tomando medidas para la precisión del husillo 360 [grados] = 8 [mm], y luego para los 5 [mm]

correspondiente al paso que el usuario puede ingresar por la interfaz.

Tabla 16: Errores relativos y absolutos del eje prismático

Longitud ingresada Longitud medida en Error absoluto Error relativo (%)

por el usuario en promedio [mm] [mm]

[mm]

147
8 7.8 0.2 2.5

5 4.86 0.14 2.8

-5 -4.71 0.29 5.8

3.4.2 Pruebas del sistema en conjunto

Iniciando el programa, se observa en la pantalla de línea de comandos que la pagina está en

operación, se muestra el puerto y la dirección IP por la que se puede acceder a la página, luego

una vez se tenga la dirección IP asignada por el router al Raspberry Pi, se accede a la página web

en la red LAN.

Figura 90: Iniciando el servidor (Robot SCARA). Fuente: (Elaboración propia)

148
El usuario puede ingresar los datos correspondientes para luego presionando el botón iniciar para

proceder con la ejecución de la instrucción.

Figura 91: Brazo Robot SCARA en funcionamiento. Fuente: (Elaboración propia)

En la Figura 87 se puede observar como el robot SCARA se encuentra en funcionamiento, se

realizaron pruebas con elementos ferromagnéticos pequeños como las tuercas de pernos 𝑚3, esto

también se puede visualizar en la cámara web que el usuario tiene disponible para ver el proceso

de funcionamiento.

149
Capítulo 4

4 Funcionamiento y Resultados

4.1. Comunicación entre usuarios y el sistema robot SCARA

Cuando se accede al sistema en la red LAN, por medio de la dirección IP a la que ha sido

asignado el Raspberry Pi en este caso 192.168.0.15, se observa en la línea de comandos la

dirección IP que está solicitando la comunicación a través del puerto TCP 8050, luego el servidor

responde con un código de respuesta 200 para aceptar la comunicación, esto se puede observar

en la siguiente figura.

Figura 92: Usuario accediendo al servidor (robot SCARA). Fuente: (Elaboración propia)

150
Otro usuario podría acceder al servidor de manera semejante como se expuso anteriormente, de

igual manera en la línea de comandos del Raspberry Pi se mostrará la dirección IP del usuario el

cual solicita la comunicación.

Figura 93: Usuario 2 accediendo al servidor (robot SCARA). Fuente: (Elaboración propia)

Los usuarios si realizan cambios en la interfaz de usuario, como asignar nuevos valores para los

puntos 𝑃1 y 𝑃2, esto será notorio en la interfaz ya que actualizará los datos para ser visualizados,

entonces todo cambio realizado será notorio en la interfaz y es posible ver esto en la línea de

comandos del Raspberry pi, las acciones realizadas con el método POST el cual envía la

información de los formularios al servidor.

151
Figura 94: Cambios realizados en la interfaz del servidor (robot SCARA). Fuente: (Elaboración

propia)

4.2. Costos del proyecto

Para los costos del proyecto se tomó en cuenta en la parte mecánica y electrónica componentes

que son posibles de encontrar en el país y no se incluyeron costo de softwares debido a que todos

los que se usaron en este proyecto son de uso libre (open-sourse).

152
Tabla 17: Lista de piezas del robot SCARA (parte mecánica).

Nro. CANTIDAD NOMBRE ESPECIFICACIÓN Costo [bs]

1 1 Tornillo sin fin 30 cm THSL4 45

2 8 Rodamientos 56

3 1 Varilla lisa 30 cm 8 mm de diámetro 35

4 1 Bloque deslizante lineal (rodamiento 8 mm de diámetro, 20

lineal) para varilla SCS8UU

5 1 Soporte para varilla 8 mm SHF8 16

6 1 Rodamiento para tornillo sin fin KFL08 18

7 1 Acoplamiento flexible 5-8 6.35 x 10 mm 25

8 2 Polea GT2 20T 5/8 mm 24

9 1 Motor paso a paso 17HS4401 110

10 1 Cable para motor pap 720 cm 15

11 2 Motor paso a paso KS42STH34-1504A 170

12 4 Perno M8, 2 tuercas,1 arandela Inoxidable 45

13 1 Perno M8, 1 tueca, 2 arandelas 6 cm 6

14 1 Perno M8, 1 tuerca, 2 arandelas 8 cm 6

15 12 Perno M3, 1 arandela 15

153
16 6 Perno M4, 1 tuerca, 1 arandela 15

17 2 Perno M5, 1 tuerca, 1 arandela 8

18 2 Perno M2, 1 tuerca 4

19 1 Cuerpo robot SCARA Impresora 3D, 80 % 70

20 1 Base robot SCARA Impresora 3D, 80 % 50

21 1 Soporte superior Impresora 3D, 80 % 30

22 1 Engranaje doble Impresora 3D, 20 % 7.8

23 1 Eslabón de revoluta 1 Impresora 3D, 20 % 24

24 1 Eslabón de revoluta 2 Impresora 3D, 20 % 22

25 2 Correa dentada 2GT 160 mm 6

26 1 Correa dentada 2GT 300 mm 5

27 4 Soporte de goma 8 mm 10

Costo total 857.8

Tabla 18: Lista de piezas del robot SCARA (parte electrónica).

Nro. CANTIDAD NOMBRE ESPECIFICACIÓN Costo [bs]

1 3 Driver A4988 45

154
2 3 Extensión drive A4988 45

3 1 Raspberry pi Modelo 3B+ 480

4 1 Case para Rasberry pi Modelo 3B+ 35

5 1 Fuente de alimentación 5V – 3A 45

6 1 Fuente de alimentación 12V – 1A 50

7 1 Electroimán 5 V – 1 kg 60

8 1 Cable 5m 7

9 1 Jumpers 40

10 1 Protoboard 35

Costo total 842

Tabla 19: Lista de costos mano de obra para el robot SCARA.

Nro. CANTIDAD NOMBRE ESPECIFICACIÓN Costo [bs]

1 33 días Construcción robot SCARA 8hr por día 3500

2 2 días Pruebas parte electrónica 4hr por día 700

3 5 días Cálculos correspondientes 4hr por día 850

4 50 días Programación del robot y pruebas 8hr por día 7000

155
remotas

90 días Costo total 12050

Tabla 20: Lista total de precios robot SCARA.

Nro. ESPECIFICACIÓN Costo [bs]

1 Costo total parte mecánica 857.8

2 Costo total parte electrónica 842

3 Costo total mano de obra 12050

4 Costo Total 13749.8

156
Capítulo 5

5 Conclusiones y Recomendaciones

5.1. Conclusiones

• El robot tipo SCARA en conjunto funciona adecuadamente de acuerdo a los

requerimientos y el diseño detallados en el capítulo 3 correspondientes a los primeros

pasos del modelo en cascada. El protocolo HTTP es adecuado para este caso sin embargo

debemos aclarar que este a su vez trabajo con la herramienta Flask de Python, el cual está

diseñado para realizar páginas web.

• Es evidente tener previo conocimiento de programación para realizar prototipos de

internet de las cosas independientemente del protocolo que se utilice, el documento RFC-

7452 nos proporciona una guía útil para los diferentes tipos de modelos de comunicación

en cuanto a internet de las cosas.

5.2. Estado de objetivos específicos.

• Se realizó un diseño factible de acuerdo a un modelo referencial del robot tipo SCARA,

utilizando piezas de referencia para su posterior modificación y para nuestra aplicación,

tomando en cuenta componentes que se pueden encontrar en la ciudad de La Paz.

• Se realizó el ensamblado correspondiente de acuerdo a lo establecido previamente, en lo

cual fue necesario añadir un poco de pegamento para metal en los pernos de unión de

piezas.

• Se realizó el cálculo para el procedimiento de la cinemática directa del Robot SCARA, en

el cual se utilizó el método de Denavit Hartenberg y se comprobó el resultado utilizando

157
el método geométrico, también fue necesario calcular el modelo de la cinemática inversa

para esta aplicación.

• Se cumplió con los objetivos en la elección del hardware adecuado parta el robot SCARA

y realizar la correspondiente programación, la placa electrónica Rasberry pi es adecuada

para este caso debido a que tiene la cantidad suficiente de puertos, wifi y la facilidad de

cambiar el Sistema operativo y herramientas en programación por la entrada micro SD

disponible. La programación del robot SCARA está diseñada con fines educativos para

mostrar el proceso de trasladar elementos de un lugar a otro.

• El robot SCARA cumplió con las pruebas vía remoto en la red LAN, sin embargo,

también es posible acceder al robot SCARA por internet, realizando previa configuración

en el router en la parte de redireccionamiento de puertos, este proceso se encuentra

detallando en anexos.

5.3. Estado de objetivo general.

Se realizó el diseño del brazo robótico (SCARA) en un entorno IoT, en el cual el usuario puede

introducir los datos posición dentro del área de trabajo establecido en el robot y el número de

ciclos que vaya a ejecutar para aplicaciones en el cual se requiera mover objetos de un lugar a

otro.

5.4. Recomendaciones.

• Al tener la posibilidad de acceder al robot SCARA por medio internet, es importante

tomar en cuenta la seguridad del sistema en este caso, por la vulnerabilidad a ataques

externos.

158
• Por fines prácticos se requiere apagar la alimentación de los motores PAP primero antes

de apagar el Raspberry pi, para evitar que los motores tengan falsas entradas de pasos y

se mueva en forma caótica.

• El usuario puede acceder al raspberry pi por el protocolo ssh o bien por el software VNC,

entonces se recomienda acceder un usuario a la vez.

• Leer la guía de usuario, adjunta en anexos.

159
Bibliografía

Arduino. (2020). Arduino Yun. Obtenido de

https://docs.arduino.cc/static/b0903a3777a34a4ee4ec5498babc6954/a207c/A000008_feat

ured_2.jpg

Banks, A., Briggs, E., Borgendale, K., & Gupta, R. (2019). Obtenido de MQTT Versión 5.0:

http://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html

Barrientos, A., Peñin, L., Balaguer, C., & Aracil, R. (2007). Fundamentos de Róbotica.

Begle, M. (2013). fabacademy. Obtenido de

http://fabacademy.org/archives/2014/students/begle.moritz/week13.html

Fundation, R. P. (2020). Raspberrypi. Obtenido de

https://www.raspberrypi.com/products/raspberry-pi-3-model-b-plus/

HITBOT. (2020). HIBOT Z-Arm 2442. Obtenido de https://www.hitbotrobot.com/

ICS. (2001). Nema ICS 16.

Karen Rose, S. E. (2015). La Internet de las cosas - Una breve reseña.

Khalil, W. (2013). Modeling and Control of Manipulators.

Kothari, D. P., & Nagrath, I. J. (2010). Electric Machines.

Maldonado, L. (2021). "Diseño e implementación de un sistema de comunicación entre

máquinas para entornos IoT aplicado al laboratorio de control de la Carrera de Ingeniería

Electrónica". Proyecto de Grado. Universidad Mayor de San Andrés, Carrera de

Ingenieria Eelectrónica.

160
Martínez, J. R. (2019). stodocu. Obtenido de https://www.studocu.com/es-

mx/document/universidad-tecnologica-de-queretaro/fisica-de-semiconductores/nema-de-

motores-electricos/22213121

McPherson. (Marzo de 2015). RFC. Obtenido de https://www.rfc-editor.org/rfc/rfc7452

MicroSystems, A. (2009). A4988 DMOS Microstepping Driver with Translator And Overcurrent

Protection.

Mundo C.N.C. con Arduino. (s.f.). Obtenido de

https://www.youtube.com/@mundoc.n.c.conarduino7293

OASIS. (2014). mqtt. Obtenido de https://mqtt.org/

OASIS. (Mayo de 2014). OASIS Committee Categories: IoT/M2M. Obtenido de

https://www.oasis-open.org/committees/tc_cat.php?cat=iot

Onios. (2019). Onios Digital guide. Obtenido de https://www.ionos.es/digitalguide/paginas-

web/desarrollo-web/el-modelo-en-cascada/

Parisaca, A. (2016). “Sistema embebido para la prevención de accidentes de ebriedad aplicando

Internet de las cosas”. Tesis de grado. Universidad Mayor de San Andres, Carrera de

Informatica.

Pearson. (2012). Redes de computadoras.

Primo, A. (2012). Protocolo HTTP.

Stone, H. W. (1986). Kinematic modeling, identification, and control of robotic manipulators.

Support, I. (marzo de 2022). IBM. Obtenido de https://www.ibm.com/support/pages/mqtt

Talavera, O. (2018). Congreso internacional CICOM.

161
TZI, U. B. (Junio de 2014). RFC. Obtenido de https://www.rfc-editor.org/rfc/rfc7252

UIT. (2012). Overview of the Internet of things.

Weber, S. (4 de Nobiembre de 2014). IEEE ComSoc. Obtenido de

https://www.comsoc.org/publications/ctn/internet-things-iot

162
Anexos

Anexo A propuesta de aplicación del sistema Robot SCARA en asignaturas.

Mecánica Aplicada ETN - 607

En la materia de mecánica aplicada se plantea:

• Abordar la Cinemática directa e inversa y comprobar la misma a través del

funcionamiento del brazo robótico tipo SCARA.

• Ver de forma práctica los conceptos de grados de libertad y los tipos que existen.

Programación ETN - 307

En la materia de programación se plantea en el área de laboratorio:

• Cambiar o modificar la interfaz de Usuario

• Modificar el funcionamiento del brazo robot tipo SCARA.

Anexo B Código fuente Python en Raspberry pi.

from dash import Dash, html, Input, Output, ctx


import numpy as np
from dash import dcc
import plotly.express as px
import time
import RPi.GPIO as GPIO
import math
import time
from RpiMotorLib import RpiMotorLib

app = Dash(__name__)
#############################################
L1 = 89.2
L2 = 89.2
x1=0
y1=0
x=[]
y=[]
#############################################

163
#grafica
for i in range(0,100): # media vuelta
for j in range(0,200): #una vuelta
q2 = i*1.8 - 90 # desde -90 hasta 90 para completar 2 cuadrantes
q3 = j*1.8 - 90
q2=q2*math.pi/180
q3=q3*math.pi/180
x1 = L1*math.cos(q2) + L2*math.cos(q3)
y1 = L1*math.sin(q2) + L2*math.sin(q3)
x1 = int(x1)
y1 = int(y1)
if x1 > 59:
x1=round(x1) #redondeo a un decimal
y1=round(y1) #redondeo a un decimal
x.append(x1) #colocar datos en lista
y.append(y1) #colocar datos en lista
#mostrar figura
fig = px.scatter(x=x,y=y)
fig.update_traces(marker_size=3)
################################
app.layout = html.Div([
html.H3('ROBOT TIPO SCARA'),
dcc.Graph(id='Graph1',figure=fig,style={"width": "40%"}),
html.P("X1"),
dcc.Input(id="xv1", type="number", min="60", max="178", step="1",
value="178"),
html.P("X2"),
dcc.Input(id="xv2", type="number", min="60", max="178", step="1",
value="178"),
html.P("Nro de Ciclos:"),
dcc.Input(id="ciclo", type="number", min="1", max="5", step="1",
value="1"),
html.Button('INICIAR', id='iniciar', n_clicks=0),
html.Div(children="callback not executed", id="output"),
html.Div(children="callback not executed", id="output1"),

html.Div([
html.P("Y1"),

dcc.Dropdown(id='yv1',
options = [],
placeholder = "intr.. Y1",
multi = True,
value = [],
style={"width": "30%"}),
html.P("Y2"),

dcc.Dropdown(id='yv2',
options = [],
placeholder = "intr.. Y2",
multi = True,
value = [],
style={"width": "30%"}),

html.P("Z1"),

164
dcc.Input(id="zv1", type="number", min="-100", max="0", step="5",
value="0"),
html.P("Z2"),
dcc.Input(id="zv2", type="number", min="-100", max="0", step="5",
value="0"),
],style= {'display': 'none'})
])

@app.callback(
Output("output", "children"),
Input("xv1", "value"),
Input("xv2", "value"),
)
def inicio(xv1,xv2):

df = [x,y]
df = np.asarray(df)
df1 = np.array(x)
a = np.where(df1 == int(xv1))
a = np.asarray(a)
tam = np.shape(a)
tam = np.asarray(tam)
ndr = tam[1]

a2 = np.where(df1 == int(xv2))
a2 = np.asarray(a2)
tam2 = np.shape(a2)
tam2 = np.asarray(tam2)
ndr2 = tam2[1]

q=[]
q2=[]
for j in range(ndr2):
qwe = df[1,a2[0,j]]
q2.append(qwe)
q2 = set(q2)
q2 = sorted(q2)

for i in range(ndr):
qwe = df[1,a[0,i]]
q.append(qwe)
q = set(q)
q = sorted(q)

return html.Div([

html.P("Y1"),

dcc.Dropdown(id='yv1',
options = q ,
placeholder = "intr.. Y1",
value = q[0],
style={"width": "30%"}),
html.P("Y2"),

dcc.Dropdown(id='yv2',

165
options = q2 ,
placeholder = "intr.. Y2",
value = q2[0],
style={"width": "30%"}),

html.P("Z1"),
dcc.Input(id="zv1", type="number", min="-100", max="0", step="5",
value="0"),
html.P("Z2"),
dcc.Input(id="zv2", type="number", min="-100", max="0", step="5",
value="0"),
html.P(msg),
])

@app.callback(
Output("output1", "children"),
Input("xv1", "value"),
Input("xv2", "value"),
Input("yv1", "value"),
Input("yv2", "value"),
Input("zv1", "value"),
Input("zv2", "value"),
Input("ciclo", "value"),
Input("iniciar", "n_clicks"),
)

def proceso(xv1,xv2,yv1,yv2,zv1,zv2,ciclo,iniciar):
asd = ["PROCESO STAND BY"]
if "iniciar" == ctx.triggered_id:
#define GPIO pins
GPIO_pins = (14, 15, 18)
#variable articular q1 (z)
direction1 = 17
step1 = 27
#variable articular q2
direction2 = 20 # Direction -> GPIO Pin
step2 = 21 # Step -> GPIO Pin
#variable articular q3
direction3 = 5
step3 = 6
######################
#pin electroiman
ELE = 25
GPIO.setmode(GPIO.BCM)
GPIO.setup(ELE, GPIO.OUT)
#Inicializando en 0
GPIO.output(ELE, GPIO.LOW)
#datos y parametros del brazo
#dimensiones de los eslabones
L1 = 89.2 # eslabon 1 en mm
L2 = 89.2 # eslabon 2 en mm
###################################
mymotortest1 = RpiMotorLib.A4988Nema(direction1, step1, GPIO_pins,
"A4988")
mymotortest2 = RpiMotorLib.A4988Nema(direction2, step2, GPIO_pins,
"A4988")

166
mymotortest3 = RpiMotorLib.A4988Nema(direction3, step3, GPIO_pins,
"A4988")
################################
x = xv1
y = yv1
z = zv1
#como los datos llegan en tipo str convertimos a int para operar con
ellos
x = int(x)
y = int(y)
z = int(z)
#datos para p2
x2 = xv2
y2 = yv2
z2 = zv2
#como los datos llegan en tipo str convertimos a int para operar con
ellos
x2 = int(x2)
y2 = int(y2)
z2 = int(z2)

numerov = ciclo

print("x =",x)
print("y =",y)
print("z =",z)

print("x2 =",x2)
print("y2 =",y2)
print("z2 =",z2)

#cinemtica directa para p1


#calculo de parametros del robot x y
D = (x*x+y*y+L1*L1-L2*L2)/(2*L1*(x*x+y*y)**(1/2))
print("D =",D)
print("parte1 de q2 =",math.atan2(y,x))
print("numeredor =",(1-D*D)**(1/2))

if (y>0):

q2 = math.atan2(y,x)-math.atan2(((1-D*D)**(1/2)),D)
else:
q2 = math.atan2(y,x)-math.atan2((-(1-D*D)**(1/2)),D)

q3 = math.atan2((y-L1*math.sin(q2)),(x-L1*math.cos(q2)))
##########################################
#calculos de parametros cinematica inversa
q1 = 45*z # 360 grdos/8 mm (husillo 8 mm por revolucion)
p1 = q1/1.8 # pasos del motor
#conversion de radianes a grados
q2 = q2*180/math.pi
p2 = q2/1.8 # pasos segundo parametro
#para la tercera varible articular
q3 = q3*180/math.pi
p3 = q3/1.8

167
#cinemtica directa para p2
#calculo de parametros del robot x y
D2 = (x2*x2+y2*y2+L1*L1-L2*L2)/(2*L1*(x2*x2+y2*y2)**(1/2))

if (y2>0):

q20 = math.atan2(y2,x2)-math.atan2(((1-D2*D2)**(1/2)),D2)
else:
q20 = math.atan2(y2,x2)-math.atan2((-(1-D2*D2)**(1/2)),D2)

q30 = math.atan2((y2-L1*math.sin(q20)),(x2-L1*math.cos(q20)))

##########################################
#calculos de parametros cinematica inversa
q10 = 45*z2 # 360 grdos/8 mm (husillo 8 mm por revolucion)
p10 = q10/1.8 # pasos del motor
#conversion de radianes a grados
q20 = q20*180/math.pi
p20 = q20/1.8 # pasos segundo parametro
#para la tercera varible articular
q30 = q30*180/math.pi
p30 = q30/1.8

#sentido de giro para las variables articulares deacuerdo a los puntos


trazados
#para P1
# q2 ----> q3 ----> q1
print("")
print("iniciando")
time.sleep(1.1)

if (p2>0):
#print("para P1 EJECUTANDO q2")
mymotortest2.motor_go(True, "Full" , round(p2/0.3149), .002, False,
.05)
else:
mymotortest2.motor_go(False, "Full" , round(abs(p2/0.3149)), .002,
False, .05)
#print("para P1 EJECUTANDO q2")
#tiempo entre eslabones
time.sleep(0.5)
#######################
if (p3>0):
mymotortest3.motor_go(False, "Full" , round(p3/0.3149), .002, False,
.05)
else:
mymotortest3.motor_go(True, "Full" , round(abs(p3/0.3149)), .002,
False, .05)
#tiempo entre eslabones
time.sleep(0.5)

if (p1>0):
mymotortest1.motor_go(True, "Full" , round(p1), .002, False, .05)
else:
mymotortest1.motor_go(False, "Full" , round(abs(p1)), .002, False,
.05)

168
for i in range(int(numerov)):

print("posicion P1")

time.sleep(0.7)
#activar el electroiman E = 1
GPIO.output(ELE, GPIO.HIGH)
#############################
time.sleep(0.7)

# q100 ----> q200 ----> q300 : PARA P2


#operaciones para el segundo movimiento para pasar de P1 a P2
p100 = p10 - p1
p200 = p20 - p2
p300 = p30 - p3

#time.sleep(0.5)
if (z > z2):
if (p200>0):
mymotortest2.motor_go(True, "Full" , round(p200/0.3149),
.002, False, .05)
else:
mymotortest2.motor_go(False, "Full" ,
round(abs(p200/0.3149)), .002, False, .05)
time.sleep(0.5)

if (p300>0):
mymotortest3.motor_go(False, "Full" , round(p300/0.3149),
.002, False, .05)
else:
mymotortest3.motor_go(True, "Full" ,
round(abs(p300/0.3149)), .002, False, .05)
time.sleep(0.5)

if (p100>0):
mymotortest1.motor_go(True, "Full" , round(p100), .002,
False, .05)
else:
mymotortest1.motor_go(False, "Full" , round(abs(p100)),
.002, False, .05)
else:

if (p100>0):
mymotortest1.motor_go(True, "Full" , round(p100), .002,
False, .05)
else:
mymotortest1.motor_go(False, "Full" , round(abs(p100)),
.002, False, .05)

time.sleep(0.5)

if (p200>0):
mymotortest2.motor_go(True, "Full" , round(p200/0.3149),
.002, False, .05)

169
else:
mymotortest2.motor_go(False, "Full" ,
round(abs(p200/0.3149)), .002, False, .05)

time.sleep(0.5)

if (p300>0):
mymotortest3.motor_go(False, "Full" , round(p300/0.3149),
.002, False, .05)
else:
mymotortest3.motor_go(True, "Full" ,
round(abs(p300/0.3149)), .002, False, .05)

print("posicion P2")

time.sleep(0.7)
#activar el electroiman E = 0
#print("electroiman desactivado")
GPIO.output(ELE, GPIO.LOW)
#############################
time.sleep(0.7)
if (i != int(numerov)-1):
#volviendo a P1
# -q100 ----> -q200 ----> -q300
if (z < z2):
if (p200>0):
mymotortest2.motor_go(False, "Full" ,
round(p200/0.3149), .002, False, .05)
else:
mymotortest2.motor_go(True, "Full" ,
round(abs(p200/0.3149)), .002, False, .05)

time.sleep(0.5)

if (p300>0):
mymotortest3.motor_go(True, "Full" ,
round(p300/0.3149), .002, False, .05)
else:
mymotortest3.motor_go(False, "Full" ,
round(abs(p300/0.3149)), .002, False, .05)

time.sleep(0.5)

if (p100>0):
mymotortest1.motor_go(False, "Full" , round(p100),
.002, False, .05)
else:
mymotortest1.motor_go(True, "Full" , round(abs(p100)),
.002, False, .05)

else:

if (p100>0):
mymotortest1.motor_go(False, "Full" , round(p100),
.002, False, .05)
else:

170
mymotortest1.motor_go(True, "Full" , round(abs(p100)),
.002, False, .05)

time.sleep(0.5)

if (p200>0):
mymotortest2.motor_go(False, "Full" ,
round(p200/0.3149), .002, False, .05)
else:
mymotortest2.motor_go(True, "Full" ,
round(abs(p200/0.3149)), .002, False, .05)

time.sleep(0.5)

if (p300>0):
mymotortest3.motor_go(True, "Full" ,
round(p300/0.3149), .002, False, .05)
else:
mymotortest3.motor_go(False, "Full" ,
round(abs(p300/0.3149)), .002, False, .05)

#al finalnizar los ciclos volvemos a la posicion inicial


# -q10 ----> -q20 ----> -q30
time.sleep(0.5)

if (p10>0):
mymotortest1.motor_go(False, "Full" , round(p10), .002, False, .05)
else:
mymotortest1.motor_go(True, "Full" , round(abs(p10)), .002, False,
.05)
time.sleep(0.5)

if (p20>0):
mymotortest2.motor_go(False, "Full" , round(p20/0.3149), .002, False,
.05)
else:
mymotortest2.motor_go(True, "Full" , round(abs(p20/0.3149)), .002,
False, .05)
time.sleep(0.5)

if (p30>0):
mymotortest3.motor_go(True, "Full" , round(p30/0.3149), .002, False,
.05)
else:
mymotortest3.motor_go(False, "Full" , round(abs(p30/0.3149)), .002,
False, .05)

print("posicion inicial")
print("Proceso finalizado")
asd = ["P1","(",xv1,",",yv1,",",zv1,")","P2","(",xv2,",",yv2,",",zv2,")"]
return html.Div(asd)

if __name__ == '__main__':
app.debug = True
app.run_server(host="0.0.0.0")

171
Anexo C Vistas de las piezas del robot SCARA.

Cuerpo del robot SCARA.

Vista superior

Vista de frente

Vista isométrica

172
Base del robot

Vista superior

Vista de frente

173
Vista lateral izquierda

Vista isométrica

174
Soporte superior

Vista superior

175
Vista lateral izquierda

Vista de frente

Vista isométrica

176
Engranaje doble

Vista superior

177
Vista de frente

Vista Isométrica

178
Primer eslabón

Vista superior

Vista lateral izquierda

179
Vista de frente

Vista isométrica

180
Segundo eslabón

Vista superior

Vista inferior

181
Vista lateral izquierda

Vista de frente

182
Vista isométrica

Robot SCARA

Vista superior

183
Vista inferior

Vista frontal

184
Vista posterior

Vista lateral derecha

185
Vista lateral izquierda

Vista isométrica

186
Guía de Usuario

Inicio del sistema.

Antes de iniciar el sistema se deben realizar los siguientes pasos.

• Instalar los programas VNC Viewer

https://www.realvnc.com/es/connect/download/viewer/

• Instalar Advanced IP Scanner https://www.advanced-ip-scanner.com/es/ o otra app para

ver las IP de la Red.

Luego encendemos el sistema.

• Abrir Advanced IP Scanner y verificar la IP designada al Raspberry pi.

• Abrir VNC Viewer e ingresar la IP designada al Raspberry pi (Usuario: pi Contraseña:

jpcool)

Una vez estando en Rapberry pi OS.

1. Ingresar a la línea de comandos.

2. Escribir el siguiente comando y presionar enter: cd Desktop/program (el comando nos

llevara de la raíz del sistema a la carpeta program2)

3. Escribir el siguiente comando y presionar enter: python proyecto_iot.py (el comando

ejecutara el servidor)

Acceder al servidor.

1. Abrir el navegador de preferencia Google Chrome.

187
2. Introducir la dirección IP del Raspberry Pi seguido del puerto 8050 separado por dos

puntos. (IP:8050)

3. Presionar enter.

Interfaz de Usuario.

• El usuario puede modificar el valor de 𝑋1, 𝑋2, 𝑍1, 𝑍2 y el Número de Ciclos, subiendo o

bajado el cursor (el sistema solo te permite ingresar datos dentro del área de trabajo)

• Para cada cambio realizado en X1 y X2 se observará cambios en los valores de 𝑌1 𝑒 𝑌2

respectivamente, estos valores son los datos más bajos para los diferentes intervalos de

datos disponibles para cada valor de 𝑋.

• El usuario puede seleccionar el dato en 𝑌1 𝑒 𝑌2.

• Una vez teniendo todos los datos establecidos presionar el botón Iniciar (solo presionar

una vez). (proceso iniciado de acuerdo al número de ciclos o repeticiones ingresado)

Acceso desde internet

Para acceder desde internet se deben realizar algunas configuraciones en el router de la red.

1. Ingresar La dirección IP del router generalmente 192.168.0.1 o 192.168.1.1

2. Ingresar usuario y clave

3. Ingresar a la sección de cortafuegos

4. Ingresar a activación de puertos

4.1. Añadir puerto

4.2. Ingresar nombre (Rsapberrypi), puertos (8050)

4.3. Protocolo (TCP/UDP)

4.4. Tiempo de espera (50 ms)

188
4.5. Aceptar y aplicar

5. Redirección de puertos

5.1. Añadir nuevo

5.2. Ingresar nombre (Raspberrypi_d), puerto (8050)

5.3. Protocolo (TCP/UDP)

5.4. Dirección IP (IP del Raspberry pi)

5.5. Aceptar y aplicar

189
Juan Pablo Albarez Flores

[email protected]

68167028

También podría gustarte