Академический Документы
Профессиональный Документы
Культура Документы
AUTOMATIZACION
Nombre de reconocimiento
(DN): cn=AUTOMATIZACION,
o=UMSNH, ou=DGB,
email=soporte@biblioteca.
dgb.umich.mx, c=MX
Fecha: 2011.01.24 12:49:57
-06'00'
Y CONSTRUCCION
DE UN ROBOT SCARA
DISENO
UTILIZANDO MOTORES DE CD DE PASOS Y CON
ESCOBILLAS
TESIS
Presenta
Omar Rodrguez P
aez
Leonardo Romero Mu
noz
Asesor de Tesis
Resumen
En esta tesis se presenta una segunda version de un brazo de robot manipulador
SCARA desarrollado en la Division de Estudios de Postgrado de la Facultad de Ingeniera
Electrica de la UMSNH. Primeramente se describe de manera breve las partes que componen
al robot SCARA y el funcionamiento que desempe
na cada una de estas. Posteriormente se
explican estas partes de manera detallada. Al final se presentan las pruebas que se realizaron
y las conclusiones.
El objetivo esencial es ayudar al impulso del desarrollo de la tecnologa de la
robotica en la Universidad Michoacana de San Nicolas de Hidalgo, desarrollando un robot
SCARA de cuatro grados de libertad que utiliza motores de pasos y de CD con escobillas
de manera que sea accesible economicamente, flexible y que tenga capacidad para ser usado
en la industria nacional. Presenta ademas una gran ventaja: es de plataforma abierta, es
decir la informacion tecnica se encuentra al alcance del usuario final, no existen codigos
propietarios ni cajas negras, y sobre todo no es necesario invertir en su importacion.
Durante el desarrollo de este trabajo, los principales problemas que se enfrentaron
fueron: (1) El dise
no y construccion de los circuitos de potencia, control e instrumentaci
on
asociados al brazo-robot para que tenga el mejor comportamiento posible en su movimiento
y logre situarse como un buen candidato para realizar aplicaciones en la industria nacional.
(2) El dise
no y construccion de una fuente de potencia lo suficientemente robusta para
soportar la corriente demandada por los motores del robot y los circuitos mencionados
anteriormente.
Se utilizo software ya desarrollado en trabajos anteriores, adecuandolo solamente
para los motores del robot SCARA de esta version. Como primera aplicacion, se pretende
que este robot apoye a la fabricacion de guitarras en Paracho Mich.
Contenido
Dedicatoria . . . . . .
Resumen . . . . . . .
Contenido . . . . . . .
Lista de Figuras . . .
Lista de Tablas . . . .
Lista de Smbolos . . .
Lista de Publicaciones
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1. Introduccion
1.1. Antecedentes . . . . . . . .
1.2. Objetivo de la tesis . . . . .
1.3. Justificaci
on . . . . . . . . .
1.4. Organizacion del documento
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2. El robot SCARA
2.1. Arquitectura del robot SCARA . . .
2.2. Motores . . . . . . . . . . . . . . . .
2.2.1. Motores de CD con escobillas
2.2.2. Motores de pasos . . . . . . .
2.3. Sensores . . . . . . . . . . . . . . . .
2.3.1. Odometro . . . . . . . . . . .
2.3.2. Sensores de lmite . . . . . .
2.4. Fuente de alimentaci
on . . . . . . . .
2.5. Microcontrolador . . . . . . . . . . .
2.5.1. Programaci
on . . . . . . . . .
2.6. Esquema de conexion . . . . . . . . .
2.7. Resumen . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
iii
.
v
.
vi
.
xi
. xv
. xvii
. xix
.
.
.
.
.
.
.
.
1
2
9
9
10
.
.
.
.
.
.
.
.
.
.
.
.
13
13
13
14
15
16
17
19
19
21
22
23
23
.
.
.
.
.
27
28
29
29
30
31
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Contenido
viii
. . . . . .
de pasos
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
36
37
39
40
41
42
45
46
49
49
51
.
.
.
.
.
.
.
55
56
59
61
63
65
71
71
5. Fuente de alimentaci
on
5.0.1. Circuito regulador de voltaje ajustable LM338 . . . . . . . . . . . .
5.0.2. Circuito regulador de voltaje L7805 . . . . . . . . . . . . . . . . . .
73
74
75
6. Pruebas y resultados
6.1. Dise
no de la fuente de alimentacion y pruebas realizadas . . . . . . . . . . .
6.1.1. Otros esquemas probados e investigados . . . . . . . . . . . . . . . .
6.1.2. Pruebas realizadas a la fuente de alimentacion operando los dos motores de pasos con distintos valores del snubber de sobrevoltaje . . .
6.2. Pruebas realizadas al CI SLA7062M . . . . . . . . . . . . . . . . . . . . . .
6.3. Microcontrolador y pruebas de software . . . . . . . . . . . . . . . . . . . .
6.4. Pruebas del robot realizadas sobre madera . . . . . . . . . . . . . . . . . . .
6.4.1. Cinematica del robot . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4.2. Cinematica inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.5. Comparacion de costos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.6. Sugerencias para el desarrollo del robot . . . . . . . . . . . . . . . . . . . .
77
77
78
81
85
86
89
89
90
94
95
7. Conclusiones
7.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2. Sugerencias para trabajos futuros . . . . . . . . . . . . . . . . . . . . . . . .
97
97
99
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Contenido
ix
.
.
.
.
.
107
107
107
107
107
108
117
117
117
123
E. Snubbers: funci
on y clasificacion
E.1. Funcion y clasificacion de los snubbers . . . . . . . . . . . . . . . . . . . . .
131
131
135
135
135
137
140
142
142
145
148
148
157
158
159
160
165
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Referencias
171
Glosario
179
Indice alfabetico
182
Lista de Figuras
1.1. Categoras de los robots manipuladores. . . . . . . . . . . . . . . . . . . . .
1.2. Configuraci
on tpica de un robot SCARA y su respectiva area de trabajo. .
1.3. Diferentes robots SCARA comerciales. . . . . . . . . . . . . . . . . . . . . .
2.1.
2.2.
2.3.
2.4.
2.5.
2.6.
2.7.
4
5
6
18
19
20
20
22
24
25
27
29
30
30
31
32
33
33
34
36
36
37
38
39
xi
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
14
15
15
16
17
18
Lista de Figuras
xii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
40
42
43
44
45
47
48
49
52
53
53
54
54
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
55
56
58
59
60
62
64
65
65
67
68
70
71
5.1.
5.2.
5.3.
5.4.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
74
75
75
76
79
80
Diagrama de la fuente de 24 V de CD a 5 A.
Circuito de dos fuentes de 24 V. . . . . . . .
Diagrama electrico de la fuente de 5 V de CD
Circuito de la fuente de 5V . . . . . . . . . .
.
.
a
.
.
.
1
.
. .
. .
A.
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
83
84
85
86
87
Lista de Figuras
xiii
6.13. Angulos
, y 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.14. Angulo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.15. Robot trabajando con madera. . . . . . . . . . . . . . . . . . . . . . . . . .
B.1.
B.2.
B.3.
B.4.
B.5.
B.6.
B.7.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
88
89
90
91
92
93
94
95
.
.
.
.
.
.
.
108
109
109
110
111
114
115
118
119
D.1.
D.2.
D.3.
D.4.
D.5.
D.6.
D.7.
124
124
125
126
127
128
129
120
121
121
Lista de Tablas
3.1.
3.2.
3.3.
3.4.
Secuencia
Secuencia
Secuencia
Modos de
.
.
.
.
32
33
34
48
67
87
94
104
112
113
xv
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Lista de Smbolos
V
B
F
I
l
VCD
Ton
Tof f
Tper
DC
Vprom
VL
Vs
Vmotor
Rsn
Csn
Dsn
Rc
Imed
Area
definida por la forma de un conductor.
Angulo
entre el campo magnetico y el conductor.
Voltaje de CD.
Flujo magnetico.
Tiempo de encendido de la se
nal de PWM.
Tiempo de apagado de la se
nal de PWM.
Periodo de la se
nal de PWM.
Ciclo de trabajo de la se
nal de PWM.
Voltaje promedio de la se
nal de PWM.
Voltaje en una inductancia.
Voltaje de suministro del puente H.
Voltaje promedio en terminales del motor.
Resistencia del snubber de sobrevoltaje.
Capacitor del snubber de sobrevoltaje.
Diodo del snubber de sobrevoltaje.
Resistencia que sensa la corriente.
Corriente medida indirectamente por el convertidor analogico digital.
xvii
Lista de Publicaciones
Un resumen del captulo 2 se presento en el artculo:
Dise
no y Construcci
on de un Robot SCARA usando Motores de Pasos y CD
con Escobillas, Omar Rodrguez Paez y Leonardo Romero Mu
noz. En el 3er
Congreso Estatal de Ciencia y Tecnologa realizado el 4 de Octubre del 2007 en
la Casa de Gobierno del Estado de Michoacan, en Morelia Mich.
xix
Captulo 1
Introducci
on
Esta tesis trata sobre el dise
no y construccion de un brazo-robot tipo SCARA (del
ingles Selective Compliance Assembly Robot Arm [Robotics06b]) de 4 grados de libertad,
de plataforma abierta, desarrollado en la division de Estudios de Posgrado de la Facultad
de Ingeniera Eectrica de la UMSNH.
En la actualidad, practicamente todos los robots SCARA que se encuentran en el
mercado son de origen extranjero. Para que una empresa establecida en el pas consiga un
robot de este tipo es necesario importarlo. Esto trae consigo varias desventajas [Romero01]:
(1) El costo de adquisicion es elevado y se incrementa a
un mas con el pago de gastos de
importacion (alrededor de un 35 % adicional), (2) el mantenimiento es ineficiente y caro, si
ocurre alguna avera es necesario exportarlo y reimportarlo con todo lo que ello implica, o
bien, llamar a un equipo de tecnicos expertos de la empresa extranjera a la que se le compro y
pagar los servicios y viaticos del grupo; (3) es muy com
un que se trate de sistemas cerrados,
por lo que no es posible a
nadir nuevas capacidades.
Para enfrentar este problema se esta desarrollando software y hardware, libre e
independiente, como es el caso de un peque
no grupo de investigadores japoneses que esperan
emular el exito del movimiento del codigo abierto que ha tenido el sistema operativo Linux,
en el mundo de los humanoides [Williams02, Arellano05]. El proyecto se llama Open PINO
Platform, cuya intencion es acelerar la investigacion y desarrollo de robots humanoides
difundiendo a todo mundo la informacion tecnica de PINO.
Siguiendo esta idea, se desarrolla y construye un robot SCARA flexible, robusto,
expansible, economico y de plataforma abierta. El objetivo esencial es contribuir al impulso
del desarrollo de la tecnologa en el area de robotica, mediante la descripcion detallada del
1
Captulo 1: Introduccion
1.1.
Antecedentes
El termino robot fue introducido en 1917 por Karel Capek en su obra Opilec
[Ramrez98, Spong89], proviente de la palabra checoslovaca robota, que significa labor monotona o trabajo forzado. A traves de los a
nos desde su aparici
on, el significado de robot ha
tenido diversas definiciones. Sin embargo, la definicion con mayor aceptacion es la adoptada
por el Instituto Norteamericano de Robots [Ramrez98]:
Un robot industrial es un manipulador reprogramable con funciones m
ultiples, dise
nado para mover materiales, partes, herramientas o dispositivos especializados a
traves de movimientos programados variables para el desempe
no de una gran diversidad de tareas.
Otras definiciones, tomadas de [Romero99] son:
Un robot es una maquina de proposito general que puede ser programada para realizar
una variedad de tareas de forma similar a una computadora, que es basicamente, un
circuito electronico capaz de ser programado para realizar una gran variedad de tareas
[Mckerrow91].
Los robots son dispositivos mecanicos versatiles equipados con actuadores y sensores
bajo el control de un sistema computacional. Los robots son programables y pueden
realizar tareas ejecutando movimientos en el espacio fsico, sujeto a las leyes naturales
[Latombe91].
1.1. Antecedentes
Los robots se dividen basicamente en dos tipos: manipuladores y moviles. La mayora de robots de uso industrial son de tipo manipuladores. Estan montados sobre una
base fija que les sirve de referencia para definir su espacio de trabajo y su posicion dentro
del mismo. Estos robots son similares en capacidad de movimiento a un brazo humano. Por
otra parte, los robots moviles son los robots que pueden navegar o moverse de una posicion
inicial hasta una posicion final o destino, evitando colisiones. Para lograrlo, el robot movil
dispone de sensores que le permiten conocer su ambiente y actuadores que le dan movilidad
[Romero99].
En general, un robot manipulador consta de un brazo mecanico articulado (manipulador), sensores de reconocimiento del ambiente, actuadores para moverse, alg
un elemento terminal (herrramienta) para realizar una tarea especfica y uno o varios controladores que dan las
ordenes a los actuadores y reciben la informacion de los sensores
[Romero99, Barrientos97, Ros07]. Las grandes ventajas que representan para la industria
el uso de los robots manipuladores van desde el incremento de la produccion, la calidad, la
eficiencia, confiabilidad, flexibilidad, la disminucion del uso de la mano de obra y reduccion
de los costos de produccion; hasta su uso en ambientes inseguros para el ser humano como
las tareas en zonas t
oxicas, radioactivas y explosivas, as como en aplicaciones espaciales y
submarinas [Ramrez98, Romero99, Ros07].
Los brazos manipuladores estan compuestos de eslabones o enlaces conectados por
medio de uniones o articulaciones en una cadena cinematica abierta [Petriu06]. Existen dos
tipos comunes de uniones: (1) rotacionales (R), que permite una rotacion relativa entre dos
uniones (tal como una bisagra); y (2) prismaticas (P), que permiten un movimiento lineal
relativo entre dos uniones [Spong89, Ros07]. Las uniones de un manipulador se mueven
debido a los actuadores que estan asociados a estas, que pueden ser electricos, neumaticos
o hidraulicos.
Existe una gran variedad de tipos de brazos manipuladores y se pueden clasificar de distintas formas: por su estructura, por su forma de control, por su area de aplicacion, por su fuente de potencia, por su geometra, por su movimiento cinematico, etc.
[Spong89, Ramrez98]. Hoy en da, los manipuladores est
an agrupados en clases de acuerdo
a la combinacion de uniones usadas en su construccion [Petriu06], y son usualmente clasificados en base a los tres primeros ejes del robot (base, hombro y codo). Generalmente
se encuentran en una de las siguientes categoras (ver Figura 1.1): (a) manipulador de
coordenadas cartesianas (PPP), que tienen tres ejes prismaticos y que pueden llegar a
Captulo 1: Introduccion
cualquier posicion dentro de su espacio de trabajo rectangular a traves de movimientos cartesianos de sus eslabones; (b) manipulador de coordenadas cilndricas (RPP), que se
forma al sustituir la union base del manipulador de coordenadas cartesianas por una union
rotacional y puede alcanzar cualquier posicion dentro de su espacio de trabajo cilndrico con
una combinacion de movimientos de rotacion y traslacion; (c) manipulador de coordenadas polares o esf
ericas (RRP), que se forma al sustituir tambien la union hombro del
manipulador de coordenadas cilndricas por una union rotacional, con lo cual el espacio de
trabajo de este manipulador se parece a un grueso armazon esferico; y (d) manipulador de
coordenadas angulares (RRR), que se forma al a
nadir una union rotacional en la union
codo del manipulador de coordenadas esfericas, cuyo espacio de trabajo es practicamente
todo el interior de una esfera [Ros07].
Trazo
vertical
Trazo horizontal
Topes de
movimiento
Espacio de trabajo
Alcance horizontal
minimo
Alcance horizontal
maximo
Barrido alrededor
de la base
Giro vertical
alrededor del
hombro
Giro alrededor
de la base
Trazo
horizontal
Alcance
horizontal
Figura 1.1: Diferentes categoras en las que se encuentran los robots manipuladores y sus
respectivas areas de trabajo [Petriu06].
1.1. Antecedentes
(c)
Area
de trabajo tpica de un robot SCARA
En 1979 el dise
no del robot SCARA (Selective Compliance Assembly Robot Arm),
mostrado en la Figura 1.2, fue introducido por primera vez en Japon [Spong89]. Debido a
su configuracion adquirio rapidamente gran popularidad en operaciones de montaje. Este
tipo de brazo robot se clasifica en la categora de manipuladores de coordenadas cilndricas.
En general, los robots SCARA tienen 4 grados de libertad y se pueden mover a cualquier
coordenada X-Y-Z dentro de su espacio de trabajo. Ademas, posee otro movimiento sobre su propio eje en el plano Z, denominado com
unmente rotacion de mu
neca (Theta-Z)
[Robotics06b]. Los movimientos en las direcciones X, Y y Theta-Z se obtienen con tres
uniones rotacionales de ejes paralelos. El movimiento vertical es usualmente un eje lineal
independiente que se encuentra ya sea en el extremo del brazo o en la base del robot, el cual
puede ser usado para mover objetos relativamente pesados en el plano horizontal. Como
virtud del esquema de uniones rotacionales de ejes paralelos, el brazo-robot puede ubicarse
en cualquier punto de las direcciones X y Y, pero es rgido en la direccion Z, de ah el
termino Selective Compliance [Yamaha06]. Lo anterior es una ventaja para varios tipos de
operaciones de montaje. Otro atributo que tienen los robots SCARA es que emulan las caractersticas de un brazo humano, por lo que tambien se denominan brazos articulados. Esta
caracterstica permite al manipulador extenderse hasta areas confinadas y despues replegarse. Las uniones rotatorias de los brazos manipuladores SCARA son a menudo preferidos
por su fuerza, poca friccion y fiabilidad [Petriu06]. La Figura 1.3 muestra algunos robots
Captulo 1: Introduccion
comerciales.
(a) SCARA JRS 4400 de JANO- (b) SCARA de IntelliSpen- (c) SCARA
ME [Com06a].
ce Inc.[Solutions06].
Ki-
NEDEx
Peak
de
Robotics
[Robotics06a]
(d) SCARA
de Peak Robotics
de Peak Robotics
de Peak Robotics
[Robotics06a]
[Robotics06a]
[Robotics06a]
Adept [Technology]
Los robots SCARA son ideales para operaciones de precision a gran velocidad, tales
como cerrar, sellar, distribuir, insertar partes (pick and place), montar, trasladar componentes, envasar, empaquetar, pintar en spray, soldar, perforar, rellenar, recubrir, atornillar,
etc. [Actuator06, Yamaha06, Wikipedia06, Salimian06, Brumson06]. Son ampliamente utilizados en las industrias de moldeado plastico, circuitos impresos electronicos (para colocar
circuitos integrados y otros componentes en las tarjetas de computadoras y equipo simi-
1.1. Antecedentes
Captulo 1: Introduccion
1.2.
Objetivo de la tesis
El objetivo general de esta tesis es contribuir al impulso e investigacion en el
area
de la robotica a traves del desarrollo de un robot SCARA de cuatro grados de libertad que
sea flexible, robusto, expandible, economico y de plataforma abierta; cuyo uso sea accesible
a medianas y peque
nas empresas. Se pretende que este robot apoye a la fabricaci
on de
guitarras en Paracho Mich.
1.3.
Justificaci
on
Debido a los altos costos de los robots SCARA comerciales y sus plataformas
cerradas es que se decide construir uno localmente, usando una plataforma abierta y un
software libre para que peque
nas y medianas empresas puedan disponer de el, ampliarlo,
10
Captulo 1: Introduccion
1.4.
Organizaci
on del documento
El presente trabajo se encuentra dividido en 7 Captulos, 6 Apendices y las refe-
rencias bibliograficas, donde los lectores interesados en estos temas pueden encontrar una
referencia comoda y facil de usar.
En el captulo 2 se presentan de forma general, los dispositivos que conformaran al
robot SCARA de 4 grados de libertad.
El captulo 3, presenta detalladamente el funcionamiento de los motores de pasos, los
esquemas mas comunes para su control y finalmente el circuito controlador utilizado
para estos motores.
El captulo 4, describe extensivamente el funcionamiento de los motores de CD con escobillas, los esquemas mas comunes para su control y finalmente el circuito controlador
utilizado en los motores del robot.
En el captulo 5 se explican las partes de la fuente de alimentacion, los niveles de
voltaje requeridos y los circuitos utilizados.
El captulo 6 presenta las pruebas hechas sobre cada parte del robot, su operacion en
conjunto y los resultados obtenidos.
El captulo 7 descubre las conclusiones de este trabajo y tambien expone algunas
lineas de desarrollo futuras.
Los apendices contienen las hojas de datos de los circuitos utilizados, los circuitos
impresos, los comandos usados para mover al robot, el codigo de los programas usados
e informacion adiccional.
11
Captulo 2
El robot SCARA
Se presenta en este captulo el robot SCARA construido, describiendo su arquitectura, as como las caractersticas y el funcionamiento de sus componentes principales:
estructura fsica, motores, sensores, fuente de alimentacion y microcontrolador. De esta manera se tendra un concepto general del robot para posteriormente describir detalladamente
cada una de estas partes.
2.1.
integran el robot [Estrada06]. La Figura 2.1 muestra el robot SCARA descrito en esta tesis.
Se trata de un robot SCARA de 4 grados de libertad (en ingles Degree of Freedom DOF)
construido localmente, fijo en su base y hecho de acero y aluminio. El robot tiene una altura
aproximada de 65 cm, la extension maxima de su brazo es de 50 cm. aproximadamente, y
su peso se encuentra alrededor de los 45 Kg. La estructura fsica del robot fue realizada por
una peque
na compa
na dedicada a la robotica, establecida en Paracho, Michoacan, llamada
Cervantes Co.
2.2.
Motores
Los elementos que proporcionan movimiento a los ejes del robot SCARA son los
14
[Ros07].
Existen muchos tipos de motores, pero solo unos cuantos son u
tiles en robotica,
y dentro de estos se encuentran los motores de corriente directa [Jones98]. Los motores
o servomotores de CD son preferidos debido a su relativa facilidad para ser controlados
comparados con otros tipos de motores de CD y con los motores de CA [Estrada06].
El robot cuenta con dos motores de pasos, uno para el hombro y otro para el codo,
estos permiten un movimiento sobre los ejes X y Y; y dos motores de CD con escobillas
para el eje Theta (denominado comunmente rotacion de mu
neca) y Theta-Z.
2.2.1.
de 24 V, de las series GM8000 y GM9000; dotados de una caja de engranes para reducir la
15
2.2. Motores
(c) Encoder
HP
Figura 2.2: Imagenes de los motores de CD y del encoder usados en el robot SCARA
[Automation06].
2.2.2.
Motores de pasos
Los motores de pasos utilizados son unipolares de la marca Mycom modelo PS4913M-
02B 2 phase high resolution stepping motor, de 2 fases, 12v, 1.8A/fase, 800pasos/rev (0.45 /paso),
par maximo de 486 oz-in. Tiene una longitud de 5 pulgadas, un peso de 3.6Kg y una exactitud de 3 minutos de grado. La Figura 2.3 muestra una fotografa del motor de pasos, el
cual tiene un costo de 145.8 USD cada uno mas gastos de importacion y envo. Este tipo de
motores se utilizan cuando el movimiento y la posicion se tienen que controlar con precision
[Wildi02].
La Figura 2.4 muestra los elementos esenciales del esquema de control de un motor
de pasos. El microcontrolador produce los pulsos que controlan al motor de pasos. Cada paso
que avanza el motor corresponde a un pulso que aplica el microcontrolador al circuito de
control. Variando la razon de pulso, se puede hacer que el motor avance muy lentamente, un
paso a la vez, o que gire a velocidades altas. Los pulsos se cuentan y almacenan positivamente
cuando el motor gira en un sentido y se cuentan y almacenan negativamente cuando el motor
gira en el otro sentido. Como resultado, siempre se conoce con una exactitud de un paso el
16
n
umero total de pasos que avanza el motor, as como el n
umero de revoluciones que gira el
motor [Wildi02].
Microcontrolador
Circuito de
control
Motor
de Pasos
2.3.
Sensores
De acuerdo a [Jones98], un sensor es un transductor que convierte alg
un fenomeno
fsico en se
nales electricas que el microcontrolador puede leer. La funcion mas importante
de un sensor para un sistema embebido recae en el envo de informacion del mundo real
al mundo abstracto de la unidad l
ogica de procesamiento [Valvano04]. Dentro del area de
robotica existen varios tipos de sensores, sin embargo los mas utilizados son aquellos que
proporcionan datos de movimiento, de cambios inerciales y aquellos que miden la estructura
externa en el ambiente [Arellano05]. El robot SCARA desarrollado cuenta con sensores
1
Los motores de pasos tienen un error de 3 a 5 % del paso y dicho error no es acumulativo de un paso a
otro [Circuits06].
17
2.3. Sensores
2.3.1.
Od
ometro
Un odometro es un sensor que mide la posicion o rango de rotacion de un eje, la
Odomtro
Motor
Los odometros incrementales permiten saber el sentido de giro del motor utilizando
dos LEDs y dos fototransistores colocados en cuadratura, esto es, uno adelantado 90 del
periodo del otro. As, conociendo como cambian las dos se
nales (denominadas A y B), se
puede conocer el sentido de rotacion. Ademas de estas dos se
nales, tambien existe una
18
tercera se
nal (se
nal I) que se activa cuando la flecha del motor ha producido una vuelta
completa. De esta forma, los odometros permiten hacer una retroalimentacion del estado de
giro de la flecha de los motores y con ello se logra tener un mayor control sobre la posicion,
velocidad y aceleracion del robot.
En la Figura 2.6 se muestran las se
nales generadas por el od
ometro y en la Figura
2.7(a) se observa la foto de la cabeza lectora del odometro o encoder marca HP modelo
HEDS-9140#A00 que utilizan los motores de CD Pittman del robot SCARA. En la Figura
2.7(b) se puede apreciar la disposicion fsica de los elementos que conforman el odometro.
Seal B
Seal A
Seal I
Figura 2.6: Se
nal en cuadratura generada por el odometro.
(a) Imagen de la cabeza lec- (b) Imagen del montaje del encotora, marca HP modelo
HEDS-9140#A00, de los
SCARA.
Figura 2.7: Imagenes del odometro o encoder que utilizan los motores Pittman del robot
SCARA construido.
2.3.2.
19
Sensores de lmite
Los sensores de lmite son tambien llamados sensores de contacto, interruptores de
tope (top switches) o bumpers. En la Figura 2.8 se muestra este tipo de sensor.
2.4.
Fuente de alimentaci
on
Otra parte del robot SCARA que es importante describir es la fuente de poten-
cia o de energa que proporciona la energa necesaria para que todos los elementos del
robot funcionen adecuadamente: motores, controladores, encoders, sensores de lmite y el
microcontrolador.
Debido a que se trata de un robot SCARA que por lo general se encuentra en la
industria y es fijo en su base, no esta provisto de bateras o acumuladores para proporcionar
20
+5V
10 K
Microcontrolador
10 K
S1
Nc
la energa a los dispositivos que conforman el robot. En cambio, toma energa del proveedor
de servicios electricos para llevar a cabo su proposito.
Para alimentar todos los dispositivos del robot mencionados es necesario transformar el voltaje de CA que recibe la fuente, a un voltaje de CD con los niveles adecuados
para cada elemento; esto se realiza mediante 5 fuentes reguladas: a) 4 fuentes de 24V para
la etapa de potencia: una para cada motor de pasos, una para los dos motores de CD y otra
para los niveles constantes de 24V que requieren los controladores de los motores de pasos
(vease la seccion 3.5.1), b) Una fuente de 5V para la etapa de control e instrumentacion
(microcontrolador, encoders y sensores de lmite). En la Figura 2.10 se muestran imagenes
de la fuente de alimentaci
on.
on
(a) Vista lateral de la fuente de alimentaci
on (b) Vista superior de la fuente de alimentaci
2.5. Microcontrolador
2.5.
21
Microcontrolador
El microcontrolador es el dispositivo mas sofisticado del robot, el cual proporciona
ventajas u
tiles en cuanto a versatilidad, consumo de energa, tama
no y facilidad de uso. Pero
sobre todo, el microcontrolador introduce una herramienta muy poderosa en la solucion de
m
ultiples problemas de dise
no al controlar el robot: el software [Arellano05].
El robot SCARA usa un solo modulo Adapt9S12DP256 con el microcontrolador
9S12DP256C de Motorola [Arts04], el cual se muestra en la Figura 2.11.
El microcontrolador 9S12DP256 es un dispositivo de 16-bits compuesto de perifericos estandar on-chip. La Figura 2.11(a) muestra el diagrama de los principales bloques del
modulo Adapt9S12DP256. Contiene una unidad central de procesamiento HCS12CPU, 256
KB de Flash EEPROM, 12 KB de RAM, 4 KB de EEPROM, dos interfaces de comunicacion serial asncrona (SCI), tres interfaces perifericas (SPI), un temporizador de captura
mejorado de 8 canales, dos convertidores analogicos de 10 bits (ADC), un puerto de modulacion de ancho de pulso (PWM) con 8 canales, un controlador de enlace de datos digitales,
29 canales digitales discretos de I/O (Puerto A, Puerto B, Puerto K y Puerto E), 20 lneas
digitales discretas de I/O con capacidad de interrupcion y activacion, 5 CAN 2.0 A,B de
modulos compatibles de software (MSCAN12), y un Bus Inter-IC. El microcontrolador tiene
un bus de datos de 16 bits internamente, sin embargo, el bus externo puede operar a 8 bits.
Adem
as utiliza 5 V de corriente regulada y trabaja a una frecuencia maxima de reloj de 24
MHz. Para obtener informacion mas detallada del microcontrolador ver [Motorola02].
El microcontrolador juega un papel de vital importancia en el desarrollo del robot
SCARA, ya que se encarga de realizar m
ultiples tareas entre las cuales se encuentran proporcionar las instrucciones de control de velocidad y posicion de los motores, la adquisicion
de datos (a traves de sensores) y la comunicacion con la PC. En la Figura 2.12 se muestran
imagenes de la caja que aloja al microcontolador y los controladores de los motores de CD
y de pasos.
22
HCS12CPU
2 x SCI
IIC
V reg 5V to 2.5V
16key Wakeup
IRQ Ports
Internal Bus
3 x SPI
256K FLASH
12K RAM
4K EEPROM
ATD0
8 ch, 10bit
ATD1
8 ch, 10bit
5 x CAN
PWM
2.0 A/B
(b) M
odulo Adapt9S12DP256
Figura 2.11: Diagrama de los principales bloques e imagen del modulo Adapt9S12DP256
del microcontrolador 68hcs12 [Arts04].
2.5.1.
Programaci
on
La construccion y habilitacion de un robot generalmente involucra codificacion
2.6.
23
Esquema de conexi
on
La Figura 2.13 muestra el esquema de conexion del robot a manera de diagrama
de bloques.
La fuente de potencia alimenta a los motores tanto los motores de CD como a los
motores de pasos y a sus respectivos controladores a 24V; al microcontrolador, los encoders
y sensores de lmite a 5V. El microcontrolador se comunica con una PC a traves de una
conexion serial (RS-232), de donde recibe instrucciones en forma de comandos reconocibles
por el robot y este a su vez manda las se
nales necesarias a los controladores de los motores.
2.7.
Resumen
En este captulo se presento el dise
no y la arquitectura del robot SCARA de
24
(a) Vista superior del microcontrolador dentro (b) Vista de lado del microcontrolador y los
de la caja que aloja los circuitos de control.
Figura 2.12: Imagenes de la caja construida que aloja al microcontrolador y a los controladores de los motores de CD y de pasos, tambien se pueden observar los dos Snubbers de
sobrevoltaje. Vease 3.5.3.
25
2.7. Resumen
Captulo 3
Figura 3.1: Vista superior de los dos motores de pasos que dan movimiento al robot en los
ejes X y Y.
28
3.1.
29
3.1.1.
Bobinado bipolar
Consiste en que cada fase esta compuesta por un solo devanado, al invertir la
3.1.2.
Bobinado unipolar
Su conexion, mostrada en la Figura 3.3 consiste en tener una derivacion central en
cada embobinado el cual es conectado al suministro de energa positiva y los extremos son
alternativamente aterrizados para invertir la direccion del campo creado por el devanado.
Es por esto que el arreglo recibe el nombre de unipolar, porque la polaridad electrica, flujo
de corriente, desde el controlador a las bobinas nunca es invertida. Este dise
no permite
tener un controlador electronico mas simple que el usado en el bipolar, por otro lado existe
aproximadamente 30 % menos par que el bipolar. Esta disminucion en el par se debe a que
el bobinado energizado utiliza la mitad del cobre del de una bobina bipolar.
A continuacion se explica la operacion de los motores de pasos unipolares. Es
necesario resaltar que la mayor parte de la informacion que se presenta enseguida fue tomada
de [Concha07].
30
A
A com
B com
3.2.
Operaci
on de los motores de pasos unipolares
Los motores de pasos del robot SCARA son unipolares y tienen dos bobinas (bo-
bina 1 y bobina 2) en su estator, cada una de las cuales tiene una derivacion central, como
se muestra en la Figura 3.4. La derivaciones centrales de las bobinas 1 y 2 estan fuera del
motor como dos cables separados. Como resultado, los motores tienen 6 cables. En adelante
a una mitad de la bobina 1 se le llamara bobina A y a la otra mitad bobina A (ver Figura
3.4). De igual manera a una mitad de la bobina 2 se le llamara B y a la otra mitad bobina
B.
Motor de
pasos
A
Bobina 1
Negro
Rojo /
blanco
Bobina 2
A
Blanco
B
Verde
Verde /
blanco
Rojo
Para hacer girar el motor de pasos se requiere cambiar la direccion de flujo magnetico energizando adecuadamente las bobinas 1 y 2. La Figura 3.5 muestra el circuito de control
de un motor de pasos unipolar. El cable del punto medio de las bobinas 1 y 2 se conecta a
31
la fuente de energa (Vs), mientras que los cables de los puntos extremos de las bobinas se
conectan a tierra mediante los interruptores S1, S2, S3 y S4.
Vs
A
Bobina 1
S1
B
Bobina 2
S2
S3
S4
La Figura 3.6 (a) muestra un motor unipolar en el cual se energizan las terminales
A y B. Los polos norte en A y B provocan que el rotor sea alineado en la posicion indicada.
Si ahora el interruptor S2 se abre y S1 se cierra (ver Figura 3.6 (a)), entonces se energizan
las bobinas A y B y el rotor se mueve 90 para alinearse con el nuevo campo del estator.
ltimo
Si se dejan de energizar las bobinas A y B, el rotor permanecera alineado con el u
par de polos debido a que es un iman permanente. En efecto, el motor desarrolla un par de
detencion o de frenado cuando las bobinas no son energizadas.
Al abrir y cerrar los interruptores S1, S2, S3 y S4 en una determinada secuencia,
el motor puede avanzar en una cierta direccion. En la practica los transistores de potencia
como los Mosfets y los BJT son utilizados como interruptores para interrumpir la corriente
en instantes precisos de tiempo. A continuacion se describen las secuencias de excitacion
del motor de pasos unipolar.
3.3.
M
etodos para excitar los motores de pasos
Hay tres metodos com
unmente utilizados para excitar los motores de pasos. Estos
metodos son: de paso completo, de medio paso y de micropasos. El metodo de paso completo
se realiza energizando las bobinas A, A, B y B secuencialmente en 4 formas diferentes, el
metodo de medio paso se realiza energizando las bobinas A, A, B y B secuencialmente en
8 formas diferentes y en el metodo de micropasos, se alimentan las bobinas del estator con
se
nales senoidal y cosenoidal. A continuacion se van a describir estas secuencias. Se mostraran unas tablas en las cuales un 1 significara que la terminal de la bobina esta energizada
y un 0 que no esta energizada. Para invertir el sentido del giro del motor, simplemente se
32
Bobina A
1
0
0
0
Bobina B
0
1
0
0
Bobina A
0
0
1
0
Bobina B
0
0
0
1
33
paso 1
S
paso 2
N
S
paso 3
N
paso 4
S
N
Figura 3.7: Secuencia con una sola bobina energizada del motor de pasos.
Bobina A
1
0
0
1
paso 1
S
N
N
S
N
Bobina B
1
1
0
0
Bobina A
0
1
1
0
paso 2
N
paso 3
N
S
S
Bobina B
0
0
1
1
paso 4
S
N
S
N
S
N
S
S
N
34
2. M
etodo de medio paso. Este metodo se obtiene combinando la secuencia de una
bobina energizada y la secuencia de dos bobinas energizadas, resultando en pasos que
son la mitad del
angulo basico de paso del motor. Debido a que el angulo de paso es la
mitad que el metodo anterior, el metodo de medio paso provee el doble de pasos por
revolucion y una operacion suave del motor. Es decir transiciones mas suaves entre los
pasos. Con el metodo de medio paso, los motores de pasos utilizados necesitan avanzar
800 medios pasos para realizar una revolucion mecanica. La secuencia combinada se
muestra en la Tabla 3.3 y en la Figura 3.9.
Tabla 3.3: Secuencia de medio paso.
Paso
1
2
3
4
5
6
7
8
Bobina A
1
1
0
0
0
0
0
1
paso 1
S
N
S
N
S
Bobina B
0
0
0
0
0
1
1
1
paso 3
paso 4
N
S
paso 5
N
Bobina A
0
0
0
1
1
1
0
0
paso 2
S
S
N
Bobina B
0
1
1
1
0
0
0
0
paso 7
paso 8
S
N
N
paso 6
N
S
S
N
35
3. M
etodo de micropasos.
El control por micropasos se obtiene haciendo que existan m
as niveles de corriente
por cada una de las bobinas, controlando la corriente de manera que por una bobina
aumente gradualmente hasta llegar a un valor maximo mientras que la corriente por
la otra disminuye hasta llegar a cero. El n
umero de pasos por paso esta definido por
la cantidad de posibles niveles de control de la corriente. De esta forma tambien se
pueden obtener avances de medio paso si se crea un nivel intermedio entre el valor
maximo de corriente y cero. Para lograr pasos del mismo valor angular es necesario
que el par se mantenga constante durante todo el ciclo para cada angulo, esto se
da si la corriente de un embobinado incrementa mientras la otra disminuye para
cada
angulo, manteniendo su suma como fasores siempre constante. Si se aplica una
corriente senoidal por la fase 1 y una cosenoidal por la fase 2 (ver Figura 3.10), se
puede tener una rotacion suave y un posicionamiento preciso; ademas se logra que
el motor gire con par constante para cualquier n
umero de micropasos por paso. Este
metodo se llama micropasos con seno y coseno [Jones08].
Controlando la direccion y amplitud del flujo de la corriente en las bobinas 1 (A y A) y
2 (B y B) y proporcionandola a estas acorde a las funciones seno y coseno (ver Figura
3.11). El metodo de micropasos puede dividir un paso basico del motor hasta en 256
partes proporcionando una operacion suave del motor con un par aproximadamente
30 % menos que con la secuencia con dos bobinas energizadas del metodo de paso
completo [Corporation02].
El controlador de los motores de pasos del Robot SCARA excita las bobinas de los
motores mediante el metodo de micropasos, teniendo la posibilidad de avanzar 1/2,
1/4, 1/8 y 1/16 de paso basico. Se utiliza este metodo para manejar los movimientos
del SCARA con incrementos muy peque
nos, teniendo una resolucion fina. De esta
manera es posible utilizar el robot en aplicaciones que requieran de una precision muy
buena. Obteniendose as un movimiento mas continuo y suave del rotor
36
Figura 3.10: Se
nales de las fases a y b de corriente en el metodo de micropasos [Jones08].
I1=I MAXcos
S
I2=I MAXsen
I2=I MAXsen
N
I1=I MAXcos
3.4.
Operaci
on a alta velocidad
Para incrementar la velocidad de los motores de pasos a menudo son operados
37
3.4.1.
t=t1
V +
Corriente
R
L
I MAX = V
R
63%
dI (t=t1) =
dt
V
L
63%
t=t1
tiempo
V
R
(1 et L )
(3.1)
(3.2)
V
R
(3.3)
38
I(t) =
V
R
(e(tt1 ) L )
(3.4)
La velocidad instant
anea con que la corriente decrece cuando el voltaje es removido
es dI/dt = V /L.
Cuando se aplica una onda de voltaje cuadrada a la bobina, como sucede en el
metodo de paso completo, la corriente es suavizada. La Figura 3.13 muestra el comportamiento de la corriente con tres diferentes frecuencias. Arriba de una cierta frecuencia
(Figura 3.13 (b)), la corriente nunca alcanza su valor maximo (Figura 3.13 (c)). Como el
par del motor es proporcional a la corriente, el par maximo sera reducido a medida que se
incremente la frecuencia de los pasos [Circuits06].
39
3.4.2.
nominal del motor IM AX , es conectar una resistencia de potencia en serie con cada bobina
del motor. Este circuito se muestra en la Figura 3.14 (a). Se observa que la magnitud del
voltaje de suministro es el doble que el de la Figura 3.12. En este esquema se requiere
agregar una resistencia de potencia con el mismo valor de la resistencia de la bobina (R).
La resistencia y el voltaje son incrementados proporcionalmente para limitar la corriente
del motor al valor nominal IM AX , es decir a IM AX = 2V /2R = V /R [Condit04].
V +
R
L
Corriente
V +
R
e2 =
L
2R
I MAX = V = 2V
R
2R
e1 =
63%
e2 e1
L
R
tiempo
40
3.4.3.
aplicar un voltaje alto a las bobinas hasta que la corriente alcance el valor nominal IM AX ,
y despues disminuir el voltaje al nivel que mantendra IM AX . Una manera para lograr lo
anterior involucra el uso de dos fuentes de suministro. La Figura 3.15 (a) muestra el circuito
que se podra utilizar [Condit04].
t on
V +
V +
L
Corriente
V +
2V
R
3
2
I MAX = V
R
1
e t on
tiempo
El tiempo en que la potencia se cambia de una fuente a la otra puede ser controlado
por un sistema de lazo cerrado o de lazo abierto. Para el control en lazo cerrado se utiliza
una peque
na resistencia que provee retroalimentacion al controlador y el voltaje se cambia
al nominal cuando la corriente alcanza el valor IM AX . Esto se explicara en detalle en la
siguiente seccion. En el esquema de lazo abierto, la conmutacion de una fuente a otra seria
en base a consideraciones de tiempo.
La Figura 3.15 (b) muestra el comportamiento de la corriente para las tres situaciones anteriormente descritas:
1. Utilizando el voltaje nominal (curva 1).
2. Utilizando un alto voltaje (dos veces el nominal) con una resistencia de potencia (curva
2).
41
3.4.4.
Modulaci
on de ancho de pulso
La modulacion de ancho de pulso (del ingles Pulse Width Modulation o PWM)
es una tecnica utilizada para controlar dispositivos, o para proveer un voltaje variable de
CD, es decir dosificar la potencia [Jones98]. En este esquema, la se
nal generada tiene una
frecuencia fija y tiempos de encendido y apagado (activado y desactivado) variables. En
otras palabras, el periodo de la se
nal se mantiene constante, pero la cantidad de tiempo que
se mantiene activa o inactiva dentro de un periodo puede variar [Arellano05].
El esquema PWM se ilustra en la Figura 3.16, donde V es el voltaje de la fuente
de alimentaci
on aplicado a un motor, Ton es el tiempo durante el cual se alimenta el motor
(interruptores cerrados), Tof f es el tiempo en el que no es alimentado el motor (interruptores
abiertos) y Tper es el periodo de la se
nal de alimentacion al motor. El ciclo de trabajo DC (del
ingles Duty Cycle) de la se
nal esta dado por: DC = Ton /Tper , donde, como se puede observar
Tper = Ton + Tof f . La Figura 3.16(a) muestra que cuando el DC es peque
no (interruptores
abiertos la mayor parte del tiempo), el voltaje promedio a traves del motor Vprom es bajo.
En tanto la Figura 3.16(b) muestra que cuando el DC es grande (interruptores cerrados por
mas tiempo), el voltaje promedio a traves del motor Vprom se incrementa. De lo anterior se
puede establecer que Vprom = DC V . Por lo tanto, al controlar el ciclo de trabajo DC de la
se
nal de alimentaci
on del motor V es posible controlar el voltaje promedio aplicado Vprom .
Para controlar motores a altas frecuencias con PWM es conveniente que los interruptores para conectar o desconectar el suministro de voltaje sean implementados mediante
42
Ton
Toff
Ton
Toff
V
Vprom
Vprom
Tper
(a) Se
nal modulada con un ciclo de trabajo del 25 %.
Tper
(b) Se
nal modulada con un ciclo de trabajo del 50 %.
interruptores de estado solido, los cuales pueden ser BJT, MOSFET o IGBT [Jones98]. En
[Ros07] se explica a detalle el problema que existe cuando se interrumpe la corriente en un
motor, debido a que es una carga inductiva.
3.4.5.
Control chopper
El control chopper es una forma para limitar la corriente en las bobinas de un
motor de pasos cuando se utiliza una fuente de suministro de alto voltaje (un voltaje mas
alto que el voltaje nominal del motor). La idea basica del control chopper es utilizar una
fuente de alto voltaje para que la corriente en las bobinas alcance su valor nominal IM AX
muy rapido. Cuando la corriente alcanza el valor IM AX , el voltaje es cortado o apagado por
un tiempo predefinido. Una onda de modulacion de ancho de pulso (PWM) se utiliza para
crear un voltaje promedio y una corriente promedio igual al voltaje y corriente nominal de
las bobinas [Condit04].
Como se muestra en la Figura 3.17, el voltaje de suministro permanece activado o
encendido hasta que la corriente alcanza el valor IM AX . Por lo tanto, el voltaje es modulado
para limitar la corriente en la bobina a IM AX .
Hay varias maneras para implementar el control chopper. La Figura 3.18 muestra
un posible circuito chopper para un motor unipolar. La manera como opera este circuito es
43
Corriente en la bobina
I MAX
Voltaje de suministro
tiempo
Toff
Ton
tiempo
Figura 3.17: Corriente y voltaje en la bobina utilizando el control chopper. Al inicio el ciclo
de trabajo de la se
nal de PWM es de 100 % y despues este ciclo se modifica para limitar la
corriente a IM AX .
que el voltaje a traves de la resistencia que sensa la corriente (Vsensor ) se compara con el
voltaje de referencia Vref , el cual es determinado acorde a:
Vref = Rs IM AX
(3.5)
44
45
per, se utiliza el circuito integrado SLA7062M de Sanken, el cual opera bajo el principio de
funcionamiento del circuito mostrado en la Figura 3.18 e incorpora toda la logica necesaria para el control chopper, los Mosfets, los comparadores y componentes para proveer el
tiempo de apagado fijo Tof f de PWM. Con el SLA7062M, la corriente del motor se regula
seleccionando la resistencia Rs y el voltaje de referencia Vref usando algunos componentes
externos. En la siguiente seccion se describira el diagrama de bloques y el circuito esquematico del controlador de los motores de pasos, y en la seccion 3.5.1 se describiran brevemente
las caractersticas del SLA7062M.
3.5.
pasos. Se compone por el microcontrolador, el cual realiza el control, y por los siguientes
componentes por motor: un circuito integrado (CI) chopper SLA7062M; un convertidor
digital-analogico (D/A), el cual se compone por una se
nal de PWM del microcontrolador,
un filtro RC pasabajas de segundo orden y un circuito que limita el voltaje de salida del
convertidor D/A a 1V. Llegan tambien al microcontrolador las se
nales provenientes de los
interruptores de contacto, los cuales funcionan como sensores de contacto e informan al
controlador de la posicion inicial y final del giro.
46
3.5.1.
muestra su diagrama de bloques. Este CI es un driver que combina logica CMOS de baja
potencia con salidas FET de alta corriente y alto voltaje, puede soportar una corriente
maxima de salida de 3A y un voltaje maximo de 46V (voltaje de suministro del motor). El
CI SLA7062M provee un control completo para un motor de pasos unipolar y esta dise
nado
para operar este tipo de motores en medio, un cuarto, un octavo y un dieciseisavo de paso.
La corriente de salida es regulada con circuiteria de control PWM con un tiempo
de apagado fijo; el valor de esta corriente se fija en cada paso mediante un resistor externo,
un voltaje de refererencia Vref y la salida de voltaje de los convertidores digital-analogico.
La resolucion de los micropasos se selecciona con las entradas logicas M1 y M2 estando en
1
La corriente que circula por las bobinas del motor tiene rizo, debido al control por PWM (vease la Figura
3.17). En adelante al valor pico de la corriente que circula por las bobinas se le llamar
a Iout . En tanto, a la
corriente promedio o de cd que circula por las bobinas se le llamar
a Iave
47
2.7K
10K
100uF
2.7K
OUT 3
GND
2.7K
+5V
0.47uF
IN
10K
LM2940
1
A
B
10K
+5V
A
Senales de salida
del encoder hacia
el microcontrolador
+
10K
Entrada para la
alimentacion del
SLA7062M
0.47uF
0.47uF
Vref
DIR
OUTA
VDD
OUTA
VREF
OUTA
RESET
OUTA
CW/CCW OUTB
OUTB
21
12 M2
OUTB
18
13 M1
OUTB
19
14 M0
M2
SENSEA
17 SENSEB
10K
11 GND
M0
Sync
RSA =0.533/9W
20
10 CLOCK
15 SYNC
Clock
M1
SLA7062M
16 VBB
Reset
Senales digitales
de control
Microcontrolador
Senal
de PWM
10K
24V
(CC)
1N4007
1N4007
Unipolar Stepper
Motor Controller
1N4007
+5V
24V Cargas
constantes (CC)
Entrada de 5V
24V
Motores
24V Motores
+
Entrada para la
alimentacion de
24V de los motores
RSB =0.533/9W
alto o bajo y se observa un cambio de paso hasta que exista un alto en la entrada de reloj.
(vease la Tabla 3.4).
La seccion l
ogica CMOS ademas de establecer el tama
no de paso para los motores
de pasos, provee la direccion, la operacion PWM sncrono/asncrono y una funcion sleep.
El CI cuenta tambien con una salida M0 logica que es una salida de monitoreo que empieza
en 45 de la se
nal de corriente y tiene un alto cada 90 . Una descripcion detallada de este
circuito se puede encontrar en [Allegro MicroSystems07] y la hoja de datos se encuentra en
el appendice B.2.
Se muestra a continuacion algunas figuras de las formas de onda de la corriente
y las se
nales de reloj tomadas de las hojas de datos del CI SLA7062M para diferentes
resoluciones de paso. La Figura 3.23 muestra la forma de onda de la corriente para medio
48
M2
H
L
H
L
Modo de Paso
Medio paso
Un cuarto de paso
Un octavo de paso
Un dieciseisavo de paso
49
Figura
3.22:
Diagrama
[Allegro MicroSystems07].
3.5.2.
de
bloques
del
circuito
integrado
SLA7062M
Convertidor digital-anal
ogico
Como el microcontrolador no tiene salidas analogicas, se implementan convertido-
res D/A de bajo costo utilizando las salidas PWM que puede generar el microcontrolador.
La se
nal de PWM del microcontrolador combinada con un filtro RC pasabajas de
segundo orden y con dos diodos 1N4007 son utilizados para generar el voltaje de referencia
ajustable Vref que llega al SLA7062M (ver Figura 3.24 (a)). La se
nal de PWM tiene una
frecuencia fija de 44KHz, cuyo ciclo de trabajo se varia de 0 a 255 2 para ajustar Vref al valor
deseado. La funci
on del filtro pasabajas es remover los componentes de alta frecuencia de la
se
nal de PWM y dejar solamente los componentes de baja frecuencia (CD) (ver Figura 3.24
(b)). Dicho filtro tiene una frecuencia de corte fc de 33.86Hz (fc = 1/2RC). La funci
on
de los dos diodos 1N4004 es limitar Vref a 1V.
3.5.3.
controlador, para absorber la energa procedente de las inductancias parasitas de los cables
de la fuente de alimentaci
on durante el proceso de conmutacion de los Mosfets. De esta
2
Un valor de 0 significa un ciclo de trabajo del 0 % y un valor de 255 significa un ciclo de trabajo del
100 %.
50
manera el snubber reduce el voltaje transitorio pico a traves de los Mosfets durante las
conmutaciones. La Figura 3.25 muestra el diagrama de un snubber de sobrevoltaje RCD.
Este circuito se conecta en paralelo con la fuente de alimentacion y la entrada de suministro
de energa de los motores.
Existe una peque
na inductancia entre los cables de la fuente de alimentacion y
los puentes de mosfets del controlador, de manera que cuando la corriente se interrumpe
s
ubitamente, esta inductancia genera un alto voltaje que deja de aumentar hasta que la
corriente pueda fluir de alguna manera. En nuestro caso, la corriente fluye a traves de los
Mosfets del circuito chopper del CI SLA7062M cuando se excede su voltaje maximo de
drenaje-fuente de 100V, puesto que cuando sucede esto, los Mosfets operan como diodos
zener. Esto produce calentamiento en los Mosfets porque disipan la energa de la inductancia,
pero no les causa da
no permanente siempre y cuando dicha energa no exceda un valor
maximo permitido.
A continuacion se muestran unas imagenes tomadas de [Concha07] sobre unas
pruebas realizadas cuando se utiliza un snubber de sobrevoltaje y cuando no se utiliza. La
Figura 3.26 muestra el voltaje Vp (voltaje de alimentacion) sin snubber y la Figura 3.27
muestra Vp con snubber.
Para nuestro caso para el motor M 0 (la primera articulacion) se implemento el
snubber con una resistencia Rsn de 1.5/10W, un capacitor electroltico Csn de 100F
/250V y un diodo Schottky STPS745 de alta velocidad Dsn que puede soportar hasta 100A
pico. Para el motor M 1 (la segunda articulacion) el valor de la resistencia es de 0.5/15W
y el capacitor de 1000F/35V. El valor de la resistencia y del capacitor se obtuvieron
experimentalmente.En la seccion 6 se explica con mayor detalle las pruebas para determinar
los mejores valores de los elementos del snubber de sobrevoltaje para cada motor de pasos.
3.6. Resumen
3.6.
51
Resumen
En este captulo se mostro el principio de funcionamiento de los motores de pasos
unipolares, se present
o el dise
no y funcionamiento del controlador de los motores de pasos
del robot SCARA que se desarrollo. Los motores de pasos utilizados para los ejes X y Y
(hombro y codo) se excitan con el metodo de micropasos para lograr incrementos angulares
muy peque
nos en los movimientos y que sean suaves.
Para incrementar la velocidad de los motores, se utiliza el control chopper. Con
este control, los motores se alimentan con el doble de su voltaje nominal para lograr que
la corriente en sus bobinas aumente rapidamente. Para realizar el control choper se utiliza
el CI SLA7062M, el cual incorpora toda la logica necesaria para el control chopper. El
control chopper ofrece muchos beneficios sobre los controladores del tipo RL o limitadores
de resistencia.
52
Figura 3.23: Forma de onda de corriente para 1/2, 1/4, 1/8 y 1/16 de paso
[Allegro MicroSystems07].
53
3.6. Resumen
Limitador de voltaje
1N4004
Senal de PWM del
microcontrolador
10K
0.47uF
1N4004
1N4004
SLA7026M
10K
2.7K
Vref
+
-
0.47uF
5V
Filtro
pasabajas
analgico
(b) Filtrado de la se
nal de PWM para obtener
Vref .
+
24V
Rsn
Dsn
Fuente
de alim.
54
60V
Apagan los
Mosfets
Encienden
los Mosfets
(a) Vista que muestra las transiciones de (b) Una vista de cerca de Vp cuando se
Vp en el encendido y apagado de los
Mosfets.
Apagan los
Mosfets
Encienden
los Mosfets
AB
(a) Vista que muestra las transiciones de (b) Una vista de cerca de Vp cuando se
V p en el encendido y apagado de los
Mosfets.
Captulo 4
Figura 4.1: Vista superior de los motores de CD, encargados de mover los ejes theta y
theta-z.
56
controlador. Es necesario mencionar que este captulo fue tomada en su mayora de [Ros07]
debido a que la primera version del robot SCARA desarrollado en la tesis de Omar Ros
Lopez utilizo los mismos motores de CD.
4.1.
Operaci
on de los motores de CD
Un motor de CD recibe corriente directa y produce rotacion mecanica del eje. A
l
nl
F
l
nl
57
F = Il B
(4.1)
donde es el
angulo entre la normal al plano del cuadro y B.
La fuerza total sobre el cuadro es nula, porque las fuerzas ejercidas sobre los lados
opuestos se anulan por pares. Las dos fuerzas F y F estan en la misma lnea y, por lo
tanto, no hay par respecto a ning
un eje. En cambio, las dos fuerzas F y F constituyen
un par. El par tiene el mismo valor respecto a cualquier punto y esta dado por la siguiente
relacion [Sears88]:
= IA B
(4.2)
donde A es el
area vectorial definida por el cuadro, con magnitud A y direccion perpendicular
a su plano; el sentido esta dado por la regla de la mano derecha aplicada a la direccion de
circulacion de la corriente en el circuito (ver Figura 4.2(b)).
Como consecuencia de las relaciones direccionales indicadas, el efecto del par es
tender a girar el circuito en direccion decreciente de (hacia su posicion de equilibrio)
[Sears88]. Con el fin de incrementar el par, com
unmente se introducen varios conductores
enrollados en forma de bobinas en la posicion del cuadro (rotor).
Para proporcionar la corriente que circula por las bobinas es necesaria una fuente
de alimentaci
on de CD, que se conecta con la bobina o devanado por medio de las escobillas
58
Iman
Iman
Conmutadores
Escobillas
V CD
Figura 4.3: Disposicion de los elementos del motor de CD de iman permanente [Ure
na06].
59
4.2. Puente H
Escobilla
er
od
c
En
r
oto
ne
ra
ng
ee
d
aja
velocidad de los motores de CD a traves del control del voltaje en su armadura haciendo
uso de dispositivos semiconductores de potencia.
4.2.
Puente H
Un manejador o controlador para un motor es un dispositivo o un conjunto de
estos, que permite de alguna manera controlar o manipular al motor. En el caso de los
motores de CD es muy com
un encontrar los controladores llamados puentes H.
Un puente H es un conjunto de cuatro elementos de switcheo (semiconductores
por lo general) que se encuentran arreglados tal como se muestra en la Figura 4.5. Toma un
voltaje de alimentaci
on de CD y provee un control a la carga conectada entre dos pares de
transistores switcheadores de potencia. Debido a que los transistores permiten a la corriente
fluir en forma bi-direccional a traves del motor, el voltaje en la carga y la direccion de la
corriente a traves de la carga puede ser de ambas polaridades.
Es com
un que los motores se controlen activando dos pares de interruptores a la
vez, con el fin de poder controlar la direccion del movimiento del motor. As por ejemplo, en
la Figura 4.5 si se activan S1 y S4, y a la vez se desactivan S2 y S3, el motor se movera en
60
PuenteH
S1
S3
+ V
+
Suministro
de Voltaje
Motor
S2
S4
una direccion, mientras que si se activan S2 y S3, desactivando S1 y S4, la direccion del
movimiento del motor sera en sentido opuesto, ocasionado por el cambio de la direccion de
la corriente en el motor.
En algunos casos, donde se requiere optimizar el desempe
no del motor o del sistema, es posible utilizar otro esquema al mostrado anteriormente. Esto ocurre cuando se
opta por usar frenado regenerativo o dinamico. Esto se lleva a cabo activando por pares los
interruptores S1 y S3 o S2 y S4. Lo anterior trae como consecuencia que, si el puente H
tiene activos un par de interruptores que permiten que el motor gire en una determinada
direccion, y al momento de frenarlo se activan los interruptores en la parte alta o en la parte
baja de las piernasdel puente H, existe un medio mediante el cual la energa almacenada
en el devanado del motor puede manifestarse como una corriente en un circuito cerrado
cuya resistencia es peque
na (ya sea en la parte alta del puente H o en la parte baja). Por
lo tanto, la corriente en el circuito decae rapidamente, logrando as que el motor frene con
mayor prontitud y eficacia.
De esta manera, se puede resumir que de acuerdo a los estados de los interruptores
S1, S2, S3 y S4 de la Figura 4.5 es posible que el controlador se encuentre en uno de los
siguientes cuatro estados [Ohm06]:
1. Conduccion. Una fase del puente H esta en alto, mientras que la otra fase esta en
bajo. As, por ejemplo, S1 y S4 podran estar cerrados.
61
2. Cortocircuito a la lnea positiva. Las dos fases son conectadas al lado de alta del bus
de alimentaci
on (terminal positiva de la fuente de alimentacion). En la figura, esto
representara que S1 y S3 esten cerrados.
3. Cortocircuito a la lnea de retorno. Las dos fases son conectadas al lado de baja del
bus de alimentaci
on (terminal negativa o de retorno de la fuente de alimentacion. Para
este caso S2 y S4 estaran cerrados.
4. Regeneracion. Una fase esta en alto y la otra en bajo. La diferencia entre este estado
y el de conduccion recae en que en el estado de conduccion la potencia fluye del enlace
de CD al motor, mientras que la direccion del flujo de potencia es invertida en el
estado de regeneracion.
Para nuestro caso, se requiere tener un control de posicion y velocidad de cada
motor del robot SCARA teniendo como medio de retroalimentacion las se
nales de los canales
de los odometros de los motores. Para ello se aplica un esquema de modulacion de ancho de
pulso, el cual se explico en la seccion 3.4.4. Debido a los problemas de picos de voltaje que
se generan al haber una interrupcion rapida de los interruptores del puente H, es com
un que
se conecte un diodo en antiparalelo con cada interruptor para proporcionar una trayectoria
para las corrientes inductivas del motor. (vease la Figura 4.6).
4.3.
lar los motores de CD. Estos esquemas de switcheo afectan las caractersticas de rendimiento
tales como el rizado de la corriente en la conexion o enlace de CD, armonicos en la corriente
y perdidas en los motores y controladores. Tomando como base los parametros del motor
y los requerimientos de la aplicacion, la seleccion del esquema optimo de switcheo puede
mejorar la eficiencia de operacion del motor. A continuaci
on se explican estos esquemas
utilizando la Figura 4.6(c). Estos esquemas son expuestos y descritos en [Ohm06], donde se
puede encontrar informacion mas amplia al respecto.
1. Esquema 0 de PWM (Control en 2 cuadrantes). En este esquema el interruptor S4
permanece activo o cerrado mientras que a S1 se le aplica el esquema de conmutacion
PWM. Cuando S1 y S4 estan activos la corriente a traves de ellos se incrementa.
62
PuenteH
+V
+V
B
S3
S1
iL
iL
Diodo
antiparalelo
+
Motor
S2
(a) La corriente en
un inductor no
puede
va cuando el interruptor es
interrum-
pirse s
ubitamen-
S4
abierto.
te.
Durante el tiempo de apagado (S1 abierto), la corriente del motor encuentra un camino
para fluir a traves de S4 y el diodo en antiparalelo de S2 y decae lentamente debido
a la resistencia del devanado del motor y a los interruptores. Se obtiene un resultado
similar cuando se aplica el esquema de conmutacion PWM a S2, manteniendo S3
activo. En este esquema la capacitancia del canal de conduccion es peque
na y las
perdidas por switcheo son muy bajas. La desventaja recae en que el motor no puede
cambiar de direccion rapidamente.
2. Esquema 1 de PWM (Control simultaneo en 4 cuadrantes). Este esquema consiste
en aplicar la tecnica PWM a los interruptores S1 y S4 simult
aneamente. Cuando los
dos interruptores estan activos, la corriente se incrementa como en el esquema 0.
Durante el tiempo de apagado de PWM, la corriente del motor decae rapidamente
a traves de los diodos en antiparalelo de los interruptores S2 y S3. Esto ocasiona
que la energa almacenada en el devanado del motor sea regresada a la fuente de
alimentaci
on, lo que implica que el motor trabaje por ese instante como generador.
Para este esquema se requiere una gran capacitancia en el canal de alimentacion de
energa. Las perdidas por switcheo tambien son altas. La ventaja sobre el esquema 0
63
esta en que se obtiene un control dinamico del motor, pues proporciona una forma
de controlarlo en 4 cuadrantes. Esto hace posible que se logren cambios rapidos en
la direccion de giro del motor, ya que la energa almacenada en el motor se regresa
rapidamente a la fuente de alimentacion. Debido a esto, tambien es necesaria una
fuente de alimentaci
on con flujo de potencia bidireccional.
3. Esquema 2 de PWM (Control simultaneo y complementario en 4 cuadrantes). Este
esquema opera de manera similar al esquema 1, excepto en que los estados de los
interruptores S2 y S3 son complementarios a S1 y S4. Si se activan S1 y S4 el motor
gira en cierta direccion, cuando S1 y S4 se desactivan, se activan S2 y S3 y el motor
gira en direccion contraria. Que tanto avanza en una direccion y en la otra depende de
la frecuencia de la se
nal PWM y del DC. Este metodo tiene dos diferencias respecto
al esquema 1. Permite que la corriente cambie de direccion dentro de un periodo del
PWM. Esto proporciona un control de corriente mas fino alrededor de la corriente
0. Otra diferencia es que, cuando se usan interruptores tipo MOSFETs, la corriente
durante el estado de regeneracion fluye a traves de los MOSFETs en vez de fluir por los
diodos antiparalelo posibilitando alcanzar perdidas por conduccion mucho menores.
Esta tecnica es llamada rectificacion sncrona y es usada en muchos inversores de
potencia basados en MOSFETs.
Para aplicaciones de robotica se busca obtener un buen desempe
no y un control
fino y rapido de los motores, por ello la mejor opcion dentro de los esquemas de control o
conmutacion PWM presentados es el esquema 2.
Se han explicado con detalle la manera en que opera un motor de CD, su funcionamiento, las caractersticas de los puentes H, y las tecnicas mas comunes de control PWM
que se emplean para controlarlos. Enseguida se describe el circuito del controlador que se
utilizo para los motors de CD con escobillas del robot SCARA.
4.4.
64
monitorea las se
nales de salida de los canales del encoder. Ademas, se incluye tambien un
amortiguador o snubber de sobrevoltaje RCD similar al utilizado para los motores de pasos,
el cual desempe
na la funci
on de reducir el voltaje transitorio pico en los dispositivos DMOS
del CI LMD18200 durante la conmutacion.
65
4.4.1.
Semiconductor que viene integrado en un circuito monoltico. Su diagrama de bloques funcional se muestra en la Figura 4.8, mientras que en la Figura 4.9 se puede ver una foto de
este dispositivo.
66
Operaci
on del CI LMD18200
El voltaje promedio a traves de la carga del puente H es controlado mediante
PWM. Ambas polaridades del voltaje de salida pueden ser obtenidas y la corriente puede
fluir por el motor en ambas direcciones. El CI LMD18200 tiene tres entradas logicas de
control: PWM, Direction y Brake; que controlan las acciones de switcheo del puente H. La
Tabla 4.1 muestra el efecto de estas se
nales de control, donde se ha nombrado a las dos
piernas del puente H como A y B, siendo A1 y B1 los transistores que se encuentran en
la parte de arriba o alta del puente y A2 y B2 los que estan en la parte baja, tal como se
muestra en la Figura 4.10.
De acuerdo a [Semiconductor99], el CI LMD18200 puede trabajar con distintas
formas de PWM. Sin embargo, son dos las tecnicas de PWM mas populares, las cuales se
describen a continuacion.
67
LMD18200
B1
A1
+
VS
Motor
A2
B2
PWM
H
H
L
H
H
L
Dir
H
L
X
H
L
X
Brake
L
L
L
H
H
H
Interruptores activos
A1,B2
A2,B1
A1,B1
A1,B1
A2,B2
NINGUNO
opuestos son encendidos y apagados juntos (de ah el nombre control completo anti-fase).
Para que exista una diferencia de potencial de cero volts entre las terminales de salida,
es necesario que ambas terminales esten al mismo potencial, lo cual se presenta cuando el
voltaje promedio (recuerdese que se trata de una se
nal PWM) en cada terminal de salida
es la mitad del voltaje de alimentacion Vs . Para esta condicion cada interruptor en cada
pierna del puente H conduce durante el mismo tiempo (DC=50 %), dando como resultado
una corriente promedio de cero a traves del motor. El esquema de conexion para este metodo
se muestra en la Figura 4.11.
Si suponemos que es incrementado el ciclo de trabajo (DC) de la se
nal de control
del 50 % al 75 %, entonces el tiempo de conduccion para el par de interruptores A2 y B1 es
proporcionalmente decrementado. Este cambio en el DC hace que el voltaje promedio en
A sea mas positivo que en B, lo que aplica una diferencia de potencial al motor. Entonces,
68
LMD18200
+5V
PWM
Logica
DIR
B1
A1
de
Control
VS
Motor
BRAKE
A2
B2
Figura 4.11: Se
nales de control y esquema de conexion para implementar la tecnica control
completo anti-fase en el CI LMD18200.
69
Control signo/magnitud
El CI LMD18200 tambien soporta directamente la tecnica de control PWM denominada control signo/magnitud. Esta tecnica consiste en mantener encendido uno de los
interruptores superiores del puente H, mientras se aplica una se
nal PWM complementaria
a los interruptores de la pierna opuesta (uno esta activo mientras el otro no). Lo anterior
se puede observar en la Figura 4.12, donde B1 es encendido permanentemente mientras se
aplica la se
nal PWM complementaria a los interruptores A1 y A2. La magnitud del voltaje promedio en el motor depende del DC de la se
nal PWM con que se conmuta a los
interruptores A1 y A2. El signo o polaridad del voltaje en el motor depende de la pierna
del puente H que no se conmuta (se mantiene el interruptor superior encendido). As, por
ejemplo, si se mantiene B1 encendido permanentemente en la Figura 4.12 y se aplica la
se
nal PWM complementaria a A1 y A2, de manera que mientras A1 este encendido A2
este apagado y viceversa, la corriente en el motor fluira de la terminal B haca la A con una
magnitud dada por el DC de la se
nal PWM. Si el DC es 0 %, A2 permanece practicamente
desactivado y A1 activado (debido a que son complementarios), por lo que la terminal de
salida A estara al mismo voltaje de la fuente Vs (la terminal B tambien) y no habra una
diferencia de potencial a traves del motor, razon por la cual no existira corriente alguna a
traves del motor y este no girara. Por el contrario, si el DC es 100 %, A2 estara activado
practicamente todo el tiempo y A1 desactivado, entonces la terminal de salida A estara
al voltaje de tierra (la terminal B estara al voltaje de la fuente), con lo cual se generara
una diferencia de potencial a traves del motor igual al voltaje de la fuente Vs y fluira una
corriente a traves del motor (de la terminal B haca la A) produciendo un movimiento de
rotacion en su flecha. El motor girara en direccion contraria si se mantuviera ahora A1
encendido mientras se conmutan los interruptores B1 y B2 con la se
nal PWM.
El nivel l
ogico aplicado a la entrada Direction enciende ya sea el interruptor A1
o B1. Esto fija la terminal de salida A o B al voltaje de la terminal positiva de la fuente
de alimentaci
on, con lo cual se determina la direccion en que fluye la corriente a traves del
motor. El DC de la se
nal aplicada a la entrada PWM ajusta el voltaje promedio aplicado
al motor. Cuando el DC es incrementado, la potencia aplicada al motor aumenta causando
que el motor gire con una velocidad mas alta.
Mantener uno de los interruptores de la parte de arriba del puente H encendido,
ya sea A1 o B1, es conveniente en esta tecnica de control debido a que la salida para sensar
70
LMD18200
PWM
Logica
DIR
B1
A1
de
Control
BRAKE
VS
Motor
A2
B2
Figura 4.12: Se
nales de control y esquema de conexion para implementar la tecnica control
signo/magnitud en el CI LMD18200.
71
4.5. Resumen
4.4.2.
canales del encoder, los cuales son usados para realizar el control. Los encoders u odometros
se alimentan de la fuente de 5V. Para reducir el posible ruido en las se
nales del encoder, se
conecta una resistencia de 10K entre cada salida del encoder y el bus de 5V.
Seales de salida
de los canales
del encoder
R=10K
Suministro
de voltaje
I
B
A
R=10K
Seales del
encoder
haia el micro
4.5.
Resumen
En este captulo se presento el controlador usado para mover los motores de CD
72
Captulo 5
Fuente de alimentaci
on
En este captulo se describen las caractersticas de la fuente de alimentacion construida para suministrar energa a los componentes del robot SCARA. Como se menciono en
la seccion 2.4 se tienen 5 fuentes reguladas: a) 4 fuentes de 24V para la etapa de potencia,
la cual esta compuesta por los motores y sus controladores. b) Una fuente de 5V para la
etapa de control e instrumentacion compuesta por el microcontrolador, los encoders y los
sensores de lmite. Para construir estas fuentes se utilizaron los circuitos reguladores de voltaje LM338 y L7805 para las fuentes de 24V y 5V respectivamente. Todos los componentes
de la fuente se alojan en una caja metalica de 15 cm de ancho, 30 cm de largo y 15 cm de
alto. Cuenta con 3 transformadores que toman energa del suministro electrico los cuales a
su vez alimentan distintos equipos y elementos:
Un transformador de 127v/24v a 10A para los dos motores de pasos.
Un transformador de 127v/24v a 5A para los dos motores de CD, la entrada de voltaje
de cargas constantes VBB del CI SLA7062M, los dos ventiladores de la caja de la
fuente de alimentaci
on y los dos ventiladores de la caja de los circuitos controladores.
Un transormador de 127v/24v a 2A para la fuente de alimentacion de 5V el cual
suministra energa al modulo Adapt9S12DP256, la alimentacion de los encoders de
los motores de cd, la entrada de alimentacion a 5V del CI SLA7062M y para la
operacion de los sensores de contacto.
La caja de la fuente de alimentacion cuenta tambien con 2 fusibles de proteccion,
una de 10A y otra de 2A. A continuacion se explican los circuitos integrados LM338 y
73
74
L7805.
5.0.1.
caractersticas del circuito LM338 son: corriente de salida de 5A y 7A pico, voltaje de salida
de 1.2V a 32V. Con el uso de 2 resistores se selecciona el voltaje de salida. Es necesario
recalcar que en teoria el circuito puede entregar una corriente de 5A pero es posible que
se caliente mucho, cuando esto sucede el circuito se protege termicamente y se desbloquea
cuando la temperatura desciende de nuevo. El calentamiento depende de dos factores: la
diferencia de potencial entre la entrada y la salida; y la corriente demandada por la carga.
Si la diferencia de potencial es grande, no es posible extraer mucha corriente; al mismo
tiempo el regulador debe de tener una tension a su entrada al menos 3 volts arriba de la
tension de salida. Por lo que para tener una corriente deseada, es necesario encontrar un
nivel razonable entre las dos limitaciones. Por esta razon es necesario utilizar un disipador
de calor para cada circuito regulador. En la seccion de pruebas (captulo 6) se muestran las
pruebas realizadas a las fuentes de 24V alimentando los motores de pasos, en el apendice C
se muestra la plantilla del circuito impreso y si se desea mas informacion sobre este regulador
de voltaje se puede consultar [Semiconductor08]. En la Figura 5.2 se muestra una imagen
del circuito de dos de las fuentes de 24V.
75
5.0.2.
logicos que utiliza el robot SCARA. Algunas caractersticas del circuito L7805 son: soporta
una corriente maxima a su salida de 1A, un voltaje de entrada maxima de 35V y el voltaje
de salida puede tener valores de 5, 5.2, 6, 8, 8.5, 9, 10, 12, 15, 18 , 24 Volts; siendo la de 5V
el utilizado en esta fuente. El diagrama electrico de la fuente de 5V se muestra en la Figura
5.3, C1, C2, C3 y C4 tienen un valor de 4700 microF y R1 tiene un valor de 1 ohm. Al igual
que para el LM338, al cicuito L7805 se le a
nade un disipador de calor. En el apendice C se
muestra la plantilla del circuito impreso. Si se desea mas informacion sobre este regulador
de voltaje se puede consultar [Catalog.com08]. En la Figura 5.4 se muestra una imagen del
circuito de la fuente de 5V.
76
Captulo 6
Pruebas y resultados
La manera de determinar la eficiencia del desempe
no del robot construido se realizo mediante pruebas asociadas a cada una de sus partes de manera individual y posteriormente operando al robot con la totalidad de sus partes de manera simultanea. En este
captulo se presentan los diversos aspectos que implica el dise
no y la construccion de un
robot SCARA. Se expone el problema que se tuvo con el dise
no de la fuente de alimentaci
on
y las pruebas realizadas sobre esta. Despues se muestran algunas pruebas realizadas a todo
el hardware en general con el fin de garantizar el funcionamiento correcto de todo el sistema;
esto es, pruebas al microcontrolador, la fuente de alimentacion, los circuitos de monitoreo
de las se
nales de los encoders, los controladores de los motores de CD (CI LMD18200) y
de los de pasos (CI SLA7062M) as como los snubbers de sobrevoltaje RCD. Al final se
mencionan algunas pruebas de software y las pruebas realizadas sobre madera.
6.1.
Dise
no de la fuente de alimentaci
on y pruebas realizadas
En esta seccion se explican algunos problemas que se tuvieron con la fuente de
alimentaci
on y se muestran algunos esquemas que se probaron y otros investigados antes
de arribar al dise
no final el cual fue descrito en el captulo 5. Posteriormente se muestran
algunas imagenes de las pruebas realizadas a la fuente con diferentes valores de los elementos
del snubber de sobrevoltaje (ver seccion 3.5.3). Tambien se dan algunas sugerencias para el
armado y correcto funcionamiento de la fuente.
77
78
6.1.1.
otros dos con escobillas, la fuente de alimentacion deba ser capaz de suministrar la corriente
demandada por los cuatro motores si estos estuviesen trabajando de manera simultanea a
su maxima capacidad; para esto se calculo la corrriente total. Los motores de pasos manejan
una corriente nominal de 1.8A por fase, si se operan las dos fases al mismo tiempo al cien
por ciento de su capacidad nominal, se tendra una corriente de 3.6A por motor; esto es,
7.2A por los dos motores de pasos. Para los motores de cd el motor GM9236S021 usado en
el robot para mover el eje Theta maneja una corriente de pico teorica de 9.6A y el motor
GM8724S011 usado para mover el eje Theta-Z maneja una corriente de pico teorica de
1.41A. Por lo tanto la corriente total maxima teorica demandada por los cuatro motores
es de 18.2A; esto significaba tener una fuente de 24V que entregara 18A. Posteriormente
al escoger los circuitos controladores de los motores de pasos (CI SLA7062M) y los de los
motores de CD (CI LMD18200), se estudiaron sus especificaciones tecnicas para conocer
sus capacidades de corriente. El CI SLA7062M opera con una corriente de 3A y el CI
LMD18200 con una corriente de 3A y 6A pico, de esta manera al usar dos CI SLA7062M y
dos CI LMD18200 se requieren de 12 a 18A. Debido a que en el trabajo de tesis de liceniatura
de Antonio Concha [Concha07] se utlizaron circuitos reguladores de voltaje LM338 para el
cargador de baterias, se decidio utilizar los mismos circuitos para la construccion de la
fuente de alimentaci
on del robot SCARA.
En la hoja de datos del LM338 se muestran algunos dise
nos, entre ellos un regulador de 15A, en la Figura 6.1 se muestra el diagrama esquematico de este circuito. Se
construyo este circuito pero tuvo algunos inconvenientes; uno de ellos es que el valor maximo
de suministro de voltaje del amplificador operacional es de 18V; ademas se estaba usando un
transformador de 127/36 volts por lo que el voltaje de cd despues del puente rectificador era
alrededor de 36 volts. Se intent
o suministrar un valor independiente de voltaje a la entrada
de suministro de voltaje del amplificador operacional pero no logro funcionar de manera
adecuada. Posteriormente se decidio que la manera mas eficiente de suministrar energa al
robot es usando una fuente individual para cada motor. En la seccion 5.0.1 se muestra el
diagrama esquematico de la fuente construida y usada en el robot 5.1.
Otro esquema que se investigo para la construccion de la fuente de alimentacion
fue el dise
no de una fuente conmutada. Una fuente conmutada es un dispositivo electronico
6.1. Dise
no de la fuente de alimentacion y pruebas realizadas
79
80
Se pueden lograr m
ultiples tensiones de salida reguladas, de diferente polaridad y/o
distintos niveles de tension.
Existen algunos circuitos integrados que cuentan con los bloques principales de una
fuente conmutada entre ellos el circuito integrado LT1074 de Linear technology el cual es
un convertidor Buck (convertidor de potencia que obtiene a su salida una tension continua
menor que a su entrada). Este circuito ocupa solo unos cuantos componentes externos para
su operacion. La Figura 6.2 muestra una imagen del diagrama esquematico de este circuito
[Technology07].
6.1. Dise
no de la fuente de alimentacion y pruebas realizadas
6.1.2.
81
82
mantena cerca de 24V. Se observo que el cambio del valor de la capactancia no tuvo un
efecto tan marcado para el snubber del motor M0 por lo que se probo con un capacitor de
100F /250V. Para el motor M1 se noto una peque
na mejora al utilizar un capacitor de
1000F/35V.
Las siguientes imagenes muestran las formas de onda tanto del voltaje como de la
corriente a la salida de la fuente de alimentacion (en parallelo con el snubber de sobrevoltaje)
cuando se opera el motor M 0 a medio paso con el circuito SLA7062M. La forma de onda
del voltaje es la que se encuentra arriba y empieza desde el centro, la de la corriente se
encuentra abajo y empieza dos cuadros debajo del centro. Para el voltaje la escala es 10V
por cuadro y para la corriente es de 1A por cuadro.
La Figura 6.3 muestra el comportamiento al utilizar un snubber sin resistencia
y solo un capacitor de 100F/250V. Se puede observar que cuando el motor M O esta en
reposo, el voltaje varia arriba de los 30V y en movimiento su valor es estable en 27 volts. En
reposo la corriente tiene un comportamiento interesante ya que el CI SLA7062M realiza un
sensado de la corriente que pasa a traves de unas resistencias, y mediante el control chopper
mantiene la corriente que circula por las bobinas del motor por debajo de su corriente
nominal, 1.8A para nuestro caso. Es conveniente recordar que el control chopper es usado
cuando se tiene un suministro de voltaje mas alto que el nominal del motor (vease la seccion
3.4.5). Se puede observar que la corriente aumenta un poco arriba de 2A y luego desciende,
despues de esto existe un periodo de conmutacion el cual tiene un peque
no pico de corriente
negativa y se estabiliza durante un tiempo peque
no como de 150s, es desde este punto en
que la corriente vuelve a aumentar de nuevo arriba de 2A. En este caso la temperatura de
los reguladores de voltaje LM338 fue alrededor de 38 C. Cabe mencionar que los circuitos
LM338 soportan una temperatura maxima de 150 C.
La Figura 6.4 muestra el comportamiento totalmente inadecuado cuando se aumenta el valor de la resistencia a 2.7. La forma de onda del voltaje en movimiento ya no
es tan estable, vara mas que cuando no se tiene resistencia y ahora cuando se encuentra
en reposo el motor, el voltaje desciende por debajo de los 20V. Ademas, la forma de onda
de la corriente muestra que ya no aumenta hasta 2A y ahora es m
as notorio la corriente
negativa. Para este caso la temperatura de los reguladores de voltaje LM338 fue alrededor
de 70 C.
La Figura 6.5 muestra el comportamiento de la fuente cuando se usa una resistencia de 1 y el mismo capacitor. Ahora la forma de onda de voltaje tanto en reposo como
6.1. Dise
no de la fuente de alimentacion y pruebas realizadas
(a) M0 en reposo.
83
(b) M0 en movimiento.
Figura 6.3: Forma de onda de voltaje (arriba) y corriente (abajo) de la fuente utilizando un
snubber de sobrevoltaje con un capacitor de 100F/250V y sin resistencia.
84
(a) M0 en reposo.
(b) M0 en movimiento.
Figura 6.4: Forma de onda de voltaje (arriba) y corriente (abajo) de la fuente utilizando un
snubber de sobrevoltaje con un capacitor de 100F/250V y una resistencia de 2.7/15W.
85
(a) M0 en reposo.
(b) M0 en movimiento.
Figura 6.5: Forma de onda de voltaje (arriba) y corriente (abajo) de la fuente utilizando un
snubber de sobrevoltaje con un capacitor de 100F/250V y una resistencia de 1/10W.
puede observar en la Figura 6.8 en donde la corriente no tiene picos negativos y el voltaje
se mantiene alrededor de 24V cuando esta en reposo el motor M1. De nuevo en movimiento
el voltaje asciende a 30V pero la temperatura de los LM338 se mantiene cerca de 65 C.
Despues de encontrar que el valor de 0.5 para la resistencia del snubber es el
mejor, se probo con diferentes valores de capacitancia descubriendo que con un valor de
1000F/35V para el capacitor y la resistencia anteriormente mencionada, se tiene un mejor
comportamiento. La Figura 6.9 muestra lo anterior. Se puede observar ahora, cuando el
motor se encuentra en reposo ya no se tienen picos de corriente negativa y el voltaje es de
24V. Se puede ver que en movimiento ahora el voltaje ya no desciende ni aumenta sino que
se mantiene estable en 24V. Los circuitos reguladores LM338 mantienen una temperatura
acceptable de 64 C.
6.2.
86
(a) M1 en reposo.
(b) M1 en movimiento.
Figura 6.6: Forma de onda de voltaje (arriba) y corriente (abajo) de la fuente utilizando un
snubber de sobrevoltaje con un capacitor de 100F/250V sin resistencia.
6.3.
87
(a) M1 en reposo.
(b) M1 en movimiento.
Figura 6.7: Forma de onda de voltaje (arriba) y corriente (abajo) de la fuente utilizando un
snubber de sobrevoltaje con un capacitor de 100F/250V y una resistencia de 2.7/10W.
Vref de cada uno de los controladores se uso el puerto PP o PWM. Para los controladores
de los motores de CD LMD18200, se usaron los puertos H y A para las se
nales Brk y PWM
de M 2 y M 3 respectivamente. Para la se
nal Dir de los controladores de estos motores se
uso el puerto PP o PWM. Para las se
nales A, B e I de los encoders de los motores de
CD se uso el puerto T . Para los interruptores de inicio de posicion de las 4 articulaciones
se uso el puerto B. La Tabla 6.1 muestra la configuracion de las conexiones.
Tabla 6.1: Conexiones del Microcontrolador.
Pin
0
1
2
3
4
5
6
7
Puerto A
M1 motor0
M2 motor0
Dir motor0
Sync motor0
Clock motor0
Reset motor0
Brake motor3
PWM motor3
Puerto B
Switch motor0
Switch motor1
Switch motor2
Switch motor3
libre
libre
libre
libre
Puerto H
M1 motor1
M2 motor1
Dir motor1
Sync motor1
Clock motor1
Reset motor1
Brake motor2
M1 motor2
Puerto P
PWM(Vref) motor0
PWm(Vref) motor1
Da
nado
Da
nado
Dir motor2
Dir motor3
libre
libre
Puerto T
A encod motor2
B encod motor2
A encon motor3
B encod motor3
I encod motor2
I encod motor3
libre
libre
Es importante mencionar que dos pines del puerto P del microcontrolador estaban
da
nados y de esta manera el micro estaba consumiendo una mayor corriente, 205mA, y al
deshabilitarlo este consuma solamente 117mA, disminuyendo tambien su temperatura.
88
(a) M1 en reposo.
(b) M1 en movimiento.
Figura 6.8: Forma de onda de voltaje (arriba) y corriente (abajo) de la fuente utilizando un
snubber de sobrevoltaje con un capacitor de 100F/250V y una resistencia de 0.5/10W.
89
(a) M1 en reposo.
(b) M1 en movimiento.
Figura 6.9: Forma de onda de voltaje (arriba) y corriente (abajo) de la fuente utilizando un
snubber de sobrevoltaje con un capacitor de 1000F/35V y una resistencia de 0.5/10W.
6.4.
las ecuaciones necesarias para posicionar los ejes del robot utilizando la cinematica inversa.
6.4.1.
Cinem
atica del robot
La cinematica del robot estudia el movimiento del mismo con respecto a un siste-
90
Figura 6.10: Diagrama esquematico del circuito 555 operando como oscilador.
6.4.2.
Cinem
atica inversa
En la cinematica inversa se conoce la posicion y orientacion del elemento terminal
referido a la base, y se desea determinar los angulos articulares y geometra de los eslabones
para alcanzar la orientaci
on y posicion de la herramienta. En algunas aplicaciones de trabajo
sobre madera se tiene una herramienta acoplada a la u
ltima extension del brazo-robot y se
conoce la orietacion que debe de tener esta herramienta con respecto a su area de trabajo;
es por esto, que se u
tiliza la cinematica inversa para las pruebas que se realizaron sobre el
corte de madera.
Exsten varias soluciones para resolver este problema:
Soluciones cerradas
Solucion algebraica: Ecuaciones no lineales trigonometricas.
Solucion geometrica: Conjunto de subproblemas geometricos en el plano.
Soluciones num
ericas
Iterativas: No aplicables en tiempo real.
Para el robot SCARA desarrollado se utilizo la solucion geometrica la cual se
explica a continuacion.
91
(6.1)
a2 = b2 + c2 (2bc)cosA
(6.2)
= 1 + 2 + 3
Se calcula 2 :
La Figura 6.12 muestra el espacio del angulo de 2
(6.3)
92
(6.4)
cos(180 2 ) = cos2
(6.5)
x2 + y 2 l12 l22
2l1 l2
(6.6)
Debido a que:
Resulta:
cos2 =
Calculo de 1 .
Si se definen dos
angulos se cumple:
1 =
(6.7)
El angulo se calcula:
sin =
y
x2
+ y2
(6.8)
93
x2 + y 2 + l12 l22
2l1
x2 + y 2
(6.9)
Los
angulos , y 1 se muestran en la Figura 6.13.
3 = 1 2
(6.10)
94
6.5.
Comparaci
on de costos
A continuacion se muestra una comparacion de costos de un robot SCARA comer-
Pesos $
3009.3
2433.14
2637.79
2000
34694
44774.23
Como se puede observar el robot SCARA construido cumple con el objetivo de ser
95
economicamente mas flexible que un robot importado de este tipo. En cuanto a repetibilidad,
el robot desarrollado cuenta con las mismas caracteristicas que uno importado, esto gracias
a los motores de pasos y la posibilidad de ser manejados a traves del metodo de micropasos;
sin embargo la velocidad con el cual puede ser manejado el robot es relativamente lento
comparado con uno importado.
6.6.
ron varios detalles como los mencionados en las secciones anteriores que posteriormente se
96
Captulo 7
Conclusiones
En esta tesis se han descrito las caractersticas de la segunda version de robots
SCARA desarrollados en la Division de Estudios de Posgrado de la Facultad de Ingeniera
Electrica de la Universidad Michoacana de San Nicolas de Hidalgo. Se trata de un brazo
robot manipulador tipo SCARA de 4 grados de libertad. Se ha presentado su arquitectura, su funcionamiento y las caractersticas de sus componentes de potencia y control:
motores, fuente de alimentaci
on, circuitos controladores, microcontrolador y sensores. En
este captulo se presentan las principales conclusiones y algunas sugerencias para trabajos
futuros derivados de esta tesis.
7.1.
Conclusiones
Se dise
no un robot SCARA con caractersticas equiparables a los robots SCARA
importados. Los componentes con los que esta equipado el robot SCARA de 4 grados
de libertad son suficientes para obtener un robot flexible, robusto, expansible, de
plataforma abierta y economico.
Los motores de pasos utilizados en el robot para los ejes X y Y (M0 y M1) cumplen
con las caractersticas buscadas y otorgan una mayor precision y repetibilidad al robot
comparado con la version anterior.
Se desarrollaron los controladores para los motores de pasos los cuales funcionaron
eficientemente. El circuito controlador SLA7062M cumple con las caractersticas necesarias para controlar adecuadamente a los motores de pasos ya sea si se manejan a
97
98
Captulo 7: Conclusiones
99
Las pruebas realizadas sobre el corte de madera dieron resultados satisfactorios para
algunos trabajos orientados a la fabricacon de guitarras.
7.2.
trabajo, se sugieren las siguientes ideas que pueden ampliar, complementar o mejorar el
trabajo realizado en esta tesis.
Debido a la facilidad con que se controlan los motores de pasos, se podran utilizar este
tipo de motores para los ejes theta (M2) y theta-z (M3). De esta manera los costos se
recuciran e icrementara la duracion de vida del robot debido a que las escobillas de
los motores de CD se van desgastando.
Si se quisiera aumentar tanto la velocidad como el par, se podra utilizar motores de
pasos bipolares.
Utilizar sistemas de engranaje de alta precision (enhanced armonic gearing) en vez del
sistema caja de engranes - bandas utilizado en este trabajo, con lo cual se eliminaran
practicamente por completo las holguras y problemas mecanicos y se obtendran tanto
una excelente precision como una repetibilidad muy cercana a los mejores robots
SCARA comerciales. Esto implica un aumento en el costo del robot, debido a que los
engranes armonicos son caros (del orden de 1500 USD cada uno). Con esto ya no se
cumplira el objetivo de construir un robot economico, por lo que se podran intentar
fabricar estos sistemas de engranes en la compa
na Cervantes Co. (Paracho Mich.).
Dise
nar y construir un controlador con elementos de potencia discretos para incrementar los rangos de corriente a traves del controlador de los motores de pasos. El
controlador usado en este trabajo es un CI comercial que tiene ciertas limitaciones
de corriente y que es necesario importarlo, pero al implementar uno con elementos
discretos es posible disminuir el costo del robot e incrementar la flexibilidad, robustez
y potencia en el robot.
Dise
nar una fuente de potencia de mayor capacidad que sea capaz de proporcionar
mayor corriente a los motores y que en general sea mas robusta. Se podra usar una
100
Captulo 7: Conclusiones
fuente conmutada o una fuente de otro tipo para alimentar los circuitos de potencia,
con la finalidad de poder proveer la corriente necesaria requerida por los motores
usados.
Utilizar un microcontrolador mas rapido que el usado en este trabajo. Se podra
realizar operaciones a mayores velocidades.
Crear una interfaz grafica para controlar al robot, este puede tener su codigo fuente
en lenguaje C, o bien en Java. Esta interfaz tambien podra crear trayectorias para
que el robot las siga y programar al robot para que realice una determinada tarea en
aplicaciones practicas.
Apendice A
A.1.
Comunicaci
on con el robot
El programa serial establece una conexion serial con el robot, de manera que el
comando (de texto) que se ingrese en la terminal y que termine con una tecla de Return, se
enva directamente al robot. Por otro lado, la respuesta del robot se presenta inmediatamente en la terminal. Este programa es semejante a tener una terminal conectada directamente
al puerto serial del robot y es u
til para probar el robot interactivamente.
Para ejecutar el programa serial se debe ingresar como root y ejecutar el programa
con el dispositivo asociado al puerto serial ttyS0 (primer serial) o ttyUSB0 (en caso de
que se use el convertidor USB-Serial) como primer argumento. En forma alternativa se
pueden modificar los permisos del dispositivo para que cualquier usuario pueda acceder al
dispositivo. Por ejemplo:
# ./serial /dev/ttyS0 <Return>
M 100<Return>
M
El usuario puede utilizar los codigos de estos programas como ejemplo para desarrollar nuevos programas que interact
uen con el robot.
101
102
A.2.
A.3.
103
A.4.
Comunicaci
on con el robot
Se debe de seguir la siguiente sintaxis para dar instrucciones al robot:
< c >< p1 >< sp >< p2 >< sp >< p3 > ... < pn >< \n >
Donde: < c > indica una letra que identifica la orden o comando dada al robot.
< pn > indica el n-esimo argumento numerico de la orden.
El rango de este argumento vara dependiendo del
motor que se esta controlando.
< sp > indica un caracter de espacio.
< \n > indica un caracter de salto de lnea.
104
El puerto serial debe configurarse de la siguiente forma: 9600bps, 8bits, sin paridad
y sin control de flujo. A continuacion se describen los comandos que obedece el robot.
A.4.1.
Comando:
Respuesta:
M < \n >
Ejemplos:
A continuacion se muestra una tabla de los valores que puede tomar la variable c
para los motores de pasos.
Tabla A.1: Valores maximos de c para los motores de pasos.
Motor
M0
M1
1/2 paso
31200
10820
1/4 paso
62400
21640
1/8 paso
124800
43280
1/16 paso
249600
86560
A.4.2.
105
Q < \n >
Respuesta:
Donde:
Ejemplos:
Apendice B
que se utilizaron. En la figura B.1 la linea que corresponde a los motores usados es la ultima
dentro del grupo de motores de alta resolucion.
B.2.
CI SLA7062M
Las especificaciones tecnicas de los circuitos integrados SLA7062M usados para
controlar los motores de pasos del robot SCARA se muestran en las figuras B.4 y B.5.
B.3.
B.4.
107
108
B.5.
CI LMD18200
Las figuras B.6 y B.7 muestran los datos tecnicos del CI LMD18200 dados por el
109
B.5. CI LMD18200
110
B.5. CI LMD18200
111
112
Datos de montaje
Voltaje de referencia
Velocidad s/carga
Torque continuo (max.)
Torque pico al arranque
Peso
Datos del motor
Torque constante
Fuerza contraelectromotriz constante
Resistencia
Inductancia
Corriente s/carga
Corriente pico al arranque
Constante del motor
Torque de friccion
Inercia del rotor
Constante de tiempo electrica
Constante de tiempo mecanica
Viscosidad de amortiguamiento
Constante de amortiguacion
Temperatura maxima de devanado
Impedancia termica
Constante de tiempo termica
Datos de caja de engranes
Relacion de reduccion
Eficiencia
Torque max. permitido
Datos del encoder
Canales
Resolucion
Unidades
V
rpm (rad/s)
oz-in (N-m)
oz-in (Nm)
oz (g)
Valor
24
720 (75.4)
15 (1.0E-01)
42 (3.0E-01)
11.2 (316)
oz-in/A (N-m/A)
V/krpm (V/rad/s)
mH
A
A
oz in/ W (N m/ W )
oz-in (N-m)
oz in s2 (kg m2 )
ms
ms
oz-in/krpm (N-m-s)
oz-in/krpm (N-m-s)
F ( C)
F/watt ( C/watt)
min
6.18 (4.36E-02)
4.57 (4.36E-02)
17.0
9.35
0.09
1.41
1.49 (1.05E-02)
0.35 (2.5E-03)
2.3E-04 (1.6E-06)
0.54
14.7
0.020 (1.4E-06)
1.6 (1.1E-04)
311 (155)
70.5 (21.4)
10.7
oz-in (N-m)
6.3
0.95
100 (0.71)
CPR
3
500
113
B.5. CI LMD18200
Datos de montaje
Voltaje de referencia
Velocidad s/carga
Torque continuo (max.)
Torque pico al arranque
Peso
Datos del motor
Torque constante
Fuerza contraelectromotriz constante
Resistencia
Inductancia
Corriente s/carga
Corriente pico al arranque
Constante del motor
Torque de friccion
Inercia del rotor
Constante de tiempo electrica
Constante de tiempo mecanica
Viscosidad de amortiguamiento
Constante de amortiguacion
Temperatura maxima de devanado
Impedancia termica
Constante de tiempo termica
Datos de caja de engranes
Relacion de reduccion
Eficiencia
Torque max. permitido
Datos del encoder
Canales
Resolucion
Unidades
V
rpm (rad/s)
oz-in (N-m)
oz-in (Nm)
oz (g)
Valor
24
236 (24.7)
153 (1.1E+00)
860 (6.1E+00)
23.3 (661)
oz-in/A (N-m/A)
V/krpm (V/rad/s)
mH
A
A
oz in/ W (N m/ W )
oz-in (N-m)
oz in s2 (kg m2 )
ms
ms
oz-in/krpm (N-m-s)
oz-in/krpm (N-m-s)
F ( C)
F/watt ( C/watt)
min
6.49 (4.58E-02)
4.80 (4.58E-02)
2.49
2.63
0.16
9.64
4.11 (2.90E-02)
0.80 (5.6E-03)
1.0E-03 (7.1E-06)
1.06
8.5
0.053 (3.5E-06)
12.5 (8.5E-04)
311 (155)
56.3 (13.5)
13.5
oz-in (N-m)
19.7
0.84
500 (3.53)
CPR
3
500
114
B.5. CI LMD18200
115
Apendice C
C.1.
motores de pasos. .
La figura C.4 presenta la plantilla del circuito impreso de los controladores de los
motores de CD.
La figura C.5 presenta la plantilla del circuito impreso de los snubbers de sobrevoltaje.
C.2.
M
etodo de fabricaci
on de los circuitos impresos
El metodo empleado para la fabricacion de los circuitos impresos desarrollados es
el metodo de impresion en un acetato con una impresora laser. Los pasos para lograrlo se
presentan a continuacion. Se considera que el circuito impreso ya ha sido dise
nado en una
aplicacion para tal fin como Eagle o PCB.
117
118
+
-
+
V5
119
Figura C.2: Plantilla del circuito impreso de dos de las fuentes de 24V, las otras dos fuentes
de 24V son iguales.
120
14. Con thiner o alcohol en una estopa o algodon, se quita (despinta) todo el toner de la
baquelita.
15. Se realizan las perforaciones requeridas con un taladro, ya sea de pistola o de banco.
16. Se colocan los componentes electronicos en su lugar y se soldan con un cautn, soldadura y pasta para soldar. Despues de esto, la tarjeta ya est
a lista para probarse.
121
2
t
Figura C.4: Plantilla del circuito impreso de la tarjeta controladora de M2 y M3 del robot
SCARA.
Figura C.5: Plantilla del circuito impreso del snubber de sobrevoltaje RCD.
Apendice D
123
124
125
126
127
128
129
Apendice E
Snubbers: funci
on y clasificaci
on
Este apendice pretende dar informacion mas detallada sobre la funcion que realizan los snubbers en los circuitos de potencia, as como los diferentes tipos de snubbers
que existen y su clasificacion. Ademas se describen algunas pruebas realizadas con el snubber de sobrevoltaje RCD en el trabajo de [Concha07], desarrolladas en el Laboratorio de
Computacion de la Division de Estudios de Postgrado de la Facultad de Ing. Electrica de
la UMSNH donde se desarrollo tambien este trabajo.
E.1.
Funci
on y clasificaci
on de los snubbers
La funci
on practica del snubber es reducir la tension electrica que se origina en un
132
1. Snubbers serie RC sin polaridad, que son usados para proteger diodos y tiristores
limitando el voltaje maximo y la velocidad de aumento dv/dt en la recuperacion
inversa.
2. Snubbers RC polarizados, los cuales son usados para condicionar la trayectoria de
parte de la etapa de apagado de semiconductores controlables, para mantener los
voltajes aplicados a los dispositivos en niveles adecuados, o para limitar la velocidad
de aumento dv/dt durante la etapa de apagado.
3. Snubbers LR polarizados, que se encargan de condicionar la trayectoria de la etapa
de encendido de semiconductores controlables y/o limitar la velocidad de crecimiento
di/dt durante la etapa de encendido.
De acuerdo a [Mohan95], las tensiones electricas tambien se pueden controlar mediante el uso de una clase de circuitos convertidores de potencia denominados convertidores
resonantes o quasi-resonantes. Este tipo de dispositivos no se aborda en este trabajo.
Cabe mencionar que los snubbers no son parte fundamental de un circuito de
potencia, sino que se adiciona al circuito para realizar alguna de las tareas mencionadas
anteriormente. Pueden ser usados solos o en combinacion con otros, dependiendo de las
caractersticas requeridas. Sin embargo, la complejidad y el costo adicional introducidos al
sistema por la presencia del snubber debe ser balanceado con los beneficios de limitar la
tension electrica en componentes crticos del circuito.
Existe una clasificacion alterna de los snubbers de acuerdo a su uso en transistores o dispositivos de interrupci
on para condicionar su trayectoria de conmutacion. Esta
clasificacion incluye los siguientes tres tipos:
133
1. Snubbers de apagado. Para evitar los problemas que se presentan al apagar dispositivos semiconductores de interrupcion, el objetivo de estos snubbers es proveer un
voltaje de 0V a traves del dispositivo mientras la corriente se apaga.
2. Snubbers de sobrevoltaje. Este tipo de snubber minimiza el efecto de sobrevoltaje en
el momento de apagar un dispositivo debido a las inductancias parasitas del sistema.
3. Snubbers de encendido. Son usados solo para reducir las perdidas por conmutacion en
el encendido a altas frecuencias, y para limitar la corriente maxima de recuperacion
inversa del diodo.
En la u
ltima clasificacion los snubbers mencionados incluyen en sus componentes
resistencias, capacitores y diodos que generalmente son de recuperacion rapida. Para mayor
detalle de los esquemas de operacion de los snubbers, sus caractersticas y aplicaciones
consultar [Mohan95], [Jensen04], [Severns06] y [McManis06], donde se puede encontrar una
excelente referencia.
Apendice F
C
odigo del microcontrolador
En este apendice se muestran los codigos utilizados para la interfase con el robot y
desarrollo de nuevos programas, as como los codigos en lenguaje C compilados y cargados
al microcontrolador del robot SCARA.
F.1.
F.1.1.
Makefile
//----------------------------------------------------------------------------/*
Copyright (C) 2007 Leonardo Romero email:lromero@umich.mx
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
135
136
= main
#BINDIR = c:/68hc11/gcc/bin
BINDIR = /usr/bin
CC = $(BINDIR)/m68hc11-gcc
AS = $(BINDIR)/m68hc12-as
LD = $(BINDIR)/m68hc12-ld
OC = $(BINDIR)/m68hc12-objcopy
#CFLAGS = -m68hc12 -fomit-frame-pointer -fno-ident -fno-common -mshort
CFLAGS = -m68hcs12 -Os -fomit-frame-pointer -fno-ident -mshort
AFLAGS = -m68hcs12 -mshort
LFLAGS = -Map $(NAME).map
OCFLAGS = -O srec
#ARCHIVES = -lgcc
#LIBPATH=/usr/lib/gcc-lib/m6811-elf/3.0.4/m68hc12/
#LIBPATH=/usr/lib/gcc-lib/m68hc11/3.3.5-m68hc1x-20050515/m68hc12/
LIBPATH=/usr/lib/gcc-lib/m68hc11/3.3.6-m68hc1x-20060122/m68hc12/
ARCHIVES = -L$(LIBPATH) -lgcc
OBJS
= $(NAME).o crt0.o isr.o vectors.o serial.o command.o step_motor.o control.o
.c.o:
$(CC) $(CFLAGS) -S $<
$(AS) $(AFLAGS) -a=$*.lst -o $@ $*.s
.s.o:
$(AS) $(AFLAGS) -a=$*.lst -o $@ $<
.S.o:
$(AS) $(AFLAGS) -a=$*.lst -o $@ $<
all: $(OBJS)
$(LD) -T$(NAME).ld $(LFLAGS) -o$(NAME).obj $(OBJS) $(ARCHIVES)
$(OC) $(OCFLAGS) $(NAME).obj $(NAME).s19
sh srec.sh $(NAME).s19
@echo ">>>" out.s19 is ready to download to adapt9s12dp256 "<<<"
clean:
rm -f *.o; rm -f *.s19; rm -f *.s
//-----------------------------------------------------------------------------EOF
F.1.2.
serial.c
//----------------------------------------------------------------------------/*
Copyright (C) 2007 Leonardo Romero email:lromero@umich.mx
This program is
modify it under
as published by
of the License,
137
138
ser0_putchar(-);
x = -x;
}
ser0_putushort((unsigned short) x);
}
#define NDIGITS_LONG 10
void ser0_putulong(unsigned long x)
{
static byte d[NDIGITS_LONG];
static int i;
i = NDIGITS_LONG -1;
do {
d[i--] = x % 10;
x /= 10;
} while (x);
for(i++; i < NDIGITS_LONG; i++)
ser0_putchar(d[i] + 0);
}
void ser0_putlong(long x)
{
if(x < 0){
ser0_putchar(-);
x = -x;
}
ser0_putulong((unsigned long) x);
}
volatile short g_command_pending=0;
volatile char g_command_line[256];
volatile short g_command_len=0;
void __attribute__ ((interrupt)) ISR_SerialInput0(void)
{
static char c, new_command=0, i=0;
SCI0SR1;
c = SCI0DRL;
g_command_line[g_command_len++]=c;
if(c==\n){
g_command_line[g_command_len++]=0;
//
ser0_puts(g_command_line);
g_command_pending=1;
}
//
ser1_putchar(c);
}
//----------------------------------------------------------------------------// Serial 1
void ser1_init (unsigned short baud)
{
SCI1BD = baud;
/* enable transmitter and receiver and receiver interrupt */
SCI1CR1 = 0;
SCI1CR2 = scimask;
SCI1SR1;
//read register to clear flag RDRF
139
140
SCI1DRL;
}
void ser1_putchar(char c)
{
unsigned char reg;
do {
reg = TDRE;
reg &= SCI1SR1;
} while (reg==0);
//
while ((SCI1SR1 & TDRE)==0); no funciona en 3.3.5-m68hc1x-20050515
SCI1DRL = c;
}
void __attribute__ ((interrupt)) ISR_SerialInput1(void)
{
static char c;
SCI1SR1;
//read register to clear flag RDRF
c = SCI1DRL;
//read receive buffer
ser0_putchar(c);
}
//-----------------------------------------------------------------------------EOF
//-----------------------------------------------------------------------------EOF
F.1.3.
adapt9s12dp256.c
//----------------------------------------------------------------------------/*
File:
adapt9s12dp256.c
Author:
Leonardo Romero
Date:
May 9, 2007
Rev. No.:
1.0
Description: Initial Release.
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
<sys/types.h>
<sys/stat.h>
<fcntl.h>
<termios.h>
<string.h>
<stdio.h>
<unistd.h>
<stdlib.h>
<pthread.h>
putchar(c);
fflush(stdout);
}
}
void load_program(int fd, char file[])
{
int count, i=0;
char line[256];
FILE *in;
if ((in = fopen(file,"r")) == NULL){
printf("File %s can not be opened\n",file);
exit(1);
}
while(count = fread(line,1,1,in) > 0) {
write(fd,line,count);
i++;
fflush(stdout);
}
fclose(in);
}
int main(int argc, char *argv[])
{
struct termios oldtio,newtio;
char command[256], line[256], c, xon = 021, xoff=023;
pthread_t a_thread;
if (argc < 2){
printf("Sintaxis: %s serial_device file.s19\n",argv[0]);
printf("Examples: %s /dev/ttyS0 robot.s19\n",argv[0]);
printf("
%s /dev/ttyUSB0 robot.s19\n",argv[0]);
exit(1);
}
fd = open(argv[1], O_RDWR | O_NOCTTY );
if (fd <0) {perror("open failed"); exit(-1); }
tcgetattr(fd,&oldtio); /* save current port settings */
//
bzero(&newtio, sizeof(newtio));
newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD;
newtio.c_cflag = BAUDRATE | CS8 | CLOCAL | CREAD;
newtio.c_iflag = IGNPAR | IXON | IXOFF | IXANY;
newtio.c_oflag = 0;
/* set input mode (non-canonical, no echo,...) */
newtio.c_lflag = 0;
newtio.c_cc[VTIME]
newtio.c_cc[VMIN]
newtio.c_cc[VSTART]
newtio.c_cc[VSTOP]
=
=
=
=
0;
1;
021;
023;
/*
/*
/*
/*
tcflush(fd, TCIOFLUSH);
tcsetattr(fd,TCSANOW,&newtio);
tcflush(fd, TCIOFLUSH);
pthread_create(&a_thread,NULL,read_serial_port,NULL);
while(1) {
fgets(command,255,stdin);
write(fd,command,1);
141
142
if(strcmp(command,"b\n")==0)
load_program(fd,argv[2]);
}
return 0;
}
//-----------------------------------------------------------------------------
F.2.
indica la secuencia de operaciones necesarias para compilar el programa y as, posteriormente, cargarlo al microcontrolador.
F.2.1.
main.c
//----------------------------------------------------------------------------/*
Copyright (C) 2007 Leonardo Romero email:lromero@umich.mx
This program is
modify it under
as published by
of the License,
<stdio.h>
<string.h>
"main.h"
"ioRegsHcs12DP256.h"
"serial.h"
"command.h"
"isr.h"
"control.h"
int main(void);
extern char
_start_of_data;
extern char
extern const char
unsigned short int
unsigned short int
_end_of_data;
_start_of_init;
start = 0x0000;
end
= 0xffff;
417
208
104
52
35
26
13
//(baud)
//(baud)
//(baud)
//(baud)
//(baud)
//(baud)
//(baud)
OscClk
Eclock
RefClock
REFDVVal
SYNRVal
16000000
// Crystal or oscillator frequency
24000000
// final E-clock frequency (PLL)
8000000
// frequency used by the PLL to generate E-clock
(OscClk/RefClock)-1 //value for REFDV Register
(Eclock/RefClock)-1 //value for SYNR Register
0xc0;
//enable ATD
0x40; // 8 conversions per sequence
= 0x6f;
//Select Sample rate
b(0,1,1,0,1,0,1,1);
//Select Sample rate
0xb0;
//Select 8 channel mode, Continuous scan
= 0x90;
//Select 8 channel mode, single scan
143
144
ATD1CTL2 =
ATD1CTL3 =
//
ATD1CTL4
ATD1CTL4 =
ATD1CTL5 =
//
ATD1CTL5
}
0xc0;
//enable ATD
0x40; // 8 conversions per sequence
= 0x67;
//Select Sample rate
b(0,1,1,0,1,0,1,1);
//Select Sample rate
0xb0;
//Select 8 channel mode, Continuous scan
= 0x90;
//Select 8 channel mode, single scan
//#define rtimask
//#define rtimask
#define rtimask
#define RTIF
#define RTIE
static decode_command()
{
static int inicio_num, i, signo;
static char c;
command=g_command_line[0];
num_params=0;
param[0]=0;
inicio_num=0;
signo = 1;
for(i=1; (c=g_command_line[i]); i++) {
if(c==\r)
continue;
if(c== || c == \n) {
param[num_params] *= signo;
signo = 1;
param[++num_params]=0;
} else if(c==-) {
signo = -1;
} else {
inicio_num=1;
param[num_params] *= 10;
param[num_params] += c - 0;
}
}
if(!inicio_num)
num_params--;
g_command_len=0;
}
#define
#define
#define
#define
#define
#define
A_L
A_H
B_L
B_H
C_L
C_H
b(0,0,0,0,0,0,0,1)
b(0,0,0,0,0,0,1,0)
b(0,0,0,0,0,1,0,0)
b(0,0,0,0,1,0,0,0)
b(0,0,0,1,0,0,0,0)
b(0,0,1,0,0,0,0,0)
//H1
//H1
//H1
//H1
//H1
//H1
PH0
PH1
PH2
PH3
PH4
PH5
PIN
PIN
PIN
PIN
PIN
PIN
42
41
40
39
38
37
b(1,0,0,0,0,0,0,0)
main()
static unsigned short k,j;
DISABLE_INTERRUPTS;
disableCOP(); //Disable COP
rise24Mhz();
memcpy(&_start_of_data, &_start_of_init, &_end_of_data - &_start_of_data);
//
//
F.2.2.
command.c
145
146
//----------------------------------------------------------------------------/*
Copyright (C) 2007 Leonardo Romero email:lromero@umich.mx
This program is
modify it under
as published by
of the License,
<stdio.h>
<string.h>
"ioRegsHcs12DP256.h"
"main.h"
"command.h"
"control.h"
"serial.h"
"isr.h"
"step_motor.h"
/* no funciona la inicializaci
on en 3.3.5-m68hc1x-2005051
edo_wait_time = 1;
}
static void check_end_wait()
{
if(edo_wait){
if(!blm_steps[M0] && !blm_steps[M1] && !blm_steps[M2] && !blm_steps[M3]){
edo_wait = 0;
}
}
if(edo_wait_time){
if(!g_clock_rt){
ser0_putcharnl(w);
edo_wait_time = 0;
}
}
}
147
148
case K: set_ac(num_params,param);
ser0_putcharnl(K); break;
case p: change_g_pwm(num_params, param); break;
case Q: query(num_params, param); break;
case !: while(1) ; break; //Wait forever, only serial data go to the other microcontroller
}
}
//-----------------------------------------------------------------------------EOF
F.2.3.
command.h.c
//----------------------------------------------------------------------------/*
Copyright (C) 2007 Leonardo Romero email:lromero@umich.mx
This program is
modify it under
as published by
of the License,
F.2.4.
control.c
//----------------------------------------------------------------------------/*
Copyright (C) 2007 Leonardo Romero email:lromero@umich.mx
This program is
modify it under
as published by
of the License,
149
"ioRegsHcs12DP256.h"
"main.h"
"serial.h"
"step_motor.h"
"control.h"
"isr.h"
//
//
//
//
//
//
//
//
//
//
//
//
//
//
PP0
PP1
PP2
PP3
PP4
PP5
MPanPWM
MTiltPWM
PIN DA~
NADO
PIN DA~
NADO
M2_Dir
M3_Dir
//
//
//
//
//
//
//
//
PH0
PH1
PH2
PH3
PH4
PH5
PH6
PH7
mH_a1_M1
mH_a1_M2
mH_a1_Dir
mH_a1_Sync
mH_a1_Clock
mH_a1_Reset
mH_M2_Brake
mH_M2_PWM
//
//
//
//
//
//
//
//
PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7
mA_a0_M1
mA_a0_M2
mA_a0_Dir
mA_a0_Sync
mA_a0_Clock
mA_a0_Reset
mA_M3_Brake
mA_M3_PWM
;O
;O
;O
;O
;O
;O
;O
;O
;O
;O
;O
;O
;O
;O
;O
;O
;O
;O
;O
;O
;O
;O
PWM
42
41
40
39
38
37
36
35
(H1)
(H2)
150
//
//
//
//
//
//
//
//
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
mB_SwitchM0
mB_SwitchM1
mB_SwitchM2
mB_SwitchM3
Spare
Spare
Spare
Spare
;O
;O
;O
;O
(H2)
;O
;O
;I
;I
// Masks
volatile unsigned short g_temp[NUM_TEMP_SENSORS];
volatile unsigned short g_temp_raw[8];
volatile short g_pos_rel_M2=0, g_pos_rel_M3=0; // Relative position of motors
volatile long g_pos[N_MOT]={0,0,0,0}; // Absolute position of motors
volatile long g_pos_ref[N_MOT]={0,0,0,0}; // Absolute position of motors
short motor_type[N_MOT] = {STEP_MOTOR, STEP_MOTOR, DC_MOTOR, DC_MOTOR};
//volatile enum MOTOR_TYPE motor_type[N_MOT] = {STEP_MOTOR, STEP_MOTOR, DC_MOTOR, DC_MOTOR};
volatile short des_vel_clicks[N_MOT]; // Desired vel, clicks/ms
volatile short max_vel[N_MOT]={0,0,20,30}; // Initial desired bias, clicks/ms
volatile unsigned char pwm[N_MOT]; //Power to motors
volatile long
k_pro1[N_MOT] = {0,0,1000,1000}; // Proportional Gain * 100000 (pos_ref - pos_actual)
volatile long
k_pro2[N_MOT] = {0,0,10000,10000}; // Proportional Gain * 100000 (pos_old - pos_actual)
volatile long
k_int[N_MOT] = {1,1,0,0};
// Proportional Gain * 100000 (pos_old - pos_actual)
volatile long ac_err_int[N_MOT] = {0,0,0,0};
volatile short min_pwm[N_MOT] = {0,0,87,57};
volatile short
max_pwm[N_MOT] = {0,0,167,197};
volatile short
k_min_pwm[N_MOT] = {0,0,0,0};
volatile short
k_max_pwm[N_MOT] = {0,0,255,255};
volatile unsigned char active_motor=0;
//volatile static unsigned char active_motor=0;
// K0 480 100 20 5 16
void set_ac(unsigned short num_params, DEF_PARAM param[])
{
short m;
m = param[0];
if(motor_type[m] == STEP_MOTOR) {
if(num_params == 6) {
g_timer_step_init_pwm[m] = (short) param[1];
g_timer_step_max[m] = (short) param[2];
g_timer_step_min[m] = (short) param[3];
g_timer_step_inc[m] = (short) param[4];
g_timer_step_control[m] = (short) param[5];
}
//K2 10 1000 0 255
//K3 10 1000 0 255
} else {
k_pro1[m] = param[1];
k_pro2[m] = param[2];
k_int[m] = param[3];
k_min_pwm[m] = (unsigned char) param[4];
k_max_pwm[m] = (unsigned char) param[5];
}
}
151
{
short steps;
active_motor = m;
steps = signed_steps;
if(steps < 0)
steps = -steps;
blm_steps[m] = steps;
if(motor_type[m] == STEP_MOTOR){
if(signed_steps > 0)
blm_dir[m] = 1;
else
blm_dir[m] = 0;
stm_init_motor(active_motor);
}
}
void move(unsigned short num_params, DEF_PARAM param[])
{
long pos, diff_steps;
short m;
if(num_params == 2){
m = (short) param[0];
pos = param[1];
if((m == 0 && pos > 31200) || (m == 1 && pos > 10820) || (m==2 && pos > 65000) || (m==3 && pos > 480000) )
return; // Do not move
/*
* PAN:
* TILT:
*/
=
=
=
=
0;
1;
2;
3;
//If p
p[1]
p[1]
p[1]
p[1]
=
=
=
=
param[0];
param[1];
param[2];
param[3];
move(2,p);
move(2,p);
move(2,p);
move(2,p);
void report_status(void)
{
short m;
ser0_putchar(L);
for(m=0; m < N_MOT; m++){
ser0_putlong((long) g_pos_ref[m]);
ser0_putspace();
ser0_putlong((long) g_pos[m]);
152
ser0_putspace();
ser0_putulong((long)blm_steps[m]);
ser0_putspace();
}
ser0_putnl();
}
/* SPEED_CONTROL */
static unsigned char limit_range(unsigned char pwm, long error)
{
static long new_pwm;
short vel, vel_ref;
short min_p, max_p, dif;
new_pwm = pwm + error;
min_p = min_pwm[active_motor];
max_p = max_pwm[active_motor];
vel=g_vel[active_motor];
if(vel < 0)
vel = -vel;
vel_ref = max_vel[active_motor];
if(vel > vel_ref){
dif = vel - vel_ref;
min_p += dif;
max_p -= dif;
} else {
min_p--;
max_p++;
}
if(min_p < k_min_pwm[active_motor])
min_p = k_min_pwm[active_motor];
if(min_p > 126)
min_p = 126;
if(max_p > k_max_pwm[active_motor])
max_p = k_max_pwm[active_motor];
if(max_p < 128)
max_p = 128;
min_pwm[active_motor] = min_p;
max_pwm[active_motor] = max_p;
if(new_pwm > max_pwm[active_motor])
new_pwm = max_pwm[active_motor];
else if(new_pwm < min_pwm[active_motor])
new_pwm = min_pwm[active_motor];
return (unsigned char)new_pwm;
}
static void alter_power(long error )
{
pwm[active_motor] = limit_range(pwm[active_motor],error);
set_pwm_motor(active_motor, pwm[active_motor]);
}
// Position Control Demon
static void dc_position_control()
{
static long dif, error, error2, error1, error0, error_acc[N_MOT]={0,0,0,0}, pos_old[N_MOT]={0,0,0,0};
error0 = k_pro2[active_motor] * (pos_old[active_motor]
- g_pos[active_motor]) ;
error0 /= 1000L;
dif = g_pos_ref[active_motor] - g_pos[active_motor];
error1 = k_pro1[active_motor] * dif;
error1 /= 1000L;
error =
error0 + error1;
}
#define SCFflag
b(1,0,0,0,0,0,0,0)
void real_time_rutine_second(void)
{
}
void real_time_control(void)
{
short m;
for(m = 0 ; m < N_MOT; m++) {
active_motor = m;
if(motor_type[m] == DC_MOTOR)
dc_position_control();
}
}
void real_time_rutine_ms(void)
{
if(g_timer)
g_timer--;
if(g_timer_sec)
// Check 1 Second timer
g_timer_sec--;
else {
g_rtf_sec=1;
g_timer_sec = 16000;
}
}
void init_control()
{
short m;
153
154
M0_MOTOR_DDR = b(1,1,1,1,1,1,1,1);
M1_MOTOR_DDR = b(1,1,1,1,1,1,1,1);
DDRB = b(0,0,0,0,0,0,0,0);
PWMPOL = 0xff;
// PWM outputs are high at the beginning of the period, then goes
// low when the duty count is reached
//
PWMPOL = 0x00;
// PWM outputs are low at the beginning of the period, then goes
// high when the duty count is reached
//
TSCR2 =
TSCR1 =
//
155
//
//
//
//
//
//
//
//
//
//
//
//
//
//
TSCR2
TC7
TC7
TSCR2
TC7
TSCR2
TC7
TSCR2
TC7
TSCR2
TC7
TC7
TSCR2
TC7
=
=
=
=
=
=
=
=
=
=
=
=
=
=
b(0,0,0,0,1,1,1,1); //Timer Prescaler = Bus clock /128 = 1/1E24 * 128 =5.33 microseg, TCRE=1 Timer Counte
100; // Periodo = 100 * 5.33 microseg = 0.533 miliseg 1.875 Khz
50; // Periodo = 50 * 5.33 microseg = 0.266 miliseg 3.750 Khz
b(0,0,0,0,1,0,1,1); //Timer Prescaler = Bus clock /8 = 1/1E24 * 8 =0.333 microseg, TCRE=1 Timer Counter R
150; // Periodo = 150 * 0.333 microseg = 0.05 miliseg
b(0,0,0,0,1,1,0,0); //Timer Prescaler = Bus clock /16 = 1/1E24 * 16 =0.666 microseg, TCRE=1 Timer Counter
150; // Periodo = 150 * 0.66 microseg = 0.1 miliseg
b(0,0,0,0,1,0,1,0); //Timer Prescaler = Bus clock /4 = 1/1E24 * 4 =0.166 microseg, TCRE=1 Timer Counter R
150; // Periodo = 150 * 0.166 microseg = 0.025 miliseg 40kz (muy alto)
b(0,0,0,0,1,1,1,0); //Timer Prescaler = Bus clock /64 = 1/1E24 * 64 =2.666 microseg, TCRE=1 Timer Counter
50; // Periodo = 50 * 2.666 microseg = 0.133 miliseg 7.5 khz
40;
// Periodo = 40 * 2.666 microseg = 0.1066 miliseg 9.375 khz
b(0,0,0,0,1,1,0,1); //Timer Prescaler = Bus clock /32 = 1/1E24 * 32 =1.333 microseg, TCRE=1 Timer Counter
50; // Periodo = 50 * 1.333 microseg = 0.133 miliseg 15 khz (muy alto)
//
//
//
TC6
TC5
TC4
= 20;
= 20;
= 10;
init_encoders();
TSCR2 =
TSCR1 =
//
}
// Returns 1 if switch is pressed
unsigned short get_switchB(unsigned char mask)
{
unsigned char r;
r = PORTB & mask;
if(r)
return 1;
else
return 0;
}
#define TIMER_PT 15
#define TIMER_PT_LONG 100
int init_secuence(int s)
{
static short result;
result = 0;
if(s==I_M0_RIGHT){
if(!get_switchB(mB_SwitchM0)
set_move_params(0,-1);
&& !blm_steps[0])
156
result = 1;
}
return result;
}
//-----------------------------------------------------------------------------EOF
F.2.5.
control.h
//----------------------------------------------------------------------------/*
Copyright (C) 2007 Leonardo Romero email:lromero@umich.mx
This program is
modify it under
as published by
of the License,
NUM_TEMP_SENSORS 7
mB_SwitchM0
b(0,0,0,0,0,0,0,1)
mB_SwitchM1
b(0,0,0,0,0,0,1,0)
mB_SwitchM2
b(0,0,0,0,0,1,0,0)
mB_SwitchM3
b(0,0,0,0,1,0,0,0)
extern
extern
extern
extern
unsigned
unsigned
unsigned
unsigned
short
short
short
short
g_temp[];
k_vel_hold[];
k_ms_hold[];
k_break_ms[2];
157
158
F.2.6.
isr.c
//----------------------------------------------------------------------------/*
Copyright (C) 2007 Leonardo Romero email:lromero@umich.mx
This program is
modify it under
as published by
of the License,
"main.h"
"isr.h"
"serial.h"
"control.h"
"step_motor.h"
MCCTL |= ICLAT;
unsigned char p, t;
p = PAN_AC;
t = TILT_AC;
*/
DISABLE_INTERRUPTS;
g_pos[M2] += (long) g_pos_rel_M2;
g_pos[M3] += (long) g_pos_rel_M3;
g_vel[M2] = g_pos_rel_M2;
g_vel[M3] = g_pos_rel_M3;
g_pos_rel_M2 = 0;
g_pos_rel_M3 = 0;
ENABLE_INTERRUPTS;
}
#define RTIF
b(1,0,0,0,0,0,0,0)
F.2.7.
isr.h
//----------------------------------------------------------------------------/*
Copyright (C) 2007 Leonardo Romero email:lromero@umich.mx
This program is
modify it under
as published by
of the License,
159
160
ISR_H
ISR_H
DISABLE_INTERRUPTS
ENABLE_INTERRUPTS
__asm__(" sei")
__asm__(" cli")
#endif
//-----------------------------------------------------------------------------EOF
F.2.8.
step motor.c
//----------------------------------------------------------------------------/*
Copyright (C) 2007 Leonardo Romero email:lromero@umich.mx
This program is
modify it under
as published by
of the License,
161
Author:
Leonardo Romero
Date:
May 9, 2007
Rev. No.:
1.0
Description: Initial Release
*/
// Version using CI SLA7026M
// Date: November 11th, 2006
#include <stdio.h>
#include <string.h>
#include "ioRegsHcs12DP256.h"
#include "main.h"
#include "serial.h"
#include "command.h"
#include "control.h"
#include "step_motor.h"
#include "isr.h"
//#define DEBUG
volatile unsigned char blm_dir[N_MOT] ={0,0}, blm_step[N_MOT]={1,1}, blm_port_value[N_MOT];
volatile unsigned short blm_steps[N_MOT]={1,1,0,0};
volatile unsigned short stm_clock[N_MOT]={0,0,0,0};
void stm_set_motor(short m)
{
switch(m){
case 0: setb(mA_a0_M1,PORTA); setb(mA_a0_M2,PORTA); clearb(mA_a0_Sync,PORTA); clearb(mA_a0_Clock,PORTA); break;
//
case 0: clearb(mA_a0_M1,PORTA); clearb(mA_a0_M2,PORTA); clearb(mA_a0_Sync,PORTA); clearb(mA_a0_Clock,PORTA); break
case 1: setb(mH_a1_M1,PORTH); setb(mH_a1_M2,PORTH); clearb(mH_a1_Sync,PORTH); clearb(mH_a1_Clock,PORTH); break;
//
case 1: clearb(mH_a1_M1,PORTH); clearb(mH_a1_M2,PORTH); clearb(mH_a1_Sync,PORTH); clearb(mH_a1_Clock,PORTH); break
}
if(blm_dir[m] == DIR_FORWARD) {
switch(m) {
case 0 : setb(mA_a0_Dir,PORTA); break;
case 1 : setb(mH_a1_Dir,PORTH); break;
}
}
else {
switch(m) {
case 0: clearb(mA_a0_Dir,PORTA); break;
case 1: clearb(mH_a1_Dir,PORTH); break;
}
}
}
162
switch(m) {
case M0: pwm
case M1: pwm
case M2: pwm
case M3: pwm
}
return pwm;
=
=
=
=
M0_PWM;
M1_PWM;
M2_PWM;
M3_PWM;
break;
break;
break;
break;
}
// K0 40 40 5 5 8
// K1 40 40 5 5 8
volatile unsigned short g_timer_step_init_pwm[N_MOT]= {20,20}; /* 480 * 1/16ms = 30ms */
volatile unsigned short g_timer_step_max[N_MOT]= {20,20};
volatile unsigned short g_timer_step_min[N_MOT]= {10,10};
volatile unsigned short g_timer_step_inc[N_MOT]= {1,1};
volatile unsigned short g_timer_step_control[N_MOT]= {10,10};
volatile unsigned short g_timer_step[N_MOT]= {20,20};
volatile unsigned char g_pwm = 0;
// ms/vuelta = g_timer_step*1/16 *800
// 20 -> 1000ms por 800 pasos (1 vuelta)
// 30 -> 1500ms por 800 pasos (1 vuelta)
// 35 -> 1750ms por 800 pasos (1 vuelta) No pierde pasos en vacio
// 40 -> 2000ms por 800 pasos (1 vuelta)
//
void blm_ajusta_timer_motor(short m)
{
static short timer, steps, inc, control;
timer = g_timer_step[m];
steps = blm_steps[m];
inc = g_timer_step_inc[m];
control = g_timer_step_control[m];
if (steps > control) {
if (timer > g_timer_step_min[m])
timer -= inc;
} else {
if (timer < g_timer_step_max[m])
timer += inc;
}
g_timer_step[m] = timer;
}
static void raw_motor_conmutator_to_high(short m)
{
stm_clock[m]=4;
switch (m){
case 0:
setb(mA_a0_Clock, PORTA);
case 1:
setb(mH_a1_Clock, PORTH);
}
blm_ajusta_timer_motor(m);
g_clock_lo[m]=g_timer_step[m];
g_clock_hi[m]=g_timer_step[m];
break;
break;
}
static void raw_motor_conmutator_to_low(short m)
{
switch (m){
case 0:
clearb(mA_a0_Clock, PORTA); break;
case 1:
clearb(mH_a1_Clock, PORTH); break;
}
}
static void stm_set_sync_high_motor(short m)
{
switch (m) {
case 0: setb(mA_a0_Sync,PORTA); break;
case 1: setb(mH_a1_Sync,PORTH); break;
}
}
/* Activated when there is a motor rotation */
void blm_pwm(short m)
{
if(g_clock_lo[m])
return;
raw_motor_conmutator_to_low(m);
if (blm_steps[m] && !g_clock_hi[m]){
if(blm_steps[m]){
raw_motor_conmutator_to_high(m);
}
if(blm_steps[m]){
blm_steps[m]--;
if(blm_dir[m])
g_pos[m]++;
else
g_pos[m]--;
}
if(!blm_steps[m]) {
set_pwm_motor(m,MAX_PWM_HOLD);
stm_set_sync_high_motor(m);
}
}
}
void stm_init_motor(short m)
{
stm_set_motor(m);
set_pwm_motor(m,MAX_PWM);
g_clock_lo[m] = g_timer_step_init_pwm[m];
g_clock_hi[m] = g_timer_step_init_pwm[m];
g_timer_step[m] = g_timer_step_max[m];
}
void blm_demon(void)
{
short m;
unsigned char step;
get_vel();
for(m=0; m < 2; m++){
if(blm_steps[m]){
set_pwm_motor(m,MAX_PWM_HOLD);
blm_pwm(m);
}
}
}
//-----------------------------------------------BRUSHED MOTORS
volatile unsigned char enc_actual_M2, enc_actual_M3;
volatile unsigned char enc_derr_M2,
enc_derr_M3;
163
164
//clear flag
ENABLE_INTERRUPTS;
}
void __attribute__ ((interrupt))
{
TFLG1 |= b(0,1,0,0,0,0,0,0);
}
void __attribute__ ((interrupt))
{
//
g_pos[3]++;
TFLG1 |= b(0,0,1,0,0,0,0,0);
}
void __attribute__ ((interrupt))
{
//
g_pos[2]++;
TFLG1 |= b(0,0,0,1,0,0,0,0);
}
void __attribute__ ((interrupt))
{
TFLG1 |= b(0,0,0,0,1,0,0,0);
}
void __attribute__ ((interrupt))
{
TFLG1 |= b(0,0,0,0,0,1,0,0);
}
ISR_IC6(void)
//clear flag
ISR_IC5(void)
//clear flag
ISR_IC4(void)
//clear flag
ISR_IC3(void)
//clear flag
ISR_IC2(void)
//clear flag
//-----------------------------------------------------------------------------EOF
F.2.9.
test scara.c
//----------------------------------------------------------------------------/*
File:
test.c
Author:
Leonardo Romero
Date:
May 9, 2007
Rev. No.:
1.0
Description: Initial Release.
*/
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <termios.h>
#include <string.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <pthread.h>
#include <math.h>
#define BAUDRATE B115200
//#define BAUDRATE B38400
//#define BAUDRATE B9600
//#define SERIALDEVICE "/dev/ttyS0"
//#define SERIALDEVICE "/dev/ttyUSB0"
FILE *f;
int fd;
char command[256], line[256];
void envia_comando(char comando[], char respuesta[])
{
//
printf("%s", comando);
165
166
//
printf(".");
fprintf(f,"%s",comando);
fflush(f);
fgets(respuesta,250,f);
//
printf("%s\n", respuesta);
fflush(NULL);
}
#define PI 3.14159
double dist(double x0, double y0, double x1, double y1)
{
return sqrt( (x0 - x1) * (x0 - x1) + (y0 - y1) * (y0 - y1) ) ;
}
void get_angles(double x, double y, int M[])
{
double Res_M0 = (360.0 / 800.0) * (8.0 / 44.0) * (8.0 / 60.0) * (PI / 180.0);
// en rad 1 u = 0.010909
grados
double Res_M1 = (360.0 / 800.0) * (8.0 / 32.0) * (8.0 / 36.0) * (PI / 180.0);
// en rad 1 u = 0.025
grados
double Res_M2 = (360.0 / 2000.0) * (1.0 / 19.7) * (8.0 / 20.0) * (PI / 180.0);
// en rad 1 u
= 0.003654 grados
double Res_M3 = (1.0 / 2000.0) * (1.0 / 6.3) * (25.4 / 11.0);
// en mm 1000 u = 0.18326 mm
int Def_M0 = 5000, Def_M1 = 5350, Def_M2 = 42500;
double l1 = 200.0, l2 = 200.0; //en mm
double teta_global = 90.0*(PI/180.0);
double ang1, ang2, ang3,
beta, phi;
=
=
=
=
}
// Unidades en milimetros
void elipse(double radio_a, double radio_b, double xc, double yc, int n, double x[], double y[])
{
int i;
double inc_ang, ang;
inc_ang = 360.0 / n * PI / 180.0;
for(i=0; i < n; i++) {
ang = inc_ang * i;
x[i] = xc + radio_a * cos(ang);
y[i] = yc + radio_b * sin(ang);
}
}
// n >= 2
void linea( double x0, double y0, double x1, double y1, int n, double x[], double y[])
{
int i;
167
void dibuja(int n, double x[], double y[], double M3, int levanta)
{
int i,i0, M[4];
char comando[256], respuesta[256];
i0 = 0;
for(i=0; i < n; i++){
get_angles(x[i], y[i], M);
if(i==0 && levanta) {
sprintf(comando, "W%d %d %d %d\n", M[0], M[1], M[2], 400000);
envia_comando(comando, respuesta);
}
if( i > 0 && i != n-1 && dist(x[i0],y[i0],x[i],y[i]) > 0.05){
sprintf(comando, "W%d %d %d %d\n", M[0], M[1], M[2], (int) M3);
envia_comando(comando, respuesta);
i0 = i;
}
if(i==n-1 && levanta) {
sprintf(comando, "W%d %d %d %d\n", M[0], M[1], M[2], 400000);
envia_comando(comando, respuesta);
}
}
}
void prueba_robot()
{
int n=1000;
double x[10000], y[10000];
//
// en mm
168
//
bzero(&newtio, sizeof(newtio));
newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD;
newtio.c_cflag = BAUDRATE | CS8 | CLOCAL | CREAD;
newtio.c_iflag = IGNPAR;
newtio.c_oflag = 0;
/* set input mode (non-canonical, no echo,...) */
newtio.c_lflag = 0;
newtio.c_cc[VTIME]
newtio.c_cc[VMIN]
= 0;
= 1;
tcflush(fd, TCIOFLUSH);
tcsetattr(fd,TCSANOW,&newtio);
tcflush(fd, TCIOFLUSH);
f = fdopen(fd,"w+");
/*
for(i=0; i < 1; i++){
printf("*** Iteracion %d ***\n\n",i);
envia_comando("W13250 5350 42500 0\n", line);
envia_comando("W13250 5350 42500 250000\n", line);
envia_comando("W10000 4000 30000 350000\n", line);
}
*/
prueba_robot();
fclose(f);
return 0;
}
//-----------------------------------------------------------------------------
169
Referencias
[Actuator06]
http://www.dispensinglink.com/scara robot.htm/.
Updated: 2006/02/28
[Allegro MicroSystems07] Allegro MicroSystems, I. Sla7060m, sla7061m, and sla7062m
unipolar stepper-motor translator drivers, 2007.
URL http://www.allegromicro.com/en/Products/Part Numbers/97060/
[Arellano05]
Arellano, J. Reconstrucci
on tridimensional de ambientes interiores utilizando un robot m
ovil equipado con un telemetro l
aser.
Tesis de maestra, Universidad Michoacana de San Nicloas de
Hidalgo, Facultad de Ingeniera Electrica, Division de Estidios
de Posgrado, Agosto 2005.
[Arts04]
http://technologicalarts.com/. Updated:
2004/09/22
[Automation06]
[Barrientos97]
[Brumson06]
172
Referencias
URL
http://www.roboticsonline.com/public/articles/-
[Catalog.com08]
[Circuits06]
http://www.solarbotics.net/library/pdflib/pdf/
drive.pdf
[Com06a]
http://www.dispensingrobots.com/SCARA.htm/.
Updated: 2006/03/09
[Com06b]
[Concha07]
Concha, A. Dise
no y construccion de un robot m
ovil. En Tesis de Licenciatura, Universidad Michoacana de San Nicol
as de
Hidalgo, Facultad de Ingeniera Electrica. Junio 2007.
[Condit04]
http://ww1.microchip.com/downloads/en/AppNotes
/00907a.pdf
[Corporation02]
http://www.clickautomation.com/PDF/categories
http://www.tecnoedu.com/Feedback/Serpent.php/.
Updated: 2006/03/15
Referencias
173
[Estrada06]
Estrada, C. Dise
no de un sistema de control de seguimiento de
trayectorias para un robot m
ovil. Tesis de maestra, Universidad
Michoacana de San Nicloas de Hidalgo, Facultad de Ingeniera
Electrica, Division de Estidios de Posgrado, Marzo 2006.
[Fisnar06]
[Jensen04]
[Jones98]
Jones, J. L., Flynn, A. M., y Seiger, B. A. Mobile Robots. Cambridge University Press., 1998.
[Jones08]
[Latombe91]
[Maloney06]
Maloney, T. J. Electr
onica Industrial Moderna. Prentice Hall,
2006.
[Martin07]
http://www.x-robotics.com/sensores.htm/.
Updated: 2007/06/05
[Mckerrow91]
[McManis06]
[Mohan95]
Mohan, N., Underland, T. M., y Robbins, W. P. Power Electronics: Converters, Applications and Design. John Wiley & Sons,
1995.
174
[Motoman06]
Referencias
http://www.motoman.com/products/robots/models/-
[Ohm06]
Ohm, D. y Oleksuk, R. Influence of pwm schemes and commutation methods for dc and brushless motors and drives, 2006.
URL http://www.drivetechinc.com/articles/SW BLDCAC5.pdf/.
Updated: 2006/11/22
[Petriu06]
http://www.site.uottawa.ca/ petriu/-
Ramrez, S.
Dise
no y construcci
on de un manipulador con
http://www.peakrobotics.com/Products.htm/.
Updated: 2006/02/12
[Robotics06b]
[Romero99]
Romero, L. Navegacion de robots moviles en ambientes interiores. En Informe tecnico, Instituto Tecnol
ogico y de Estudios
Superiores de Monterrey, Campus Cuernavaca. 1999.
Referencias
175
[Romero01]
Romero, L. Construcci
on de mapas y localizaci
on de robots m
oviles: un enfoque probabilsta. Tesis Doctoral, Instituto Tecnologico y de Estudios Superiores de Monterrey, Campus Cuernavaca,
2001.
[Romero04a]
[Romero04b]
[Rosen06]
[Ros07]
Ros, O. Dise
no e implementacion del control de un brazo manipulador scara. En Tesis de Licenciatura, Universidad Michoacana de San Nicol
as de Hidalgo. Facultad de Ingeniera Electrica.
Agosto 2007.
[Salimian06]
[Sears88]
Sears, F. W., Zemansky, M. W., y Young, H. D. Fisica Universitaria. Adison-Wesley Iberoamericana, 1988.
[Semiconductor99]
[Semiconductor08]
[Severns06]
176
[SILICON04]
Referencias
SILICON, L.
SILICON
LABORATORIES, 2004.
URL http://www.silabs.com/public/documents/tpub doc/anote
/Microcontrollers/en/an155.pdf
[Solutions06]
[Spong89]
[Technology]
Technology, A.
URL http://www.adept.com/. Updated: 2006/02/22
[Technology07]
URL http://www.linear.com/pc/productDetail.jsp?navId=H0,C1,C1003,C1042,C1
[UDG08]
[Ure
na06]
Ure
na, J. U. Dise
no y construccion de microrrobots: Control de
motores. En Seminarios ALCABOT e HISPABOT. Marzo 2006.
[Valvano04]
Valvano, J. W.
En
2004/01/23
[Wikipedia06]
http://en.wikipedia.org/wiki/SCARA robot/.
Updated: 2006/03/10
[Wikipedia08]
[Wildi02]
Wildi, T. Electrical machines, drives, and power systems. Prentice Hall, 5a edon., 2002.
177
Referencias
[Williams02]
[Yamaha06]
http://www.yamaha-motor.co.jp/global/business/-
Glosario
Actuador Dispositivo capaz de transformar alg
un tipo de energa en energa mecanica que
se traduce como un movimiento mecanico.
BJT Acronimo del ingles Bipolar Junction Transistors que se refiere al componente electronico semiconductor conocido como transistor de union bipolar.
Control en lazo abierto Esquema de control en el que la salida del sistema no se usa en
forma alguna para aplicar una accion de control. Generalmente la salida del sistema a
controlar se compara con la entrada para dar lugar al error en base al cual se calcula
y aplica la acci
on de control correspondiente a traves del controlador.
Control en lazo cerrado Esquema de control en el que la salida del sistema es usado para
obtener el error entre la entrada y la salida para posteriormente calcular y aplicar la
acci
on de control correspondiente a traves del controlador.
Controlador del motor Dispositivo en base a circuitos electronicos de potencia y/o l
ogicos encargado de aplicar la corriente y voltaje adecuados alg
un devanado del motor
para que realice un movimiento con las caractersticas requeridas.
DOF Acronimo del ingles Degrees of Freedom que se refiere al n
umero de grados de libertad
de un robot o sistema.
Encoder Sensor odometrico basado en componentes de transmision y recepcion de luz
usados junto con un disco metalico perforado acoplado a la flecha del motor para
obtener la posicion y velocidad de dicho motor.
Estator Devanado de un motor que permanece estacionario o parado durante la operacion
del motor.
179
180
Glosario
GNU Acronimo del ingles General Public License que se refiere al software que es de
dominio o licencia p
ublica.
Holgura Espacio vaco entre dos piezas que han de encajar.
Interfaz Conexi
on fsica y funcional entre dos dispositivos o sistemas independientes.
L7805T Circuito integrado regulador de voltaje que proporciona un nivel de tension fijo
de 5 volts entre sus terminales de salida.
LED Elemento semiconductor capaz de emitir luz cuando es polarizado diractamente.
Linux Sistema operativo de licencia p
ublica plataforma abierta multiusuario multitarea y
con potentes capacidades.
LM338 Circuito integrado regulador de voltaje ajustable que proporciona un nivel de
tension variable de CD con capacidad para entregar 5A.
LMD18200 Circuito integrado que proporciona mediante elementos semiconductores y de
logica digital un control de cuatro cuadrantes a la carga conectada en sus terminales
de salida.
Microcontrolador Circuito integrado de alta tecnologa capaz de tener un comportamiento predeterminado por los algoritmos programados compilados y grabados en su
memoria.
Micropaso Tecnica de control de posicion de un motor de pasos que produce varios pasos
peque
nos por cada paso del motor mediante la modulacion del voltaje aplicado a sus
devanados.
MOSFET Acronimo del ingles Metal Oxide Semiconductor Field Effect Transistor que se
refiere al elementeo semiconductor denominado transistor de efecto de campo de oxido
semiconductor.
Motor de pasos Tipo de motor de CD construido con varios devanados en el estator y
que es capaz de proporcionar un movimiento en pasos discretos (movimiento angular
de un determinado n
umero de grados fijos) en su flecha mediante la alimentacion
adecuada secuencial de sus devanados.
Glosario
181
Od
ometro Equivalente a encoder.
Pantalla electrost
atica Conductor malla conductora o metal permeable usados alrededor
de un conductor con uno de sus extremos conectado a tierra para reducir o eliminar
el ruido electrico o megnetico. En el caso del ruido electrico se usa una malla o papel
conductor alrededor del cable a proteger mientras que para eliminar el ruido magnetico
se usa un metal permeable encerrando la fuente de ruido.
Puente H Circuito de control que usa dispositivos semiconductores de potencia que conmutan de manera que proporcionan un control de cuatro cuadrantes a la carga conectada en sus terminales de salida. Este esquema es usado tpicamente para controlar
motores de CD.
PWM Acronimo del ingles Pulse Width Modulator que se refiere a la tecnica de control
de voltaje mediante la modulacion del ancho de pulso. Es utilizada para variar continuamente la potencia promedio a una carga electrica mediante la variacion del ciclo
de trabajo (DC) de la se
nal pulsante aplicada a la carga.
Retroalimentaci
on Lazo o conexion entre la salida de un sistema de control y el comparador con la entrada en el control de lazo cerrado.
Rotor Devanado de un motor que experimenta el movimiento de rotacion a causa de
la induccion electromagnetica durante su operacion. Normalmente este devanado se
encuentra acoplado a la flecha del motor.
Ruido Se
nal de voltaje no deseado inducido en el conductor de la se
nal debido a altas
corrientes. Es resultado de capacitancias parasitas (ruido electrico) o de variaciones
de flujo magnetico parasitas (ruido magnetico).
Sensor Equivalente a transductor.
SLA7062M Circuito integrado que proporciona mediante elementos semiconductores y de
l
ogica digital un control chopper a la carga conectada en sus terminales de salida.
Snubber Circuito a
nadido al sistema de potencia para eleiminar el efecto de las inductancias parasitas sobre el comportamiento del sistema.
182
Glosario
Indice
Actuador, 3
tipos, 3
Funcionamiento, 56
Articulaciones
tipos, 3
Puente H, 59
Motores de pasos
Componentes esenciales, 15
Controlador, 27, 45
metodo de fabricaci
on de, 117
Conclusiones, 97
Metodos de excitacion, 31
Control chopper, 42
Medio paso, 34
Convertidor digital-analogico, 49
Micropasos, 35
Paso completo, 32
Fuente de alimentaci
on, 73
Fuente de potencia, 19
Operacion, 30
Interruptores de contacto, 45
Linux, 1
Tipos, 28
Microcontrolador, 21
Odometro, 17
9S12DP256C, 21
caractersticas, 21
PWM, 42
Adapt9S12DP256, 21
Robot
c
odigo, 135
programacion, 22
definicion, 2
Se
nal de pwm, 49
importado
desventajas, 1
Motores de CD, 13
controlador, 59
movil, 3
controladores
manipulador, 3
183
Indice
184
arquitectura, 3
clasificacion, 3
de velocidad, 17
Sensores, 16
partes de, 3
de lmite, 19
ventajas, 3
definicion, 16
SCARA, 5
odometricos, 17
aplicaciones, 6
SLA7062M, 46
caractersticas, 6, 7
categoria, 5
Snubbers
comercial, 7
clasificacion, 131
configuracion, 5
costo, 8
funcion, 131