Você está na página 1de 199

DISENO Y CONSTRUCCION DE UN ROBOT SCARA

UTILIZANDO MOTORES DE CD DE PASOS Y CON


ESCOBILLAS

TESIS

Para obtener el grado de


INGENIERO ELECTRICISTA

Presenta
Omar Rodrguez Paez

Leonardo Romero Munoz


Asesor de Tesis

Universidad Michoacana de San Nicolas de Hidalgo

Agosto 2008
A mis padres, mi hermana, mis abuelos y toda mi familia.

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


asesora y direccion 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 desempena 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 diseno y construccion de los circuitos de potencia, control e instrumentacion
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 diseno 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iii
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v
Contenido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi
Lista de Figuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
Lista de Tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
Lista de Smbolos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
Lista de Publicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix

1. Introduccion 1
1.1. Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2. Objetivo de la tesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3. Justificacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.4. Organizacion del documento . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2. El robot SCARA 13
2.1. Arquitectura del robot SCARA . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2. Motores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.1. Motores de CD con escobillas . . . . . . . . . . . . . . . . . . . . . . 14
2.2.2. Motores de pasos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3. Sensores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3.1. Odometro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3.2. Sensores de lmite . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4. Fuente de alimentacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.5. Microcontrolador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.6. Esquema de conexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.6.1. Programacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.7. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3. Controlador de los motores de CD de pasos 25


3.1. Tipos de motores pasos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.1.1. Bobinado bipolar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.1.2. Bobinado unipolar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2. Operacion de los motores de pasos unipolares . . . . . . . . . . . . . . . . . 28
3.3. Metodos para excitar los motores de pasos . . . . . . . . . . . . . . . . . . . 29

vii
viii Contenido

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


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

4. Controlador de los motores de CD 55


4.1. Operacion de los motores de CD . . . . . . . . . . . . . . . . . . . . . . . . 56
4.2. Puente H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.3. Esquema PWM que implementa el controlador . . . . . . . . . . . . . . . . 61
4.4. Controlador de los motores de CD . . . . . . . . . . . . . . . . . . . . . . . 63
4.4.1. Circuito integrado LMD18200 . . . . . . . . . . . . . . . . . . . . . . 65
4.4.2. Circuito que monitorea las senales del encoder . . . . . . . . . . . . 71
4.5. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

5. Fuente de alimentacion 73
5.0.1. Circuito regulador de voltaje ajustable LM338 . . . . . . . . . . . . 74
5.0.2. Circuito regulador de voltaje L7805 . . . . . . . . . . . . . . . . . . 75
5.1. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

6. Pruebas y resultados 79
6.1. Diseno de la fuente de alimentacion y pruebas realizadas . . . . . . . . . . . 79
6.1.1. Otros esquemas probados e investigados . . . . . . . . . . . . . . . . 80
6.1.2. Pruebas realizadas a la fuente de alimentacion operando los dos mo-
tores de pasos con distintos valores del snubber de sobrevoltaje . . . 83
6.2. Pruebas realizadas al CI SLA7062M . . . . . . . . . . . . . . . . . . . . . . 87
6.3. Microcontrolador y pruebas de software . . . . . . . . . . . . . . . . . . . . 88
6.4. Pruebas del robot realizadas sobre madera . . . . . . . . . . . . . . . . . . . 91
6.4.1. Cinematica del robot . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
6.4.2. Cinematica inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
6.5. Comparacion de costos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
6.6. Sugerencias para el desarrollo del robot . . . . . . . . . . . . . . . . . . . . 98

7. Conclusiones 99
7.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
7.2. Sugerencias para trabajos futuros . . . . . . . . . . . . . . . . . . . . . . . . 101
Contenido ix

A. Control del robot 103


A.1. Comunicacion con el robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
A.2. Descarga de un programa al microcontrolador . . . . . . . . . . . . . . . . . 104
A.3. Funcionamiento del robot y comandos usados . . . . . . . . . . . . . . . . . 104
A.4. Comunicacion con el robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
A.4.1. Comando para mover los motores del robot . . . . . . . . . . . . . . 106
A.4.2. Comando para informar sobre el estado de los interruptores de contacto107
A.4.3. Comando para definir la aceleracion de los motores de pasos . . . . . 107
A.4.4. Comando para definir la aceleracion de los motores de CD . . . . . . 109

B. Hojas de datos de fabricantes 111


B.1. Motor de pasos Mycom PS4913M-02B . . . . . . . . . . . . . . . . . . . . . 111
B.2. CI SLA7062M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
B.3. Motor de CD Pittman GM8724S011 . . . . . . . . . . . . . . . . . . . . . . 111
B.4. Motor de CD Pittman GM9236S021 . . . . . . . . . . . . . . . . . . . . . . 111
B.5. CI LMD18200 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

C. Circuitos impresos desarrollados 121


C.1. Plantillas de los circuitos impresos . . . . . . . . . . . . . . . . . . . . . . . 121
C.2. Metodo de fabricacion de los circuitos impresos . . . . . . . . . . . . . . . . 121

D. Tarjetas H1 y H2 para la conexion del microcontrolador 127

E. Codigo del microcontrolador 135


E.1. Programas de interfase y desarrollo usados . . . . . . . . . . . . . . . . . . . 135
E.1.1. Makefile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
E.1.2. serial.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
E.1.3. adapt9s12dp256.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
E.2. Programa del microcontrolador del robot SCARA . . . . . . . . . . . . . . . 141
E.2.1. main.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
E.2.2. command.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
E.2.3. command.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
E.2.4. control.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
E.2.5. control.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
E.2.6. isr.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
E.2.7. isr.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
E.2.8. step motor.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
E.2.9. test scara.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

Referencias 167

Glosario 175

Indice alfabetico 178


Lista de Figuras

1.1. Categoras de los robots manipuladores. . . . . . . . . . . . . . . . . . . . . 4


1.2. Configuracion tpica de un robot SCARA y su respectiva area de trabajo. . 5
1.3. Diferentes robots SCARA comerciales. . . . . . . . . . . . . . . . . . . . . . 6

2.1. Robot SCARA desarrollado y construido localmente. . . . . . . . . . . . . . 14


2.2. Imagenes de los motores de CD del robot y encoder HP . . . . . . . . . . . 15
2.3. Motor de pasos utilizado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4. Elementos esenciales de un motor de pasos. . . . . . . . . . . . . . . . . . . 16
2.5. Esquema del odometro incremental adjunto al motor. . . . . . . . . . . . . 17
2.6. Senal en cuadratura generada por el odometro. . . . . . . . . . . . . . . . . 18
2.7. Imagenes del odometro o encoder que utilizan los motores Pittman del robot
SCARA construido. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.8. Sensor de lmite o bumper. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.9. Diagrama de conexion de los sensores de lmite. . . . . . . . . . . . . . . . . 19
2.10. Fuente de alimentacion construida. . . . . . . . . . . . . . . . . . . . . . . . 20
2.11. Modulo Adapt9S12DP256 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.12. Diagrama de bloques del esquema de conexion. . . . . . . . . . . . . . . . . 22
2.13. Imagenes de la caja del microcontrolador y controladores de los motores . . 24

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


3.2. Arreglo bipolar de un motor de pasos. . . . . . . . . . . . . . . . . . . . . . 27
3.3. Arreglo unipolar de un motor de pasos. . . . . . . . . . . . . . . . . . . . . 28
3.4. Cables y bobinas del motor de pasos. . . . . . . . . . . . . . . . . . . . . . . 28
3.5. Circuito de control de un motor de pasos unipolar. . . . . . . . . . . . . . . 29
3.6. Principio de operacion del motor de pasos unipolar. . . . . . . . . . . . . . 30
3.7. Secuencia con una sola bobina energizada del motor de pasos. . . . . . . . . 31
3.8. Secuencia con dos bobinas energizadas. . . . . . . . . . . . . . . . . . . . . . 31
3.9. Secuencia de medio paso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.10. Senales de micropasos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.11. Metodo de micropasos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.12. Modelo de una bobina. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.13. Corriente en una bobina con tres diferentes frecuencias. . . . . . . . . . . . 37
3.14. Resistencia en serie con una bobina. . . . . . . . . . . . . . . . . . . . . . . 38

xi
xii Lista de Figuras

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


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

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


4.2. Principio de funcionamiento de un motor de CD. . . . . . . . . . . . . . . . 56
4.3. Disposicion de los elementos del motor de CD de iman permanente. . . . . 58
4.4. Vista interior de un motor de CD con escobillas. . . . . . . . . . . . . . . . 59
4.5. Arreglo tpico de un puente H. . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.6. Interrupcion de la corriente en una carga inductiva. . . . . . . . . . . . . . . 62
4.7. Diagrama de bloques del controlador de los motores de CD. . . . . . . . . . 64
4.8. Diagrama de bloques funcional del LMD18200. . . . . . . . . . . . . . . . . 65
4.9. Circuito monoltico LMD18200. . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.10. Esquema del CI LMD18200. . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.11. Esquema del control completo anti-fase en el CI LMD18200. . . . . . . . . . 68
4.12. Esquema de control signo/magnitud en el CI LMD18200. . . . . . . . . . . 70
4.13. Diagrama del circuito que monitorea las senales del encoder. . . . . . . . . . 71
4.14. Imagen del circuito controlador de los motores de CD con escobillas. . . . . 72

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


5.2. Circuito de dos fuentes de 24 V. . . . . . . . . . . . . . . . . . . . . . . . . 75
5.3. Diagrama electrico de la fuente de 5 V de CD a 1 A. . . . . . . . . . . . . . 75
5.4. Circuito de la fuente de 5V . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.5. Imagenes de la fuente de alimentacion . . . . . . . . . . . . . . . . . . . . . 77

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


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

6.7. Forma de onda de V e I al alimentar M1 y usando un snubber de 100F/250V


y 2.7/10W. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.8. Forma de onda de V e I al alimentar M1 y usando un snubber de 100F/250V
y 0.5/10W. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6.9. Forma de onda de V e I al alimentar M1 y usando un snubber de 1000F/35V
y 0.5/10W. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.10. Trabajos sobre madera realizados de forma manual para la fabricacion de
guitarras. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
6.11. Orientacion del ultimo eslabon. . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.12. Espacio del angulo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.13. Angulos , y 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
6.14. Robot trabajando con madera. . . . . . . . . . . . . . . . . . . . . . . . . . 97

A.1. Figura que muestra los comandos del control de los motores de pasos. . . . 108

B.1. Especificaciones tecnicas de los motores de pasos. . . . . . . . . . . . . . . . 112


B.2. Especificaciones tecnicas de los motores de pasos. . . . . . . . . . . . . . . . 113
B.3. Especificaciones tecnicas de los motores de pasos. . . . . . . . . . . . . . . . 113
B.4. Especificaciones tecnicas del CI SLA7062M. . . . . . . . . . . . . . . . . . . 114
B.5. Cont. especificaciones tecnicas del CI SLA7062M. . . . . . . . . . . . . . . . 115
B.6. Hoja de datos del CI LMD18200. . . . . . . . . . . . . . . . . . . . . . . . . 118
B.7. Hoja de datos del CI LMD18200. . . . . . . . . . . . . . . . . . . . . . . . . 119

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


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

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


D.2. Circuito impreso de la tarjeta H1. . . . . . . . . . . . . . . . . . . . . . . . . 128
D.3. Tarjeta H1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
D.4. Diagrama esquematico de la tarjeta H2 que se conecta al microcontrolador. 130
D.5. Circuito impreso de la tarjeta H2. . . . . . . . . . . . . . . . . . . . . . . . . 131
D.6. Tarjeta H2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
D.7. El microcontrolador conectado a las tarjetas H1 y H2. . . . . . . . . . . . . 133
Lista de Tablas

3.1. Secuencia con una sola bobina energizada del motor de pasos. . . . . . . . . 30
3.2. Secuencia con dos bobinas energizadas. . . . . . . . . . . . . . . . . . . . . . 31
3.3. Secuencia de medio paso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.4. Modos de Paso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

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

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


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

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

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


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

xv
Lista de Smbolos

V Voltaje en las terminales de un motor de CD.


B Densidad de flujo magnetico.
F Fuerza ejercida sobre un conductor.
I Corriente a traves de un conductor.
l Longitud de un tramo de conductor.
Torque en la espira de un motor.
A Area definida por la forma de un conductor.
Angulo entre el campo magnetico y el conductor.
VCD Voltaje de CD.
Flujo magnetico.
Ton Tiempo de encendido de la senal de PWM.
Tof f Tiempo de apagado de la senal de PWM.
Tper Periodo de la senal de PWM.
DC Ciclo de trabajo de la senal de PWM.
Vprom Voltaje promedio de la senal de PWM.
VL Voltaje en una inductancia.
Vs Voltaje de suministro del puente H.
Vmotor Voltaje promedio en terminales del motor.
Rsn Resistencia del snubber de sobrevoltaje.
Csn Capacitor del snubber de sobrevoltaje.
Dsn Diodo del snubber de sobrevoltaje.
Rc Resistencia que sensa la corriente.
Imed Corriente medida indirectamente por el convertidor analogico digital.

xvii
Lista de Publicaciones

Un resumen del captulo 2 se presento en el artculo:

Diseno y Construccion de un Robot SCARA usando Motores de Pasos y CD


con Escobillas, Omar Rodrguez Paez y Leonardo Romero Munoz. 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

Introduccion

Esta tesis trata sobre el diseno 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 aun 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 comun que se trate de sistemas cerrados,
por lo que no es posible anadir nuevas capacidades.
Para enfrentar este problema se esta desarrollando software y hardware, libre e
independiente, como es el caso de un pequeno 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
2 Captulo 1: Introduccion

funcionamiento y operacion de los dispositivos, circuitos e integrados del 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, meto-
dologa 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 monoto-
na o trabajo forzado. A traves de los anos desde su aparicion, 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 multiples, di-


senado para mover materiales, partes, herramientas o dispositivos especializados a
traves de movimientos programados variables para el desempeno de una gran diversi-
dad 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 3

Los robots se dividen basicamente en dos tipos: manipuladores y moviles. La ma-


yora 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 (ma-
nipulador), sensores de reconocimiento del ambiente, actuadores para moverse, algun ele-
mento terminal (herrramienta) para realizar una tarea especfica y uno o varios contro-
ladores 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 toxicas, 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 clasifi-
car de distintas formas: por su estructura, por su forma de control, por su area de apli-
cacion, por su fuente de potencia, por su geometra, por su movimiento cinematico, etc.
[Spong89, Ramrez98]. Hoy en da, los manipuladores estan agrupados en clases de acuerdo
a la combinacion de uniones usadas en su construccion [Petriu06], y son usualmente cla-
sificados 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
4 Captulo 1: Introduccion

cualquier posicion dentro de su espacio de trabajo rectangular a traves de movimientos car-


tesianos 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 coorde-
nadas polares o esfericas (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 anadir 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

Alcance horizontal
Alcance horizontal maximo
Topes de minimo
Espacio de trabajo movimiento

(a) Cartesianas (PPP) (b) Cilndricas (RPP)


Barrido alrededor
de la base

Giro vertical
alrededor del
hombro

Giro alrededor
de la base
Trazo
Alcance
horizontal horizontal

(c) Esfericas o polares (RRP) (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 5

(a) Vista lateral (b) Vista superior (c)


Area de trabajo tpi-
ca de un robot SCA-
RA

Figura 1.2: Configuracion tpica de un robot SCARA y su respectiva area de trabajo


[Rosen06, Solutions06].

En 1979 el diseno 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 so-
bre su propio eje en el plano Z, denominado comunmente rotacion de muneca (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 ca-
ractersticas de un brazo humano, por lo que tambien se denominan brazos articulados. Esta
caracterstica permite al manipulador extenderse hasta areas confinadas y despues reple-
garse. 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
6 Captulo 1: Introduccion

comerciales.

(a) SCARA JRS 4400 de JANO- (b) SCARA de IntelliSpen- (c) SCARA Ki-
ME [Com06a]. ce Inc.[Solutions06]. NEDEx de
Peak 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 Adept [Technology]
[Robotics06a] [Robotics06a] [Robotics06a]

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 compo-
nentes, envasar, empaquetar, pintar en spray, soldar, perforar, rellenar, recubrir, atornillar,
etc. [Actuator06, Yamaha06, Wikipedia06, Salimian06, Brumson06]. Son ampliamente uti-
lizados 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 7

lar), montaje de automoviles, fibra optica, medicina (equipo medico quirurgico), pintura y
alimentos, entre otras.

Resolucion, precision 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.

Resolucion: 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 analogica-
digital y digital-analogica.

Precision: Se entiende por precision, la diferencia entre la posicion ordenada y la real-


mente 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, obvia-
mente muy importante en robotica industrial, en la cual el robot debe repetir un gran
numero de veces la misma operacion en distintas piezas. La falta de repetibilidad
se debe normalmente a problemas mecanicos en transiciones, rozamientos, histeresis,
zonas muertas etc.

Los robots SCARA comerciales poseen muchas caractersticas optimas para labo-
rar dentro de las industrias, dentro de las cuales, se resumen a continuacion las mas des-
tacables [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, comunmente, se encuentra


entre 0.01 mm. y 0.02 mm.
8 Captulo 1: Introduccion

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


los mas pequenos 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 mas uniones del robot.

Controlador. El controlador de estos robots es por lo general de tipo digital, comunmen-


te 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 Diseno e implementacion
1.2. Objetivo de la tesis 9

del control de un brazo manpulador SCARA documenta el diseno 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 Munoz desde su trabajo de tesis doctoral [Romero01, Romero04b], el
trabajo de tesis de licenciatura de Antonio Concha [Concha07] Diseno y construccion de
un robot movil, los trabajos de tesis de maestra [Ramrez98], [Arellano05] y [Estrada06]
titulados Diseno y construccion de un manipulador con dos grados de libertad y orientacion
del efector final, Reconstruccion tridimensional de ambientes interiores utilizando un robot
movil equipado con un telemetro laser y Diseno de un sistema de control de seguimiento
de trayectorias para un robot movil, respectivamente; as como los trabajos realizados por el
autor de esta tesis durante el desarrollo de las Practicas Profesionales, referentes al Diseno,
implementacion y pruebas de elementos electronicos orientados a la construccion de un brazo
manipulador SCARA. Este trabajo representa una continuacion de los trabajos realizados
en la FIE: se disena 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; haciendo todo el
diseno y la construccion de los circuitos controladores, la fuente de alimentacion, realizando
todas las conexiones y cableado y algunas pruebas de desempeno; de manera que el robot
construido sea accesible a medianas y pequenas empresas. Se pretende que este robot apoye
a la fabricacion de guitarras en Paracho Mich.
10 Captulo 1: Introduccion

1.3. Justificacion

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 pequenas y medianas empresas puedan disponer de el, ampliarlo,
mejorarlo. En el estado de Michoacan existe una gran cantidad de pequenas 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. Organizacion 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 es-


cobillas, 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.
1.4. Organizacion del documento 11

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.

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


Captulo 2

El robot SCARA

Se presenta en este captulo el robot SCARA construido, describiendo su arqui-


tectura, as como las caractersticas y el funcionamiento de sus componentes principales:
estructura fsica, motores, sensores, fuente de alimentacion y microcontrolador. De esta ma-
nera 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 pequena compana 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 utiles 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 muneca) 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 senales 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).
2.2. Motores 15

(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 exac-
titud 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

numero total de pasos que avanza el motor, as como el numero de revoluciones que gira el
motor [Wildi02]. 1

Circuito de Motor
Microcontrolador control 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 carac-
tersticas 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 ningun
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 diseno y funcionamiento del controlador y la tecnica utlizada.

2.3. Sensores

De acuerdo a [Jones98], un sensor es un transductor que convierte algun fenomeno


fsico en senales 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 logica 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].
2.3. Sensores 17

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

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


flecha del motor para nuestro caso. La senal entregada por este dispositivo sensor puede ser
de dos tipos [Jones98]: (1) un codigo que corresponde a una orientacion en particular del
eje (odometro absoluto), o (2) un tren de pulsos (odometro 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 senales (denominadas A y B), se
puede conocer el sentido de rotacion. Ademas de estas dos senales, tambien existe una
18 Captulo 2: El robot SCARA

tercera senal (senal 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 senales generadas por el odometro 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: Senal en cuadratura generada por el odometro.

(a) Imagen de la cabeza lec- (b) Imagen del montaje del enco-
tora, 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.3. Sensores 19

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

+5V

10 K
10 K
Microcontrolador

S1 Nc

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

En estado de reposo, la terminal comun (C) y la de reposo (R) estan en contacto


hasta que la fuerza aplicada a la palanca hace saltar la pequena 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 dispo-
sitivo 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 micro-
controlador. 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 ac-
cionado el switch, el microcontrolador recibe 5V. Las resistencias de 10K son usados para
20 Captulo 2: El robot SCARA

proteger al microcontrolador.

2.4. Fuente de alimentacion

Figura 2.10: Fuente de alimentacion construida.

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
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 transfor-
mar 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
2.5. Microcontrolador 21

(microcontrolador, encoders y sensores de lmite). La fuente de alimentacion se describe en


la seccion 5. La Figura 2.10 muestra una imagen de la fuente de alimentacion construida.

2.5. Microcontrolador

HCS12CPU

2 x SCI 256K FLASH

3 x SPI IIC 12K RAM 4K EEPROM

ATD0 ATD1
V reg 5V to 2.5V 8 ch, 10bit 8 ch, 10bit
Internal Bus

16key Wakeup
IRQ Ports Enhanced Capture Timer
8 ch, 16bit

5 x CAN
2.0 A/B PWM
8 ch, 8bit / 4 ch, 16bit

(a) Diagrama de bloques (b) Modulo Adapt9S12DP256

Figura 2.11: Diagrama de los principales bloques e imagen del modulo Adapt9S12DP256
del microcontrolador 68hcs12 [Arts04].

El microcontrolador es el dispositivo mas sofisticado del robot, el cual proporciona


ventajas utiles en cuanto a versatilidad, consumo de energa, tamano y facilidad de uso. Pero
sobre todo, el microcontrolador introduce una herramienta muy poderosa en la solucion de
multiples problemas de diseno 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 periferi-
cos 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 comuni-
cacion 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 modu-
lacion 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
22 Captulo 2: El robot SCARA

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.
Ademas 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 multiples tareas entre las cuales se encuentran pro-
porcionar 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. Al final del captulo la Figura
2.13 se muestra algunas imagenes de la caja que aloja al microcontolador y los controladores
de los motores de CD y de pasos.

2.6. Esquema de conexion

Figura 2.12: Diagrama de bloques del esquema de conexion.

La Figura 2.12 muestra el esquema de conexion del robot a manera de diagrama


de bloques.
2.7. Resumen 23

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 senales necesarias a los controladores de los motores.

2.6.1. Programacion

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 disenadas 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 multiples prototipos de robots
moviles [Arellano05, Estrada06, Concha07] a cargo del Dr. Leonardo Romero Munoz 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.7. Resumen

En este captulo se presento el diseno 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 disenada y construida por Cervantes Co., una pequena compana en Pa-
racho, Mich. dedicada al diseno, construccion, comercializacion y distribucion de robots.
24 Captulo 2: El robot SCARA

(a) Vista superior del microcontrolador dentro de la caja que


aloja los circuitos de control.

(b) Vista de lado del microcontrolador y los controladores de


los motores.

Figura 2.13: Imagenes de la caja construida que aloja al microcontrolador y a los contro-
ladores de los motores de CD y de pasos, tambien se pueden observar los dos Snubbers de
sobrevoltaje. Vease 3.5.3.
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 diseno 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 fun-

25
26 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 alimentacion 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 energiza-


dos los devanados, y estos pueden ser U nipolar o Bipolar. Enseguida se describe brevemente
estas formas de operacion.
3.1. Tipos de motores pasos 27

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 describira con
mayor detalle enseguida. La Figura 3.2 muestra este esquema.

B B

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 diseno 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].
28 Captulo 3: Controlador de los motores de CD de pasos

A com

B B com B

Figura 3.3: Arreglo unipolar de un motor de pasos.

3.2. Operacion 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
Rojo
Bobina 1

Negro
Bobina 2
Rojo /
blanco A
B B
Blanco

Verde /
Verde

blanco

Figura 3.4: Cables y bobinas del motor de pasos.

Para hacer girar el motor de pasos se requiere cambiar la direccion de flujo magneti-
co 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
3.3. Metodos para excitar los motores de pasos 29

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 A B B
Bobina 1 Bobina 2
S1 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.
Si se dejan de energizar las bobinas A y B, el rotor permanecera alineado con el ultimo
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. Metodos para excitar los motores de pasos

Hay tres metodos comunmente 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
senales senoidal y cosenoidal. A continuacion se van a describir estas secuencias. Se mos-
traran 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
30 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. Metodo 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 so-
la 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 Bobina A Bobina B Bobina A Bobina B
1 1 0 0 0
2 0 1 0 0
3 0 0 1 0
4 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
3.3. Metodos para excitar los motores de pasos 31

paso 1 paso 2 paso 3 paso 4


S N

N S
S N S N S N S N S N

N S

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 Bobina A Bobina B Bobina A Bobina B
1 1 1 0 0
2 0 1 1 0
3 0 0 1 1
4 1 0 0 1

paso 1 paso 2 paso 3 paso 4


S N N S

N S S N
N S S N N S S N N S N
S
N S S N

Figura 3.8: Secuencia con dos bobinas energizadas.


32 Captulo 3: Controlador de los motores de CD de pasos

2. Metodo 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 Bobina A Bobina B Bobina A Bobina B
1 1 0 0 0
2 1 1 0 0
3 0 1 0 0
4 0 1 1 0
5 0 0 1 0
6 0 0 1 1
7 0 0 0 1
8 1 0 0 1

paso 1 paso 2 paso 3 paso 4


S S N

N N S
S N S S N S N S N N S

N N S
paso 5 paso 6 paso 7 paso 8
N N S

S S N
N S N N S N S N S N
S

S S N

Figura 3.9: Secuencia de medio paso.


3.3. Metodos para excitar los motores de pasos 33

3. Metodo de micropasos.

El control por micropasos se obtiene haciendo que existan mas 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 numero 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 numero 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 pequenos, 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
34 Captulo 3: Controlador de los motores de CD de pasos

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

I1=I MAXcos I1= Corriente en la bobina 1


I2= Corriente en la bobina 2
IMAX = Corriente nominal de
S
la bobina
N N S
I2=I MAXsen S I2=I MAXsen
N

I1=I MAXcos

Figura 3.11: Metodo de micropasos.

3.4. Operacion 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 desempeno 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].
3.4. Operacion a alta velocidad 35

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

t=t1 dI (t=0) = V
dt L

I MAX = V

Corriente
Bobina del motor
R
R
63%
V +
dI (t=t1) = V
dt L
L 63%

e t=t1 tiempo

(a) Modelo de la bobina de un motor de pasos. (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 funcion del tiempo (t) crece acorde a la ecuacion:

 
V R
I(t) = (1 et L ) (3.1)
R
Inicialmente la corriente crece con una velocidad dada por:

dI V
(t = 0) = (3.2)
dt L
Esta velocidad decrece conforme la corriente se acerca a su valor maximo o final:

V
IM AX = (3.3)
R
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.
36 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:

 
V R
I(t) = (e(tt1 ) L ) (3.4)
R
La velocidad instantanea 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. Se muestra a continuacion el compor-
tamiento de la corriente a tres frecuencias distintas. La Figura 3.13(a) muestra la forma
de onda de la corriente cuando se tiene una frecuencia del voltaje bajo. Arriba de una
cierta frecuencia (Figura 3.13 (b)), la corriente apenas alcanza su valor maximo y a una
frecuencia aun mayor (Figura 3.13 (c)), la corriente nunca alcanza su valor maximo. 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].
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].
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
3.4. Operacion a alta velocidad 37

(a) La corriente permanece en su valor maximo por


algun tiempo.

(b) La corriente apenas llega a su valor maximo.

(c) La corriente no puede alcanzar su valor maximo.

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

de subida de la corriente se reduce y por lo tanto el desempeno 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
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 desempeno 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].
El tiempo en que la potencia se cambia de una fuente a la otra puede ser controlado
38 Captulo 3: Controlador de los motores de CD de pasos

R
I MAX = V = 2V

Corriente
R 2R
e2 = L

Bobina del motor


2R
V + R
63% e1 = L
R
V + L

e2 e1 tiempo

(a) Modelo de la bobina con resistencia adicional. (b) Corriente vs tiempo.

Figura 3.14: Resistencia en serie con la bobina.

t on
Bobina del motor

V + R
V +
V + L

(a) Dos voltajes de suministro. (b) Corriente vs tiempo.

Figura 3.15: Dos suministros de potencia.

por un sistema de lazo cerrado o de lazo abierto. Para el control en lazo cerrado se utiliza
una pequena 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 situa-
ciones anteriormente descritas:

1. Utilizando el voltaje nominal (curva 1).

2. Utilizando un alto voltaje (dos veces el nominal) con una resistencia de potencia (curva
3.4. Operacion a alta velocidad 39

2).

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. Modulacion 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 senal generada tiene una
frecuencia fija y tiempos de encendido y apagado (activado y desactivado) variables. En
otras palabras, el periodo de la senal 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 alimentacion 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 senal de alimentacion al motor. El ciclo de trabajo DC (del
ingles Duty Cycle) de la senal 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 pequeno (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
senal de alimentacion del motor V es posible controlar el voltaje promedio aplicado Vprom .
40 Captulo 3: Controlador de los motores de CD de pasos

Ton Toff Ton Toff

V V

Vprom
Vprom
Tper t Tper t

(a) Senal modulada con un ciclo de tra- (b) Senal modulada con un ciclo de tra-
bajo del 25 %. bajo 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].

Para controlar motores a altas frecuencias con PWM es conveniente que los inte-
rruptores para conectar o desconectar el suministro de voltaje sean implementados mediante
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 .
3.4. Operacion a alta velocidad 41

Corriente en la bobina
I MAX

tiempo

Voltaje de suministro
Toff Ton

tiempo

Figura 3.17: Corriente y voltaje en la bobina utilizando el control chopper. Al inicio el ciclo
de trabajo de la senal de PWM es de 100 % y despues este ciclo se modifica para limitar la
corriente 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
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 senal 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 pequena 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 comunmente entre 0.5 y 1.
Un hecho interesante del circuito chopper de la Figura 3.18 es que la bobina 1
42 Captulo 3: Controlador de los motores de CD de pasos

Figura 3.18: Circuito chopper.

actua 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
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 actuan como diodos zener y limitan el sobrevoltaje. El voltaje maximo
de los Mosfets debe ser significativamente mas alto que 2Vs [SILICON04]. Cabe senalar 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
3.5. Controlador de los motores 43

se quisiera.
Para controlar a los motores de pasos del robot SCARA mediante el control chop-
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 necesa-
ria 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 esquemati-
co 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 senal 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 senales 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.
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 senalar que el voltaje Vref se limita
a 1V, para limitar Iout a 1.87A e Iave a 1.47A.
El maximo numero de pasos por segundo con que pueden ser operados los motores
depende de la carga. Para mayor carga un bajo numero de pasos por segundo es permitido y
viceversa. Si aumenta la carga de los motores es posible que se pierdan pasos si se controlan
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 llamara Iout . En tanto, a la
corriente promedio o de cd que circula por las bobinas se le llamara Iave
44 Captulo 3: Controlador de los motores de CD de pasos

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

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). Cabe mencionar que
en el circuito que se construyo se dejaron entradas y salidas para las senales del encoder,
sin embargo despues de realizar algunas pruebas de presicion al robot, se decidio que no era
necesario el uso de encoders para los motores de pasos por la buena prescion que se obtuvo.
Enseguida se describen brevemente las caractersticas del CI SLA7026M y el con-
vertidor D/A.

3.5.1. Circuito integrado SLA7062M

En la Figura 3.21 se muestra una imagen del CI SLA7062M, 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 disenado para operar este tipo de motores en medio, un cuarto,
3.5. Controlador de los motores 45

LM2940
1 OUT 3 +

+5V
IN

2.7K

2.7K

2.7K
GND -
0.47uF 2 100uF A
B
I

10K

10K

10K
+5V
+ A
- Senales de salida
B
del encoder hacia
I
Entrada de 5V el microcontrolador
24V Cargas
constantes (CC) 24V
(CC)
1N4007 1N4007
+ SLA7062M
16 VBB OUTA 1
-
6 2

+5V
1N4007 VDD OUTA
Entrada para la 10K 10K
7 VREF OUTA 3
alimentacion del A A
0.47uF 8 RESET OUTA 4 24V
SLA7062M Motores
9 CW/CCW OUTB 20 B B
0.47uF

10 CLOCK OUTB 21
Senal
12 M2 OUTB 18
de PWM Vref
13 M1 OUTB 19
Reset
Microcontrolador

Unipolar Stepper
14 M0

Motor Controller
Senales digitales

DIR 24V Motores


15 SYNC
de control

Clock
5 SENSEA +
M2
17 SENSEB -
M1 10K 11 GND
M0 Entrada para la
alimentacion de
Sync
24V de los motores

RSA =0.533/9W RSB =0.533/9W

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

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 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 logica CMOS ademas
de establecer el tamano 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 senal de corriente y tiene
un alto cada 90 .
La Figura 3.22 muestra el diagrama de bloques del CI SLA7062M. Cuenta con
46 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 M2 Modo de Paso
H H Medio paso
H L Un cuarto de paso
L H Un octavo de paso
L L Un dieciseisavo de paso

un circuito (circuito sequencer ) que recibe las senales para definir el tamano de paso (M1,
M2), la senal de reloj(Clock), la alimentacion de 5V y la senal de reseteo . Este circuito
manda una de las senales de control del circuito chopper que reciben los pre-controladores
los cuales controlan la conmutacion de los mosfets; la otra senal de control que reciben los
pre-controladores se obtiene del resultado de la comparacion del voltaje de referencia y el
voltaje que se sensa a traves de una resistencia mediante un circuito de control PWM.
Una descripcion detallada de este circuito se puede encontrar en [Allegro MicroSystems07]
y la hoja de datos se encuentra en el appendice B.2.
Al final del captulo, la Figura 3.27 muestra las senales de reloj y la forma de onda
de la corriente para medio paso, un cuarto de paso, un octavo de paso y un dieciseisavo de
paso; tomadas de las hojas de datos del CI SLA7062M.

3.5.2. Convertidor digital-analogico

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 senal 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.23 (a)). La senal de PWM tiene una
3.5. Controlador de los motores 47

Figura 3.22: Diagrama de bloques del circuito integrado SLA7062M


[Allegro MicroSystems07].

frecuencia fija de 44KHz, cuyo ciclo de trabajo se varia de 0 a 255 2 para ajustar Vref al valor
deseado. La funcion del filtro pasabajas es remover los componentes de alta frecuencia de la
senal de PWM y dejar solamente los componentes de baja frecuencia (CD) (ver Figura 3.23
(b)). Dicho filtro tiene una frecuencia de corte fc de 33.86Hz (fc = 1/2RC). La funcion
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, este se conecta en paralelo con la fuente de alimentacion y la entrada de su-
ministro de energa de los motores. La Figura 3.24 muestra el diagrama de un snubber de
sobrevoltaje RCD y a continuacion se explica su funcion y clasificacion.

2
Un valor de 0 significa un ciclo de trabajo del 0 % y un valor de 255 significa un ciclo de trabajo del
100 %.
48 Captulo 3: Controlador de los motores de CD de pasos

Limitador de voltaje
1N4004 1N4004

1N4004 SLA7026M
Senal de PWM del
microcontrolador

10K 10K 2.7K


Vref
+
-
0.47uF 0.47uF

(a) Componentes del convertidor D/A.


Vref
5V 5V
Filtro
pasabajas
analgico

0 t 0 t

(b) Filtrado de la senal de PWM para obtener


Vref .

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

Funcion y clasificacion

La funcion 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.
3.5. Controlador de los motores 49

Inductancia de los cables


de la fuente de alim.

+
24V Rsn Dsn

Alim. 24V Motores
Fuente
de alim.
Csn

Figura 3.24: Snubber de sobrevoltaje RCD.

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.

Los snubbers no son parte fundamental de un circuito de potencia, sin embargo


adiciona al circuito para realizar alguna de las tareas mencionadas anteriormente. Pueden
50 Captulo 3: Controlador de los motores de CD de pasos

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 transis-
tores o dispositivos de interrupcion para condicionar su trayectoria de conmutacion. Esta
clasificacion incluye los siguientes tres tipos:

1. Snubbers de apagado. Para evitar los problemas que se presentan al apagar dispo-
sitivos 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 ultima 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.
Para nuestro caso se utiliza un snubber de sobrevoltaje RCD para absorber la
energa procedente de las inductancias parasitas de los cables de la fuente de alimenta-
cion durante el proceso de conmutacion de los mosfets; de esta manera se reduce el voltaje
transitorio pico a traves de los mosfets durante las conmutaciones. Existe una pequena
inductancia entre los cables de la fuente de alimentacion y los puentes de mosfets del con-
trolador, de manera que cuando la corriente se interrumpe subitamente, 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
3.5. Controlador de los motores 51

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 dano 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.25 muestra el voltaje Vp (voltaje de alimentacion) sin snubber; en este caso se tiene
un pico grande de voltaje con una oscilacion prolongada. La Figura 3.26 muestra Vp con
snubber; en este caso el pico de voltaje disminuye y la oscilacion es corta.
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 explican las pruebas que se ralizaron para determinar
los mejores valores de los elementos del snubber de sobrevoltaje para cada motor de pasos.

60V

Apagan los Encienden


Mosfets los Mosfets

(a) Vista que muestra las transiciones de Vp en (b) Una vista de cerca de Vp cuando se apagan
el encendido y apagado de los Mosfets. los Mosfets.

Figura 3.25: Forma de Vp sin snubber.


52 Captulo 3: Controlador de los motores de CD de pasos

Apagan los Encienden


Mosfets los Mosfets
AB

(a) Vista que muestra las transiciones de V p en (b) Una vista de cerca de Vp cuando se apagan
el encendido y apagado de los Mosfets. los Mosfets.

Figura 3.26: Forma de Vp con snubber.

3.6. Resumen

En este captulo se mostro el principio de funcionamiento de los motores de pasos


unipolares, se presento el diseno 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 pequenos 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.
3.6. Resumen 53

(a) 1/2 paso (b) 1/4 de paso

(c) 1/8 de paso (d) 1/16 de paso

Figura 3.27: Forma de onda de corriente para 1/2, 1/4, 1/8 y 1/16 de paso
[Allegro MicroSystems07].
Captulo 4

Controlador de los motores de CD

El robot SCARA utiliza tambien motores de cd con escobillas, estos son los encar-
gados del eje theta-z (rotacion de muneca) 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 diseno del circuito del controlador desarrollado para motores de cd de [Ros07] de-
bido 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. Operacion 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 nucleo 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 [Urena06]. Se tiene un
~ y en medio de este se encuentra un cuadro rectangular
campo magnetico fijo e invariante B
~
conductor (rgido) a traves del cual circula una corriente I.



F
l I
nl
B
B
F
F F F
F A
l
nl I
I

(a) Fuerza y par sobre un circuito. (b) Vista en direccion de la corriente.

Figura 4.2: Principio de funcionamiento de un motor de CD [Urena06].

La relacion de Lorentz enuncia lo siguiente: La fuerza mecanica sobre un conductor


con corriente dentro de un campo magnetico es:
4.1. Operacion de los motores de CD 57

~ B
F~ = Il ~ (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 actua
una fuerza de igual magnitud y direccion, pero en sentido opuesto. Las fuerzas que actuan
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 ningun 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)

~ es el area vectorial definida por el cuadro, con magnitud A y direccion perpendicular


donde A
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, comunmente 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 alimentacion 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 continue 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 [Urena06].

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 odometro 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 mo-
tor 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 comun que se utiliza para controlar la
4.2. Puente H 59

Escobilla

er
cod
En

r
oto
M

s
rane
ng
dee
Caja

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 comun 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 alimentacion 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 comun 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 Motor
de Voltaje

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 desempeno del motor o del sis-
tema, 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 pequena (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 alimentacion (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 alimentacion (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 senales 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 comun 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 continuacion 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 S1 S3

iL iL Diodo
antiparalelo +
V Motor
A

S2 S4

(a) La corriente en (b) El diodo crea un camino (c) Puente H con un diodo en antiparalelo en
un inductor no para la corriente inducti- cada interruptor.
puede interrum- va cuando el interruptor es
pirse subitamen- abierto.
te.

Figura 4.6: Interrupcion 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 pequena 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 simultaneamente. 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
alimentacion, 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 alimentacion 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 senal 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 desempeno 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, el cual se usa para controlar los motores
de CD.
Se han explicado con detalle la manera en que opera un motor de CD, su funcio-
namiento, 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
64 Captulo 4: Controlador de los motores de CD

contiene un puente H con dispositivos DMOS para controlar el motor, y un circuito que
monitorea las senales 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 desempena la funcion 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 senales 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
4.4. Controlador de los motores de CD 65

las senales de salida de los canales del encoder. El snubber o amortiguador de sobrevoltaje
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 fun-
cional 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.


66 Captulo 4: Controlador de los motores de CD

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


cheadores DMOS de potencia, con diodos en antiparalelo, conectados en configuracion de
puente H. Entre sus caractersticas unicas 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 maxi-
ma 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.

Operacion 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 senales 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.
4.4. Controlador de los motores de CD 67

LMD18200

A1 B1

+ A B
VS Motor

A2 B2

Figura 4.10: Esquema del CI LMD18200.

PWM Dir Brake Interruptores activos


H H L A1,B2
H L L A2,B1
L X L A1,B1
H H H A1,B1
H L H A2,B2
L X H NINGUNO

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

Control completo anti-fase

Este metodo funciona de acuerdo a lo descrito en la seccion 4.3 como esquema 2


de PWM. Con una senal PWM de entrada al CI, los pares de interruptores diametralmente
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 senal 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 senal de control
68 Captulo 4: Controlador de los motores de CD

LMD18200
+5V
PWM
A1 B1


Logica
DIR
+ A B
de VS Motor
Control

BRAKE A2 B2

Figura 4.11: Senales de control y esquema de conexion para implementar la tecnica control
completo anti-fase en el CI LMD18200.

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,
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 senal 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
4.4. Controlador de los motores de CD 69

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.

Control signo/magnitud

El CI LMD18200 tambien soporta directamente la tecnica de control PWM de-


nominada control signo/magnitud. Esta tecnica consiste en mantener encendido uno de los
interruptores superiores del puente H, mientras se aplica una senal 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 senal PWM complementaria a los interruptores A1 y A2. La magnitud del vol-
taje promedio en el motor depende del DC de la senal 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
senal 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 senal 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 senal PWM.

El nivel logico 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 alimentacion, con lo cual se determina la direccion en que fluye la corriente a traves del
motor. El DC de la senal aplicada a la entrada PWM ajusta el voltaje promedio aplicado
70 Captulo 4: Controlador de los motores de CD

LMD18200

PWM
A1 B1


Logica
DIR
+ A B
de VS Motor
Control

BRAKE A2 B2

Figura 4.12: Senales de control y esquema de conexion para implementar la tecnica control
signo/magnitud en el CI LMD18200.

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
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 senal 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
senales para controlar el CI LMD18200. La senal aplicada a la entrada Direction con-
trola 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 senal PWM que recibe. Como
ya se explico, un DC del 100 % representa aplicar el voltaje Vs al motor, mientras que la
ausencia de la senal modulada en la entrada PWM representa cero conduccion.
Despues de explicar los dos tipos de control PWM mas comunes se desea resaltar
4.4. Controlador de los motores de CD 71

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
del CI LMD18200. As, para los dos motores de CD se le anade un snubber de sobrevoltaje
en paralelo a la alimentacion de los motores.
A continuacion se explica el circuito usado para monitorear las senales de los
encoders utilizados con los motores de CD.

4.4.2. Circuito que monitorea las senales del encoder

La Figura 4.13 muestra el circuito que monitorea las tres senales 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 senales 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 R=10K
I
de voltaje
Seales del
B
encoder
A haia el micro

Figura 4.13: Diagrama del circuito electronico que monitorea las senales 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 algun falso contacto con un
punto que se encuentre a un potencial mas alto.
Finalmente, cada senal de salida de los canales del encoder del motor se monitorea
por una terminal de entrada digital del microcontrolador.
72 Captulo 4: Controlador de los motores de CD

La Figura 4.14 muestra una imagen del circuito de los controladores de los motores
de CD.

Figura 4.14: Imagen del circuito controlador de los motores de CD con escobillas.

4.5. Resumen

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


con escobillas de los dos ultimos ejes del robot SCARA. Primeramente se explico el princi-
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 me-
diante un esquema de PWM los motores, exponiendo su diseno, 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 senales de los canales de los encoders como retroalimentacion para el control
de los motores.
Captulo 5

Fuente de alimentacion

En este captulo se describen las caractersticas de la fuente de alimentacion cons-


truida 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 vol-
taje 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 la cual cuenta con 2 fusibles de proteccion, una de 10A y otra de 2A. Consta de 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 alimentacion 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.

A continuacion se explican los circuitos integrados LM338 y L7805.

73
74 Captulo 5: Fuente de alimentacion

5.0.1. Circuito regulador de voltaje ajustable LM338

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

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. Cabe mencionar que en el circuito que se
construyo, fue necesario usar una resistencia de 1K entre la tierra y la resistencia variable
R2 para evitar tener un voltaje menor a 1.2V; un voltaje menor causaba que se quemara el
circuito. Tambien se debe de resaltar que los capacitores usados son de tantalio debido a que
75

mantienen una baja impedancia aun a altas frecuencias, los cuales recomienda el fabricante.

Figura 5.2: Circuito de dos fuentes de 24 V.

5.0.2. Circuito regulador de voltaje L7805

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

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 anade un disipador de calor. En el apendice C se muestra la
76 Captulo 5: Fuente de alimentacion

Figura 5.4: Circuito de la fuente de 5V

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.
Al final del captulo la Figura 5.5 muestra algunas imagenes de la fuente de ali-
mentacion construida.

5.1. Resumen

En este captulo se presento la fuente de energa del robot SCARA, se compone de


4 fuentes de 24V y una de 5V. Los circuitos cuentan con las caractersticas suficientes para
proporcionar la corriente demandada por todos los componentes del robot. Las fuentes de
24V que se construyeron con los circuitos LM338 tienen la capacidad de operar a un voltaje
mayor de 24V sin embargo la corriente maxima que se le puede demandar es de 5A, por lo
tanto si se decidiera cambiar los motores por unos de mayor capacidad, se necesitara una
fuente que pudiera entregar la corriente demandada por los nuevos motores.
5.1. Resumen 77

(a) Vista lateral de la fuente de alimentacion

(b) Vista superior de la fuente de alimentacion

Figura 5.5: Imagenes de la fuente de alimentacion construida.


Captulo 6

Pruebas y resultados

La manera de determinar la eficiencia del desempeno del robot construido se rea-


lizo mediante pruebas asociadas a cada una de sus partes de manera individual y poste-
riormente operando al robot con la totalidad de sus partes de manera simultanea. En este
captulo se presentan los diversos aspectos que implica el diseno y la construccion de un
robot SCARA. Se expone el problema que se tuvo con el diseno de la fuente de alimentacion
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 senales 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. Diseno de la fuente de alimentacion y pruebas realizadas

En esta seccion se explican algunos problemas que se tuvieron con la fuente de


alimentacion y se muestran algunos esquemas que se probaron y otros investigados antes
de arribar al diseno 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.

79
80 Captulo 6: Pruebas y resultados

6.1.1. 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 alimentacion del robot SCARA.
En la hoja de datos del LM338 se muestran algunos disenos, entre ellos un re-
gulador 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 intento 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 diseno de una fuente conmutada. Una fuente conmutada es un dispositivo electronico
6.1. Diseno de la fuente de alimentacion y pruebas realizadas 81

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 nucleo de ferrita (Los nucleos 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 tamano 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.
82 Captulo 6: Pruebas y resultados

La salida se mantiene estable aun con grandes variaciones de la tension de entrada.

Se pueden lograr multiples 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 alimentacion 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. Diseno de la fuente de alimentacion y pruebas realizadas 83

6.1.2. Pruebas realizadas a la fuente de alimentacion 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 deman-
dar una corriente de 4.7 A, la senal 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 senal 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 ade-


cuado de los snubbers de sobrevoltaje. Inicialmente se probo con diferentes valores de capa-
citores 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 observar la forma de onda de voltaje y medir la corrien-
te, 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 origi-
nado 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 mediante prueba y error que el valor mas adecuado para
la resistencia del snubber era alrededor de 1/10W se observo que el valor de voltaje ya
84 Captulo 6: Pruebas y resultados

no descenda sino que se mantena cerca de 24V y se utilizo el capacitor de 100F /250V.
Para el motor M1 se noto una pequena 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. Todas las imagenes que se muestran a
continuacion fueron tomadas con la misma escala del osciloscopio.
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 pequeno pico de corriente
negativa y se estabiliza durante un tiempo pequeno 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 au-
menta 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 mas 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 resisten-
cia de 1 y el mismo capacitor. Ahora la forma de onda de voltaje tanto en reposo como
en movimiento se mantiene de manera estable alrededor de 30V. Donde s hay un cambio
6.1. Diseno de la fuente de alimentacion y pruebas realizadas 85

(a) M0 en reposo. (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.

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 pequenos
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 consi-
dero 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.
86 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. Todas las imagenes que se muestran a continuacion fueron
tomadas con la misma escala del osciloscopio.
La Figura 6.6 muestra el comportamiento tanto del voltaje como de la corriente
de la fuente de alimentacion 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
6.2. Pruebas realizadas al CI SLA7062M 87

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

voltaje LM338 ahora aumenta hasta los 90 C.


Se encontro mediante prueba y error que el valor mas adecuado para la resistencia
es de 0.5, lo cual se 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 cons-


truir el circuito del microcontrolador y hacer las pruebas con este. Se construyo un circuito
88 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.

sencillo utilizando un CI 555 como un oscilador para generar un PWM y se selecciona-


ron las entradas de direccion, voltaje de referencia y los de tamano de paso (M1, M2) del
SLA7062M. Con diferentes valores de resistencia se genero una senal PWM a diferentes
frecuencias el cual se uso para la entrada de reloj del CI SLA7062M. 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 sien-
do 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 con-
troladores de los motores, los cables de los sensores de contacto y los encoders de los motores
6.3. Microcontrolador y pruebas de software 89

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

de CD; todos hacia el microcontrolador, y se probo que las senales mandadas y recibidas por
este fueran las adecuadas. Se utilizo el puerto A del microcontrolador para las senales 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 senales del controlador del motor M 1. Para la senal
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 senales Brk y PWM
de M 2 y M 3 respectivamente. Para la senal Dir de los controladores de estos motores se
uso el puerto PP o PWM. Para las senales 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.
Es importante mencionar que dos pines del puerto P del microcontrolador estaban
danados y de esta manera el micro estaba consumiendo una mayor corriente, 205mA, y al
deshabilitarlo este consuma solamente 117mA, disminuyendo tambien su temperatura.
Posteriormente se hicieron pruebas de comunicacion; esto se hizo utilizando el
programa serial (apendice E) el cual establece una comunicacion a traves del puerto serie
o RS232 entre la PC y el microcontrolador.
Despues se verificaron las senales 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
90 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.

Tabla 6.1: Conexiones del Microcontrolador.

Pin Puerto A Puerto B Puerto H Puerto P Puerto T


0 M1 motor0 Switch motor0 M1 motor1 PWM(Vref) motor0 A encod motor2
1 M2 motor0 Switch motor1 M2 motor1 PWm(Vref) motor1 B encod motor2
2 Dir motor0 Switch motor2 Dir motor1 Danado A encon motor3
3 Sync motor0 Switch motor3 Sync motor1 Danado B encod motor3
4 Clock motor0 libre Clock motor1 Dir motor2 I encod motor2
5 Reset motor0 libre Reset motor1 Dir motor3 I encod motor3
6 Brake motor3 libre Brake motor2 libre libre
7 PWM motor3 libre M1 motor2 libre libre

para cada motor. Despues se probaron los encoders comprobando que cuando estos giraran
en un sentido, el microcontrolador detectara los cambios de las senales A y B, y cuando
cada motor diera una vuelta completa el microcontrolador lo contabilizara usando la senal
I.
Una vez realizado todo lo anterior se prosiguio a operar los controladores de los
motores dandoles las senales necesarias desde el microcontrolador. Se probo el funciona-
miento de los motores de pasos mandando las senales 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
6.4. Pruebas del robot realizadas sobre madera 91

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

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

Debido a que se pretende que la construccion de robots SCARA ayuden en la fa-


bricacion de guitarras de Paracho, 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. Las Figura 6.10 muestra algunas imagenes de algunos trabajos sobre
madera que son realizados de forma manual y que el robot podra realizar.
92 Captulo 6: Pruebas y resultados

(a) Rebajado de la tapa (b) Trabajo en las barras de la tapa 1

(c) Trabajo en las barras de la tapa 2 (d) Trabajo en las barras de la tapa 3

Figura 6.10: Trabajos sobre madera realizados de forma manual para la fabricacion de
guitarras.

6.4.1. Cinematica 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 orientacion del extremo final del robot con los valores que toman sus coor-
denadas articulares. Existen dos problemas fundamentales para resolver la cinematica del
robot [UDG08]:

El primero de ellos se conoce como el problema cinematico 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
6.4. Pruebas del robot realizadas sobre madera 93

las articulaciones y los parametros geometricos de los elementos del robot.

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. Cinematica 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 orientacion y posicion de la herramienta. En algunas aplicaciones de trabajo
sobre madera se tiene una herramienta acoplada a la ultima 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 utiliza 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 numericas

Iterativas: No aplicables en tiempo real.

Para el robot SCARA desarrollado se utilizo la solucion geometrica la cual se


explica a continuacion.
Recordando algunas identidades trigonometricas:
Ley de cosenos para un triangulo general.

sinA sinB sinC


= = (6.1)
a b c

a2 = b2 + c2 (2bc)cosA (6.2)

Primero se tiene que la orientacion del ultimo eslabon es la suma de las variables
articulares lo cual se muestra en la Figura 6.11.
94 Captulo 6: Pruebas y resultados

Figura 6.11: Orientacion del ultimo eslabon.

= 1 + 2 + 3 (6.3)

Se calcula 2 :

La Figura 6.12 muestra el espacio del angulo de 2


Aplicando la ley de los cosenos:

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

Debido a que:
cos(180 2 ) = cos2 (6.5)

Resulta:
x2 + y 2 l12 l22
cos2 = (6.6)
2l1 l2
Calculo de 1 .

Si se definen dos angulos se cumple:

1 = (6.7)
6.4. Pruebas del robot realizadas sobre madera 95

Figura 6.12: Espacio del angulo 2 .

El angulo se calcula:

y
sin = p (6.8)
x2 + y 2

Aplicando la ley de los cosenos se tiene:

x2 + y 2 + l12 l22
cos = p (6.9)
2l1 x2 + y 2

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

Finalmente se calcula 3 mediante la siguiente ecuacion. Regresando a la Figura 6.11


se observa el angulo 3 .

3 = 1 2 (6.10)

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


funcion que posiciona cada eje del robot 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
96 Captulo 6: Pruebas y resultados

Figura 6.13: Angulos , y 1 .

fue posible que el robot dibujara circulos de diferentes diametros y relieves, cuadrados y
triangulos. Estos codigos se muestran en el apendice E.2. Despues se le acoplo una pequena
herramienta rotatoria (Dremel) para hacer los cortes sobre madera. A continuacion se
muestran algunas la Figura 6.14 muestra unas imagenes.

6.5. Comparacion de costos

Tabla 6.2: Costo del robot SCARA construido.


Equipo Pesos $
Motores de pasos PS4913M02B (2) 3009.3
Motor CD GM8724S011 (1) 2433.14
Motor CD GM9236S021 (1) 2637.79
Material usado aprox. 2000
Estructura Mecanica 34694
Total (pesos) 44774.23

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


6.5. Comparacion de costos 97

(a) Trabajo sobre madera.

(b) Corte de una circunferencia con relieve.

Figura 6.14: Imagenes del robot haciendo cortes sobre madera.

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.
Como se puede observar el robot SCARA construido cumple con el objetivo de ser
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
98 Captulo 6: Pruebas y resultados

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
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 algun valor de voltaje
entre las salidas de las fuentes.

El uso de cable blindado reduce la posibilidad de la existencia de ruido en las senales


transmitidas a traves de estos. Este problema se presenta principalmente cuando los
cables que transmiten las senales logicas se encuentran cerca de los cables de alimen-
tacion 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 aun a altas frecuencias.

El uso de ventiladores es sugerido para mantener las temperaturas de los componentes


dentro de sus rangos de operacion normal.

Si algun pin del microcontrolador se encuentra danado, 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 arquitec-
tura, su funcionamiento y las caractersticas de sus componentes de potencia y control:
motores, fuente de alimentacion, 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

El diseno mecanico del robot SCARA se realizo en Paracho Mich., donde fueron mon-
tados los motores En el Laboratorio de Sistemas Computacionales de la Division de
Estudios de Posgrado de la FIE se colocaron los sensores, se conectaron los motores,
los encoders, se diseno y construyo la fuente de alimentacion, se disenaron y cons-
truyeron los circuitos controladores de los motores, se construyeron los circuitos de
proteccion y se realizaron algunas pruebas. El robot se dejo listo para el desarrollo de
aplicaciones y pruebas en los talleres de fabricacion de guitarras en Paracho.

El robot construido tipo SCARA de 4 grados de libertad es un prototipo que cuenta


con caractersticas equiparables a los robots SCARA importados. Los componentes
con los que esta equipado son suficientes para obtener un robot flexible, robusto,

99
100 Captulo 7: Conclusiones

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 debido a su posibilidad de ser operados con
el metodo de micropasos.

Se desarrollaron los controladores para los motores de pasos los cuales funcionaron
eficientemente. El circuito controlador SLA7062M cumple con las caractersticas ne-
cesarias para controlar adecuadamente a los motores de pasos ya sea si se manejan a
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 pan-
talla electrostatica es indispensable para evitar un mal funcionamiento de los compo-
nentes 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.

Se uso el diseno de algunos circuitos ya realizados y probados en trabajos anteriores,


como la fuente de alimentacion de 5V para los circuitos logicos y el controlador de
los motores de CD con escobillas; aunque fue necesario cambiar algunos valores de los
elementos usados.

Se usaron ciertos componentes reciclados de algunos circuitos desarrollados en el la-


boratorio de robotica de la Division de estudios de Posgrado de la FIE de la UMSNH
a los 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 economico, teniendo un


costo aproximadamente de la mitad del valor de un robot SCARA importado, como
se mostro en la seccion 6.
7.2. Sugerencias para trabajos futuros 101

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.

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 que el robot construido es un prototipo para pruebas de laboratorio, las


pruebas de desempeno que se realizaron fueron mediante prueba y error y solo se
observaron las senales de voltaje y corriente para asegurar que el robot estuviese ope-
rando adecuadamente; sin embargo si se decide comercializar el robot, sera necesario
hacer un analisis matematico de las senales para as encontrar los mejores valores de
los elementos usados en su construccion. Por otro lado tambien se debera desarrollar
un mejor control de los motores de CD con escobillas, ya que solo se uso un control
sencillo para observar el funcionamiento del robot y no se desarrollo 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 incrementara 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
102 Captulo 7: Conclusiones

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 compana Cervantes Co. (Paracho Mich.).

Disenar y construir un controlador con elementos de potencia discretos para incre-


mentar 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 es necesario importarlo, pero al implementar uno con elementos dis-
cretos es posible disminuir el costo del robot e incrementar la flexibilidad, robustez y
potencia en el robot.

Disenar 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
fuente conmutada u otro diseno de la fuente alimentacion, con la finalidad de poder
proveer la corriente necesaria requerida por los motores usados y de esta manera tener
la posibilidad de incrementar el voltaje de alimentacion de los motores lo cual hara
que se incrementara la velocidad.

Utilizar un microcontrolador mas rapido que el usado en este trabajo, con esto 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. Comunicacion 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 inmediatamen-
te en la terminal. Este programa es semejante a tener una terminal conectada directamente
al puerto serial del robot y es util 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 desa-
rrollar nuevos programas que interactuen con el robot.

103
104 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 micro-
controlador. 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 menu 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 microcontro-


lador debe de encontrarse en la posicion abajo (correr). Cuando se carga un programa
A.4. Comunicacion con el robot 105

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


controlador. 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. Comunicacion 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.
106 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 numero 0, 1, 2, o 3 siendo el numero 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 numero 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 numero 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 1/2 paso 1/4 paso 1/8 paso 1/16 paso
M0 31200 62400 124800 249600
M1 10820 21640 43280 86560
A.4. Comunicacion con el robot 107

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

A.4.3. Comando para definir la aceleracion de los motores de pasos

En este apendice se muestran los comandos que se usaron para definir la aceleracion
de los motores de pasos. Se muestra una parte del codigo de control el cual se puede ver
al final de los apendices, tambien se puede descargar de la pagina web del Dr. Leonardo
Romero Munoz http://faraday.fie.umich.mx/ lromero/ o se pueden solicitar a traves de los
siguientes correos electronicos: lromero@umich.mx, omarorp@gmail.com
Este comando define los parametros de aceleracion de los motores de pasos, de esta
forma se puede lograr un movimiento suave al inicio y al final del movimiento. Un valor de
mot = 0 indica que los cambios seran asociados al motor 0 y un valor de mot = 1 indica
que los cambios seran del motor 1. Los nuevos parametros se consideran en la ejecucion del
siguiente comando de movimiento de los primeros dos ejes del robot (motor 0 y 1).
Comando:

K < mot >< sp >< timer step max >< sp >< timer step min >< sp ><
timer step inc >< sp >< timer step control >
Donde:

mot es un 0 o un 1

timer step max es el tiempo en 1/16ms para dar el primer paso.


108 Apendice A: Control del robot

timer step min es el tiempo mnimo para dar un paso.

timer step inc es el cambio de tiempo, decremento si inicia el movimiento e incremento


si esta frenando.

timer step control es el tiempo en que se realiza el incremento total, hasta timer step min
si esta iniciando el movimiento o timer step max si esta frenando.

Respuesta: K < \n >

Para entender un poco los comandos mencionados se muestra la figura A.1.

T
Timer_max

Timer_Inc

Timer_min

Timer_Control
Pasos
N

Figura A.1: Figura que muestra los comandos del control de los motores de pasos.

Parte del codigo de control:


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


A.4. Comunicacion con el robot 109

if (timer > g_timer_step_min[m])


timer -= inc;
} else {
if (timer < g_timer_step_max[m])
timer += inc;
}
g_timer_step[m] = timer;
}

Al encender el robot, los valores por omision para el motor 0 son:


K0 20 10 1 10
Para el motor 1 los valores son:
K1 20 10 1 10

A.4.4. Comando para definir la aceleracion de los motores de CD

Este comando define los parametros de aceleracion de los motores de CD los cuales
mueven los ejes theta y theta-z, de tal forma que se logre un movimiento suave al inicio y al
final. Un valor de mot = 2 indica que los cambios seran asociados al motor 2 y un valor de
mot = 3 indica que los cambios seran del motor 3. Los nuevos parametros se consideran en
la ejecucion del siguiente comando de movimiento de los dos ultimos ejes del robot (motor
2 y 3).
Comando:
K < mot >< sp >< k pro1 >< sp >< k pro2 >< sp >< k int >< sp >< min pwm ><
sp >< max pwm >

Los tres primeros parametros (k pro1, k pro2, k int ) son valores usados para
modificar que tanto se acerca el movimiento a la posicion deseada tomando en cuenta el error
que existe al realizar este movimiento. Para en entender un poco el control usado se muestra
una parte del codigo el cual se puede ver al final de los apendices, tambien se puede descargar
de la pagina web del Dr. Leonardo Romero Munoz http://faraday.fie.umich.mx/ lromero/
o se pueden solicitar a traves de los siguientes correos electronicos: lromero@umich.mx,
omarorp@gmail.com El desarrollo de este control se tomo de la tesis de Omar Ros [Ros07]
donde se explica de manera detallada.
Parte del codigo de control:
// Position Control Demon
static void dc_position_control()
{
110 Apendice A: Control del robot

static long dif, error, error2, error1, error0, error_acc[N_MOT]={0,0,0,0}, pos_old[N_MOT]={0,0,0,0};

error0 = k_pro2[active_motor] * (pos_old[active_motor] - g_pos[active_motor]) ;


error0 /= 1000L;

dif = g_pos_ref[active_motor] - g_pos[active_motor];


error1 = k_pro1[active_motor] * dif;
error1 /= 1000L;

error = error0 + error1;

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


ac_err_int[active_motor] += dif;

if(ac_err_int[active_motor] > 3000L)


ac_err_int[active_motor] = 3000L;
if(ac_err_int[active_motor] < -3000L)
ac_err_int[active_motor] = -3000L;

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(dif < 0)
dif = - dif;
if (dif < k_tol[active_motor])
blm_steps[active_motor] = 0;

Los dos ultimos parametros (min pwm, max pwm) son usados para indicar que
tan fuerte se va a realizar el movimiento en una direccion o la otra, esto por el esquema 2
de PWM que se uso para los motores de CD. Un PWM de 128 indica que no se mueve el
motor, un valor de 0 indica un movimiento fuerte en una dirrecion y un valor de 255 indica
un movimiento fuerte en la otra direccion.
Respuesta:
K < \n >

Al encender el robot, los valores por omision para el motor M2 son:


K2 20 1000 0 0 255
Para el motor M3 son:
K3 20 1000 1 0 255
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 lnea 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.

111
112 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.
B.5. CI LMD18200 113

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

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


114 Apendice B: Hojas de datos de fabricantes

Figura B.4: Especificaciones tecnicas del CI SLA7062M.


B.5. CI LMD18200 115

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


116 Apendice B: Hojas de datos de fabricantes

Datos de montaje Unidades Valor


Voltaje de referencia V 24
Velocidad s/carga rpm (rad/s) 720 (75.4)
Torque continuo (max.) oz-in (N-m) 15 (1.0E-01)
Torque pico al arranque oz-in (Nm) 42 (3.0E-01)
Peso oz (g) 11.2 (316)
Datos del motor
Torque constante oz-in/A (N-m/A) 6.18 (4.36E-02)
Fuerza contraelectromotriz constante V/krpm (V/rad/s) 4.57 (4.36E-02)
Resistencia 17.0
Inductancia mH 9.35
Corriente s/carga A 0.09
Corriente pico al arranque A 1.41
Constante del motor oz in/ W (N m/ W ) 1.49 (1.05E-02)
Torque de friccion oz-in (N-m) 0.35 (2.5E-03)
Inercia del rotor oz in s2 (kg m2 ) 2.3E-04 (1.6E-06)
Constante de tiempo electrica ms 0.54
Constante de tiempo mecanica ms 14.7
Viscosidad de amortiguamiento oz-in/krpm (N-m-s) 0.020 (1.4E-06)
Constante de amortiguacion oz-in/krpm (N-m-s) 1.6 (1.1E-04)
Temperatura maxima de devanado F ( C) 311 (155)
Impedancia termica F/watt ( C/watt) 70.5 (21.4)
Constante de tiempo termica min 10.7
Datos de caja de engranes
Relacion de reduccion 6.3
Eficiencia 0.95
Torque max. permitido oz-in (N-m) 100 (0.71)
Datos del encoder
Canales 3
Resolucion CPR 500

Tabla B.1: Datos principales del motor Pittman GM8724S011


B.5. CI LMD18200 117

Datos de montaje Unidades Valor


Voltaje de referencia V 24
Velocidad s/carga rpm (rad/s) 236 (24.7)
Torque continuo (max.) oz-in (N-m) 153 (1.1E+00)
Torque pico al arranque oz-in (Nm) 860 (6.1E+00)
Peso oz (g) 23.3 (661)
Datos del motor
Torque constante oz-in/A (N-m/A) 6.49 (4.58E-02)
Fuerza contraelectromotriz constante V/krpm (V/rad/s) 4.80 (4.58E-02)
Resistencia 2.49
Inductancia mH 2.63
Corriente s/carga A 0.16
Corriente pico al arranque A 9.64
Constante del motor oz in/ W (N m/ W ) 4.11 (2.90E-02)
Torque de friccion oz-in (N-m) 0.80 (5.6E-03)
Inercia del rotor oz in s2 (kg m2 ) 1.0E-03 (7.1E-06)
Constante de tiempo electrica ms 1.06
Constante de tiempo mecanica ms 8.5
Viscosidad de amortiguamiento oz-in/krpm (N-m-s) 0.053 (3.5E-06)
Constante de amortiguacion oz-in/krpm (N-m-s) 12.5 (8.5E-04)
Temperatura maxima de devanado F ( C) 311 (155)
Impedancia termica F/watt ( C/watt) 56.3 (13.5)
Constante de tiempo termica min 13.5
Datos de caja de engranes
Relacion de reduccion 19.7
Eficiencia 0.84
Torque max. permitido oz-in (N-m) 500 (3.53)
Datos del encoder
Canales 3
Resolucion CPR 500

Tabla B.2: Datos principales del motor Pittman GM9236S021


118 Apendice B: Hojas de datos de fabricantes

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


B.5. CI LMD18200 119

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


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

C.2. Metodo de fabricacion 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 disenado en una
aplicacion para tal fin como Eagle o PCB.

121
122 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 disenado sobre el lado mas liso de un acetato para
impresora laser (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 tamano
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 fabricacion de los circuitos impresos 123

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.
124 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, solda-
dura y pasta para soldar. Despues de esto, la tarjeta ya esta lista para probarse.
C.2. Metodo de fabricacion de los circuitos impresos 125

1 2 V 4 2 1 2
t t

o o
u u

+ 

M W P M W P

K R B K R B

R I D R I D

A I B A

V
5

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 conexion


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.

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


129

Figura D.3: Tarjeta H1.


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


131

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


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

Figura D.6: Tarjeta H2.


133

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


Apendice E

Codigo del microcontrolador

En este apendice se muestran los codigos que se usaron para el robot. Estos pro-
gramas son software gratuito; los cuales pueden ser redistribuidos y/o modificados bajo los
terminos de licencia GNU. Estos codigos se pueden descargar de la pagina web del Dr. Leo-
nardo Romero Munoz http://faraday.fie.umich.mx/ lromero/ o se pueden solicitar a traves
de los siguientes correos electronicos: lromero@umich.mx, omarorp@gmail.com
A continuacion 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.

E.1. Programas de interfase y desarrollo usados

Se utilizaron algunos programas que fueron desarrollados en proyectos anteriores


por el Dr. Leonardo Romero Munoz. Estos programas se describen de manera breve a
continuacion:

1. Makefile. Es el archivo principal de compilacion que indica la secuencia de operacio-


nes 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 codi-
go maquina) al microcontrolador usando el puerto serie o RS232.

135
136 Apendice E: Codigo del microcontrolador

E.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
as published by the Free Software Foundation; either version 2
of the License, or any later version.

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

//-----------------------------------------------------------------------------EOF
E.1. Programas de interfase y desarrollo usados 137

E.1.2. serial.c

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


138 Apendice E: Codigo del microcontrolador

{
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){
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;
E.1. Programas de interfase y desarrollo usados 139

}
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; //read register to clear flag RDRF


c = SCI0DRL; //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
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
140 Apendice E: Codigo del microcontrolador

E.1.3. adapt9s12dp256.c

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

#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 */
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); }
E.2. Programa del microcontrolador del robot SCARA 141

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] = 0; /* inter-character timer unused */


newtio.c_cc[VMIN] = 1; /* blocking read until 1 chars received */
newtio.c_cc[VSTART] = 021; /* XON */
newtio.c_cc[VSTOP] = 023; /* 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);
if(strcmp(command,"b\n")==0)
load_program(fd,argv[2]);
}
return 0;
}
//-----------------------------------------------------------------------------

E.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, posterior-
mente, cargarlo al microcontrolador. Los siguientes codigos son los que se descargan al
microcontrolador.

E.2.1. main.c

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

int main(void);

extern char _start_of_data;


142 Apendice E: Codigo del microcontrolador

extern char _end_of_data;


extern const char _start_of_init;

unsigned short int start = 0x0000;


unsigned short int 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 417 //(baud) 1200 baud with 16 Mhz crystal
//#define BAUD2400 208 //(baud) 2400 baud with 16 Mhz crystal
//#define BAUD4800 104 //(baud) 4800 baud with 16 Mhz crystal
//#define BAUD9600 52 //(baud) 9600 baud with 16 Mhz crystal
//#define BAUD14400 35 //(baud) 14400 baud with 16 Mhz crystal
//#define BAUD19200 26 //(baud) 19200 baud with 16 Mhz crystal
//#define BAUD38400 13 //(baud) 34400 baud with 16 Mhz crystal
//
//

static void inline disableCOP(void)


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

#define OscClk 16000000 // Crystal or oscillator frequency


#define Eclock 24000000 // final E-clock frequency (PLL)
#define RefClock 8000000 // frequency used by the PLL to generate E-clock
#define REFDVVal (OscClk/RefClock)-1 //value for REFDV Register
#define SYNRVal (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 = 0xc0; //enable ATD


ATD0CTL3 = 0x40; // 8 conversions per sequence
// ATD1CTL4 = 0x6f; //Select Sample rate
ATD0CTL4 = b(0,1,1,0,1,0,1,1); //Select Sample rate
ATD0CTL5 = 0xb0; //Select 8 channel mode, Continuous scan
// ATD0CTL5 = 0x90; //Select 8 channel mode, single scan
E.2. Programa del microcontrolador del robot SCARA 143

ATD1CTL2 = 0xc0; //enable ATD


ATD1CTL3 = 0x40; // 8 conversions per sequence
// ATD1CTL4 = 0x67; //Select Sample rate
ATD1CTL4 = b(0,1,1,0,1,0,1,1); //Select Sample rate
ATD1CTL5 = 0xb0; //Select 8 channel mode, Continuous scan
// ATD1CTL5 = 0x90; //Select 8 channel mode, single scan
}

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


//#define rtimask b(0,0,1,1,0,0,0,0) //(1/16Mhz)2*2^12=1.024/2 msec interrupt
#define rtimask b(0,0,0,1,0,0,0,0) //(1/16Mhz)2^10=1.024/16 msec interrupt
#define RTIF 0x80 //b(1,0,0,0,0,0,0,0)
#define RTIE 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 A_L b(0,0,0,0,0,0,0,1) //H1 PH0 PIN 42


#define A_H b(0,0,0,0,0,0,1,0) //H1 PH1 PIN 41
#define B_L b(0,0,0,0,0,1,0,0) //H1 PH2 PIN 40
#define B_H b(0,0,0,0,1,0,0,0) //H1 PH3 PIN 39
#define C_L b(0,0,0,1,0,0,0,0) //H1 PH4 PIN 38
#define C_H b(0,0,1,0,0,0,0,0) //H1 PH5 PIN 37
144 Apendice E: Codigo del microcontrolador

#define setb(mask) PORTH |= mask


#define clearb(mask) PORTH &= ~mask

#define SCFflag b(1,0,0,0,0,0,0,0) //SCF - Sequence Complete flag

int 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

E.2.2. command.c
E.2. Programa del microcontrolador del robot SCARA 145

/* command.c */

#include <stdio.h>
#include <string.h>
#include "ioRegsHcs12DP256.h"
#include "main.h"
#include "command.h"
#include "control.h"
#include "serial.h"
#include "isr.h"
#include "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
/* no funciona la inicializacion en 3.3.5-m68hc1x-20050515 */

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];
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]);
146 Apendice E: Codigo del microcontrolador

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

E.2.3. command.h

//-----------------------------------------------------------------------------
/*
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
as published by the Free Software Foundation; either version 2
of the License, or any later version.
E.2. Programa del microcontrolador del robot SCARA 147

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.

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

E.2.4. control.c

/// control.c ///

//#define DEBUG 1

#include "ioRegsHcs12DP256.h"
#include "main.h"
#include "serial.h"
#include "step_motor.h"
#include "control.h"
#include "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 MPanPWM ;O PWM


// PP1 MTiltPWM ;O
// PP2 PIN DA~NADO ;O
// PP3 PIN DA~NADO ;O
// PP4 M2_Dir ;O
// PP5 M3_Dir ;O

// PH0 mH_a1_M1 ;O 42 (H1)


// PH1 mH_a1_M2 ;O 41
// PH2 mH_a1_Dir ;O 40
// PH3 mH_a1_Sync ;O 39
// PH4 mH_a1_Clock ;O 38
// PH5 mH_a1_Reset ;O 37
// PH6 mH_M2_Brake ;O 36
// PH7 mH_M2_PWM ;O 35

// PA0 mA_a0_M1 ;O (H2)


// PA1 mA_a0_M2 ;O
// PA2 mA_a0_Dir ;O
// PA3 mA_a0_Sync ;O
// PA4 mA_a0_Clock ;O
// PA5 mA_a0_Reset ;O
// PA6 mA_M3_Brake ;O
// PA7 mA_M3_PWM ;O
148 Apendice E: Codigo del microcontrolador

// PB0 mB_SwitchM0 ;O (H2)


// PB1 mB_SwitchM1 ;O
// PB2 mB_SwitchM2 ;O
// PB3 mB_SwitchM3 ;O
// PB4 Spare ;O
// PB5 Spare ;O
// PB6 Spare ;I
// PB7 Spare ;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 estaticas en esta version 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];
}
}
E.2. Programa del microcontrolador del robot SCARA 149

static void set_move_params(short m, short signed_steps)


{
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) ) //If pos is out of range
return; // Do not move

/*
* PAN: 628 + 5 units = 360 degrees, pos = 316 to align the pan with the front of the robot,
1 unit = 0.5687 degrees
* TILT: 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] = 0; p[1] = param[0]; move(2,p);


p[0] = 1; p[1] = param[1]; move(2,p);
p[0] = 2; p[1] = param[2]; move(2,p);
p[0] = 3; p[1] = param[3]; move(2,p);
}

void report_status(void)
{
short m;

ser0_putchar(L);
150 Apendice E: Codigo del microcontrolador

for(m=0; m < N_MOT; m++){


ser0_putlong((long) g_pos_ref[m]);
ser0_putspace();

ser0_putlong((long) g_pos[m]);
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


E.2. Programa del microcontrolador del robot SCARA 151

static void dc_position_control()


{
static long dif, error, error2, error1, error0, error_acc[N_MOT]={0,0,0,0}, pos_old[N_MOT]={0,0,0,0};

error0 = k_pro2[active_motor] * (pos_old[active_motor] - g_pos[active_motor]) ;


error0 /= 1000L;

dif = g_pos_ref[active_motor] - g_pos[active_motor];


error1 = k_pro1[active_motor] * dif;
error1 /= 1000L;

error = error0 + error1;

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 > -50 && dif < 50)


blm_steps[active_motor] = 0;
if (active_motor == 3 && dif > -100 && dif < 100)
blm_steps[active_motor] = 0;

#define SCFflag b(1,0,0,0,0,0,0,0) //SCF - Sequence Complete flag


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;
}
}
152 Apendice E: Codigo del microcontrolador

void init_control()
{

short m;

M0_MOTOR_DDR = b(1,1,1,1,1,1,1,1); // p0-p5 are outputs


M1_MOTOR_DDR = b(1,1,1,1,1,1,1,1); // p0-p5 are outputs

DDRT = 0x00; // all are input

DDRP = b(1,1,1,1,0,0,1,1); //all are input but 7 and 6


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

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
E.2. Programa del microcontrolador del robot SCARA 153

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

TSCR2 = b(0,0,0,0,1,0,1,1); //Timer Prescaler = Bus clock /


8 = 0.333 microseg Timer Counter Reset Enable = 1
TSCR1 = b(1,0,0,0,0,0,0,0); //TEN=1 Timer Enabled
TC7 = 30; // 10 microseg.
// TC7 = 20; // 5 microseg.

// TSCR2 = b(0,0,0,0,1,1,1,1); //Timer Prescaler = Bus clock /128 = 1/1E24 * 128 =5.33 microseg,
TCRE=1 Timer Counter Reset Enable
// TC7 = 100; // Periodo = 100 * 5.33 microseg = 0.533 miliseg 1.875 Khz
// TC7 = 50; // Periodo = 50 * 5.33 microseg = 0.266 miliseg 3.750 Khz
// TSCR2 = b(0,0,0,0,1,0,1,1); //Timer Prescaler = Bus clock /8 = 1/1E24 * 8 =0.333 microseg,
TCRE=1 Timer Counter Reset Enable
// TC7 = 150; // Periodo = 150 * 0.333 microseg = 0.05 miliseg
// TSCR2 = b(0,0,0,0,1,1,0,0); //Timer Prescaler = Bus clock /16 = 1/1E24 * 16 =0.666 microseg,
TCRE=1 Timer Counter Reset Enable
// TC7 = 150; // Periodo = 150 * 0.66 microseg = 0.1 miliseg
// TSCR2 = b(0,0,0,0,1,0,1,0); //Timer Prescaler = Bus clock /4 = 1/1E24 * 4 =0.166 microseg,
TCRE=1 Timer Counter Reset Enable
// TC7 = 150; // Periodo = 150 * 0.166 microseg = 0.025 miliseg 40kz (muy alto)
// TSCR2 = b(0,0,0,0,1,1,1,0); //Timer Prescaler = Bus clock /64 = 1/1E24 * 64 =2.666 microseg,
TCRE=1 Timer Counter Reset Enable
// TC7 = 50; // Periodo = 50 * 2.666 microseg = 0.133 miliseg 7.5 khz
// TC7 = 40; // Periodo = 40 * 2.666 microseg = 0.1066 miliseg 9.375 khz
// TSCR2 = b(0,0,0,0,1,1,0,1); //Timer Prescaler = Bus clock /32 = 1/1E24 * 32 =1.333 microseg,
TCRE=1 Timer Counter Reset Enable
// TC7 = 50; // Periodo = 50 * 1.333 microseg = 0.133 miliseg 15 khz (muy alto)

// TC6 = 20;
// TC5 = 20;
// TC4 = 10;

init_encoders();

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


Timer Counter Reset Enable = 1
TSCR1 = 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;
}
154 Apendice E: Codigo del microcontrolador

#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) && !blm_steps[0])
set_move_params(0,-1);
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) {
E.2. Programa del microcontrolador del robot SCARA 155

// 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){
result = 1;
}
return result;
}

//-----------------------------------------------------------------------------EOF

E.2.5. control.h

/* control.h */

#define DC_MOTOR 0
#define STEP_MOTOR 1

#define NUM_TEMP_SENSORS 7
#define mB_SwitchM0 b(0,0,0,0,0,0,0,1)
#define mB_SwitchM1 b(0,0,0,0,0,0,1,0)
#define mB_SwitchM2 b(0,0,0,0,0,1,0,0)
#define 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 extern unsigned short g_temp[];


volatile extern unsigned short k_vel_hold[];
volatile extern unsigned short k_ms_hold[];
volatile extern unsigned short k_break_ms[2];

volatile extern short g_pos_rel_M2, g_pos_rel_M3;


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

E.2.6. isr.c

* isr.c
*/
156 Apendice E: Codigo del microcontrolador

// Connections of A-Encoder pins of motors


#define PAN_AC PA0H
#define TILT_AC PA1H

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

void __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()
{

#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 {
E.2. Programa del microcontrolador del robot SCARA 157

g_rtf_ms=1;
// g_timer_ms = 15;
g_timer_ms = 7;
}
g_rtf=1;
}
//-----------------------------------------------------------------------------EOF

E.2.7. isr.h

/*
* 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 ISR_H
#define ISR_H

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


void get_vel();

#define DISABLE_INTERRUPTS __asm__(" sei")


#define ENABLE_INTERRUPTS __asm__(" cli")

#endif

//-----------------------------------------------------------------------------EOF

E.2.8. step motor.c

#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;
158 Apendice E: Codigo del microcontrolador

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;
switch(m) {
case M0: pwm = M0_PWM; break;
case M1: pwm = M1_PWM; break;
case M2: pwm = M2_PWM; break;
case M3: pwm = M3_PWM; break;
}
return pwm;
}

// 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)
{
E.2. Programa del microcontrolador del robot SCARA 159

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); break;
case 1: setb(mH_a1_Clock, PORTH); break;
}
blm_ajusta_timer_motor(m);
g_clock_lo[m]=g_timer_step[m];
g_clock_hi[m]=g_timer_step[m];

static void raw_motor_conmutator_to_low(short m)


{
switch (m){
case 0: clearb(mA_a0_Clock, PORTA); break;
case 1: clearb(mH_a1_Clock, PORTH); break;
}
}

static void stm_set_sync_high_motor(short m)


{
switch (m) {
case 0: setb(mA_a0_Sync,PORTA); break;
case 1: setb(mH_a1_Sync,PORTH); break;
}
}

/* Activated when there is a motor rotation */


void blm_pwm(short m)
{

if(g_clock_lo[m])
return;
raw_motor_conmutator_to_low(m);
if (blm_steps[m] && !g_clock_hi[m]){
if(blm_steps[m]){
raw_motor_conmutator_to_high(m);
}
if(blm_steps[m]){
blm_steps[m]--;
if(blm_dir[m])
g_pos[m]++;
else
160 Apendice E: Codigo del microcontrolador

g_pos[m]--;
}
if(!blm_steps[m]) {
set_pwm_motor(m,MAX_PWM_HOLD); // Stop the motor
stm_set_sync_high_motor(m);
}
}
}

void stm_init_motor(short m)
{
stm_set_motor(m);
set_pwm_motor(m,MAX_PWM);
g_clock_lo[m] = g_timer_step_init_pwm[m];
g_clock_hi[m] = g_timer_step_init_pwm[m];
g_timer_step[m] = g_timer_step_max[m];
}

void blm_demon(void)
{
short m;
unsigned char step;

get_vel();
for(m=0; m < 2; m++){
if(blm_steps[m]){
set_pwm_motor(m,MAX_PWM_HOLD);
blm_pwm(m);
}
}
}

//-----------------------------------------------BRUSHED MOTORS

volatile unsigned char enc_actual_M2, enc_actual_M3;


volatile unsigned char enc_derr_M2, enc_derr_M3;
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;
}
}
E.2. Programa del microcontrolador del robot SCARA 161

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

ENABLE_INTERRUPTS;
}
void __attribute__ ((interrupt)) ISR_IC6(void)
{
TFLG1 |= b(0,1,0,0,0,0,0,0); //clear flag
}
void __attribute__ ((interrupt)) ISR_IC5(void)
{
// g_pos[3]++;
TFLG1 |= b(0,0,1,0,0,0,0,0); //clear flag
}
void __attribute__ ((interrupt)) ISR_IC4(void)
{
// g_pos[2]++;
TFLG1 |= b(0,0,0,1,0,0,0,0); //clear flag
}
void __attribute__ ((interrupt)) ISR_IC3(void)
{
TFLG1 |= b(0,0,0,0,1,0,0,0); //clear flag
}
void __attribute__ ((interrupt)) ISR_IC2(void)
{
TFLG1 |= b(0,0,0,0,0,1,0,0); //clear flag
}

//-----------------------------------------------------------------------------EOF
162 Apendice E: Codigo del microcontrolador

E.2.9. test scara.c


El programa testscara.c es el que se uso para realizar las pruebas de corte de
madera haciendo circulos aumentando el diametro y con cambios de relieve y lineas rectas.

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


E.2. Programa del microcontrolador del robot SCARA 163

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] = (int) (ang1 / Res_M0) + Def_M0;


M[1] = (int) (ang2 / Res_M1) + Def_M1;
M[2] = (int) (ang3 / Res_M2) + Def_M2;
M[3] = 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;
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);
164 Apendice E: Codigo del microcontrolador

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; // en mm


double radio, M3_inicio = 432000, M3;

M3 = M3_inicio;
radio = 1.0;

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 = -70.0, y2 =270.0, x3 = 70.0, y3 = 270.0;
linea(x0, y0, x1, y1, n, x, y); dibuja(n,x,y,M3,1);
linea(x1, y1, x2, y2, n, x, y); dibuja(n,x,y,M3,1);
linea(x2, y2, x3, y3, n, x, y); dibuja(n,x,y,M3,1);
linea(x3, y3, x0, y0, n, x, y); dibuja(n,x,y,M3,1);
}
E.2. Programa del microcontrolador del robot SCARA 165

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] = 0; /* inter-character timer unused */


newtio.c_cc[VMIN] = 1; /* blocking read until 1 chars received */

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

f = fdopen(fd,"w+");

/*
for(i=0; i < 1; i++){
printf("*** Iteracion %d ***\n\n",i);

envia_comando("W13250 5350 42500 0\n", line);


envia_comando("W13250 5350 42500 250000\n", line);
envia_comando("W10000 4000 30000 350000\n", line);
}
*/
prueba_robot();
fclose(f);
return 0;
}
//-----------------------------------------------------------------------------
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. Reconstruccion tridimensional de ambientes interio-


res utilizando un robot movil equipado con un telemetro laser.
Tesis de maestra, Universidad Michoacana de San Nicloas de
Hidalgo, Facultad de Ingeniera Electrica, Division de Estudios
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. Funda-


mentos de Robotica. McGraw Hill, 1997.

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


Type for Your Applications, 2006.

167
168 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. Diseno y construccion de un robot movil. En Te-


sis de Licenciatura, Universidad Michoacana de San Nicolas 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
Referencias 169

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


URL http://www.tecnoedu.com/Feedback/Serpent.php/.
Updated: 2006/03/15

[Estrada06] Estrada, C. Diseno de un sistema de control de seguimiento de


trayectorias para un robot movil. Tesis de maestra, Universidad
Michoacana de San Nicloas de Hidalgo, Facultad de Ingeniera
Electrica, Division de Estudios 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. Cam-


bridge 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. Electronica 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
170 Referencias

[Mohan95] Mohan, N., Underland, T. M., y Robbins, W. P. Power Electro-


nics: Converters, Applications and Design. John Wiley & Sons,
1995.

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


tation 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. Diseno y construccion de un manipulador con


dos grados de libertad y orientacion del efector final. Tesis de
maestra, Universidad Michoacana de San Nicloas de Hidalgo,
Facultad de Ingeniera Electrica, Division de Estudios de Post-
grado, 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
Referencias 171

[Romero99] Romero, L. Navegacion de robots moviles en ambientes interio-


res. En Informe tecnico, Instituto Tecnologico y de Estudios
Superiores de Monterrey, Campus Cuernavaca. 1999.

[Romero01] Romero, L. Construccion de mapas y localizacion de robots movi-


les: un enfoque probabilsta. Tesis Doctoral, Instituto Tecnologi-
co 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 Automa-
tion (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. Diseno e implementacion del control de un brazo mani-


pulador scara. En Tesis de Licenciatura, Universidad Michoaca-
na de San Nicolas 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 Univer-


sitaria. 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
172 Referencias

[Severns06] Severns, R. Design of Snubbers for Power Circuits, 2006.

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

[UDG08] UDG, J. R. R. Tutorial sobre robotica, 2008.


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

[Urena06] Urena, J. U. Diseno 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
Referencias 173

[Wildi02] Wildi, T. Electrical machines, drives, and power systems. Pren-


tice Hall, 5a edon., 2002.

[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 algun 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 electroni-
co 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 accion 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
accion de control correspondiente a traves del controlador.

Controlador del motor Dispositivo en base a circuitos electronicos de potencia y/o logi-
cos encargado de aplicar la corriente y voltaje adecuados algun devanado del motor
para que realice un movimiento con las caractersticas requeridas.

DOF Acronimo del ingles Degrees of Freedom que se refiere al numero 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.

175
176 Glosario

GNU Acronimo del ingles General Public License que se refiere al software que es de
dominio o licencia publica.

Holgura Espacio vaco entre dos piezas que han de encajar.

Interfaz Conexion 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 publica 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 comporta-


miento 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
pequenos 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 numero de grados fijos) en su flecha mediante la alimentacion
adecuada secuencial de sus devanados.
Glosario 177

Odometro Equivalente a encoder.

Pantalla electrostatica 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 con-
mutan de manera que proporcionan un control de cuatro cuadrantes a la carga conec-
tada 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 conti-
nuamente la potencia promedio a una carga electrica mediante la variacion del ciclo
de trabajo (DC) de la senal pulsante aplicada a la carga.

Retroalimentacion Lazo o conexion entre la salida de un sistema de control y el compa-


rador 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 Senal de voltaje no deseado inducido en el conductor de la senal 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


logica digital un control chopper a la carga conectada en sus terminales de salida.

Snubber Circuito anadido al sistema de potencia para eleiminar el efecto de las inductan-
cias parasitas sobre el comportamiento del sistema.
178 Glosario

Transductor Dispositivo capaz de convertir o transformar algun fenomeno fsico en una


senal electrica.
Indice

Actuador, 3 Senal de pwm, 46


tipos, 3 Motores de CD, 13
Articulaciones controlador, 59
tipos, 3 controladores
hojas de datos, 112
Codigo, 23, 135
Funcionamiento, 56
Circuitos impresos, 121
hojas de datos, 111
metodo de fabricacion de, 121
Puente H, 59
Comando para definir la aceleracion de los
Motores de pasos
motores de CD, 109
Componentes esenciales, 15
Comando para definir la aceleracion de los
Controlador, 25, 43
motores de pasos, 107
Dos voltajes de suministro, 37
Conclusiones, 99
Metodos de excitacion, 29
Control chopper, 40
Medio paso, 32
Convertidor digital-analogico, 46
Micropasos, 33
Fuente de alimentacion, 73 Paso completo, 30
Fuente de potencia, 20 Modelo de las bobinas, 35
Operacion, 28
Interruptores de contacto, 43
Operacion a alta velocidad, 34

Linux, 1 Resistencia en serie, 36


Tipos, 26
Microcontrolador, 21
9S12DP256C, 21 Odometro, 17

caractersticas, 21
PWM, 40
Adapt9S12DP256, 21
codigo, 135 Robot
programacion, 23 definicion, 2

179
180 Indice

importado hojas de datos, 111


desventajas, 1 sensores, 16
movil, 3 de lmite, 19
manipulador, 3 de posicion, 17
arquitectura, 3 de velocidad, 17
clasificacion, 3 Sensores, 16
partes de, 3 de lmite, 19
ventajas, 3 definicion, 16
SCARA, 5 odometricos, 17
aplicaciones, 6 SLA7062M, 44
caractersticas, 6, 7 Snubber de sobrevoltaje RCD, 47
categoria, 5 Snubbers
comercial, 7 de sobrevoltaje RCD, 48
configuracion, 5
Tarjetas H1 y H2, 127
costo, 8
Tesis
Robot comandos , 106
Antecedentes, 2
Robot movil
conclusiones, 99
comunicacion, 105
Justificacion, 10
Objetivo de, 9
SCARA
organizacion, 10
arquitectura, 13
sugerencias para trabajos futuros, 101
caractersticas, 13
Circuito controlador
circuito impreso, 121
descripcion, 13
esquema de conexion, 22
fuente de potencia, 20
circuito impreso, 121
microcontrolador, 21
funcion del, 22
programacion, 23
motores de CD, 13
controladores, 112

Você também pode gostar