Está en la página 1de 51

UNIVERSIDAD MAYOR DE SAN SIMÓN

FACULTAD DE CIENCIAS Y TECNOLOGÍA

CÁLCULO DISEÑO Y CONSTRUCCIÓN DE UN


BRAZO ROBÓTICO MÓVIL OMNIDIRECCIONAL

Nombre: Carlos Andres Fiorilo Ayala

Luis Andre Llanos Kantuta

Jose Roman Mejia Pilco

Sidar Paco Laura

Docente: ING. MARCO ANTONIO ARANCIBIA MIRANDA

Asignatura: MECATRÓNICA Y ROBÓTICA

Carrera: ING. ELECTROMECÁNICA


CÁLCULO DISEÑO Y CONSTRUCCIÓN DE UN
BRAZO ROBÓTICO MÓVIL OMNIDIRECCIONAL
RESUMEN
El presente proyecto consiste en el diseño, construcción y control de un brazo robótico omnidireccional con seis grados de li-
bertad. Se utilizan principios de mecánica para realizar el diseño del sistema, además conocimientos en electrónica y progra -
mación para lograr automatizar de manera óptima los movimientos de la estructura. Paso a paso se detalla la construcción y
montaje del brazo, con sus actuadores y sensores necesarios. Se utiliza como controlador una tarjeta Arduino Mega, la cual
permite comandos inalámbricos utilizando su módulo Bluetooth. Se programa también una interfaz gráfica para realizar el
control vía APK, el cual tendrá control del sentido de rotación y velocidad de motores. Finalmente, se utilizan modelos cine -
máticos y modelos geométricos para el cálculo de la cinemática inversa necesaria para traducir las coordenadas geométricas
en ángulos de rotación de cada motor.

ÍNDICE
LISTA DE FIGURAS Y ACRÓNIMOS

N° Figura Nombre Acrónimos


1 Base brazo BB

2 Brazo 1 B1

3 brazo 2 B2

4 Brazo 3 B3

5 Base garras BG

6 Engranaje Izq EI

7 Engranaje ED
Der
8 Pinza PZ

9 Arista diente AD

10 Nema 17 Izq. N17IA


Atrás

11 Nema 17 Izq- N17ID


Delante

12 Nema 17 der. N17DA


Atrás

13 Nema 17 der. N17DD


Delante

14 MG99R Base MGBA


15 MG99R MGBB
Brazo

16 MG99R MGC
Codo

17 sg90 ante- SGA


brazo

18 sg90 muñeca SGM

19 sg90 pinza SGP

20 Rueda Izq RI

21 Rueda der RD

Arduino AM 2560
Mega2560

22
23 DRV8825 DRV8

24 Módulo HC05
Bluetooth
HC-05
BRAZO ROBÓTICO MÓVIL
OMNIDIRECCIONAL
INTRODUCCIÓN

La necesidad de automatismos y las limitaciones de la mano de obra en la industria ha impul -


sado a desarrollar herramientas automáticas. Los brazos robóticos que no son más que robots
articulados están ya presentes en todas las industrias, por lo útiles que son.

El problema de estos brazos robóticos clásicos, es que tienen una gran envergadura y están
instalados en un espacio reservado, lo que hace imposible utilizarlos en otras áreas requeri-
das o tampoco llevarlos a trabajos externos.

La robótica colaborativa trajo un nuevo estilo de robots al ver este tipo de inconvenientes. Y
llevo a cabo el desarrollo de robots sin posición fija, que convierten a los robots en una herra-
mienta más, que se lleva con el usuario.

Esta es la motivación para el desarrollo del brazo robótico móvil. El construir una herramienta
que pueda ser utilzada en el lugar que el trabajador necesite, que tenga además libertad de
movimiento y que además pueda realizar trabajos de manera programable.

ANTECEDENTES

ROBOT OMNIDIRECCIONAL Y BRAZO ROBOTICO

Un robot omnidireccional, también conocido como holonómico, es un tipo de robot móvil con
ruedas, cuya configuración le permite desplazarse en cualquier dirección sin la necesidad de
alcanzar previamente una orientación específica. Es decir, es capaz de realizar movimientos
en cualquiera de las componentes del plano, bien sean traslaciones (hacia adelante, en rever-
sa, laterales) o rotaciones, a partir de un estado de movilidad. Todo ello, a expensas de un
mayor grado de complejidad en su manejo.

Para un robot omnidireccional es imperativo contar con al menos tres ruedas activas en su ha-
ber. Es entonces un punto importante del diseño la decisión de cuántas ruedas emplear. Cada
una de las ruedas proporciona al robot una fuerza normal al eje del motor y paralela a la su-
perficie sobre la cual se desplaza. La suma de ellas permite la traslación y rotación de la es-
tructura. Por lo general, presentan una configuración mecánica de tres o cuatro ruedas. El pri-
mero es mecánicamente más simple que el segundo. No obstante, este último permite una
mayor aceleración al robot.

Los robots de cuatro ruedas tienen más tracción que los de tres, pues se adiciona la potencia
entregada por el motor adicional. Lo cual se traduce a menos deslizamiento en las ruedas si el
peso de la carga se encuentra distribuido uniformemente sobre ellas, un mayor consumo de
energía, costo y posiblemente, la necesidad de incorporar un sistema de suspensión para dis-
tribuir las fuerzas sobre las ruedas.

A la vez un brazo robótico es un tipo de brazo mecánico, normalmente programable, con fun-
ciones parecidas a las de un brazo humano; este puede ser la suma total del mecanismo o
puede ser parte de un robot más complejo. Las partes de estos manipuladores o brazos son
interconectadas a través de articulaciones que permiten tanto un movimiento rotacional (tales
como los de un robot articulado), como un movimiento transicional o desplazamiento líneo.

En este proyecto se combinarán ambos tipos de funciones para crear un robot colaborativo
móvil.

JUSTIFICACIÓN
El presente trabajo se realiza con un propósito didáctico en la carrera de Ingeniería Electrome-
cánica en la Universidad Mayor de San Simón. Para las materias de Robótica Industrial y Me-
catrónica. Podrían utilizar el sistema presentado para proyectos, clases y demostraciones. La
elección del tema referente a diseño, construcción y programación de un sistema automatiza-
do, tiene bases en los conocimientos y afinidades de quienes lo realizan. La problemática que
se pretende satisfacer, es la necesidad de generar diseños propios u originales de sistemas
de brazo robótico movible que puedan ser empleados en la enseñanza y en la investigación
.

OBJETIVO GENERAL

 Diseñar, construir y controlar un brazo robótico móvil omnidireccional, mediante el uso


de software de simulación y elementos electromecánicos.

OBJETIVOS ESPECÍFICOS

 Realizar un diseño factible de la estructura del brazo robótico.


 Construir el brazo robótico de acuerdo al diseño previo.
 Programar el sistema para que cumpla con un funcionamiento adecuado.

MARCO TEÓRICO

ROBOT MOVIL

Un robot móvil es una máquina automática capaz de trasladarse en cualquier ambiente dado.
Los robots móviles tienen la capacidad de moverse en su entorno y no se fijan a una ubica -
ción física. En contraste, existen robots industriales fijos, que consisten en un brazo articula-
do (manipulador de multi-ligado) y una pinza de montaje (o efector de extremo) que está unida
a una superficie fija.
Los robots móviles son un foco importante de la investigación actual y casi de cada universi-
dad importante que tenga uno o más laboratorios que se centran en la investigación de robots
móviles. Los robots móviles se encuentran también en la industria y los servicios.

BRAZO ROBÓTICO

Definimos qué es un brazo robótico como un brazo mecánico que utiliza tecnología robótica y
que es totalmente programable en sus funciones. Los brazos manipuladores son autónomos y
han sido diseñados con el fin de imitar las capacidades de un brazo humano y la sensibilidad
de la mano de una persona. Los más extendidos son los robots articulados que se caracteri-
zan por trabajar sin fatiga en diferentes posturas y ángulos.

Destacan los robots de seis ejes en sus manipulaciones, capaces de realizar movimientos
rotacionales y de traslación. En este artículo encontraras información sobre modelos, fabri-
cantes y empresas instaladoras de brazos robóticos industriales en España.
Se utilizan principalmente para simular o amplificar la capacidad del brazo humano durante un
proceso de trabajo. Están especialmente indicados para automatizar procesos de trabajo me-
cánicos y repetitivos, y a poder ser con un gran volumen de trabajo mensual. Pueden trabajar
de manera independiente o pueden formar parte de un equipo en una línea de montaje, ya
sea con humanos o con otros robots.

Este tipo de programaciones suelen incorporar el sistema ROS, siendo uno de los más exten-
didos entre los desarrolladores.

RUEDAS ESPECIALES MECANUM

Dentro de las ruedas especiales se encuentra la rueda de tipo Mecanum (Figura 13). Estas
son similares a las mostradas en la figura 11 con la salvedad que los rodillos poseen una rota -
ción de cierto ángulo, por lo general de 45o , respecto de la circunferencia exterior de la rue-
da.
Debido a la disposición de los rodillos en la rueda principal, la fuerza emitida sobre la rueda,
en la dirección de ésta, produce una fuerza sobre la superficie que se descompone en dos
vectores de fuerza: uno perpendicular al eje del rodillo y el segundo paralelo al eje del rodillo
(ver gura 14) [17].
A partir de la descomposición de la fuerza en las componentes A y B en la gura 14, se obser-
va que solamente la componente A brinda un momento al robot ya que la componente B brin-
da únicamente un momento al rodillo produciendo su rotación. Esto concluye en que el mo-
mento que esta rueda brinda al vehículo posee una dirección con un ángulo respecto de la
rueda. [22] En la gura se puede observar la disposición de estas ruedas en un robot de cuatro
ruedas. Controlando individualmente la rotación de cada una de las ruedas, mediante la com-
binación lineal de las fuerzas resultantes, se puede obtener cualquier dirección de desplaza-
miento de forma instantánea, tal como lo muestra la gura 16. [22]
Si bien esta descomposición permite realizar desplazamientos omnidireccionales, se produce
una pérdida de fuerza cualquiera sea la dirección de desplazamiento del robot, incluso al des-
plazarse en una trayectoria no omnidireccional. Esta inevitable pérdida de fuerza sobre las
ruedas en el sentido de sus rotaciones, conlleva a una disminución de la velocidad máxima al-
canzable respecto a la utilización de ruedas no omnidireccionales, para el caso de robots cu-
yas ruedas se encuentran situadas de forma similar a un automóvil. Para eliminar la pérdida
de fuerza, se proponen dos diseños alternativos posibles sobre el robot: 1) a través de un mé-
todo mecánico simple para evitar pérdida de fuerza al desplazarse en línea recta y 2) mecáni-
camente más complejo, que permite a los rodillos exteriores variar su ángulo de orientación
respecto a la rueda principal . El primer rediseño supone la existencia de un dispositivo que
bloquea los rodillos exteriores cuando se debe realizar una trayectoria en la dirección de de la
rotación de las ruedas y los desbloquea cuando la trayectoria tiene una componente de des-
plazamiento lateral no nula. Claramente este rediseño no elimina la pérdida de fuerza cuando
la trayectoria es omnidireccional, dando paso al segundo rediseño. En el segundo rediseño,
más efectivo pero mas complejo que el anterior, se cuenta con un dispositivo que permite alte-
rar el ángulo de orientación respecto a la rueda principal además de permitir bloquear los rodi-
llos. Éste, permite que los rodillos sean ajustados desde una posición perpendicular a la rueda
principal (los rodillos son bloqueados para evitar desplazamientos laterales cuando el plano
posee una inclinación) hasta una posición en la que se obtiene un ángulo de 135o entre la
orientación de los rodillos y la rueda principal, para así obtener una menor pérdida de fuerza
cuando el desplazamiento es diagonal. En la gura 17, se ilustran las dos rotaciones máximas
antes explicadas. En la parte superior de la gura, se observa el diseño tradicional actuando en
trayectorias denidas. En la parte inferior, se observa el diseño mejorado para las mismas tra-
yectorias. Para el primer caso, los rodillos son rotados de forma que los ejes de éstos posean
una dirección paralela a la rotación de la rueda. Esto permite que la fuerza ejercida sobre la
rueda se descomponga totalmente en la componente con dirección la del desplazamiento de-
seado, lográndose así la velocidad máxima. Para el segundo caso, se observa que el diseño
tradicional permite obtener un desplazamiento diagonal aplicando una fuerza a dos ruedas,
mientras que las restantes solamente reciben una pequeña fuerza de rozamiento. Para lograr
la máxima velocidad en esta trayectoria se rotan los rodillos 90o (resultando en un ángulo de
135o respecto de la rueda principal). Esto resulta en que al aplicarse una fuerza a cada una
de las ruedas, se obtenga una componente de fuerza con la dirección deseada para cada rue-
da permitiendo obtener la velocidad máxima en ese caso. Los detalles de estos rediseños, ta-
les como materiales, consumo de energía, etc., no serán ampliados ya que escapa al alcance
del proyecto. Para profundizar sobre los mismos, referirse a [12].

Respecto a las características de las ruedas Mecanum, se identican las siguientes:

1. Capacidad de carga reducida. La capacidad de carga de este tipo es baja considerando


las mismas razones que las ruedas Universales [23].
2. Diseño complejo. Si bien solamente es necesario de un motor por rueda (los rodillos se
encuentran libres, girados por la fuerza de fricción con la supercie como se explicó an-
teriormente), el diseño de la rueda en si es complejo considerando el ángulo entre los
rodillos y la rueda principal [20].
3. Radio de la rueda constante. La disposición de los rodillos se realiza de forma que el
contacto con la supercie sea constante [4], tal como muestra la gura 18.
4. Fricción baja. La fuerza de fricción que presenta la rueda ante la supercie es baja, al
igual que las ruedas de tipo Universal, considerando las mismas razones.
5. Mayor sensibilidad a la supercie respecto de otros tipos. La altura máxima de los esca-
lones posibles de subir se encuentra limitada por el radio de los rodillos, de igual forma
que para las ruedas de tipo Universal. Dado que los rodillos poseen un radio pequeño
según [23] menor al de las ruedas convencionales, este tipo cuenta con una mayor
sensibilidad a la supercie respecto del segundo tipo.

MOTORES PAP
El motor paso a paso es un motor de corriente continua sin escobillas en el que la rotación se
divide en un cierto número de pasos resultantes de la estructura del motor. Normalmente, una
revolución completa del eje de 360° se divide en 200 pasos, lo que significa que se realiza una
sola carrera del eje cada 1,8°. También hay motores donde la carrera del eje se realiza cada
2; 2,5; 5, 15 o 30°. Debido al hecho de que la rotación completa del eje se divide en ciertas
secciones discretas, el motor paso a paso no gira suavemente, sino que realiza saltos y cruza
estados intermedios, por lo que el funcionamiento del motor paso a paso se acompaña de un
sonido y vibración característicos.

El motor paso a paso está compuesto por rotor y estator. El estator es una parte estacionaria,
mientras que el rotor montado en el eje con un cojinete gira siguiendo el campo magnético gi-
ratorio creado alrededor del estator. El estator, hecho de acero u otro metal, es el marco de un
conjunto de electroimanes, que son bobinas montadas en lugares específicos alrededor del
rotor. Cuando la corriente fluye a través de las bobinas del estator, se crea un campo magnéti-
co a su alrededor. Los flujos magnéticos particulares tienen una dirección e intensidad que de-
penden de la intensidad y la dirección de la corriente que fluye a través de una bobina deter-
minada.

Cuando la bobina se energiza, se forma un electroimán atrayendo a un imán (diente) montado


en el rotor, desplazado por un cierto desplazamiento con respecto a él. Luego, el rotor y el eje
giran en el ángulo en el que su posición se opone menos al flujo magnético o la resultante de
múltiples flujos. Después de pasar por este desplazamiento, se enciende otro electroimán (bo-
bina o bobinas) en el estator y se tira del rotor a su nueva posición. Al conmutar bobinas suce-
sivas, es posible realizar más saltos hacia adelante o hacia atrás, o completar o girar parcial-
mente el rotor y el eje con él.Con base en la descripción dada, es posible imaginar un motor
paso a paso como una serie de electroimanes que atraen el imán del rotor. En realidad, sin
embargo, la situación es mucho más compleja ya que el imán es atraído por el campo resul-
tante alrededor del conjunto del electroimán, lo que permite no solo la operación de paso com-
pleto, sino también la operación de medio paso (división de la carrera por 2) o menos, lo que
se denomina operación de micropaso.
SERVOMOTORES

Un servomotor es un actuador rotativo o motor que permite un control preciso en términos de


posición angular, aceleración y velocidad, capacidades que un motor normal no tiene. En defi-
nitiva, utiliza un motor normal y lo combina con un sensor para la retroalimentación de posi-
ción.

Pero, los servomotores no son en realidad una clase específica de motor, sino una combina-
ción de piezas específicas, que incluyen un motor de corriente continua o alterna, y son ade-
cuados para su uso en un sistema de control de bucle cerrado.

Por lo que una definición más exacta de un servomotor sería la de un servomecanismo de bu -


cle cerrado que utiliza la retroalimentación de posición para controlar su velocidad de rotación
y posición. La señal de control es la entrada, ya sea analógica o digital, que representa el co-
mando de posición final para el eje.

Por otro lado, el codificador o encoder sirve como sensor, proporcionando retroalimentación
de velocidad y posición. En la mayoría de los casos, sólo se informa de la posición. La posi-
ción final se informa al controlador y se compara con la entrada de posición inicial, y luego, si
hay una discrepancia, se mueve el motor para llegar a la posición correcta micropaso
ARDUINO

Arduino es una plataforma de creación de electrónica de código abierto, la cual está basada
en hardware y software libre, flexible y fácil de utilizar para los creadores y desarrolladores.
Esta plataforma permite crear diferentes tipos de microordenadores de una sola placa a los
que la comunidad de creadores puede darles diferentes tipos de uso.

Para poder entender este concepto, primero vas a tener que entender los conceptos de har-
dware libre y el software libre. El hardware libre son los dispositivos cuyas especificaciones y
diagramas son de acceso público, de manera que cualquiera puede replicarlos. Esto quiere
decir que Arduino ofrece las bases para que cualquier otra persona o empresa pueda crear
sus propias placas, pudiendo ser diferentes entre ellas pero igualmente funcionales al partir de
la misma base.

El software libre son los programas informáticos cuyo código es accesible por cualquiera para
que quien quiera pueda utilizarlo y modificarlo. Arduino ofrece la plataforma Arduino IDE (En-
torno de Desarrollo Integrado), que es un entorno de programación con el que cualquiera pue-
de crear aplicaciones para las placas Arduino, de manera que se les puede dar todo tipo de
utilidades.
MATRIZ DE TRANSFORMACIÓN

Es una matriz de dimensión 4x4 que representa la transformación de un vector de un sistema


de coordenadas a otro (Castejón, s.f.). En el cálculo del modelo cinemático directo de un bra-
zo robótico, cada articulación tiene su propia matriz de transformación que relaciona su siste-
ma de coordenadas con el sistema de coordenadas de la articulación anterior.

MODELO CINEMÁTICO

El modelo cinemático es una metodología que describe las relaciones estáticas entre las po-
siciones de las articulaciones de un robot, las coordenadas cartesianas y la posición de su ac-
tuador final. El modelo cinemático de un robot es usado para su simulación y control. Los mo-
delos tienen como base las transformaciones matriciales compuestas de sistemas de referen-
cia y resultan más complejos a medida que se agregan grados de libertad al robot. El modelo
cinemático directo de un robot es el que permite conocer la posición y orientación final del ro-
bot en función de las variables de las articulaciones. El modelo cinemático inverso es el que
permite calcular las variables articulares del robot en función de la posición y orientación del
efector final deseadas. El modelo cinemático inverso involucra la resolución de sistemas de
ecuaciones no lineales que involucran senos y cosenos. Al momento de resolver este sistema
de ecuaciones se debe primero determinar si existen soluciones dentro del espacio de trabajo
del robot. Existen algunos casos en los que existe más de una solución aceptable
IMPRESIONES 3D
La impresión 3D es un avance muy importante de tecnologías de fabricación por adición don-
de un objeto tridimensional es creado mediante la superposición de capas sucesivas de mate-
rial.12 Las impresoras 3D son por lo general más rápidas, más baratas y más fáciles de usar
que otras tecnologías de fabricación por adición, aunque como cualquier proceso industrial,
están sometidas a un compromiso entre su precio de adquisición y la tolerancia en las medi-
das de los objetos producidos. Las impresoras 3D ofrecen a los desarrolladores de un produc-
to la capacidad para imprimir partes y montajes hechos de diferentes materiales con diferen-
tes propiedades físicas y mecánicas, a menudo con un simple proceso de ensamble. Las tec-
nologías avanzadas de impresión 3D pueden incluso ofrecer modelos que pueden servir como
prototipos de producto.
DESARROLLO DEL PROYECTO

CALCULO DE TORQUES Y POTENCIA


TORQUE DE RUEDAS MECANUM

Peso Masa Base


rueda

Fuerza

Fricción

Fuerza Normal

Valores:

PARTE PESO (kg)


4 MOTORES NEMA 1,150 kg aprox.
ARTICULOS ELECTRONICOS 0.400 kg
BASE 0.400 kg
BRAZO ROBOTICO 0.274 kg
MOTORES BRAZO 0.204 kg
TOTAL 2.450 kg

Masatotal =2.450 kg

Por el mecanismo de función de la estructura utilizará mínimamente 2 ruedas; por lo tanto la


masa de distribuirá en 2.

Masa=1.225 kg

Masa Ruedas=0.200 kg

Se usará un coeficiente de rozamiento de 0.3

Condición:

SI Fuerza> Fricción ∴ Existe movimiento


N= ( 1.225+0.200 )∗9.8

N=13.965 N

Fr=N∗μ

Fr=13.965∗0.3

Fr=4.1895 N

¿> Para que exista movimiento se debe transmitir una

F> 4.1895 N

El radio de la rueda es de 4 cm

¿> τ=4.1895 N∗0.04 m

τ =0.16758 N−m

TORQUES DEL BRAZO

Para el cálculo de una carga de 150 g, se asumirá el peso de los servomotores de 10 g para
las últimas 3 articulaciones del robot y de 50 g por motor para las articulaciones del brazo

Figura Brazo Volu- Longi- Peso [kg] Carga[k Torque


men tud en- g] g mm
[mm3] tre cen-
tros
[cm]
Base 66444 10 0,084 0,48 5,68
brazo

Brazo 1 67463 12 0,085 0,34 5,14

brazo 2 49020 9 0,062 0,28 3,1

Brazo 3 16942 2,5 0,021 0,19 0,54

Base gar- 16466 5 0,021 0,16 0,92


ras

engranaje 2561 3 0,0032 0,15 0,46


garras
SELECCIÓN DE MOTORES

MOTORES DE PARTE MÓVIL


El torque requerida para la rueda es de τ =16.76 N−cm

Se optó por el modelo 17HS4401por disponibilidad del mercado


MOTORES DE BRAZO

Figura Brazo Torque kg- Modelo Figura Mo- Tor-


cm Servomotor tor que
Nomi-
nal kg-
cm

Base bra- 9.4


5,6799792 MG996R
zo

5,1433684 9.4
Brazo 1 MG996R
8
3,0864242
brazo 2 MG996R 9.4
7

0,5392015
Brazo 3 SG90 2.5
8

Base gar- 0,9208214


SG90 2.5
ras 5

en-
0,4597574
granaje SG90 2.5
1
garras

DISEÑO
Se utilizó como modelo base el siguiente robot

Se implementó secciones para la posición de los motores y se personalizó el diseño para que
sea ergonómico y atractivo.
Parte de la base
Ensamblaje Completo

CÁLCULOS

ACÁ ROMAN
ELECTRÓNICA

ARDUINO MEGA 2560


Arduino Mega 2560 está diseñado para tus proyectos más ambiciosos que requieren pines
adicionales y memoria adicional. Basado en el microcontrolador AVR de 8 bits ATmega2560,
tiene 54 pines I/O digitales, 16 entradas analógicas y un espacio más grande para tus boce-
tos. Ideal para: impresión 3D, robótica CNC, compatible con la mayoría de escudos diseñados
para el Arduino Uno

DRV8825

El driver DRV8825 permite controlar motores motores paso a paso bipolares de hasta 2.5A.
Basado en el chip DRV88225 de Texas Instruments, es una mejora o evolución comparado al
chip A4988. Ampliamente utilizado con placas de control de impresoras 3D y Máquinas CNC
Open Source, como: RAMPS y CNC Shield. El Driver DRV8825 es pin-compatible con el Dri-
ver A4988, lo que significa que puede usarse como reemplazo directo de mejor rendimiento.

Permite regular la corriente máxima de salida por medio de un potenciómetro. Además posee
seis resoluciones diferentes de microstepping (máx. 1/32). Trabaja con voltajes de alimenta-
ción entre 8.2V a 45V, puede suministrar 1.5A por bobina sin usar ventilación forzada o un di -
sipador y soporta picos de corriente de hasta 2.5A. Para manejar el driver solo son necesarios
2 pines, uno para la dirección de giro (DIR) y otro para dar el paso (STEP). El pin Enable debe
estar conectado a Tierra (GND) para que el motor funcione. El microstepping se configura con
los pines MS1, MS2 y MS3 de acuerdo a la tabla del fabricante.
MÓDULO BLUETOOTH HC-05

El módulo Bluetooth HC-05 nos permite conectar nuestros proyectos con Arduino a un smar-
tphone, celular o PC de forma inalámbrica (Bluetooth), con la facilidad de operación de un
puerto serial. La transmisión se realiza totalmente en forma transparente al programador, por
lo que se conecta en forma directa a los pines seriales de nuestro microcontrolador preferido
(respetando los niveles de voltaje, ya que el módulo se alimenta con 3.3V). Todos los paráme-
tros del módulo se pueden configurar mediante comandos AT. La placa también incluye un re-
gulador de 3.3V, que permite alimentar el módulo con un voltaje entre 3.6V - 6V. Este módulo
es el complemento ideal para nuestros proyectos de robótica, domótica y control remoto con
Arduino, PIC, Raspberry PI, ESP8266, ESP32, STM32, etc.
DISPOSICIÓN DE LAS PIEZAS

NEMA 17 IZQ -
NEMA 17 IZQ +

SERVO SG966 SERVO SG966 SERVO SG966

SERVO
SG 90
Bateria 12 v

SERVO
SG 90

SERVO
SG 90

NEMA 17
DERA HC-05 NEMA 17 DER-
DIAGRAMA PCB
CÓDIGO DE ARDUINO
#include <SoftwareSerial.h>
#include <AccelStepper.h>
#include <Servo.h>

Servo servo01;
Servo servo02;
Servo servo03;
Servo servo04;
Servo servo05;
Servo servo06;

AccelStepper LeftBackWheel(1, 42, 43);


AccelStepper LeftFrontWheel(1, 40, 41);
AccelStepper RightBackWheel(1, 44, 45);
AccelStepper RightFrontWheel(1, 46, 47);

int wheelSpeed = 1500;

int lbw[50], lfw[50], rbw[50], rfw[50]; //

//DECLARACION DE VARIABLES PARA LA POSICION INICIAL


int servo1Pos, servo2Pos, servo3Pos, servo4Pos, servo5Pos, servo6Pos;
// DECLARACION DE VARIABLES PARA LA POSICIÓN ANTERIOR
int servo1PPos, servo2PPos, servo3PPos, servo4PPos, servo5PPos, servo6-
PPos;
int speedDelay = 20;
int index = 0;
int dataIn;
int m = 0;

void setup() {
//VALORES INICIALES DE LOS MOTORES PASO A PASO
LeftFrontWheel.setMaxSpeed(3000);
LeftBackWheel.setMaxSpeed(3000);
RightFrontWheel.setMaxSpeed(3000);
RightBackWheel.setMaxSpeed(3000);
servo01.attach(5);
servo02.attach(6);
servo03.attach(7);
servo04.attach(8);
servo05.attach(9);
servo06.attach(10);
Bluetooth.begin(38400);
Bluetooth.setTimeout(5);
delay(20);
Serial.begin(38400);
//POSICION INICIAL DE NUESTRO ROBOT

servo1PPos = 90;
servo01.write(servo1PPos);
servo2PPos = 100;
servo02.write(servo2PPos);
servo3PPos = 120;
servo03.write(servo3PPos);
servo4PPos = 95;
servo04.write(servo4PPos);
servo5PPos = 60;
servo05.write(servo5PPos);
servo6PPos = 110;
servo06.write(servo6PPos);
}

if (Bluetooth.available() > 0) {
dataIn = Bluetooth.read();

//CLIKCS OBTENIDOS EN LA PANTALLA DEL CELULAR

void loop() {
// CODIGO PARA IR REVISANDO LOS DATOS OBTENIDOS
if (Bluetooth.available() > 0) {
// LEER LOS DATOS
dataIn = Bluetooth.read();

if (dataIn == 0) {
m = 0;
}
if (dataIn == 1) {
m = 1;
}
if (dataIn == 2) {
m = 2;
}
if (dataIn == 3) {
m = 3;
}
if (dataIn == 4) {
m = 4;
}
if (dataIn == 5) {
m = 5;
}
if (dataIn == 6) {
m = 6;
}
if (dataIn == 7) {
m = 7;
}
if (dataIn == 8) {
m = 8;
}
if (dataIn == 9) {
m = 9;
}
if (dataIn == 10) {
m = 10;
}
if (dataIn == 11) {
m = 11;
}
if (dataIn == 12) {
m = 12;
}
if (dataIn == 14) {
m = 14;
}
if (dataIn == 16) {
m = 16;
}
if (dataIn == 17) {
m = 17;
}
if (dataIn == 18) {
m = 18;
}
if (dataIn == 19) {
m = 19;
}
if (dataIn == 20) {
m = 20;
}
if (dataIn == 21) {
m = 21;
}
if (dataIn == 22) {
m = 22;
}
if (dataIn == 23) {
m = 23;
}
if (dataIn == 24) {
m = 24;
}
if (dataIn == 25) {
m = 25;
}
if (dataIn == 26) {
m = 26;
}
if (dataIn == 27) {
m = 27;
}

//MOVIMIENTO DE LA BASE DE RUEDAS


if (m == 4) {
moveSidewaysLeft();
}
if (m == 5) {
moveSidewaysRight();
}
if (m == 2) {
moveForward();
}
if (m == 7) {
moveBackward();
}
if (m == 3) {
moveRightForward();
}
if (m == 1) {
moveLeftForward();
}
if (m == 8) {
moveRightBackward();
}
if (m == 6) {
moveLeftBackward();
}
if (m == 9) {
rotateLeft();
}
if (m == 10) {
rotateRight();
}

if (m == 0) {
stopMoving();
}
//SELECCIONAMOS UNA VELODICAD PARA LAS RUEDAS

if (dataIn > 30 & dataIn < 100) {


wheelSpeed = dataIn * 20;
}
//PROGRAMA PARA MOVER EL BRAZO DE NUESTRO ROBOT MOVIL

//PARA MOVER EL SERVO 1 EN DIRECION POSITIVA

while (m == 16) {
if (Bluetooth.available() > 0) {
m = Bluetooth.read();
}
servo01.write(servo1PPos);
servo1PPos++;
delay(speedDelay);
}
//PARA MOVER EL SERVO 1 EN DIRECCION NEGATIVA

while (m == 17) {
if (Bluetooth.available() > 0) {
m = Bluetooth.read();
}
servo01.write(servo1PPos);
servo1PPos--;
delay(speedDelay);
}
//PARA MOVER EL SERVO 2 EN DIRECION POSITIVA

while (m == 19) {
if (Bluetooth.available() > 0) {
m = Bluetooth.read();
}
servo02.write(servo2PPos);
servo2PPos++;
delay(speedDelay);
}
//PARA MOVER EL SERVO 2 EN DIRECCION NEGATIVA

while (m == 18) {
if (Bluetooth.available() > 0) {
m = Bluetooth.read();
}
servo02.write(servo2PPos);
servo2PPos--;
delay(speedDelay);
}

//PARA MOVER EL SERVO 3 EN DIRECION POSITIVA

while (m == 20) {
if (Bluetooth.available() > 0) {
m = Bluetooth.read();
}
servo03.write(servo3PPos);
servo3PPos++;
delay(speedDelay);
}
//PARA MOVER EL SERVO 3 EN DIRECCION NEGATIVA

while (m == 21) {
if (Bluetooth.available() > 0) {
m = Bluetooth.read();
}
servo03.write(servo3PPos);
servo3PPos--;
delay(speedDelay);
}
//PARA MOVER EL SERVO 4 EN DIRECION POSITIVA

while (m == 23) {
if (Bluetooth.available() > 0) {
m = Bluetooth.read();
}
servo04.write(servo4PPos);
servo4PPos++;
delay(speedDelay);
}
//PARA MOVER EL SERVO 4 EN DIRECCION NEGATIVA

while (m == 22) {
if (Bluetooth.available() > 0) {
m = Bluetooth.read();
}
servo04.write(servo4PPos);
servo4PPos--;
delay(speedDelay);
}
//PARA MOVER EL SERVO 5 EN DIRECION POSITIVA

while (m == 25) {
if (Bluetooth.available() > 0) {
m = Bluetooth.read();
}
servo05.write(servo5PPos);
servo5PPos++;
delay(speedDelay);
}

//PARA MOVER EL SERVO 5 EN DIRECCION NEGATIVA

while (m == 24) {
if (Bluetooth.available() > 0) {
m = Bluetooth.read();
}
servo05.write(servo5PPos);
servo5PPos--;
delay(speedDelay);
}

//PARA MOVER EL SERVO 6 EN DIRECION POSITIVA

while (m == 26) {
if (Bluetooth.available() > 0) {
m = Bluetooth.read();
}
servo06.write(servo6PPos);
servo6PPos++;
delay(speedDelay);
}
//PARA MOVER EL SERVO 6 EN DIRECCION NEGATIVA

while (m == 27) {
if (Bluetooth.available() > 0) {
m = Bluetooth.read();
}
servo06.write(servo6PPos);
servo6PPos--;
delay(speedDelay);
}
//MOVIMIENTO DE LAS RUEDAS

//MOVIMIENTO PARA AVANZAR

void moveForward() {
LeftFrontWheel.setSpeed(wheelSpeed);
LeftBackWheel.setSpeed(wheelSpeed);
RightFrontWheel.setSpeed(wheelSpeed);
RightBackWheel.setSpeed(wheelSpeed);
}
// MOVIMIENTO PARA RETROCEDER
void moveBackward() {
LeftFrontWheel.setSpeed(-wheelSpeed);
LeftBackWheel.setSpeed(-wheelSpeed);
RightFrontWheel.setSpeed(-wheelSpeed);
RightBackWheel.setSpeed(-wheelSpeed);
}
// MOVIMIENTO PARA LATERAL DERECHO
void moveSidewaysRight() {
LeftFrontWheel.setSpeed(wheelSpeed);
LeftBackWheel.setSpeed(-wheelSpeed);
RightFrontWheel.setSpeed(-wheelSpeed);
RightBackWheel.setSpeed(wheelSpeed);
}
// MOVIMIENTO PARA LATERAL IZQUIERDO
void moveSidewaysLeft() {
LeftFrontWheel.setSpeed(-wheelSpeed);
LeftBackWheel.setSpeed(wheelSpeed);
RightFrontWheel.setSpeed(wheelSpeed);
RightBackWheel.setSpeed(-wheelSpeed);
}
// MOVIMIENTO PARA GIRAR DERECHA
void rotateLeft() {
LeftFrontWheel.setSpeed(-wheelSpeed);
LeftBackWheel.setSpeed(-wheelSpeed);
RightFrontWheel.setSpeed(wheelSpeed);
RightBackWheel.setSpeed(wheelSpeed);
}
// MOVIMIENTO PARA GIRAR A LA IZQUIERDA
void rotateRight() {
LeftFrontWheel.setSpeed(wheelSpeed);
LeftBackWheel.setSpeed(wheelSpeed);
RightFrontWheel.setSpeed(-wheelSpeed);
RightBackWheel.setSpeed(-wheelSpeed);
}
// MOVIMIENTO PARA LA DERECHA ADELANTE
void moveRightForward() {
LeftFrontWheel.setSpeed(wheelSpeed);
LeftBackWheel.setSpeed(0);
RightFrontWheel.setSpeed(0);
RightBackWheel.setSpeed(wheelSpeed);
}
// MOVIMIENTO PARA LA DERECHA EN RETROCESO
void moveRightBackward() {
LeftFrontWheel.setSpeed(0);
LeftBackWheel.setSpeed(-wheelSpeed);
RightFrontWheel.setSpeed(-wheelSpeed);
RightBackWheel.setSpeed(0);
}
// MOVIMIENTO PARA LA IZQUIERDA ADELANTE
void moveLeftForward() {
LeftFrontWheel.setSpeed(0);
LeftBackWheel.setSpeed(wheelSpeed);
RightFrontWheel.setSpeed(wheelSpeed);
RightBackWheel.setSpeed(0);
}
// MOVIMIENTO PARA LA IZQUIERDA EN RETROCESO
void moveLeftBackward() {
LeftFrontWheel.setSpeed(-wheelSpeed);
LeftBackWheel.setSpeed(0);
RightFrontWheel.setSpeed(0);
RightBackWheel.setSpeed(-wheelSpeed);
}
// MOVIMIENTO PARA DEJAR DE MOVERSE
void stopMoving() {
LeftFrontWheel.setSpeed(0);
LeftBackWheel.setSpeed(0);
RightFrontWheel.setSpeed(0);
RightBackWheel.setSpeed(0);
}

APK
PRUEBAS Y EVALUACIONES

 Se probó el movimiento del robot y funcionó de manera adecuada en todas


las direcciones esperadas.

 Al realizar pruebas de carga el robot pudo cargar sin problema piezas de no


más de 78 gr

 Acá se probó cargando un destornillador de 140 gr y el brazo no pudo car-


garlo.
 Por otro lado la distancia máxima del robot fue alrededor de los 12 m, pero
al paso de cualquier obstrucción se producían errores conforme se distan-
ciaba más

CONCLUSIONES Y RECOMENDACIONES

CONCLUSIONES

 Los cálculos realizados fueron satisfactorios y el proyecto se ejecutó de ma-


nera satisfactoria.
 El armado y desarrollo del software es totalmente funcional y la APK es
compatible con cualquier dispositivo Android.
 La capacidad de carga del robot es bastante limitada, y sobrecargarlo pue-
de causar descalibración.
 El movimiento es funcional exclusivamente en superficies planas. Cualquier
otro tipo de superficie regularmente rugosa cuasa problemas en el funciona-
miento.

RECOMENDACIONES

 Si se requiere mayo tracción en el brazo se puede optar por servomotores


más potentes el diseño del brazo es flexible y los motores de las ruedas tie-
nen capacidad para 2.5 veces

También podría gustarte