Vous êtes sur la page 1sur 19

SIMULADOR 3D PARA BRAZO ROBOT DE 6 GRADOS DE LIBERTAD

Resumen:

Se presenta un simulador en 3D desarrollado para el control de un brazo robot


angular que contiene seis grados de libertad. El simulador tiene la finalidad de
apoyar el aprendizaje de estudiantes que curse una carrera técnica o profesional
con rama de ingeniería. La interfaz gráfica del simulador fue implementada en
MatLab. El modelo en 3D del brazo robótico fue elaborado mediante el toolbox
de realidad virtual de MatLab, empleando V-Realm Builder. La interfaz gráfica
incorpora la cinemática directa e inversa para el posicionamiento del brazo robot.
El simulador puede operar solo o conectarse lo que logra la competencia en el
manejo de sistemas muy parecidos a los que encontrarán en el entorno laboral.

Palabras clave: Brazo robot, simulador 3D, MATLAB, realidad virtual, Toolbox.

Introducción

Mediante el siguiente trabajo se logrará demostrar el aprendizaje obtenido del


curso Análisis dinámico de mecanismos mediante un mini proyecto llamado
“Brazo robótico con seis grados de libertad” en el cuál se estudiará el diagrama
cinemático, cálculos de movilidad, el análisis de posición, análisis de velocidad,
análisis de aceleración todo esto usando las 3 dimensiones (3D) para que de tal
manera se deje un conocimiento básico del trabajo a realizar a próximos
estudiantes de la misma carrera u otra rama de ingeniería. Ya sea todo
complementado con sus respectivos cálculos y así mismo el respectivo
modelamiento en físico del mini proyecto facilitándonos con el uso de programas
para los cálculos y planos lo que posteriormente nos ayudará en el ámbito laboral
teniendo nuevas capacidades, conocimientos y competencias.

Por lo que en este documento se presenta un simulador virtual de un brazo


robótico antropomórfico de seis grados de libertad, de diseño propio para dar a
conocer a los estudiantes el aprendizaje básico de temas de robótica ya sean
teóricos y prácticos.
Brazo Robot

En la carrera de Mantenimiento de maquinaria pesada en el instituto de


educación superior privado se realizó el trabajo de modelamiento y construcción
del brazo robótico de seis grados de libertad. El diseño del brazo robótico es
realizado con el fin de ofrecer el aprendizaje en temas básicos de robótica. En la
tabla 1 se muestran las dimensiones de los diferentes elementos que conforman
este brazo robótico.

Elemento Longitud Ancho Espesor


Brazo 12cm 4.5cm 4mm
Antebrazo 12cm 4.5cm 4mm
Garra 6cm 4.5cm 4mm
Tabla 1. Geometría de los elementos del brazo robótico

La construcción y el control del brazo robótico fueron realizados mediante la ayuda de


docentes los que complementaron nuestros conocimientos así mismo facilitaron con
máquinas para poder realizar el cortado del material utilizado el cual fue aluminio de
4mm de espesor, principalmente por ser fácil de maquinar y ligero, teniendo una
densidad de 2700 Kg/m3. La base del brazo robótico será del mismo material con la
diferencia de que el espesor será de 10mm, con dimensiones de 20cm x 20cm.

En la figura 1 se presenta una fotografía de cómo será el brazo una vez construido en
su totalidad, para ello su control empleará una tarjeta electrónica de diseño propio, la
cual será controlada mediante un placa de arduinos. Arduinos es un software
programable que se encarga de sensar y controlar objetos en el mundo real basado en
electrónica y programación de arduinos. Para el funcionamiento de este tendrá que ser
conectada a una pc.
Imagen 1. Modelo de brazo robótico

El brazo robot empleará 6 servomotores para poder brindar el respectivo movimiento a


la base, ante brazo, brazo, muñeca y pinza. Los servomotores tienen un rango de 180°
y otros de 260°. En las siguientes imágenes se muestran tanto el modelo como las
características técnicas de los servomotores empleados.

Imagen 2. Modelo de Servomotor


Imagen 3. Características de servomotores a usar

Cinemática directa

Es necesario conocer el modelo cinemático del brazo robótico para poder desarrollar la
interfaz gráfica del simulador en 3D, para que este describa de manera fiel en todo
momento los movimientos y el posicionamiento espacial del extremo final del brazo
robot.

En esta sección se presenta el análisis cinemático directo del brazo robot mediante el
cual al introducir los valores de los ángulos de la base, brazo, antebrazo y muñeca se
logra obtener la posición espacial del extremo final del brazo robot.

Para esto se usó el conocimiento adquirido del curso Análisis dinámico de Mecanismo
y gracias al docente Emerson Arroyo se logró culminar todos los cálculos del brazo robot
de 6 grados de libertad.
HOJA DE CÁLCULOS

A continuación se mostrarán los diferentes cálculos realizados en nuestro brazo robótico


de 6 grados de libertad empezando con el cálculo de posición, luego los cálculos de
velocidad y por último los cálculos de aceleración. Todos los cálculos se realizaron en
matrices por lo que nuestro brazo tiene movimiento ya sea en el eje x, y y z ayudándonos
con el software de Matlab lo que facilito el avance en los cálculos ya que en el programa
solo era necesario introducir un despeje de ecuaciones en puras variables lo que el
programa analizaba y nos daba el resultado que se esperaba ya que cada parte del
brazo se movía en un respectivo ángulo.

● Cálculo de posición:
Ө4

J4
Eslabón 4
Ө3
J3

Eslabón 3

J2

Eslabón 2
Ө2
J1

Bancada

Eslabón 1

T=”AN”

T=A6=0A1.1A2.2A3.3A4.4A5.5A6
i-1
Ai=R O T z(Өi)T(0,0,di)T(ai,0,0)R o Tx (αi)

𝐴𝑖 − 1𝐴𝑖 =
[𝐶Ө𝑖 𝑆Ө𝐼 0 0 𝑆Ө𝑖 0 𝐶Ө𝑖 0 0 1 0 0 1 0 0 1 ][0 0 00 00 10 0 1 0 𝑑𝑖 1 0 0 1 ][1 0 0 𝑑𝑖 0 0 1 0
…[1 0 0 0 0 0 𝐶𝛼𝑖 𝑆𝛼𝑖 −𝑆𝛼𝑖 𝐶𝛼𝑖 0 0 1 0 01]

𝑖 − 1𝐴𝑖
= [𝐶Ө𝑖 −𝑆Ө𝐼 𝐶𝛼𝑖 𝑆Ө𝐼 𝑆𝛼𝑖 𝐶Ө𝑖 𝑎𝑖 𝑆Ө𝑖 0 𝐶Ө𝑖 𝐶𝛼𝑖 𝑆𝛼𝑖 −𝐶Ө𝑖 𝑆𝛼𝑖 𝐶𝛼𝑖 0 𝑑𝑖 0 0 01]

Para “1”
0𝐴1 = [𝐶Ө1 0 −𝑆Ө1 0 𝑆Ө1 0 0 − 1 𝐶Ө1 0 0 𝑑1 0 0 01]

Para “2”

1𝐴2 = [𝐶Ө2 −𝑆Ө2 0 𝐶Ө2 𝑎2 𝑆Ө2 0 𝐶Ө2 0 0 1 𝑆Ө2 𝑎2 0 0 0 01]

𝐴1 = [𝑐𝑜𝑠𝜃1 0 −𝑠𝑒𝑛𝜃1 0 𝑠𝑒𝑛𝜃2 0 0 − 1 𝑐𝑜𝑠𝜃1 0 0 𝑑1 0 0 01]

𝐴2 = [𝑐𝑜𝑠𝜃1 −𝑠𝑒𝑛𝜃1 0 𝑐𝑜𝑠𝜃2 ∗ 𝑎2 𝑠𝑒𝑛𝜃2 0 𝑐𝑜𝑠𝜃1 0 0 1 𝑠𝑒𝑛𝜃2 ∗


𝑎2 0 0 0 01]
𝐴1 ∗ 𝐴2 = [𝑐𝑜𝑠𝜃1 ∗ 𝑐𝑜𝑠𝜃2 −𝑐𝑜𝑠𝜃1 ∗ 𝑠𝑒𝑛𝜃2 −𝑠𝑒𝑛𝜃1 𝑐𝑜𝑠𝜃1 ∗ 𝑐𝑜𝑠𝜃2 ∗ 𝑎2 𝑠𝑒𝑛𝜃2
∗ 𝑠𝑒𝑛𝜃1 −𝑠𝑒𝑛𝜃2 −𝑠𝑒𝑛𝜃1 ∗ 𝑠𝑒𝑛𝜃2
− 𝑐𝑜𝑠𝜃2 𝑐𝑜𝑠𝜃1 0 𝑠𝑒𝑛𝜃1 𝑐𝑜𝑠𝜃2 ∗ 𝑎2 −𝑠𝑒𝑛𝜃2 ∗ 𝑎2
+ 𝑑1 0 0 01]

𝐴3 = [𝑐𝑜𝑠𝜃3 −𝑠𝑒𝑛𝜃3 0 𝑐𝑜𝑠𝜃3 ∗ 𝑎3 𝑠𝑒𝑛𝜃3 0 𝑐𝑜𝑠𝜃3 0 0 1 𝑠𝑒𝑛𝜃3 ∗ 𝑎3 0 0 0 01]

𝐴4 = [𝑐𝑜𝑠𝜃4 −𝑠𝑒𝑛𝜃4 0 𝑐𝑜𝑠𝜃4 ∗ 𝑎4 𝑠𝑒𝑛𝜃4 0 𝑐𝑜𝑠𝜃4 0 0 1 𝑠𝑒𝑛𝜃4 ∗ 𝑎4 0 0 0 01]

𝐴5 = [𝑐𝑜𝑠𝜃5 0 𝑠𝑒𝑛𝜃5 0 𝑠𝑒𝑛𝜃5 0 0 1 −𝑐𝑜𝑠𝜃5 0 0 𝑑5 0 0 01]

𝐴6 = [𝑐𝑜𝑠𝜃6 −𝑠𝑒𝑛𝜃6 0 𝑐𝑜𝑠𝜃6 ∗ 𝑎6 𝑠𝑒𝑛𝜃6 0 𝑐𝑜𝑠𝜃6 0 0 1 𝑠𝑒𝑛𝜃6 ∗ 𝑎6 0 0 0 01]

𝐴1 ∗ 𝐴2
= [𝑘11 𝐾12 𝐾13 𝐾14 𝐾21 𝐾31 𝐾22 𝐾32 𝐾23 𝐾33 𝐾24 𝐾34 𝐾41 𝐾42 𝐾43 𝐾44 ]

𝐾11 = 𝑐𝑜𝑠𝜃1 ∗ 𝑐𝑜𝑠𝜃2 + 0 + 0 + 0

𝐾11 = 𝑐𝑜𝑠𝜃1 ∗ 𝑐𝑜𝑠𝜃2

𝐾12 = −𝑐𝑜𝑠𝜃1 ∗ 𝑐𝑜𝑠𝜃2 + 0 + 0 + 0

𝐾12 = −𝑐𝑜𝑠𝜃1 ∗ 𝑐𝑜𝑠𝜃2

𝐾13 = 0 + 0 − 𝑠𝑒𝑛𝜃1 + 0

𝐾13 = −𝑠𝑒𝑛𝜃1

𝐾14 = 𝑐𝑜𝑠𝜃1 ∗ 𝑐𝑜𝑠𝜃2 ∗ 𝑎2 + 0 + 0 + 0

𝐾14 = 𝑐𝑜𝑠𝜃1 ∗ 𝑐𝑜𝑠𝜃2 ∗ 𝑎2

𝐾21 = 𝑠𝑒𝑛𝜃1 ∗ 𝑐𝑜𝑠𝜃2

𝐾22 = −𝑠𝑒𝑛𝜃1 ∗ 𝑠𝑒𝑛𝜃2


𝐾23 = 𝑐𝑜𝑠𝜃1

𝐾24 = 𝑠𝑒𝑛𝜃1 ∗ 𝑐𝑜𝑠𝜃2 ∗ 𝑎2

𝐾31 = −𝑐𝑜𝑠𝜃2

𝐾33 = 0

𝐾34 = −𝑠𝑒𝑛𝜃2 ∗ 𝑎2 + 𝑑1

𝐾41 = 0

𝐾42 = 0

𝐾43 = 0

𝐾44 = 1

0𝐴1 . 1𝐴2 . 2𝐴3 = (𝐿11 𝐿12 𝐿13 𝐿14 𝐿21 𝐿31 𝐿41 𝐿22 𝐿23 𝐿24 𝐿32 𝐿33 𝐿34 𝐿42 𝐿43 𝐿44 )

𝐿11 =𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃1 ×𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃2 ×𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃3 −𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃1 ×𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃2 ×𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃2 ×
𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃3

𝐿12 = − 𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃1 ×𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃2 ×𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃3 −𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃1 ×𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃2 ×𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃3

𝐿13 = − 𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃1

𝐿14 =𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃1 ×𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃2 ×𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃3 × 𝑎3 −𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃1 ×𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃2 ×𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃3 × 𝑎3
+𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃1 ×𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃2 × 𝑎2

𝐿21 =𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃1 ×𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃2 ×𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃3 −𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃1 ×𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃2 ×𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃3

𝐿22 = − 𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃1 ×𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃2 ×𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃3 −𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃1 ×𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃2 ×𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃3

𝐿23 =𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃1

𝐿24 =𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃1 ×𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃2 ×𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃3 × 𝑎3 −𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃1 ×𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃2 ×𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃3 × 𝑎3
+𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃1 ×𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃2 × 𝑎2

𝐿31 = − 𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃2 ×𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃3 −𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃2 ×𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃3

𝐿32 =𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃2 ×𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃3 −𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃2 ×𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃3

𝐿33 = 0

𝐿34 = − 𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃2 ×𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃3 × 𝑎3 −𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃2 ×𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃3 × 𝑎3 −𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃2 × 𝑎2
+ 𝑑1
𝐿41 = 0

𝐿42 = 0

𝐿43 = 0

𝐿44 = 1

0𝐴1 . 1𝐴2 . 2𝐴3 . 3𝐴4


= (𝑀11 𝑀12 𝑀13 𝑀14 𝑀21 𝑀31 𝑀41 𝑀22 𝑀23 𝑀24 𝑀32 𝑀33 𝑀34 𝑀42 𝑀43 𝑀44 )

𝑀11 = (𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃1 ×𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃2 ×𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃3 − 𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃1 ×𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃2 ×
𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃3 )(𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃4 ) + (𝜃1 ×𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃2 ×𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃3 −𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃1 ×
𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃2 ×𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃3 )(𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃4 )

𝑀12 = (𝐿11 ) × (− 𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃4 ) + (𝐿12 ) × (− 𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃4 )

𝑀13 = 𝐿13

𝑀14 = (𝐿11 ) × (𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃4 × 𝑎4 ) + (𝐿12 ) × (𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃4 × 𝑎4 ) + 𝐿14

𝑀21 = (𝐿21 ) × (𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃4 ) + (𝐿22 ) × (𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃4 )

𝑀22 = (𝐿21 ) × (− 𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃4 ) + (𝐿22 ) × (𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃4 )

𝑀23 = 𝐿23

𝑀24 = (𝐿21 ) × (𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃4 × 𝑎4 ) + (𝐿22 ) × (𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃4 × 𝑎4 ) + 𝐿24

𝑀31 = (𝐿31 ) × (𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃4 ) + (𝐿32 ) × (𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃4 )

𝑀32 = (𝐿31 ) × (− 𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃4 ) + (𝐿32 ) × (𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃4 )

𝑀33 = 𝐿33
𝑀34 = (𝐿31 ) × (𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃4 × 𝑎4 ) + (𝐿32 ) × (𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃4 × 𝑎4 ) + 𝐿34

𝑀41 = (𝐿41 ) × (𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃4 ) + (𝐿42 ) × (𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃4 )

𝑀42 = (𝐿41 ) × (− 𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃4 ) + (𝐿42 ) × (𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃4 )

𝑀43 = 𝐿43

𝑀44 = (𝐿41 ) × (𝑐𝑜𝑠 𝑐𝑜𝑠 𝜃4 × 𝑎4 ) + (𝐿42 ) × (𝑠𝑖𝑛 𝑠𝑖𝑛 𝜃4 × 𝑎4 ) + 𝐿44

0𝐴1 . 1𝐴2 . 2𝐴3 . 3𝐴4 . 4𝐴5 = 𝑁11 𝑁12 𝑁13 𝑁14

𝑁21 𝑁22 𝑁23 𝑁24

𝑁31 𝑁32 𝑁33 𝑁34

𝑁41 𝑁42 𝑁43 𝑁44

𝑁11 = (𝑀11 )(𝐶𝜃5 ) + (𝑀13 )(𝑆𝜃5 )

𝑁12 = 𝑀13

𝑁13 = (𝑀11 )(𝑆𝜃5 ) + (𝑀12 )(−𝐶𝜃5 )

𝑁14 = (𝑀13 )(𝑑5 ) + (𝑀14 )(1)

𝑁21 = (𝑀21 )(𝐶𝜃5 ) + (𝑀21 )(𝑆𝜃5 )

𝑁22 = 𝑀23

𝑀23 = (𝑀21 )(𝑆𝜃5 ) + (𝑀22 )(−𝐶𝜃5 )

𝑁24 = (𝑀23 )(𝑑5 ) + (𝑀24 )

𝑁31 = (𝐶𝜃5 )(𝑀31 ) + (𝑀32 )(𝑆𝜃5 )

𝑁32 = 𝑀33
𝑀33 = (𝑀31 )(𝑆𝜃5 ) + (𝑀32 )(−𝐶𝜃5 )

𝑀34 = (𝑀33 )(𝑑5 ) + (𝑀34 )

𝑁41 = (𝑀41 )(𝐶𝜃5 ) + (𝑀42 )(𝑆𝜃5 )

𝑁42 = 𝑀45

𝑀43 = (𝑀41 )(𝑆𝜃5 ) + (𝑀42 )(−𝐶𝜃5 )

𝑀44 = (𝑀43 )(𝑑5 ) + (𝑀44 )

0𝐴1 . 1𝐴2 . 2𝐴3 . 3𝐴4 . 4𝐴5 . 5𝐴6 = 𝑂11 𝑂12 𝑂13 𝑂14

𝑂21 𝑂22 𝑂23 𝑂24

𝑂31 𝑂32 𝑂33 𝑂34

𝑂41 𝑂42 𝑂43 𝑂44

𝑋𝑂 = 𝑂14
𝑂11 = (𝑁11 )(𝐶𝜃6 ) + (𝑁12 )(𝑆𝜃6 )
𝑌𝑂 = 𝑂24
𝑂12 = (𝑁11 )(−𝑆𝜃6 ) + (𝑁12 )(𝐶𝜃6 )
𝑍𝑂 = 𝑂34

𝑂13 = 𝑁13

𝑂14 = (𝑁11 )(𝐶𝜃6 . 𝑎6 ) + (𝑁12 )(𝑆𝜃6 . 𝑎6 ) + 𝑁14

𝑂21 = (𝑁11 )(𝐶𝜃6 ) + (𝑁22 )(𝑆𝜃6 )

𝑂22 = (𝑁21 )(−𝑆𝜃6 ) + (𝑁22 )(𝐶𝜃6 )

𝑂23 = 𝑁23
𝑂24 = (𝑁21 )(𝐶𝜃6 . 𝑎6 ) + (𝑁22 )(𝑆𝜃6 . 𝑎6 ) + 𝑁24

𝑂31 = (𝑁31 )(𝐶𝜃6 ) + (𝑁32 )(𝑆𝜃6 )

𝑂32 = (𝑁31 )(−𝑆𝜃6 ) + (𝑁32 )(𝐶𝜃6 )

𝑂33 = 𝑁33

𝑂34 = (𝑁31 )(𝐶𝜃6 . 𝑎6 ) + (𝑁32 )(𝑆𝜃6 . 𝑎6 ) + 𝑁34

𝑂41 = (𝑁41 )(𝐶𝜃6 ) + (𝑁42 )(𝑆𝜃6 )

𝑂42 = (𝑁41 )(−𝑆𝜃6 ) + (𝑁42 )(𝐶𝜃6 )

𝑂43 = 𝑁43

𝑂44 = (𝑁41 )(𝐶𝜃6 . 𝑎6 ) + (𝑁42 )(𝑆𝜃6 . 𝑎6 ) + 𝑁44

Parte electrónica

Arduino controlador del brazo

//

#include <Servo.h>

Servo miServo1;

const int pinPot1 = A0;

const int pinServo1 = 2;

const int pulsoMin1 = 1480;

const int pulsoMax1 = 1520;

int valor1;

int angulo1;

Servo miServo2;

const int pinPot2 = A1;

const int pinServo2 = 3;

const int pulsoMin2 = 1480;

const int pulsoMax2 = 1520;


int valor2;

int angulo2;

Servo miServo3;

const int pinPot3 = A2;

const int pinServo3 = 4;

const int pulsoMin3 = 1480;

const int pulsoMax3 = 1520;

int valor3;

int angulo3;

Servo miServo4;

const int pinPot4 = A3;

const int pinServo4 = 5;

const int pulsoMin4 = 1480;

const int pulsoMax4 = 1520;

int valor4;

int angulo4;

Servo miServo5;

const int pinPot5 = A4;

const int pinServo5 = 6;

const int pulsoMin5 = 1480;

const int pulsoMax5 = 1520;

int valor5;
int angulo5;

Servo miServo6;

const int pinPot6 = A5;

const int pinServo6 = 7;

const int pulsoMin6 = 1480;

const int pulsoMax6 = 1520;

int valor6;

int angulo6;

void setup() {

miServo1.attach(pinServo1, pulsoMin1, pulsoMax1);

miServo2.attach(pinServo2, pulsoMin2, pulsoMax2);

miServo2.attach(pinServo3, pulsoMin3, pulsoMax3);

miServo2.attach(pinServo4, pulsoMin4, pulsoMax4);

miServo2.attach(pinServo5, pulsoMin5, pulsoMax5);

miServo2.attach(pinServo6, pulsoMin6, pulsoMax6);

void loop() {

valor1 = analogRead(pinPot1);
angulo1 = map(valor1, 0, 1023, 120, 0);

miServo1.write(angulo1);

delay(20);

valor2 = analogRead(pinPot2);

angulo2 = map(valor2, 0, 1023, 120, 0);

miServo2.write(angulo2);

delay(20);

valor3 = analogRead(pinPot3);

angulo3 = map(valor3, 0, 1023, 120, 0);

miServo3.write(angulo3);

delay(20);

valor4 = analogRead(pinPot4);

angulo4 = map(valor4, 0, 1023, 120, 0);

miServo4.write(angulo4);

delay(20);

valor5 = analogRead(pinPot5);

angulo5 = map(valor5, 0, 1023, 120, 0);

miServo5.write(angulo5);

delay(20);

valor6 = analogRead(pinPot6);

angulo6 = map(valor6, 0, 1023, 120, 0);

miServo6.write(angulo6);

delay(20);

Fotos del armado

Vous aimerez peut-être aussi