Академический Документы
Профессиональный Документы
Культура Документы
ESCUELA ACADMICO
DE INGENIERA MECATRNICA
DISEO Y CONSTRUCCIN
PARA EL
INGENIERO MECA
AUTOR: Paul David lvarez Herrera
ASESOR: M. Sc. Ing.
UNIVERSIDAD NACIONAL DE TRUJILLO
FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL
DE INGENIERA MECATRNICA
DISEO Y CONSTRUCCIN DE UN BRAZO ROBOT
PARA EL TRAZADO DE DIAGRAMAS
TESIS
Para optar el Ttulo Profesional de
INGENIERO MECATRNICO
Paul David lvarez Herrera
M. Sc. Ing. Guillermo Quevedo Novoa
TRUJILLO PER
2014
UNIVERSIDAD NACIONAL DE TRUJILLO
PROFESIONAL
DE UN BRAZO ROBOT
TRAZADO DE DIAGRAMAS
TRNICO
i
A mis padres, Jorge y Merice.
ii
Resumen
El objetivo de la presente tesis fue disear y construir un brazo robot de bajo
costo apropiado para el trazado de diagramas en un plano. El brazo robot tiene dos
articulaciones rotacionales acopladas directamente a servomotores. El efector final
consiste en un mecanismo simple cuya funcin es de subir y bajar la herramienta de
trabajo que puede ser un lpiz, lapicero, etc. Se desarroll el modelo dinmico del
brazo robot mediante la formulacin de Lagrange, adems se modelaron los motores
y los sensores. Los modelos desarrollados contienen parmetros que debieron ser
hallados, los parmetros del modelo del brazo robot se hallaron mediante mtodos
simples de fsica bsica, mientras que los parmetros del modelo de los motores fue-
ron hallados mediante experimentos estmulo-respuesta, estos experimentos demos-
traron que el modelo se aproxima a la realidad.
Se desarroll un sistema de control basado en modelo, es decir, utilizando el
modelo dinmico del sistema. Por su alto costo computacional, el sistema de control
fue desarrollado en MATLAB, dejando de lado el circuito de control incluido en los
servomotores. Se us como interfaz entre la PC y el brazo robot un microcontrolador
PIC. Los integrados como el PIC, el puente H y el MAX232 simplificaron enorme-
mente la tarea de suministrar potencia, adquirir datos y comunicarse con una PC. El
brazo robot no requiri de un diseo mecnico complejo, ya que est expuesto a ba-
jos esfuerzos adems de que los servomotores tienen una estructura de gran adapta-
bilidad.
El costo del prototipo fue de S/. 150.00. El peso total del brazo robot fue de
410 g. El autor considera que el diseo y construccin de un brazo robot de bajo
costo y que d resultados satisfactorios es factible, siempre que se apliquen de mane-
ra correcta los fundamentos tericos asociados.
iii
Abstract
The thesis objective was to design and build a lowcost robot arm appropri-
ate for drawing diagrams on a plane. The robot arm has two rotational joints at-
tached directly to servomotors. The end-effector consists of a simple mechanism
whose function is to move up and down the tool that could be a pencil, pen, etc.
The dynamic model of the robot arm was developed by using the Lagrangian formu-
lation, motors and sensors were also modeled. The developed models contain param-
eters which must have been found, the robot arm model parameters were found
through simple methods of basic physics, whereas the motors model parameters were
found by stimulus-response experiments, these experiments demonstrated that the
model is close to reality.
A model-based control system was developed, i.e., using the dynamic model
of the system. Due to its high computational cost, the control system was developed
on MATLAB, leaving aside the control circuit included in the servomotors. A PIC
microcontroller was used as an interface between the PC and the robot arm. Inte-
grated circuits such as PIC, H bridge and MAX232 enormously simplified the task of
supplying power, acquire data, and communicate with a PC. The robot arm did not
require a complex mechanical design since it is exposed to low stresses, besides that
the motors have a structure of great adaptability.
The cost of the prototype was S/. 150.00 (US $54). The total weight of the
robot arm was 410 g. The author considers that the design and building of a low-
cost robot arm to produce satisfactory results is feasible, provided that the associat-
ed theoretical foundations are correctly applied.
iv
ndice general
I. Introduccin ................................................................................ 1
1.1 Realidad Problemtica .......................................................................... 1
1.2 Enunciado del problema ........................................................................ 2
1.3 Hiptesis ................................................................................................ 2
1.4 Objetivos ............................................................................................... 2
1.4.1 Objetivo general ............................................................................. 2
1.4.2 Objetivos especficos ....................................................................... 3
II. Mtodos y Materiales ................................................................. 4
2.1 Metodologa ........................................................................................... 4
2.2 Materiales .............................................................................................. 5
III. Desarrollo, Resultados y Discusin ........................................... 7
3.1 Modelamiento del Brazo Robot ........................................................... 10
3.1.1 Matrices Homogneas de Transformacin y Convencin
de DenavitHartenberg................................................................. 10
3.1.2 Modelo cinemtico ........................................................................ 15
3.1.3 Esttica ........................................................................................ 20
3.1.4 Dinmica ...................................................................................... 21
3.2 Modelamiento de Actuadores y Sensores ............................................. 27
3.2.1 Modelamiento de los motores dc .................................................. 27
3.2.2 Modelamiento del actuador del efector final ................................. 31
3.2.3 Modelamiento de los sensores ....................................................... 32
3.3 Determinacin de Parmetros ............................................................. 34
3.3.1 Determinacin de parmetros de los motores dc .......................... 35
3.3.2 Determinacin de parmetros del brazo robot .............................. 38
3.3.3 Calibracin Cinemtica ................................................................ 41
3.4 Diseo de la Parte Mecnica ............................................................... 45
3.5 Diseo de la Parte Electrnica y de Potencia ...................................... 56
3.6 Diseo del Sistema de control ............................................................. 63
v
3.6.1 Modelo del controlador ................................................................. 63
3.6.2 Determinacin de las constantes PID ........................................... 67
3.6.3 Controlador simplificado .............................................................. 68
3.6.4 Generacin de trayectorias ........................................................... 70
3.7 Resultados Especficos ......................................................................... 73
IV. Conclusiones y Recomendaciones .............................................76
4.1 Conclusiones ........................................................................................ 76
4.2 Recomendaciones ................................................................................. 77
Bibliografa ................................................................................................. 78
A. Anexos .......................................................................................79
A.1 Cdigo en MATLAB para el ajuste de curva y obtencin
de los valores
.......................................................................... 79
A.2 Cdigo en MATLAB para la Calibracin Cinemtica del
brazo robot.......................................................................................... 79
A.3 Cdigo en MATLAB del Sistema de Control ..................................... 81
A.4 Cdigo en PIC C para el PIC 16F877A ............................................. 85
vi
ndice de figuras
2.1 Metodologa de diseo y construccin ................................................... 4
3.1 Mecanismo propuesto ............................................................................ 9
3.2 Diagrama de bloques del sistema ........................................................... 9
3.3 Rotacin alrededor del eje x ................................................................ 11
3.4 Parmetros de DenavitHartenberg .................................................... 13
3.5 Brazo robot, visto desde arriba ........................................................... 14
3.6 Clculo del ngulo
.......................................................................... 17
3.7 Clculo del ngulo
.......................................................................... 17
3.8 Dos soluciones a la cinemtica inversa ................................................ 18
3.9 Brazo robot en contacto con el entorno ............................................... 20
3.10 Parmetros del brazo robot ............................................................... 22
3.11 Modelo de un motor dc con reduccin ............................................... 28
3.12 Seal de control para el servomotor................................................... 32
3.13 Potencimetro .................................................................................... 33
3.14 Ajuste de curva ................................................................................. 37
3.15 Espacio de trabajo para varias configuraciones .................................. 45
3.16 rea de trabajo total y rea de trabajo reducida ............................... 46
3.17 Servomotor TowerPro SG-5010 ......................................................... 47
3.18 Curva par-velocidad de un motor dc ................................................. 48
3.19 Efector final ....................................................................................... 52
3.20 Estructura mecnica del brazo robot ................................................. 54
3.21 Fotografa del brazo robot ................................................................. 55
3.22 Fotografa del brazo robot (vista superior) ........................................ 55
3.23 Seal PWM ....................................................................................... 59
3.24 Circuito electrnico ............................................................................ 62
3.25 Fotografa del circuito electrnico en protoboard .............................. 62
3.26 Diagrama de bloques del sistema robtico ......................................... 64
3.27 Linealizacin del sistema ................................................................... 65
vii
3.28 Simplificacin del sistema linealizado ................................................ 65
3.29 Control del sistema robtico basado en modelo ................................. 66
3.30 Control para bajas velocidades .......................................................... 69
3.31 Control articular independiente ......................................................... 69
3.32 Evolucin temporal de .................................................................... 71
3.33 Trazos de lneas rectas ....................................................................... 75
viii
ndice de tablas
3.1 Parmetros DenavitHartenberg para el brazo robot .......................... 14
3.2 Funcionamiento del puente H.............................................................. 59
3.3 Costo del prototipo .............................................................................. 74
ix
Simbologa
l
1
longitud del eslabn 1
l
2
longitud del eslabn 2
0
1
posicin angular, articulacin 1
0
2
posicin angular, articulacin 2
x coordenada 1 del efector final
y coordenada 2 del efector final
x vector posicin del efector final
q vector de ngulos articulares
k(q) funcin que representa cinemtica directa
](q) matriz Jacobiana
o
1
distancia del centro de masa del eslabn 1 a la articulacin 1
o
2
distancia del centro de masa del eslabn 2 a la articulacin 2
I
1
momento de inercia del eslabn 1
I
2
momento de inercia del eslabn 2
I Lagrangiano
K energa cintica del sistema
P energa potencial del sistema
m
1
masa del eslabn 1
m
2
masa del eslabn 2
x
1
torque en la articulacin 1
2
torque en la articulacin 2
z vector de torques articulares
B(q) trmino inercial del modelo dinmico del brazo robot
C(q, q ) trmino de Coriolis del modelo dinmico del brazo robot
z
J
vector de torques generados por las fuerza externas
J fuerza ejercida por el brazo robot sobre el entorno
n
velocidad sin carga del motor dc
s
torque con rotor parado del motor dc
P potencia mecnica que entrega un motor dc
q
r
posicin articular deseada
q error de posicin angular
xi
K
p
constante proporcional del controlador
K
d
constante derivativa del controlador
K
con origen 0
, o
, J
y 0
. sta rela-
cin viene establecida por la matriz de transformacin:
A
-1
= _
c0
s0
co
s0
so
c0
s0
c0
co
c0
so
s0
u so
co
u u u 1
_ (3.1)
donde c0
es el coscno Jc 0
, y s0
es el scno Jc 0
-1
.
Nuestro brazo robot, visto desde arriba luce como en la Figura 3.5 en la cual
estn incluidos los sistemas de referencia unidos a la base y a los eslabones, en nues-
tro caso el sistema de referencia unido al efector final coincide con el sistema de refe-
rencia unido al eslabn 2, ya que el efector final est simplemente en el extremo del
eslabn 2, fijo a ste. Entonces, a partir de la Figura 3.5, obtenemos los parmetros
de DenavitHartenberg (Tabla 3.1).
14
Figura 3.5 Brazo robot, visto desde arriba
Fuente: [3], pg. 75
Tabla 3.1 Parmetros DH para el brazo robot
Eslabn
o
1 l
1
u u 0
1
2 l
2
u u 0
2
Fuente: Elaboracin propia
donde 0
1
y 0
2
son las variables articulares. Reemplazando estos valores en la ecua-
cin (3.1) tenemos:
A
1
0
(0
1
) = _
c1 s1 u l
1
c1
s1 c1 u l
1
s1
u u 1 u
u u u 1
_
A
2
1
(0
2
) = _
c2 s2 u l
2
c2
s2 c2 u l
2
s2
u u 1 u
u u u 1
_
donde c1 = cos0
1
, c2 = cos0
2
, s1 = scn0
1
y s2 = scn0
2
, entonces la matriz de
transformacin que relaciona los sistemas de referencia del efector final y de la base
del robot es:
15
T
2
0
= A
1
0
A
2
1
= _
c12 s12 u l
1
c1 +l
2
c12
s12 c12 u l
1
s1 +l
2
s12
u u 1 u
u u u 1
_ (3.2)
donde c12 = cos(0
1
+0
2
) y s12 = scn(0
1
+0
2
).
3.1.2 Modelo cinemtico
Modelo cinemtico directo de posicin
El problema a resolver es; Dados ciertos ngulos articulares, Cul es la posi-
cin del efector final?
Como dijimos, el efector final se encuentra al extremo del eslabn 2, en el
origen del sistema de referencia 2, entonces, las coordenadas del efector final en el
sistema de referencia 2 son:
p
c]ccto
= (u, u, u)
2
y en el sistema de referencia base
p
c]ccto
= (x
0
, y
0
, z
0
) = (x, y, z)
donde z = u. Entonces ambas expresiones estn relacionadas mediante la matriz de
transformacin T
2
0
:
p
c]ccto
= T
2
0
p
c]ccto
reemplazando y usando las matrices de 4x1 para representar puntos, tene-
mos:
_
x
y
u
1
_ = _
c12 s12 u l
1
c1 +l
2
c12
s12 c12 u l
1
s1 +l
2
s12
u u 1 u
u u u 1
_ _
u
u
u
1
_
de donde nos queda:
16
_
x
y
u
1
_ = _
l
1
c1 +l
2
c12
l
1
s1 +l
2
s12
u
1
_
para luego obtener:
x = l
1
c1 +l
2
c12 (3.3)
y = l
1
s1 +l
2
s12 (3.4)
las 2 ecuaciones anteriores podemos escribirlas como:
x = k(q) (3.5)
donde: x = |
x y
] describe la posicin del efector final, y llamaremos a q =
|0
1
0
2
] el vector de ngulos articulares. Redefinimos el vector posicin del efector
final con solo las coordenadas x y y, ya que z = u, esto nos facilitara el anlisis pos-
terior.
Las ecuaciones (3.3), (3.4) y (3.5) nos dicen que conocidos los ngulos articu-
lares, es decir, los ngulos que han girado cada uno de los eslabones, podemos obte-
ner la posicin del efector final en el sistema de referencia base, fijo a la base del
robot.
Modelo cinemtico inverso de posicin
El problema a resolver ahora es; Dada cierta posicin del efector final, Cu-
les son los ngulos articulares? Para ello utilizamos el mtodo geomtrico, con un
poco de intuicin, geometra y algebra se resuelve el problema.
Con relacin a la Figura 3.6, por la regla de cosenos tenemos:
x
2
+y
2
= l
1
2
+l
2
2
2l
1
l
2
cos (18u 0
2
)
entonces
17
0
2
= orcos
x
2
+y
2
l
1
2
l
2
2
2l
1
l
2
(3.6)
Figura 3.6 Clculo del ngulo 0
2
Fuente: [1], pg. 36
Figura 3.7 Clculo del ngulo 0
1
Fuente: [1], pg. 36
El ngulo en la primera articulacin es calculado utilizando la Figura 3.7,
ste es igual a:
0
1
= o
1
o
2
entonces
18
0
1
= aictan_
y
x
] aictan (
l
2
scn0
2
l
1
+l
2
cos0
2
) (3.7)
Cuando calculamos 0
2
tenemos 2 soluciones: codo arriba y codo abajo
como se muestra en la Figura 3.8. Para resolver esto solo debemos limitar 0
2
, por
ejemplo 0
2
e |u, n].
Figura 3.8 Dos soluciones a la cinemtica inversa
Fuente: [1], pg. 37
Modelo cinemtico directo de velocidad
El problema a resolver es; Dadas ciertas velocidades articulares, Cul es la
velocidad del efector final?
Las coordenadas del efector final son funciones de los ngulos articulares los
cuales a su vez son funciones del tiempo ([1], pg. 35).
x = x ( 0
1
(t), 0
2
(t))
y = y ( 0
1
(t), 0
2
(t))
se calculan las derivadas temporales y se colocan en una matriz
19
_
x
y
_ =
l
l
l
l
ox
o0
1
ox
o0
2
oy
o0
1
oy
o0
2
1
1
1
1
_
0
1
0
2
_
utilizando las ecuaciones (3.3) y (3.4) obtenemos:
_
x
y
_ = _
l
1
s1 l
2
s12 l
2
s12
l
1
c1 +l
2
c12 l
2
c12
_ _
0
1
0
2
_ (3.8)
La matriz que en este caso es de segundo orden es llamada matriz Jacobiana
](q). Entonces la ecuacin anterior puede ser escrita
x = ](q)q (3.9)
donde
](q) = _
l
1
s1 l
2
s12 l
2
s12
l
1
c1 +l
2
c12 l
2
c12
_
con lo que queda resuelta la cinemtica directa para velocidades.
Modelo cinemtico inverso de velocidad
El problema a resolver es; Dada cierta velocidad del efector final, Cules son
las velocidades articulares?
A partir de la ecuacin (3.9), invirtiendo la matriz Jacobiana, tenemos
q = ]
-1
(q)x (3.10)
las matrices de orden 2x2 pueden ser invertidas de la siguiente manera:
A = j
o b
c J
[ A
-1
=
1
oJ cb
j
J b
c o
[
para nuestro robot tenemos
_
0
1
0
2
_ =
1
l
1
l
2
s2
_
l
2
c12 l
2
s12
l
1
c1 l
2
c12 l
1
s1 l
2
s12
_ _
x
y
_ (3.11)
20
3.1.3 Esttica
Ahora encontraremos la relacin entre los torques articulares y la fuerza que
ejerce el efector final sobre el entorno, considerando que el brazo robot est quieto.
En la Figura 3.9 se observan los torques articulares H
1
y H
2
, los cuales son
producidos por los actuadores, adems de la fuerza I que el brazo robot ejerce sobre
el entorno, sta se encuentra descompuesta en sus componentes paralelos a los ejes x
y y.
Figura 3.9 Brazo robot en contacto con el entorno
Fuente: [1], pg. 38
Por el principio de accin y reaccin, las fuerzas externas sobre el efector
final son opuestas a las ejercidas por el efector final sobre el entorno. Ya que el bra-
zo robot est quieto, la suma de torques externos sobre ste es igual a cero. Entonces
H
1
+F
x
y F
x = u
reemplazando x y y por sus valores calculados en (3.3) y (3.4) obtenemos
H
1
= F
x
(l
1
s1 +l
2
s12) +F
(l
1
c1 +l
2
c12) (3.12)
21
considerando solo es eslabn 2, la suma de torques externos sobre ste tambin es
igual a cero
H
2
+F
x
l
2
s12 F
l
2
c12 = u
o tambin
H
2
= F
x
l
2
s12 +F
l
2
c12 (3.13)
las ecuaciones anteriores pueden ser escritas en forma matricial
_
H
1
H
2
_ = _
l
1
s1 l
2
s12 l
1
c1 +l
2
c12
l
2
s12 l
2
c12
_ _
F
x
F
_ (3.14)
la matriz en la ecuacin anterior es la matriz Jacobiana transpuesta ]
T
(q), entonces
podemos reescribir la ecuacin (3.14) como
z = ]
T
(q)I (3.15)
donde z = _
H
1
H
2
_ y I = _
F
x
F
_
3.1.4 Dinmica
La obtencin del modelo dinmico de un manipulador juega un importante
papel en la simulacin de movimiento, anlisis de estructuras de manipuladores y
diseo de algoritmos de control.
Para hallar el modelo dinmico del brazo robot se utilizar el mtodo basado
en la Formulacin de Lagrange el cual es conceptualmente simple y sistemtico.
El brazo robot (Figura 3.10) tiene 2 eslabones de longitudes l
=
J
Jt
oI
oq
oI
oq
(3.16)
Donde los q
es la correspondiente velocidad y F
la correspondiente fuerza o
torque. F
1
2
+
1
2
I
1
0
1
2
23
Para hallar la energa cintica del eslabn 2, necesitamos diferenciar las ecua-
ciones de posicin del centro de masa del eslabn 2, (x
2
, y
2
).
x
2
= l
1
c1 +o
2
c12
y
2
= l
1
s1 +o
2
s12
derivando respecto al tiempo tenemos
x
2
= l
1
s10
1
o
2
s12(0
1
+0
2
)
y
2
= l
1
c10
1
+o
2
c12(0
1
+0
2
)
la velocidad del centro de masa del eslabn 2 es
:
2
= _x
2
2
+y
2
2
entonces
:
2
2
= l
1
2
s
2
10
1
2
+o
2
2
s
2
12(0
1
+0
2
)
2
+2l
1
o
2
s1s120
1
(0
1
+0
2
) +l
1
2
c
2
10
1
2
+o
2
2
c
2
12(0
1
+0
2
)
2
+2l
1
o
2
c1c120
1
(0
1
+0
2
)
y la energa cintica del eslabn 2 es
K
2
=
1
2
m
2
:
2
2
+
1
2
I
2
(0
1
+0
2
)
2
reemplazando :
2
2
y simplificando
K
2
=
1
2
m
2
|l
1
2
0
1
2
+o
2
2
(0
1
2
+20
1
0
2
+0
2
2
) +2l
1
o
2
c2(0
1
2
+0
1
0
2
)] +
1
2
I
2
(0
1
2
+0
2
2
+20
1
0
2
)
La energa potencial P del sistema es la suma de las energas potenciales de
cada eslabn
P = P
1
+P
2
La energa potencial es debida al campo gravitatorio. Ya que no hay movi-
miento vertical, si establecemos la referencia a la misma altura que el brazo robot,
tenemos
24
(3.17)
P
1
= m
1
gb = m
1
g(u) = u
P
2
= m
2
gb = m
2
g(u) = u
entonces el Lagrangiano es
I = K P = 0
1
2
_
1
2
m
1
o
1
2
+
1
2
I
1
+
1
2
m
2
l
1
2
+
1
2
m
2
o
2
2
+
1
2
I
2
] +0
2
2
_
1
2
m
2
o
2
2
+
1
2
I
2
]
+0
1
0
2
(m
2
o
2
2
+I
2
) +m
2
l
1
o
2
c2(0
1
2
+0
1
0
2
)
Usando la ecuacin (3.16) hallamos F
1
=
1
que en este caso es un torque en
la articulacin 1.
oI
o0
1
= 0
1
(m
1
o
1
2
+I
1
+m
2
l
1
2
+m
2
o
2
2
+I
2
) +0
2
(m
2
o
2
2
+I
2
) +m
2
l
1
o
2
c2(20
1
+0
2
)
la derivada temporal es
J
Jt
oI
o0
1
= 0
1
(m
1
o
1
2
+I
1
+m
2
l
1
2
+m
2
o
2
2
+I
2
) +0
2
(m
2
o
2
2
+I
2
)
+m
2
l
1
o
2
|s20
2
(20
1
+0
2
) +c2(20
1
+0
2
)]
y el segundo trmino es
oI
o0
1
= u
por lo que
1
=
J
Jt
oI
o0
1
oI
o0
1
y obtenemos
1
= (I
1
+I
2
+m
1
o
1
2
+m
2
(l
1
2
+o
2
2
+2l
1
o
2
c2))0
1
+(I
2
+m
2
(o
2
2
+l
1
o
2
c2))0
2
(2m
2
l
1
o
2
s2)0
1
0
2
(m
2
l
1
o
2
s2)0
2
2
Ahora hallamos F
2
=
2
que es un torque en la articulacin 2
oI
o0
2
= 0
2
(m
2
o
2
2
+I
2
) +0
1
(m
2
o
2
2
+I
2
) +m
2
l
1
o
2
c20
1
la derivada temporal es
25
J
Jt
oI
o0
2
= 0
2
(m
2
o
2
2
+I
2
) +0
1
(m
2
o
2
2
+I
2
) +m
2
l
1
o
2
(s20
2
0
1
+c20
1
)
y el segundo trmino es
oI
o0
2
= m
2
l
1
o
2
s2(0
1
2
+0
1
0
2
)
por lo que
2
=
J
Jt
oI
o0
2
oI
o0
2
y obtenemos
2
= (I
2
+m
2
(o
2
2
+l
1
o
2
c2))0
1
+(I
2
+m
2
o
2
2
)0
2
+(m
2
l
1
o
2
s2)0
1
2
(3.18)
Los torques en las articulaciones pueden ser escritos en la siguiente forma ge-
neral
z = B(q)q +C(q, q )q (3.19)
donde
q = _
0
1
0
2
_ q = _
0
1
0
2
_ q = _
0
1
0
2
_
el vector z = j
2
[ es el vector de torques.
El primer trmino del lado derecho de la ecuacin (3.19) se denomina trmi-
no inercial. En nuestro caso es una matriz de 2x2.
B(q) = _
I
1
+I
2
+m
1
o
1
2
+m
2
(l
1
2
+o
2
2
+2l
1
o
2
c2) I
2
+m
2
(o
2
2
+l
1
o
2
c2)
I
2
+m
2
(o
2
2
+l
1
o
2
c2) I
2
+m
2
o
2
2
_
El segundo trmino del lado derecho de la ecuacin (3.19) se denomina
trmino de Coriolis e incluye efectos centrfugos y de velocidad. Tambin es una
matriz de 2x2.
26
C(q, q ) = _
2m
2
l
1
o
2
s20
2
m
2
l
1
o
2
s20
2
m
2
l
1
o
2
s20
1
u
_
La ecuacin (3.19) es an incompleta, no estn incluidos los efectos de fric-
cin en las articulaciones ni los efectos de friccin del plano de trabajo sobre la
herramienta de trabajo ubicada en el efector final.
Ya que los actuadores, que son motores elctricos con reduccin, estn aco-
plados directamente a las articulaciones, la friccin en las articulaciones ser consi-
derada en el modelado del motor (seccin 3.2.1).
Al pasar la herramienta de trabajo por el plano de trabajo se genera una
fuerza de friccin sobre el efector final que se opone al movimiento de ste. Parte de
los torques
1
,
2
es usada para equilibrar los torques inducidos en las articulaciones
por las fuerzas de contacto herramienta-plano de trabajo ([2], pg. 257). De manera
anloga a (3.15) tales torques estn dados por
z
J
= ]
T
(q)J
Como un modelo simplificado de la friccin, sta se supondr constante en
mdulo y en sentido opuesto al movimiento de la herramienta. Como se dijo antes, J
es la fuerza ejercida por el brazo robot sobre el entorno, por lo que J es igual y
opuesta a las fuerzas de friccin. Entonces
J =
u
u
donde
= constontc y u
u
es un vector unitario en la direccin de la velocidad del
efector final. Recordando la ecuacin (3.9), ste vector unitario es igual a:
u
u
=
1
x
2
+y
2
_
x
y
_ =
1
[ x [
x =
1
[ ](q)q [
](q)q
por lo que
J =
[ ](q)q [
](q)q (3.20)
entonces
27
z
J
=
[ ](q)q [
]
T
(q)](q)q (3.21)
Agregando el trmino z
J
en la ecuacin (3.19):
z = B(q)q +C(q, q )q +z
J
(q, q ) (3.22)
la ecuacin anterior representa el modelo dinmico del brazo robot. Dado cierto mo-
vimiento del brazo robot, determinado por ciertas posiciones, velocidades y acelera-
ciones articulares q, q , q , podemos hallar los torques necesarios z, para causar tal
movimiento.
En robtica se habla de modelo dinmico directo cuando las ecuaciones per-
miten determinar el movimiento articular a partir de los torques o fuerzas que pro-
ducen este movimiento y se habla de modelo dinmico inverso cuando las ecuaciones
permiten determinar los torques (o fuerzas) a partir del movimiento articular. La
ecuacin (3.22) representa el modelo dinmico inverso del brazo robot: z = z(q, q , q ).
3.2 Modelamiento de Actuadores y Sensores
3.2.1 Modelamiento de los motores dc
Por las consideraciones hechas al comienzo del captulo, se eligieron servomo-
tores dc (TowerPro SG-5010). Un servomotor consiste bsicamente en un motor dc,
un potencimetro como sensor, una reduccin de engranes y un sistema de control
con circuito integrado. El sistema de control que viene incluido con los servomotores
usa generalmente un control proporcional o un control PID de parmetros fijos, este
controlador es muy til para determinadas aplicaciones pero cuando se lo desea para
la aplicacin de algn tipo de control ms elaborado, como el que se usar en la pre-
sente tesis, se vuelven algo intiles. Es sencillo extraer este circuito de control para
remplazarlo por uno propio de acuerdo a nuestras necesidades y eso es lo que se
hizo.
28
En esta seccin nos ocuparemos de modelar el motor dc junto con la reduc-
cin de engranes.
La ecuacin (3.22) nos dice cuales son los torques necesarios z, para causar
determinado movimiento del brazo robot. Estos torques son ejercidos por los moto-
res luego de pasar por la reduccin de engranes. Los motores sern controlados por
voltaje, es decir, se variar el voltaje aplicado a cada motor para conseguir diversos
torques.
Figura 3.11 Modelo de un motor dc con reduccin
Fuente: Elaboracin propia
En la Figura 3.11 se observa el modelo de un motor dc con reduccin. Un
campo magntico es desarrollado por imanes estacionarios permanentes llamado
campo fijo ([5], pg. 79-82). Un circuito rotatorio llamado armadura, a travs del
cual fluye una corriente i, pasa a travez de este campo magnetico y experimenta una
fuerza F = li, donde es la intensidad del campo magntico y l es la longitud del
conductor. El torque resultante gira el rotor, la parte rotativa del motor. As, el tor-
que desarrollado por el motor (antes de la reduccin de engranes) es proporcional a
la corriente de armadura.
= K
t
i (3.23)
29
donde K
t
es una constante de proporcionalidad llamada constante de torque del mo-
tor.
Un conductor movindose en ngulos rectos respecto de un campo magntico
genera un voltaje en sus terminales igual a c = l:, donde c es el voltaje y : la ve-
locidad del conductor normal al campo magntico. Ya que la armadura est rotando
en un campo magntico, el voltaje es proporcional a la velocidad angular. As,
:
= K
(3.24)
:
es igual al valor de K
t
,
como se puede demostrar esto debe ser as por el principio de conservacin de la
energa.
Usando la ley de tensiones de Kirchhoff en el circuito de la armadura,
tenemos
: = Ri +I
Ji
Jt
+:
Tal como se plantea en ([5], pg. 81) si se asume que I es pequeo compara-
do con R, lo cual es usual en motores dc, y usando tambin (3.23) y (3.24) podemos
reescribir la ecuacin anterior como
: = R
K
t
+K
(3.25)
La reduccin de engranes se modela como un par de engranes con nmeros
de dientes n
1
y n
2
con n
1
n
2
, esto nos lleva a
=
n
2
n
1
=
r
2
r
1
=
0
=
0
(3.26)
donde r
1
y r
2
son los radios de los engranes.
30
Al considerar la friccin, se la model como la suma de la friccin viscosa y la
friccin de Coulomb ([2], pg. 257). La friccin viscosa es proporcional a la velocidad
sgn(0
) (3.27)
y para el eje de salida tenemos
]
=
sgn(0
) (3.28)
donde
]
y
]
son los torques producidos por las fuerzas de friccin. Queda claro que
, J
, J
son constantes.
Ahora consideramos la fuerza tangencial F que debe existir entre los dos en-
granes n
1
y n
2
de la Figura 3.11 y aplicamos para cada eje la ley del movimiento de
rotacin de un slido rgido:
torqcs = momcnto Jc incrcio occlcrocion onglor
obtenemos
+
]
Fr
1
=
y
+Fr
2
+
]
= u
eliminando F de ambas ecuaciones y despejando
obtenemos
=
r
1
r
2
(
]
)
]
+
reemplazando
en (3.25)
: =
R
K
t
_
r
1
r
2
(
]
)
]
+
] +K
31
reemplazando los valores de
]
y
]
de las ecuaciones (3.28) y (3.27) y usando la
ecuacin (3.26) en la ecuacin anterior obtenemos finalmente
: =
R
K
t
0
+K
+
R
K
t
0
+
RJ
K
t
sgn(0
) +
R
K
t
(3.29)
donde
=
J =
J
+J
La ecuacin (3.29) puede ser reescrita como
: = o0
+0
+sgn(0
) + (3.30)
considerando los dos motores tenemos:
:
1
= o
1
0
1
+
1
0
1
+
1
sgn(0
1
) +
1
1
:
2
= o
2
0
2
+
2
0
2
+
2
sgn(0
2
) +
2
2
las dos ecuaciones anteriores pueden ser escritas como
u = q +q +sgn(q ) +z (3.31)
donde u = j
:
1
:
2
[, = _
o
1
u
u o
2
_, = _
1
u
u
2
_, = _
1
u
u
2
_ y = _
1
u
u
2
_
la ecuacin anterior representa el modelo dinmico de los motores con reduccin.
Dadas ciertas velocidades y aceleraciones articulares q , q requeridas, y dados ciertos
torques requeridos (3.22), podemos hallar los voltajes que son necesarios aplicar a los
motores.
3.2.2 Modelamiento del actuador del efector final
Como se dijo al inicio del captulo, se escogi el servomotor Mystery SD90
como actuador del efector final. El efector final tiene la tarea de subir y bajar la
herramienta de trabajo ya que si no solo se podra hacer un trazo continuo. Ya que
32
la tarea a realizar es bastante simple, se utilizara el controlador que viene con el
servomotor, es decir se utilizar el servomotor sin modificarlo.
Como se dijo antes un servomotor consiste en un motor dc, un potencime-
tro, una reduccin de engranes y un circuito de control. El controlador ejerce un
control de posicin sobre el eje de salida, es decir mediante una seal le decimos al
servomotor a qu posicin debe ir y ste va hacia esa posicin. Los servomotores se
controlan mediante impulsos de ancho variable que deben refrescarse peridicamente
cada aproximadamente 20 ms (Figura 3.12), de acuerdo al ancho del impulso el ser-
vomotor se ubicar (o tratar de ubicarse) en determinada posicin. Para el servo-
motor en cuestin tenemos la siguiente relacin
0
c
= n
o
t
u.S
2
(3.32)
donde 0
c
es el ngulo en radianes a donde se le ordena ir al servomotor, o
t
es el an-
cho del impulso en milisegundos. El servomotor abarca poco mas de n rad, por lo
que o
t
va desde 0.5 a 2.5 ms. Otros servomotores pueden tener otros rangos de valo-
res para 0
c
y o
t
.
Figura 3.12 Seal de control para el servomotor
Fuente: Elaboracin propia
3.2.3 Modelamiento de los sensores
Como se dijo antes, el sensor a utilizar es el potencimetro que viene integra-
do en el servomotor, al extraer el circuito de control quedan libres las tres terminales
33
del potencimetro. Un potencimetro es un dispositivo electromecnico que consiste
en una resistencia de valor fijo sobre la que se desplaza un contacto deslizante. El eje
del potencimetro est localizado en el eje de salida del servomotor de tal manera
que queda acoplado con el eje articular (Figura 3.13).
Figura 3.13 Potencimetro
Fuente: [1], pg. 52
La resistencia del potencimetro a lo largo de
=
0
2n
Si el potencimetro es alimentado por el voltaje
ot
=
r
R
=
0
2n
o tambin
0 =
2n
ot
Como se ver en la seccin 3.5 el voltaje
ot
es medido por un microcontro-
lador y transformado a un valor digital, con la siguiente relacin
34
ot
=
S
1u2S
s
ot
donde s
ot
es el valor digital del voltaje de salida
ot
. s
ot
puede ir desde u o 1u2S,
y
ot
de u o S .
A partir de las dos ecuaciones anteriores tenemos
0 =
2n
S
1u2S
s
ot
Un modelo ms exacto considerando que existe un desfase, es decir 0 u
cuando el contacto deslizante esta en , y que la distancia entre los punto y no
es despreciable, es el siguiente
0 = s
ot
+q (3.33)
para los dos sensores de los dos motores tenemos
0
1
=
1
s
ot
1
+q
1
(3.34)
0
2
=
2
s
ot
2
+q
2
(3.35)
donde
1
debera ser igual a
2
, pero puede variar ya que los potencimetros de am-
bos motores no son exactamente iguales.
Las dos ecuaciones anteriores pueden ser escritas como
q = _
0
1
0
2
_ = _
1
u
u
2
_ _
s
ot
1
s
ot
2
_ +j
q
1
q
2
[ (3.36)
3.3 Determinacin de Parmetros
Ahora que ya tenemos el modelo dinmico del brazo robot (3.22), el modelo
dinmico de los motores dc con reduccin (3.31), el modelo simplificado del actuador
del efector final (3.32), y el modelo de los sensores (3.36), vemos que existen par-
35
metros (constantes) que debemos determinar. Para determinar el valor de tales
parmetros se utilizaron diversos mtodos, como se ver a continuacin.
3.3.1 Determinacin de parmetros de los motores dc
Aunque un motor dc con reduccin tiene varios parmetros, a decir
R, I, K
t
= K
, J
, J
, n
1
, n
2
(seccin 3.2.1) no es necesario conocerlos todos
para determinar el comportamiento del motor (al menos el comportamiento de las
variables de inters). La ecuacin (3.30) nos dice que solo necesitamos conocer cua-
tro parmetros: o, , y .
Se han desarrollado muchos mtodos para determinar los parmetros de un
motor dc, muchos de ellos incluyen herramientas tales como voltmetros, amperme-
tros y dinammetros, adems de un sistema de adquisicin de datos.
Aqu se ha desarrollado un mtodo simple basado en la respuesta en posicin
0 a un estmulo de voltaje : constante. Para ello solo se utiliza un sistema de adqui-
sicin de datos hecho con el microcontrolador PIC 16F877A. Este mtodo nos per-
mitir hallar los valores de los parmetros o, , y . Se utilizaron algunas ideas
desarrolladas en [8].
Aplicamos un voltaje constante :
0
para t > u, con las condiciones iniciales
0
= u, 0
+0
+sgn(0
) (3.37)
Ahora trataremos de hallar 0 = 0(t). Para que el motor empiece su movi-
miento :
0
debe ser mayor que sgn(0
u, tenemos
(:
0
) = o0
+0
la solucin para esta ecuacin diferencial es
36
(3.38)
0
= _
:
0
] (1 c
-
[
u
t
)
simplificada como:
0
= k
1
(1 c
-k
2
t
)
donde
k
1
= _
:
0
] k
2
=
o
por lo que
0 = _0
= k
1
t +
k
1
k
2
(c
-k
2
t
) +
con = constontc.
Aplicamos cierto voltaje :
0
al motor y obtenemos 0(t) mediante el sistema
de adquisicin de datos (puntos azules en Figura 3.14), luego hacemos un ajuste de
curva segn la ecuacin (3.38) con ayuda del software MATLAB (lnea roja en Figu-
ra 3.14) y obtenemos los parmetros k
1
y k
2
. El cdigo se muestra en el Anexo A.1.
Ahora que conocemos k
1
y k
2
tenemos el siguiente sistema de ecuaciones
j
:
0
u
[ = _
u k
1
1
k
2
1 u
_ _
o
_
como vemos tenemos tres incgnitas y dos ecuaciones, lo que significa que al menos
debemos repetir el experimento para dos voltajes :
0
distintos. La experiencia nos
dice que mientras ms datos tengamos mayor ser la exactitud de los valores obte-
nidos. Supongamos que realizamos n experimentos con n voltajes diferentes
:
0
1
, :
0
2
, ., :
0
n
, tendramos el siguiente sistema de ecuaciones:
37
l
l
l
l
l
l
l
:
0
1
u
:
0
2
u
.
:
0
n
u
1
1
1
1
1
1
1
=
l
l
l
l
l
l
l
l
u k
1
1
1
k
2
1
1 u
u k
1
2
1
k
2
2
1 u
. . .
u k
1
n
1
k
2
n
1 u
1
1
1
1
1
1
1
1
_
o
_
el cual es resuelto mediante el mtodo de mnimos cuadrados. Se obtuvo los siguien-
tes resultados para ambos motores:
o
1
= u.u749 vs
2
1
= u.422 vs
1
= u.7Su v
o
2
= u.u7uS vs
2
2
= u.4S1 vs
2
= u.68u v
Figura 3.14 Ajuste de curva
Fuente: Elaboracin propia
Ahora solo nos falta determinar , para ello debe ser diferente de u en
(3.30). Supongamos que conectamos al eje de salida del motor una inercia con mo-
mento de inercia
c
respecto del eje de salida del motor, entonces el torque es igual
a:
=
c
0
reemplazando en la ecuacin (3.30) para un voltaje : constante tenemos
38
:
0
= (o +
c
)0
+0
+sgn(0
)
o
:
0
= o0
+0
+sgn(0
)
con o
= o +
c
la ecuacin anterior tiene la misma forma que (3.37) por lo que aplicamos exacta-
mente el mismo procedimiento que se explico en los prrafos anteriores, los valores
obtenidos para y de deben ser similares a los del primer experimento, es de espe-
rarse que o tenga un mayor valor que o.
Ya que tenemos o
c
se obtuvo para ambos motores:
1
= 22.1 vNm
2
= 26.S vNm
3.3.2 Determinacin de parmetros del brazo robot
El modelo dinmico del brazo robot (3.22) tiene los siguientes parmetros:
l
1
, l
2
, o
1
, o
2
, m
1
, m
2
, I
1
, I
2
y
. Se obtuvo o
1
= 62 mm, o
2
= 66 mm.
Las masas m
1
y m
2
fueron halladas con una balanza. Se obtuvo m
1
= 1uu g,
m
2
= 8S g. Cabe sealar que m
2
incluye la masa del efector final y de la herramien-
ta de trabajo.
Determinacin de inercias
Aunque se podra haber hallado I
1
e I
2
mediante un modelo CAD, se prefiri
hacerlo mediante un mtodo experimental usando los principios que gobiernan un
pndulo fsico.
Un pndulo fsico es un cuerpo rgido que puede oscilar libremente en el
campo gravitatorio alrededor de un eje horizontal fijo, que no pase por su centro de
masa. En el caso de que la amplitud angular de las oscilaciones sea pequea, el pe-
riodo de la oscilacin es
I = 2n_
I
o
mgo
donde I
o
es el momento de inercia del cuerpo respecto al eje de oscilacin, m la masa
del cuerpo, o la distancia del centro de masa al eje de oscilacin y g la aceleracin
de la gravedad.
A cada eslabn i se lo hace oscilar alrededor de un eje que pase por la articu-
lacin i y se mide el periodo de oscilacin I (es mucho ms preciso medir el tiempo
de muchas oscilaciones consecutivas y luego dividir este valor entre el numero de
oscilaciones), ya que son conocidos los valores de m y o para cada eslabn, podemos
hallar I
o
mediante la ecuacin anterior.
Pero lo que nos interesa conocer es el momento de inercia respecto al centro
de masa I
cg
= I. Usando el teorema de ejes paralelos tenemos
40
I
o
= I +mo
2
por lo que
I = mo
gI
2
4n
2
o
mediante la ecuacin anterior se obtuvo I
1
= 1.41 1u
-4
kg m
2
, I
2
= 1.Su
1u
-4
kg m
2
.
Determinacin de la fuerza de friccin
Para determinar el valor de
c
= I
1
+m
1
o
1
2
+I
2
+m
2
(l
1
+o
2
)
2
c
= SS.88 1u
-4
kg m
2
adems, la herramienta de trabajo est en rozamiento con el entorno, entonces el
torque en (3.30) es igual a
=
c
0
r
donde r = l
1
+l
2
= 24u mm
Reemplazando en (3.30) para un voltaje : constante tenemos
:
0
= (o
1
+
1
c
)0
+
1
0
+
1
sgn(0
) +
1
r
o tambin
(:
0
1
r) = (o
1
+
1
c
)0
+
1
0
+
1
sgn(0
)
41
la ecuacin anterior tiene la misma forma que la ecuacin (3.37) por lo que aplica-
mos exactamente el mismo procedimiento que se explico en la seccin 3.3.1, tenemos:
0
= _
:
0
1
1
1
] (1 c
-
[
1
u
1
+c
1
]
c
t
)
o tambin
0
= k
1
(1 c
-k
2
t
)
donde
k
1
= _
:
0
1
1
1
] k
2
=
1
o
1
+
1
c
Para hallar
=
:
0
1
k
1
1
r
Se realizo el experimento para diversos valores de :
0
y se obtuvo como media
= u.286 N
3.3.3 Calibracin Cinemtica
En este punto solo nos falta determinar los valores
1
,
2
, q
1
y q
2
de las ecua-
ciones (3.34) y (3.35). Aprovecharemos tambin para determinar valores ms exactos
de l
1
y l
2
. Los parmetros que se acaban de nombrar deben ser lo ms exactos posi-
bles con el fin de mejorar la exactitud del brazo robot. Las tcnicas de calibracin
cinemtica estn destinadas a encontrar estimaciones exactas de los parmetros de
DenavitHartenberg en base a una serie de mediciones de la posicin del efector
final.
Las ecuaciones (3.3) y (3.4) pueden ser reescritas usando las ecuaciones (3.34)
y (3.35) como
42
x = l
1
cos [
1
s
ot
1
+q
1
+l
2
cos [
1
s
ot
1
+q
1
+
2
s
ot
2
+q
2
y = l
1
scn [
1
s
ot
1
+q
1
+l
2
scn [
1
s
ot
1
+q
1
+
2
s
ot
2
+q
2
es decir la ecuacin (3.5) ahora es
x = j
x
y
[ = k(l
1
, l
2
,
1
,
2
, q
1
, q
2
, s
ot
1
, s
ot
2
) (3.39)
Sea x
la posicin nominal
que puede ser calculada mediante la ecuacin anterior con los valores nominales de
los parmetros l
1
, l
2
,
1
,
2
, q
1
y q
2
y los valores de los sensores s
ot
1
y s
ot
2
.
Entindase por valores nominales a los valores que en general vienen con la
hoja de datos del brazo robot, pero que en nuestro caso son mediciones burdas
hechas de tales parmetros. Los valores nominales de l
1
y l
2
son los valores prees-
tablecidos para el prototipo: l
1
= l
2
= 12u mm. Los valores nominales de
1
,
2
, q
1
y
q
2
fueron hallados con un trasportador, se media el ngulo para cada valor de s
ot
y
se hallaban los valores de y q segn (3.33), obviamente estos valores hallados
estn lejos de ser exactos.
La desviacin Ax = x
es funcin de ciertos s
ot
1
y s
ot
2
, y la posicin no-
minal x
)A
con
A =
l
l
l
l
l
l
Al
1
Al
2
A
1
A
2
Aq
1
Aq
2
1
1
1
1
1
1
4(
) =
l
l
l
l
l
ox
ol
1
ox
ol
2
ox
o
1
ox
o
2
ox
oq
1
ox
oq
2
oy
ol
1
oy
ol
2
oy
o
1
oy
o
2
oy
oq
1
oy
oq
2
1
1
1
1
1
Podemos calcular A conociendo
, x
y el valor medido x
. Sin embargo
vemos que tenemos 6 incgnitas pero solo 2 ecuaciones, lo que implica que debemos
realizar mediciones para al menos 3 posturas diferentes del brazo robot, mientras
ms mediciones se tengan, mayor ser la exactitud de los resultados.
Si realizamos mediciones para k > S posturas diferentes del brazo robot,
tendramos el sistema de ecuaciones:
Ax = _
Ax
1
Ax
2
.
Ax
k
_ = _
4
1
4
2
.
4
k
_ A = 4
A
el cual podemos resolver mediante el mtodo de mnimos cuadrados.
Entonces, la primera estimacin de parmetros est dada por
+A
La ecuacin anterior nos dice que los parmetros estimados
pueden ser
hallados a partir de los parmetros nominales
y de la desviacin calculada A.
Ya que este es un problema de estimacin no lineal, el procedimiento debe
ser repetido hasta que A converja a valores cercanos a cero. El proceso de calibra-
cin fue desarrollado en MATLAB (Anexo A.2). Se obtuvo l
1
= 121.Su mm, l
2
=
122.76 mm,
1
= u.uuS292,
2
= u.uuS988, q
1
= u.767S, q
2
= S.72S.
45
3.4 Diseo de la Parte Mecnica
Espacio de trabajo
El espacio de trabajo de un robot consiste en todos los puntos que pueden ser
alcanzados por el efector final del robot. En nuestro caso el espacio de trabajo con-
siste en una determinada rea. Los servomotores usados tienen un rango de movi-
miento de poco mas de 180 por lo que de acuerdo a como est colocado el motor 2
(articulacin 2) tendremos diferentes espacios o reas de trabajo. Como se demuestra
en ([1], pg. 42), se consigue la mayor rea de trabajo cuando l
1
= l
2
, y eso fue lo
que se consider. En la Figura 3.15 se observan los diferentes espacios de trabajo
para diversas posiciones del motor 2: Lineal, perpendicular y en superposicin.
Figura 3.15 Espacio de trabajo para varias configuraciones
Fuente: [6], pg. 17
Se descarta la configuracin lineal ya que tiene muy poco espacio de trabajo,
y se descarta la configuracin en superposicin por las limitaciones mecnicas que
46
puede generarse al pasar un eslabn encima del otro, por lo que se escoge la configu-
racin perpendicular.
Aunque podemos usar toda el rea de trabajo de la configuracin perpendicu-
lar, muchas veces es ms til tener un rea de trabajo de forma cuadrada o rectan-
gular, por ello se decidi reducir el rea de trabajo a un rea de trabajo reducida
de forma cuadrada, ambas se muestran en la Figura 3.16. Aunque el mximo tama-
o posible es de un cuadrado de aproximadamente 20 cm de lado, se decidi usar un
rea de trabajo reducida cuadrada de 16 cm de lado ya que existen limitaciones
mecnicas en el centro del espacio de trabajo adems de que la precisin del brazo
robot disminuye en los puntos ms alejados del centro (cerca el permetro).
Figura 3.16 rea de trabajo total y rea de trabajo reducida
Fuente: Elaboracin propia
Actuadores
Se decidi usar como actuadores los servomotores TowerPro SG-5010 (Figura
3.17), stos incluyen un motor dc, una caja de reduccin, un sensor de posicin (po-
tencimetro) y un pequeo circuito de control integrado. Cabe sealar que la elec-
cin del motor no es crtica ya que se trabajar a bajas velocidades y por ende bajos
torques.
Las principales caractersticas (no se consideran caractersticas relacionadas
con el circuito de control ya que ste ser extrado) del servomotor TowerPro SG
5010 son las siguientes:
Peso = 38 g
Medidas = 402043 mm
Torque con rotor parado = 0.540 N m (4.8 V), 0.638 N m (6 V)
Velocidad de operacin = 0.2 s/60 (4.8 V), 0.16 s/60 (6 V)
Voltaje de operacin = 4.8
Figura 3.17
A continuacin se comprobar si los motores elegidos pueden cumplir con los
requerimientos.
El torque mximo
el fabricante no da informacin sobre la potencia mxima que pu
tor, es posible hacer una estimacin. A partir de la velocidad de operacin, podemos
hallar la velocidad angular mxima que es la velocidad sin carga
En general, la curva par
taje constante es una relacin lineal inversa (Figura
Las principales caractersticas (no se consideran caractersticas relacionadas
con el circuito de control ya que ste ser extrado) del servomotor TowerPro SG
5010 son las siguientes:
Medidas = 402043 mm
Torque con rotor parado = 0.540 N m (4.8 V), 0.638 N m (6 V)
Velocidad de operacin = 0.2 s/60 (4.8 V), 0.16 s/60 (6 V)
Voltaje de operacin = 4.8 - 6 V
Figura 3.17 Servomotor TowerPro SG-5010
Fuente: http://www.towerpro.com.tw
A continuacin se comprobar si los motores elegidos pueden cumplir con los
El torque mximo
s
que puede entregar el motor es de 0.638 N m. Aunque
el fabricante no da informacin sobre la potencia mxima que pu
tor, es posible hacer una estimacin. A partir de la velocidad de operacin, podemos
hallar la velocidad angular mxima que es la velocidad sin carga
=
'0
1)0
0,1'
',&% HG"
En general, la curva par-velocidad de un motor dc al que se le aplica un vo
taje constante es una relacin lineal inversa (Figura 3.18) dada por:
47
Las principales caractersticas (no se consideran caractersticas relacionadas
con el circuito de control ya que ste ser extrado) del servomotor TowerPro SG-
Torque con rotor parado = 0.540 N m (4.8 V), 0.638 N m (6 V)
Velocidad de operacin = 0.2 s/60 (4.8 V), 0.16 s/60 (6 V)
A continuacin se comprobar si los motores elegidos pueden cumplir con los
que puede entregar el motor es de 0.638 N m. Aunque
el fabricante no da informacin sobre la potencia mxima que puede entregar el mo-
tor, es posible hacer una estimacin. A partir de la velocidad de operacin, podemos
:
e se le aplica un vol-
) dada por:
48
s s
K1
]
Figura 3.18 Curva par-velocidad de un motor dc
Fuente: Elaboracin propia
Entonces la potencia P que entrega el motor es:
P = =
s
_1
]
la potencia es mxima para =
2, entonces:
P
ux
=
s
_1
1
2
]
2
reemplazando obtenemos
P
ux
= 1.u4S W
la cual es la potencia mxima que puede entregar el motor.
Ahora veamos cuales son los requerimientos del brazo robot. Ya que vamos a
trabajar a velocidades bajas, podemos considerar 0
= u, 0
= u, entonces, el nico
torque que tiene que vencer el motor es el causado por la friccin
de la ecuacin
(3.21), este torque es mximo para el motor 1 cuando el brazo robot est extendido,
es igual a
(l
1
+l
2
) = u.286 (u.12 +u.12) = u.u69 N m, el cual es mucho menor que
s
.
Suponiendo que las velocidades de trabajo las limitaremos por
49
#
$.27 roJs
la potencia mxima que podra entregar el motor 1 es:
P
1
= u.226 W
sta potencia es menor que P
ux
.
Transmisin de potencia
La transmisin de potencia es la forma en cmo la potencia se transmite des-
de los actuadores hacia los eslabones, en muchos brazos robot es usual encontrar
correas de transmisin como tambin reducciones de engranes. Una correa de trans-
misin es til por ejemplo cuando los ejes del motor y del eslabn no son los mismos.
Una reduccin de engranes es til cuando se desea un mayor torque del que provee
el motor dc, en general cada etapa de la reduccin es 90% eficiente. Ya que el rango
de movimiento de los servomotores est limitado a 180, una reduccin de engranes
limitara an ms este rango, adems, los servomotores ya cuentan con una reduc-
cin interna.
Mover los eslabones mediante un acoplamiento directo a los motores es lo
que se conoce como accionamiento directo y tiene la ventaja de no generar ningu-
na prdida de potencia, adems de que es ms simple de implementar y ms barata
ya que cuenta con menos partes.
El servomotor viene con un componente plstico denominado servo-horn
que conecta el eje de salida del servomotor con cualquier otro elemento. El servo-
horn encaja perfectamente en el eje de salida ranurado del servomotor adems es
ajustado mediante un perno. Los servo-horns fueron agujereados con el mismo
patrn que los eslabones y luego conectados mediante pernos.
Cada eje de rotacin debe soportar el peso de la estructura, el eje del motor 1
soporta el peso de los dos eslabones mientras que el eje del motor 2 soporta solo el
peso del segundo eslabn. En forma general (motor 1 o motor 2), el eje del motor
50
soporta una fuerza a
a una distancia
.
Aunque la gravedad no ejerce torques en la direccin del eje de rotacin de
cada motor (eje vertical), si lo hace en los dos ejes perpendiculares a ste (plano
horizontal). Estos torques s
y el torque s
(q) =
A(q) y n(q, q ) = n(q, q ), el diagrama de bloques de la Figura 3.27 puede ser simpli-
ficado, los bloques n(q, q ) se anulan entre ellos y A(q)A
-1
(q) nos da la matriz iden-
tidad por lo que el diagrama de bloques anterior sera equivalente a:
Figura 3.28 Simplificacin del sistema linealizado
Fuente: Elaboracin propia
A partir de la figura anterior nos damos cuenta que la variable y debe ser
igual a q . El sistema, aparte de ser ahora lineal, es tambin desacoplado ya que por
ejemplo el primer elemento del vector y solo tiene influencia en el primer elemento
del vector q.
En un caso ideal donde A
= q
r
-q
El vector y no solo debe ser igual a q
r
sino que debe incluir trminos que es-
tabilicen el sistema, para un control PID tenemos:
y = q
r
+K
p
(q
r
-q) +K
d
(q
r
-q ) +K
] (q
r
-q)
t
0
Jt (3.42)
donde K
p
= _
K
p
1
u
u K
p
2
_, K
d
= _
K
d
1
u
u K
d
2
_, K
= _
K
1
u
u K
2
_ son matrices diagonales.
Los K
p
se denominan constantes proporcionales, los K
d
constantes derivativas y los
K
.
Podemos escribir entonces (Figura 3.29):
u = A
(q)y +n(q, q )
reemplazando y de (3.42) tenemos:
u = A
(q) [q
r
+K
p
q +K
d
q
+K
] q
t
0
Jt +n(q, q ) (3.43)
la ecuacin anterior representa el modelo del controlador, esta ecuacin tambin se
conoce como ley de control.
3.6.2 Determinacin de las constantes PID
Los parmetros necesarios para determinar las matrices A
,
existe un rango de valores de estas constantes con los que el sistema es ms eficiente
y mejor controlado. A la accin de determinar valores adecuados para K
p
, K
d
y K
se denomina sintonizacin.
Una manera sencilla de hallar una aproximacin para K
p
, K
d
y K
es me-
diante el mtodo de sintonizacin de ZieglerNichols ([7], pg. 568-572). En nuestro
caso, este mtodo es desarrollado para cada articulacin de manera independiente.
Consideremos la articulacin 1 actuada por el motor 1 al cual se le aplica un
voltaje :
1
. El mtodo de sintonizacin es el siguiente: Supngase que solamente uti-
lizamos el control proporcional, es decir, K
d
= u y K
= u. Debemos incrementar K
p
desde 0 hasta un valor crtico K
c
en el cual la salida 0
1
presente oscilaciones soste-
nidas, todo esto para 0
2
= ctc. El periodo P
c
de tales oscilaciones es medido expe-
rimentalmente mediante un sistema de adquisicin de datos. Entonces las constantes
PID pueden ser halladas mediante:
68
K
p
= u.6K
c
K
d
= u.u7SK
c
P
c
K
= 1.2
K
c
P
c
Los resultados obtenidos varan de acuerdo a 0
2
= ctc, una posible eleccin
sera ubicar 0
2
en su punto medio: 0
2
= 9u.
El experimento anterior debe ser repetido para la articulacin 2. Se obtuvo
los siguientes resultados:
K
p
1
= 78, K
d
1
= 216, K
1
= 7.1
K
p
2
= 84, K
d
2
= 26S, K
2
= 6.7
3.6.3 Controlador simplificado
El modelo del controlador propuesto en la seccin anterior tiene la desventaja
de tener un alto costo computacional, ya que las matrices A
u
u
tiene modulo constante.
69
Figura 3.30 Control para bajas velocidades
Fuente: Elaboracin propia
Entonces los trminos ysgn(q ) y oz
J
(q, q ) sern trminos compensatorios.
En la Figura 3.30 se muestra un controlador PID con compensacin de los trminos
ysgn(q ) y oz
J
(q, q ).
Figura 3.31 Control articular independiente
Fuente: Elaboracin propia
70
Control articular independiente
Una de las formas ms bsicas de controlar un sistema es mediante un con-
trolador PID simple, sin considerar el modelo del sistema, generalmente son tiles
cuando se desea alcanzar un punto en particular y no seguir una trayectoria q(t).
Tal controlador se muestra en la Figura 3.31.
3.6.4 Generacin de trayectorias
La trayectoria requerida para cierta tarea del robot est determinada por q
r
,
q
r
y q
r
. Dependiendo de la tarea que vaya a ejecutar el robot, la determinacin de
q
r
, q
r
y q
r
varia. Por ejemplo si el robot tiene la tarea de mover objetos de un lu-
gar a otro solo interesa conocer el punto inicial y final mientras que la trayectoria
seguida no es de mucha importancia. Pero en nuestro caso debemos garantizar que el
robot siga una trayectoria especfica q
r
(t), una forma de hacer esto es mediante la
interpolacin mediante puntos va. Los puntos va son puntos intermedios entre el
punto inicial y final, pero ya que el sistema de control debe ser alimentado con una
funcin continua q
r
(t), se debe construir interpolaciones entre puntos consecutivos.
En el caso comn de que se requiera trazar patrones conocidos como por
ejemplo lneas rectas, arcos, elipses, etc. puede ser til obtener funciones analticas
del movimiento (a diferencia de los puntos va). Aqu solo se ver a modo de ejem-
plo, la generacin de una lnea recta.
Para construir una lnea recta en forma analtica necesitamos conocer el pun-
to inicial p
|
= |
x
)
2
+(y
]
-y
)
2
I
donde J es la longitud de la lnea recta.
71
Una descripcin paramtrica de una lnea recta est dada por
p(s) = p
+
s
J
(p
]
-p
)
donde s va desde 0 hasta J. En tal caso x(s) y y(s) estn dados por
x(s) = x
+
s
d
(x
]
-x
) (3.44)
y(s) = y
+
s
d
(y
]
-y
) (3.45)
Ahora debemos expresar s como una funcin temporal, debemos tener en
cuenta que la velocidad inicial y final son ambas 0. Una manera simple de definir la
evolucin temporal de s es la siguiente: empieza con velocidad 0 y por un tiempo t
c
mantiene una aceleracin constante o
c
, luego se mantiene a velocidad constante
(o = u) hasta el tiempo I -t
c
, en este punto desacelera con la misma aceleracin o
c
hasta llegar finalmente al reposo en t = I. Lo anterior se muestra en la Figura 3.32.
Figura 3.32 Evolucin temporal de s
Fuente: [1], pg. 68
72
(3.46)
La distancia total recorrida por s debe ser igual a J, sta la dividimos en 3
tramos: u t t
c
; t
c
< t I -t
c
; I -t
c
< t I.
Para cada tramo tenemos:
J
1
=
1
2
o
c
t
c
2
J
2
= o
c
t
c
(I -2t
c
)
J
3
= J
1
entonces debe cumplirse que
J = J
1
+J
2
+J
3
lo que nos da
J = o
c
t
c
2
+o
c
t
c
(I -2t
c
) = o
c
t
c
(I -t
c
)
ya que J y I estn dados, existe una restriccin, es decir, o
c
y t
c
no son indepen-
dientes uno del otro. Suponiendo que predefinimos o
c
, podemos hallar t
c
mediante:
t
c
=
I
2
-
1
2
_I
2
-4
J
o
c
finalmente obtenemos s(t):
s(t) =
1
2
o
c
t
2
; u t t
c
s(t) = o
c
t
c
(t -
t
c
2
) ; t
c
< t I -t
c
s(t) = J -
1
2
o
c
(I -t)
2
; I -t
c
< t I
reemplazando s(t) en (3.44) y (3.45) obtenemos x(t) = x(s(t)) y y(t) = y(s(t)), las
cuales son funciones temporales para construir una lnea recta entre dos puntos en
un tiempo I. Usando el modelo cinemtico inverso de posicin (ec. (3.6) y (3.7))
podemos determinar 0
1
(t) y 0
2
(t), obviamente a partir de esto podemos hallar las
velocidades y aceleraciones. o
c
est restringida a los actuadores, es decir, determina-
73
dos actuadores podran no dar torques suficientes como para generar una aceleracin
o
c
alta.
En el caso de que se desee tener una aceleracin o
c
mnima, debemos consi-
derar que para que eso suceda t
c
debe ser mximo, es decir t
c
= I2, reemplazando
en (3.46) tenemos:
I
2
=
I
2
-
1
2
_I
2
-4
J
o
c
lo que nos da:
o
c
min
=
4J
I
2
Toda la etapa de control y generacin de trayectorias fue implementada en
MATLAB, el cdigo se muestra en el Anexo A.3.
3.7 Resultados Especficos
Mediante el uso de diversas herramientas matemticas, se obtuvo el modelo
cinemtico y dinmico del brazo robot, ste es no lineal y fuertemente acoplado, la
determinacin de los parmetros de dicho modelo se obtuvo mediante mtodos bas-
tante sencillos, la fuerza de friccin herramienta-entorno calculada dio diversos valo-
res un tanto alejados entre ellos para varios experimentos, de los cuales se considero
la media, la variacin puede deberse al modelo no lineal de la friccin y tambin a la
variacin de la fuerza normal herramienta-entorno, esta fuerza normal puede variar
significativamente si el brazo robot esta desnivelado unos cuantos milmetros.
Se obtuvo el modelo dinmico de los actuadores, considerando una inductan-
cia pequea y por tal despreciable, los experimentos realizados para la obtencin de
parmetros demostraron que el modelo se aproximaba a la realidad, sin embargo,
como es conocido, existes factores no lineales en los motores dc, stos tambin afec-
taron los resultados de los experimentos.
74
El costo del prototipo fue el siguiente:
Tabla 3.3 Costo del prototipo
Parte mecnica
Estructura 35.00
Actuadores 78.00
Parte electrnica 37.00
Total S/. 150.00
La tabla anterior no incluye el costo de desarrollo (horas hombre, software,
etc.), el brazo robot es controlado por una PC, el costo de sta y del software MA-
TLAB tampoco se incluyen.
El peso total del brazo robot (incluyendo la base) fue de 410 g, el cual es pe-
queo comparado con otros similares.
Las pruebas que se realizaron consistieron en trazar lneas rectas sobre el es-
pacio de trabajo reducido (160x160 mm), para ello se implemento el controlador con
la ley de control de la ecuacin (3.43). Las funciones temporales de las lneas rectas
trazadas fueron obtenidas mediante las ecuaciones desarrolladas en la seccin 3.6.4.
Se trabajo a una velocidad media I
mcd
igual a 1cm/s. Los trazos obtenidos (en azul)
y los de referencia (en rojo) se muestran en la Figura 3.33.
75
Figura 3.33 Trazos de lneas rectas
76
Captulo IV
Conclusiones y Recomendaciones
4.1 Conclusiones
El modelo cinemtico y dinmico de un brazo robot puede ser obtenido de
manera metdica, se empieza por la determinacin de los parmetros Denavit
Hartenberg, se determina la matriz Jacobiana la cul es un elemento til tanto para
el modelo cinemtico como dinmico, la formulacin de Lagrange ofrece una manera
sencilla de encontrar el modelo dinmico a partir de funciones de energa. Casi todos
los parmetros del modelo dinmico pueden ser hallados mediante mtodos simples
de fsica bsica.
Aunque un motor dc tiene un modelo complejo, ste puede ser simplificado.
Los experimentos estimulo-respuesta ofrecen una manera sencilla de determinar los
parmetros de un motor dc, an si no se cuenta con la hoja de datos del motor. Los
datos congruentes de los experimentos dictan que es posible utilizar un modelo sim-
plificado de un motor dc e incluirlo en el algoritmo de control.
Un brazo robot como el desarrollado aqu no requiere de un diseo mecnico
complejo, ya que est expuesto a bajos esfuerzos adems de que los servomotores
tienen una estructura de gran adaptabilidad.
Los requerimientos de potencia elctrica se calcularon de manera aproxima-
da, stos indican que en general el consumo de potencia por el brazo robot es bajo
para la tarea de trazar a baja velocidad, existen integrados como el PIC, el puente H
y el MAX232 que simplifican enormemente la tarea de suministrar potencia, adquirir
datos y comunicarse con una PC.
77
El uso del MATLAB permite implementar estrategias de control complejas
de alto costo computacional en tiempo real no poniendo limitaciones a la velocidad
del ciclo de control.
En conclusin, el autor considera que el diseo y construccin de un brazo
robot de bajo costo y que de resultados satisfactorios es factible, siempre que se apli-
quen de manera correcta los fundamentos tericos asociados.
4.2 Recomendaciones
El autor recomienda lo siguiente para futuros trabajos:
-Es posible determinar los parmetros de un motor dc. Para un mismo modelo
(cdigo del motor), estos parmetros varan de motor a motor sobre todo si son mo-
tores baratos, eso implica que si es necesario reemplazar uno de ellos, los parmetros
de ste deben hallarse nuevamente. Por tal, si se disea un sistema de control basa-
do en el modelo de los motores sera conveniente usar motores de marcas reconoci-
das.
-La comunicacin serial PC-PIC es algo lenta, sta influye en el periodo del ciclo de
control, este periodo fue de aproximadamente 15ms, un periodo alto obviamente
limita la velocidad de operacin del brazo robot, por tal, sera til investigar o des-
arrollar formas ms eficientes de comunicacin PC-PIC sin elevar mucho el presu-
puesto.
-Las velocidades angulares fueron obtenidas mediante derivacin de las posiciones
sensadas, estas derivaciones generan mucho ruido el cual puede entorpecer el sistema
de control, una solucin posibles a esto es implementar un filtro digital, otra sera
utilizar sensores de velocidad como tacmetros.
78
Bibliografa
[1] T. Bajd et al, Robotics, Springer, 2010.
[2] B. Siciliano et al, Robotics, Modelling, Planning and Control, Springer, 2009.
[3] W. Spong et al, Robot Modeling and Control, John Wiley & Sons, 2005.
[4] R. Paul, Robot Manipulators: Mathematics, Programming and Control, MIT
Press, 1981.
[5] N. Nise, Control Systems Engineering, 6ta ed, John Wiley & Sons, 2011.
[6] D. Lafferty, A Simple, Versatile Robotic Arm for Classroom and Student Labo-
ratory Use, Tesis, Massachusetts Institute Of Technology, 2006.
[7] K. Ogata, Modern Control Engineering, 5ta ed, Prentice Hall, 2010.
[8] W. Wu, DC Motor Parameter Identification Using Speed Step Responses,
Hindawi Publishing Corporation, 2012.
79
Anexos
A.1 Cdigo en MATLAB para el ajuste de curva y
obtencin de los valores
linf=1;
lsup=227;
for i=1:(lsup-linf+1)
dtiempo(i,1)=(i-1)*tiempo(m,1)/m;
ddata(i,1)=graf1(i+linf-1,1)*0.003356105632960;
end
g = fittype( @(k1,k2,k3,x) k3+k1*x+(k1/k2)*exp(-k2*x)-k1/k2)
f = fit(dtiempo,ddata,g)
figure
plot(f,dtiempo,ddata)
A.2 Cdigo en MATLAB para la Calibracin
Cinemtica del brazo robot
clc
clear all
close all
%% variables nominales
l1=1.20e+02;
l2=1.200e+02;
p1=0.0035;
p2=-0.0037;
q1=-0.9;
q2=3.5;
Enominal=[l1 l2 p1 p2 q1 q2]';
%% numero de mediciones
n=9;
%% Seales sensadas por los potencimetros- una S=[0,0]; por cada
medicion
S(1,:)=[631,370];
S(2,:)=[759,838];
S(3,:)=[540,826];
80
S(4,:)=[85,368];
S(5,:)=[609,518];
S(6,:)=[586,730];
S(7,:)=[311,516];
S(8,:)=[320,277];
S(9,:)=[431,462];
%% Mediciones hechas sistema X-Y
XS(1:2,1)=[0;0];
XS(3:4,1)=[0;160];
XS(5:6,1)=[160;160];
XS(7:8,1)=[160;0];
XS(9:10,1)=[0;80];
XS(11:12,1)=[80;160];
XS(13:14,1)=[160;80];
XS(15:16,1)=[80;0];
XS(17:18,1)=[80;80];
%% Bucle
for h=1:10
for i=1:n
s1=S(i,1);
s2=S(i,2);
%% hallando los terminos de A: derivadas parciales
da1=cos(p1*s1+q1);
da2=cos(p1*s1+q1+p2*s2+q2);
da3=-s1*l1*sin(p1*s1+q1)-s1*l2*sin(p1*s1+q1+p2*s2+q2);
da5=-l1*sin(p1*s1+q1)-l2*sin(p1*s1+q1+p2*s2+q2);
da4=-s2*l2*sin(p1*s1+q1+p2*s2+q2);
da6=-l2*sin(p1*s1+q1+p2*s2+q2);
db1=sin(p1*s1+q1);
db2=sin(p1*s1+q1+p2*s2+q2);
db3=s1*l1*cos(p1*s1+q1)+s1*l2*cos(p1*s1+q1+p2*s2+q2);
db5=l1*cos(p1*s1+q1)+l2*cos(p1*s1+q1+p2*s2+q2);
db4=s2*l2*cos(p1*s1+q1+p2*s2+q2);
db6=l2*cos(p1*s1+q1+p2*s2+q2);
A(2*i-1,:)=[da1 da2 da3 da4 da5 da6];
A(2*i,:)=[db1 db2 db3 db4 db5 db6];
%% Hallando los XS Nominales
xn=l1*cos(p1*s1+q1)+l2*cos(p1*s1+q1+p2*s2+q2);
yn=l1*sin(p1*s1+q1)+l2*sin(p1*s1+q1+p2*s2+q2);
xsn=xn+81;
ysn=yn-65;
XSn(2*i-1:2*i,1)=[xsn;ysn];
end
%% Rersultados
Enominal;
81
A;
XS;
XSn;
DeltaX=XS-XSn;
DeltaE=A\DeltaX
Enominal=Enominal+DeltaE
l1=Enominal(1,1);
l2=Enominal(2,1);
p1=Enominal(3,1);
p2=Enominal(4,1);
q1=Enominal(5,1);
q2=Enominal(6,1);
end
A.3 Cdigo en MATLAB del Sistema de Control
clc
clear all
close all
l1=0.12150;
l2=0.12276;
m1=0.100;
m2=0.083;
a1=0.062;
a2=0.066;
I1=0.000141;
I2=0.000130;
fr=0.286;
alfa=[0.0749 0;0 0.0703];
beta=[0.422 0;0 0.451];
gamma=[0.750 0;0 0.680];
sigma=[22.1 0;0 26.3];
p1=0.003292;
q1=-0.7675;
p2=-0.003988;
q2=3.723;
Kp=[78 0;0 84];
Kd=[216 0;0 263];
Ki=[7.1 0;0 6.7];
xi=0.000;
yi=0.000;
82
xf=0.080;
yf=0.000;
Vmed=0.01; %velocidad media
ac=0.02;
dT=0.0001;
d=sqrt((xf-xi)^2+(yf-yi)^2);
T=d/Vmed;
mtf=10000*T;
imtf=int64(mtf);
T=double(imtf/10000);
Tiempo=[0:dT:T]';
T=Tiempo(length(Tiempo));
tc=T/2-0.5*sqrt(T*T-4*d/ac);
for i=1:T/dT+1
if (Tiempo(i,1)<=tc)
S(i,1)=0.5*ac*Tiempo(i,1)^2; end
if (Tiempo(i,1)<=T-tc)&& (Tiempo(i,1)>tc)
S(i,1)=ac*tc*(Tiempo(i,1)-tc/2); end
if (Tiempo(i,1)<=T)&& (Tiempo(i,1)>T-tc) S(i,1)=d-
0.5*ac*(Tiempo(i,1)-T)^2; end
end
X=xi+S*(xf-xi)/d;
Y=yi+S*(yf-yi)/d;
X=X-0.081;
Y=Y+0.065;
%% VALORES DE REFERENCIA
%%Cinematica inversa
TITA2R=acos((X.^2+Y.^2-l1^2-l2^2)/(2*l1*l2));
TITA1R=atan2(Y,X)-atan2((l2*sin(TITA2R)),(l1+l2*cos(TITA2R)));
%%Velocidad Angular
mu=T/dT;
for i=2:mu
W1R(i,1)=(TITA1R(i+1,1)-TITA1R(i-1,1))/(dT*2);
end
W1R(1,1)=W1R(2,1);
W1R(mu+1,1)=W1R(mu,1);
for i=2:mu
W2R(i,1)=(TITA2R(i+1,1)-TITA2R(i-1,1))/(dT*2);
end
W2R(1,1)=W2R(2,1);
W2R(mu+1,1)=W2R(mu,1);
%%aceleracion Angular
for i=2:mu
ALFA1R(i,1)=(TITA1R(i+1,1)-2*TITA1R(i,1)+TITA1R(i-1,1))/(dT^2);
end
ALFA1R(1,1)=ALFA1R(2,1);
83
ALFA1R(mu+1,1)=ALFA1R(mu,1);
for i=2:mu
ALFA2R(i,1)=(TITA2R(i+1,1)-2*TITA2R(i,1)+TITA2R(i-1,1))/(dT^2);
end
ALFA2R(1,1)=ALFA2R(2,1);
ALFA2R(mu+1,1)=ALFA2R(mu,1);
%% puero serial
s=serial('COM1','BaudRate',19200);
fopen(s)
%% Envio inicial para iniciar el bucle del pic
fprintf(s,'%s',17)
fprintf(s,'%s',1)
fprintf(s,'%s',17)
fprintf(s,'%s',1)
%% Inicializacion variables
tic
integ=[0 0]';
stop=0;
m=1;
TiempoM(1,1)=0;
W1(1,1)=0;
W2(1,1)=0;
while (stop==0)
dato1= fscanf(s); %lectura de datos
dato2= fscanf(s); %lectura de datos
%% Tiempo
time=toc;
tic
deltaT(m,1)=time;
if (m>1)TiempoM(m,1)=TiempoM(m-1,1)+deltaT(m,1); end
tiempo_actual=TiempoM(m,1);
ind=int16(tiempo_actual/dT)+1;
if (ind>mu) ind=mu+1; end
Tiempo(ind,1);
%% MOTOR 1
Spot1=str2num(dato1);
sensor1(m,1)=Spot1;
TITA1(m,1)=sensor1(m,1)*p1+q1;
if (m>1) W1(m,1)=(TITA1(m,1)-TITA1(m-1,1))/deltaT(m,1);end
%% MOTOR 2
Spot2=str2num(dato2);
sensor2(m,1)=Spot2;
TITA2(m,1)=sensor2(m,1)*p2+q2;
if (m>1) W2(m,1)=(TITA2(m,1)-TITA2(m-1,1))/deltaT(m,1);end
%% valores medidos
q=[TITA1(m,1) TITA2(m,1)]';
84
qd=[W1(m,1) W2(m,1)]';
%% referencia
qR=[TITA1R(ind,1) TITA2R(ind,1)]';
qdR=[W1R(ind,1) W2R(ind,1)]';
qddR=[ALFA1R(ind,1) ALFA2R(ind,1)]';
%% matrices modelo dinamico y control
C=m2*l1*a2*sin(q(2))*[-2*qd(2) -qd(2);qd(1) 0];
J=[-l1*sin(q(1))-l2*sin(q(1)+q(2)) -
l2*sin(q(1)+q(2));l1*cos(q(1))+l2*cos(q(1)+q(2)) l2*cos(q(1)+q(2))];
f=(fr/norm(J*qd))*J*qd;
b11=I1+I2+m1*a1^2+m2*(l1^2+a2^2+2*l1*a2*cos(q(2)));
b12=I2+m2*(a2^2+l1*a2*cos(q(2)));
b21=I2+m2*(a2^2+l1*a2*cos(q(2)));
b22=I2+m2*a2^2;
B=[b11 b12;b21 b22];
E_pos=qR-q;
E_vel=qdR-qd;
integ=integ+E_pos*time;
A=alfa+sigma*B;
n=(beta+sigma*C)*qd+gamma*sign(qd)+sigma*J'*f;
v=A*(qddR+Kp*E_pos+Kd*E_vel+Ki*integ)+n;
PWM=(1024/12)*v;
pwm1=PWM(1);
pwm2=PWM(2);
alfa1=pwm1 % de -1024 a 1024
beta1=double(int16(alfa1));
cont1=beta1+1024; %de 0 a 2048
bbb1=mod(cont1,64);
aaa1=(cont1-bbb1)/64;
aaa1=aaa1+1;
bbb1=bbb1+1;
alfa2=pwm2; % de -1024 a 1024
beta2=double(int16(alfa2));
cont2=beta2+1024; %de 0 a 2048
bbb2=mod(cont2,64);
aaa2=(cont2-bbb2)/64;
aaa2=aaa2+1;
bbb2=bbb2+1;
%% ENVIAR DATOS AL PIC
fprintf(s,'%s',aaa1)
fprintf(s,'%s',bbb1)
fprintf(s,'%s',aaa2)
fprintf(s,'%s',bbb2)
m=m+1;
85
if (ind==mu+1) stop=1; end
end
%% detiene el pwm
pause(0.03)
fprintf(s,'%s',17)
fprintf(s,'%s',1)
fprintf(s,'%s',17)
fprintf(s,'%s',1)
%%
toc
fclose(s)
%% Visualizacion de Informacion
figure
plot(Tiempo,X)
hold all
plot(Tiempo,Y)
figure
plot(Tiempo,TITA1R)
hold all
plot(Tiempo,TITA2R)
hold all
plot(TiempoM,TITA1)
hold all
plot(TiempoM,TITA2)
figure
plot(Tiempo,W1R)
hold all
plot(Tiempo,W2R)
hold all
plot(TiempoM,W1)
hold all
plot(TiempoM,W2)
A.4 Cdigo en PIC C para el PIC 16F877A
#include <16F877A.h>
#device adc=10
#FUSES NOWDT N! Wa"ch D!# Ti$e%
#FUSES &S '%()"al !)c <= *$h+ ,!% -'.-'& / 0$h+ "! 10 $h+ ,!% -'D
#FUSES NO-UT N! -!1e% U2 Ti$e%
#FUSES NO-3OTE'T '!de n!" 2%!"ec"ed ,%!$ %eadin#
#FUSES NODE4U5 N! De6u# $!de ,!% 7'D
#FUSES NO43OWNOUT N! 6%!1n!u" %e)e"
#FUSES NO89- N! l!1 v!l"a#e 2%#$in#/ 40:-7'16; !% 4<:-7'18; u)ed ,!% 7O
#FUSES NO'-D N! EE 2%!"ec"i!n
86
#FUSES NOW3T -%!#%a$ $e$!%( n!" 1%i"e 2%!"ec"ed
#u)e dela(:cl!c==>0000000;
#u)e %)>0>:6aud=1?>00/2a%i"(=N/@$i"=-7NA'6/%cv=-7NA'7/6i")=8; D73E'T79A 'O.UN7'A'7ON
SE37A8
#4BTE T37SA = 0@8<
#4BTE -O3TA = 0@0<
#4BTE T37S4 = 0@86
#4BTE -O3T4 = 0@06
#4BTE T37S' = 0@87
#4BTE -O3T' = 0@07
#4BTE T37SD = 0@88
#4BTE -O3TD = 0@08
v!id $ain:;
C
)e"u2AadcA2!%"):A88AANA8O5;D
)e"u2Aadc:AD'A'8O'EAD79A6*;D
)e"u2A"i$e%A>:T>AD79A4BA1/><</1;D iniciali+a% "i$e% >
)e"u2Acc21:''-A-W.;D ''-1 en $!d! -W.
)e"u2Acc2>:''-A-W.;D ''-> en $!d! -W.
9A37A48ES
cha% da"!1D
cha% da"!>D
cha% da"!0D
cha% da"!*D
in"16 da1$a(D
in"16 da1$enD
in"16 da>$a(D
in"16 da>$enD
in"16 c!n"1D
in"16 c!n">D
in"16 21$1D
in"16 21$>D
in"16 da"!D
7N7'7A87FA'7ON
6i"Aclea%:T37S'/1;D
6i"Aclea%:T37S'/>;D
6i"Aclea%:T37SD/0;D
6i"Aclea%:T37SD/1;D
6i"Aclea%:T37SD/>;D
6i"Aclea%:T37SD/0;D
!u"2u"Al!1:-7NAD0;D
!u"2u"Al!1:-7NAD1;D
!u"2u"Al!1:-7NAD>;D
!u"2u"Al!1:-7NAD0;D
87
8E'TU3A DATOS 7N7'7A8ES
2%in",:GHnG;D
da"!1=#e"cha%:;D
da"!>=#e"cha%:;D
da"!0=#e"cha%:;D
da"!*=#e"cha%:;D
1hile:1; C
SENSADO .OTO3 1
)e"AadcAchannel:0;D
dela(Au):>0;D
da"! = %eadAadc:;D
2%in",:GIluHnG/da"!;D
SENSADO .OTO3 >
)e"AadcAchannel:1;D
dela(Au):>0;D
da"! = %eadAadc:;D
2%in",:GIluHnG/da"!;D
8E'TU3A 'O.UN7'A'7ON SE37A8
da"!1=#e"cha%:;D
da"!>=#e"cha%:;D
da"!0=#e"cha%:;D
da"!*=#e"cha%:;D
'ON9E3'7ON DE DATOS
da1$a(=:in"16;da"!1D
da1$en=:in"16;da"!>D
da>$a(=:in"16;da"!0D
da>$en=:in"16;da"!*D
'A8'U8O DE8 9A8O3 O3757NA8
c!n"1=da1$a(J6*Kda1$enL6<D
c!n">=da>$a(J6*Kda>$enL6<D
SEMA8 -W. A .OTO3 1
i, :c!n"1>10>*;
C !u"2u"Ahi#h:-7NAD1;D
!u"2u"Al!1:-7NAD0;D
21$1=c!n"1L10>*D
)e"A21$1Adu"(:21$1;D
N el)e i, :c!n"1<10>*;
C !u"2u"Ahi#h:-7NAD0;D
!u"2u"Al!1:-7NAD1;D
21$1=10>*Lc!n"1D
)e"A21$1Adu"(:21$1;D
N
el)e
C !u"2u"Al!1:-7NAD0;D
88
!u"2u"Al!1:-7NAD1;D
)e"A21$1Adu"(:0;D
N
SEMA8 -W. A .OTO3 >
i, :c!n">>10>*;
C !u"2u"Ahi#h:-7NAD0;D
!u"2u"Al!1:-7NAD>;D
21$>=c!n">L10>*D
)e"A21$>Adu"(:21$>;D
N el)e i, :c!n"><10>*;
C !u"2u"Ahi#h:-7NAD>;D
!u"2u"Al!1:-7NAD0;D
21$>=10>*Lc!n">D
)e"A21$>Adu"(:21$>;D
N
el)e
C !u"2u"Al!1:-7NAD>;D
!u"2u"Al!1:-7NAD0;D
)e"A21$>Adu"(:0;D
N
N
)e"u2AadcA2!%"):NOAANA8O5S;D
)e"u2Aadc:AD'A'8O'EAD79A>;D
)e"u2A2)2:-S-AD7SA48ED;D
)e"u2A)2i:S-7ASSAD7SA48ED;D
)e"u2A"i$e%A0:3T''A7NTE3NA8O3T''AD79A1;D
)e"u2A"i$e%A1:T1AD7SA48ED;D
)e"u2A"i$e%A>:T>AD7SA48ED/0/1;D
)e"u2Ac!$2a%a"!%:N'AN'AN'AN';D
)e"u2Av%e,:FA8SE;D
N