Вы находитесь на странице: 1из 203

Firmado digitalmente por

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

Para obtener el grado de


INGENIERO ELECTRICISTA

Presenta
Omar Rodrguez P
aez

Leonardo Romero Mu
noz
Asesor de Tesis

Universidad Michoacana de San Nicolas de Hidalgo


Julio 2008

A mis padres, mi hermana y toda mi familia.

A mis maestros, especialmente al Dr. Leonardo Romero por su valiosa asesora


y direcci
on academica.

A mi novia, sus padres y todos mis amigos.

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 . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

3. Controlador de los motores de CD de pasos


3.1. Tipos de motores pasos . . . . . . . . . . . .
3.1.1. Bobinado bipolar . . . . . . . . . . . .
3.1.2. Bobinado unipolar . . . . . . . . . . .
3.2. Operacion de los motores de pasos unipolares
3.3. Metodos para excitar los motores de pasos . .
vii

.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.

.
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

3.4. Operacion a alta velocidad . . . . . . . . .


3.4.1. Modelo de las bobinas de un motor
3.4.2. Resistencia en serie con el motor .
3.4.3. Dos suministros de potencia . . . .
3.4.4. Modulacion de ancho de pulso . .
3.4.5. Control chopper . . . . . . . . . .
3.5. Controlador de los motores . . . . . . . .
3.5.1. Circuito integrado SLA7062M . . .
3.5.2. Convertidor digital-analogico . . .
3.5.3. Snubber de sobrevoltaje RCD . . .
3.6. Resumen . . . . . . . . . . . . . . . . . . .

. . . . . .
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

4. Controlador de los motores de CD


4.1. Operacion de los motores de CD . . . . . . . . . . . .
4.2. Puente H . . . . . . . . . . . . . . . . . . . . . . . . .
4.3. Esquema PWM que implementa el controlador . . . .
4.4. Controlador de los motores de CD . . . . . . . . . . .
4.4.1. Circuito integrado LMD18200 . . . . . . . . . .
4.4.2. Circuito que monitorea las se
nales del encoder
4.5. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

Contenido

ix

A. Control del robot


101
A.1. Comunicacion con el robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
A.2. Descarga de un programa al microcontrolador . . . . . . . . . . . . . . . . . 102
A.3. Funcionamiento del robot y comandos usados . . . . . . . . . . . . . . . . . 102
A.4. Comunicacion con el robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
A.4.1. Comando para mover los motores del robot . . . . . . . . . . . . . . 104
A.4.2. Comando para informar sobre el estado de los interruptores de contacto105
B. Hojas de datos de fabricantes
B.1. Motor de pasos Mycom PS4913M-02B
B.2. CI SLA7062M . . . . . . . . . . . . . .
B.3. Motor de CD Pittman GM8724S011 .
B.4. Motor de CD Pittman GM9236S021 .
B.5. CI LMD18200 . . . . . . . . . . . . . .

.
.
.
.
.

107
107
107
107
107
108

C. Circuitos impresos desarrollados


C.1. Plantillas de los circuitos impresos . . . . . . . . . . . . . . . . . . . . . . .
C.2. Metodo de fabricaci
on de los circuitos impresos . . . . . . . . . . . . . . . .

117
117
117

D. Tarjetas H1 y H2 para la conexion del microcontrolador

123

E. Snubbers: funci
on y clasificacion
E.1. Funcion y clasificacion de los snubbers . . . . . . . . . . . . . . . . . . . . .

131
131

F. Codigo del microcontrolador


F.1. Programas de interfase y desarrollo usados . . . . .
F.1.1. Makefile . . . . . . . . . . . . . . . . . . . .
F.1.2. serial.c . . . . . . . . . . . . . . . . . . . . .
F.1.3. adapt9s12dp256.c . . . . . . . . . . . . . . .
F.2. Programa del microcontrolador del robot SCARA .
F.2.1. main.c . . . . . . . . . . . . . . . . . . . . .
F.2.2. command.c . . . . . . . . . . . . . . . . . .
F.2.3. command.h.c . . . . . . . . . . . . . . . . .
F.2.4. control.c . . . . . . . . . . . . . . . . . . . .
F.2.5. control.h . . . . . . . . . . . . . . . . . . . .
F.2.6. isr.c . . . . . . . . . . . . . . . . . . . . . .
F.2.7. isr.h . . . . . . . . . . . . . . . . . . . . . .
F.2.8. step motor.c . . . . . . . . . . . . . . . . .
F.2.9. test scara.c . . . . . . . . . . . . . . . . . .

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

Robot SCARA desarrollado y construido localmente. . . . . . . . . . . . . .


Imagenes de los motores de CD del robot y encoder HP . . . . . . . . . . .
Motor de pasos utilizado. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Elementos esenciales de un motor de pasos. . . . . . . . . . . . . . . . . . .
Esquema del odometro incremental adjunto al motor. . . . . . . . . . . . .
Se
nal en cuadratura generada por el odometro. . . . . . . . . . . . . . . . .
Imagenes del odometro o encoder que utilizan los motores Pittman del robot
SCARA construido. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.8. Sensor de lmite o bumper. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.9. Diagrama de conexion de los sensores de lmite. . . . . . . . . . . . . . . . .
2.10. Imagenes de la fuente de alimentacion . . . . . . . . . . . . . . . . . . . . .
2.11. Modulo Adapt9S12DP256 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.12. Imagenes de la caja del microcontrolador y controladores de los motores . .
2.13. Diagrama de bloques del esquema de conexion. . . . . . . . . . . . . . . . .

18
19
20
20
22
24
25

3.1. Ejes X y Y de los motores de pasos . . . . . . . . . . . . . . .


3.2. Arreglo bipolar de un motor de pasos. . . . . . . . . . . . . .
3.3. Arreglo unipolar de un motor de pasos. . . . . . . . . . . . .
3.4. Cables y bobinas del motor de pasos. . . . . . . . . . . . . . .
3.5. Circuito de control de un motor de pasos unipolar. . . . . . .
3.6. Principio de operacion del motor de pasos unipolar. . . . . .
3.7. Secuencia con una sola bobina energizada del motor de pasos.
3.8. Secuencia con dos bobinas energizadas. . . . . . . . . . . . . .
3.9. Secuencia de medio paso. . . . . . . . . . . . . . . . . . . . .
3.10. Se
nales de micropasos. . . . . . . . . . . . . . . . . . . . . . .
3.11. Metodo de micropasos. . . . . . . . . . . . . . . . . . . . . . .
3.12. Modelo de una bobina. . . . . . . . . . . . . . . . . . . . . . .
3.13. Corriente en una bobina con tres diferentes frecuencias. . . .
3.14. Resistencia en serie con una bobina. . . . . . . . . . . . . . .

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

3.15. Dos suministros de potencia para un motor de pasos. . . . . . . .


3.16. Esquema de modulacion de ancho de pulso (PWM) . . . . . . . .
3.17. Corriente y voltaje en un motor de pasos con el control chopper.
3.18. Circuito chopper. . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.19. Diagrama de bloques del controlador de los motores de pasos. . .
3.20. Circuito esquematico del controlador de los motores de pasos. . .
3.21. Circuito integrado SLA7062M . . . . . . . . . . . . . . . . . . . .
3.22. Diagrama de bloques del CI SLA7062M . . . . . . . . . . . . . .
3.23. Forma de onda de corriente para diferentes resoluciones. . . . . .
3.24. Convertidor digital-analogico. . . . . . . . . . . . . . . . . . . . .
3.25. Snubber de sobrevoltaje RCD. . . . . . . . . . . . . . . . . . . .
3.26. Forma del voltaje del puente de 3 fases sin snubber. . . . . . . .
3.27. Forma del voltaje del puente de 3 fases con snubber. . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

40
42
43
44
45
47
48
49
52
53
53
54
54

4.1. Ejes theta y theta-zeta del robot SCARA. . . . . . . . . . . . . . . .


4.2. Principio de funcionamiento de un motor de CD. . . . . . . . . . . .
4.3. Disposicion de los elementos del motor de CD de iman permanente.
4.4. Vista interior de un motor de CD con escobillas. . . . . . . . . . . .
4.5. Arreglo tpico de un puente H. . . . . . . . . . . . . . . . . . . . . .
4.6. Interrupci
on de la corriente en una carga inductiva. . . . . . . . . . .
4.7. Diagrama de bloques del controlador de los motores de CD. . . . . .
4.8. Diagrama de bloques funcional del LMD18200. . . . . . . . . . . . .
4.9. Circuito monoltico LMD18200. . . . . . . . . . . . . . . . . . . . . .
4.10. Esquema del CI LMD18200. . . . . . . . . . . . . . . . . . . . . . . .
4.11. Esquema del control completo anti-fase en el CI LMD18200. . . . . .
4.12. Esquema de control signo/magnitud en el CI LMD18200. . . . . . .
4.13. Diagrama del circuito que monitorea las se
nales del encoder. . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

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

6.1. Esquema de un regulador de 15A. . . . . . . . . . . . . . . . . . . . . . . . .


6.2. Diagrama del convertidor Buck LT1074 . . . . . . . . . . . . . . . . . . . .
6.3. Forma de onda de V e I al alimentar a M0 y usando un snubber de 100F/250V
y sin R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4. Forma de onda de V e I al alimentar a M0 y usando un snubber de 100F/250V
y 2.7/15W. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.5. Forma de onda de V e I al alimentar a M0 y usando un snubber de 100F/250V
y 1/10W. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.6. Forma de onda de V e I al alimentar M1 y usando un snubber de 100F/250V
sin R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.7. Forma de onda de V e I al alimentar M1 y usando un snubber de 100F/250V
y 2.7/10W. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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.8. Forma de onda de V e I al alimentar M1 y usando un snubber de 100F/250V


y 0.5/10W. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.9. Forma de onda de V e I al alimentar M1 y usando un snubber de 1000F/35V
y 0.5/10W. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.10. Diagrama esquematico del circuito 555 operando como oscilador. . . . . . .
6.11. Orientaci
on del u
ltimo eslabon. . . . . . . . . . . . . . . . . . . . . . . . . .
6.12. Espacio del
angulo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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.

Especificaciones tecnicas de los motores de pasos.


Especificaciones tecnicas de los motores de pasos.
Especificaciones tecnicas de los motores de pasos.
Especificaciones tecnicas del CI SLA7062M. . . .
Cont. especificaciones tecnicas del CI SLA7062M.
Hoja de datos del CI LMD18200. . . . . . . . . .
Hoja de datos del CI LMD18200. . . . . . . . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

88
89
90
91
92
93
94
95

.
.
.
.
.
.
.

108
109
109
110
111
114
115

C.1. Circuito impreso de la fuente de 5V/1A. . . . . . . . . . . . . . . . . . . . .


C.2. Circuito impreso de las fuentes de 24V. . . . . . . . . . . . . . . . . . . . .
C.3. Circuito impreso de los controladores de los motores de pasos, M0 y M1
(SLA7062M). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.4. Circuito impreso de la tarjeta controladora de los motores de CD, M2 y M3
(LMD18200). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.5. Circuito impreso del snubber de sobrevoltaje RCD. . . . . . . . . . . . . . .

118
119

D.1.
D.2.
D.3.
D.4.
D.5.
D.6.
D.7.

124
124
125
126
127
128
129

Diagrama esquematico de la tarjeta H1 que se conecta al microcontrolador.


Circuito impreso de la tarjeta H1. . . . . . . . . . . . . . . . . . . . . . . . .
Tarjeta H1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Diagrama esquematico de la tarjeta H2 que se conecta al microcontrolador.
Circuito impreso de la tarjeta H2. . . . . . . . . . . . . . . . . . . . . . . . .
Tarjeta H2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
El microcontrolador conectado a las tarjetas H1 y H2. . . . . . . . . . . . .

120
121
121

Lista de Tablas
3.1.
3.2.
3.3.
3.4.

Secuencia
Secuencia
Secuencia
Modos de

con una sola bobina energizada del motor de pasos.


con dos bobinas energizadas. . . . . . . . . . . . . .
de medio paso. . . . . . . . . . . . . . . . . . . . .
Paso. . . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.

32
33
34
48

4.1. Tabla de verdad de la logica de control del CI LMD18200. . . . . . . . . . .

67

6.1. Conexiones del Microcontrolador. . . . . . . . . . . . . . . . . . . . . . . . .


6.2. Costo del robot SCARA construido. . . . . . . . . . . . . . . . . . . . . . .

87
94

A.1. Valores maximos de c para los motores de pasos. . . . . . . . . . . . . . . .

104

B.1. Datos principales del motor Pittman GM8724S011 . . . . . . . . . . . . . .


B.2. Datos principales del motor Pittman GM9236S021 . . . . . . . . . . . . . .

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

Voltaje en las terminales de un motor de CD.


Densidad de flujo magnetico.
Fuerza ejercida sobre un conductor.
Corriente a traves de un conductor.
Longitud de un tramo de conductor.
Torque en la espira de un motor.

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

funcionamiento y operacion de los dispositivos, circuitos e integrados en el robot SCARA


desarrollado. Este trabajo representa una aportacion importante en el amplio campo de la
robotica en la Universidad Michoacana de San Nicolas de Hidalgo y sienta las bases para
realizar a futuro aplicaciones que tengan un alto impacto en la industria e investigacion
nacional.
En este captulo se presenta una introduccion a los robots SCARA, mencionando
de donde surgieron, que tipos existen y cuales son sus aplicaciones mas comunes; as como
los antecedentes y trabajos previos realizados, el objetivo de la tesis, la justificacion, metodologa y la organizacion del documento.

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

(a) Cartesianas (PPP)

Alcance horizontal
minimo

Alcance horizontal
maximo

(b) Cilndricas (RPP)

Barrido alrededor
de la base

Giro vertical
alrededor del
hombro

Giro alrededor
de la base
Trazo
horizontal

(c) Esfericas o polares (RRP)

Alcance
horizontal

(d) Angulares (RRR)

Figura 1.1: Diferentes categoras en las que se encuentran los robots manipuladores y sus
respectivas areas de trabajo [Petriu06].

1.1. Antecedentes

(a) Vista lateral

(b) Vista superior

(c)

Area
de trabajo tpica de un robot SCARA

Figura 1.2: Configuraci


on tpica de un robot SCARA y su respectiva area de trabajo
[Rosen06, Solutions06].

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

SS-HD (e) SCARA

SI-600 (f) SCARA

SH-800 (g) SCARA Cobra s600 de

de Peak Robotics

de Peak Robotics

de Peak Robotics

[Robotics06a]

[Robotics06a]

[Robotics06a]

Adept [Technology]

Figura 1.3: Diferentes robots SCARA comerciales [Com06a, Solutions06, Robotics06a,


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

lar), montaje de automoviles, fibra optica, medicina (equipo medico quir


urgico), pintura y
alimentos, entre otras.
Resoluci
on, precisi
on y repetibilidad
Tres de las caractersticas mas relevantes propias de los robots SCARA son la
resolucion, precision y la repetibilidad que se explican a continuacion.
Resoluci
on: Para el robot en su conjunto, se entiende como la menor variacion posible
en el posicionamiento del efector final. La resolucion viene dada por los sensores de
posicion empleados, los actuadores y los componentes electronicos, incluyendo tanto
los de almacenamiento y procesamiento digital como los de conversion analogicadigital y digital-analogica.
Precisi
on: Se entiende por precision, la diferencia entre la posici
on ordenada y la realmente alcanzada por el efector final. El origen de la imprecision es tanto la limitacion
de la resolucion como las dificultades en calibracion, los desgastes, las deformaciones
y los propios errores de control.
Repetibilidad: Se entiende por repetibilidad la capacidad para volver a la misma
posicion a la que fue dirigido en las mismas condiciones. La repetibilidad es, obviamente muy importante en robotica industrial, en la cual el robot debe repetir un gran
n
umero de veces la misma operacion en distintas piezas. La falta de repetibilidad
se debe normalmente a problemas mecanicos en transisiones, rozamientos, histeresis,
zonas muertas etc.
Los robots SCARA comerciales poseen muchas caractersticas optimas para laborar dentro de las industrias, dentro de las cuales, se resumen a continuacion las mas destacables [Com06a, Actuator06, Solutions06, Com06a, Technology, Fisnar06, Motoman06,
Educativa06]:
Velocidad. La mayora de los robots SCARA comerciales tienen rangos de velocidad
que van desde los 500 mm/seg hasta poco mas de los 7100 mm/seg (alta velocidad).
Repetibilidad. Tienen una excelente repetiblidad que, com
unmente, se encuentra
entre 0.01 mm. y 0.02 mm.

Captulo 1: Introduccion

Actuadores. En los SCARA grandes se usan dispositivos neumaticos, mientras que


los mas peque
nos hacen uso de motores de pasos de 5 fases o servomotores de CD con
encoders. Algunos otros combinan los dos tipos de actuadores mencionados con el fin
de obtener mayor fuerza, rendimiento o precision en una o m
as uniones del robot.
Controlador. El controlador de estos robots es por lo general de tipo digital, com
unmente se trata de un microcontrolador o un PLC.
Software. Los controladores estan basados en programacion mediante software muy
amigable, por lo que no se requiere experiencia para su programacion, tienen muchas
funciones de ayuda y muchas veces se trata de programacion grafica. El software
normalmente viene incluido con el equipo y contiene una ampla gama de funciones
como capacidad para interpolar lneas, arcos y rutas en 3D, es compatible con sistemas
de vision y redes de ethernet, puede correr cualquier programa lnea por lnea, tiene
simulador, su capacidad de almacenamiento es de 100 programas y/o 600 puntos por
tarjeta de memoria, la entrada de datos puede ser directa, remota o manual, son
capaces de reproducir un movimiento continuo o punto a punto, entre otras.
Capacidad de carga. Algunos de estos SCARA se usan para transportar material
u objetos por lo que son capaces de mover objetos que tengan un peso maximo que
oscila entre 5 y 20 Kg.
Otras caractersticas. Son fiables las 24 hrs. del da, algunos poseen sistemas de
enfriamiento, son capaces de rotar los 360 sobre su base, algunos hacen uso de un
sistema de engranaje de alta precision (enhanced harmonic gearing) en lugar de cajas
de engranes o bandas.
El costo de un robot siempre se toma en cuenta al momento de seleccionarlo.
Es parte de este trabajo desarrollar un robot SCARA que sea economico, pero a la vez
fiable y preciso. Por lo general, los SCARA comerciales tienen un costo sumamente alto,
que, dependiendo de las caractersticas de este, puede oscilar entre 9000 y 25000 USD
[Com06b, Actuator06, Technology, Robotics06a, Educativa06].
En la Division de Estudios de Postgrado de la Facultad de Ingeniera Electrica de la
Universidad Michoacana de San Nicolas de Hidalgo, se han hecho esfuerzos en el desarrollo
de robots SCARA. Omar Ros [Ros07] en su tesis titulada Dise
no e implementaci
on

1.2. Objetivo de la tesis

del control de un brazo manpulador SCARA documenta el dise


no de algunos circuitos
controladores de los motores que se usaron y el software para el control del robot utilizado
en su trabajo. Algunos otros trabajos realizados no directamente sobre robots SCARA,
sino sobre el desarrollo de software y de hardware aplicado a otros proyectos en el area de
robotica son: la construccion de un robot movil de plataforma abierta desarrollado por el
Dr. Leonardo Romero Mu
noz desde su trabajo de tesis doctoral [Romero01, Romero04b], el
trabajo de tesis de licenciatura de Antonio Concha [Concha07] Dise
no y construcci
on de
un robot m
ovil, los trabajos de tesis de maestra [Ramrez98], [Arellano05] y [Estrada06]
titulados Dise
no y construcci
on de un manipulador con dos grados de libertad y orientaci
on
del efector final, Reconstrucci
on tridimensional de ambientes interiores utilizando un robot
m
ovil equipado con un telemetro l
aser y Dise
no de un sistema de control de seguimiento
de trayectorias para un robot m
ovil, respectivamente; as como los trabajos realizados por el
autor de esta tesis durante el desarrollo de las Practicas Profesionales, referentes al Dise
no,
implementaci
on y pruebas de elementos electr
onicos orientados a la construcci
on de un brazo
manipulador SCARA. Este trabajo representa una continuacion de los trabajos realizados
en la FIE: se dise
na y construye un robot SCARA utilizando motores de pasos y manejando
estos mediante la tecnica de micropasos para mejorar la precision. Cabe mencionar que este
trabajo tomo como base las tesis de licenciatura de Omar Ros [Ros07] y Antonio Concha
[Concha07].

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

mejorarlo. En el estado de Michoacan existe una gran cantidad de peque


nas y medianas
industrias, en particular la importante industria de las artesanias que requiere una gran
cantidad de mano de obra. Esto lo pone en desventaja con las empresas trasnacionales. La
utilizacion de robots SCARA de bajo costo en algunos procesos que no sacrifiquen la parte
artesanal podra mejorar la produccion. Esta tesis puede servir ademas como base para el
desarrollo de futuros trabajos referentes al area de la robotica en la Universidad Michoacana
de San Nicolas de Hidalgo.

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.

1.4. Organizacion del documento

Al final se ubican las referencias bibliograficas, el glosario y el ndice alfabetico.

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.

Arquitectura del robot SCARA


La arquitectura de un robot es la disposicion de los elementos que conforman o

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

motores los cuales son dispositivos electromagneticos capaces de transformar la energa


electrica que se aplica en sus terminales, a movimiento mecanico que proporciona su flecha
13

14

Captulo 2: El robot SCARA

Figura 2.1: Robot SCARA desarrollado y construido localmente.

[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.

Motores de CD con escobillas


Los motores de CD utilizados son de la marca Pittman Lo-Cog DC Servo Motor

de 24 V, de las series GM8000 y GM9000; dotados de una caja de engranes para reducir la

velocidad e incrementar el par. Estos


tienen un encoder optico Hewlett-Packard (HP) con
tres se
nales y 500 cuentas por revolucion (CPR) para poder obtener la posicion, velocidad
y direccion del motor. Estos motores tienen un precio alrededor de los 180 USD. la Figura
2.2 muestra fotografas de los motores de CD y los encoders utilizados (ver seccion 2.3.1).

15

2.2. Motores

(a) Motor GM9236S021

(b) Motor GM8724S011

(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].

Figura 2.3: Motor de pasos utilizado.

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

Captulo 2: El robot SCARA

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

Figura 2.4: Elementos esenciales de un motor de pasos.

A la derecha del microcontrolador se encuentra el circuito de control, su funcion


es controlar la magnitud y direccion del flujo de la corriente en los devanados del motor.
Este circuito de control recibe los pulsos del microcontrolador y determina como y cuando
los devanados deben ser energizados, siguiendo una secuencia especfica para hacer girar el
motor [Corporation02].
Finalmente, a la derecha del circuito de control se encuentra el motor de pasos. La
frecuencia de los pulsos aplicados por el microcontrolador debe tomar en cuenta las caractersticas particulares del motor, ya que debe avanzar un paso antes que el proximo pulso
comience. Si la frecuencia de pulsos es muy elevada, el motor puede que no realice ning
un
movimiento, puede comenzar a vibrar pero sin llegar a girar o puede girar erraticamente.
En el captulo Controlador de los Motores de Pasos se explica a detalle los motores
de pasos, el dise
no y funcionamiento del controlador y la tecnica utlizada.

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

odometricos y sensores de lmite o de posicion lmite de cada articulacion que reportan


un valor binario. Los convertidores analogico-digitales (ADC) del microcontrolador se usan
como sensores de voltaje para medir indirectamente la corriente que circula por los motores
a traves de los controladores. Se describe a continuacion los sensores utilizados.

2.3.1.

Od
ometro
Un odometro es un sensor que mide la posicion o rango de rotacion de un eje, la

flecha del motor para nuestro caso. La se


nal entregada por este dispositivo sensor puede ser
de dos tipos [Jones98]: (1) un codigo que corresponde a una orientacion en particular del
eje (od
ometro absoluto), o (2) un tren de pulsos (od
ometro incremental). Para nuestro caso,
el robot desarrollado cuenta con odometros incrementales.
El odometro incremental se conforma por: un disco que tiene numerosas ranuras en
su parte exterior, un LED infrarrojo localizado en uno de los lados del disco el cual proyecta
la luz a traves de las ranuras y un fototransistor sensitivo al infrarrojo en posicion opuesta
al LED, la Figura 2.5 muestra un esquema del odometro incremental. Cuando la flecha del
motor comienza a girar, el disco ranurado gira con el, y a traves de las ranuras pasa la luz
emitida por el led infrarojo intermitentemente, esta luz es captada por el fototransistor y
a la salida se tiene una serie de rafagas de luz, o dicho de otra manera, un tren de pulsos
[Arellano05].
Fototransistor
LED
Tren de pulsos
(Salida del fototransistor)

Odomtro
Motor

Figura 2.5: Esquema del odometro incremental adjunto al 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

Captulo 2: El robot SCARA

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

der de los motores del robot

HEDS-9140#A00, de los

SCARA.

encoders de los motores.

Figura 2.7: Imagenes del odometro o encoder que utilizan los motores Pittman del robot
SCARA construido.

2.4. Fuente de alimentaci


on

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.

Figura 2.8: Sensor de lmite o bumper [Martin07].

En estado de reposo, la terminal com


un (C) y la de reposo (R) estan en contacto
hasta que la fuerza aplicada a la palanca hace saltar la peque
na platina en el interior.
Cuando sucede esto, el contacto pasa de la posicion de reposo a la de activo (A).
Este tipo de sensores se utilizan para deteccion de obstaculos por contacto directo,
sin embargo no son adecuados para dispositivos que operan a alta velocidad. Es un dispositivo muy simple que provee una gran fiabilidad para conocer con certeza las posiciones de
inicio y final de cada uno de los ejes del robot SCARA.
La Figura 2.9 muestra un diagrama de la conexion de los switches hacia el microcontrolador. El switch se conecta como normalmente cerrado, de esta manera a la entrada
del microcontrolador siempre se tiene un voltaje de 0V y hasta el momento en que es accionado el switch, el microcontrolador recibe 5V. Las resistencias de 10K son usados para
proteger al microcontrolador.

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

Captulo 2: El robot SCARA

+5V
10 K

Microcontrolador

10 K

S1

Nc

Figura 2.9: Diagrama de conexion de los sensores de lmite.

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

Figura 2.10: Imagenes de la fuente de alimentacion construida.

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

Captulo 2: El robot SCARA

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

Enhanced Capture Timer


8 ch, 16bit

5 x CAN
PWM

2.0 A/B

8 ch, 8bit / 4 ch, 16bit

(a) Diagrama de bloques

(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

en lenguaje ensamblador. La programacion en lenguaje ensamblador consiste en escribir


codigo de un conjunto de instrucciones especficas dise
nadas para un microcontrolador en
particular. Sin embargo, para acelerar el proceso de desarrollo y abstraerse un poco de
la arquitectura especfica del microcontrolador se utiliza un lenguaje de programacion de
alto nivel como el lenguaje C. Como parte del desarrollo de m
ultiples prototipos de robots
moviles [Arellano05, Estrada06, Concha07] a cargo del Dr. Leonardo Romero Mu
noz desde
su trabajo de tesis doctoral [Romero01], se ha desarrollado el software de comunicacion y
control para el microcontrolador [Romero04a], el cual se tomo como base para el desarrollo
de este trabajo.

2.6. Esquema de conexion

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

4 grados de libertad construido, as como las caractersticas y el funcionamiento de sus


componentes principales.
Los componentes con los que esta equipado el robot se pretende que sean adecuados
y suficientes para cumplir con los objetivos y metas propuestas, as como para alcanzar los
retos planteados en cuanto a las caractersticas del movimiento deseado en el robot.
Es importante resaltar que la estructura mecanica del robot SCARA descrito en
este trabajo, fue dise
nada y construida por Cervantes Co., una peque
na compa
na en Paracho, Mich. dedicada al dise
no, construccion, comercializacion y distribucion de robots.

24

Captulo 2: El robot SCARA

(a) Vista superior del microcontrolador dentro (b) Vista de lado del microcontrolador y los
de la caja que aloja los circuitos de control.

controladores de los motores.

(c) Otra vista de lado del microcontrolador y


los controladores de los motores.

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

Figura 2.13: Diagrama de bloques del esquema de conexion.

Captulo 3

Controlador de los motores de CD


de pasos
El primer robot SCARA construido en la division de estudios de posgrado de la
Facultad de Ingeniera Electrica utilizo solamente motores de CD con escobillas [Ros07],
teniendo un rendimiento aceptable. Para mejorar la precision y repetibilidad en esta version
se usaron motores de CD de pasos para los ejes X y Y (conocido tambien como hombro y
codo). Para operar estos motores se dise
no y construyo un controlador para los motores de
pasos. En la Figura 3.1 se muestra una imagen de los motores de pasos que mueven los dos
primeros ejes del robot.

Figura 3.1: Vista superior de los dos motores de pasos que dan movimiento al robot en los
ejes X y Y.

Se presenta en este captulo los tipos de motores de pasos y el principio de fun27

28

Captulo 3: Controlador de los motores de CD de pasos

cionamiento de un motor de pasos unipolar. Luego se describen algunos de los metodos de


excitacion de los motores de pasos, as como los metodos que se emplean para que estos
motores mantengan un alto par a altas velocidades, tambien se explica la importancia de
utilizar un Snubber de sobrevoltaje. Finalmente, se presenta el diagrama de bloques y el
circuito esquematico del controlador desarrollado para los motores de pasos.

3.1.

Tipos de motores pasos


Los motores de pasos difieren de otros motores de cd fundamentalmente en que

no tienen escobillas ni conmutador mecanico, en lugar de ello, la accion de conmutacion


necesaria para que funcione el motor de cd se logra con dispositivos conmutadores externos.
Basicamente constan de un rotor que no tiene devanado de armadura, solo un conjunto de
imanes permanentes. Este tipo de motores son faciles de posicionar y se mueven mediante
pulsos suministrados a los devanados del estator. Si bien es cierto que los motores de pasos
funcionan controlados por un pulso de avance, el control de un motor pasos no se realiza
aplicando en directo este pulso electrico que lo hace avanzar. Estos motores tienen varios
bobinados que, para producir el avance de ese paso, deben ser alimentados en una adecuada
secuencia. Si se invierte el orden de esta secuencia, se logra que el motor gire en sentido
opuesto. Si los pulsos de alimentaci
on no se proveen en el orden correcto, el motor no se
movera apropiadamente; puede ser que zumbe y no se mueva, o que gire pero de una manera
tosca e irregular [Carletti06]. La velocidad en estos motores es controlada por la frecuencia
de los pulsos.
Existen basicamente tres tipos de motores de pasos: De iman permanente, de
reluctancia variable e hibridos [Carletti06]. Los motores de iman permanente tienen un
rotor magnetizado, mientras que los de reluctancia variable tienen rotores de cilindro
solido con un mecanizado en forma de dientes (similar a un engranaje), construido con un
material magneticamente blando(como el hierro dulce). Los motores hibridos combinan
aspectos de ambos, iman permante y de reluctancia variable.
Otra clasificacion se refiere a la forma en como se encuentran y como son energizados los devanados, y estos pueden ser U nipolar o Bipolar. Enseguida se describe brevemente
estas formas de operacion.

29

3.1. Tipos de motores pasos

3.1.1.

Bobinado bipolar
Consiste en que cada fase esta compuesta por un solo devanado, al invertir la

corriente en los devanados, la polaridad electromagnetica de estos es invertida. Este arreglo


es mas simple que el unipolar sin embargo su control es mas complicado pero, como el
robot utiliza motores de iman permanente unipolares, el esquema unipolar se describir
a con
mayor detalle enseguida. La Figura 3.2 muestra este esquema.
A

Figura 3.2: Arreglo bipolar de un motor de pasos.

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

Captulo 3: Controlador de los motores de CD de pasos

A
A com

B com

Figura 3.3: Arreglo unipolar de un motor de pasos.

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

Figura 3.4: Cables y bobinas del motor de pasos.

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

3.3. Metodos para excitar los motores de pasos

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

Figura 3.5: Circuito de control de un motor de pasos unipolar.

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

Captulo 3: Controlador de los motores de CD de pasos

(a) Las bobinas A y B son energizadas.

(b) Las bobinas A y B son energizadas.

Figura 3.6: Principio de operacion del motor de pasos unipolar

realizan las secuencias de manera inversa.


1. M
etodo de paso completo. Con este metodo los motores de pasos se mueven a
traves de su
angulo basico de paso, es decir 0.9 /paso (para los motores del robot)
y necesitan avanzar 400 pasos para realizar una revolucion mecanica. El metodo de
excitacion de paso completo se puede realizar con dos secuencias diferentes: una sola bobina energizada y dos bobinas energizadas. Estas secuencias se describiran a
continuacion.
a) Secuencia con una sola bobina energizada. En esta secuencia se activa solo
una bobina a la vez. Dicha secuencia se muestra en la Tabla 3.1 y en la Figura
3.7. Despues del paso 4 seguira el paso 1 y la secuencia se repite.
Tabla 3.1: Secuencia con una sola bobina energizada.
Paso
1
2
3
4

Bobina A
1
0
0
0

Bobina B
0
1
0
0

Bobina A
0
0
1
0

Bobina B
0
0
0
1

b) Secuencia con dos bobinas energizadas. En esta secuencia se energizan dos


bobinas al mismo tiempo. Debido a esto, el motor obtiene mas par que en la
secuencia anterior. La secuencia con dos bobinas energizadas se muestra en la

33

3.3. Metodos para excitar los motores de pasos

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.

Tabla 3.2 y en la Figura 3.8.


Tabla 3.2: Secuencia con dos bobinas energizadas.
Paso
1
2
3
4

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

Figura 3.8: Secuencia con dos bobinas energizadas.

S
N

34

Captulo 3: Controlador de los motores de CD de pasos

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

Figura 3.9: Secuencia de medio paso.

S
N

3.3. Metodos para excitar los motores de pasos

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

Captulo 3: Controlador de los motores de CD de pasos

Figura 3.10: Se
nales de las fases a y b de corriente en el metodo de micropasos [Jones08].

I1= Corriente en la bobina 1


I2= Corriente en la bobina 2
IMAX = Corriente nominal de
la bobina

I1=I MAXcos
S
I2=I MAXsen

I2=I MAXsen

N
I1=I MAXcos

Figura 3.11: Metodo de micropasos.

3.4.

Operaci
on a alta velocidad
Para incrementar la velocidad de los motores de pasos a menudo son operados

a voltajes mas altos que su voltaje nominal. Al incrementar el voltaje de suministro se


incrementa la velocidad con que aumenta la corriente en las bobinas del motor. Entre mas
rapida sea la respuesta de la corriente en las bobinas se obtiene una mejor caracterstica
de par vs velocidad del motor. En esta seccion se explicara porque el desempe
no del motor
se incrementa al aumentar el voltaje de suministro, tambien la manera como se limita la
corriente del motor a su valor nominal. Es importante mencionar que gran parte de la
informacion que se mostrara en esta seccion se tomo de [Condit04].

37

3.4. Operacion a alta velocidad

3.4.1.

Modelo de las bobinas de un motor de pasos


Para entender porque es benefico operar a los motores de pasos con voltajes altos,

es necesario observar el comportamiento de la corriente en las bobinas de un motor de pasos.


Una bobina puede ser modelada como el circuito resistivo-inductivo (RL) mostrado en la
Figura 3.12 (a) [Condit04].
dI (t=0) = V
dt
L

t=t1

V +

Corriente

Bobina del motor

R
L

I MAX = V
R
63%
dI (t=t1) =
dt

V
L

63%

(a) Modelo de la bobina de un motor de pasos.

t=t1

tiempo

(b) Corriente vs tiempo.

Figura 3.12: Circuito RL.

Hay tres componentes en este modelo: la fuente de voltaje, la resistencia de la


bobina (R) y la inductancia de la bobina (L). La Figura 3.12 (b) muestra el comportamiento
de la corriente cuando se aplica una fuente de voltaje. Se observa que la corriente aumenta
exponencialmente hasta que alcanza el valor final IM AX (corriente nominal del motor). La
corriente en funci
on del tiempo (t) crece acorde a la ecuacion:
I(t) =

V
R

(1 et L )

(3.1)

Inicialmente la corriente crece con una velocidad dada por:


dI
V
(t = 0) =
dt
L

(3.2)

Esta velocidad decrece conforme la corriente se acerca a su valor maximo o final:


IM AX =

V
R

(3.3)

El valor de e = L/R es definido como la constante de tiempo electrica del circuito.


e es el tiempo necesario para que la corriente alcance el 63 % (1 1e ) de su valor final.

38

Captulo 3: Controlador de los motores de CD de pasos

Cuando la fuente de voltaje se remueve en el instante t = t1 , la bobina se pone en


corto y la corriente decrece acorde a:

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].

(a) La corriente permanece en su valor m


aximo por alg
un
tiempo.

(b) La corriente apenas llega a su valor m


aximo.

(c) La corriente no puede alcanzar su valor m


aximo.

Figura 3.13: Corriente en la bobina con tres diferentes frecuencias.

39

3.4. Operacion a alta velocidad

Para solucionar este problema existen dos posibilidades, incrementar la velocidad


con que la corriente crece y decrece y/o decrementar la constante de tiempo e . De acuerdo
a 3.1 y 3.2, la velocidad con que la corriente crece en una bobina se incrementa al utilizar
una fuente de mayor voltaje. Sin embargo, 3.3 muestra que la corriente IM AX es afectada
al incrementar la fuente de voltaje. La manera mas simple para mejorar el tiempo de
crecimiento de la corriente sin exceder IM AX es agregar una resistencia en serie con el
motor, decrementando a la vez e . Esto se describe a continuacion.

3.4.2.

Resistencia en serie con el motor


El primer metodo para incrementar el voltaje de suministro sin exceder la corriente

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

(a) Modelo de la bobina con resistencia adicional.

Corriente

V +

Bobina del motor

R
e2 =

L
2R

I MAX = V = 2V
R
2R

e1 =

63%

e2 e1

L
R

tiempo

(b) Corriente vs tiempo.

Figura 3.14: Resistencia en serie con la bobina.

La Figura 3.14 (b) muestra la manera como se afecta el crecimiento de la corriente


con el tiempo cuando se incrementa el voltaje de suministro y la resistencia. El tiempo
de subida de la corriente se reduce y por lo tanto el desempe
no del motor se mejora. Sin
embargo, la eficiencia del sistema cae significativamente con la introduccion de la resistencia
de potencia. Cuando la fuente de suministro del motor es una batera, el tiempo de operacion

40

Captulo 3: Controlador de los motores de CD de pasos

del motor se reduce significativamente por la energa desperdiciada en la resistencia de


potencia.

3.4.3.

Dos suministros de potencia


Un metodo mas eficiente para mejorar el desempe
no de un motor de pasos, es

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

(a) Dos voltajes de suministro.

Corriente

Bobina del motor

V +

2V
R
3
2
I MAX = V
R
1

e t on

tiempo

(b) Corriente vs tiempo.

Figura 3.15: Dos suministros de potencia.

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).

3.4. Operacion a alta velocidad

41

3. Utilizando un voltaje alto (dos veces el nominal) durante el tiempo de crecimiento de


la corriente hasta que se alcanza IM AX y despues se cambia al voltaje nominal en el
tiempo ton (curva 3).
Se puede observar que al utilizar dos fuentes de suministro se obtienen los mejores
resultados. Este metodo tambien tiene el beneficio de ser mas eficiente que el metodo de
agregar una resistencia en serie. Sin embargo existe otro metodo que utiliza una fuente de
alto voltaje para lograr el comportamiento de la corriente mostrado en la situacion 3 de
la Figura 3.15 (b), el metodo de control chopper [Condit04] que se explica mas adelante
3.4.5. Este metodo de control chopper es el que se usa con los motores de pasos del robot
descrito en esta tesis. Para entenderlo bien, es conveniente revisar primero el concepto de
modulacion de ancho de pulso.

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

Captulo 3: Controlador de los motores de CD de pasos

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 %.

Figura 3.16: Esquema de modulacion de ancho de pulso (PWM). Se muestra el voltaje


aplicado al motor cuando los interruptores son cerrados (lneas solidas) y el voltaje promedio
(Vprom) en el mismo (lnea punteada) [Concha07].

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

3.4. Operacion a alta velocidad

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)

Cuando Vsensor es mayor que Vref el voltaje a traves de la bobina se interrumpe


o se apaga. Unos componentes pasivos que se conectan al comparador proveen un tiempo
de apagado fijo (Tof f ) de la se
nal de PWM. El tiempo Tof f es necesario para limitar la
frecuencia con que el comparador y los Mosfets cortan el voltaje de suministro. Las perdidas
por conmutacion de los Mosftes aumentan cuando se incrementa la frecuencia de PWM.
En la practica el voltaje Vref es ajustable y provee un mecanismo para regular la
cantidad de corriente en la bobina del motor. La resistencia Rs debe ser tan peque
na como
sea posible para permitir que el voltaje Vref sea facilmente medible. Los valores comunes
de Vref estan entre 0.6 y 5 volts, y el valor de Rs esta com
unmente entre 0.5 y 1.
Un hecho interesante del circuito chopper de la Figura 3.18 es que la bobina 1
act
ua como autotransformador. As, el voltaje sobre el Mosfet que no se utilice es el doble
del voltaje de suministro Vs . Cuando Q1 se enciende, la corriente fluye de Vs a tierra a

44

Captulo 3: Controlador de los motores de CD de pasos

Figura 3.18: Circuito chopper.

traves de la bobina A y por Q1 . Cuando Q1 se apaga, la corriente tiende a seguir fluyendo


a traves de la bobina, y por lo tanto el voltaje sobre Q1 aumenta arriba de Vs . Cuando el
voltaje sobre la terminal A alcanza 2Vs , el voltaje en la terminal A sera menor de 0V y
fluira corriente por el diodo interno de Q2 . Debido a las inductancias parasitas presentes en
el circuito chopper, se tendra un sobrevoltaje adicional (mayor de 2Vs ) cuando se apagan
los Mosfets y este voltaje puede exceder el voltaje maximo de estos dispositivos. Como
resultado, los Mosfets act
uan como diodos zener y limitan el sobrevoltaje. El voltaje maximo
de los Mosfets debe ser significativamente mas alto que 2Vs [SILICON04]. Cabe se
nalar que
el voltaje que aparece sobre los Mosfets cuando estan apagados usualmente se suprime a
Vs colocando un diodo a traves la bobina A y de la bobina A (con el catodo del diodo
apuntando hacia Vs ). La desventaja de esta solucion es que la corriente que circula por las
bobinas decae lentamente y no se puede conmutar de una bobina a otra tan rapido como
se quisiera.
Para controlar a los motores de pasos del robot SCARA mediante el control chop-

3.5. Controlador de los motores

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.

Controlador de los motores


La Figura 3.19 muestra el diagrama de bloques del controlador de los motores de

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.

Figura 3.19: Diagrama de bloques del controlador de los motores de pasos.

46

Captulo 3: Controlador de los motores de CD de pasos

El voltaje de suministro de los motores es de 24V, es decir el doble del voltaje


nominal del motor (12V). Para regular la corriente del motor, se ajusta el voltaje Vref que
llega al CI SLA7062M utilizando el convertidor D/A. La corriente pico que circula por las
bobinas del motor (Iout ) se determina mediante Iout = Vref /Rs, donde Rs es una resistencia
de precision de 0.533 1 . La corriente promedio o de cd que circula por las bobinas del motor
(Iave ) se midio utilizando un multmetro digital. Cabe se
nalar que el voltaje Vref se limita
a 1V, para limitar Iout a 1.87A e Iave a 1.47A.
El maximo n
umero de pasos por segundo con que pueden ser operados los motores
depende de la carga. Para mayor carga un bajo n
umero de pasos por segundo es permitido y
viceversa. Si aumenta la carga de los motores es posible que se pierdan pasos si se controlan
en lazo abierto. Como resultado, se perdera la posicion del motor. El microcontrolador
tiene comunicacion con la computadora portatil del robot y puede recibir comandos. En el
appendice A.4.1 se muestran los comandos con sus respectivos parametros y la funcion que
realizan.
La Figura 3.20 muestra el diagrama esquematico del circuito del controlador que
controla a un motor (el circuito que controla al otro motor es identico).
Enseguida se describen brevemente las caractersticas del CI SLA7026M y el convertidor D/A.

3.5.1.

Circuito integrado SLA7062M


En la Figura 3.21 se muestra una imagen del CI SLA7062M y la Figura 3.22

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

3.5. Controlador de los motores

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

Figura 3.20: Circuito esquematico del controlador de los motores de pasos.

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

Captulo 3: Controlador de los motores de CD de pasos

Figura 3.21: Imagen del circuito integrado SLA7062M[Allegro MicroSystems07].

Tabla 3.4: Modos de Paso.


M1
H
H
L
L

M2
H
L
H
L

Modo de Paso
Medio paso
Un cuarto de paso
Un octavo de paso
Un dieciseisavo de paso

paso, un cuarto de paso, un octavo de paso y un dieciseisavo de paso.

49

3.5. Controlador de los motores

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.

Snubber de sobrevoltaje RCD


Un snubber de sobrevoltaje RCD es incorporado en el circuito de potencia del

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

Captulo 3: Controlador de los motores de CD de pasos

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

Captulo 3: Controlador de los motores de CD de pasos

(a) 1/2 paso

(b) 1/4 de paso

(c) 1/8 de paso

(d) 1/16 de paso

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

(a) Componentes del convertidor D/A.


Vref
5V

5V
Filtro
pasabajas
analgico

(b) Filtrado de la se
nal de PWM para obtener
Vref .

Figura 3.24: Convertidor digital-analogico (D/A).

Inductancia de los cables


de la fuente de alim.

+
24V

Rsn

Dsn

Fuente
de alim.

Alim. 24V Motores


Csn

Figura 3.25: Snubber de sobrevoltaje RCD.

54

Captulo 3: Controlador de los motores de CD de pasos

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

apagan los Mosfets.

Mosfets.

Figura 3.26: Forma de Vp sin snubber.

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

apagan los Mosfets.

Mosfets.

Figura 3.27: Forma de Vp con snubber.

Captulo 4

Controlador de los motores de CD


El robot SCARA utiliza tambien motores de cd con escobillas, estos son los encargados del eje theta-z (rotacion de mu
neca) para realizar movimientos en el plano vertical.
As como con los motores de pasos, se desarrollo tambien el controlador para los motores
de cd; esto con el fin de reducir costos y tener el control adecuado para el robot SCARA. Se
tomo el dise
no del circuito del controlador desarrollado para motores de cd de [Ros07] debido a que ya haba sido probado y funcionaba adecuadamente. En la Figura 4.1 se muestra
una imagen de los motores de CD montados sobre el robot.

Figura 4.1: Vista superior de los motores de CD, encargados de mover los ejes theta y
theta-z.

En este captulo se presenta primeramente el funcionamiento de los motores de CD,


luego se hace enfasis en el esquema de control utilizado. Finalmente se explica el circuito
integrado utilizado para controlar los motores y se muestra el diagrama de bloques del
55

56

Captulo 4: Controlador de los motores de CD

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

su vez, tambien es capaz de invertir el proceso de conversion de energa: recibir rotacion


mecanica y producir corriente directa [Maloney06]. Existe una clasificacion amplia de lo
motores de CD, as como se menciono que el motor de pasos es un motor de CD que
cae dentro de la clase de motores de CD de conmutacion electronica; Los motores de CD
usados en el robot SCARA (presentados en la seccion 2.2.1 ) se encuentran dentro de la
clase de motores de CD de iman permanente. Estos cuentan con un n
ucleo de hierro y
su principio de funcionamiento esta basado en el principio de induccion magnetco, el cual
se describira brevemente. La Figura 4.2(a) muestra este principio [Ure
na06]. Se tiene un
campo magnetico fijo e invariante B y en medio de este se encuentra un cuadro rectangular
conductor (rgido) a traves del cual circula una corriente I.

l
nl

F
l

nl

(a) Fuerza y par sobre un circuito.

(b) Vista en direcci


on de la corriente.

Figura 4.2: Principio de funcionamiento de un motor de CD [Ure


na06].

La relacion de Lorentz enuncia lo siguiente: La fuerza mec


anica sobre un conductor
con corriente dentro de un campo magnetico es:

57

4.1. Operacion de los motores de CD

F = Il B

(4.1)

donde F es la fuerza en Newtons, I es la corriente en Amperes, l es la longitud del


conductor en metros y B es la densidad de flujo magnetico en webers/m2 . Esta ecuacion se
puede aplicar a lo largo de todos los segmentos del conductor.
En la Figura 4.2(a) se considera que el campo magnetico y la direccion del vector
de corriente en los lados del circuito son perpendiculares, tal como se ilustra en la Figura
4.2(b). La fuerza F sobre el lado derecho es hacia arriba, como se ilustra. De ese lado, B es
perpendicular a la direccion de la corriente, y la fuerza total sobre ese lado (la suma de las
fuerzas distribuidas a lo largo de el) es de magnitud F = IlB. Sobre el lado opuesto act
ua
una fuerza de igual magnitud y direccion, pero en sentido opuesto. Las fuerzas que act
uan
sobre los lados de longitud nl tienen una magnitud F = InlB sen(90 ) = InlB cos ,

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

Captulo 4: Controlador de los motores de CD

y los conmutadores. En la Figura 4.3 se presenta la disposicion de estos elementos, donde


se muestra de manera clara el papel de las escobillas y los conmutadores. A traves de estos
es posible que la corriente aplicada al conductor o devanado se mantenga en la misma
direccion, y por consecuencia su sentido de rotacion tambien, ya que precisamente se realiza
una conmutacion mecanica. Las escobillas son las responsables de mantener una conexion
electrica entre los conmutadores y el devanado, en tanto que los conmutadores llevan a cabo
de manera natural, con el movimiento del devanado, la conmutacion del circuito (invierten
la polaridad del voltaje aplicado al devanado) para que la corriente contin
ue fluyendo en la
misma direccion.
Bobina

Iman

Iman

Conmutadores
Escobillas

V CD

Figura 4.3: Disposicion de los elementos del motor de CD de iman permanente [Ure
na06].

En la Figura 4.4 se muestra una vista interior de un motor de CD comercial, donde


se pueden apreciar claramente los elementos que lo componen: el motor en s (estructura
o armazon, embobinado, escobillas y conmutadores), el od
ometro o encoder y la caja de
engranes. Los elementos que componen el motor mostrado son los mismos que poseen los
motores Pittman del robot SCARA. En [Ros07] se explica el circuito equivalente de un motor de CD de iman permanente. Para un entendimiento mas profundo de las caractersticas
de los parametros de un motor de CD, se puede estudiar dicho trabajo.
A continuacion, se presenta un esquema com
un que se utiliza para controlar la

59

4.2. Puente H

Escobilla

er

od

c
En
r

oto

ne

ra
ng

ee

d
aja

Figura 4.4: Vista interior de un motor de CD con escobillas [Concha07].

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

Captulo 4: Controlador de los motores de CD

PuenteH
S1

S3

+ V

+
Suministro
de Voltaje

Motor

S2

S4

Figura 4.5: Arreglo tpico de un puente H [Arellano05].

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.

4.3. Esquema PWM que implementa el controlador

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.

Esquema PWM que implementa el controlador


Es importante mencionar los distintos esquemas de PWM que existen para contro-

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

Captulo 4: Controlador de los motores de CD

PuenteH

+V

+V
B

S3

S1

iL

iL

Diodo
antiparalelo

+
Motor

S2

(a) La corriente en

(b) El diodo crea un camino

un inductor no

para la corriente inducti-

puede

va cuando el interruptor es

interrum-

pirse s
ubitamen-

S4

(c) Puente H con un diodo en antiparalelo en


cada interruptor.

abierto.

te.

Figura 4.6: Interrupci


on de la corriente en una carga inductiva [Concha07].

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

4.4. Controlador de los motores de CD

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.

Controlador de los motores de CD


En la Figura 4.7 se muestra el diagrama de bloques del controlador de los motores

de CD. Se compone por el microcontrolador 9S12DP258C de Motorola descrito en la seccion


2.5, y por los siguientes componentes por motor: un circuito integrado (CI) LMD18200 que
contiene un puente H con dispositivos DMOS para controlar el motor, y un circuito que

64

Captulo 4: Controlador de los motores de CD

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.

Figura 4.7: Diagrama de bloques del controlador de los motores de CD.

El controlador implementa el control en lazo cerrado de posicion y velocidad de


los motores, usando el esquema 2 de PWM y las se
nales de los tres canales del encoder
de cada motor. El microcontrolador tiene configurada la entrada del puerto RS232 como
interrupcion, de manera que se puede comunicar con la PC, de donde recibe comandos y a
donde enva informacion.
A continuacion se describe el CI controlador LMD18200 y el circuito que monitorea
las se
nales de salida de los canales del encoder. El snubber o amortiguador de sobrevoltaje

4.4. Controlador de los motores de CD

65

RCD se explico en las seccion 3.5.3.

4.4.1.

Circuito integrado LMD18200


Para controlar los motores de CD se utilizo el dispositivo LMD18200 de National

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.

Figura 4.8: Diagrama de bloques funcional del LMD18200.

Figura 4.9: Circuito monoltico LMD18200.

El circuito integrado (CI) LMD18200 esta compuesto de cuatro transistores swit-

66

Captulo 4: Controlador de los motores de CD

cheadores DMOS de potencia, con diodos en antiparalelo, conectados en configuracion de


puente H. Entre sus caractersticas u
nicas se encuentran: un circuito para el sensado de
corriente, proteccion de sobre-corriente y bajo voltaje, aviso de calentamiento y apagado
por calentamiento. Otras de sus caractersticas incluyen el soporte de una corriente hasta de
3A continuos y 6A de pico, operacion en un rango de voltaje de 12 a 55 V, disipacion maxima de potencia de 25 W, y resistencia de encendido RDS(on) de los transistores DMOS de
0.3 a una temperatura de union de 25 C y 0.6 a 125 C. Para informacion mas detallada
ver el Apendice B.5.
Las principales razones por las cuales se opto por usar este controlador son: la
facilidad y sencillez que ofrece para controlar el motor conectado a sus terminales de salida,
y la experiencia en el uso y conocimiento de su funcionamiento en otros trabajos como son
[Romero01, Arellano05, Estrada06, Ros07].
A continuacion se describe de manera sencilla y breve la forma en que opera el CI
LMD18200 para controlar un motor de CD.

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.

Control completo anti-fase


Este metodo funciona de acuerdo a lo descrito en la seccion 4.3 como esquema 2
de PWM. Con una se
nal PWM de entrada al CI, los pares de interruptores diametralmente

67

4.4. Controlador de los motores de CD

LMD18200
B1

A1
+

VS

Motor

A2

B2

Figura 4.10: Esquema del CI LMD18200.

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

Tabla 4.1: Tabla de verdad de la logica de control del CI LMD18200.

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

Captulo 4: Controlador de los motores de CD

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.

la corriente promedio a traves de la carga fluye de A hacia B, y el motor experimenta un


movimiento de rotacion en una direccion con una velocidad proporcional a la cantidad que
el DC es desviado del 50 %. De manera inversa, cuando el DC es decrementado por debajo
del 50 %, el voltaje promedio de A a B se vuelve negativo y la corriente promedio a traves
del motor fluye ahora de B hacia A, por lo que la direccion del movimiento de rotacion del
motor se invierte.
Bajo esta tecnica es posible que la corriente en el motor invierta su direccion,
debido al hecho de que dos interruptores son siempre activados a la vez y son capaces de
conducir la corriente en ambas direcciones. Otro beneficio recae en que el voltaje a traves
de la carga esta siempre definido por el estado de los interruptores, sin importar la direccion
en que la corriente fluya a traves del motor.
La ventaja mas destacable es que con solo una se
nal de control es posible controlar
la velocidad y la direccion de rotacion del motor. La velocidad se ajusta al modificar el DC
que modifica el voltaje promedio y la corriente promedio en el motor en proporcion a
que tanto se alejo este valor del 50 %. La direccion de rotacion depende de si el DC esta por
arriba o por abajo del 50 %. La desventaja de aplicar esta tecnica en el CI LMD18200 es
que la salida para sensar la corriente es discontinua porque los transistores sensadores de
corriente solo pueden ver la corriente cuando fluye en una direccion, esto es cuando la
corriente fluye a traves de los dispositivos DMOS de potencia de la parte de arriba del
puente H. Cuando la corriente fluye en la otra direccion no existe salida en el pin de salida
para sensar la corriente.

4.4. Controlador de los motores de CD

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

Captulo 4: Controlador de los motores de CD

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.

la corriente estara permanentemente activa. La corriente siempre estara fluyendo a traves


de uno de los interruptores de arriba del puente H, lo que proporciona una salida en el pin
de salida para sensar la corriente.
Esta tecnica es similar al esquema 0 de PWM presentado en la seccion 4.3, excepto
en que la se
nal PWM se aplica a ambos interruptores de la pierna del puente H de manera
complementaria para permitir siempre el paso de la corriente por los interruptores en vez
de que fluya por los diodos antiparalelo. Esto tiene la ventaja de obtener menor perdida por
calentamiento.
A diferencia del control completo anti-fase, en esta tecnica son necesarias dos
se
nales para controlar el CI LMD18200. La se
nal aplicada a la entrada Direction controla la direccion (signo) de la corriente aplicada al motor (en realidad se trata del voltaje
aplicado al motor), mientras que la entrada PWM se encarga de proporcionar la cantidad
(magnitud) de voltaje aplicado al motor mediante el DC de la se
nal PWM que recibe. Como
ya se explico, un DC del 100 % representa aplicar el voltaje Vs al motor, mientras que la
ausencia de la se
nal modulada en la entrada PWM representa cero conduccion.
Despues de explicar los dos tipos de control PWM mas com
unes se desea resaltar
que para los motores de CD del robot SCARA de esta version se utilizo el control completo
anti-fase por su facilidad de controlar la direccion y la velocidad.
Al igual que en los motores de pasos es necesario utilizar un snubber de sobrevoltaje
RCD que reduce el voltaje transitorio pico a traves de los dispositivos de interrupcion DMOS

71

4.5. Resumen

del CI LMD18200. As, para los dos motores de CD se le a


nade un snubber de sobrevoltaje
en paralelo a la alimentaci
on de los motores.
A continuacion se explica el circuito usado para monitorear las se
nales de los
encoders utilizados con los motores de CD.

4.4.2.

Circuito que monitorea las se


nales del encoder
La Figura 4.13 muestra el circuito que monitorea las tres se
nales de salida de los

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

Figura 4.13: Diagrama del circuito electronico que monitorea las se


nales de salida del encoder
[Ros07].

Las salidas del encoder se conectan al microcontrolador a traves de una resistencia


de 10K. Esta resistencia realiza la funcion de proteger las entradas/salidas digitales del
microcontrolador en caso de que se presente una mala configuracion de las terminales de
los puertos (es decir que se configuren como de salida en vez de entrada), o en caso de que
exista un cortocircuito en la conexion o en la tableta, o bien alg
un falso contacto con un
punto que se encuentre a un potencial mas alto.
Finalmente, cada se
nal de salida de los canales del encoder del motor se monitorea
por una terminal de entrada digital del microcontrolador.

4.5.

Resumen
En este captulo se presento el controlador usado para mover los motores de CD

con escobillas de los dos u


ltimos ejes del robot SCARA. Primeramente se explico el princi-

72

Captulo 4: Controlador de los motores de CD

pio de funcionamiento de los motores de CD y los esquemas de conmutacion usados para


controlarlos. Se describio el funcionamiento de los CI LMD18200 usados para controlar mediante un esquema de PWM los motores, exponiendo su dise
no, caractersticas principales
y las tecnicas de operacion. Tambien se menciono la necesidad de utilizar un Snubber de
sobrevoltaje.
Usando el microcontrolador se realiza el esquema de control completo anti-fase y
se utilizan las se
nales de los canales de los encoders como retroalimentacion para el control
de los motores.

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

Captulo 5: Fuente de alimentacion

L7805.

5.0.1.

Circuito regulador de voltaje ajustable LM338


El diagrama electrico de la fuente de 24V se muestra en la Figura 5.1. Algunas

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.

Figura 5.1: Diagrama de la fuente de 24 V de CD a 5 A.

75

Figura 5.2: Circuito de dos fuentes de 24 V.

5.0.2.

Circuito regulador de voltaje L7805


Este cicuito es usado en la fuente de 5V el cual alimenta a todos los circuitos

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.

Figura 5.3: Diagrama electrico de la fuente de 5 V de CD a 1 A.

76

Captulo 5: Fuente de alimentacion

Figura 5.4: Circuito de la fuente de 5V

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.

Captulo 6: Pruebas y resultados

Otros esquemas probados e investigados


Puesto que el robot cuenta con cuatro motores de cd, dos de ellos de pasos y los

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

Figura 6.1: Esquema de un regulador de 15A.

que transforma energa electrica mediante transistores en conmutacion. Mientras que un


regulador de tension utiliza transistores polarizados en su region activa de amplificacion,
las fuentes conmutadas utilizan los mismos conmutandolos activamente a altas frecuencias
(100-500 Kilociclos tpicamente) entre corte (abiertos) y saturacion (cerrados). La forma de
onda cuadrada resultante es aplicada a transformadores con n
ucleo de ferrita (Los n
ucleos de
hierro no son adecuados para estas altas frecuencias) para obtener uno o varios voltajes de
salida de corriente alterna (CA) que luego son rectificados (Con diodos rapidos)y filtrados
(Inductores y capacitores)para obtener los voltajes de salida de corriente continua (CC)
[Wikipedia08]. Las desventajas comparandolas con fuentes lineales es que son mas complejas
y generan ruido electrico de alta frecuencia que debe ser cuidadosamente minimizado para
no causar interferencias a equipos proximos a estas fuentes, pero tienen varias ventajas:
La eficiencia de las fuentes conmutadas esta comprendida entre el 70 y el 93 porciento,
comparado con el rendimiento del 30 y 60 porciento de las fuentes lineales.
El tama
no de una fuente conmutada es mucho menor que el de una lineal para una
potencia dada y por lo tanto, mas liviana, esto es debido a que trabajan a altas
frecuencias de switcheo.

80

Captulo 6: Pruebas y resultados

La salida se mantiene estable a


un con grandes variaciones de la tension de entrada.

Se pueden lograr m
ultiples tensiones de salida reguladas, de diferente polaridad y/o
distintos niveles de tension.

Las salidas estan aisladas de la entrada.

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].

Figura 6.2: Diagrama del convertidor Buck LT1074 [Technology07].

Finalmente se opto por construir una fuente de alimentaci


on regulada usando
los circuitos integrados LM338 debido a que ya se contaba con estos circuitos y por el
conocimiento sobre estos de trabajos anteriores, aunque cabe mencionar que la construccion
de una fuente conmutada para el suministro de energa del robot SCARA es una opcion
que en lo particular es de mi interes, mencionandolo como un posible trabajo futuro.

6.1. Dise
no de la fuente de alimentacion y pruebas realizadas

6.1.2.

81

Pruebas realizadas a la fuente de alimentaci


on operando los dos
motores de pasos con distintos valores del snubber de sobrevoltaje
Las primeras pruebas realizadas sobre la fuente de alimentacion consistieron en

demandarle la corriente maxima a los circuitos reguladores LM338 utilizando un voltaje


de 24V. Se conecto a la salida de cada una de las fuentes diferentes valores de resistencia,
disminuyendo el valor hasta demandarle la corriente maxima soportada por los circuitos
LM338 los cuales manejan una corriente maxima de 5A y una corriente pico de 7A durante
un tiempo de 0.5 ms. Se observo mediante un osciloscopio digital que a pesar de demandar una corriente de 4.7 A, la se
nal de voltaje no se modificaba ni descenda. Despues se
ensayo con una carga inductiva energizando una de las fases de un motor de pasos; este
demandaba alrededor de 3.4A y de nuevo no se modificaba ni descenda la se
nal de voltaje.
Se probo tambien energizando las dos fases del motor al mismo tiempo; en esta prueba hubo
una demanda de corriente de 5.8A provocando que despues de cierto periodo de tiempo (de
5 a 8 seg) el circuito LM338 se bloqueaba como autoproteccion. Por lo tanto se demostro que
los circuitos LM338 eran lo suficientemente robustos para suministrar energa a los circuitos
controladores de los motores de pasos SLA7062M (estos consumen una corriente maxima
de 3A).
A continuacion se exponen los problemas que existieron al no tener el valor adecuado de los snubbers de sobrevoltaje. Inicialmente se probo con diferentes valores de capacitores y resistencias y a simple vista operaban adecuadamente. Algunos valores probados
fueron: resistencias de 15/25W, 4.7/15W y 2.7/15W. Capacitores de 100F/250V,
470F/50V, 1000F/35V. Pero al analizar la forma de onda de voltaje y medir la corriente, se tenian valores inadecuados puesto que al estar energizado un motor de pasos pero
en reposo, se tena una disminucion de voltaje alrededor de 15V y en movimiento el valor
se elevaba hasta 30V, cuando la fuente deba entregar 24V. La disminucion de voltaje se
deba a que el snubber de sobrevoltaje, no absorba de manera eficiente la recirculacion de
corriente que existe con la conmutacion de los mosfets del CI SLA7062M, el cual es originado por el control PWM interno de este. El aumento de voltaje se debe a que el capacitor
del snubber se carga en el proceso en que los motores estan en movimiento. Este aumento y
disminucion de voltaje causaba que los circuitos LM338 se calentaran tamben y alcanzaran
los 100 C. Finalmente al descubrir que el valor mas adecuado para la resistencia del snubber
era alrededor de 1/10W se observo que el valor de voltaje ya no descenda sino que se

82

Captulo 6: Pruebas y resultados

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.

en movimiento se mantiene de manera estable alrededor de 30V. Donde si hay un cambio


notable es con la corriente ya que su valor maximo llega alrededor de 1.5A. Despues de
su periodo de transitorio, ya no tiene un periodo de establilizacion en donde disminuye su
valor sino que vuelve a aumentar desde ese punto. Se pueden observar tambien peque
nos
picos negativos de corriente. Ademas la temperatura de los circuitos reguladores LM338 no
aumenta de 40 C. Es por esta razon que este valor de la resistencia fue el que se considero como el mejor para el buen funcionamiento de la fuente de alimentacion. Despues de
encontrar este valor se probo con diferentes valores de capacitancia pero no se observo un
cambio significativo.

84

Captulo 6: Pruebas y resultados

(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.

A continuacion se muestran las pruebas realizadas cuando se opera el motor M 1 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 forma de onda 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.6 muestra el comportamiento tanto del voltaje como de la corriente
de la fuente de alimentaci
on cuando este opera al motor M 1. Se puede observar que en
reposo se tiene un funcionamiento adecuado ya que el voltaje se mantiene estable alrededor
de los 25V y la corriente al parecer no tiene picos de corriente negativa. En movimiento el
voltaje asciende a 30V, esto como en el caso del motor M 0 se debe al valor de voltaje del
capacitor el cual se carga a este nivel. Se vera mas adelante que para el motor M 1 si tiene
un efecto considerable el cambio del valor de la capacitancia del snubber. En este caso la
temperatura del regulador de voltaje LM338 se mantiene cerca de los 60 C.
De nuevo al igual que el motor M 1, cuando se utiliza un valor de resistencia de
2.7 se tiene un comportamiento inadecuado de la fuente de alimentacion. Esto se puede
observar en la Figura 6.7. En reposo, el voltaje desciende a 20V y la corriente tiene picos
de corriente negativa. En movimiento aumenta el voltaje arriba de 32V. Esto indica que es
inadecuado el uso de un snubber con estos valores. La temperatura de los reguladores de
voltaje LM338 ahora aumenta hasta los 90 C.
Se encontro que el valor mas adecuado para la resistencia es de 0.5, lo cual se

85

6.2. Pruebas realizadas al CI SLA7062M

(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.

Pruebas realizadas al CI SLA7062M


Se hicieron algunas pruebas a los CI SLA7062M de manera manual antes de que

se controlaran a traves del microcontrolador. Para esto se construyo un circuito sencillo


utilizando un CI 555 como un multivibrador astable para generar un PWM y se seleccionaron las entradas de direccion, voltaje de referencia y los de tama
no de paso (M1, M2)
del SLA7062M. Con diferentes valores de resistencia se genero una se
nal PWM a diferentes frecuencias el cual se uso para la entrada de reloj del CI SLA7062M. La Figura 6.10

86

Captulo 6: Pruebas y resultados

(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.

muestra el circuito utilizado. Primeramente se manejo una frecuencia de 4Khz, el motor


M 1 opero bien a 1/4, 1/8 y 1/16 de paso sin embargo esta frecuencia fue muy elevada para
permitir operar el motor a 1/2 paso. Para la misma frecuencia, el motor M 0 solo pudo trabajar adecuadamente con 1/8 y 1/16 de paso. La segunda frecuencia que se utilizo fue el
de 1Khz, para este caso el motor M 1 funciono de manera adecuada con cada resolucion de
paso, por el contrario, esta frecuencia siguio siendo un poco elevada para el motor M 0 ya
que no pudo trabajar a 1/2 paso. Finalmente se probo con una frecuencia de 800hz y para
este caso el motor M 0 ya pudo trabajar bien con cada una de las resoluciones de paso.

6.3.

Microcontrolador y pruebas de software


Utilizando algunos programas desarrollados para el robot movil en la tesis de

Antonio Concha [Concha07] y modificandolos para los nuevos requerimientos, se realizaron


pruebas de funcionamiento del robot con todas sus partes trabajando en conjunto.
Primeramente se alambraron los cables que trasmiten las instrucciones a los controladores de los motores, los cables de los sensores de contacto y los encoders de los motores
de CD; todos hacia el microcontrolador, y se probo que las se
nales mandadas y recibidas por
este fueran las adecuadas. Se utilizo el puerto A del microcontrolador para las se
nales Sync,
M1, M2, Clk, Dir y Reset que ocupan los controladores de los motores de pasos SLA7062M
del motor M 0 y el puerto H para las se
nales del controlador del motor M 1. Para la se
nal

87

6.3. Microcontrolador y pruebas de software

(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

Captulo 6: Pruebas y resultados

(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.

Posteriormente se hicieron pruebas de comunicacion; esto se hizo utilizando el


programa serial (apendice F) el cual establece una comunicacion a traves del puerto serie
o RS232 entre la PC y el microcontrolador.
Despues se verificaron las se
nales de los sensores de contacto para que cuando estos
estuvieran accionados, el microcontrolador detectara y mostrara cual de estos sensores se
encontraba en ese estado; mediante esto se puede guardar y programar la posicion de inicio
para cada motor. Despues se probaron los encoders comprobando que cuando estos giraran
en un sentido, el microcontrolador detectara los cambios de las se
nales A y B, y cuando
cada motor diera una vuelta completa el microcontrolador lo contabilizara usando la se
nal
I.
Una vez realizado todo lo anterior se prosiguio a operar los controladores de los
motores dandoles las se
nales necesarias desde el microcontrolador. Se probo el funcionamiento de los motores de pasos mandando las se
nales adecuadas a las entradas M1 y M2 del
CI SLA7062M para hacer operar los motores a 1/2, 1/4, 1/8, y 1/16 de paso. Despues se
hicieron pruebas de precison y repetibilidad de los motores haciendolos avanzar hasta una
posicion y luego retornando a su posicion inicial de ese movimiento. Mediante una marca
sobre un papel milimetrico se anoto el punto de inicio y la posicion despues de dar un paso,
luego haciendolo regresar se observo que llegaba exactamente al mismo punto; a
un cuando
avanzaba muchos pasos y a diferentes velocidades, siempre retornaba al mismo lugar. Para
los motores de CD solo se hicieron algunas pruebas para verificar que estos respondieran a

89

6.4. Pruebas del robot realizadas sobre madera

(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.

los comandos del microcontrolador y que operaran a distintas velocidades.


El apendice A muestra como se realiza la comunicacion con el robot, como se
descarga un programa al microcontrolador y los comandos usados para mover al robot.

6.4.

Pruebas del robot realizadas sobre madera


Se hicieron algunas pruebas de corte de madera, para esto primero se obtuvieron

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-

ma de referencia. As, la cinematica se interesa por la descripcion analtica del movimiento


espacial del robot como una funcion del tiempo, y en particular por las relaciones entre la
posicion y la orientaci
on del extremo final del robot con los valores que toman sus coordenadas articulares. Existen dos problemas fundamentales para resolver la cinematica del
robot [UDG08]:
El primero de ellos se conoce como el problema cinem
atico directo, y consiste en
determinar cual es la posicion y orientacion del extremo final del robot, con respecto
a un sistema de coordenadas que se toma como referencia, conocidos los valores de
las articulaciones y los parametros geometricos de los elementos del robot.

90

Captulo 6: Pruebas y resultados

Figura 6.10: Diagrama esquematico del circuito 555 operando como oscilador.

El segundo denominado problema cinematico inverso resuelve la configuracion que


debe adoptar el robot para una posicion y orientacion del extremo conocidas.

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.

6.4. Pruebas del robot realizadas sobre madera

91

Recordando algunas identidades trigonometricas:


Ley de cosenos para un triangulo general.
sinB
sinC
sinA
=
=
a
b
c

(6.1)

a2 = b2 + c2 (2bc)cosA

(6.2)

Primero se tiene que la orientacion del u


ltimo eslabon es la suma de las variables
articulares lo cual se muestra en la Figura 6.11.

= 1 + 2 + 3

Figura 6.11: Orientacion del u


ltimo eslabon.

Se calcula 2 :
La Figura 6.12 muestra el espacio del angulo de 2

(6.3)

92

Captulo 6: Pruebas y resultados

Aplicando la ley de los cosenos:


r 2 = x2 + y 2 = l12 + l22 2l1 l2 cos(180 2 )

(6.4)

cos(180 2 ) = cos2

(6.5)

x2 + y 2 l12 l22
2l1 l2

(6.6)

Debido a que:

Resulta:
cos2 =

Figura 6.12: Espacio del angulo 2 .

Calculo de 1 .
Si se definen dos
angulos se cumple:
1 =

(6.7)

El angulo se calcula:
sin =

y
x2

+ y2

(6.8)

93

6.4. Pruebas del robot realizadas sobre madera

Aplicando la ley de los cosenos se tiene:


cos =

x2 + y 2 + l12 l22
2l1

x2 + y 2

(6.9)

Los
angulos , y 1 se muestran en la Figura 6.13.

Figura 6.13: Angulos


, y 1 .

Finalmente se calcula 3 mediante la siguiente ecuacion. La Figura 6.14 muestra el


angulo 3 .

3 = 1 2

(6.10)

Utilizando estas ecuaciones y midiendo la longitud de cada brazo, se programo la


funci
on que posiciona cada eje para tener una orientacion y posicion del efector final deseado.
Se programo la ecuacion de una elipse y la de una recta, con estas dos figuras fue posible
que el robot dibujara circulos de diferentes diametros, cuadrados y triangulos. Estos codigos
se muestran en el apendice F.2. Despues se le acoplo una peque
na herramienta rotatoria
(Dremel) para hacer los cortes sobre madera. A continuacion la Figura 6.15 muestra unas
imagenes.

94

Captulo 6: Pruebas y resultados

Figura 6.14: Angulo


3 .

6.5.

Comparaci
on de costos
A continuacion se muestra una comparacion de costos de un robot SCARA comer-

cial y el robot construido.


El valor de un robot SCARA comercial vara entre 9000 y 25000 USD; esto es, entre de
92000 y 258000 pesos. En la Tabla 6.2 se muestra el costo del robot SCARA desarrollado
en esta tesis.
Tabla 6.2: Costo del robot SCARA construido.
Equipo
Motores de pasos PS4913M02B (2)
Motor CD GM8724S011 (1)
Motor CD GM9236S021 (1)
Material usado aprox.
Estructura Mecanica
Total (pesos)

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

6.6. Sugerencias para el desarrollo del robot

95

(a) Trabajo sobre madera.

(b) Corte de una circunferencia con relieve.

Figura 6.15: Imagenes del robot haciendo cortes sobre madera.

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.

Sugerencias para el desarrollo del robot


En el proceso de construccion de todas las partes que componen al robot surgie-

ron varios detalles como los mencionados en las secciones anteriores que posteriormente se

96

Captulo 6: Pruebas y resultados

corrigieron. Algunas otras sugerencias son las siguientes:


Aterrizar todas las tierras o los negativos a una tierra fsica, esto se puede hacer
directamente a las cajas metalicas utilizadas, para evitar tener alg
un valor de voltaje
entre las salidas de las fuentes.
El uso de cable blindado reduce la posibilidad de la existencia de ruido en las se
nales
transmitidas a traves de estos. Este problema se presenta principalmente cuando los
cables que transmiten las se
nales l
ogicas se encuentran cerca de los cables de alimentacion de 24V. El cable blindado se puede comprar en tiendas de electronica pero
es posible construir uno envolviendo papel aluminio alrededor del cable que se desea
proteger y posteriormente aterrizando esta parte de aluminio.
Para las fuentes de 24V se recomienda el uso de capacitores de tantalio debido a que
mantienen una baja impedancia a
un a altas frecuencias.
El uso de ventiladores es sugerido para mantener las temperaturas de los componentes
dentro de sus rangos de operacion normal.
Si alg
un pin del microcontrolador se encuentra da
nado, se recomienda deshabilitarlo.

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

1/2, 1/4, 1/8 y 1/16 de paso.


Se resalta el uso del snubber de sobrevoltaje RCD que permite que los efectos de
las inductancias parasitas al interrumpir la corriente a traves de los motores sean
despreciables, manteniendo el voltaje de alimentacion de los CI y de los motores en
niveles seguros y eliminando la resonancia en los motores. Principalmente para los
motores de pasos.
El uso de cable blindado en los cables de alimentacion y control el cual contiene pantalla electrostatica es indispensable para evitar un mal funcionamiento de los componentes provocado por fenomenos de induccion. As mismo, el cableado adecuado de
los diferentes elementos y la conexion adecuada a tierra es necesario para un buen
funcionamiento del sistema.
Debido a que la carga para cada motor de pasos es diferente, no operan a la misma
velocidad.
Se uso el dise
no de algunos circuitos ya realizados y probados en trabajos anteriores,
como la fuente de alimentaci
on de 5V para los circuitos logicos y el controlador de los
motores de CD con escobillas.
Se usaron ciertos componentes reciclados de algunos circuitos desarrollados en el laboratorio de robotica de la Division de estudios de Posgrado de la F.I.E. de la U.M.S.N.H.
que ya no se le dieron aplicacion, tales como los circuitos reguladores de voltaje y dos
de los transformadores usados.
Se cumplio con el objetivo de construir un robot SCARA econ
omico, teniendo un
costo aproximadamente de la mitad del valor de un robot SCARA importado, como
se mostro en la seccion 6.
Es posible probar el robot en la industria, como primera aplicacion en la fabricacion
de guitarras en Paracho.
El robot se mueve a una baja velocidad, sin embargo tiene una precision excelente
por lo que sus aplicaciones se enfocaran mas a trabajos donde se requiere una buena
precision.

7.2. Sugerencias para trabajos futuros

99

Las pruebas realizadas sobre el corte de madera dieron resultados satisfactorios para
algunos trabajos orientados a la fabricacon de guitarras.

7.2.

Sugerencias para trabajos futuros


Mediante el conocimiento y experiencia adquiridos a lo largo del desarrollo de este

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

Control del robot


En este apendice se muestra como se realiza la comunicacion con el robot, como
se descarga un programa al microcontrolador y los comandos usados para operar al robot
desde la PC.

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

Apendice A: Control del robot

A.2.

Descarga de un programa al microcontrolador


El programa adapt9s12dp256 es un programa que corre en la computadora

portatil para descargar un programa al microcontrolador. Normalmente un codigo para


el microcontrolador se construye ejecutando el comando make en el directorio del programa
y como resultado se construye un archivo llamando out.s19 que se puede descargar al microcontrolador. En el siguiente ejemplo se borra la memoria del microcontrolador y enseguida
se inicia la descarga del programa al micro.
# ./adapt9s12dp256 /dev/ttyS0 out.s19<Return>
a) Erase Flash
b) Program Flash
c) Set Baud Rate
d) Erase EEPROM
? a<Return>
a
a) Erase Flash
b) Program Flash
c) Set Baud Rate
d) Erase EEPROM
? b<Return>
b
****************************************
a) Erase Flash
b) Program Flash
c) Set Baud Rate
d) Erase EEPROM
? <Ctrl C>
#

Si se usa un convertidor serial USB se escribira: ./adapt9s12dp256 /dev/ttyUSB0


out.s19
La lnea de asteriscos va creciendo indicando que se esta realizando la descarga del
programa y cuando acaba se presenta de nuevo el men
u de opciones. Conviene recordar que
el microcontrolador debe estar habilitado para descargar programas al inicio del programa.
Despues de la descarga se debe apagar el microcontrolador e iniciar en el modo de ejecutar
el programa.

A.3.

Funcionamiento del robot y comandos usados


Despues de hacer la comunicacion con el robot a traves de la conexion serial se

realizan los siguientes pasos para activar el robot:


1. Primeramente el interruptor usado para cargar y correr un programa del microcontrolador debe de encontrarse en la posicion abajo (correr). Cuando se carga un programa

A.4. Comunicacion con el robot

103

al microcontrolador, este interruptor se encuentra en la posicion abajo ( cargar).


2. Se acciona el interruptor 1 de la fuente de alimentacion, y el interruptor 1 del microcontrolador. Estos energizan al microcontrolador.
3. Despues se acciona el interruptor 2 de la fuente de alimentacion, el cual energiza los
motores de pasos y los motores de CD.
El robot realiza una secuencia de inicializacion para todos los motores llevandolos
a su punto de inicio; esto es, al punto donde accionan los interuptores y desde el cual se
encuentran en la posicion 0. Luego los dos motores de pasos se mueven hasta la mitad de
su movimiento maximo; este punto es el punto de trabajo en el cual el brazo del robot
se encuentra totalmente extendido. El motor 2 tamben se mueve hasta la mitad de su
movimiento maximo y el motor 3 se queda en la poscion de inicio. Despues de esto el robot
esta listo para recibir comandos desde la PC.
Se muestra un ejemplo de como se mandan las instrucciones y a continuacion se
exponen los comandos usados con el robot.
# ./serial /dev/ttyS0 <Return>
M0 1000<Return>
M
M1 2000<Return>
M
p 128 128<Return>

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

Apendice A: Control del robot

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 para mover los motores del robot


Se muestran los comandos usados para mover cada eje del robot.

Comando:

M < t >< sp >< c >< \n >


Donde t puede ser el n
umero 0, 1, 2, o 3 siendo el n
umero 0 para el el motor 0,
1 para el motor 1, 2 para el motor 2 y 3 para el motor 3.
Donde c es el n
umero de unidades que gira el motor y vara
entre 0 y un numero maximo
para los motores de pasos el cual depende dos cosas:
1) El motor que se esta controlando
2) La resolucion de paso con el cual se estan operando a los motores
Para los motores de CD c vara entre 0 y un n
umero maximo fijo:
85000 para el motor 2
y 48000 para el motor 3

Respuesta:

M < \n >

Ejemplos:

M 0 < sp > 3000 < \n >


M 1 < sp > 2000 < \n >

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. Comunicacion con el robot

A.4.2.

105

Comando para informar sobre el estado de los interruptores de


contacto
El robot responde a este comando informando al usuario cual de los cuatro inte-

rruptores del robot esta accionado.


Comando:

Q < \n >

Respuesta:

0000 < \n >

Donde:

0000 es un vector que representa cada interruptor

Ejemplos:

Si el interruptor 3 esta actividado, la respuesta sera


0100

Apendice B

Hojas de datos de fabricantes


B.1.

Motor de pasos Mycom PS4913M-02B


Las figuras B.1, B.2 y B.3 muestran algunos datos tecnicos de los motores de pasos

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.

Motor de CD Pittman GM8724S011


La tabla B.1 muestra los datos principales de este dispositivo en cuanto a montaje,

caja de engranes, encoder y el propio motor.

B.4.

Motor de CD Pittman GM9236S021


La tabla B.2 muestra los datos principales de este dispositivo en cuanto a montaje,

caja de engranes, encoder y el propio motor.

107

108

Apendice B: Hojas de datos de fabricantes

Figura B.1: Especificaciones tecnicas de los motores de pasos.

B.5.

CI LMD18200
Las figuras B.6 y B.7 muestran los datos tecnicos del CI LMD18200 dados por el

fabricante. En estas figuras se presenta su descripcion general, sus aplicaciones, su diagrama


de bloques funcional, sus rangos de operacion y sus caractersticas electricas.

109

B.5. CI LMD18200

Figura B.2: Cont. especificaciones tecnicas de los motores de pasos.

Figura B.3: Dimensiones de los motores de pasos.

110

Apendice B: Hojas de datos de fabricantes

Figura B.4: Especificaciones tecnicas del CI SLA7062M.

B.5. CI LMD18200

Figura B.5: Cont. especificaciones tecnicas del CI SLA7062M.

111

112

Apendice B: Hojas de datos de fabricantes

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

Tabla B.1: Datos principales del motor Pittman GM8724S011

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

Tabla B.2: Datos principales del motor Pittman GM9236S021

114

Apendice B: Hojas de datos de fabricantes

Figura B.6: Hoja de datos del CI LMD18200 [Semiconductor99].

B.5. CI LMD18200

Figura B.7: Hoja de datos del CI LMD18200 [Semiconductor99].

115

Apendice C

Circuitos impresos desarrollados


En este apendice se presentan las plantillas de los circuitos impresos desarrollados
dentro de este trabajo, as como el metodo utilizado para la fabricacion de los circuitos
impresos.

C.1.

Plantillas de los circuitos impresos


La figura C.1 presenta la plantilla del circuito impreso de la fuente de 5V.
La figura C.2 presenta las plantilla del circuito impreso de la fuente de 24V.
La figura C.3 presenta la plantilla del circuito impreso de los controladores de los

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

Apendice C: Circuitos impresos desarrollados

+
-

+
V5

Figura C.1: Plantilla del circuito impreso de la fuente de 5V/1A.

1. Se imprime el circuito impreso dise


nado sobre el lado mas liso de un acetato para
impresora l
aser (tambien se puede imprimir sobre una hoja de transferencia termica
para circuitos impresos como PNP BLUE de Steren), usando una impresora laser. El
circuito no debe imprimirse como espejo.
2. Se recorta el circuito impreso en el acetato.
3. Se corta una pieza de baquelita con las medidas adecuadas.
4. Se lija la baquelita con fibra o lana de acero (usada para lavar trastes).
5. Se limpia la baquelita con algodon o estopa impregnado de thiner o alcohol.
6. La parte impresa del acetato se coloca sobre el cobre de la placa de baquelita y se fija
con cinta.
7. Mediante el uso de una prensa termica construida localmente se aplica calor y fuerza
sobre el acetato para transferir el toner de la impresion a la baquelita. La temperatura
usada en la prensa fue de 180 C. Se recomienda poner una hoja de papel entre la
prensa y el acetato para que este no se queme. El tiempo durante el cual se aplica
calor y fuerza a la placa varia dependiendo de la calidad de la impresion y del tama
no
del circuito impreso; tpicamente oscila entre 5 y 8 minutos. Se debe tener presente
tambien que si la prensa esta muy caliente y se aplica una fuerza excesiva sobre la
placa, el toner se puede expandir hacia los lados, resultando en lneas mas gruesas
de toner sobre el cobre que generalmente tienen que ser muy retocadas o en uniones
indeseables con toner entre las pistas.

C.2. Metodo de fabricaci


on de los circuitos impresos

119

Figura C.2: Plantilla del circuito impreso de dos de las fuentes de 24V, las otras dos fuentes
de 24V son iguales.

8. Enfriar la placa aplicando sobre ella aire o agua.


9. Una vez fra, remover cuidadosamente el acetato de la baquelita (ocasionalmente se
hace con la ayuda de un chorro de agua).
10. Retocar las pistas que no se vean bien con un marcador de tinta indeleble.
11. Colocar la placa en un recipiente (de preferencia que se pueda cerrar) con cloruro
ferrico.
12. Esperar a que el cloruro ferrico remueva el cobre sobre el cual no hay toner, mientras
se mueve constantemente el recipiente. Cuando se remueve el cobre en la baquelita, los
lugares donde no haba toner comienzan a cambiar de color (normalmente se ponen
de color amarillo).
13. Cuando ya se haya removido todo el cobre no deseado, se vaca el cloruro a su envase
y se lava la placa con agua.

120

Apendice C: Circuitos impresos desarrollados

Figura C.3: Plantilla del circuito impreso de los controladores SLA7062M.

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

C.2. Metodo de fabricaci


on de los circuitos impresos

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

Tarjetas H1 y H2 para la conexi


on
del microcontrolador
En la figura D.1 y D.2 se presenta el circuito esquematico y la plantilla del circuito
impreso de la tarjeta H1.
En la figura D.3 se presenta una vista de la tarjeta H1 terminada.
En la figura D.4 y D.5 se presenta el circuito esquematico y la plantilla del circuito
impreso de la tarjeta H2.
En la figura D.6 se presenta una vista de la tarjeta H2 terminada.
Finalmente en la figura D.7 se presenta una vista de las tarjetas H1 y H2 junto al
microcontrolador. Estas tarjetas proporcionan una forma conveniente de conectar, mediante
tornilleras, las entradas y salidas del microcontrolador con los circuitos del robot.

123

124

Apendice D: Tarjetas H1 y H2 para la conexion del microcontrolador

Figura D.1: Diagrama esquematico de la tarjeta H1 que se conecta al microcontrolador.

Figura D.2: Plantilla del circuito impreso de la tarjeta H1.

125

Figura D.3: Tarjeta H1.

126

Apendice D: Tarjetas H1 y H2 para la conexion del microcontrolador

Figura D.4: Diagrama esquematico de la tarjeta H2 que se conecta al microcontrolador.

127

Figura D.5: Plantilla del circuito impreso de la tarjeta H2.

128

Apendice D: Tarjetas H1 y H2 para la conexion del microcontrolador

Figura D.6: Tarjeta H2.

129

Figura D.7: El microcontrolador conectado a las tarjetas H1 y H2.

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

dispositivo durante la conmutacion de elementos electronicos de potencia a niveles que estan


dentro del rango de operacion del dispositivo [Mohan95]. Dicho en forma mas explicita, los
snubbers reducen la tension electrica en un dispositivo a niveles de operacion realizando
alguna de las siguientes funciones:
1. Limitando el voltaje aplicado al dispositivo durante los transitorios de apagado.
2. Limitando la corriente del dispositivo durante los transitorios de encendido.
3. Limitanto la velocidad con que aumenta la corriente (di/dt) a traves del dispositivo
cuando este es encendido.
4. Limitando la velocidad con que aumenta el voltaje (dv/dt) en el dispositivo cuando
este es apagado.
131

132

Apendice E: Snubbers: funcion y clasificacion

5. Condicionando la trayectoria de conmutacion del dispositivo cuando es encendido y


apagado.

Desde el punto de vista de la topologa de circuitos, existen tres clases principales


de snubbers, que incluyen:

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:

E.1. Funcion y clasificacion de los snubbers

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.

Programas de interfase y desarrollo usados


Se utilizaron algunos programas que fueron desarrollados en proyectos anteriores

por el Dr. Leonardo Romero Mu


noz. Estos programas se describen de manera breve a
continuacion:
1. Makefile. Es el archivo principal de compilacion que indica la secuencia de operaciones necesarias para compilar las aplicaciones siguientes.
2. serial. Es un programa desarrollado en lenguaje C para establecer una comunicacion
a traves del puerto serie o RS232 entre la PC y el microcontrolador.
3. adapt9s12dp256. Este programa sirve para descargar un archivo ejecutable (en c
odigo maquina) al microcontrolador usando el puerto serie o RS232.

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

Apendice F: Codigo del microcontrolador

as published by the Free Software Foundation; either version 2


of the License, or any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, access http://www.gnu.org/licenses/gpl.html
or write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
/*
File:
command.c
Author:
Leonardo Romero
Date:
May 9, 2007
Rev. No.:
1.0
Description: Initial Release
*/
#m68hc11-as -m68hc12 -mshort -o serial.o serial.s
NAME

= 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

F.1. Programas de interfase y desarrollo usados

//-----------------------------------------------------------------------------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,

free software; you can redistribute it and/or


the terms of the GNU General Public License
the Free Software Foundation; either version 2
or any later version.

This program is distributed in the hope that it will be useful,


but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, access http://www.gnu.org/licenses/gpl.html
or write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
/*
File:
command.c
Author:
Leonardo Romero
Date:
May 9, 2007
Rev. No.:
1.0
Description: Initial Release
*/
#include "serial.h"
#include "ioRegsHcs12DP256.h"
volatile char g_w_command_line[256];
volatile unsigned short g_w_command_len=0;

/* This assumes a 8 MHz clock. If not, youll need to change the


Baud rate enum.
*/
#define scimask

b(0,0,1,0,1,1,0,0) //RIE - SCI Interrupt enable ;RE - Receiver Enable

void ser0_init (unsigned short baud)


{
SCI0BD = baud;
/* enable transmitter and receiver and receiver interrupt */
SCI0CR1 = 0;
SCI0CR2 = scimask;
SCI0SR1; //read register to clear flag RDRF
SCI0DRL; //dummy read to flush receive buffer
}
#define TDRE 0x80
void ser0_write_demon(void)
{
static unsigned char reg;
unsigned short i;

137

138

Apendice F: Codigo del microcontrolador

unsigned char *p;


reg = TDRE;
reg &= SCI0SR1;
//
while ((SCI0SR1 & TDRE)==0); no funciona en 3.3.5-m68hc1x-20050515
if(reg && g_w_command_len) {
SCI0DRL = g_w_command_line[0];
p = (char *) g_w_command_line;
for(i=1; i < g_w_command_len; i++){
*p = *(p+1);
p++;
}
g_w_command_len--;
}
}
void ser0_putchar(char c)
{
g_w_command_line[g_w_command_len] = c;
g_w_command_len++;
}
void ser0_putcharnl(char c)
{
ser0_putchar(c);
ser0_putchar(\n);
}
void ser0_puts(char s[])
{
while(*s){
ser0_putchar(*s);
s++;
}
}
void ser0_putnl()
{
ser0_putchar(\n);
}
void ser0_putspace()
{
ser0_putchar( );
}
#define NDIGITS 5
void ser0_putushort(unsigned short x)
{
static byte d[NDIGITS];
static int i;
i = NDIGITS -1;
do {
d[i--] = x % 10;
x /= 10;
} while (x);
for(i++; i < NDIGITS; i++)
ser0_putchar(d[i] + 0);
}
void ser0_putshort(short x)
{
if(x < 0){

F.1. Programas de interfase y desarrollo usados

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;

//read register to clear flag RDRF


//read receive buffer

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

Apendice F: Codigo del microcontrolador

SCI1DRL;

//dummy read to flush receive buffer

}
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>

#define BAUDRATE B9600


//#define SERIALDEVICE "/dev/ttyS0"
//#define SERIALDEVICE "/dev/ttyUSB0"
int fd;
void *read_serial_port(void *arg)
{
char c;
while (1) {
/* loop for input */
read(fd,&c,(size_t) 1);
/* returns after 1 chars have been input */

F.1. Programas de interfase y desarrollo usados

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;

/*
/*
/*
/*

inter-character timer unused */


blocking read until 1 chars received */
XON */
XOFF */

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

Apendice F: Codigo del microcontrolador

if(strcmp(command,"b\n")==0)
load_program(fd,argv[2]);
}
return 0;
}
//-----------------------------------------------------------------------------

F.2.

Programa del microcontrolador del robot SCARA


El archivo principal para compilar el programa en lenguaje C es Makefile, ya que

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,

free software; you can redistribute it and/or


the terms of the GNU General Public License
the Free Software Foundation; either version 2
or any later version.

This program is distributed in the hope that it will be useful,


but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, access http://www.gnu.org/licenses/gpl.html
or write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
/*
File:
command.c
Author:
Leonardo Romero
Date:
May 9, 2007
Rev. No.:
1.0
Description: Initial Release
*/
#include
#include
#include
#include
#include
#include
#include
#include

<stdio.h>
<string.h>
"main.h"
"ioRegsHcs12DP256.h"
"serial.h"
"command.h"
"isr.h"
"control.h"

int main(void);

extern char

_start_of_data;

F.2. Programa del microcontrolador del robot SCARA

extern char
extern const char
unsigned short int
unsigned short int

_end_of_data;
_start_of_init;
start = 0x0000;
end
= 0xffff;

enum STEP_INIT step;


//#define BAUD9600 52 // 8 Mhz
#define BAUD9600 156 // 24 Mhz
#define BAUD19200 78 // 24 Mhz
#define BAUD38400 39 // 24 Mhz
#define BAUD115200 13 // 24 Mhz
//Baud rate definitions
////MCLK=8Mzh
//#define BAUD1200
//#define BAUD2400
//#define BAUD4800
//#define BAUD9600
//#define BAUD14400
//#define BAUD19200
//#define BAUD38400
//
//

417
208
104
52
35
26
13

//(baud)
//(baud)
//(baud)
//(baud)
//(baud)
//(baud)
//(baud)

1200 baud with 16 Mhz crystal


2400 baud with 16 Mhz crystal
4800 baud with 16 Mhz crystal
9600 baud with 16 Mhz crystal
14400 baud with 16 Mhz crystal
19200 baud with 16 Mhz crystal
34400 baud with 16 Mhz crystal

static void inline disableCOP(void)


{
COPCTL = 0x00; //Disable COP
COPCTL = 0x00;
}
#define
#define
#define
#define
#define

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

static void inline rise24Mhz(void)


{
REFDV = REFDVVal;
//PLLCLK = 24MHz
SYNR = SYNRVal;
asm("nop\n" "nop\n" "nop\n" "nop\n"); //nops required for bug
#define LOCK 0x08
unsigned char lock = LOCK;
while(!(CRGFLG & lock))
//wait here till the PLL is locked
;
#define PLLSEL 0x80
CLKSEL |= PLLSEL;
//System clocks are derived from PLLCLK
}
static void inline setAD(void)
{
//Initialize Analog To Digital
ATD0CTL2 =
ATD0CTL3 =
//
ATD1CTL4
ATD0CTL4 =
ATD0CTL5 =
//
ATD0CTL5

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

Apendice F: Codigo del microcontrolador

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

0x41 //b(0,1,0,0,0,0,0,1) //(1/16Mhz)2*2^13=1.024 msec interrupt


b(0,0,1,1,0,0,0,0) //(1/16Mhz)2*2^12=1.024/2 msec interrupt
b(0,0,0,1,0,0,0,0) //(1/16Mhz)2^10=1.024/16 msec interrupt
0x80 //b(1,0,0,0,0,0,0,0)
0x80 //b(1,0,0,0,0,0,0,0)

static void set_rti(void)


{
RTICTL = rtimask; //Initialize Real Time Interrupt rate
CRGFLG |= RTIF; //clear flag
CRGINT |= RTIE; //Enable RTI
}
static char command;
short num_params;
DEF_PARAM param[20];

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

F.2. Programa del microcontrolador del robot SCARA

#define setb(mask) PORTH |= mask


#define clearb(mask) PORTH &= ~mask
#define SCFflag
int
{

b(1,0,0,0,0,0,0,0)

//SCF - Sequence Complete flag

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);

//
//

ser0_init(BAUD9600); //Baudrate is 9600


ser0_init(BAUD38400); //Baudrate is 9600
ser0_init(BAUD115200); //Baudrate is 9600
//
ser1_init(BAUD9600); //Baudrate is 9600
setAD(); //Initialize Analog to digital converter
set_rti();
init_control();
ENABLE_INTERRUPTS;
// ws0("Robot RC-PANT-TILT-1 v2.0 2008 Ready\n");
ws0("?");
step = 0;
while(1){
if(step <= I_READY){ ////
if(init_secuence(step)) ////
step++; ////
}
if(g_command_pending && !edo_wait){
g_command_pending=0;
decode_command();
do_command(command,num_params,param);
}
if(g_rtf){
g_rtf = 0;
}
if(g_rtf_ms){
blm_demon();
real_time_control();
real_time_rutine_ms();
g_rtf_ms = 0;
}
if(g_rtf_sec){
//
real_time_rutine_second();
g_rtf_sec = 0;
}
check_end_commands();
ser0_write_demon();
}
return 0;
}
//-----------------------------------------------------------------------------EOF

F.2.2.

command.c

145

146

Apendice F: Codigo del microcontrolador

//----------------------------------------------------------------------------/*
Copyright (C) 2007 Leonardo Romero email:lromero@umich.mx
This program is
modify it under
as published by
of the License,

free software; you can redistribute it and/or


the terms of the GNU General Public License
the Free Software Foundation; either version 2
or any later version.

This program is distributed in the hope that it will be useful,


but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, access http://www.gnu.org/licenses/gpl.html
or write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
/*
File:
command.c
Author:
Leonardo Romero
Date:
May 9, 2007
Rev. No.:
1.0
Description: Initial Release
*/
/* command.c */
#include
#include
#include
#include
#include
#include
#include
#include
#include

<stdio.h>
<string.h>
"ioRegsHcs12DP256.h"
"main.h"
"command.h"
"control.h"
"serial.h"
"isr.h"
"step_motor.h"

volatile extern unsigned short g_ad2, g_ad3, g_ad4, g_ad5;


/* *** WAIT operation **** */
volatile short edo_wait=0, edo_wait_time=0; // static short edo_wait=0
static void change_g_pwm(short num_params, unsigned DEF_PARAM param[])
{
if(num_params==2){
SET_PWM(M2_PWM, (unsigned char) param[0]);
SET_PWM(M3_PWM, (unsigned char) param[1]);
}
}
static void wait(short num_params, DEF_PARAM param[])
{
ser0_putcharnl(W);
move_robot(num_params,param);
edo_wait=1;
}
static void wait_time(short num_params, DEF_PARAM param[])
{
g_clock_rt = param[0];

/* no funciona la inicializaci
on en 3.3.5-m68hc1x-2005051

F.2. Programa del microcontrolador del robot SCARA

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;
}
}
}

static void query(short num_params, unsigned DEF_PARAM param[])


{
ser0_putchar(Q);
ser0_putshort(g_vel[M2]);
ser0_putspace();
ser0_putshort(g_vel[M3]);
ser0_putnl();
ser0_putushort((unsigned short) GET_PWM(M0_PWM));
ser0_putspace();
ser0_putushort((unsigned short) GET_PWM(M1_PWM));
ser0_putspace();
ser0_putushort((unsigned short) GET_PWM(M2_PWM));
ser0_putspace();
ser0_putushort((unsigned short) GET_PWM(M3_PWM));
ser0_putspace();
ser0_putnl();
ser0_putushort((unsigned short) get_switchB(mB_SwitchM0));
ser0_putspace();
ser0_putushort((unsigned short) get_switchB(mB_SwitchM1));
ser0_putspace();
ser0_putushort((unsigned short) get_switchB(mB_SwitchM2));
ser0_putspace();
ser0_putushort((unsigned short) get_switchB(mB_SwitchM3));
ser0_putnl();
ser0_putushort((unsigned short) PORTH);
ser0_putnl();
ser0_putushort((unsigned short) PORTA);
ser0_putnl();
//
blm_t();
}
void check_end_commands(void)
{
check_end_wait();
}
void do_command(char command, short num_params, unsigned DEF_PARAM param[])
{
switch (command) {
case M: move(num_params,param);
ser0_putcharnl(M); break;
case L: report_status();
break;
case W: wait(num_params, param); break;
case w: wait_time(num_params, param); break;

147

148

Apendice F: Codigo del microcontrolador

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,

free software; you can redistribute it and/or


the terms of the GNU General Public License
the Free Software Foundation; either version 2
or any later version.

This program is distributed in the hope that it will be useful,


but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, access http://www.gnu.org/licenses/gpl.html
or write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
/*
File:
command.c
Author:
Leonardo Romero
Date:
May 9, 2007
Rev. No.:
1.0
Description: Initial Release
*/
/* command.h */
void do_command(char command, short num_params, unsigned DEF_PARAM param[]);
void check_end_commands(void);
extern volatile short edo_wait;
//-----------------------------------------------------------------------------EOF

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,

free software; you can redistribute it and/or


the terms of the GNU General Public License
the Free Software Foundation; either version 2
or any later version.

149

F.2. Programa del microcontrolador del robot SCARA

This program is distributed in the hope that it will be useful,


but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, access http://www.gnu.org/licenses/gpl.html
or write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
/*
File:
command.c
Author:
Leonardo Romero
Date:
May 9, 2007
Rev. No.:
1.0
Description: Initial Release
*/
/// control.c ///
//#define DEBUG 1
#include
#include
#include
#include
#include
#include

"ioRegsHcs12DP256.h"
"main.h"
"serial.h"
"step_motor.h"
"control.h"
"isr.h"

//
//
//
//
//
//
//
//

PORT ASSIGNMENTS for this program for adapt9S12Dp256 ROCA-MOBILE-3


pata
Conector
PT0
mT_M2_Enc_A ;I
13
(H1)
PT1
mT_M2_Enc_B
;I
12
PT2
mT_M3_Enc_A
;I
12
PT3
mT_M3_Enc_B
;I
12
PT4
mT_M2_Enc_I
;I
12
PT5
mT_M3_Enc_I
;I
12

//
//
//
//
//
//

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

//
//
//
//
//
//
//
//

Apendice F: Codigo del microcontrolador

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;

// ******No se inicializan variables est


aticas en esta versi
on del compilador****

// 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];
}
}

static void set_move_params(short m, short signed_steps)

F.2. Programa del microcontrolador del robot SCARA

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:
*/

628 + 5 units = 360 degrees,


pos = 316 to align the pan with the front of the robot, 1 unit = 0.5687
pos = 51 to align with vertical, pos = 189 to align with horizontal, 1 unit = 0.6521 degress

diff_steps = pos - g_pos[m];


if(diff_steps){
g_pos_ref[m] = pos;
set_move_params(m, diff_steps);
}
}
}
void move_robot(unsigned short num_params, DEF_PARAM param[])
{
static DEF_PARAM p[20];
p[0]
p[0]
p[0]
p[0]

=
=
=
=

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

Apendice F: Codigo del microcontrolador

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]) ;

F.2. Programa del microcontrolador del robot SCARA

error0 /= 1000L;
dif = g_pos_ref[active_motor] - g_pos[active_motor];
error1 = k_pro1[active_motor] * dif;
error1 /= 1000L;
error =

error0 + error1;

if( dif < 1000 && dif > -1000) {


ac_err_int[active_motor] += dif;
error2 =
k_int[active_motor] * ac_err_int[active_motor];
error2 /= 1000L;
error += error2;
} else
ac_err_int[active_motor] = 0;
switch (active_motor) {
case M2: error *= -1; break;
}
pos_old[active_motor] = g_pos[active_motor];
alter_power (error);
if (active_motor == 2 && dif
blm_steps[active_motor] =
if (active_motor == 3 && dif
blm_steps[active_motor] =

> -50 && dif < 50)


0;
> -100 && dif < 100)
0;

}
#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;

//SCF - Sequence Complete flag

153

154

Apendice F: Codigo del microcontrolador

M0_MOTOR_DDR = b(1,1,1,1,1,1,1,1);
M1_MOTOR_DDR = b(1,1,1,1,1,1,1,1);

// p0-p5 are outputs


// p0-p5 are outputs

DDRT = 0x00; // all are input


DDRP = b(1,1,1,1,0,0,1,1);
PORTP = b(0,0,0,0,0,0,0,0);

//all are input but 7 and 6

DDRB = b(0,0,0,0,0,0,0,0);

//all are input

// *** PWM ***


//
//
//
//
//
//
//

PWME |= mP_MTiltPWM | mP_MPanPWM;


// Pulse Width Channel 6 & 7 Enable (use Clock B)
PWME = b(0,0,1,1,0,0,1,1);
// Pulse Width Channel 0 & 1 Enable (use Clock B), 5 use Clock A
PWMPRCLK = b(0,0,1,0,0,0,1,0); //Clock B=Bus clock/4
//1/(1/24e6 * 4 *256))=23437Hz
PWMPRCLK = b(0,1,0,0,0,1,0,0); //Clock B=Bus clock/16 (1/24e6 * 16 *256)=5859Hz
PWMPRCLK = b(0,0,1,1,0,0,1,1); //Clock B=Bus clock/8
(1/(1/24e6 * 8 *256)=11718Hz
PWMPRCLK = b(0,1,1,1,0,1,1,1); //Clock B=Bus clock/128 (1/(1/24e6 * 128 *256)=732Hz
PWM46KHz;
PWM22KHz;
PWM5859Hz;

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
//

*** DC Motors initialization ***


pwm[M2] = 127;
pwm[M3] = 127;
set_pwm_motor(M2, pwm[M2]);
set_pwm_motor(M3, pwm[M3]);
clearb(mH_M2_Brake,PORTH);
setb(mH_M2_PWM, PORTH);
clearb(mA_M3_Brake,PORTA);
setb(mA_M3_PWM, PORTA);

//*** ECT ***


ICPAR |= b(0,0,0,0,0,0,0,0); //Pulse Acumulator 1 and 0 are enabled
DLYCT |= b(0,0,0,0,0,0,0,0); //Delay Counter disabled
//
DLYCT |= b(0,0,0,0,0,0,0,1); //Delay Counter = 256 bus clock cycles
//
DLYCT |= b(0,0,0,0,0,0,1,1); //Delay Counter = 1024 bus clock cycles
TIOS |= b(1,0,0,0,0,0,0,0); //All channels are input capture but pin7
TCTL4 |= b(0,1,0,1,0,1,0,1); //Input Capture Edge Control
//0,1=captue on rising edges only
//1,1=Capture on any edge, rising or falling (encoders) T2 &T3
TCTL3 |= b(0,1,0,1,0,1,0,1); //Input Capture Edge Control
//0,1=capture on rising edges only
//1,1=Capture on any edge, rising or falling (encoders) T2 &T3
ICSYS |= b(0,0,0,0,0,1,1,1); //PACMX=1 When the 8-bit pulse accumulator has reached the value
//$FF, it will no be incremented further.
//BUFEN=1 Input Capture and pulse accumulators registers are enabled
//LATQ=1 Latch Mode of Input Capture is enabled
TIE

b(1,0,0,0,0,0,0,0); //Timer Interrupt Enable Register (PWM Interrupts)

TSCR2 =
TSCR1 =

b(0,0,0,0,1,0,1,1); //Timer Prescaler = Bus clock / 8 = 0.333 microseg


b(1,0,0,0,0,0,0,0); //TEN=1 Timer Enabled

Timer Counter Reset Enable = 1

F.2. Programa del microcontrolador del robot SCARA

//

155

TC7 = 30; // 10 microseg.


TC7 = 20; // 5 microseg.

//
//
//
//
//
//
//
//
//
//
//
//
//
//

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 =

//

b(0,0,0,0,1,0,1,1); //Timer Prescaler = Bus clock / 8 = 0.333 microseg


b(1,0,0,0,0,0,0,0); //TEN=1 Timer Enableda = 1

TC7 = 30; // 10 microseg.


TC7 = 20; // 5 microseg.
TFLG1 |= b(1,1,1,1,1,1,0,0); //Clear Interrupts Flag
MCCNT = 0;
for(m=0; m < 2; m++){ // Step Motor Initialization
active_motor = m;
stm_init_motor(m);
}

}
// 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])

Timer Counter Reset Enable = 1

156

Apendice F: Codigo del microcontrolador

if(get_switchB(mB_SwitchM0) && !blm_steps[0])


result = 1;
} else if(s==I_M0_LEFT){
if(get_switchB(mB_SwitchM0) && !blm_steps[0])
set_move_params(0,1);
if(!get_switchB(mB_SwitchM0) && !blm_steps[0]){
result = 1; g_pos[0] = 0;
}
} else if (s==I_M1_RIGHT){
if(!get_switchB(mB_SwitchM1) && !blm_steps[1])
set_move_params(1,1);
if(get_switchB(mB_SwitchM1) && !blm_steps[1])
result = 1;
} else if(s==I_M1_LEFT){
if(get_switchB(mB_SwitchM1) && !blm_steps[1])
set_move_params(1,-1);
if(!get_switchB(mB_SwitchM1) && !blm_steps[1]){
result = 1; g_pos[1] = 10820;
}
} else if (s == I_M2_RIGHT){
if(!get_switchB(mB_SwitchM2) && !blm_steps[2]){
g_pos_ref[2]=10000; g_pos[2] = 10000;
param[0] = 2; param[1] = g_pos_ref[2]+100; move(2,param);
}
if(get_switchB(mB_SwitchM2) && !blm_steps[2]){
result = 1;
}
} else if (s == I_M2_LEFT ){
if(get_switchB(mB_SwitchM2) && !blm_steps[2]){
param[0] = 2; param[1] = g_pos_ref[2] - 1; move(2,param);
}
if(!get_switchB(mB_SwitchM2) && !blm_steps[2]){
g_pos[2]=80000; g_pos_ref[2]=65000; result=1;
}
} else if (s == I_M3_UP) {
if(!get_switchB(mB_SwitchM3) && !blm_steps[3]){
g_pos_ref[3]=10000; g_pos[3] = 10000;
param[0] = 3; param[1] = g_pos_ref[3] -100; move(2,param);
}
if(get_switchB(mB_SwitchM3) && !blm_steps[3]){
result=1;
}
} else if (s == I_M3_DOWN) {
if(get_switchB(mB_SwitchM3) && !blm_steps[3]){
param[0] = 3; param[1] = g_pos_ref[3] + 10; move(2,param);
}
if(!get_switchB(mB_SwitchM3) && !blm_steps[3]){
g_pos[3]=0; g_pos_ref[3]=0; result=1;
}
} else if (s==I_M0_CENTER) {
//
param[0]=0; param[1]=13250;
param[0]=0; param[1]=5000;
move(2,param);
result = 1;
} else if (!blm_steps[0] && s==I_M1_CENTER) {
param[0]=1; param[1]=5350;
move(2,param);
result = 1;
} else if (s==I_M2_CENTER) {
param[0]=2; param[1]=42500;
move(2,param);
result = 1;
} else if (!blm_steps[1] && s == I_READY){

F.2. Programa del microcontrolador del robot SCARA

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,

free software; you can redistribute it and/or


the terms of the GNU General Public License
the Free Software Foundation; either version 2
or any later version.

This program is distributed in the hope that it will be useful,


but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, access http://www.gnu.org/licenses/gpl.html
or write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
/*
File:
command.c
Author:
Leonardo Romero
Date:
May 9, 2007
Rev. No.:
1.0
Description: Initial Release
*/
/* control.h */
#define DC_MOTOR
0
#define STEP_MOTOR 1
#define
#define
#define
#define
#define

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)

void move_robot(unsigned short num_param, DEF_PARAM param[]);


void move(unsigned short num_param, DEF_PARAM param[]);
void set_ac(unsigned short num_param, DEF_PARAM param[]);
void stop_all_motors();
void report_status();
void real_time_rutine_second(void);
void real_time_control(void);
void real_time_rutine_ms(void);
unsigned short get_switchB(unsigned char mask);
volatile
volatile
volatile
volatile

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

Apendice F: Codigo del microcontrolador

volatile extern short g_pos_rel_M2, g_pos_rel_M3;


volatile extern long g_pos[];
//-----------------------------------------------------------------------------EOF

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,

free software; you can redistribute it and/or


the terms of the GNU General Public License
the Free Software Foundation; either version 2
or any later version.

This program is distributed in the hope that it will be useful,


but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, access http://www.gnu.org/licenses/gpl.html
or write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
/*
File:
command.c
Author:
Leonardo Romero
Date:
May 9, 2007
Rev. No.:
1.0
Description: Initial Release
*/
#include "ioRegsHcs12DP256.h"
/*
* isr.c
*/
// Connections of A-Encoder pins of motors
#define PAN_AC
PA0H
#define TILT_AC PA1H
#include
#include
#include
#include
#include
void
{
}

"main.h"
"isr.h"
"serial.h"
"control.h"
"step_motor.h"

__attribute__ ((interrupt)) ISR_Empty(void)

volatile unsigned short g_rtf=0, g_rtf_sec=0, g_rtf_ms=0;


volatile unsigned short g_timer=0, g_timer_sec=0, g_timer_ms=0, g_clock_rt=0;
volatile short g_vel[N_MOT];
void get_vel()
{

F.2. Programa del microcontrolador del robot SCARA

#define ICLAT b(0,0,0,1,0,0,0,0)


/*

MCCTL |= ICLAT;

//Force the contents of 8-bit accumulators to be latched into their


//associated holding registers

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)

/* Real Time Interrupt is running each milisecond */


void __attribute__ ((interrupt)) ISR_RealTimeInt(void)
{
CRGFLG |= RTIF;
//clear flag
if(g_clock_rt)
g_clock_rt--;
if(g_clock_hi[0])
g_clock_hi[0]--;
if(g_clock_hi[1])
g_clock_hi[1]--;
if(g_clock_lo[0])
g_clock_lo[0]--;
if(g_clock_lo[1])
g_clock_lo[1]--;
if(g_timer_ms) // Check 5ms Timer
g_timer_ms--;
else {
g_rtf_ms=1;
//
g_timer_ms = 15;
g_timer_ms = 7;
}
g_rtf=1;
}
//-----------------------------------------------------------------------------EOF

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,

free software; you can redistribute it and/or


the terms of the GNU General Public License
the Free Software Foundation; either version 2
or any later version.

This program is distributed in the hope that it will be useful,

159

160

Apendice F: Codigo del microcontrolador

but WITHOUT ANY WARRANTY; without even the implied warranty of


MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, access http://www.gnu.org/licenses/gpl.html
or write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
/*
File:
command.c
Author:
Leonardo Romero
Date:
May 9, 2007
Rev. No.:
1.0
Description: Initial Release
*/
/*
* isr.h
*/
extern volatile short g_vel[];
extern volatile unsigned short g_timer, g_timer_sec, g_clock_rt;
extern volatile unsigned short g_rtf, g_rtf_sec, g_rtf_ms;
#ifndef
#define

ISR_H
ISR_H

void __attribute__ ((interrupt)) ISR_Empty(void);


void get_vel();
#define
#define

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,

free software; you can redistribute it and/or


the terms of the GNU General Public License
the Free Software Foundation; either version 2
or any later version.

This program is distributed in the hope that it will be useful,


but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, access http://www.gnu.org/licenses/gpl.html
or write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
/*
File:
command.c

F.2. Programa del microcontrolador del robot SCARA

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;
}
}
}

volatile unsigned short g_clock_hi[N_MOT]={0,0};


volatile unsigned short g_clock_lo[N_MOT]={0,0};
void set_pwm_motor(short m, unsigned char pwm)
{
switch(m) {
case M0: SET_PWM(M0_PWM, pwm); break;
case M1: SET_PWM(M1_PWM,pwm); break;
case M2: SET_PWM(M2_PWM,pwm); break;
case M3: SET_PWM(M3_PWM,pwm); break;
}
}
unsigned char get_pwm_motor(short m)
{
unsigned char pwm;

162

switch(m) {
case M0: pwm
case M1: pwm
case M2: pwm
case M3: pwm
}
return pwm;

Apendice F: Codigo del microcontrolador

=
=
=
=

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;

F.2. Programa del microcontrolador del robot SCARA

}
}
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);
}
}

// Stop the motor

}
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

Apendice F: Codigo del microcontrolador

const unsigned char enc_forward[4] = {2,0,3,1};


const unsigned char enc_backward[4] = {1,3,0,2};
#define TWIST_MOTOR 2
#define Z_MOTOR 3
#define TWIST_MOTOR_ENCODER_PORT PORTT
#define Z_MOTOR_ENCODER_PORT PORTT
#define mB_AB_filter b(0,0,0,0,0,0,1,1)
#define GET_FILTER_PORT(mask,port) (port) & (mask)

static void inline get_twist_encoder()


{
enc_actual_M2 = GET_FILTER_PORT(mB_AB_filter,TWIST_MOTOR_ENCODER_PORT);
if (enc_derr_M2 != enc_actual_M2) {
if(enc_forward[enc_derr_M2] == enc_actual_M2) {
g_pos_rel_M2++;
enc_derr_M2 = enc_actual_M2;
}
if(enc_backward[enc_derr_M2] == enc_actual_M2) {
g_pos_rel_M2--;
enc_derr_M2 = enc_actual_M2;
}
}
}
static void inline get_z_encoder()
{
enc_actual_M3 = GET_FILTER_PORT(mB_AB_filter,Z_MOTOR_ENCODER_PORT>>2);
if (enc_derr_M3 != enc_actual_M3) {
if(enc_forward[enc_derr_M3] == enc_actual_M3) {
g_pos_rel_M3--;
enc_derr_M3 = enc_actual_M3;
}
if(enc_backward[enc_derr_M3] == enc_actual_M3) {
g_pos_rel_M3++;
enc_derr_M3 = enc_actual_M3;
}
}
}
void init_encoders()
{
enc_derr_M2 = GET_FILTER_PORT(mB_AB_filter,TWIST_MOTOR_ENCODER_PORT);
enc_derr_M3 = GET_FILTER_PORT(mB_AB_filter,Z_MOTOR_ENCODER_PORT>>2);
}

void __attribute__ ((interrupt)) ISR_IC7(void)


{
DISABLE_INTERRUPTS;
get_twist_encoder();
get_z_encoder();
TFLG1 |= b(1,0,0,0,0,0,0,0);

//clear flag

F.2. Programa del microcontrolador del robot SCARA

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

Apendice F: Codigo del microcontrolador

//

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;

ang2 = acos( (x * x + y * y - l1 * l1 - l2 * l2)/ (2 * l1 * l2) );


beta = asin( y / ( sqrt (x*x + y*y) ) );
if (x < 0)
beta = PI - beta;
phi = acos ( (x*x + y*y + l1*l1 - l2*l2) /( 2 * l1 * sqrt(x*x + y*y) ) );
ang1 = beta - phi;
ang3 = (teta_global - ang1 - ang2);
M[0]
M[1]
M[2]
M[3]

=
=
=
=

(int) (ang1 / Res_M0) + Def_M0;


(int) (ang2 / Res_M1) + Def_M1;
(int) (ang3 / Res_M2) + Def_M2;
383000;

}
// 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

F.2. Programa del microcontrolador del robot SCARA

double inc_lambda = 1.0 / (n - 1.0);


for(i=0; i < n; i++) {
x[i] = x0 + (i * inc_lambda) * (x1 - x0);
y[i] = y0 + (i * inc_lambda) * (y1 - y0);
}
}
void mueve_articulacion(int min, int max, int inc)
{
char comando[256], respuesta[256];
int i;
sprintf(comando, "W7000 8000 %d 350000\n",min); envia_comando(comando,respuesta);
for(i=min; i <= max; i += inc){
sprintf(comando, "W7000 8000 %d 370000\n",i);
envia_comando(comando,respuesta);
}
sprintf(comando, "W7000 8000 %d 350000\n",max); envia_comando(comando,respuesta);
}

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];
//

mueve_articulacion(10000, 50000, 100);


double radio_a= 70.0, radio_b = 70.0, xc = 0.0, yc = 270.0, x0,y0,xf,yf;
double radio, M3_inicio = 432000, M3;
M3 = M3_inicio;
radio = 1.0;

// en mm

168

Apendice F: Codigo del microcontrolador

elipse(radio, radio, xc, yc, n, x, y);


xf = x[n-1]; yf = y[n-1];
dibuja(2,x,y, M3,1);
while (radio <= 30.0) {
radio_a = radio_b = radio;
M3 = M3_inicio + 5000.0 * radio / 30.0;
elipse(radio_a, radio_b, xc, yc, n, x, y);
xf = x[n-1]; yf = y[n-1];
if(radio > 1.0) {
linea(x0,y0,xf,yf,1000, x,y);
dibuja(1000,x,y, M3,0);
}
elipse(radio_a, radio_b, xc, yc, n, x, y);
dibuja(n,x,y, M3, 0);
if( radio == 30.0)
dibuja(n,x,y, M3, 1);
x0 = x[n-1]; y0 = y[n-1];
radio = radio + 1.0;
printf("%f\n", radio);
}
x0 = 70.0, y0 = 200.0;
double x1 = -70.0, y1 = 200.0, x2
linea(x0, y0, x1, y1, n, x, y);
linea(x1, y1, x2, y2, n, x, y);
linea(x2, y2, x3, y3, n, x, y);
linea(x3, y3, x0, y0, n, x, y);

= -70.0, y2 =270.0, x3 = 70.0, y3 = 270.0;


dibuja(n,x,y,M3,1);
dibuja(n,x,y,M3,1);
dibuja(n,x,y,M3,1);
dibuja(n,x,y,M3,1);

int main(int argc, char *argv[])


{
struct termios oldtio,newtio;
int i;
if (argc < 2){
printf("Sintaxis: %s serial_device\n",argv[0]);
printf("Examples: %s /dev/ttyS0\n",argv[0]);
printf("
%s /dev/ttyUSB0\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;
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;

/* inter-character timer unused */


/* blocking read until 1 chars received */

tcflush(fd, TCIOFLUSH);
tcsetattr(fd,TCSANOW,&newtio);
tcflush(fd, TCIOFLUSH);

F.2. Programa del microcontrolador del robot SCARA

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]

Actuator, I. IX SCARA, 2006.


URL

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]

Arts, T., 2004.


URL

http://technologicalarts.com/. Updated:

2004/09/22
[Automation06]

Automation, C. Gearmotors Products Series Data Sheet, 2006.


URL http://www.clickautomation.com/products/index.php
Updated: 2006/10/20

[Barrientos97]

Barrientos, A., Balaguer, C., Penin, L. F., y Arcil, R. Fundamentos de Rob


otica. McGraw Hill, 1997.

[Brumson06]

Brumson, B. Scara vs. Cartesian Robots: Selecting the Right


Type for Your Applications, 2006.
171

172

Referencias

URL

http://www.roboticsonline.com/public/articles/-

archivedetails.cfm?id=518/. Updated: 2006/02/03


[Carletti06]

Carletti, E. J. Motores paso a paso caractersticas basicas, 2006.


URL http://robots-argentina.com.ar/MotorPP basico.htm

[Catalog.com08]

Catalog.com, D. St microelectronics positive voltage regulators,


2008.
URL http://www.datasheetcatalog.com/datasheets pdf/L/7/8/0/L7805.shtml

[Circuits06]

Circuits, I. Stepper motor basics, 2006. Industrial Circuits.


URL

http://www.solarbotics.net/library/pdflib/pdf/

drive.pdf
[Com06a]

Com, R. D. Dispensing Robot - SCARA JSR 4400 Series, 2006.


URL

http://www.dispensingrobots.com/SCARA.htm/.

Updated: 2006/03/09
[Com06b]

Com, R. D. JS SCARA Series, 2006.


URL http://www.scara-robots.com/JS250350brochure.pdf/.
Updated: 2006/03/09

[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]

Condit, R. y Jones, D. W. Stepping motors fundamentals, 2004.


Microchip Technology Inc.
URL

http://ww1.microchip.com/downloads/en/AppNotes

/00907a.pdf
[Corporation02]

Corporation, N. T. Motor engineering, 2002.


URL

http://www.clickautomation.com/PDF/categories

/Step Motor/ Engineer/(2002/Catlog).pdf


[Educativa06]

Educativa, T. Robot SCARA didactico de 4 ejes Serpent, 2006.


URL

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]

Fisnar, I. Robot SCARA TMB100, 2006.


URL http://www.ijfisnar.com/spain/details.asp?product=46/.
Updated: 2006/03/04

[Jensen04]

Jensen, C. H. A Generic Motor Drive Design for Mobile Robotic


Plataforms. Tesis de maestra, The University of Waikato, Master
of Science in Physics and Electronic Engineering, 2004.

[Jones98]

Jones, J. L., Flynn, A. M., y Seiger, B. A. Mobile Robots. Cambridge University Press., 1998.

[Jones08]

Jones, D. W. Control of stepping motors tutorial, 2008. THE


UNIVERSITY OF IOWA Department of Computer Science.
URL http://www.cs.uiowa.edu/ jones/step/index.html

[Latombe91]

Latombe, J.-C. Robot motion planning, 1991.

[Maloney06]

Maloney, T. J. Electr
onica Industrial Moderna. Prentice Hall,
2006.

[Martin07]

Martin, D. X-ROBOTICS. Sensores, 2007.


URL

http://www.x-robotics.com/sensores.htm/.

Updated: 2007/06/05
[Mckerrow91]

Mckerrow, P. Introduction to Robotics. Addison-Wesley, 1991.

[McManis06]

McManis, C. Voltage Spikes in FET Based H-bridges, 2006.


URL http://www.mcmanis.com/chuck/robotics/projects/esc2/hbridge spiking.html/. Updated: 2007/05/20

[Mohan95]

Mohan, N., Underland, T. M., y Robbins, W. P. Power Electronics: Converters, Applications and Design. John Wiley & Sons,
1995.

174

[Motoman06]

Referencias

Motoman. HM & HS Series SCARA: The Right Robot to Meet


Your 4-Axis Needs, 2006.
URL

http://www.motoman.com/products/robots/models/-

scara.htm/. Updated: 2006/03/09


[Motorola02]

Motorola. MC9S12DP256B Device User V02.11, 2002.


URL http://e-www.motorola.com/file/soft dev tools/data sheet/9S12DP256BZIP.zip

[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]

Petriu, E. M. Manipulators Arms, 2006.


URL

http://www.site.uottawa.ca/ petriu/-

CEG4392-IntroRobotics-Arms.pdf/. Updated: 2006/02/15


[Ramrez98]

Ramrez, S.

Dise
no y construcci
on de un manipulador con

dos grados de libertad y orientaci


on del efector final. Tesis de
maestra, Universidad Michoacana de San Nicloas de Hidalgo,
Facultad de Ingeniera Electrica, Division de Estidios de Postgrado, Octubre 1998.
[Robotics06a]

Robotics, P. Robot Products, 2006.


URL

http://www.peakrobotics.com/Products.htm/.

Updated: 2006/02/12
[Robotics06b]

Robotics, P. What is a SCARA?, 2006.


URL http://www.peakrobotics.com/What is a SCARA.htm/.
Updated: 2006/02/12

[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]

Romero, L. Protocolo de comunicacion serial con el robot, 2004.


Universidad Michoacana de San Nicolas de Hidalgo. Facultad de
Ingeniera Electrica. Division de Estudios de Posgrado.

[Romero04b]

Romero, L. y Arellano, J. Building an open platform for mobile


robotics. En International Symposium on Robotics and Automation (ISRA 2004). August 2004.
URL http://faraday.fie.umich.mx/ lromero

[Rosen06]

Rosen, J. Manipulator Mecanical Design. En Department of


Electrical Engineering. University of Washington, 2006.

[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]

Salimian, M. Robot Configurations: SCARA, 2006.


URL http://jewel.morgan.edu/ salimian/courses/IEGR470/scara.html/. Updated: 2006/03/10

[Sears88]

Sears, F. W., Zemansky, M. W., y Young, H. D. Fisica Universitaria. Adison-Wesley Iberoamericana, 1988.

[Semiconductor99]

Semiconductor, N. LMD18200 3A, 55V H-Bridge, 1999.


URL http://www.national.com/LM/LMD18200.pdf/

[Semiconductor08]

Semiconductor, N. Lm338 5 amp adjustable regulator, 2008.


URL http://www.national.com/mpf/LM/LM338.html

[Severns06]

Severns, R. Design of Snubbers for Power Circuits, 2006.

176

[SILICON04]

Referencias

SILICON, L.

Stepper Motor Reference Design.

SILICON

LABORATORIES, 2004.
URL http://www.silabs.com/public/documents/tpub doc/anote
/Microcontrollers/en/an155.pdf
[Solutions06]

Solutions, I. D. SCARA Robot, 2006.


URL http://www.intelligentactuator.com/products/SCARA/Default.asp/. Updated: 2006/01/27

[Spong89]

Spong, M. W. y Vidyasagar, M. Robot Dynamic and Control.


John Wiley & Sons, 1989.

[Technology]

Technology, A.
URL http://www.adept.com/. Updated: 2006/02/22

[Technology07]

Technology, L. Lt1074 - step-down switching regulator, 2007.

URL http://www.linear.com/pc/productDetail.jsp?navId=H0,C1,C1003,C1042,C1
[UDG08]

UDG, J. R. R. Tutorial sobre robotica, 2008.


URL http://proton.ucting.udg.mx/materias/robotica/index.html

[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.

Developing Embedded Software in C.

En

University of Texas. 2004.


URL

http://www.ece.utexas.edu/ valvano/. Updated:

2004/01/23
[Wikipedia06]

Wikipedia. SCARA Robot, 2006.


URL

http://en.wikipedia.org/wiki/SCARA robot/.

Updated: 2006/03/10
[Wikipedia08]

Wikipedia. Fuente conmutada, 2008.


URL http://es.wikipedia.org/wiki/Fuente conmutada

[Wildi02]

Wildi, T. Electrical machines, drives, and power systems. Prentice Hall, 5a edon., 2002.

177

Referencias

[Williams02]

Williams, M. Building the linux of the robot world. PCWorld,


March 2002.

[Yamaha06]

Yamaha, M. What is the SCARA robot, 2006.


URL

http://www.yamaha-motor.co.jp/global/business/-

robot/ykx/what/index.html/. Updated: 2006/01/17

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

Transductor Dispositivo capaz de convertir o transformar alg


un fenomeno fsico en una
se
nal electrica.

Indice
Actuador, 3

hojas de datos, 108

tipos, 3

Funcionamiento, 56

Articulaciones

hojas de datos, 107

tipos, 3

Puente H, 59
Motores de pasos

Codigo, 22, 135

Componentes esenciales, 15

Circuitos impresos, 117

Controlador, 27, 45

metodo de fabricaci
on de, 117

Dos voltajes de suministro, 40

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

Modelo de las bobinas, 37

Fuente de potencia, 19

Operacion, 30
Interruptores de contacto, 45

Operacion a alta velocidad, 36


Resistencia en serie, 39

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

Snubber de sobrevoltaje RCD, 49

categoria, 5

Snubbers

comercial, 7

clasificacion, 131

configuracion, 5

de sobrevoltaje RCD, 131

costo, 8

funcion, 131

Robot comandos , 104


Robot movil
comunicacion, 103
SCARA
arquitectura, 13
caractersticas, 13
Circuito controlador
circuito impreso, 117
descripcion, 13
esquema de conexion, 23
fuente de potencia, 19
circuito impreso, 117
microcontrolador, 21
funcion del, 21
programacion, 22
motores de CD, 13
controladores, 108
hojas de datos, 107
sensores, 16
de lmite, 19
de posicion, 17

Tarjetas H1 y H2, 123


Tesis
Antecedentes, 2
conclusiones, 97
Justificacion, 9
Objetivo de, 9
organizacion, 10
sugerencias para trabajos futuros, 99

Вам также может понравиться