Capítulo
INSTITUTO POLITÉCNICO NACIONAL
           CENTRO DE INVESTIGACIÓN E INNOVACIÓN TECNOLÓGICA
              Sistema de control distribuido embebido en
           FPGA para motores de CD en aplicaciones multieje.
                                      TESIS
                          QUE PARA OBTENER EL GRADO DE:
                      MAESTRÍA EN TECNOLOGÍA AVANZADA
                                        PRESENTA:
                         Ing. Gerardo Adrián Martínez Fernández
                                       DIRECTORES:
                               M. en C. Agustín Cruz Contreras
                       M. en C. Moisés Vicente Márquez Olivera
                MÉXICO, D.F.                                      Enero 2015
Resumen.
En este trabajo de investigación se diseña e implementa un control modular de los
ejes de accionamiento motriz que constituyen un robot móvil a través de
servomotores BLDC. Para ello se ha utilizado una arquitectura de control
distribuido implementado en FPGA, siendo el objetivo, que cada servomotor BLDC
realice movimientos individuales, secuenciales o concurrentes, con un perfil de
trayectoria en tiempo real.
La arquitectura de control distribuido regula en todo momento las variables de
aceleración, velocidad y posición en motores de última tecnología, servomotores
BLDC, que cuentan con altas prestaciones eléctricas y mecánicas. Por lo cual, en
aplicaciones como la robótica móvil donde el espacio y energía son limitados, los
servomotores BLDC son ideales para desempeñar los múltiples accionamientos
motrices, en especial donde se requiera un control de posición.
El control de posición, es realizado por la sección de sistema regulador del control
distribuido, se implementó un hardware dedicado utilizando el algoritmo de control
PID, el cual se encarga de mantener la posición del servomotor en todo momento.
Se diseñó un decodificador multiplicador para aumentar la resolución a 1000
cuentas por revolución del dispositivo de retroalimentación de posición “encoder”.
El control de velocidad y aceleración, del cual es encargada la sección de sistema
supervisorio del control distribuido, es desempeñado por un procesador de
propósito general de 24 bits, para la realización de los cálculos del perfil de
trayectoria utilizando los algoritmos del movimiento rectilíneo uniformemente
acelerado.
Este control se efectuó dentro de un dispositivo FPGA para tener la implementación
en un tamaño reducido, además de tener la característica de repetir el control de
manera modular, brindando la versatilidad de resolver necesidades actuales y
futuras de los requerimientos motrices, sin perder la configuración de un control en
tiempo real con la mayor eficiencia de energía posible.
Para realizar la función de alimentar y accionar los servomotores BLDC se
fabricaron circuitos electrónicos utilizando módulos inteligentes de potencia, para
tener en modo compacto puentes H trifásicos con tecnología de transistores IGBTs,
además de aprovechar las características de filtración de señales y sistemas de
seguridad propios de los módulos.
                                                                                   1
Se realizó una interfaz, implementada en software y como medio de transmisión el
puerto paralelo, con el objetivo de configurar la sintonización de los parámetros del
sistema de control PID, programar y monitorear el procesador de propósito general,
capturar los requerimientos de operador y como medio de visualización en tiempo
real del desempeño del sistema.
2
Abstract.
In this work it is designed and implemented a modular control of mechanical
actuators constituting a mobile robot, through BLDC servomotors. It used a
distributed control architecture implemented on FPGA, the objective is, being that
each BLDC servomotor perform individual, sequential or concurrent movements
with a profile path in real time.
The distributed control architecture regulates the variables acceleration, velocity and
position all the time, on latest technology motors, BLDC servomotors, which have
high electrical and mechanical performance. Therefore, in applications such as
mobile robotics where space and power are limited, BLDC servomotors are ideal to
preform mechanical needs, especially where position control is required.
The position control is executed by the regulator section of the distributed control
system, dedicated hardware was implemented using the PID control algorithm,
which is responsible for maintaining the position of the servomotor all the time. A
multiplier decoder was designed to increase the resolution to 1000 counts per
revolution of position feedback device "encoder".
The control of velocity and acceleration, which is responsible section supervisory
system of distributed control is performed by a 24 bits general purpose processor,
whit the objective to calculate the profile path using algorithms uniform acceleration
rectilinear Movement.
To perform the function of power and actuate BLDC servomotors, electronic circuit
was manufactured using intelligent power modules to have compact H-phase
bridges with IGBT transistor technology, also taking advantage of the characteristics
of signal filtering and security systems of the modules.
An interface human machine was implemented in software, and as the transmission
medium was the parallel port, whit the objective to set tuning parameters of PID
control system, program and monitor the general purpose processor, capture
operator requirements and as a means Real-time display of system performance.
                                                                                     3
Agradecimientos.
Este trabajo de investigación no sería posible sin el apoyo de muchas personas e
instituciones que en mucho colaboraron con la culminación de este trabajo y es por
ello que deseo agradecer a:
El Instituto Politécnico Nacional, que me ha abierto las puertas hacia increíbles
experiencias profesionales y personales, por darme la oportunidad de crecer y
aprender en sus aulas, con maestros de alta calidad por eso y más soy
orgullosamente politécnico.
Al CONACYT por brindar el apoyo económico sin contratiempos para la realización
de este proyecto, cumpliendo con el compromiso de fomentar la investigación y el
desarrollo en México.
Al CIITEC por brindarme un espacio para realizar mis estudios de maestría con un
alto nivel académico, con el personal dispuesto a apoyar los proyecto y a las
instalaciones adecuadas para el desarrollo.
Al M. en C. Agustín Cruz ya que sin su apoyo, experiencia e ímpetu no se hubiera
realizado este proyecto. Agradezco su tiempo, consejos y enseñanzas que
permitieron formar la persona que soy ahora, impulsando siempre mi creatividad.
Al M. en C. Moisés Márquez por sus consejos, guía y apoyo en la realización de mi
maestría. Gracias por demostrar el objetivo de ser un maestro.
4
Dedicatorias.
Este trabajo representa un objetivo de vida más, la inevitable consecuencia del gran
apoyo que he recibido por parte de muchas personas a lo largo de mi vida y a
quienes siempre agradeceré.
A mi esposa Karen por su amor, comprensión y paciencia en la terminación de este
trabajo.
A mi hijo Santiago porque siempre ha sido la mejor motivación para realizar los
objetivos.
A mis padres David y Consuelo por darme su apoyo incondicional y sus
conocimientos en todo momento de mi vida
A mis hermanos Ricardo y Carlos por ser siempre en las situaciones buenas o malas.
                                                                                   5
Índice.
Resumen. ........................................................................................................................................ 1
Abstract. ...................................................................................................................................... 3
Agradecimientos. ..................................................................................................................... 4
Dedicatorias. .............................................................................................................................. 5
Índice. .............................................................................................................................................. 6
Índice de ilustraciones. ..................................................................................................... 12
Índice de tablas. ..................................................................................................................... 20
Capítulo 1. INTRODUCCIÓN. ............................................................................................ 21
    1.1 Aspectos generales. .............................................................................................................. 21
    1.2 Estado del Arte. .................................................................................................................... 24
    1.3 Objetivos. ............................................................................................................................... 25
       1.3.1 Objetivo general............................................................................................................. 25
       1.3.2 Objetivos específicos. .................................................................................................... 25
    1.4 Justificación. .......................................................................................................................... 26
    1.5 Aportaciones. ........................................................................................................................ 28
Capítulo 2. FUNDAMENTOS TEÓRICOS..................................................................... 29
    2.1 Introducción. ......................................................................................................................... 29
    2.2 Servomotor. ........................................................................................................................... 31
       2.2.1 Servomotor con escobillas. ........................................................................................... 33
       2.2.2 Servomotor sin escobillas (BLDC)............................................................................... 34
       2.3.1 Sensor efecto Hall. ......................................................................................................... 39
    2.4 Secuencia conmutación electrónica. .................................................................................. 42
    2.5 Carta de conmutación. ......................................................................................................... 46
6
                                                                                                                                        Índice.
 2.7 Conmutación Trapezoidal................................................................................................... 50
 2.8 Codificador de movimiento (Encoder).............................................................................. 51
 2.9 Puente H. ............................................................................................................................... 52
    2.9.1 Transistores IGBT. ......................................................................................................... 54
 2.10 IPM. ...................................................................................................................................... 56
 2.11 Capacitores de Arranque. ................................................................................................. 59
 2.12 Desenergizado lento y desenergizado rápido. ............................................................... 61
 2.13 FPGA. ................................................................................................................................... 63
 2.14 Interfaz. ................................................................................................................................ 65
    2.14.1 Puerto Paralelo de la PC. ............................................................................................ 66
    2.14.2 Configuración del puerto paralelo. ........................................................................... 67
 2.15 Registro Digital. .................................................................................................................. 68
Capítulo 3.                             ALGORITMOS REQUERIDOS. .............................................. 69
 3.1 Introducción. ......................................................................................................................... 69
 3.2 Control automático. ............................................................................................................. 71
 3.3 Perfil de trayectoria. ............................................................................................................. 72
    3.3.1 Desarrollo perfil de trayectoria. .................................................................................. 74
    3.3.2 Diagrama de flujo perfil de trayectoria. ..................................................................... 78
    3.3.2.1 Adquisición de datos. ................................................................................................ 78
    3.3.2.2 Aceleración. ................................................................................................................. 78
    3.3.2.3 Velocidad constante. .................................................................................................. 80
    3.3.2.4 Desaceleración. ........................................................................................................... 81
 3.4 Sistema de control distribuido............................................................................................ 84
    3.4.1 Sistema regulatorio. ...................................................................................................... 85
    3.4.1.1 Filtro PID. .................................................................................................................... 85
                                                                                                                                                  7
                                                                                                                                     Índice.
       3.4.1.2 Sintonización Filtro PID. ........................................................................................... 90
       3.4.2 Sistema supervisorio. .................................................................................................... 91
       3.4.2.1 Procesador dedicado embebido. .............................................................................. 91
       3.4.2.2 Procesador. .................................................................................................................. 91
       3.4.2.3 Instrucciones. .............................................................................................................. 93
       3.4.2.4 Etapas para la ejecución de una instrucción. .......................................................... 94
       3.4.2.5 Clasificación de instrucciones. .................................................................................. 95
    3.5 Herramientas CAD. ............................................................................................................. 96
       3.5.1 Lenguajes de descripción de hardware (VHDL). ..................................................... 97
       3.5.2 Programación por esquemas eléctricos. ..................................................................... 98
    3.6 Diseño ascendente. ............................................................................................................... 99
    3.7 Diseño descendente. .......................................................................................................... 100
    3.8 Modularidad expandible................................................................................................... 101
    3.9 Aritmética Saturante. ......................................................................................................... 102
    3.10 Aritmética Binaria. ........................................................................................................... 102
       3.10.1 Representación de números decimales en binarios. ............................................. 102
       3.10.2 Complementos. .......................................................................................................... 103
       3.10.3 Suma binaria. ............................................................................................................. 104
       3.10.4 Resta binaria. .............................................................................................................. 105
       3.10.5 Multiplicación binaria. .............................................................................................. 105
       3.10.5 División binaria. ........................................................................................................ 106
       3.10.6 Corrimientos. ............................................................................................................. 106
       3.10.7 Raíz cuadrada binaria. .............................................................................................. 107
    3.11 Aritmética punto fijo. ....................................................................................................... 107
    3.12 Modulación por Ancho de Pulso. .................................................................................. 108
8
                                                                                                                                   Índice.
Capítulo 4.                          DESARROLLO E IMPLEMENTACIÓN. ............................ 109
 4.1 Introducción. ....................................................................................................................... 109
 4.2 Implementación puente H trifásico. ................................................................................ 110
    4.2.1 Sección aislante. ........................................................................................................... 111
    4.2.2 Capacitores de arranque............................................................................................. 113
    4.2.3 Protección contra temperatura, bajo voltaje, sobrecorriente y cortocircuito. ..... 113
    4.2.4 Fuentes de energía....................................................................................................... 117
    4.2.5 Conectores auxiliares. ................................................................................................. 118
    4.2.6 Fabricación de circuito de potencia. ......................................................................... 119
 4.3 Conmutador electrónico para BLDC. .............................................................................. 120
 4.4 PWM para variación de velocidad BLDC. ...................................................................... 123
    4.4.1 Modulo PWM. ............................................................................................................. 125
    4.4.2 Módulo Sumador-Restador. ...................................................................................... 126
    4.4.3 Divisor de frecuencia. ................................................................................................. 128
 4.5 Decodificador multiplicador sensor de posición (Encoder). ........................................ 130
    4.5.1 Circuito de conteo. ...................................................................................................... 132
    4.5.2 Circuito dirección. ....................................................................................................... 134
 4.6 Implementación de control distribuido en FPGA. ........................................................ 136
    4.6.1 Implementación sistema regulatorio. ....................................................................... 136
    4.6.1.1 Valor referencia y valor real de posición. ............................................................. 138
    4.6.1.2 Restador PID. ............................................................................................................ 139
    4.6.1.3 Acciones de control PID. ......................................................................................... 141
    4.6.1.2.1 Acción Proporcional.............................................................................................. 142
    4.6.1.2.2 Acción Integral. ...................................................................................................... 144
    4.6.1.2.2.1 Tiempo de muestreo integral. ........................................................................... 146
                                                                                                                                            9
                                                                                                                                  Índice.
        4.6.1.2.3 Acción Derivativa. ................................................................................................. 147
        4.6.1.2.2.1 Tiempo de muestreo derivativo. ...................................................................... 148
        4.6.1.3 Sintonización filtro PID. .......................................................................................... 149
        4.6.2 Implementación sistema supervisor. ........................................................................ 151
        4.6.2.1 Implementación procesador en FPGA. ................................................................. 151
        4.6.2.1.1 Características de procesador implementado. .................................................. 152
        4.6.2.1.2 Lista de instrucciones procesador. ...................................................................... 153
        4.6.2.1.3 Memoria de instrucciones. ................................................................................... 157
        4.6.2.1.4 Buffer de instrucciones. ........................................................................................ 159
        4.4.2.1.5 Registro de instrucciones...................................................................................... 161
        4.6.2.1.6 Secuenciador. ......................................................................................................... 164
        4.6.2.1.7 Contador de programa. ........................................................................................ 165
        4.6.2.1.8 Memoria de datos. ................................................................................................. 167
        4.6.2.1.9 Unidad de punto fijo. ............................................................................................ 169
        4.6.2.1.9.1 Operaciones unidad de punto fijo.................................................................... 170
        4.6.2.1.9.2 Salida operaciones unidad de punto fijo. ........................................................ 183
        4.6.2.1.9.3 Banderas listo operaciones unidad de punto fijo........................................... 184
        4.6.2.1.9.4 Banderas acarreo operaciones unidad de punto fijo. .................................... 184
        4.6.2.1.9.5 Banderas cero operaciones unidad de punto fijo. .......................................... 185
        4.6.2.1.9.6 Banderas uno operaciones unidad de punto fijo. .......................................... 186
        4.6.2.1.10 Unidad de control................................................................................................ 188
     4.7 Implementación de interfaz. ............................................................................................. 198
        4.6.1 Implementación de un registro en FPGA ................................................................ 198
        4.5.2 Implementación del banco de registros. .................................................................. 200
        4.5.3 Expansión Banco de Registros ................................................................................... 203
10
                                                                                                                                         Índice.
       4.5.4 Filtro de ruido. ............................................................................................................. 206
   4.8 Programa Control Supervisorio. ...................................................................................... 207
       4.8.1 Programador. ............................................................................................................... 208
       4.8.2 Cargador de programa. .............................................................................................. 213
       4.8.3 Verificador de programa. ........................................................................................... 218
       4.8.4 Depurador. ................................................................................................................... 219
Capítulo 5.                        PRUEBAS Y RESULTADOS. ....................................................... 223
   5.1 Introducción. ....................................................................................................................... 223
   5.2 PWM y transistores puente H. ......................................................................................... 224
   5.3 Desenergizado rápido vs desenergizado lento. ............................................................. 227
   5.4 Sintonización PID. .............................................................................................................. 228
   5.5 Procesador embebido. ....................................................................................................... 237
   5.6 Modularidad. ...................................................................................................................... 239
Capítulo 6.                      CONCLUSIONES Y TRABAJO A FUTURO. ............................. 241
   6.1 Introducción. ....................................................................................................................... 241
   6.2        Conclusiones. ................................................................................................................ 242
   6.3 Trabajo a futuro. ................................................................................................................. 243
Anexo. ......................................................................................................................................... 244
Referencias. ........................................................................................................................... 250
                                                                                                                                                11
Índice de ilustraciones.
Figura 1 Esquema servomotor DC con escobillas...................................................................... 33
Figura 2 Esquema servomotor BLDC. ......................................................................................... 34
Figura 3 Esquema conmutación servomotor BLDC. ................................................................. 35
Figura 4 Servomotor AC300022.................................................................................................... 37
Figura 5 Dibujo BLDC. .................................................................................................................. 38
Figura 6 Sensor de efecto Hall a) Montaje through hole y b) Montaje de superficie. ........... 39
Figura 7 Efecto Hall........................................................................................................................ 40
Figura 8 Voltaje efecto Hall. .......................................................................................................... 40
Figura 9 Componentes Sensor Hall. ............................................................................................ 41
Figura 10 Diagrama eléctrico servomotor BLDC. ...................................................................... 42
Figura 11 Secuencia 1 de conmutación BLDC. ........................................................................... 43
Figura 12 Secuencia 2 de conmutación BLDC. ........................................................................... 43
Figura 13 Secuencia 3 de conmutación BLDC ............................................................................ 44
Figura 14 Secuencias 4, 5 y 6 de conmutación BLDC ................................................................ 44
Figura 15 Secuencias conmutación BLDC .................................................................................. 45
Figura 16 Diagrama de tiempos conmutación BLDC ............................................................... 46
Figura 17 Tabla de conmutación en nota de aplicación AN857 Microchip ........................... 46
Figura 18 Conmutación BLDC en sentido horario. ................................................................... 48
Figura 19 Vista interna de un servomotor. ................................................................................. 49
Figura 20 Diagrama fases conmutación trapezoidal ................................................................. 50
Figura 21 Esquemático codificador de movimiento. ................................................................. 51
Figura 22 Señales de codificador de posición............................................................................. 51
Figura 23 Diagrama estados puente H. ....................................................................................... 52
Figura 24 Diagrama de conexión del puente H trifásico y BLDC. .......................................... 53
Figura 25 Símbolo del transistor IGBT. ....................................................................................... 54
Figura 26 Curvas características del transistor IGBT. ............................................................... 55
Figura 27 STGIPS20K60 ................................................................................................................. 56
Figura 28 Diagrama de bloque de STGIPS20k60. ...................................................................... 58
12
                                                                                                  Índice de ilustraciones.
Figura 29 Necesidad de capacitores de arranque. ..................................................................... 59
Figura 30 Función del capacitor de arranque. ............................................................................ 60
Figura 31 Casos control de corriente en carga inductora por medio de transistores. .......... 61
Figura 32 Arquitectura General FPGA. ....................................................................................... 63
Figura 33 FPGA programación, conexiones y canalizaciones por SRAM. ............................. 64
Figura 34 Tarjeta de Desarrollo Virtex II Pro, Xilinx. ................................................................ 64
Figura 35 Interfaz implementada. ................................................................................................ 65
Figura 36 Motherboard Intel BOXDH61CRB3 LGA 1155 para procesador i7. ...................... 66
Figura 37 Esquema de puerto paralelo PC. ................................................................................ 67
Figura 38 Diagrama general de un registro electrónico ............................................................ 68
Figura 39 Perfil de Trayectoria desplazamiento punto A hacia B. .......................................... 72
Figura 40 Cambio de referencia vs. Tiempo. .............................................................................. 74
Figura 41 Perfil de trayectoria sección aceleración. ................................................................... 76
Figura 42 Perfil de trayectoria sección de velocidad constante. .............................................. 76
Figura 43 Perfil de trayectoria sección de desaceleración. ....................................................... 77
Figura 44 Diagrama de flujo del perfil de trayectoria sección adquisición de datos. ........... 78
Figura 45 Diagrama de flujo del perfil de trayectoria sección aceleración. ........................... 79
Figura 46 Diagrama de flujo del perfil de trayectoria sección velocidad constante. ............ 80
Figura 47 Diagrama de flujo del perfil de trayectoria sección desaceleración. ..................... 82
Figura 48 Diagrama de flujo del perfil de trayectoria ............................................................... 83
Figura 49 Diagrama a Bloques Control Distribuido. ................................................................. 84
Figura 50 Diagrama a bloques modelo eléctrico y mecánico servomotor BLDC. ................. 86
Figura 51 Lazo de control cerrado para posición BLDC. .......................................................... 87
Figura 52 Lazo de control implementado. .................................................................................. 89
Figura 53 Arquitectura Harvard para procesadores. ................................................................ 93
Figura 54 Ejemplo programación VHDL. ................................................................................... 98
Figura 55 Ejemplo programación Esquemas eléctricos. ........................................................... 99
Figura 56 Metodología diseño de Abajo hacia Arriba. ............................................................. 99
Figura 57 Metodología de diseño de Arriba hacia Abajo. ...................................................... 100
Figura 58 Modularidad expandible ........................................................................................... 101
                                                                                                                                13
                                                                                                                     Índice de ilustraciones.
Figura 59 Modulación por Ancho de Pulso. ............................................................................. 108
Figura 60 Diagrama a bloque de sistema implementado para un eje. .................................. 110
Figura 61 Sección aislante 1. ....................................................................................................... 112
Figura 62 Sección aislante 2. ....................................................................................................... 112
Figura 63 Capacitores de arranque. ........................................................................................... 113
Figura 64 Protección bajo voltaje, sobrecorriente y cortocircuito 1. ...................................... 114
Figura 65 Protección bajo voltaje, sobrecorriente y cortocircuito 2. ...................................... 115
Figura 66 Protección bajo voltaje, sobrecorriente y cortocircuito 3 y protección
temperatura. .................................................................................................................................. 116
Figura 67 Fuentes de alimentación circuito de potencia......................................................... 117
Figura 68 Conectores auxiliares 1. ............................................................................................. 118
Figura 69 Conectores Auxiliares 2 ............................................................................................. 118
Figura 70 Captura de pantalla programa LAYOUT con vista superior del circuito .......... 119
Figura 71 Tarjeta Modulo de Potencia....................................................................................... 120
Figura 72 Código VHDL tabla para la conmutación BLDC 1. ............................................... 121
Figura 73 Código VHDL tabla para la conmutación BLDC 2. ............................................... 121
Figura 74 Modulo de implementación de tabla de conmutación de BLDC. ........................ 122
Figura 75 Esquemático de implementación de accionamiento y variación de velocidad
BLDC. ............................................................................................................................................. 123
Figura 76 Esquemático modulo top para accionamiento y variación de velocidad BLDC.
......................................................................................................................................................... 124
Figura 77 Bloque PWM. ............................................................................................................... 125
Figura 78 Código VHDL del PWM digital. .............................................................................. 126
Figura 79 Modulo Sumador-Restador. ...................................................................................... 126
Figura 80 Código VHDL módulo sumador ascendente- descendente. ................................ 127
Figura 81 Modulo divisor de frecuencia. .................................................................................. 128
Figura 82 Código VHDL divisor de frecuencia para PWM ................................................... 129
Figura 83 Señales decodificador de posición giro sentido horario........................................ 130
Figura 84 Señales decodificador de posición giro sentido antihorario. ................................ 131
Figura 85 Circuito decodificador multiplicador encoder. ...................................................... 131
14
                                                                                                         Índice de ilustraciones.
Figura 86 Circuito de conteo. ...................................................................................................... 132
Figura 87 Monoestable digital implementado. ........................................................................ 133
Figura 88 Maquina de estados encoder..................................................................................... 134
Figura 89 Mapa de Karnaugh. .................................................................................................... 135
Figura 90 Circuito dirección........................................................................................................ 136
Figura 91 Diagrama a bloques sistema regulatorio. ................................................................ 137
Figura 92 Esquemático PID. ........................................................................................................ 137
Figura 93 Contadores PID. .......................................................................................................... 138
Figura 94 Código VHDL contador de posición PID. ............................................................... 139
Figura 95 Sumador. ...................................................................................................................... 140
Figura 96 Restador PID................................................................................................................ 140
Figura 97 Código VHDL restador PID. ..................................................................................... 141
Figura 98 Diagrama a bloques acciones de control. ................................................................ 141
Figura 99 Esquemático acciones PID. ........................................................................................ 142
Figura 100 Código VHDL Multiplicador 16 x 16. .................................................................... 143
Figura 101 Código VHDL integrador PID 1. ............................................................................ 144
Figura 102 Código VHDL integrador PID 2. ............................................................................ 145
Figura 103 Divisor de frecuencia para muestreo. .................................................................... 146
Figura 104 Acción Integral PID. ................................................................................................. 146
Figura 105 Esquema del diferenciador. ..................................................................................... 147
Figura 106 Código VHDL restador para diferencial PID ....................................................... 147
Figura 107 Bloque divisor de frecuencia derivativo. ............................................................... 148
Figura 108 Código VHDL divisor de frecuencia derivativo. ................................................. 149
Figura 109 Grafica para sintonización PID. .............................................................................. 150
Figura 110 Graficas PID sintonizado. ........................................................................................ 150
Figura 111 Mejores valores en sintonización PID. ................................................................... 150
Figura 112 Arquitectura de procesador implementado.......................................................... 152
Figura 113 Procesador dedicado implementado. .................................................................... 156
Figura 114 Memoria de Instrucciones. ...................................................................................... 157
Figura 115 Periféricos auxiliares memoria de instrucciones. ................................................. 158
                                                                                                                                         15
                                                                                                   Índice de ilustraciones.
Figura 116 Hardware para verificación de programación. .................................................... 159
Figura 117 Buffer de instrucción. ............................................................................................... 160
Figura 118 Interior buffer de instrucción. ................................................................................. 160
Figura 119 Registro de instrucción. ........................................................................................... 161
Figura 120 Interior registro de instrucción. .............................................................................. 162
Figura 121 Divisores de dirección de memoria, bit de testeo y salto de programa. ........... 162
Figura 122 Código VHDL decodificador destino. ................................................................... 163
Figura 123 Bloque de secuenciador. .......................................................................................... 164
Figura 124 Código VHDL de secuenciador procesador. ........................................................ 165
Figura 125 Contador de programa y periféricos. ..................................................................... 166
Figura 126 Código VHDL contador de programa. .................................................................. 167
Figura 127 Memoria de Datos. ................................................................................................... 167
Figura 128 Bloque interior memoria de datos. ......................................................................... 168
Figura 129 Unidad de punto fijo y periféricos. ........................................................................ 169
Figura 130 Código VHDL Multiplicador. ................................................................................. 170
Figura 131 Código VHDL Sumador. ......................................................................................... 170
Figura 132 Código VHDL sumador con acarreo. .................................................................... 171
Figura 133 Código VHDL restador. ........................................................................................... 171
Figura 134 Código VHDL restador con acarreo....................................................................... 172
Figura 135 Macro de bloque divisor. ......................................................................................... 173
Figura 136 Bloque divisor y ajuste. ............................................................................................ 173
Figura 137 Bloque Raíz cuadrada 1. .......................................................................................... 174
Figura 138 Bloque Raíz cuadrada 2. .......................................................................................... 174
Figura 139 Bloque Raíz cuadrada 3. .......................................................................................... 175
Figura 140 Bloque Raíz cuadrada y bloques auxiliares. ......................................................... 176
Figura 141 Esquemático Borrado de Bit. ................................................................................... 176
Figura 142 Código VHDL generador de mascara prioridad 0............................................... 177
Figura 143 Esquemático puesta a uno bit. ................................................................................ 177
Figura 144 Código VHDL generador de mascara prioridad 1............................................... 178
Figura 145 Código VHDL bloque inversor. .............................................................................. 178
16
                                                                                                     Índice de ilustraciones.
Figura 146 Código VHDL bloque OR exclusiva. ..................................................................... 179
Figura 147 Código VHDL bloque corrimiento a la derecha. .................................................. 179
Figura 148 Código VHDL bloque corrimiento a la izquierda. ............................................... 180
Figura 149 Bloque test bit cero.................................................................................................... 180
Figura 150 Bloque test bit cero.................................................................................................... 180
Figura 151 Código VHDL bloque operación OR a 24 bits. ..................................................... 181
Figura 152 Código VHDL operación AND a 24 bits. .............................................................. 181
Figura 153 Código VHDL incremento....................................................................................... 181
Figura 154 Código VHDL bloque decremento......................................................................... 182
Figura 155 Código VHDL bloque ceros. ................................................................................... 182
Figura 156 Multiplexor seleccionador de operación. .............................................................. 183
Figura 157 Salidas bloque multiplicador. ................................................................................. 183
Figura 158 Diseño para bandera de listo de raíz cuadrada y división. ................................ 184
Figura 159 Generación y respaldo bandera acarreo. ............................................................... 185
Figura 160 Generación bandera cero. ........................................................................................ 185
Figura 161 Generación bandera Unos. ...................................................................................... 186
Figura 162 Banderas UPF. ........................................................................................................... 186
Figura 163 Unidad de cálculo de punto fijo. ............................................................................ 187
Figura 164 Código VHDL Implementación Unidad de control 1. ........................................ 193
Figura 165 Código VHDL Implementación Unidad de control 2. ........................................ 194
Figura 166 Codigo VHDL Implementación Unidad de control 3. ........................................ 194
Figura 167 Código VHDL Implementación Unidad de control 4. ........................................ 195
Figura 168 Código VHDL Implementación Unidad de control 5. ........................................ 195
Figura 169 Bloques auxiliares unidad de control..................................................................... 196
Figura 170 Puntos de salida procesador dedicado implementado. ...................................... 197
Figura 171 Circuito para escritura en un registro. ................................................................... 198
Figura 172 Circuito para lectura y escritura de datos, un registro. ....................................... 200
Figura 173 Banco de registros, solo escritura. .......................................................................... 201
Figura 174 Esquema Banco de registros Lectura y Escritura desde PC................................ 202
Figura 175 Esquema registro Latch............................................................................................ 203
                                                                                                                                    17
                                                                                                 Índice de ilustraciones.
Figura 176 Banco de Registros implementado ......................................................................... 204
Figura 177 Señal con ruido vista en osciloscopio..................................................................... 206
Figura 178 Esquemático filtro ruido. ......................................................................................... 206
Figura 179 Secuencia de programación procesador embebido. ............................................ 207
Figura 180 Programa control supervisorio alto nivel 1........................................................... 208
Figura 181 Programa control supervisorio alto nivel 2........................................................... 209
Figura 182 Programa control supervisorio alto nivel 3........................................................... 210
Figura 183 Programa control supervisorio alto nivel 4........................................................... 211
Figura 184 Programa control supervisorio etiquetas de memoria Ensam.ens. ................... 212
Figura 185 Captura de pantalla Interfaz prueba. ..................................................................... 213
Figura 186 Captura de pantalla Interfaz apertura de archivos. ............................................. 214
Figura 187 Captura de pantalla Interfaz codificación de archivos a ASCII. ........................ 214
Figura 188 Codificación tipo ASCII. .......................................................................................... 215
Figura 189 Captura de pantalla Interfaz codificación de archivos a ASCII. ........................ 216
Figura 190 Captura de pantalla Interfaz Carga archivo .bin. ................................................. 216
Figura 191 Captura de pantalla Interfaz programar memoria. ............................................. 217
Figura 192 Captura de pantalla Interfaz botón V. Memoria. ................................................. 218
Figura 193 Circuito variación de velocidad procesador. ........................................................ 219
Figura 194 Captura de pantalla Interfaz control de procesador. ........................................... 220
Figura 195 Captura de pantalla Interfaz microinstrucciones ................................................. 220
Figura 196 Captura de pantalla Interfaz depurador 1. ........................................................... 221
Figura 197 Captura de pantalla Interfaz depurador 2. ........................................................... 221
Figura 198 Captura de pantalla Interfaz control individual registros. ................................. 222
Figura 199 Captura de pantalla Interfaz lectura y modificación de instrucciones. ............ 222
Figura 200 Señal PWM recibida en transistores de puente H trifásico. ................................ 224
Figura 201 Señal PWM recibida en transistores de puente H trifásico. ................................ 224
Figura 202 Forma corriente bobina servomotor BLDC. .......................................................... 225
Figura 203Conmutacion transistores puente H trifásico. ....................................................... 225
Figura 204 Visualización osciloscopio transistores puente H. ............................................... 226
Figura 205 Periodo saturación alto PWM recibido en transistor. .......................................... 226
18
                                                                                                      Índice de ilustraciones.
Figura 206 Periodo saturación bajo PWM recibido en transistor. ......................................... 226
Figura 207 Gráfica servomotor BLDC desenergizado lento................................................... 227
Figura 208 Gráfica servomotor BLDC desenergizado lento................................................... 228
Figura 209 Sintonización control proporcional. ....................................................................... 229
Figura 210 Sintonización control proporcional con actuador mecánico .............................. 229
Figura 211 Sintonización control proporcional e integral. ..................................................... 230
Figura 212 Sintonización control PID. ....................................................................................... 230
Figura 213 Oscilaciones PID. ...................................................................................................... 231
Figura 214 Código VHDL protección accionamiento sin control servomotor. ................... 232
Figura 215 Sintonización PID máxima acción PWM. .............................................................. 233
Figura 216 Mejores valores sintonización PID desenergizado lento. ................................... 234
Figura 217 Sintonización PID desenergizado lento. ................................................................ 235
Figura 218 Mejores valores sintonización PID desenergizado lento. ................................... 235
Figura 219 Comportamiento PID en perfil de trayectoria. ..................................................... 236
Figura 220 Gráfica perfil de trayectoria calculado procesador embebido. .......................... 238
Figura 221 Gráfica perfil de trayectoria calculado procesador PC ........................................ 238
Figura 222 Sistema de control para tres ejes. ............................................................................ 239
Figura 223 Interfaz motor 1. ........................................................................................................ 240
Figura 224 Interfaz motor 2. ........................................................................................................ 240
Figura 225 Interfaz motor 3. ........................................................................................................ 240
                                                                                                                                     19
Índice de tablas.
Tabla 1 Especificaciones servomotor. .......................................................................................... 32
Tabla 2 Comparación tipos servomotores DC. .......................................................................... 36
Tabla 3 Tabla de verdad chip STGIPS20K60. ............................................................................. 57
Tabla 4 Características Virtex II Pro............................................................................................. 65
Tabla 5 Configuración de pines para puerto paralelo usada en este proyecto...................... 67
Tabla 6 Tabulación de las señales decodificador de posición. ............................................... 134
Tabla 7 Maquina de estados dirección. ..................................................................................... 135
Tabla 8 Lista de instrucciones procesador dedicado. .............................................................. 153
Tabla 9 Tipos y campos de instrucción del procesador general. ........................................... 155
Tabla 10 Tabla del decodificador destino. ................................................................................ 163
Tabla 11 Grupos de operaciones del procesador. .................................................................... 188
Tabla 12 Tabla de verdad del registro. ...................................................................................... 199
Tabla 13 Información de Banco de Registros............................................................................ 205
Tabla 14 Comparación de la precisión de cálculo en procesadores. ..................................... 237
20
Capítulo 1.
INTRODUCCIÓN.
1.1 Aspectos generales.
Una de las áreas que se ha visto favorecida por la llamada “Revolución tecnológica” es
la robótica, por lo que en algunas ciudades del mundo la interacción entre seres
humanos y robots ya no es algo fuera de lo común.
El incremento acelerado de la demanda de robots por parte de industrias de
diferentes sectores aunado al avance tecnológico de dispositivos electrónicos,
electromecánicos y desarrollo de software, incentivaron el interés de los
investigadores en la posibilidad de diseñar sistemas complejos, que permitan que
un robot sea rápido, preciso y funcional.
La implementación de estos robots en su mayoría manipuladores es muy exitosa, ya
que son los encargados de realizar tareas monótonas, repetitivas y/o peligrosas,
                                                                                   21
                                                         Capítulo 1. INTRODUCCIÓN.
ofreciendo así, grandes beneficios para la industria, no obstante la mayoría de los
robots utilizados en la industria se encuentran en estaciones de trabajo fijas, y los
movimientos están restringidos por los grados de libertad del robot, esto significa
una gran desventaja ya que presentan poca adaptación para desplazarse y adaptarse
a las diferentes células de trabajo.
Para resolver esta desventaja se creó la línea de investigación de robots móviles, los
cuales pueden tener desplazamientos en diferentes entornos y realizar las tareas
asignadas por medio de sus manipuladores. [1]
El estudio, diseño y construcción de un robot móvil con usos prácticos es sin duda
todo un reto, ya que la robótica móvil es una disciplina de investigación que se
auxilia de los fundamentos teórico-prácticos de diversas áreas de estudio como son
la computación, electrónica, mecánica y control; por lo que el conjunto de problemas
que surgen al diseñar y construir un sistema robótico deben ser resueltas de manera
colaborativa entre equipos de investigación, trabajando paralelamente con los
desafíos concernientes a los mecanismos físicos e inteligencia del robot.
Existen múltiples necesidades motrices que se tienen que satisfacer en el diseño de
un robot móvil. Dentro del esquema más simple de un robot móvil nos encontramos
necesidades motrices en tracción, en dirección, en la necesidad de posicionar un
sensor (visión artificial, proximidad, odometría, temperatura, entre otros) y en los
manipuladores integrados (brazos articulados, pinzas, taladros, sierras, martillos).
Uno de los mayores desafíos que se tienen en la robótica móvil es el uso eficiente de
la energía, ya que hasta el momento, el robot tiene que transportar su propia fuente
de energía como es el caso de una batería, está tiene una capacidad limitada de
energía por lo que cualquier acción o tarea se debe de satisfacer con el uso óptimo
de la energía.
Otro desafío relacionado con el uso de energía, es el espacio físico y el peso de los
componentes, debido a que en un robot deben de existir varios sistemas y el espacio
22
                                                           Capítulo 1. INTRODUCCIÓN.
es reducido. Por lo que cualquier ahorro en el volumen de los sistemas que integran
a un robot móvil es significativo para la ejecución de los movimientos requeridos,
por lo que se obtiene un ahorro en el uso de la energía.
El interés de esta investigación es ofrecer una solución de control para los
accionamientos motrices requeridos de un robot móvil, desarrollando en cada uno
de ellos un perfil de trayectoria en tiempo real y con el uso óptimo de la energía
proveniente de la batería. Se realizó el diseño de manera que pueda ser reproducido
tantas veces sea requerido y se puede implementar en cualquier dispositivo de
arreglo de compuertas programables en campo (FPGA: field programable gate
array).
Como arquitectura de control se propone un control distribuido, el cual se compone
por un sistema regulatorio este se encarga de controlar la posición mediante el
algoritmo proporcional-integral-derivativo (PID) implementado en un hardware
dedicado; y un sistema supervisorio implementado en un procesador dedicado de
tipo general con el algoritmo de movimiento rectilíneo uniformemente acelerado.
Esto será implementado en un dispositivo de hardware dedicado conocido como
FPGA para desarrollar en todos los ejes un control en tiempo real, también se obtiene
la versatilidad de resolver los requerimientos motrices actuales y se podrá adaptar
para resolver los futuros, repitiendo la arquitectura de control en cuantos ejes sea
requerido.
Para resolver estos requerimientos motrices se utilizan los servomotores sin
escobillas de corriente directa (BLDC: brushless direct current), los cuales tienen las
menores pérdidas en la conversión de energía eléctrica a energía mecánica, se
implementan los recursos necesarios para su accionamiento, operación y control.
                                                                                    23
                                                       Capítulo 1. INTRODUCCIÓN.
1.2 Estado del Arte.
Dentro del estado del arte se encuentran los trabajos desarrollados por el Dr.
Krzysztof Kozłowski y colaboradores en Polonia en el año 2013. En este proyecto
desarrollo un control multieje para robot móvil utilizando dos procesadores digital
de señales (DSP: digital signal processor) por eje, utilizando dos algoritmos de
control PID: uno para controlar la posición y el segundo tiene acción sobre la
velocidad de desplazamiento. [2]
Otro trabajo relacionado se encuentra el realizado por Ali Kashefi Kaviani y
colaboradores en EUA en el año 2012. Donde se plantea el movimiento coordinado
de sistemas multieje matemáticamente realizando un perfil de trayectoria
demostrando el uso eficiente de energía; emiten recomendaciones de algoritmos de
control para la implementación. [3]
El trabajo realizado por Jung Uk Cho y colaboradores en EUA en el año 2009. En este
proyecto se realizó la implementación de un control multieje en FPGA aplicado a un
brazo robótico articulado selectivo obediente (SCARA: selective compliant
articulated robot arm), utilizando un procesador integrado al FPGA, algoritmo de
control PID y sistema de adquisición de datos. Se realiza el control multieje
dedicando tiempos del procesador central para cada servomotor. [4]
Dentro del trabajo de investigación se encontró una patente liberada de un prototipo
de robot multieje utilizando los servomotores BLDC como actuadores del
movimiento, describiendo sus ventajas de usar esta tecnología en espacios reducidos
y las capacidades de realizar movimientos. [5]
24
                                                         Capítulo 1. INTRODUCCIÓN.
1.3 Objetivos.
1.3.1 Objetivo general.
Controlar los ejes de accionamiento motriz que constituyen un robot móvil
desarrollando un perfil de trayectoria en cada eje, realizando los accionamientos de
manera concurrente y en tiempo real.
1.3.2 Objetivos específicos.
   •   Diseño de una arquitectura de control distribuido para sistemas regular las
       variables de posición, velocidad y aceleración.
   •   Implementación del algoritmo proporcional integral derivativo para sistema
       regulatorio de arquitectura de control distribuido.
   •   Implementación del algoritmo de movimiento rectilíneo uniformemente
       acelerado para sistema supervisorio de arquitectura de control distribuido.
   •   Implementación de procesador de propósito general en hardware dedicado.
   •   Diseño de conmutación trapezoidal en la conmutación electrónica requerida
       por el servomotor BLDC.
   •   Diseño de decodificador multiplicador para sensor de posición.
   •   Implementación de la etapa de potencia para los servomotores BLDC.
   •   Diseño de la interfaz humano-máquina para el control y operación del
       sistema.
   •   Realización de pruebas y evaluación del sistema aplicado a un eje.
   •   Realización de pruebas y evaluación del sistema aplicado a tres ejes.
                                                                                 25
                                                        Capítulo 1. INTRODUCCIÓN.
1.4 Justificación.
En este trabajo de investigación se diseña e implementa el control de posición de los
actuadores motrices necesarios dentro de un robot móvil. Estos actuadores lo
encontramos dentro de los sistemas de tracción, dirección, movimiento de cámaras
de visión, movimiento de sensores de presencia y manipuladores propios del robot
(brazos articulados, pinzas, taladros).
Cuando un cuerpo realiza un desplazamiento de un punto “A” a un punto “B”,
saliendo del estado de reposo y llegando nuevamente a este, primeramente debe
acelerar hasta llegar a una velocidad máxima, hacer el recorrido a esta velocidad,
llegando a una posición en la cual debe comenzar a desacelerar, hasta alcanzar el
reposo en el punto “B” este comportamiento se conoce como perfil de trayectoria.
Los mecanismos usados en aplicaciones de posicionamiento, necesitan tener un
control en todo momento de sus movimientos, por lo cual se necesitan regular las
variables de posición, velocidad y aceleración requeridas para realizar un perfil de
trayectoria. Realizar una implementación sin considerar el perfil de trayectoria,
conlleva a que los resultados siempre estén lejos de un funcionamiento apropiado.
Debido a que un robot móvil dispone de un espacio reducido, el controlador de los
actuadores motrices debe ser de tamaño pequeño y poder controlar más de un
actuador. Otra problemática para control de movimiento es que el actuador dentro
de un robot móvil dispone de una fuente limitada de energía por lo que cualquier
movimiento debe desarrollarse con la mayor eficiencia posible.
El servomotor BLDC es un motor de alta precisión, es decir, se caracteriza por la
capacidad que tiene de ubicarse en cualquier posición angular y velocidad, dentro
de un rango de operación, con la habilidad de poder mantener una estabilidad
dentro de esos parámetros. Por lo cual, son utilizados en las más variadas
aplicaciones en donde es necesaria una elevada dinámica, control de par, y alta
precisión de velocidad y posicionamiento son necesarios, por ejemplo: corte,
26
                                                      Capítulo 1. INTRODUCCIÓN.
impresión, etiquetado, empacado, manipulación de alimentos, robótica y
automatización de fábricas. Aunado a esto, los servomotores BLDC son compactos,
lo cual reduce la inercia del rotor, esto permitiendo una aceleración y un
posicionamiento más rápidos.
Un dispositivo FPGA es una herramienta para implementación de sistemas
complejos en hardware, con esta característica sistemas que necesiten altas
velocidades de desempeño para ser consideradas que trabajan en tiempo real
pueden ser realizadas dentro de un dispositivo FPGA. El FPGA cuenta con un
tamaño reducido, además de un bajo consumo energético características
indispensables para ser seleccionado como controlador de un robot móvil.
Una de las características de la programación de dispositivos FPGA es compactar
los diseños a módulos, brindando la posibilidad de repetir el diseño cuantas veces
sea necesario de forma rápida, con esto se provee la versatilidad de resolver el
control de múltiples necesidades motrices actuales y con mínimas adecuaciones
resolver necesidades futuras de los accionamientos motrices en un robot móvil.
                                                                                 27
                                                         Capítulo 1. INTRODUCCIÓN.
1.5 Aportaciones.
Las principales aportaciones de este trabajo de tesis son las siguientes:
        Diseño de una arquitectura de control en tiempo real de manera modular,
         para una expansión de tantos accionamientos motrices como sean necesarios
         para la construcción de un robot móvil.
        Desarrollo de tecnología propia para el accionamiento, operación y control
         de motores sin escobillas BLDC.
28
Capítulo 2.
FUNDAMENTOS
TEÓRICOS.
2.1 Introducción.
En este capítulo se describen los dispositivos físicos empleados para el desarrollo
del prototipo de esta investigación.
Se describe el servomotor sin escobillas BLDC que cuenta con las mejores
características mecánicas y eléctricas, por lo cual son utilizados en aplicaciones en
donde es necesaria una elevada dinámica y precisión de posicionamiento.
Debido a que el servomotor BLDC no posee dispositivos mecánicos internos para
realizar la conmutación, es necesario contar con un dispositivo externo, que
adquiere información de los sensores de efecto Hall y realiza la función de
                                                                                  29
                                            Capítulo 2. FUNDAMENTOS TEÓRICOS.
conmutación lógica electrónica de manera externa, necesaria para el funcionamiento
del servomotor BLDC.
La forma de satisfacer las necesidades de energía eléctrica de un servomotor sin
comprometer el funcionamiento de un controlador es a través de un arreglo puente
H trifásico, debido a la alta demanda de estos, existen los módulos inteligentes de
potencia (IPM: intelligent power module) que cuentan con 6 transistores IGBTs y
diversos sistemas de protección y aislamiento de señales.
La implementación de las abstracciones de control necesitan ser implementadas en
un medio físico para lo cual se eligió como controlador un dispositivo FPGA, que
brinda un medio reconfigurable de programación de hardware.
En esta aplicación se requiere de una interfaz hombre-máquina para operar y
configurar los motores del sistema, por lo cual, se diseñó la interfaz gráfica e
intuitiva para uso en una PC.
30
                                              Capítulo 2. FUNDAMENTOS TEÓRICOS.
2.2 Servomotor.
Un sistema llamado “servo” es aquel en el cual existe la medición de una variable la
cual se requiere regular y mantener en un valor deseado. En el caso de los motores,
el servomotor, es un motor especial, en el que su diseño y fabricación le permiten
tener alto factor de calidad, logrando alta precisión, es decir, se caracteriza por la
capacidad que tiene de ubicarse en cualquier posición angular y velocidad, dentro
de un rango de operación, con la habilidad de poder mantener estabilidad dentro de
esos parámetros. [6]
Por lo tanto, el servomotor es un dispositivo ideal para posicionarse en cualquier
punto con dispositivos de retroalimentación adecuados, con los que se puede
conocer en qué posición se encuentra o hacia donde se está desplazando, y así poder
regular y llevar al servomotor a la posición deseada, logrando ajustes con mayor
precisión aún en los desplazamientos cortos. [7]
El controlador del servomotor requiere conocer la posición angular del rotor en todo
momento, para lo cual se hace uso de sensores, que pueden ser de tipo digital
“encoder” o bien de tipo analógico “resolver”, los cuales brindan la posición del
rotor en el servomotor de manera codificada. [8]
Además los servomotores desarrollan un nivel de torque constante, sin tener
pérdidas de torque a altas velocidades de giro, a bajas velocidades esta propiedad
no se ve comprometida.
Mecánicamente los servomotores son de tamaño reducido comparados con otros
motores para el mismo torque desarrollado, esto es una ventaja ya que se tiene una
menor inercia en el rotor, con esto se pueden realizar desplazamientos más rápidos
y acertados. Los servomotores son fabricados para dar alta eficiencia en sus
movimientos y posicionamientos, ya que por diseño cuentan con la mayor calidad
                                                                                   31
                                            Capítulo 2. FUNDAMENTOS TEÓRICOS.
en sus embobinados y la geometría con la que están fabricados es más precisa,
permitiendo que el motor cuente con campos magnéticos homogéneos.
Los servomotores son utilizados en las más variadas aplicaciones industriales, en
donde existe elevada dinámica de paros, arranques, torque constante, altas
velocidades y precisión de posicionamiento. Son utilizados en sistemas donde se
jerarquiza la precisión, como en sistemas de corte, impresión, etiquetado, empacado,
manipulación de alimentos, robótica y automatización. [9]
A diferencia del motor de uso general, los servomotores se especifican a través del
torque que pueden desarrollar, no por su potencia. Para diseñar el algoritmo de
control, los parámetros requeridos son proporcionados por el fabricante (Tabla 1).
Tabla 1 Especificaciones servomotor.
              Especificaciones técnicas de un servomotor industrial
                             Servomotor AC300022
                       Torque máximo                  282 mNm
                      Corriente máxima                3.40 Amp
                         Torque pico                  291 mNm
                        Corriente pico                 3.5 Amp
                     Constante de torque            0.82 mNm/A
                            Voltaje                       24 V
                          Resistencia                   1.1 Ω
                          Inductancia                    1 mH
                       Velocidad (vacío)              6262 rpm
                 Sensor de retroalimentación         Encoder 250
La conmutación es método con el cual se produce el cambio de la polaridad de las
bobinas en el motor, provocando la continuación del movimiento giratorio, paro o
cambio de sentido de giro. Existen dos tipos de construcción de servomotores de
corriente directa, los que utilizan una conmutación mecánica y los de una
conmutación electrónica.
32
                                            Capítulo 2. FUNDAMENTOS TEÓRICOS.
2.2.1 Servomotor con escobillas.
El servomotor con escobillas (Figura 1) cuenta con dos secciones principales el
estator y el rotor. El estator está conformador por armadura, imanes permanentes,
rodamientos y escobillas o carbones; el rotor cuenta con el conmutador, las bobinas
y propiamente el rotor como elementos que lo conforman.
                 Figura 1 Esquema servomotor DC con escobillas.
Para que el servomotor con escobillas efectué un movimiento giratorio continuo es
necesario alimentar las bobinas con energía eléctrica generando un campo eléctrico,
que al interactuar con el campo magnético de los imanes permanentes producirá el
movimiento rotacional, esto se logra a partir del contacto de las bobinas del rotor
con la fuente de energía eléctrica, la cual se realiza a través de los carbones o
escobillas del servomotor y el conmutador. Este ciclo se denomina como
conmutación mecánica; para que un servomotor con escobillas simplemente gire de
forma libre, únicamente es necesario conectar a la fuente eléctrica de corriente
                                                                                33
                                              Capítulo 2. FUNDAMENTOS TEÓRICOS.
directa, al mismo tiempo la velocidad de giro del rotor             será directamente
proporcional al voltaje aplicado en sus terminales [6] [8]
2.2.2 Servomotor sin escobillas (BLDC).
En la conmutación electrónica no se presenta contacto entre los mecanismos del
servomotor para transmitirle la energía eléctrica, se realiza a través de un
conmutador electrónico, el utiliza la fuerza electromecánica para generar el
movimiento giratorio en el imán que se encuentra en el rotor. [6]
Al encontrarse las bobinas en el estator del motor se les induce una corriente
eléctrica, considerando la posición del campo magnético del rotor por medio de los
sensores de efecto Hall (véase 2.3.1 Sensor efecto Hall.), generando un campo
magnético en las bobinas del estator que interactúa con los campos magnéticos en el
rotor formando así el movimiento giratorio Figura 2. [9]
                       Figura 2 Esquema servomotor BLDC.
Al contrario de lo que pasa con el servomotor con escobillas, un servomotor sin
escobillas (BLDC) al ser conectado a una fuente eléctrica DC, no presentará ningún
movimiento ya que es necesario excitar las bobinas de manera individual por lo que
se requiere un conmutador electrónico.
34
                                               Capítulo 2. FUNDAMENTOS TEÓRICOS.
El servomotor sin escobillas aplica el principio de la ley de Lorenz, la cual indica que
un conductor por el que circula una corriente eléctrica genera un campo eléctrico,
por la interacción entre el campo magnético y el campo eléctrico en el conductor, el
rotor del servomotor generara un movimiento. [10]
                                                 C: Fuente de corriente
                 Figura 3 Esquema conmutación servomotor BLDC.
El conmutador electrónico (Figura 3) realiza la inversión del flujo de la corriente en
las bobinas del estator en determinada secuencia para que el servomotor BLDC
pueda realizar un movimiento giratorio en la misma dirección, la inversión se realiza
en 2 bobinas con polaridades distintas (positiva, negativa) que determinan la
dirección de la corriente en la bobina, y una tercera bobina se mantiene desconectada
para que se descargue y pueda ser utilizada en la siguiente secuencia de la polaridad
requerida para continuar el giro en la misma dirección, este energizado e inversión
de la polaridad en las bobinas del estator se realiza con el puente H trifásico.
                                                                                     35
                                                      Capítulo 2. FUNDAMENTOS TEÓRICOS.
A continuación se presenta una tabla con la comparación de las características más
importantes de los servomotores de corriente directa. [11]
Tabla 2 Comparación tipos servomotores DC.
                                Servomotor sin escobillas               Servomotor con escobillas
                         Conmutación electrónica basada          en
      Conmutación                                                      Conmutación por escobillas.
                         sensores de posición de efecto Hall.
     Mantenimiento       Mínimo.                                       Periódico.
       Durabilidad       Mayor.                                        Menor.
                                                                       Moderada. A altas velocidades la
         Curva           Lineal. Operación a todas las velocidades
                                                                       fricción de las escobillas incrementa,
     Velocidad/Par       con la carga definida.
                                                                       reduciendo el par.
                         Alta. Sin caída de tensión por las
        Eficiencia                                                     Moderada.
                         escobillas.
                         Alta. Menor tamaño debido a mejores
                                                                       Baja. El calor producido en la
                         características térmicas porque los
       Potencia de                                                     armadura es disipado en el interior
                         bobinados están en el estator, que al estar
     Salida/Tamaño                                                     aumentando la temperatura y
                         en la carcasa tiene una mejor disipación
                                                                       limitando las características.
                         de calor.
                         Baja. Debido a los imanes permanentes         Alta. Limita       las   características
     Inercia del rotor
                         en el rotor.                                  dinámicas.
                         Alto.  Sin    limitaciones   mecánicas        Bajo. El límite lo imponen
 Rango de velocidad
                         impuestas por escobillas/conmutador.          principalmente las escobillas.
     Ruido eléctrico     Bajo                                          Arcos en las escobillas.
          Costo          Alto. Debido a los imanes permanentes         Bajo.
         Control         Complejo y caro                               Simple y barato.
36
                                              Capítulo 2. FUNDAMENTOS TEÓRICOS.
Para la realización de este trabajo se utilizaron los servomotores de corriente directa
sin escobillas (BLDC) de la marca HURST serie NT DYNAMO® Brushless. Figura 4
                          Figura 4 Servomotor AC300022.
En resumen, el propósito de cualquier motor eléctrico es convertir la energía
eléctrica en energía mecánica. Pero por razones de conversión de energía dentro de
los motores estos tienden a generar pérdidas de energía (calentamiento), para
sistemas conectados a fuentes de alimentación dependientes del suministro eléctrico
no es crítico el uso de energía, pero en sistemas en los que su fuente es una batería
es necesario optimizar al máximo el uso de la energía. [9]
El uso del servomotor mejora significativamente el uso de la energía pero además se
puede complementar con técnicas de conmutación y PWM para tener un mejor
desempeño.
                                                                                    37
                                             Capítulo 2. FUNDAMENTOS TEÓRICOS.
2.3 Conmutación electrónica.
La conmutación es el método con el cual se produce el cambio de la polaridad de las
bobinas en el servomotor, provocando la continuación del movimiento giratorio,
paro o cambio de sentido de giro. [12]
Para realizar la conmutación electrónica es necesario tener información de la
posición en la que se encuentran los imanes permanentes del rotor. Para esto se
utilizan los sensores de efecto Hall los cuales son dispositivos que cuando fluye una
corriente a través de él y éste se aproxima a un campo magnético perpendicular,
entonces se crea un voltaje saliente proporcional al producto de la fuerza del campo
magnético y de la corriente. Figura 5
Dentro del servomotor BLDC se encuentran tres sensores de efecto Hall digitales,
con lo cual, cuando se acerca un campo magnético éste nos da una salida lógica con
valor verdadero (1). [6]
                              Figura 5 Dibujo BLDC.
38
                                             Capítulo 2. FUNDAMENTOS TEÓRICOS.
2.3.1 Sensor efecto Hall.
Al realizarse la conmutación el conmutador electrónico debe conocer la posición
dónde se encuentran los imanes permanentes del rotor, y así poner la polaridad en
las bobinas del estator para lograr que el servomotor se mueva [6]. Esto se logra
utilizando los sensores de efecto Hall. Figura 6
Figura 6 Sensor de efecto Hall a) Montaje through hole y b) Montaje de superficie.
2.3.1.1 Efecto Hall
Cuando una partícula eléctricamente cargada se mueve a través de un campo
magnético sufre una fuerza de deflexión perpendicular tanto a la dirección de su
movimiento, como a la dirección del campo magnético. [13]
El efecto Hall se define cuando un campo magnético es perpendicular a una tira
delgada de material conductor, en la que circula una corriente eléctrica
longitudinalmente a través de la tira, las cargas en movimiento de la corriente se
acercaran a uno de los bordes mientras se mueven a lo largo de la tira. Figura 7
                                                                                   39
                                              Capítulo 2. FUNDAMENTOS TEÓRICOS.
                                Figura 7 Efecto Hall.
Debido a que los electrones se concentran a lo largo de un borde, existe una
diferencia de tensión a través de la tira. Este voltaje es conocido como el voltaje de
efecto Hall. Figura 8
                            Figura 8 Voltaje efecto Hall.
Si se retira el campo magnético, el voltaje de efecto Hall desaparece; si el sentido de
campo se invierte, el voltaje de efecto Hall también se invierte.
40
                                              Capítulo 2. FUNDAMENTOS TEÓRICOS.
                        Figura 9 Componentes Sensor Hall.
Una corriente constante circula a través de la tira conductora Hall dentro del sensor
en la Figura 9 se muestra un imán giratorio cerca del sensor. La variación de campo
de este imán genera un voltaje alterno de efecto Hall en la tira.
Esta señal de voltaje alimenta a los circuitos internos, que a la salida generan ya sea
0 VDC o 5 VDC. [13]
                                                                                    41
                                                Capítulo 2. FUNDAMENTOS TEÓRICOS.
2.4 Secuencia conmutación electrónica.
Al tener una combinación de los sensores Hall se pueden energizar las bobinas con
una secuencia lógica, de manera que se genere el movimiento rotatorio [6]. En la
configuración de conexión estrella que presenta el servomotor (Figura 10), ayudara
a ejemplificar la conmutación electrónica que consiste en la energización y
polarización de las bobinas de las fases en un lapso de tiempo y secuencia
determinado.
                                          a
                                             común
                                   c                 b
                       C                                  B
                  Figura 10 Diagrama eléctrico servomotor BLDC.
En la Figura 11 se presenta la primera secuencia de conmutación, en esta se
representa que la bobina A se polariza de manera positiva y la bobina B de manera
negativa, por lo tanto la corriente representada por la flecha fluye de la polarización
positiva hacia la negativa, generando un polo electromagnético positivo en la bobina
A y uno negativo en la bobina B
42
                                                 Capítulo 2. FUNDAMENTOS TEÓRICOS.
                                       a          1
                                         común
                               c                 b        -
                  C                                       B
                   Figura 11 Secuencia 1 de conmutación BLDC.
De manera similar la siguiente conmutación activa la bobina C con polarización
positiva y la bobina B (Figura 12) continua con la misma polarización, la bobina A
deja de recibir energía por lo tanto tiene tiempo para perder la energía almacenada.
                                       a
                                         común
                               c                 b
                                      2
                  C      +                            -   B
                   Figura 12 Secuencia 2 de conmutación BLDC.
                                                                                 43
                                                    Capítulo 2. FUNDAMENTOS TEÓRICOS.
En el siguiente ciclo (Figura 13) la bobina B deja de actuar y ahora solo entran en
funcionamiento la bobina A y C.
                                            A
                                        -
                                3               a
                                                común
                                    c                   b
                           +
                       C                                        B
                    Figura 13 Secuencia 3 de conmutación BLDC
Se continúa con las secuencias 4, 5 y 6 para completar la vuelta eléctrica (Figura 14).
                                6               a           4
                                                común
                                    c                   b
                       C                    5                   B
                Figura 14 Secuencias 4, 5 y 6 de conmutación BLDC
44
                                               Capítulo 2. FUNDAMENTOS TEÓRICOS.
La secuencia completa se muestra en la Figura 15, recordando que la dirección de la
corriente es indicada por el sentido de la flecha, de polo positivo a negativo.
                                   6               a       4
                                           3           1
                                                   común
                                       c                   b
                                               2
                       C                       5                    B
                      Figura 15 Secuencias conmutación BLDC
Esta secuencia en un diagrama de tiempos se muestra en la Figura 16. En este
diagrama también se muestran los valores de los sensores Hall para tener los
tiempos de energización y desenergización de las bobinas del servomotor BLDC
                                                                                  45
                                                                 Capítulo 2. FUNDAMENTOS TEÓRICOS.
                                             1         2        3        4        5         6        1
                                   V+
                    Bobina A      s/valor
                                   V-
                                   V+
                    Bobina B      s/valor
                                   V-
                                   V+
                    Bobina C      s/valor
                                   V-
                                     Alto
                    S. Hall A        Bajo
                                     Alto
                    S. Hall A        Bajo
                                     Alto
                    S. Hall A        Bajo
                    Código                   101       001     011      010      110       100      101
                    Figura 16 Diagrama de tiempos conmutación BLDC
2.5 Carta de conmutación.
La carta de conmutación es la representación en una tabla de las señales necesarias
para que el servomotor BLDC entre en funcionamiento. Algunos fabricantes brindan
esta información (Figura 17), pero si no se cuenta con esta información es necesario
utilizar métodos para obtenerla. [6]
                        Sensores Hall                                         Puente H Trifásico
                                                       Transistor Transistor Transistor Transistor Transistor Transistor
 Secuencia   Sensor C     Sensor B          Sensor A
                                                         C Alto     C Bajo     B Alto     B Bajo     A Alto     A Bajo
     6          0             0                  1         0          1          0           0         1           0
     4          0             1                  0         0          0          1           0         0           1
     5          0             1                  1         0          1          1           0         0           0
     2          1             0                  0         1          0          0           1         0           0
     1          1             0                  1         0          0          0           1         1           0
     3          1             1                  0         0          1          0           0         0           1
         Figura 17 Tabla de conmutación en nota de aplicación AN857 Microchip
46
                                              Capítulo 2. FUNDAMENTOS TEÓRICOS.
Para realizar la secuencia o carta de conmutación del motor, que será cargada al
dispositivo de control, se puede utilizar el siguiente procedimiento:
      Identificar las fases ABC del servomotor.
      Alimentar las bobinas con un voltaje menor al de placa, ya que se mantendrá
       de manera estática por un tiempo y la corriente puede llegar a dañar las
       bobinas.
      Conectar una de las fases en el polo positivo y otra en el polo negativo. El
       motor inmediatamente se posicionará alineándose al campo eléctrico.
      Sin dejar de alimentar el motor, medir la salida de los sensores de efecto Hall.
      Desconectar alguna fase y conectar la siguiente fase, manteniendo la tercera
       en la misma conexión con la fuente. El motor procederá a cambiar de posición
       por lo tanto, tendremos una nueva codificación de los sensores Hall.
      Proceder a desconectar la fase que se quedó en la misma polaridad en los
       pasos anteriores y conectar a la fase que se ha desenergizado, con esto el
       motor seguirá cambiando de posición y se tendrá una nueva lectura de los
       sensores Hall.
      Continuar hasta completar una vuelta mecánica completa.
Una representación de esta metodología de conmutación para giro en sentido
horario se presenta en la Figura 18.
                                                                                    47
                                              Capítulo 2. FUNDAMENTOS TEÓRICOS.
                 Figura 18 Conmutación BLDC en sentido horario.
Para realizar el cambio de giro podemos considerar el funcionamiento del BLDC
como un motor de DC. El cual para cambiar el sentido de giro solamente es necesario
invertir la polaridad de las fases de alimentación.
48
                                              Capítulo 2. FUNDAMENTOS TEÓRICOS.
2.6 Vuelta Mecánica y Vuelta Eléctrica.
Al tiempo en que un servomotor se acciona, existe una relación que sucede por la
construcción del motor.Al realizar una secuencia de conmutación electrónica, no
corresponde a una vuelta mecánica, en este servomotor AC300022 es necesario tener
5 conmutaciones electrónicas para dar una vuelta mecánica.
                     Figura 19 Vista interna de un servomotor.
La relación entre vuelta mecánica y vuelta eléctrica se determina en la construcción
del servomotor, durante la fabricación se determinara cuantos arreglos de bobinas
serán realizados dentro del motor (Figura 19). Esto es importante ya que esta
relación indica la resolución que tiene el servomotor, esto significa que determina el
mínimo movimiento que puede realizar el servomotor sin tener dispositivos de
retroalimentación. [6]
                                                                                   49
                                             Capítulo 2. FUNDAMENTOS TEÓRICOS.
2.7 Conmutación Trapezoidal.
La conmutación trapezoidal es una técnica en la cual se le brinda al motor la energía
en sus bobinas conforme se desplaza durante una vuelta eléctrica. Tiene las ventajas
de que es una técnica sencilla y no se requieren cálculos adicionales más que conocer
la posición de los imanes permanentes y esta se obtiene por los sensores de efecto
Hall. [14]
             0°      60°    120°    180°     240°     300°       0°     60°   Vuelta Eléctrica
Bobina A
                                                                                     V Bobina
Bobina B
                                                                                     I Bobina
Bobina C
                  Figura 20 Diagrama fases conmutación trapezoidal
Con esta técnica de conmutación en cualquier instante de tiempo, 2 bobinas se
encuentran energizadas mientras otra pierde energía para poder cambiar su
polaridad y continuar así con su movimiento. (Figura 20)
Esta es una de las mejores técnicas para posicionamiento ya que no son necesarios
mayores sensores de retroalimentación y es a un costo computacional bajo ya que
solo es necesario decodificar los sensores Hall. Una de sus desventajas es que existe
un rizo en el torque pero este se minimiza conectando el motor a algún mecanismo.
50
                                                Capítulo 2. FUNDAMENTOS TEÓRICOS.
2.8 Codificador de movimiento (Encoder).
Como parte del servomotor se encuentra el codificador de movimiento (Encoder), el
cual es un disco graduado con un retículo radial ranurado, un emisor luminoso y un
fotorreceptor (Figura 21). Con este dispositivo conectado al rotor del servomotor es
posible tener una referencia de la posición del rotor y poder implementar lazos de
control. [15]
                 Figura 21 Esquemático codificador de movimiento.
En el lado del fotodetector existe un circuito eléctrico el cual se encarga de convertir
las señales de luz en pulsos digitales por medio de dos canales con valor de 0 a 5 Vcc
(Figura 22). Estas señales se encuentran en configuración colector abierto, con la
finalidad de facilitar la electrónica y disminuir la afectación de las señales por ruido.
                                          Sentido
                                          Horario
                              B
                                          Sentido
                                          Antihorario
                    Figura 22 Señales de codificador de posición.
Dentro del servomotor AC300022 se encuentra un decodificador de 250 posiciones.
                                                                                      51
                                                   Capítulo 2. FUNDAMENTOS TEÓRICOS.
2.9 Puente H.
El puente H es un conjunto de interruptores principalmente electrónicos, los cuales
brindan la función de cambiar el sentido de giro en un motor de DC sin utilizar dos
fuentes de energía diferentes. [16]
                                  V+                                           V+
                    i                                                                         i
        Control            giro        Control        Control           giro          Control
        Alto 1                         Alto 2         Alto 1                          Alto 2
                                  M                                     M
      Control                            Control        Control                     Control
      Bajo 1                             Bajo 2         Bajo 1                      Bajo 2
                                  V-                                           V-
                        Figura 23 Diagrama estados puente H.
El puente H recibe su nombre de la representación gráfica (Figura 23), con este se
realiza la energización y cambio de polaridad en las bobinas del estator, por lo que
se utilizó como dispositivo de potencia para que el servomotor realice la
conmutación electrónica.
52
                                               Capítulo 2. FUNDAMENTOS TEÓRICOS.
                           V+
                                                                     A
    Control      Control        Control
    Alto A       Alto B         Alto C
                                                                      a
                                                                         común
    Control      Control        Control                         c                b
    Bajo A       Bajo B         Bajo C
                                                       C                             B
                           V-
              Figura 24 Diagrama de conexión del puente H trifásico y BLDC.
El servomotor requiere un puente H del tipo Trifásico (Figura 24), con las
restricciones: no conectar los interruptores en la misma rama para evitar un
cortocircuito; tener conexión en todas las ramas del puente H; además de verificar
la secuencia de conmutación.
Los puentes H se pueden implementar con diferentes componentes electrónicos
desde interruptores, relevadores, transistores unión bipolar (BJT: bipolar junction
transistor), transistores de efecto de campo metal-oxido- semiconductor (MOSFET:
metal-oxide-semiconductor field effect transistor) y con la tecnología más actual
transistor bipolar de compuerta aislada (IGBT: isolated gate bipolar transistor), sus
respectivas ventajas y desventajas. [17]
                                                                                         53
                                              Capítulo 2. FUNDAMENTOS TEÓRICOS.
2.9.1 Transistores IGBT.
Durante muchos años el sector de la electrónica de potencia ha centrado su
investigación en el desarrollo de componentes capaces de alcanzar grandes
velocidades de conmutación y grandes cargas y que fueran sustitutivos de las
tecnologías anteriores que, para ciertas aplicaciones, ya habían quedado obsoletas -
como es el caso del transistor bipolar BJT y los MOSFET. Para ello, los investigadores
han combinado desde hace más de dos décadas las posibilidades de los transistores
bipolares BJT y los denominados MOSFET, un transistor de efecto de campo basado
en la estructura MOS (Metal Oxide Semiconductor).
De esta combinación nace en los años 80 el IGBT, como un dispositivo
semiconductor de gran capacidad que generalmente es utilizado en sistemas o
aparatos que requieren circuitos de electrónica de alta demanda de corriente (hasta
1000 A) y con velocidades de conmutación de hasta 20 hHz. (Figura 25)
Estos transistores IGBT son la última generación en el campo de los dispositivos de
conmutación para alta tensión que combina los atributos del BJT y del MOSFET. La
combinación de una puerta aislada (G) tipo MOS y un colector (C)/emisor (E)
bipolar le permite conmutar tensiones y corrientes mucho mayores. El flujo de
corriente se controla a través de una fuente de tensión de alta impedancia que
permite que se puedan controlar intensidades elevadas con una potencia de control
muy baja. De hecho, uno de los éxitos de IGBT es su baja necesidad de energía de
control para pasar del modo conducción al modo bloqueo y viceversa.
                       Figura 25 Símbolo del transistor IGBT.
54
                                            Capítulo 2. FUNDAMENTOS TEÓRICOS.
               Figura 26 Curvas características del transistor IGBT.
Debido a que existe un alta demanda de puentes H implementados con transistores
IGBT, las empresas fabricantes de semiconductores se dieron a la tarea de integrar
los puentes H en un solo chip, con las ventajas que ello conlleva: disminución de
material, menor vulnerabilidad al ruido, menor volumen, mejor disipación de calor.
Los fabricantes además de realizar un chip con el funcionamiento del puente H,
implementaron circuitos de protección (protección contra cortocircuito, bajo voltaje
de alimentación, activación de rama completa), circuitos de operación (diodos de
retorno, diodos de arranque, apagado inteligente) y una amplia gama de operación
(desde 1 A hasta 1200 A); al ya no solo operar como puente H, recibe el nombre de
modulo inteligente de potencia (IPM: intelligent power module) [17]
                                                                                 55
                                              Capítulo 2. FUNDAMENTOS TEÓRICOS.
2.10 IPM.
Para la parte de potencia del trabajo desarrollado se utilizó el módulo de potencia
STGIPS20K60 (Figura 27) fabricado por STMicroelectronic [18]. Dado que en el
momento de diseño fue el chip con mejores características, entre las cuales están:
        Puente H construido por IGBT con manejo de 18 A y 600 V.
        Frecuencia máxima de PWM 20 kHz.
        Protección de cortocircuito.
        Protección sobrecorriente.
        Protección para bajo Voltaje.
        Entradas con resistencias Pull up / Pull down.
        Comparadores de entrada para tecnologías CMOS/TTL (3.3 V, 5 V, 15V) con
         histéresis.
        Función de apagado inteligente.
                                Figura 27 STGIPS20K60
56
                                                 Capítulo 2. FUNDAMENTOS TEÓRICOS.
Tabla 3 Tabla de verdad chip STGIPS20K60.
                                      Entradas Logicas                  Salidas
                                           Entrada    Entrada
         Condicion            Apagado o Compuerta Compuerta Transistor       Transistor
                             Habilitacion Transistor Transistor Parte Baja   Parte Alta
                                          Parte Baja Parte Alta
  Apagado habilitado              0          x           x        Abierto     Abierto
  Enclavamiento en medio
                                  1          0           1        Abierto     Abierto
  puente H
  Estado logico 0 en medio
                                  1          1           0        Abierto     Abierto
  puente H
  Estado logico 1 en parte
                                  1          0           0       Cerrado      Abierto
  baja del puente H
  Estado logico 1 en parte
                                  1          1           1        Abierto     Cerrado
  alta del puente H
                                              x: condicion no importa
El diagrama de bloque del IPM STGIPS20K60 se presenta en la Figura 28.
                                                                                          57
                             Capítulo 2. FUNDAMENTOS TEÓRICOS.
     Figura 28 Diagrama de bloque de STGIPS20k60.
58
                                                  Capítulo 2. FUNDAMENTOS TEÓRICOS.
2.11 Capacitores de Arranque.
Dentro de un arreglo de puente H, la fuente de alimentación para los transistores
IGBT en la parte alta y la parte baja es compartida, la referencia o tierra se encuentra
en la parte baja, para que la compuerta de los transistores pueda se activada es
necesario tener un potencial más alto que la referencia, debido a que en la parte alta
no encontramos una referencia, no se alcanzaría ese potencial por lo tanto los
transistores no se activarían, esto se muestra en la Figura 29.
                                                   V Carga
                                       V Driver
                 Control
                 Alto                       +
                                                             Hacia
                                  Driver           ?         Servomotor
                                  IGBT
                 Control
                 Bajo                       +
                                                   -
                                           GND
                  Figura 29 Necesidad de capacitores de arranque.
Los capacitores de arranque tienen la función de dar una fuente sin referencia,
“flotada”, durante un tiempo corto para que pueda existir la conmutación de los
transistores en la parte alta del puente H (Figura 30).
                                                                                     59
                                                    Capítulo 2. FUNDAMENTOS TEÓRICOS.
                                                V Carga
                                     V Driver
             Control
             Alto                         +
                                                           Hacia
                                Driver    -     -          Servomotor
                                IGBT
             Control
             Bajo                         +
                                                -
                                         GND
                       Figura 30 Función del capacitor de arranque.
Estos capacitores tienen que tener sus ciclos de carga y descarga con una constante
de tiempo menor al tiempo del ciclo de conmutación en los transistores IGBT, por lo
cual, los capacitores de tipo cerámico con una baja resistencia en serie equivalente
(ESR: equivalent series resistance) son adecuados, ya que su tiempo de carga es
corto, siendo más rápida que el tiempo requerido para la acción de conmutación.
Debido a que es necesario que carguen antes de realizar una conmutación,
restringirán el uso de la modulación de ancho de pulso ya que no puede existir un
ciclo de trabajo mayor al tiempo en que tardan en cargarse los capacitores.
60
                                            Capítulo 2. FUNDAMENTOS TEÓRICOS.
2.12 Desenergizado lento y desenergizado rápido.
Al trabajar con cargas eléctricas de tipo inductivo como motores, solenoides o
relevadores existen una corriente que fluye de manera opuesta a la corriente
principal. Dentro de las leyes de la física se conoce que los inductores se oponen a
cambios abruptos de corriente, ya sea cuando se están cargando o cuando existe una
descarga.
Al aplicar un voltaje en el inductor, una corriente comienza a fluir y genera un
campo magnético. El campo magnético al mismo tiempo, genera una corriente
opuesta a la corriente entrante haciendo una oposición dentro del elemento
inductor.
Figura 31 Casos control de corriente en carga inductora por medio de transistores.
                                                                                 61
                                               Capítulo 2. FUNDAMENTOS TEÓRICOS.
En la Figura 31 en el apartado a) muestra una corriente que fluye en nuestro
inductor, tan pronto como se activa el transistor la corriente empieza a fluir hasta
que se satura el inductor. Pero al desactivar el transistor, apartado b, toda la energía
almacenada en el inductor saldrá, pero la corriente no puede cambiar abruptamente
su polaridad, como resultado el inductor es ahora la fuente y el transistor se
convierte en la carga, subiendo el voltaje en el transistor hasta que se ha dañado el
transistor.
Para dar un camino de recirculación de corriente, apartado c), se agrega un diodo de
recirculación. El diodo se coloca de tal manera que mientras el transistor está activo,
el diodo se encuentra en polarización inversa por lo tanto no circula corriente. Solo
cuando el transistor esta desactivado, el diodo se encuentra en polarización directa
por lo cual recirculara la corriente a través de la carga inductiva, hasta que por
razones de resistencia de conductor la corriente se disipa.
En el modo de desenergización rápida es darle forzar a la corriente en el inductor
sea cero. La tensión en el inductor es el voltaje en la fuente menos dos caídas de
voltaje en los transistores. Ya que la tensión dentro de un inductor en el servomotor
solo puede ser tan grande como la fuente, al cambiar de transistores por la
conmutación, regresaremos la energía a la fuente forzando a cambiar de polaridad
en el inductor.
En la desenergización lenta es dejar circular la corriente hasta que esta se disipe. Por
lo tanto, cuando se vuelve a aportar más energía la bobina ya cuenta con cierta carga
y cargara en menor tiempo.
62
                                            Capítulo 2. FUNDAMENTOS TEÓRICOS.
2.13 FPGA.
Los FPGA introducidos por Xilinx en 1985, son dispositivos con miles de compuertas
lógicas reconfigurables (hardware) cuyas características y medios de interconexión
son configuradas o modificadas mediante programación (software). [4]
La arquitectura de un FPGA (Figura 32) consiste en arreglos de múltiples celdas
lógicas idénticas las cuales se comunican entre ellas por medio de canales de
conexiones verticales y horizontales
                      Figura 32 Arquitectura General FPGA.
Una de las diferencias entre el FPGA y su antecesor el dispositivo lógico complejo
programable (CPLD: Complex Programable Logic Device) es su forma de
programación. El dispositivo FPGA utiliza una memoria estatica de acceso aleatorio
(SRAM; Static Random Access Memory) la cual canaliza un circuito de conexión
para que las celdas lógicas interactúen como lo muestra la Figura 33.
                                                                               63
                                              Capítulo 2. FUNDAMENTOS TEÓRICOS.
      Figura 33 FPGA programación, conexiones y canalizaciones por SRAM.
El FPGA utilizado para la realización del proyecto es XC2VP30 de la compañía
Xilinx, implementado en la tarjeta de desarrollo Virtex II Pro. Figura 34
                Figura 34 Tarjeta de Desarrollo Virtex II Pro, Xilinx.
64
                                              Capítulo 2. FUNDAMENTOS TEÓRICOS.
En la Tabla 4 se muestran las características más importantes de la tarjeta Virtex II
Pro.
Tabla 4 Características Virtex II Pro.
                        Reloj Maestro                 100 MHz
                        Celdas lógicas                30816
                        Salida de pines               80
                        Bloques Multiplicadores       136
                        Procesadores PowerPC          2
                        Tamaño de multiplicadores     18 bits
                        Bloques RAM                   2448 kb
2.14 Interfaz.
La interfaz de un sistema es la conexión física que permite la interacción de un
sistema con actores externos u otros sistemas. En esta aplicación se requiere de una
interfaz hombre-máquina para operar y configurar los motores del sistema, por lo
cual, se diseñó la interfaz gráfica e intuitiva para uso en una PC, además de embeber
en el FPGA una estructura de registros para el almacenamiento de datos, a través de
los cuales se da la interacción. [19]
En la Figura 35, se presenta el esquema a bloques de la interfaz implementada
                                           FPGA
       PC                      Banco de
                               Registros
              Puerto                                   Aplicación              Planta
             Paralelo
                           Figura 35 Interfaz implementada.
Esta interfaz se compone de la conexión física entre el puerto paralelo de la PC y el
banco de registros en el FPGA, su estructura permite el acceso de datos a una
                                                                                    65
                                              Capítulo 2. FUNDAMENTOS TEÓRICOS.
dirección específica, logrando así que con un solo bus se puedan tener los registros
necesarios, para cualquier aplicación.
2.14.1 Puerto Paralelo de la PC.
El puerto paralelo se constituye como medio de Entrada / Salida de la PC, la
computadora se comunica de forma sencilla y practica con su entorno. En la
aplicación de este proyecto, se utiliza el puerto paralelo, que es capaz de transmitir
ocho bits en forma paralela con una velocidad de hasta 1 MHz.
El puerto paralelo originalmente fue diseñado para el uso de impresoras, este cuenta
con tres direcciones físicas accesibles para el usuario en sistemas operativo
Windows; sin embargo, es posible utilizarlo para aplicaciones donde se requieren
entradas y salidas digitales desde la computadora.
El puerto paralelo cuenta con las características siguientes:
        Puerto bidireccional.- Es capaz de transmitir y recibir datos de ocho bits.
        Es vigente.- Existe como medio de comunicación en computadoras recientes.
         Figura 36
        La velocidad.- Ronda entre los 50 a 150 Kb por segundo [20], la cual es
         suficiente para la aplicación, dado que solo se utilizará para configurar y
         monitorear.
        Sencillez de uso.- Solo requiere de dos instrucciones para su cambiar la
         dirección del bus en operación: outport e inport.
         Figura 36 Motherboard Intel BOXDH61CRB3 LGA 1155 para procesador i7.
66
                                             Capítulo 2. FUNDAMENTOS TEÓRICOS.
2.14.2 Configuración del puerto paralelo.
Generalmente en puertos ensamblados directamente en la tarjeta madre de la PC,
las direcciones en las que el fabricante preestablece el puerto paralelo es de la
siguiente manera: ocho bits de datos bidireccionales en la dirección de puerto 0x378
sistema operativo Windows (dirección base), el bit cinco del puerto 0x37A se usa
para su configuración: con cero se configura el bus como salida y con uno es entrada
(Figura 37).
                    Figura 37 Esquema de puerto paralelo PC.
La configuración establecida para este proyecto se muestra en la Tabla 5. [19]
   Tabla 5 Configuración de pines para puerto paralelo usada en este proyecto.
                  Número de pin Dirección Nombre Invertida
                       2         0x378    Dato (0)  No
                       3         0x378    Dato (1)  No
                       4         0x378    Dato (2)  No
                       5         0x378    Dato (3)  No
                       6         0x378    Dato (4)  No
                       7         0x378    Dato (5)  No
                       8         0x378    Dato (6)  No
                       9         0x378    Dato (7)  No
                       1         0x37A      Reset   Si
                      14         0x37A    Escritura Si
                      16         0x37A     Lectura  No
                      17         0x37A    Dirección Si
                                                                                 67
                                                Capítulo 2. FUNDAMENTOS TEÓRICOS.
2.15 Registro Digital.
Un registro de datos, Figura 38, es un espacio físico dentro del hardware, donde se
almacenan los datos del sistema o configuraciones del usuario.
                                   Registro
               Datos Entrada                               Datos Salida
                  Escritura           Información
                  Lectura
                   Reset
               Figura 38 Diagrama general de un registro electrónico
La configuración típica de un registro es bus de datos bidireccional de ocho bits y
tres señales de control: escritura, ingresa datos; lectura, saca datos y reset que
inicializa el contenido del registro digital.
Con el registro digital se puede conformar un banco de registros, el cual puede ser
un medio en el que se guarda información, además, cumple la función de ser un
camino para transmisión de datos entre una interfaz y un sistema embebido en un
FPGA.
68
Capítulo 3.
ALGORITMOS
REQUERIDOS.
3.1 Introducción.
En este capítulo se describen todas las abstracciones de conceptos necesarios con el
objetivo de tener un concepto fundamentado para dar paso a la implementación.
Los mecanismos usados en aplicaciones de posicionamiento, necesitan tener un
control en sus movimientos para tener un óptimo funcionamiento, por lo cual se
necesita realizar un perfil de trayectoria en cada movimiento desarrollado. Realizar
implementación sin considerar el perfil de trayectoria, conlleva a que los resultados
siempre estén lejos de un funcionamiento apropiado.
                                                                                  69
                                             Capítulo 3: ALGORITMOS REQUERIDOS.
Para tener el desarrollo de un perfil de trayectoria es necesario contar con un control
de posición, velocidad y aceleración en los actuadores que en este trabajo son los
servomotores BLDC.
Una de las mejores arquitecturas de control en simplicidad y menor uso de recursos
computacionales para múltiples variables es la de control distribuido, se requiere la
menor cantidad de recursos para que sea repetible dentro del dispositivo FPGA.
Para este trabajo el sistema regulatorio se encargara de controlar la variable posición
y el sistema supervisorio se encargara de las variables velocidad y aceleración.
El algoritmo de control elegido es el PID ya que puedes ser implementado en
hardware dedicado para tener un control en tiempo real. Para el control de las
variables de velocidad y aceleración se utilizan los algoritmos del movimiento del
movimiento rectilíneo uniforme.
Debido a que los cálculos del movimiento rectilíneo uniforme son iterativos y
cuentan con operaciones de alto nivel, como raíz cuadrada y división, se diseña un
procesador de propósito general.
Los dispositivos físicos donde se implementa los sistemas, cuentan con límites de
funcionamiento, por lo cual es necesario desarrollar operaciones que puedan ser
representadas en estos dispositivos y limitar sus valores, para esto es necesario
realizar los cálculos con una aritmética binaria y saturante.
70
                                              Capítulo 3: ALGORITMOS REQUERIDOS.
3.2 Control automático.
El objetivo del control automático es mantener en un valor determinado de
operación las variables de un proceso. La mayoría de los procesos son dinámicos,
por lo que son propensos a ser afectados por perturbaciones como fuerzas externas,
dinámica de los materiales, temperatura, entre otras. Por lo cual si no emprenden las
acciones pertinentes, las variables importantes del proceso salen de parámetros
ideales, es decir, aquellos que se relacionan con la seguridad, desempeño y uso
eficiente de energía, por lo que no se cumplirán con las condiciones que se
plantearon en el diseño. [21]
Para ejemplificar esto, imaginemos un brazo robótico en el proceso de armado
automotriz, el cual si viaja a una velocidad no controlada o no se regula su posición
puede salir del espacio designado, causando daños a personas, infraestructura o a sí
mismo. En esto se requieren sistemas que puedan limitar su posición y sistemas que
calculen la mejor trayectoria utilizando la menor cantidad de energía entre otros;
logrando así, un desempeño óptimo, preciso y seguro.
Para lograr esto, todo sistema de control necesita realizar tres operaciones básicas.
      Medición. La medición de la variable que se desea controlar se logra
       mediante dispositivos que tienen la capacidad de interactuar con la variable
       sin modificarla, estos son conocidos como sensores. En ciertas ocasiones, el
       sensor no obtiene una señal con la que se puede trabajar directamente, en
       estos casos se utilizan dispositivos llamados traductores, con los cuales
       tenemos una medición equivalente de la muestra tomada por el sensor; en
       otros casos, la señal no tiene la energía suficiente para llegar al dispositivo de
       decisión con lo cual se utiliza los dispositivos llamados transmisores, éstos
       brindarán la energía suficiente sin afectar la muestra.
      Decisión. Con base la medición obtenida, es necesario evaluar si esta
       medición está dentro de los parámetros de diseño o de desempeño óptimo. Si
                                                                                      71
                                              Capítulo 3: ALGORITMOS REQUERIDOS.
         es negativo, un dispositivo llamado controlador definirá las acciones
         necesarias para mantener la variable dentro del valor deseado.
        Acción. Como resultado de la decisión del controlador se debe efectuar una
         acción en el sistema, esto se realizará mediante dispositivos que tengan la
         capacidad de influir dentro del proceso.
Estas tres operaciones mencionadas, son obligatorias para todo sistema de control.
En algunos sistemas, la toma de decisión es sencilla y se puede observar mediante
sentidos humanos, mientras que en otros es más compleja o no es observable por los
sentidos humanos.
Dentro de los robots móviles donde se tienen variadas y diferentes necesidades
motrices de posicionamiento, se necesita realizar estas operaciones para cada uno de
los ejes involucrados [22].
3.3 Perfil de trayectoria.
El perfil de trayectoria se puede puntualizar como el movimiento ideal que se debe
desarrollar al realizar una acción de posicionamiento. Este describe que el
movimiento de cualquier cuerpo de un punto “A” hacia un punto “B”, primero tiene
que acelerar para salir del reposo, viajar a una velocidad constante y regresa a reposo
llegando al punto “B” [3] [2]. Figura 39
           Figura 39 Perfil de Trayectoria desplazamiento punto A hacia B.
72
                                                Capítulo 3: ALGORITMOS REQUERIDOS.
Para ejemplificar utilizaremos un uso cotidiano: durante un viaje en automóvil, de
manera innata se aplica este comportamiento, al empezar el viaje estimamos una
velocidad límite de viaje y accionamos el pedal acelerador de manera suave y
constante, con esto obtenemos salir del reposo y empezar el trayecto; al llegar el
límite de velocidad establecido, únicamente se posiciona el pedal para vencer la
fuerza de oposición, ya no se requiere acelerar únicamente mantener la velocidad;
al acercarnos a nuestro destino aplicamos la acción de los frenos, por lo que se
desacelera, hasta llegar a nuestro destino.
Si no se realiza el comportamiento descrito se presentan desde errores de
posicionamiento, de control, desgaste prematuro en los dispositivos mecánicos,
oscilaciones del sistema, y uso ineficiente de energía.
Para construir un adecuado perfil se utilizan las ecuaciones físicas de movimiento
rectilíneo uniformemente acelerado.
                                         𝑠                                   ( 1)
                                      V=
                                         t
                                      Vf − Vi                                ( 2)
                                   a=
                                         t
                                                                             ( 3)
                            Vf = √(Vi )2 + 2a (x − x0 )
Donde:
      V    --- velocidad
       s   --- distancia
       t   --- tiempo
      Vf   --- velocidad final
      Vi   --- velocidad inicial
       a   --- aceleración
       x   --- distancia final
      x0   --- distancia inicial
                                                                                    73
                                              Capítulo 3: ALGORITMOS REQUERIDOS.
3.3.1 Desarrollo perfil de trayectoria.
Una de las ideas más importantes desarrolladas en el trabajo es la determinación
que: si a un control de posición se le varía la referencia deseada durante intervalos
de tiempo este realizará un movimiento para eliminar el error y alcanzar la
referencia deseada, si se continúa variando la referencia en intervalos de tiempo el
sistema regulatorio desarrollara una velocidad y tendrá una aceleración (Figura 40).
      Referencia
                     8                     Velocidad
                     7                     distancia
                     6                      tiempo
                     5
                     4
                     3
                     2
                     1
                             Tiempo
                    Figura 40 Cambio de referencia vs. Tiempo.
Con esta afirmación se puede realizar un comportamiento de perfil de trayectoria en
cada eje, realizando el cálculo del tiempo en el que se debe realizar un cambio en la
referencia hacia el sistema regulatorio.
Debido a que se puede considerar al sensor de retroalimentación de posición como
una línea extendida, se adaptaron las ecuaciones de movimiento rectilíneo
uniformemente acelerado para realizar el perfil de trayectoria.
                                                                                ( 3)
                           Vf = √(Vi )2 + 2a (x − x0 )
74
                                               Capítulo 3: ALGORITMOS REQUERIDOS.
Debido a que desplazamiento mínimo es una cuenta del encoder y esta se va
cambiando para que el servomotor tenga un desplazamiento suave, se considera que
la diferencia entre x y x0 será 1.
Por lo tanto la ecuación simplifica, quedando de la siguiente forma
                                                                               ( 4)
                                 Vf = √(Vi )2 + 2a
Una vez calculada la velocidad final se procede a calcular el tiempo para el cambio
de referencia. Utilizando la ecuación 2 se utiliza para conocer el tiempo
                                      Vf − Vi                                  ( 5)
                                     t=
                                         a
Este tiempo es el valor que se tendrá que esperar para variar el valor de referencia
para generar una velocidad y una aceleración.
El perfil de trayectoria consta de tres etapas principales:
      Aceleración.
   La etapa de aceleración se debe dar de manera constante hasta tener una
   velocidad constante, atendiendo que la posición requerida final sea suficiente
   para cumplir el periodo de aceleración y desaceleración, si no cumple el sistema
   supervisorio se encargará de dividir el espacio para que la aceleración y
   desaceleración tengan el mismo recorrido. En la Figura 41 se muestra el
   comportamiento esperado donde: A y B distancia a recorrer, a periodo de
   aceleración
                                                                                      75
                                                    Capítulo 3: ALGORITMOS REQUERIDOS.
              V
                                       Velocidad Constante
              E
                              ión
              O
                           ac
              C
                             r
              I           ele
                       Ac
                            a
                   A                          Posicion (cuentas)                B
                        Figura 41 Perfil de trayectoria sección aceleración.
        Velocidad constante.
     En esta etapa (Figura 42) ya se alcanzó la velocidad a la que se requiere realizar
     el movimiento por lo tanto el tiempo entre cambio de referencia será igual,
     mientras no se llegue al espacio designado para la desaceleración.
          V
                                     Velocidad Constante
         E
         L
                        ión
          O
                     rac
          C
                  ele
         I
                  Ac
                       a                       b
              A                             Posicion (cuentas)                  B
              Figura 42 Perfil de trayectoria sección de velocidad constante.
         Para designar el espacio en el que se realizará el movimiento a velocidad
         constante se puede definir matemáticamente como b = (B-A)-2a.
        Desaceleración.
76
                                        Capítulo 3: ALGORITMOS REQUERIDOS.
Para finalizar el perfil de trayectoria resta la etapa de desaceleración, la cual
tendrá que tener el mismo espacio que la sección de aceleración y su finalidad
será dar un periodo para que la velocidad tenga el valor de 0 cuando se esté
en el punto final de la trayectoria. Figura 43
 V
                         Velocidad Constante
 E
                                                             De
              ión
                                                                s
            rac
                                                               ac
 C
                                                                  e
         ele
                                                                    ler
 I
         Ac
                                                                       a
                                                                      ció
 D
                                                                          n
 A
              a                    b                           c
     A                          Posicion (cuentas)                            B
         Figura 43 Perfil de trayectoria sección de desaceleración.
                                                                                  77
                                              Capítulo 3: ALGORITMOS REQUERIDOS.
3.3.2 Diagrama de flujo perfil de trayectoria.
Al plantear este comportamiento en un diagrama de flujo para tener una referencia
en la programación no solo del FPGA en esta aplicación, el perfil de trayectoria
puede ser programado en cualquier desarrollo de control de posición.
3.3.2.1 Adquisición de datos.
Al iniciar un movimiento es necesario tener los datos de posición final, valor de la
velocidad constante a la que se requiere desarrollar el movimiento y el valor de la
aceleración con la que se requiere desempeñar el movimiento. Figura 44
                                        Inicio
                              Lectura posición, velocidad
                                constante y aceleración
                                       deseados
Figura 44 Diagrama de flujo del perfil de trayectoria sección adquisición de datos.
3.3.2.2 Aceleración.
En la sección de aceleración (Figura 45) se ocuparán las ecuaciones de movimiento
uniformemente acelerado para el cálculo del tiempo, que es el tiempo en el que se
modifica la referencia del sistema supervisor que desencadenara un movimiento en
el servomotor.
78
                                                 Capítulo 3: ALGORITMOS REQUERIDOS.
                       V_f=sqrt((V_i )^2+2a )
                            t=(V_f-V_i)/a
                              V_i=V_f                    Contador aceleración +1
                Si     Si Contador aceleración
                                                          Contador posición +1
                           >= (posición / 2)
                                       No
                                                  No
                         Si V_f >= velocidad
                              constante
                              Si
       Figura 45 Diagrama de flujo del perfil de trayectoria sección aceleración.
Existen dos salidas de este ciclo:
       Cuando el contador del ciclo de aceleración tenga el mismo valor de la mitad
        posición deseada.
                                                                                    79
                                                     Capítulo 3: ALGORITMOS REQUERIDOS.
        Cuando el valor de velocidad final sea igual o mayor al valor de velocidad
         constante deseado.
3.3.2.3 Velocidad constante.
Al pasar de la sección de aceleración, es necesario calcular el tiempo para desarrollar
una velocidad constante, para el cálculo de la velocidad se obtiene dividiendo la
distancia recorrida entre el tiempo, si despejamos la variable tiempo y consideramos
que la distancia mínima será 1 cuenta, se obtiene que el tiempo es la inversa de la
velocidad constante deseada (6). Figura 46
                                                1                                 ( 6)
                                           t=
                                                V
                t=1/velocidad constante                  Contador posición +1
                   Si Contador velocidad        No        Contador velocidad
                 constante > (posición – 2 *
                  (contador aceleración))                    constante +1
                         Si
                              C
 Figura 46 Diagrama de flujo del perfil de trayectoria sección velocidad constante.
80
                                             Capítulo 3: ALGORITMOS REQUERIDOS.
Para salir de este ciclo se cuentan con el contador de velocidad constante, el cuál
cuando sea mayor que la resta de la posición deseada menos el doble del contador
de aceleración saldrá del ciclo velocidad constante. Esto significa que la distancia
recorrida para la aceleración tiene que ser igual a la distancia que le tomara
desacelerar aunque se tenga que descartar la sección de velocidad constante.
3.3.2.4 Desaceleración.
Al llegar el ciclo de desaceleración, al igual que en la aceleración, se utilizarán las
ecuaciones del movimiento rectilíneo uniforme para calcular el tiempo hasta llegar
a una velocidad 0. Figura 47
El fin del ciclo y por consiguiente el fin del movimiento, está dado por dos
condiciones:
      Que la posición deseada tenga el valor de 1 para lo cual no existe espacio para
       desacelerar.
      Que el contador de desaceleración sea igual al contador de aceleración, con
       lo que se asegura que tuvieron el mismo espacio para desarrollarse.
      Que se complete el movimiento requerido.
                                                                                    81
                                                  Capítulo 3: ALGORITMOS REQUERIDOS.
                  No
                             Posición != 1
                               Si
                         V_f=sqrt((V_i )^2+2a )
                             t=(V_f-V_i)/a
                               V_i=V_f                  Contador desaceleración +1
                              Si Contador
                                                  No
                           desaceleración >=              Contador posición +1
                          contador aceleración
                                Si
                                    Fin
     Figura 47 Diagrama de flujo del perfil de trayectoria sección desaceleración.
En la Figura 48 se presenta el diagrama de flujo completo para desempeñar un perfil
de trayectoria.
82
                                                  Capítulo 3: ALGORITMOS REQUERIDOS.
                            Inicio
                 Lectura posición, velocidad
                   constante y aceleración
                          deseados
                   V_f=sqrt((V_i )^2+2a )
                        t=(V_f-V_i)/a
                           V_i=V_f                      Contador aceleración +1
            Si    Si Contador aceleración
                                                         Contador posición +1
                      >= (posición / 2)
                                      No
                                                  No
                     Si V_f >= velocidad
                          constante
                           Si
                  t=1/velocidad constante                Contador posición +1
                     Si Contador velocidad       No       Contador velocidad
                   constante > (posición – 2 *
                    (contador aceleración))
                                                             constante +1
                           Si
                                 C
           No
                         Posición != 1
                           Si
                   V_f=sqrt((V_i )^2+2a )
                        t=(V_f-V_i)/a
                           V_i=V_f                     Contador desaceleración +1
                         Si Contador
                                                 No
                      desaceleración >=                  Contador posición +1
                     contador aceleración
                            Si
                                Fin
Figura 48 Diagrama de flujo del perfil de trayectoria
                                                                                    83
                                              Capítulo 3: ALGORITMOS REQUERIDOS.
3.4 Sistema de control distribuido.
El sistema de control distribuido se define como una de las arquitecturas de control
en la cual es posible tener una regulación en más de una variable o proceso. El
sistema de control distribuido es un sistema en el que las tareas del procesador
principal se distribuyen en módulos o procesadores locales y estos procesadores se
distribuyen en pequeñas tareas hasta completar el proceso.
El control distribuido tiene la filosofía de “divide y vencerás”, de manera que divide
tareas complicada a tareas individuales de menor complejidad. En su arquitectura
más simple (Figura 49) se conforma de 2 bloques: el sistema supervisor y el sistema
regulatorio.
                                       Control
                                      Distribuido
                              Sistema
                                                 Sistema
                             Supervisor
                                                Regulador
                            (Velocidad y
                                                (Posición)
                            Aceleración)
                Figura 49 Diagrama a Bloques Control Distribuido.
Para realizar un perfil de trayectoria, la arquitectura de control distribuido es ideal
ya que el control de posición la efectúa el sistema regulatorio y el sistema
supervisorio se encargará de controlar las variables de velocidad y aceleración que
son directamente dependientes de la posición.
84
                                            Capítulo 3: ALGORITMOS REQUERIDOS.
3.4.1 Sistema regulatorio.
Dentro de un control distribuido el sistema regulatorio es el encargado ejecutar la
regulación de manera individual o local. Está configurado para compensar
perturbaciones que generaran un cambio con respecto al punto de referencia.
Existen diferentes algoritmos de control que pueden solucionar las necesidades del
sistema regulatorio, entre las cuales están los algoritmos para lazo abierto y los de
lazo cerrado. El algoritmo con mayor uso en aplicaciones para posicionamiento es el
PID (Proporcional-Integral-Derivativo).
A pesar que existen algoritmos basados en técnicas más avanzadas, entre las cuales
están redes neuronales, control difuso e inteligencia emocional, entre otras; su
resultado en el mayor de los casos es llevado a un control PID. Una de las mayores
ventajas de utilizar un algoritmo PID es el que tiene un costo computacional bajo, ya
que como se describirá a continuación solo son necesarias operaciones de
sumatorias, resta y multiplicaciones; por lo cual es de fácil implementación y se
puede encontrar en integrados en microprocesadores y chips dedicados.
3.4.1.1 Filtro PID.
El controlador PID es una de las técnicas de control clásico para sistemas de control
retroalimentado que más se emplea, se estima que el 95% de controladores utiliza
este algoritmo de control. La importancia de este control es que tiene un bajo costo
computacional y corrige el error en tiempo real, dentro de las desventajas que tiene
el controlador PID es que solo es aplicable en sistemas lineales, que se pueden
describir mediante modelado matemático. [23]
Una de las ventajas del servomotor BLDC es que es un sistema lineal además de ser
sistema de 2° orden, cuenta con dos polos complejos (La(s) y Jm(s)). Por lo cual, ha
                                                                                  85
                                              Capítulo 3: ALGORITMOS REQUERIDOS.
sido ampliamente modelado en investigaciones anteriores [24]. En la Figura 50 se
presenta el modelo a bloques del servomotor BLDC.
                       Modelo eléctrico                     Modelo mecánico
       V +
               ∑     V-Keω           1
                                  Ra+La(s)
                                               I        I        Kt
                                                              Jm(s)+Bm
                                                                                   ω
                       Keω          Ke
     Figura 50 Diagrama a bloques modelo eléctrico y mecánico servomotor BLDC.
Donde:
 V: voltaje alimentación                     Jm: inercia de masa
 Ra: resistencia de armadura                 Bm: coeficiente de fricción del eje
 La: inductancia de armadura                 Kt: constante de torque
 Ke: constante de fuerza contra              ω: velocidad angular
 electromotriz
Al conocer el modelo matemático del sistema a controlar, nombrada como función
de transferencia (F.T.), se procede a afectar la entrada por el filtro PID dentro de un
lazo de control cerrado. Con esto se tiene una regulación del error en su magnitud,
duración y rapidez de cambio, correspondientes a las acciones de control del PID.
                                              𝐾𝑡
                                       𝑅𝐽𝑚(𝑠) + 𝐽𝑚𝐿(𝑠 2 )
                       𝐹. 𝑇. (𝐵𝐿𝐷𝐶) =                                                  ( 7)
                                              𝐾𝑡𝐾𝑒
                                      1+
                                         𝑅𝐽𝑚(𝑠) + 𝐽𝑚𝐿(𝑠 2 )
86
                                             Capítulo 3: ALGORITMOS REQUERIDOS.
   Posición                                                               Posición
   Deseada                                                 F.T.            Rotor
                   ∑                  PID
                                                          BLDC
                       Posición
                         Real
              Figura 51 Lazo de control cerrado para posición BLDC.
Por mencionar algunas de las consideraciones más importantes para diseñar
controladores, indistintamente del tiempo y la frecuencia son:
   1. Los polos complejos conjugados de la función de transferencia en lazo
       cerrado producen una respuesta subamortiguada a una entrada escalón
       unitario.
   2. La respuesta de un sistema está dominada por aquellos puntos más cercanos
       al origen del plano s en un diagrama de Nyquist.
   3. Mientras más alejados izquierda del origen en un diagrama de Nyquist estén
       los polos dominantes del sistema, el sistema responderá más rápido y su
       valor de ancho demanda será mayor.
   4. Cuando un polo y un cero de una función de transferencia se cancelan, la
       porción de la respuesta del sistema asociada con el polo tendrá una magnitud
       más pequeña.
Los modelos control de lazo cerrado se basan en la compensación del error el cual
consiste en la diferencia de un valor deseado para la variable a controlar y la
medición de la variable a la salida del sistema.
Dentro de las acciones más simples de control consiste en multiplicar el error con
una ganancia K. Este tipo de acción de control se conoce como acción proporcional,
ya que la señal de control a la salida del controlador es un valor, mediante la
                                                                                 87
                                              Capítulo 3: ALGORITMOS REQUERIDOS.
multiplicación del error en estado estacionario por una constante K. Con este tipo
de control se regula la magnitud del error, pero nunca se llegará a un valor de error
cero, debido a que para que exista la acción de control debe de existir un valor de la
señal de error.
Para tener un valor de error cero se diseñaron otras acciones de control como la
acción integral. El controlador integral puede mejorar la estabilidad relativa y el
error el estado estable al mismo tiempo, pero el tiempo de levantamiento se
incrementa. Con esta acción de control se regula la duración del error y si la señal
de error persiste, la acción integral irá incrementando hasta poder compensar.
Para poder compensar los retrasos en la compensación generados por las acciones
antes mencionadas se diseñó una tercera acción llamado acción derivativa. El control
derivativo mide la pendiente instantánea generada por el error y realiza efecto
correctivo conforme la dirección del error. Con esta acción se anticipa el cambio de
la señal de error y se compensa, incrementando el ancho de banda y se reduce el
tiempo de levantamiento de la acción del controlador PID.
Aprovechando las características antes mencionadas se conjuntan las acciones de
control para generar el controlador PID. La ecuación que describe el algoritmo del
controlador PID en tiempo discreto se presenta a continuación (8). [21]
                𝑢(𝑛) = 𝑘𝑝 𝑒(𝑛) + 𝑘𝑖 ∑ 𝑒(𝑛) + 𝑘𝑑 [𝑒(𝑛′) − 𝑒(𝑛′ − 0)]                      ( 8)
                                      𝑛=0
Donde
𝑢(𝑛) = acción de control filtro PID            𝑘𝑝 = Ganancia Proporcional (Tamaño)
𝑒(𝑛) = Muestreo Error                          𝑘𝑖 = Ganancia Integral (Tiempo Estable)
𝑒(𝑛′)= Tasa muestreo Derivativo                𝑘𝑑 = Ganancia Derivativa (Tiempo Cambios)
88
                                              Capítulo 3: ALGORITMOS REQUERIDOS.
Para determinar el nivel de participación de las acciones de control se utiliza el valor
de las constantes kp,ki,kd. Las cuales multiplican su valor por cada acción de
control.
En este punto es donde se utiliza la función de transferencia para poder simular el
comportamiento del sistema mediante herramientas como Matlab, para poder
designar el valor de las constantes, pero en este trabajo se utilizó un método gráfico
como se verá más adelante.
Se realizó la implementación de un control de lazo cerrado (Figura 52) para
regulación de posición a partir de un controlador PID, implementando la ecuación
para tiempo discreto. Con esto se tiene que el sistema tiene la capacidad de
posicionar al servomotor en cualquier valor, y lo mantendrá en esa posición, sin
rebasar las capacidades del sistema, aunque existan perturbaciones externas.
   Posición                                                                     Posición
   Deseada                                  Dirección         Posición           Rotor
              ∑               PID
                                             y PWM             BLDC
                   Posición
                     Real
                                             Encoder
                      Figura 52 Lazo de control implementado.
                                                                                       89
                                            Capítulo 3: ALGORITMOS REQUERIDOS.
3.4.1.2 Sintonización Filtro PID.
Para describir el proceso de selección de los mejores valores para el controlador se
usa el término de sintonización. La sintonía de un algoritmo de control consiste en
seleccionar los valores adecuados para sus parámetros, por lo tanto, para el caso del
controlador PID se trata de calcular los valores idóneos (Kp, Ki, Kd) de forma que
se asegure que el sistema se comporta siguiendo las especificaciones previamente
definidas.
En las primeras aplicaciones de control PID el ajuste se basa únicamente la propia
experiencia al operario o simplemente se utiliza los ajustes del fabricante. Existen
diferentes métodos para la sintonización [23] entre los cuales se encuentran:
     1. Método de oscilación.
     2. Método basado en la curva de reacción.
     3. Asignación de polos.
90
                                             Capítulo 3: ALGORITMOS REQUERIDOS.
3.4.2 Sistema supervisorio.
La función del sistema es encargado de regular variables dependientes de la variable
controlada por el sistema regulatorio. Debido a las multitareas que realiza el sistema
supervisorio su costo computacional es elevado.
3.4.2.1 Procesador dedicado embebido.
Debido a que el cálculo de tiempo en un perfil de trayectoria son necesarias
operaciones de alto nivel como son la división y la raíz cuadrada, además, estos
cálculos se repiten cada vez que se requiere un movimiento en este trabajo de
investigación se implementó un procesador dedicado como la mejor solución para
realizar estas tareas.
Este desarrollo tiene que cumplir los cálculos antes de que el sistema regulatorio
necesite otro valor de referencia, para que se cumpla el objetivo de control en tiempo
real.
Existen FPGAs con procesadores Power PC, como el mismo Virtex II, pero su
número es limitado en este caso son 2 por lo cual no son repetibles, además, estos
procesadores en sus versiones compactas como los implementados no cuentan con
la operación de raíz cuadrada la cual es necesaria para los cálculos de perfil de
trayectoria.
3.4.2.2 Procesador.
Por definición un procesador de propósito general es un autómata de estados finitos
que ejecuta instrucciones almacenadas en una memoria. El estado del sistema está
definido por los valores almacenados en las localidades de memoria junto con los
valores almacenados en ciertos registros del procesador. [25]
                                                                                   91
                                                Capítulo 3: ALGORITMOS REQUERIDOS.
La función primaria del procesador es ejecutar secuencias de instrucciones o
programas almacenados en una memoria principal.
El procesador transfiere las instrucciones y los datos de entrada, de la memoria
principal a sus registros. Ejecuta las instrucciones en la secuencia almacenada,
excepto cuando la secuencia es una instrucción de salto. Después, transfiere los datos
de salida de sus registros a la memoria principal.
El manejo eficiente del flujo de instrucciones y datos es una tarea básica que debe
desarrollar el procesador.
Los elementos principales de un procesador de arquitectura Harvard son:
        Memoria de instrucciones. Es donde se almacenan los códigos a ejecutarse
         por el procesador.
        Contador de programa. Este lleva la cuenta de instrucciones ejecutadas y
         apunta a la memoria para obtener su instrucción.
        Registro de instrucciones. Guarda el valor de las instrucciones para que el
         contador de programa pueda apuntar a otro valor de memoria sin perder la
         instrucción actual.
        Unidad de control. Se encarga de interpretar, coordinar, y realizar la
         transferencia de datos entre la unidad de punto fijo, memoria y dispositivos
         de entrada y salida. Esta unidad analiza e interpreta los bits de los campos
         que componen una instrucción. Posteriormente genera las señales de control
         adecuadas para especificar el camino de datos debido a la operación a
         realizar, los operandos de entrada y el lugar donde debe guarda el resultado.
        Memoria de Datos. Tiene el propósito de almacenar datos, cuando se desea
         utilizar otra instrucción o simplemente almacenar.
        Unidad de aritmética lógica, para este proyecto unidad de punto fijo (UPF).
         Es donde se tienen los mecanismos para realizar las operaciones de suma,
         resta, multiplicación, raíz cuadrada, entre otras.
92
                                             Capítulo 3: ALGORITMOS REQUERIDOS.
      Registros de salida. Al igual que en la memoria se utilizan para guardar
       información que puede ser utilizada en las siguientes operaciones.
      Buses de comunicación o datapath. Es el camino físico por el que viajaran los
       datos y se auxiliara de multiplexores para guiar el destino de los datos.
Se presenta en la Figura 53 un diagrama de la interacción de estos elementos
     Memoria de                   Contador de
    Instrucciones                  Programa
     Registro de
                                   Memoria de Datos
    Instrucciones
                                                                        Registros de
                                                                           salida
                                    Unidad de Punto
 Unidad de Control
                                         Fijo
                 Figura 53 Arquitectura Harvard para procesadores.
3.4.2.3 Instrucciones.
Dependiendo de la estructura del procesador, se tiene un tamaño de bits para el
manejo de instrucciones. Este tamaño se conoce como palabra y suele ser de 8, 16,
32 o 64 bits. [25]
                                                                                   93
                                                Capítulo 3: ALGORITMOS REQUERIDOS.
Una instrucción especifica sus parámetros por medio de campos, los cuales suelen
ser: código de operación, operando fuente, operando destino, dato inmediato y bit a
testear.
Las unidades de control son estructuradas para realizar instrucciones segmentadas
o microinstrucciones como manera de incrementar la velocidad de ejecución. La
segmentación o pipeline es un método de bajo costo para aumentar el rendimiento
del procesador al descomponer su operación en una secuencia de pasos
relativamente independientes.
3.4.2.4 Etapas para la ejecución de una instrucción.
Las instrucciones se ejecutan en dos ciclos: el ciclo de búsqueda y el ciclo de
ejecución.
Ciclo de búsqueda.
El ciclo de búsqueda tiene tres etapas.
        Búsqueda de instrucción. El contador de programa (PC), pone en el bus de
         direcciones el valor de dirección de la instrucción a ejecutar. Al decodificar la
         dirección de memoria, se hace una lectura de la palabra en la posición
         correspondiente y su contenido se transfiere por el bus de datos hacia el bufer
         de registro de instrucciones.
        Guardar instrucción en el buffer de instrucciones. Se guarda el valor de la
         instrucción o palabra para no perder datos.
        Decodificación de la instrucción. El registro de instrucciones toma el dato
         del buffer de instrucciones y divide en campos para enviar la información a
         la unidad de control, código y dato inmediato en su caso hacia la UPF, código
         al decodificador de destino, dirección de memoria y dirección de PC en su
94
                                            Capítulo 3: ALGORITMOS REQUERIDOS.
       caso. En esta etapa se incrementa el contador de programa para dar la
       siguiente instrucción.
Ciclo de ejecución.
Para que el procesador tenga sincronía el ciclo de ejecución tiene que tener la misma
cantidad de etapas.
      Búsqueda de datos. Dependiendo de la instrucción se da lectura a la memoria
       de datos para obtener información.
      Operación en la UPF. Se decodifica el código de instrucción en la UPF y esta
       se ejecuta.
      Escritura del resultado. El resultado obtenido se guarda en memoria o en
       cualquiera de los registros.
3.4.2.5 Clasificación de instrucciones.
Para realizar el set de instrucciones para procesadores tipo Risc es necesario
establecer que operaciones son necesarias, para esta investigación son:
      Instrucciones de transferencia. Mueven la información entre las localidades
       de memoria de datos y los registros A y B.
      Instrucciones aritméticas y lógicas. Utilizan la UPF para alterar el valor de
       la información y obtener un resultado.
      Instrucciones de testeo de bit. Estas se utilizan cuando la información
       relevante se encuentra en un bit individual de la palabra.
      Instrucciones de salto. Rompen la ejecución ordenada de las instrucciones
       que componen un programa. En la mayoría de instrucciones, el contador de
       programa se incrementa en 1 hacia la instrucción siguiente. Sin embargo, las
       instrucciones de salto incrementan en 2 o cargan un valor en el PC que
       modifican el flujo secuencial de las instrucciones del programa. Entre estas
                                                                                  95
                                               Capítulo 3: ALGORITMOS REQUERIDOS.
         podemos encontrar las instrucciones condicionales y las de salto para
         implementar ciclos.
3.5 Herramientas CAD.
El diseño asistido por computador (CAD: computer aided design), tiene como
significado el proceso de diseño que emplea sofisticadas técnicas graficas de
ordenador, apoyadas en paquetes de software para la ayuda en los problemas
analíticos, de desarrollo y de costo asociados con el trabajo de diseño.
El CAD es un término asociado al dibujo como parte principal del proceso de diseño,
sin embargo, dado que el diseño incluye otras fases, el término CAD se emplea tanto
para el dibujo, como para el resto de las herramientas que ayudan al diseño entre las
cuales se pueden nombrar: comprobación de funcionamiento, análisis de costos,
optimización de material y fabricación. [26]
Mencionando algunas herramientas CAD para diseños electrónicos se tiene:
        Lenguaje de descripción de Hardware. Son lenguajes en los que es posibles
         describir, por medio lenguaje de alto nivel, el funcionamiento de un circuito
         eléctrico. La descripción se puede dar de manera estructural o bien el
         comportamiento ejemplo de esto es el código lógico de descripción de alto
         nivel (VHDL: very high hardware description languaje).
        Captura de esquemas. Es la forma más intuitiva de programar, ya que en la
         enseñanza se han utilizado para describir el funcionamiento tanto de circuitos
         como de componentes.
        Grafos y diagramas de flujo. Es posible describir un circuito o sistema,
         mediante diagramas de flujo, pero contrario a la captura de esquemas solo se
         puede describir el comportamiento más no los componentes.
96
                                            Capítulo 3: ALGORITMOS REQUERIDOS.
      Simulación de sistemas. Estas herramientas se usan sobre todo para la
       simulación global del sistema. Los componentes de la simulación son
       considerados como cajas negras.
      Simulación funcional. Este tipo de simulación comprueba el funcionamiento
       de circuitos digitales de forma funcional, es decir, a partir del
       comportamiento lógico de sus elementos. El problema con este tipo de
       simulación es que no toman en cuenta problemas eléctricos como: retrasos,
       impedancias y capacitancias parasitas.
      Simulación eléctrica. Es la simulación de más bajo nivel donde las respuestas
       se elaboran conforme al comportamiento del transistor.
3.5.1 Lenguajes de descripción de hardware (VHDL).
En un principio, los lenguajes de descripción de hardware (HDL: hardware
description language) fueron usados como un conjunto de sentencias simples, para
definir la interconexión entre los elementos involucrados en el diseño de un sistema
digital.
Años más tarde, el nivel de abstracción requerido para la verificación funcional de
cada uno de los elementos, puso de manifiesto la falta de herramientas apropiadas
para la simulación, consecuentemente, los lenguajes de descripción de hardware
evolucionaron hacia niveles más altos de abstracción, facilitando la obtención de
modelos sintetizables.
El lenguaje descriptivo de hardware de alto nivel (VHDL) surge como una iniciativa
del departamento de defensa de los Estado Unidos, para la aplicación de técnicas de
diseño jerárquico que faciliten no solo el proceso de documentación de un circuito
digital, sino que además, permitan modelar un sistema digital completo desde
                                                                                 97
                                                  Capítulo 3: ALGORITMOS REQUERIDOS.
diferentes niveles de abstracción, que van desde un panorama algorítmico hasta el
nivel de compuertas.
Algunas ventajas que ofrece el lenguaje VHDL son:
        Establecer procesos concurrentes, síncronos o la combinación de ellos con
         lenguaje de alto nivel de abstracción.
        Implementar tantos procesos sean necesarios.
        Poder establecer el tamaño de variables, entradas y salidas de manera
         necesaria.
                        Figura 54 Ejemplo programación VHDL.
3.5.2 Programación por esquemas eléctricos.
La programación por esquemas eléctricos es una representación de un dispositivo y
su interacción con su entorno por medio de líneas y simbología. En esta
programación el diseñador tiene que llegar a una abstracción del comportamiento
de los circuitos de la forma más parecida a su funcionamiento real.
Este tipo de boceto es muy didáctico ya que como se esquematiza en una nota de
clase, se dibuja dentro de la suite de diseño.
Las ventajas que se tienen son:
        Total control de las conexiones de elementos con los periféricos de su entorno.
        Menor consumo de recursos en implementación.
98
                                            Capítulo 3: ALGORITMOS REQUERIDOS.
              Figura 55 Ejemplo programación Esquemas eléctricos.
3.6 Diseño ascendente.
En el diseño ascendente (Button-Up) se aplica la metodología de diseño mediante la
cual se realiza la descripción del circuito, empezando por describir los componentes
pequeños del sistema para después, agruparlos en diferentes módulos, y estos a su
vez en otros módulos, hasta llegar a uno solo que representa el sistema completo
que se pretende realizar.
                                  Sistema
               Figura 56 Metodología diseño de Abajo hacia Arriba.
                                                                                 99
                                              Capítulo 3: ALGORITMOS REQUERIDOS.
En este tipo de diseño se empieza por crear una descripción, con esquemas o
lenguaje, de los componentes del circuito. Estos componentes representan unidades
funcionales con significado propio dentro del diseño, se les llama con el nombre de
primitivas, puesto que no es necesario disponer de elementos de más bajo nivel para
describir el circuito que se pretende realizar.
3.7 Diseño descendente.
En el diseño descendente (Top-Down) se emplea la metodología de en la cual se
captura una idea en un alto nivel de abstracción e implementarla partiendo de la
mayor abstracción e ir bajando incrementando el nivel de detalle según sea
necesario. En el caso de un circuito esto se traduciría en la división del sistema
completo en módulos, dependiendo siempre de la complejidad del circuito inicial o
de los módulos se pueden dividir en otros módulos hasta llegar a los componentes
básicos del circuito o primitivas.
                                           Sistema
              Figura 57 Metodología de diseño de Arriba hacia Abajo.
100
                                           Capítulo 3: ALGORITMOS REQUERIDOS.
3.8 Modularidad expandible.
Este aspecto representa que al diseñar algún circuito o sistema este puede ser
sintetizado en un módulo y este ser reproducido tantas veces sea necesario. Esta
habilidad es necesaria ya que muchas veces se necesita el mismo componente en
diferentes partes del circuito.
                                       Sistema
                         Figura 58 Modularidad expandible
La ventaja de diseñar de manera esquemática es que cuando sea necesario
reproducir los módulos simplemente se seleccionan, se mandan los comandos de
copiar y pegar. De esta manera se puede replicar los diseños las veces que sea
necesario.
                                                                            101
                                            Capítulo 3: ALGORITMOS REQUERIDOS.
3.9 Aritmética Saturante.
La aritmética saturante es una variación de la aritmética en la que las operaciones
están limitadas a un rango fijo, ya sea un valor mínimo o un máximo. Si el resultado
de una operación es mayor que el máximo, es ajustado ("restringida") al máximo; si
está por debajo del mínimo, es ajustada al mínimo. [27]
Por ejemplo, si el intervalo válido de valores es de -100 a 100, las siguientes
operaciones producen los siguientes valores:
         60 + 30 = 90
         60 + 43 = 100
         (60 + 43) − 150 = −50
         43 − 150 = −100
         10 × 11 = 100
         99 × 99 = 100
3.10 Aritmética Binaria.
La aritmética binaria es la realización de las operaciones que conocemos (suma,
resta, multiplicación y división) pero con una base de números binarios (1 y 0). Todo
esto para tener un lenguaje nativo para computadoras o sistemas de hardware. [28]
3.10.1 Representación de números decimales en binarios.
Cuando se desea representar un número en el lenguaje básico computacional se
representa por el estado lógico que presentan los transistores que componen la
memoria. Cada valor representado por un transistor se le denomina bit (binary digit)
y estos bits se agrupan para formar las palabras, de diferentes tamaños 8 (byte), 16,
32 o 64 bits.
102
                                             Capítulo 3: ALGORITMOS REQUERIDOS.
La manera en que se usan los bits para registrar los números varía en función del
diseño del sistema. Una convención para representar los números en lenguaje
computador es el último bit o bit más significativo determinara el signo del número:
0 para números positivos y 1 para números negativos y los demás dígitos
representaran la magnitud.
Ejemplo:
                                              Signo y
                             Codificación
                                             Magnitud
                              0    1     1        3
                              0    1     0        2
                              0    0     1        1
                              0    0     0        0
                              1    0     0       -0
                              1    0     1       -1
                              1    1     0       -2
                              1    1     1       -3
3.10.2 Complementos.
Existen dos tipos de complementos el complemento a uno que consiste en invertir
el valor de todos los bits y el complemento a 2 el cual consiste en restar uno al valor
del complemento a 1.
Estos complementos tienen la función de poder representar los números negativos
sin tener un doble 0 (positivo y negativo) y facilitar operaciones aritméticas como la
resta como la resta.
                                                                                   103
                                            Capítulo 3: ALGORITMOS REQUERIDOS.
Ejemplo:
                           Signo y    Complemento Complemento
           Codificación
                          Magnitud          a1                 a2
            0    1    1        3              3                  3
            0    1    0        2              2                  2
            0    0    1        1              1                  1
            0    0    0        0              0                  0
            1    0    0       -0             -3                 -4
            1    0    1       -1             -2                 -3
            1    1    0       -2             -1                 -2
            1    1    1       -3             -0                 -1
En la representación de complemento a 2 el valor de 0 es único.
3.10.3 Suma binaria.
La suma de números naturales en binario se realiza de igual forma que en el sistema
decimal se alinea las cifras en su columna correspondiente, y se procede a sumar los
valores. Ejemplo:
                                1     1           acarreo
                                1 0 0 1 (9)       sumando
                          +     1 1 0 1 (13) sumando
                              1 0 1 1 0 (22) Resultado
Dentro de las sumas se puede presentar un bit de acarreo lo que ocasionaría una
condición de desborde, esto significa que el tamaño de bits para representar el
número no es suficiente y se perderá la cifra más significativa cambiando el valor
del resultado. Por lo tanto se tiene que prever el tamaño del resultado para
determinar el tamaño de la representación de los números.
104
                                          Capítulo 3: ALGORITMOS REQUERIDOS.
3.10.4 Resta binaria.
La resta se considera como la suma de números con diferente signo para lo cual se
utiliza el complemento a 2 para representar a los números y se procede a realizar
una suma. Ejemplo:
                              1   1              acarreo
                          0 1 1 1 0 (14)         minuendo
                        + 1 0 1 1 1 (-9)         sustraendo
                          0 0 1 0 1 (5)          Diferencia
3.10.5 Multiplicación binaria.
Las multiplicaciones en binario se realizan de la misma forma que en el sistema
decimal. Ejemplo:
                              1   1   0 0 (12)    multiplicando
                        x     1   0   0 1 (9)     multiplicador
                              1   1   0 0
                         0    0   0   0           Productos
                       0 0    0   0               parciales
                     1 1 0    0
                     1 1 0    1   1 0 0 (108)     Resultado
Por lo tanto, en la multiplicación el resultado tiene el doble de tamaño de los
operadores.
                                                                             105
                                                Capítulo 3: ALGORITMOS REQUERIDOS.
3.10.5 División binaria.
La división binaria es más sencilla que de manera decimal ya que solo tenemos dos
dígitos par el cociente. Si el dividendo es mayor o igual que el divisor, la siguiente
cifra del cociente es 1, en caso contrario 0. Ejemplo:
                                           1   1 1 0 (14)       cociente
              1 0 0 0 (8) 1 1          1   0   0 0 0 (112)      multiplicador
                      -   1 0          0   0
                          0 1          1   0   0
                          - 1          0   0   0
                            0          1   0   0   0
                            -          1   0   0   0
                                       0   0   0   0 0
                                       -   0   0   0 0
                                           0   0   0 0          residuo
3.10.6 Corrimientos.
Las operaciones de corrimiento ya sea hacia la derecha o izquierda consisten en
desplazar los bits del lugar.
                                Corrimiento a la izquierda
                                         1 1 0 (6)
                                       1 1 0 0 (12)
                                Corrimiento a la derecha
                                     1 1 1 0 (14)
                                        1 1 1 (7)
Estas operaciones para realizar nos brindan la herramienta de poder multiplicar por
dos sin utilizar un multiplicador dedicado, en el caso de corrimiento a la izquierda;
y de realizar una división entre dos utilizar otros recursos.
106
                                             Capítulo 3: ALGORITMOS REQUERIDOS.
3.10.7 Raíz cuadrada binaria.
Como la raíz cuadrada no se puede realizar con una operación aritmética directa,
por lo cual se utilizan diferentes algoritmos para poder realizar esta operación. Uno
de estos algoritmos es el de CORDIC. [29] [30]
CORDIC (COordinate Rotation DIgital Computer) fue propuesto por Jack Volder en
el año 1959 [31] con el propósito de calcular funciones trigonométricas en las
computadoras de los sistemas de navegación de aviones.
La metodología del algoritmo es, mediante rotaciones en el plano z, expresar las
funciones elementales en un nivel de simplicidad tal que solo sea necesario efectuar
adiciones y operaciones de corrimiento. Este algoritmo fue posteriormente
extendido por John Stephen Walter de la empresa H.P. [32]
3.11 Aritmética punto fijo.
Los números reales se pueden representar de 2 maneras: punto fijo y punto flotante.
En el caso de la aritmética de punto fijo, el punto binario se encuentra siempre en la
misma posición, es decir, existirán m bits para la parte entera y n bits para la parte
decimal. En algunos casos puede ocurrir que m = 0 (no existe parte entera) o bien, n
= 0 (no existe parte decimal). En cambio, para la aritmética de punto flotante, la
ubicación del punto binario puede variar. Ejemplo:
             Punto Fijo                                   Punto Flotante
 bit 5 bit 4 bit 3 bit 2   bit 1   bit 0       bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
 0     1     .     0       0       0                                         1
 3     4     .     6       7       0           3     .     4      6      7   0
 1     1     .     0       1       1           1     1     1      0      .   1
                                                                                  107
                                                 Capítulo 3: ALGORITMOS REQUERIDOS.
3.12 Modulación por Ancho de Pulso.
Al ser un servomotor BLDC un sistema lineal para variar la velocidad es suficiente
variar el voltaje de alimentación. Una solución es contar con varias fuentes de
alimentación, conectando y desconectando lo cual no es práctico; otra solución es
con una fuente de voltaje variable pero para altas corrientes su costo es elevado.
La técnica de PWM varía el voltaje de una fuente sin necesidad de conectar o
desconectar. El PWM brinda la energía por tiempos de conexión y tiempos de
desconexión, con esto se cuenta con un voltaje promedio (Figura 59).
                                             𝜏
                                        𝐷=                                      ( 9)
                                             𝑇
Donde:
D= Ciclo de trabajo.                              T=periodo de función.
τ=tiempo de función en estado alto.
                                      Ciclo de trabajo 25%
                               12 V
                                                         3V
                                0V                      t
                                      Ciclo de trabajo 50%
                               12 V
                                                         6V
                                0V                      t
                                      Ciclo de trabajo 75%
                               12 V
                                                         9V
                                0V                      t
                       Figura 59 Modulación por Ancho de Pulso.
De esta manera se tiene una técnica para variar la velocidad del servomotor en forma
digital y haciendo el uso eficiente de energía [2].
108
Capítulo 4.
DESARROLLO E
IMPLEMENTACIÓN.
4.1 Introducción.
En este capítulo se muestra el desarrollo realizado para implementar el sistema de
control distribuido capaz de realizar un perfil de trayectoria en tiempo real
controlando las variables de posición, velocidad y aceleración en un servomotor
BLDC, se describe la construcción de un control para un eje, sabiendo que solo es
necesario repetir el modulo para tantos ejes sea necesario.
                                                                              109
                                            Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
En la Figura 60 se muestra un diagrama a bloques del sistema implementado para
un eje.
                               Control distribuido
               Banco de        Procesador                Puente H           Servomotor
      PC                                       PID
               Registros        Dedicado                 Trifasico             BLDC
                                                       Conmutador      Sensores
                                                                                   Encoder
                                                        Electronico      Hall
                  Conexión
                  Eléctrica
                 Interacción                           Decodificador
                  Mecánica                             Multiplicador
                  Conexión
                Interna FPGA
           Figura 60 Diagrama a bloque de sistema implementado para un eje.
En este capítulo describe el diseño y construcción del puente H trifásico, después el
desarrollo del conmutador electrónico y el decodificador multiplicador, en tercer
lugar se describe el diseño del control supervisorio y al final la implementación del
banco de registros dentro de la interfaz diseñada.
4.2 Implementación puente H trifásico.
Debido a que es necesario una adecuación de la transmisión de las señales, un
arreglo para que exista un funcionamiento de los componentes con la menor
cantidad de fuentes de energía externas y la capacidad de satisfacer un
requerimiento multieje se diseñó un circuito en el que se implementa un puente H
trifásico para tres ejes.
Además, este circuito tiene la función de aislar la sección del controlador (FPGA) de
la parte de alimentación del motor, ya que si existe un camino de conexión las
110
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
corrientes parasitas, regresos de línea y picos de voltaje, destruirían al componente
controlador.
Se utilizó el IPM STGIPS20K60 para implementar el puente H además de
componentes electrónicos para aprovechar las características del IPM. A
continuación se describe las etapas y sus funciones que se realizaron para el circuito
de potencia.
4.2.1 Sección aislante.
La sección aislante es la encargada de enviar las señales del FPGA hacia las entradas
del IPM sin que exista una conexión eléctrica directa, además es la sección encargada
de que las señales tengan la potencia necesaria para que los IGBT del IPM tengan
una señal adecuada para su conmutación.
Se implementó el circuito aislante (Figura 61 y Figura 62) mediante optoacopladores
con histéresis (U3, U5, U7, U9, U11, U12 y U15), los cuales tienen en su interior un
LED, típicamente infrarrojo, el cual al momento de encender excita un elemento
optoeléctronico, por lo tanto no existe una conexión eléctrica. El optoacoplador
utilizado es el H11L1, entre sus características principales están: velocidad
conmutación (100 MHz), circuito Schmitt trigger para histéresis y filtrado de ruido,
salida a colector abierto negada.
                                                                                  111
              Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
      Figura 61 Sección aislante 1.
      Figura 62 Sección aislante 2.
112
                                      Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.2.2 Capacitores de arranque.
Para esta sección (Figura 63) se propuso solo el arreglo de dos capacitores de 1 µF
de tipo cerámico en arreglo paralelo. Dentro del IPM (U8) se encentran tanto la
resistencia para limitar el voltaje en los capacitores y el diodo de protección para la
carga de estos.
                         Figura 63 Capacitores de arranque.
Es importante que al inicio del sistema los capacitores de arranque (C34, C35, C36,
C37, C38 y C39) tengan un ciclo de carga antes de empezar el funcionamiento, esto
se logra al cerrar el transistor de la parte baja de las ramas del puente H.
4.2.3 Protección contra temperatura, bajo voltaje,
sobrecorriente y cortocircuito.
Una de las funciones del chip STGIPS20K60 (U8) es interrupción por sobrecorriente,
y de manera inherente un bajo voltaje, dependiendo de la aplicación se calcula los
valores de resistencias (R20, R21, R22 y R27) y un filtro de ruido (R25 y C43), de los
cuales se tomará el valor de voltaje proporcional a la corriente circulante, la cual será
                                                                                     113
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
entrada hacia un comparador interno. El cual disparará un retardo de
deshabilitación interno si no cambian las condiciones, este continuará.
En un cortocircuito la corriente tiende al infinito, por lo que esta función también
puede proteger al chip, pero no se recomienda como protección principal de
cortocircuito ya que no actúa de manera instantánea y se puede provocar un daño
en el chip. En la Figura 64 se muestra el esquema de la protección por sobrecorriente,
cortocircuito y bajo voltaje
         Figura 64 Protección bajo voltaje, sobrecorriente y cortocircuito 1.
La protección solo tiene funcionamiento una vez que la corriente ha circulado por el
servomotor, por lo cual no se protege al servomotor, previniendo esta situación se
propuso que existiera también una medición de corriente antes del servomotor.
Figura 65
114
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
Se propuso el chip ACS754 (U6) (sustituido por fabricante a ACS758) el cual mide la
corriente de manera bipolar y como salida se obtiene un voltaje proporcional a la
corriente (40 mV⁄A). Esta señal ira a un comparador de salida lógica LM339 (U14A),
comparando con un valor predeterminado por un arreglo de resistencias conocido
como divisor de voltaje (R28 y potenciómetro R29) y este es retroalimentado hacia
el controlador principal por medio de un optoacoplador (U13).
Estos arreglos se configuraron para la operación con el servomotor AC300022 por lo
tanto el voltaje de operación son 24 V y la corriente máxima es 4 A.
         Figura 65 Protección bajo voltaje, sobrecorriente y cortocircuito 2.
                                                                                115
                                    Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
Se consideró prudente monitorear la temperatura (Figura 66) del chip para evitar un
sobrecalentamiento del chip por lo que de manera similar a la medición de corriente,
se utilizó el chip LM35D el cual brinda una salida de voltaje por cada grado
centígrado (10 mV⁄°C), por lo que también se adecuo por medio de un comparador
lógico LM339 (U14B) y una referencia por medio de un divisor de voltaje (R34 y
potenciómetro R39) adecuando la señal por medio de un optoacoplador (U16) hacia
el controlador principal.
  Figura 66 Protección bajo voltaje, sobrecorriente y cortocircuito 3 y protección
                                   temperatura.
116
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.2.4 Fuentes de energía.
Para la sección de fuentes de energía (Figura 67) se diseñó un sistema en el que solo
sea necesario una fuente de alimentación para los circuitos integrados en la parte de
electrónica de potencia y una conexión fija para la alimentación del servomotor.
              Figura 67 Fuentes de alimentación circuito de potencia.
La función de los conectores (J7 y J8) es tener un punto de conexión fijo, adaptable y
resistente a vibraciones mecánicas con fuentes externas. De la fuente de 15 v
tendremos la energía para el IPM, esta se adecuará para tener reducción de voltaje a
12 v por medio del regulador MC7812C (U1), y al final tenemos una regulación a 5
v por medio del regulador LM2940.
                                                                                   117
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.2.5 Conectores auxiliares.
De la misma manera que los conectores de la fuente de alimentación es necesario
tener una manera de tener conexiones fijas tanto de las señales que vienen del
controlador como las señales que viajarán hacia este. Figura 68
                         Figura 68 Conectores auxiliares 1.
La función del conector hacia el FPGA (J1) es tener un camino y un conector general
para todas las señales desde y hacia el controlador. La función de los conectores (J2
y J3) es tener un medio fijo para las señales de los dispositivos de retroalimentación:
sensores Hall y Encoder. Figura 69
                         Figura 69 Conectores Auxiliares 2
118
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.2.6 Fabricación de circuito de potencia.
Al tener el circuito de potencia de manera esquemático dibujado en la paquetería
ORCAD la cual es una herramienta para diseñar circuitos electrónicos, se procedió
a reproducirlo 3 veces ya que una de las aplicaciones en la cual se puede verificar el
funcionamiento de posición de este prototipo es una mesa de 3 ejes. Al realizar la
tabla de circuito impreso (PCB: printed circuit board) con el programa LAYOUT de
ORCAD se tiene acceso a poder realizar una distribución de componentes en tamaño
real, un diseño de rutas automático, ampliación de grosor de pistas y archivos para
fabricación reconocidos por la mayoría de fabricantes. Figura 70
 Figura 70 Captura de pantalla programa LAYOUT con vista superior del circuito
Se procedió a realizar una disposición de componentes en 2 capas, la mayoría de estos en
montaje de superficie, y se fabricó el PCB con los componentes propuestos. En la Figura
71 se presenta una fotografía con los componentes y su distribución.
                                                                                    119
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
                       Figura 71 Tarjeta Modulo de Potencia
4.3 Conmutador electrónico para BLDC.
Una de los primeros objetivos para implementar el control de motores es accionar el
servomotor, en un motor de DC simplemente se conecta a la fuente de alimentación
y este entra en funcionamiento, en el caso del BLDC, no es suficiente ya que se tiene
que realizar un conmutador electrónico.
Una vez implementado el dispositivo de puente H y tener la información de posición
de los imanes dentro del rotor por medio de los sensores de efecto Hall, se realizó el
código escrito en VHDL (Figura 72 y Figura 73) que describe la conmutación
electrónica.
120
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
            Figura 72 Código VHDL tabla para la conmutación BLDC 1.
Se definió que las entradas del módulo serian: la señal de los sensores de efecto Hall
(ent) en un arreglo o bus, la dirección de conmutación (dir) con esta determinaremos
si el servomotor gira a la izquierda o a la derecha; de manera de salida tendremos la
señales de activación (sal) hacia el puente H de manera individual.
            Figura 73 Código VHDL tabla para la conmutación BLDC 2.
                                                                                  121
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
Se ha declarado dos señales auxiliares: (aux) con el propósito de tener solo una salida
y (aux2) la cual tiene la función de concatenar las señales de los sensores Hall y el
bit de dirección de manera que se consideren como un solo bus de bits. En la
descripción del módulo se escribió para que actuara de manera concurrente con la
sentencia whit select, con esto se tiene que al tiempo en el que cambie cualquier
señal, se tiene una nueva asignación en la salida.
Es importante considerar que al implementar la carta de conmutación el valor
decodificado de los sensores Hall, tiene que ser el estado siguiente de la
decodificación, ya que si no se considera así el servomotor tiene vibraciones y no
gira a su velocidad nominal ya que se está cometiendo un error de conmutación.
El modulo final de la implementación se nombró como tabla (Figura 74), cuenta con
la entrada de los sensores Hall y como salida las señales hacia los transistores IGBT’s
del IPM.
      Figura 74 Modulo de implementación de tabla de conmutación de BLDC.
Al cambiar de sentido de giro, es necesario detener el servomotor, ya que si se
cambia el sentido de giro sin frenar, el servomotor tiene una vibración brusca ya que
122
                                      Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
existe una fuerza de inercia que el servomotor vence, generando un estrés mecánico
en los dispositivos conectados al servomotor.
4.4 PWM para variación de velocidad BLDC.
Una vez accionado el servomotor es necesario poder tener herramientas para variar
la velocidad de este, ya que para tareas de posicionamiento no es una buena práctica
tener una aceleración máxima de inicio y una desaceleración brusca para llegar al
final. [24]
    Figura 75 Esquemático de implementación de accionamiento y variación de
                               velocidad BLDC.
La Figura 75 muestra el bloque implementado para el accionamiento y la variación
de velocidad, el cual consta de 4 entrada externas a la lógica las cuales son: (Reloj) el
cual es la señal de sincronización para todo el sistema, se utilizó el máximo reloj con
                                                                                     123
                                    Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
el que cuenta la tarjeta Virtex II Pro el cual es de valor de 100 MHz; (Sum) es una
señal conectada a un pulsador de la tarjeta, la cual va aumentando el valor del ciclo
de trabajo del PWM; (Sum_Res) es una señal conectada a un interruptor, la cual toma
un valor dependiendo si se requiere incrementar o decrementar el valor del ciclo de
trabajo; y por último se cuenta con la señal de habilitación del Puente H (SO), está
conectada a un interruptor de la tarjeta y negada dentro del dispositivo.
Una vista del módulo PWM en esquema eléctrico implementado se muestra en la
Figura 76. Este módulo se integra junto con el conmutador electrónico y tiene la
función de determinar el tiempo en el que los transistores entrarán en conmutación
para tener un voltaje promedio que variara la velocidad del servomotor BLDC.
 Figura 76 Esquemático modulo top para accionamiento y variación de velocidad
                                   BLDC.
A continuación se describen los módulos necesarios para implementar el PWM
funcional.
124
                                      Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.4.1 Modulo PWM.
El módulo PWM (Figura 77) se implementó de manera digital, cuenta con 2 entradas:
la entrada (ck) que es el reloj del módulo tiene la función de sincronizar los cambios
de estados del PWM, está configurado a 18 kHz para que la conmutación de los
transistores IGBT’s sea realizada correctamente; y la otra entrada (t1), el cual es el
valor del tiempo en el estado alto de trabajo del PWM. La salida del módulo es un
tren de pulsos el cual se canaliza hacia los transistores IGBTs, el módulo de
conmutación electrónica determinara cuales estarán activos.
                 Reloj          PWM
                 (ck)
                  T1
                                Figura 77 Bloque PWM.
El código que describe la operación del módulo PWM se muestra en la Figura 78,
su funcionamiento se describe como dos contadores: (cont) que es un contador que
va incrementando su valor conforme el tiempo, con esto se genera el periodo total
del PWM, al reiniciar la salida le asigna el valor 1 y carga el valor de t1 a una variable
auxiliar (aux); y el contador (t1), esta observando el valor de (cont), cuando este tiene
el mismo valor asigna la salida el valor 0, así completa el tiempo en estado alto de la
técnica PWM.
                                                                                      125
                                    Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
                      Figura 78 Código VHDL del PWM digital.
4.4.2 Módulo Sumador-Restador.
El objetivo de este módulo es retener, variar y dar un valor de inicio al valor de t1
para el módulo PWM (Figura 79). Otra función del módulo será tener una sumatoria
saturante para que sobrepase un valor máximo y, de igual forma, no exista un valor
menor al mínimo. Con esto se cuida que los capacitores de arranque tengan un
tiempo para cargar energía.
                                       Sumador
                                       Restador
           Habilitación
                 Pulso                                        T1
          Ascendente /
         Descendente (s_r)
                         Figura 79 Modulo Sumador-Restador.
126
                                      Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
El valor de estado alto (t1) se le brinda por medio de un sumador asciéndete-
descendente síncrono (Figura 80) el cual tiene como entradas: (Pulso) la señal viene
de un pulsador de la tarjeta una vez filtrado; (S_R) esta señal tiene su origen de un
interruptor de deslizamiento de la tarjeta; (Hab) esta señal tiene la función de activar
o desactivar el sumador, brindando un valor de inicio para el modulo.
       Figura 80 Código VHDL módulo sumador ascendente- descendente.
El funcionamiento del módulo se describe como una sumatoria o resta a un
acumulador (aq) conforme tenga el valor (S_R) y exista un cambio de valor de 0 a 1
en la señal (pulso); mientras la señal de habilitación este en 1, si no, la señal de (aq)
tendrá valor de 0 y la salida tomara ese valor.
                                                                                     127
                                    Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.4.3 Divisor de frecuencia.
De la misma forma en que se cuida el buen funcionamiento de los capacitores de
arranque, se tiene que cuidar el funcionamiento de los transistores en el puente H,
dentro de las hojas de especificaciones de los transistores IGBT, su tiempo de cambio
de frecuencia no puede ser mayor a 20 kHz, por lo cual se diseñó un divisor de
frecuencia para la entrada del PWM. Figura 81
                                      Divisor de
                                      frecuencia
                                                            Frecuencia
                 Reloj                                       dividida
         Numero de veces
            división
                      Figura 81 Modulo divisor de frecuencia.
Para tener un periodo en la señal del PWM aproximado a 18 khz, se requirió
dividir la señal de reloj maestro del FPGA (100 MHz) 20 veces.
128
                                      Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
             Figura 82 Código VHDL divisor de frecuencia para PWM
El funcionamiento (Figura 82) se describe de manera que existe un contador
descendente el cual se le carga un valor externo por la señal de (Divi) decrementando
su valor, mientras el valor de salida está en 0; en el momento que el contador llega a
0 vuelve a cargar otro valor y al mismo tiempo se pone su salida en valor 1. Con esto
tenemos un pulso, ya que al cargar un nuevo valor (Salida) obtiene el valor de 0, por
lo tanto se ha dividido la frecuencia de salida tantas veces el valor de la señal (Divi).
                                                                                     129
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.5 Decodificador multiplicador sensor de posición (Encoder).
Para implementar un lazo de control cerrado, es importante contar con la
información de los sensores de retroalimentación. Para este proyecto el sensor de
retroalimentación de posición es el codificador de posición “encoder”, el encoder
implementado en el servomotor tiene una resolución de 250 cuentas.
A continuación se reporta el diseño e implementación de un circuito multiplicador
para encoder incremental acoplado a los motores BLDC utilizados, el cual tiene
como objetivo elevar la resolución que ofrece el dispositivo de forma general sin
tener que modificar la construcción del mismo. Dicho multiplicador eleva la
resolución del encoder a cuatro veces su resolución, por lo que se tendrá un encoder
de 1000 cuentas.
Dentro de las señales de salida del encoder (A y B) se observa, sin importar el sentido
del giro (Figura 83 y Figura 84), que existen dos cambios lógicos importantes en
diferentes tiempos: un flanco de subida y un flanco de bajada, al implementar un
circuito que combine ambas señales, se obtiene cuatro estados.
                                        S. H.
                   A
                   B
         Figura 83 Señales decodificador de posición giro sentido horario.
130
                                           Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
                                               S. A.
                  A
                  B
       Figura 84 Señales decodificador de posición giro sentido antihorario.
Para tener la multiplicación de encoder se implementó el circuito siguiente. Figura
85
                        Figura 85 Circuito decodificador multiplicador encoder.
Se divide en dos secciones: la primera tiene el objetivo de visualizar cualquier flanco
de subida o bajada de los dos canales (circuito de conteo) y la segunda determinará
el sentido de giro (circuito dirección).
                                                                                   131
                                       Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.5.1 Circuito de conteo.
El circuito cuenta (Figura 86) se encarga de vigilar cualquier flanco ya sea de subida
o de bajada en los dos canales, y emitirá un pulso de cuenta.
                             Figura 86 Circuito de conteo.
Para esta sección se utilizó un monoestable digital. El monoestable es un circuito
oscilador capaz de generar un pulso único, ya sea de nivel lógico positivo o cero, con
una duración predeterminada.
El monoestable es un circuito multivibrador que realiza una función secuencial
consistente en que al recibir una excitación exterior, cambia de estado y se mantiene
en él durante un periodo que viene determinado por una constante de tiempo.
Transcurrido dicho periodo de tiempo, la salida del monoestable vuelve a su estado
original. Por tanto, tiene un estado estable (de aquí su nombre) y un estado casi
estable.
La construcción del monoestable digital (Figura 87) se integra con un Flip-Flop tipo
D y con un contador binario. La función del flip-flop es generar y mantener un nivel
lógico de salida, con el contador se determina la duración del pulso. A continuación
se presenta el diagrama de forma esquemático del circuito monoestable digital, el
cual tiene como entrada una señal de disparo que llega a la entrada del dispositivo
flip-flop, la transición de subida tomará en cuenta el valor binario presente en la
entrada D, para este propósito se debe asegurar el valor lógico 1 ya sea
implementando una conexión directa a Vcc o un arreglo tipo Pull-up. Al tener este
valor el flip-flop traslada el valor y lo hace presente en la salida Q, la cual habilita la
132
                                      Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
señal del reloj para el contador binario, al mismo tiempo la salida del circuito pasa a
un estado lógico 1.
                      Figura 87 Monoestable digital implementado.
La duración del pulso la podemos determinar al dividir 2 a la potencia del bit
utilizado (bit 7 en este caso) entre la frecuencia del reloj del contador que es el reloj
maestro de la tarjeta.
                               27                                                  ( 10)
                  T=                     = 1.28 microsegundos
                         100,000,000 Hz.
Una vez teniendo el monoestable se toman los valores de la señal de los canales A y
B con una compuerta XOr con esto tendremos la variación cuando sean diferentes,
al tener esta señal se procede a ingresarla al monoestable en su forma normal y en
otro monoestable la señal invertida, cuando se encuentre cualquiera de los 2
monoestables activos se invertirá la señal y esta será entrada para el ultimo filtro
monoestable.
Con esto se incrementa la resolución del encoder ya que anteriormente la
decodificación requiere que pase todo un periodo para tener una cuenta, con esta
implantación con cada periodo se tiene cuatro cuentas.
                                                                                     133
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.5.2 Circuito dirección.
Este circuito satisface la necesidad de conocer en qué sentido está girando el encoder.
Para determinar la dirección con esta nueva resolución, es necesario tabular los
valores que tienen las señales en cada cuenta con la nueva resolución (Tabla 6).
Tabla 6 Tabulación de las señales decodificador de posición.
         Sentido Horario (S.H.)            Sentido Antihorario (S.A.)
         A                   B               A                    B
         1                   0               0                    1
         1                   1               1                    1
         0                   1               1                    0
         0                   0               0                    0
A partir de esta tabla se implementa una máquina de estados con la cual se
determina el sentido de giro. Figura 88
                                      S.H.
                       10                             11
                                      S.A.
                            S.A.                S.A.
                S.H.                                       S.H.
                                      S.A.
                        00                            01
                                      S.H.
                       Figura 88 Maquina de estados encoder
Del diagrama de estados se obtiene la Tabla 6, es esta se especifican los estado
presentes y los estados siguientes para las señales A y B. considerando que S.H.=0 y
S.A.=1, para los estados no ocupados se representa con X.
134
                                   Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
Tabla 7 Maquina de estados dirección.
 Estado Presente                  Estado Siguiente                 Dirección
 B                 A              b               a
 0                 0              0               0                X
 0                 0              0               1                S.A.
 0                 0              1               0                S.H.
 0                 0              1               1                X
 0                 1              0               0                S.H.
 0                 1              0               1                X
 0                 1              1               0                X
 0                 1              1               1                S.A.
 1                 0              0               0                S.A.
 1                 0              0               1                X
 1                 0              1               0                X
 1                 0              1               1                S.H.
 1                 1              0               0                X
 1                 1              0               1                S.H.
 1                 1              1               0                S.A.
 1                 1              1               1                X
Con la Tabla 7 se genera un mapa de Karnaugh (Figura 89) y se procede a simplificar
obteniendo la ecuación:
                                            ̅̅̅̅                               ( 11)
                                  ̅a + Ab + Ab
                            DIR = B
                          Figura 89 Mapa de Karnaugh.
                                                                                 135
                                       Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
Se implementó el circuito descrito por la ecuación mediante Flip-Flop para los
estados anteriores. Es circuito se presenta en la Figura 90.
                             Figura 90 Circuito dirección.
4.6 Implementación de control distribuido en FPGA.
Al tener todos los elementos necesarios para implementar un sistema de control de
lazo cerrado se procedió a diseñar el esquema de control distribuido. El cual se
desarrolló en un hardware dedicado para tener en cada servomotor BLDC donde se
repita, un control de posición en tiempo real.
4.6.1 Implementación sistema regulatorio.
La función del sistema regulatorio es tener un control de manera individual, para
este caso se implementara en la variable de posición de cada servomotor. Para
realizar el control se utilizó un filtro PID, el valor de la posición de la referencia será
dado por el sistema supervisorio y el valor de la posición real será obtenido de la
decodificación y multiplicación del sensor encoder.
Para la sección de sistema regulatorio se implementó el circuito que se muestra a
continuación. Figura 91
136
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
   Sistema                                                                     Sentido
  Supervisor                                     error                       Conmutación
                     Posición
                    referencia
                                         ∑               PID
                                                                              T1 PWM
                                                             Decodificador
                                      Posición
                                                             multiplicador
                                        real                   (encoder)
                Figura 91 Diagrama a bloques sistema regulatorio.
                            Figura 92 Esquemático PID.
En la Figura 92 se muestra el circuito esquemático para el sistema regulatorio el cual
se compone de: 2 contadores de 32 bits ascendentes-descendentes, un restador
implementado a 32 bits con salida ajustada a 16 bits, un circuito integrador, un
circuito derivativo, un divisor de frecuencia derivativa, tres multiplicadores de 16
                                                                                   137
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
bits por 16 bits con saturación superior y un sumador con saturación superior e
inferior.
4.6.1.1 Valor referencia y valor real de posición.
La función de guardar un valor digital para la posición de referencia y real, la
cumplen dos módulos contadores de 32 bits ascendentes descendentes (Figura 93):
el primero contiene un valor digital para la posición de referencia recibe la cuenta y
dirección del sistema supervisorio; y el otro contador contiene un valor digital para
la posición real, que modifica a través de las señales de cuenta y dirección del
decodificador multiplicador del encoder.
                             Figura 93 Contadores PID.
A continuación se muestra el código para la implementación de los contadores.
Figura 94
138
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
                Figura 94 Código VHDL contador de posición PID.
El comportamiento de estos contadores es que mientras la señal de (Borrar) general
se encuentre desactivada, el contador tendrá un aumento o decremento (Asc_Des)
del valor guardado (Sal) mientras exista un flanco de subida en la señal (Reloj) estará
conectada a las señales de cuenta valor deseado y cuenta valor real respectivamente.
4.6.1.2 Restador PID.
Al tener los valores de posición real y posición deseada de manera digital es
necesario conocer el valor del error, que se compensará por medio de las acciones
de control. Figura 95
                                                                                   139
                                      Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
   Sistema
  Supervisor                                            error
                         Posición
                        referencia
                                                ∑
                                                                      Decodificador
                                            Posición
                                                                      multiplicador
                                              real                      (encoder)
                                   Figura 95 Sumador.
Esto se hace por medio de un restador digital (Figura 96) el cual realiza la operación
de la resta a 32 bits de tamaño.
                               Figura 96 Restador PID.
140
                                          Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
El código para el restador se muestra en la Figura 97.
                            Figura 97 Código VHDL restador PID.
4.6.1.3 Acciones de control PID.
Al tener el error calculado se procede a que sea afectado por las acciones de control
proporciona, integral y derivativo, las cuales reciben su valor de constante kp, ki y
kd respectivamente de manera externa al bloque PID. Figura 98
                                                       Proporcional
                                                                          Valor y dirección
                                                                          acción de control
   Sistema
  Supervisor                                   error
                        Posición
                       referencia
                                      ∑                  Integral     ∑
           Decodificador
                                    Posición            Derivativo
           multiplicador
             (encoder)                real
                     Figura 98 Diagrama a bloques acciones de control.
                                                                                        141
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
En la Figura 99 se presenta el esquemático implementado
                        Figura 99 Esquemático acciones PID.
4.6.1.2.1 Acción Proporcional.
La acción integral tiene la función de observar la magnitud del error y emitir una
acción derivada de multiplicar el error por un valor numérico (kp).
Para la acción proporcional solo es necesario afectar el valor del error a 16 bits por
el valor de la constante proporcional a 16 bits (kp). Por lo tanto se implementó figura
un multiplicador de 16 por 16 con saturación. Figura 100
142
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
                  Figura 100 Código VHDL Multiplicador 16 x 16.
Describiendo el funcionamiento del bloque es obtener el valor absoluto de cada
multiplicando, en la representación de números con signo el más significativo
corresponde al signo en un tamaño de 16 bits, se tienen 15 bits para la representación
del dato y 16 tendrá el valor del signo. En la multiplicación el resultado se representa
                                                                                    143
                                    Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
con el doble tamaño de los multiplicandos, en este trabajo se estima que el resultado
pocas veces rebasará los 16 bits, por lo tanto para el resultado solo se consideraran
los 16 bits meno significativos.
Dentro de una operación concurrente se evalúa si el resultado es mayor a
1111111111111111bin se sustituirá por el valor mostrado, también se evalúa si los
operando tiene signos diferentes la salida se complementará para tener el valor
absoluto.
4.6.1.2.2 Acción Integral.
La acción integral tiene la función de observar la duración del error y emitir una
acción conforme se presenta la duración.
Se implementó el siguiente código para la acción integral. Figura 101 y Figura 102
                    Figura 101 Código VHDL integrador PID 1.
144
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
                     Figura 102 Código VHDL integrador PID 2.
Describiendo    el   funcionamiento     del   bloque    integrador    implementado,
primeramente se completa la representación del error (Error) a un tamaño de 24 bits
(aux1) verificando si su valor es positivo o negativo; se empieza a acumular el error
mediante la señal (suma) del valor inicial y el error (aux1), se verifica las
condicionantes: si el acumulador tiene valor negativo y el siguiente valor de error es
positivo, por lo que se obtiene el valor absoluto; si el valor del acumulador es
positivo y el error es negativo, también se obtiene valor absoluto, y si no se cumplen
ninguna de esas condiciones se procede a utilizar el valor (sal). Cuando se produce
un tiempo de muestreo el valor (suma) se procede a sumar en el acumulador final
(aux), después se toman los 16 bits más significativos del acumulador para la salida
del bloque.
                                                                                  145
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.6.1.2.2.1 Tiempo de muestreo integral.
Debido a que la acción integral debe de medir la duración del error utilizar el reloj
maestro de 100 kHz provocaría un sobre muestreó, llevando a una inestabilidad en
el control, por lo que es necesario dividir este tiempo. Figura 103
El tiempo de muestreo se fijó a 3 kHz de manera experimental, tomando en cuenta
la velocidad de variación máxima del servomotor y chips dedicados a
posicionamiento de motores como LM629.
                  Figura 103 Divisor de frecuencia para muestreo.
Para dividir la frecuencia maestra de la tarjeta Virtex II (100MHz) se tomó un
contador de 16 bits y se asignó el bit 15 para frecuencia de muestreo.
Al tener un valor para la acción integral determinaremos su participación dentro del
filtro PID por medio de la constante integral utilizando un multiplicador de 16 bits.
Figura 104
                          Figura 104 Acción Integral PID.
146
                                    Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.6.1.2.3 Acción Derivativa.
La acción diferencial es la encargada de observar la rapidez del cambio del error y
actuar al cuando exista una tendencia en el error.
                      Figura 105 Esquema del diferenciador.
Se implementó (Figura 105) de manera que se guarda el valor del error en un registro
y paralelamente se guarda el valor del registro actual, en otro registro en forma de
corrimiento, con esto tendremos el valor del error actual y el error anterior en el
mismo instante de muestra.
Después se realiza una resta de los valores de error actual y error anterior en
representación de 16 bits. Figura 106
              Figura 106 Código VHDL restador para diferencial PID
                                                                                 147
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.6.1.2.2.1 Tiempo de muestreo derivativo.
El muestreo del error se realiza a una frecuencia derivativa la cual es menor o igual
a la frecuencia de muestreo integral, con esto se evita un sobremuestreo, evitando
así una sobreacción del diferenciador. En la Figura 107 se muestra un divisor de
frecuencia de muestreo, el cual divide la frecuencia entre un valor predeterminado.
                Figura 107 Bloque divisor de frecuencia derivativo.
El funcionamiento se describe como un contador decremental de 8 bits, el cual en el
instante en que llega a 00000000bin carga el valor del divisor y pone su salida a 1, a
partir de ahí cada vez que exista un flanco de subida en la frecuencia de muestreo
decrementará el valor. Con esto tendremos un pulso y se podrá utilizar como reloj
para almacenar el valor en los registros en corrimiento. Figura 108
148
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
            Figura 108 Código VHDL divisor de frecuencia derivativo.
4.6.1.3 Sintonización filtro PID.
La sintonización del filtro PID es limitar la participación de las acciones de control
por medio de sus constantes kp, ki, kd respectivamente.
Un método óptimo para realizar la sintonización, es tener un medio de visualización
del comportamiento del motor para lo cual se diseñó tanto un sistema dentro del
FPGA y un medio de visualización en la interfaz.
Se somete el sistema a una prueba escalón donde se le da velocidad máxima y
aceleración máxima, después por medio de la interfaz se visualiza el
comportamiento en una gráfica diseñada.
                                                                                  149
                                    Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
En la Figura 109 y Figura 110 se muestra una de las gráficas utilizadas para realizar
la sintonización de los valores de manera experimental, en la Figura 110 se muestra
el comportamiento lo más cercano al ideal y en la Figura 111 se muestra los valores
finales más cercanos al comportamiento ideal del filtro PID.
                    Figura 109 Grafica para sintonización PID.
                       Figura 110 Graficas PID sintonizado.
                 Figura 111 Mejores valores en sintonización PID.
150
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.6.2 Implementación sistema supervisor.
El sistema supervisorio es el encargado de calcular un tiempo para cambiar la
referencia del sistema supervisorio, y así, tener una regulación de las variables de
velocidad y aceleración en cada servomotor BLDC.
Debido a que los cálculos del sistema supervisor son iterativos tantos para las
secciones de aceleración, velocidad constante y desaceleración, como que estos se
tienen que repetir en cada movimiento.
La mejor manera de resolver esta necesidad es desarrollar un procesador de
propósito general el cual realizará los cálculos para cambiar la referencia del sistema
regulatorio.
4.6.2.1 Implementación procesador en FPGA.
Para la implementación se retomó la configuración del procesador RISC de
propósito general con arquitectura Harvard (Figura 112), con esto se obtuvo una
reducción tanto en uso de recursos como en tiempos de ejecución, con la finalidad
de ser repetible en cada servomotor a utilizar y tener el cálculo de cambio de
referencia en tiempo real.
                                                                                   151
                                                    Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
                                 9 bits                           Memoria de
             Memoria de
                                           Contador de              Datos 32
                 512
                                            Programa             localidades de
            Instrucciones
                                                                     24 bits
                       36 bits
                                                                            24 bits
              Buffer de
             Instrucción
                36 bits
                                                                        24 bits
                       36 bits
             Registro de                  24 bits
                                                               Unidad punto fijo
            Instrucciones
                                                                    24 bits
                36 bits
                       5 bits
                                                                                  24 bits
             Unidad de
                       Secuenciador
              Control
                        3 Tiempos
               5 bits
                                                           Registro A        Registro B
                                                             24 bits          24 bits
                   Figura 112 Arquitectura de procesador implementado.
4.6.2.1.1 Características de procesador implementado.
         Configuración RISC.
         Velocidad de procesamiento 50 MHz.
         3 tiempos de secuencia para completar un microinstrucción.
         Operaciones a 24 bits de tamaño.
         Datos a 24 bits.
         2 registros de datos para resultados y memoria con 512 localidades para
          datos.
         Operaciones de multiplicación, división y raíz cuadrada en un ciclo de
          ejecución.
152
                                      Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
       Capacidad de 64 operaciones lógicas y aritméticas.
       Memoria de instrucciones de 512 localidades.
       Bit de interrupciones.
4.6.2.1.2 Lista de instrucciones procesador.
A continuación se muestra la lista de instrucciones que se pueden desarrollar en el
procesador.
Tabla 8 Lista de instrucciones procesador dedicado.
No.     Instrucción   Argumentos                     Descripción
  1    ANDRAM         Mem, des     AND entre Registro A y Memoria
  2    ANDRBM         Mem, des     AND entre Registro B y Memoria
  3    BORM           Mem          Borrar localidad de Memoria
  4    BORRA                       Borrar Registro A
  5    BORRB                       Borrar Registro B
  6    COMM           Mem, des     Complemento de localidad de Memoria
  7    CORDM          Mem, des     Corrimiento Memoria a la derecha
  8    CORIM          Mem, des     Corrimiento Memoria a la izquierda
  9    DECM           Mem, des     Decremento a Memoria
 10    DECMSC         Mem, des     Decremento a Memoria, brinca si Cero
 11    DIVIRAM        Mem, des     División entre Registro A y Memoria
 12    DIVIRBM        Mem, des     División entre Registro B y Memoria
 13    INCM           Mem, des     Incremento a Memoria
 14    INCMSC         Mem, des     Incremento a Memoria, brinca si Cero
 15    MOVM           Mem, des     Mueve Memoria a cualquier destino
 16    MOVRAM         Mem          Mueve Registro A a Memoria
 17    MOVRBM         Mem          Mueve Registro B a Memoria
 18    MULTRAM        Mem          Multiplicación Registro A y Memoria
 19    MULTRBM        Mem          Multiplicación Registro B y Memoria
 20    NOP                         No operación
 21    ORRAM          Mem,des      OR Registro A con Memoria
 22    ORRBM          Mem,des      OR Registro B con Memoria
 23    ORXRAM         Mem,des      OR Exclusiva Registro A con Memoria
 24    ORXRBM         Mem,des      OR Exclusiva Registro B con Memoria
 25    RAIZRAM        Mem,des      Raíz cuadrada Registro A-Memoria (Dato 48 Bits)
 26    RAIZRBM        Mem,des      Raíz cuadrada Registro B-Memoria (Dato 48 Bits)
 27    RESARAM        Mem,des      Resta con acarreo Registro A con Memoria
                                                                                     153
                                 Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
 28   RESARBM     Mem,des     Resta con acarreo Registro B con Memoria
 29   RESRAM      Mem,des     Resta Memoria menos Registro A
 30   RESRBM      Mem,des     Resta Registro B con Memoria
 31   SUMAARAM    Mem,des     Suma con acarreo Registro A con Memoria
 32   SUMAARBM    Mem,des     Suma con acarreo Registro B con Memoria
 33   SUMARAM     Mem,des     Suma Registro A con Memoria
 34   SUMARBM     Mem,des     Suma Registro B con Memoria
 35   PBMBC       Mem,bit     Prueba de BIT, brinca si es Cero
 36   PBMBU       Mem,bit     Prueba de BIT, brinca si es Uno
 37   PCBM        Mem,bit     Puesta a Cero un BIT de Memoria
 38   PUBM        Mem,bit     Puesta a Uno un Bit de Memoria
 39   ANDRADI     Dato,des    AND entre Registro A y Dato Inmediato
 40   ANDRBDI     Dato,des    AND entre Registro B y Dato Inmediato
 41   DIVIRADI    Dato, des   División entre Registro A y Dato Inmediato
 42   DIVIRBDI    Dato, des   División entre Registro B y Dato Inmediato
 43   MOVRADI     Dato        Mueve Dato Inmediato a Registro A
 44   MOVRBDI     Dato        Mueve Dato Inmediato a Registro B
 45   MULTRADI    Dato,des    Multiplicacion Registro A y Dato Inmediato
 46   MULTRBDI    Dato,des    Multiplicacion Registro B y Dato Inmediato
 47   ORRADI      Dato,des    OR Registro A con Dato Inmediato
 48   ORRBDI      Dato,des    OR Registro B con Dato Inmediato
 49   ORXRADI     Dato,des    OR Exclusiva Registro A con Dato Ïnmediato
 50   ORXRBDI     Dato,des    OR Exclusiva Registro B con Dato Inmediato
 51   REGREINT                Regresa de una interrupcion
 52   REGRESUB                Regresa de una subrutina
 53   RESARADI    Dato,des    Resta con acarreo Registro A con Dato Inmediato
 54   RESARBDI    Dato,des    Resta con acarreo Registro B con Dato Inmediato
 55   RESRADI     Dato,des    Resta Registro A con Dato Inmediato
 56   RESRBDI     Dato,des    Resta Registro B con Dato Inmediato
 57   SALTOCE     Dir         Salta si cero
 58   SALTOAC     Dir         Salta si acarreo
 59   SALTO       Dir         Salto a otro destino de programa
 60   SUBRUT      Dir         Llamada a subrutina
 61   SUMAARADI   Dato,des    Suma con acarreo Registro A con Dato Inmediato
 62   SUMAARBDI   Dato,des    Suma con acarreo Registro B con Dato Inmediato
 63   SUMARADI    Dato,des    Suma Registro A con Dato Inmediato
 64   SUMARBDI    Dato,des    Suma Registro B con Dato Inmediato
154
                                             Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
Para la realización de este proyecto se eligió un tamaño de palabra de 36 bits y tres
posible tipos de instrucción. En la tabla 9 se muestran los tipos de instrucción
desarrollados con sus respectivos campos.
Tabla 9 Tipos y campos de instrucción del procesador general.
                                                            Bits
Tipo de
Instrucción 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OPERACIONES
               Código de     Unidad de    Desti                                                Localidad de
REGISTROS Y
              Instrucción    punto fijo    no                                                    memoria
MEMORIA
OPERACIONES    Código de     Unidad de    Desti
                                                Codificacion Bit
DE BIT        Instrucción    punto fijo    no
OPERACIONES
               Código de     Unidad de    Desti
DE DATO                                                                 Dato inmediato
              Instrucción    punto fijo    no
INMEDIATO
                                                                                                     155
                                       Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
En la Figura 113 se muestra el esquemático implementado para el procesador
utilizado en el sistema regulatorio.
                  Figura 113 Procesador dedicado implementado.
156
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.6.2.1.3 Memoria de instrucciones.
Para la realización del diseño del procesador se procedió a primero a tener una
memoria para guardar las instrucciones del programa (Figura 114). Se eligió el
modulo en macro de una memoria RAM diseñada por Xilinx con dos entradas para
datos: Datos de tamaño de 32 bits y Datos de paridad con tamaño de 4 bits; el reloj
de sincronización es el reloj maestro a 100 MHz; cuenta con 512 registros para
instrucciones, el bus de direcciones es de 9 bits de tamaño.
                       Figura 114 Memoria de Instrucciones.
Para poder tener una escritura y verificación en la memoria de instrucciones, se
diseñaron varios módulos periféricos. Figura 115
                                                                               157
                                      Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
              Figura 115 Periféricos auxiliares memoria de instrucciones.
El diseño Ajuste_8_a_36 es el encargado de concatenar la información de los
registros del banco de registros para formar la palabra a ingresar. Debido a que los
registros son de tamaño de 8 bits es necesario tener más de 1 para direccionar la
memoria esto se hace en el diseño Ajuste_9_a_9_8 con el que concatena las
direcciones baja y alta para tener un solo bus de direcciones.
Se cuenta con un registro de control para tener acciones sobre el procesador, ya que
la tarjeta Virtex II cuenta con pocos dispositivos de entrada, por lo que con este
registro se pueden tener 8 acciones diferentes sin utilizar dispositivos de la tarjeta.
Las señales se separan por medio del bloque Control_Cargador_Prog.
Las acciones que se implementaron en este registro de control son:
      1. Lectura de memoria de instrucciones bit 3
      2. Escritura de memoria de instrucciones bit 2
      3. Asignación del camino para escritura de memoria de instrucciones bit 1
      4. Habilitación de procesador dedicado.
158
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
Para poder realizar una verificación de programa en la interfaz humano-máquina
los datos a la salida de la memoria de programa se dividen y se direccionan a
registros de salida por medio del bloque Ajuste_36_a_8. Figura 116
             Figura 116 Hardware para verificación de programación.
4.6.2.1.4 Buffer de instrucciones.
El buffer de instrucción es el encargado de retener el valor de la instrucción ya que
en cuanto se deja de aplicar la señal de lectura en la memoria de instrucción no se
tiene certeza del dato. Por lo tanto se requiere un elemento que pueda retener el dato
para antes de que se decodifique. Figura 117
                                                                                  159
                                      Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
                          Figura 117 Buffer de instrucción.
En su interior se encuentra una concatenación de los datos y los datos de paridad y
estos se llevan a un registro de 36 bits síncrono. Figura 118
                        Figura 118 Interior buffer de instrucción.
160
                                    Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.4.2.1.5 Registro de instrucciones.
Una vez que se cuenta la palabra se procede a separar en campos de esta tarea se
encarga el registro de instrucción (Figura 119). La división de los campos en esta
primera etapa son:
      Código de instrucción 4 bits hacia Unidad de control.
      Código de UPF 4 bits hacia Unidad de punto fijo.
      Valor de dato inmediato, dirección de memoria, dirección de salto o bit de
       testeo de 23 bits hacia Unidad de punto fijo, Memoria de datos, Contador de
       programa y Unidad de punto fijo respectivamente.
      Decodificación del destino donde se guardara resultados de operación.
                        Figura 119 Registro de instrucción.
                                                                               161
                                       Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
El registro de instrucciones está conformado de un registro de 32 bits y un divisor de bus.
Figura 120
                      Figura 120 Interior registro de instrucción.
Después de la primera separación de los campos de la palabra de instrucción se
procede a separar del valor de dato inmediato: dirección de memoria, bit de testeo
y dirección de salto de programa. Esto se realiza por medio de los módulos
Div_Bs_Fs y Div_As respectivamente. Figura 121
 Figura 121 Divisores de dirección de memoria, bit de testeo y salto de programa.
162
                                    Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
Para decodificar el destino a guardar se ocupa la Tabla 10, esta describe la forma en
que se decodifican los dos bits de destino y esto se hace en cuanto ocurra el evento
T2 del secuenciador.
Tabla 10 Tabla del decodificador destino.
                          Destino D2 D1
                                   1 1      Registro A
                                   0 1      Registro B
                                   1 0      Memoria
                                   0 0       Ninguno
El código para la implementación del decodificador de destino se presenta en la
Figura 122.
                 Figura 122 Código VHDL decodificador destino.
                                                                                 163
                                        Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.6.2.1.6 Secuenciador.
El secuenciador es el encargado de tener las señales de sincronizacion para las
microinstrucciones, se determinó que solo es necesario tres secuencias para realizar tanto
los ciclos de busqueda y los ciclos de ejecucion. Figura 123
                           Figura 123 Bloque de secuenciador.
El código para el secuenciador (Figura 124) se describe como un contador ascendente
síncrono del 0 al 3 y por otro lado realiza una salida por cada valor del contador para
dar las señales (t0, t1 y t2) del secuenciador.
164
                                    Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
              Figura 124 Código VHDL de secuenciador procesador.
4.6.2.1.7 Contador de programa.
El contador de programa es un registro incremental que va apuntando
secuencialmente a la dirección de la instrucción en la memoria de instrucciones, esté
modulo tiene la habilidad de contar 1 posición, contar 2 posiciones, cargar un valor
guardado en la pila o cargar un valor de dirección para interrupción. Figura 125
                                                                                   165
                                    Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
                  Figura 125 Contador de programa y periféricos.
Mediante los módulos multiplexores Mux.1 y Mux.2 se dirige los datos a cargar de
la pila que provienen ya sea de una dirección en palabra de programa para la
instrucción (salto), de la pila que se utiliza para guardar la última posición del
contador de programa cuando ocurre una interrupción o cargar el valor fijo de la
dirección de interrupción.
Las señales de incremento en 1 o en 2 están controladas por las señales de control X5
y X6 de la unidad de control. El código del contador de programa se muestra en la
Figura 126.
166
                                   Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
                Figura 126 Código VHDL contador de programa.
4.6.2.1.8 Memoria de datos.
La memoria de datos se utiliza cuando se quiere guardá un valor de operación
durante más de un ciclo de ejecución. Figura 127
                          Figura 127 Memoria de Datos.
                                                                         167
                                        Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
Para la memoria de datos se creó un módulo para tener 32 registros de 24 bits, se
presenta el arreglo en la Figura 128.
                   Figura 128 Bloque interior memoria de datos.
Al entrar un dato de 24 bits de tamaño este se divide en buses de 8 bits y se cargan
en paralelo en tres memorias, al hacer la lectura estas ponen el dato en la salida y
por medio de un módulo se concatena para volver a integrar el dato de 24 bits.
168
                                    Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.6.2.1.9 Unidad de punto fijo.
La unidad de punto fijo es el conjunto de bloques para realizar las operaciones
aritméticas y lógicas entre sus operadores de entrada (dato inmediato, dato de
memoria de datos o salida de registro A o B); su salida se integra a un bus donde el
decodificador de destino, habilita el lugar para guardar el dato de la operación ya
sea en memoria de datos, registro A o registro B. Figura 129
                   Figura 129 Unidad de punto fijo y periféricos.
                                                                                169
                                        Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.6.2.1.9.1 Operaciones unidad de punto fijo.
Los bloques donde se realizan las operaciones requeridas son:
      0. Bloque Multiplicador. Este bloque realiza una multiplicación de los
         operandos, no necesita ciclos de reloj. Esta implementado mediante un
         código VHDL. Debido a que su resultado necesita el doble de espacio, se
         utilizan los registros A y B para almacenar su resultado.
                        Figura 130 Código VHDL Multiplicador.
      1. Bloque Sumador. En este bloque está diseñado para realizar una suma de los
         operadores, no necesita ciclos de reloj. Implementado en código VHDL y su
         salida es a 24 bits y un bit de acarreo.
                           Figura 131 Código VHDL Sumador.
170
                                  Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
2. Bloque Sumador con Acarreo. Este bloque está diseñado para tomar en
   cuenta el acarreo con esto se pueden realizar operaciones con tamaños
   múltiplos de 24 bits (48 bits, 72 bits). No necesita ciclos de reloj y su salida al
   igual que el bloque sumador es el dato a 24 bits y el bit de acarreo.
              Figura 132 Código VHDL sumador con acarreo.
3. Bloque Restador. Para realizar una resta de datos se implementó este bloque,
   no requiere ciclos de reloj y en su salida se tiene el dato a 24 bits y un bit de
   acarreo, los datos de entrada no se les da ningún tratamiento de
   complemento, por lo tanto, solo se pueden hacer operaciones sin signo.
                     Figura 133 Código VHDL restador.
                                                                                  171
                                         Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
      4. Bloque Restador con Acarreo. Para darle versatilidad al procesador se
         implementó la resta con acarreo para que se puedan hacer operaciones de
         mayor tamaño con el mismo hardware. Las limitaciones de la resta también
         son presentes en este bloque.
                      Figura 134 Código VHDL restador con acarreo.
      5. Bloque Divisor. Este bloque se realizó con el generador de macros propio del
         software ISE utilizado para programar el FPGA. Se configuró para realizar
         operaciones entre datos de 24 bits que no tengan signo, que el remanente sea
         fraccional con tamaño de 24 bits y que solo utilice un ciclo de reloj para la
         operación.
172
                                 Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
                 Figura 135 Macro de bloque divisor.
El resultado de esta macro es de 48 bits, 24 bits parte entera y 24 bits parte
fraccional, debido a que el tamaño de los registros de resultado y memoria
son de 24 bits de tamaño se despreciara los 12 más significativos de la parte
entera y los 12 menos significativos para tener el resultado a 24 bits.
                        Figura 136 Bloque divisor y ajuste.
                                                                          173
                                      Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
      6. Bloque Raíz cuadrada. Este bloque se realizó con la macro de ISE utilizando
         el algoritmo de CORDIC. Se configuro que de forma como se muestra en la
         Figura 137, Figura 138 y Figura 139.
                          Figura 137 Bloque Raíz cuadrada 1.
         Se configuró para que tuviera el máximo de recursos y por defecto la
         arquitectura de implementación se realiza en paralelo.
                          Figura 138 Bloque Raíz cuadrada 2.
174
                              Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
Se utilizó el formato de enteros de manera que el resultado sea un valor
entero. El valor fraccional se ajusta a conveniencia ya que en la representación
de datos digitales el punto decimal es una interpretación de usuario.
                 Figura 139 Bloque Raíz cuadrada 3.
En función de redondeo se configuró al redondeo más cercano y la entrada
de datos será la de mayor tamaño 48 bits, por lo que el resultado será de
tamaño de 25 bits.
Al tener un resultado de 25 bits se eligió no tomar en cuenta el bit más
significativo, y para realizar esta operación se tiene que utilizar los 2
operadores de la UPF para concatenar el dato. Para estos se diseñaron
módulos periféricos a la operación Ajuste_Raiz y Ent_Raiz. Figura 140
                                                                            175
                                       Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
                 Figura 140 Bloque Raíz cuadrada y bloques auxiliares.
      7. Bloque Borrado de bit. Este bloque está diseñado para modificar el valor
         lógico de un bit, asignándole el valor de 0, para sus entradas utiliza el código
         para posición de bit, se genera una máscara para poder modificar únicamente
         el bit deseado esto se realiza en el bloque Dec_5_24_B y después se le realiza
         una operación AND donde la prioridad es el 0.
                        Figura 141 Esquemático Borrado de Bit.
176
                                Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
       Figura 142 Código VHDL generador de mascara prioridad 0.
8. Bloque Puesta a uno bit. Este bloque funciona de manera similar al bloque
   puesta a cero excepto por la generación de la máscara y la operación lógica
   en este caso es la operación OR.
                 Figura 143 Esquemático puesta a uno bit.
                                                                           177
                                      Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
             Figura 144 Código VHDL generador de mascara prioridad 1.
      9. Bloque Inversor. La función de este bloque es invertir el valor de bits para
         una sola entrada.
                      Figura 145 Código VHDL bloque inversor.
178
                                Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
10. Bloque OR exclusiva. Este bloque se diseñó con el propósito de poder tener
   el hardware necesario para realizar una operación XOR entre los operandos.
              Figura 146 Código VHDL bloque OR exclusiva.
11. Bloque Corrimiento a la Derecha. Este bloque se utiliza cuando es requerida
   una división entre 2 del operando, se utiliza para no ocupar el bloque divisor
   y tener una operación más simple.
        Figura 147 Código VHDL bloque corrimiento a la derecha.
12. Bloque Corrimiento a la Izquierda. En similitud con el bloque corrimiento a
   la izquierda, este bloque se utiliza cuando el dato requiere ser multiplicado
   por 2.
                                                                             179
                                       Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
              Figura 148 Código VHDL bloque corrimiento a la izquierda.
      13. Bloque Test bit Uno. La función de este bloque es comprobar si el bit de la
         posición deseada tiene un valor lógico de 1. Su operación es modificar el valor
         de los bits del dato a 1 excepto el bit a testear, si el valor de la bandera unos
         se activa significa que el bit evaluado tiene un valor de 1. Utiliza el generador
         de mascara prioridad 0 y la operación OR.
                             Figura 149 Bloque test bit cero.
      14. Bloque Test bit Cero. Este bloque tiene la función similar del bloque del test
         bit uno, solo que este evalúa si el bit tiene valor lógico 0 y la bandera que se
         activa es la de ceros. Utiliza el generador de mascara prioridad 1 y la
         operación AND.
                             Figura 150 Bloque test bit cero.
      15. Bloque OR 24. Se diseñó para que el procesador pueda realizar una función
         lógica de OR entre sus operadores.
180
                                Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
         Figura 151 Código VHDL bloque operación OR a 24 bits.
16. Bloque AND 24. Se diseñó para que el procesador pueda realizar una función
   lógica de AND entre sus operadores.
            Figura 152 Código VHDL operación AND a 24 bits.
17. Bloque Incremento. En este bloque se realiza un incremento inmediato del
   dato y si es necesario activa una bandera de acarreo, utilizado frecuentemente
   en contadores dentro de un programa.
                   Figura 153 Código VHDL incremento.
                                                                             181
                                       Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
      18. Bloque Decremento. Este bloque se diseñó para realizar un decremento al
         valor del operador y si es necesario activa la bandera de acarreo.
                     Figura 154 Código VHDL bloque decremento.
      19. Bloque Ceros. Este bloque contiene el valor de 0 representado en 24 bits tiene
         las funciones de ocupar los espacios vacíos en el multiplexor y cuando se
         requiere borrar una localidad de memoria o de registros se le carga el valor
         de este bloque.
                           Figura 155 Código VHDL bloque ceros.
182
                                      Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.6.2.1.9.2 Salida operaciones unidad de punto fijo.
Es importante señalar que todas las operaciones se realizan al mismo tiempo la
forma en que se delimita cual operación se requiere, se implementó un multiplexor
de 32 localidades y se controla por medio del código de operación en la palabra de
instrucción. Figura 156
                 Figura 156 Multiplexor seleccionador de operación.
En el caso especial de la multiplicación se necesitan los 2 registro por lo cual la parte
baja de la multiplicación sale por la salida de la UPF y la parte alta de la
multiplicación se encamina al registro B. Figura 157
                      Figura 157 Salidas bloque multiplicador.
                                                                                     183
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.6.2.1.9.3 Banderas listo operaciones unidad de punto fijo.
Las operaciones Raíz Cuadrada y División contiene en sus bloques una señal de listo
(ready), está se activa cuando el dato se ha calculado esta señal se conectara al
habilitador del secuenciador para asegurar que el dato ya esté presente en la salida
antes de realizar la siguiente microinstrucción. Figura 158
       Figura 158 Diseño para bandera de listo de raíz cuadrada y división.
4.6.2.1.9.4 Banderas acarreo operaciones unidad de punto fijo.
La bandera de acarreo se genera en las operaciones de suma y resta. De la misma
forma que se selecciona la operación por medio del multiplexor, se diseñó un
multiplexor para utilizar la bandera de acarreo y en caso de que exista una
interrupción este valor se guarda en un registro tipo flip-flop D para que no se pierda
cuando exista un evento interrupción. Figura 159
184
                                    Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
                Figura 159 Generación y respaldo bandera acarreo.
4.6.2.1.9.5 Banderas cero operaciones unidad de punto fijo.
La bandera de cero se genera cuando el valor de salida todos sus bits tiene el valor
de lógico 0, y se utiliza para la realización de microinstrucciones. Se genera
utilizando la operación lógica NOR en todos los bits. Figura 160
                       Figura 160 Generación bandera cero.
                                                                                185
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.6.2.1.9.6 Banderas uno operaciones unidad de punto fijo.
Al igual que la bandera de cero, la bandera de unos tiene la función de señalar
cuando todos los bits de salida tienen un valor lógico de 1. Esta se genera con la
operación lógica AND aplicada a todos los bits. Figura 161
                         Figura 161 Generación bandera Unos.
Al igual que la bandera de acarreo estás se tienen que respaldar cuando ocurre una
interrupción para esto se diseñó un bloque Reg_Bandera el cual con las señales
respalda y restaura guardará los valores de las banderas. Al final se concatenarán
las banderas que irán hacia la unidad de control. Figura 162
                             Figura 162 Banderas UPF.
186
                                   Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
En la Figura 163 se presenta la unidad de cálculo de punto fijo implementada.
                   Figura 163 Unidad de cálculo de punto fijo.
                                                                                187
                                       Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.6.2.1.10 Unidad de control.
La parte final para completar el procesador de uso general es la unidad de control,
la cual es la encargada de activar las señales que concretan las microinstrucciones.
Para la implementación primero se agruparon las instrucciones por tipos (Tabla 11),
conjuntando las instrucciones que tendrían las mismas microinstrucciones con la
diferencia del código de operación de la unidad de punto fijo.
Tabla 11 Grupos de operaciones del procesador.
               Tipo de instrucción                                        CODIGO
           0   No operación                                           0   0 0 0    0
           1   Operación en la UPF Registro A y dato inmediato        0   0 0 0    1
           2   Operación en la UPF Registro B y dato inmediato        0   0 0 1    0
           3   Operación en la UPF Registro A y memoria               0   0 0 1    1
           4   Operación en la UPF Registro B y memoria               0   0 1 0    0
           5   Multiplicación en UPF Registro A y dato inmediato      0   0 1 0    1
           6   Multiplicación en UPF Registro B y dato inmediato      0   0 1 1    0
           7   Multiplicación en UPF Registro A y memoria             0   0 1 1    1
           8   Multiplicación en UPF Registro B y memoria             0   1 0 0    0
           9   Mueve Registro "A" a Memoria                           0   1 0 0    1
          10   Mueve Registro "B" a Memoria                           0   1 0 1    0
          11   Salto                                                  0   1 0 1    1
          12   Llamado a subrutina                                    0   1 1 0    0
          13   Regreso de subrutina                                   0   1 1 0    1
          14   Regreso de interrupción                                0   1 1 1    0
          15   Brinco Condicional                                     0   1 1 1    1
          16   Suma o resta con Acarreo Registro A y Memoria          1   0 0 0    0
          17   Suma o resta con Acarreo Registro A y Dato inmediato   1   0 0 0    1
          18   Suma o resta con Acarreo Registro B y Memoria          1   0 0 1    0
          19   Suma o resta con Acarreo Registro B y Dato inmediato   1   0 0 1    1
          20   Salto si Cero                                          1   0 1 0    0
          21   Salta si acarreo                                       1   0 1 0    1
188
                                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
Al tener agrupadas las operaciones por similitud de microinstrucciones se procedió
a diseñar las secuencias de activación de los elementos para realizar las
microinstrucciones coordinados por los tiempos del secuenciador.
       0. No operación.
Int.    Ban.         Cod Ins       Secuen                                  Señales de Control
   A     C     U 31 3 2 1      0 t2 t1 t0 X21 X20 X19 X18 X17 X16 X15 X14 X13 X12 X11 X10 X9 X8 X7 X6 X5 X4 X3 X2 X1
  0X     X     X 0 0 0 0       0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0                                0 0 0 0 0 0 0 1
  0X     X     X 0 0 0 0       0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0                                0 0 0 0 0 1 0 1
  0X     X     X 0 0 0 0       0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0                                0 0 0 1 1 0 0 0
       1. Operación en la UPF Registro A y dato inmediato
Int.    Ban.         Cod Ins       Secuen                                  Señales de Control
   A     C     U 31 3 2 1      0 t2 t1 t0 X21 X20 X19 X18 X17 X16 X15 X14 X13 X12 X11 X10 X9 X8 X7 X6 X5 X4 X3 X2 X1
  0X     X     X 0 0 0 0       1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0                                0 0 0 0 0 0 0 1
  0X     X     X 0 0 0 0       1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0                                1 0 0 0 0 1 0 1
  0X     X     X 0 0 0 0       1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0                                1 0 0 1 1 0 0 0
       2. Operación en la UPF Registro B y dato inmediato
Int.    Ban.         Cod Ins       Secuen                                  Señales de Control
   A     C     U 31 3 2 1      0 t2 t1 t0 X21 X20 X19 X18 X17 X16 X15 X14 X13 X12 X11 X10 X9 X8 X7 X6 X5 X4 X3 X2 X1
  0X     X     X 0 0 0 1       0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0                                0 0 0 0 0 0 0 1
  0X     X     X 0 0 0 1       0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0                                1 0 0 0 0 1 0 1
  0X     X     X 0 0 0 1       0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0                                1 0 0 1 1 0 0 0
       3. Operación en la UPF Registro A y memoria.
Int.    Ban.         Cod Ins       Secuen                                  Señales de Control
   A     C     U 31 3 2 1      0 t2 t1 t0 X21 X20 X19 X18 X17 X16 X15 X14 X13 X12 X11 X10 X9 X8 X7 X6 X5 X4 X3 X2 X1
  0X     X     X 0 0 0 1       1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0                                0 0 0 0 0 0 0 1
  0X     X     X 0 0 0 1       1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0                                1 0 0 0 0 1 0 1
  0X     X     X 0 0 0 1       1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0                                1 0 0 1 1 0 0 0
       4. Operación en la UPF Registro B y memoria.
                                                                                                                189
                                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
       5. Multiplicación en UPF Registro A y dato inmediato.
       6. Multiplicación en UPF Registro B y dato inmediato.
Int.    Ban.         Cod Ins       Secuen                                  Señales de Control
   A     C     U 31 3 2 1      0 t2 t1 t0 X21 X20 X19 X18 X17 X16 X15 X14 X13 X12 X11 X10 X9 X8 X7 X6 X5 X4 X3 X2 X1
  0X     X     X 0 0 1 1       0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0                                0 0 0 0 0 0 0 1
  0X     X     X 0 0 1 1       0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0                                1 0 0 0 0 1 0 1
  0X     X     X 0 0 1 1       0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0                                0 0 0 1 1 0 0 0
       7. Multiplicación en UPF Registro A y memoria.
Int.    Ban.         Cod Ins       Secuen                                  Señales de Control
   A     C     U 31 3 2 1      0 t2 t1 t0 X21 X20 X19 X18 X17 X16 X15 X14 X13 X12 X11 X10 X9 X8 X7 X6 X5 X4 X3 X2 X1
  0X     X     X 0 0 1 1       1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0                                0 0 0 0 0 0 0 1
  0X     X     X 0 0 1 1       1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0                                1 0 0 0 0 1 0 1
  0X     X     X 0 0 1 1       1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0                                0 0 0 1 1 0 0 0
       8. Multiplicación en UPF Registro B y memoria.
Int.    Ban.         Cod Ins       Secuen                                  Señales de Control
   A     C     U 31 3 2 1      0 t2 t1 t0 X21 X20 X19 X18 X17 X16 X15 X14 X13 X12 X11 X10 X9 X8 X7 X6 X5 X4 X3 X2 X1
  0X     X     X 0 1 0 0       0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0                                0 0 0 0 0 0 0 1
  0X     X     X 0 1 0 0       0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0                                1 0 0 0 0 1 0 1
  0X     X     X 0 1 0 0       0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0                                0 0 0 1 1 0 0 0
       9. Mueve Registro “A” a memoria
Int.    Ban.         Cod Ins       Secuen                                  Señales de Control
   A     C     U 31 3 2 1      0 t2 t1 t0 X21 X20 X19 X18 X17 X16 X15 X14 X13 X12 X11 X10 X9 X8 X7 X6 X5 X4 X3 X2 X1
  0X     X     X 0 1 0 0       1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0                                0 0 0 0 0 0 0 1
  0X     X     X 0 1 0 0       1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0                                0 0 0 0 0 1 0 1
  0X     X     X 0 1 0 0       1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0                                0 1 0 1 1 0 0 0
       10. Mueve Registro B a memoria
190
                                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
       11. Salto
Int.    Ban.         Cod Ins       Secuen                                  Señales de Control
   A     C     U 31 3 2 1      0 t2 t1 t0 X21 X20 X19 X18 X17 X16 X15 X14 X13 X12 X11 X10 X9 X8 X7 X6 X5 X4 X3 X2 X1
  0X     X     X 0 1 0 1       1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0                                0 0 0 0 0 0 0 1
  0X     X     X 0 1 0 1       1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0                                0 0 0 0 0 1 0 1
  0X     X     X 0 1 0 1       1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0                                0 0 0 0 1 0 0 0
       12. Llamado a subrutina
       13. Regreso de subrutina
Int.    Ban.         Cod Ins       Secuen                                  Señales de Control
   A     C     U 31 3 2 1      0 t2 t1 t0 X21 X20 X19 X18 X17 X16 X15 X14 X13 X12 X11 X10 X9 X8 X7 X6 X5 X4 X3 X2 X1
  0X     X     X 0 1 1 0       1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1                                0 0 0 0 0 0 0 1
  0X     X     X 0 1 1 0       1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0                                0 0 0 0 0 1 0 1
  0X     X     X 0 1 1 0       1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0                                0 0 0 0 1 0 0 0
       14. Regreso de interrupción
       15. Brinco Condicional
                                                                                                                191
                                                         Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
       16. Suma o Resta con acarreo Registro A y memoria
Int.        Ban.         Cod Ins       Secuen                                  Señales de Control
   A         C     U 31 3 2 1      0 t2 t1 t0 X21 X20 X19 X18 X17 X16 X15 X14 X13 X12 X11 X10 X9 X8 X7 X6 X5 X4 X3 X2 X1
  0X         X     X 1 0 0 0       0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0                                0 0 0 0 0 0 0 1
  0X         X     X 1 0 0 0       0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0                                1 0 0 0 0 1 0 1
  0X         X     X 1 0 0 0       0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0                                1 0 0 1 1 0 0 0
       17. Suma o Resta con acarreo Registro A y dato inmediato
Int.        Ban.         Cod Ins       Secuen                                  Señales de Control
   A         C     U 31 3 2 1      0 t2 t1 t0 X21 X20 X19 X18 X17 X16 X15 X14 X13 X12 X11 X10 X9 X8 X7 X6 X5 X4 X3 X2 X1
  0X         X     X 1 0 0 0       1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0                                0 0 0 0 0 0 0 1
  0X         X     X 1 0 0 0       1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0                                1 0 0 0 0 1 0 1
  0X         X     X 1 0 0 0       1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0                                1 0 0 1 1 0 0 0
       18. Suma o Resta con acarreo Registro B y memoria
Int.        Ban.         Cod Ins       Secuen                                  Señales de Control
   A         C     U 31 3 2 1      0 t2 t1 t0 X21 X20 X19 X18 X17 X16 X15 X14 X13 X12 X11 X10 X9 X8 X7 X6 X5 X4 X3 X2 X1
  0X         X     X 1 0 0 1       0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0                                0 0 0 0 0 0 0 1
  0X         X     X 1 0 0 1       0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0                                1 0 0 0 0 1 0 1
  0X         X     X 1 0 0 1       0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0                                1 0 0 1 1 0 0 0
       19. Suma o Resta con acarreo Registro B y dato inmediato
Int.        Ban.         Cod Ins       Secuen                                  Señales de Control
   A         C     U 31 3 2 1      0 t2 t1 t0 X21 X20 X19 X18 X17 X16 X15 X14 X13 X12 X11 X10 X9 X8 X7 X6 X5 X4 X3 X2 X1
  0X         X     X 1 0 0 1       1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0                                0 0 0 0 0 0 0 1
  0X         X     X 1 0 0 1       1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0                                1 0 0 0 0 1 0 1
  0X         X     X 1 0 0 1       1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0                                1 0 0 1 1 0 0 0
       20. Salto si cero
Int.        Ban.     Cod Ins  Secuen                                  Señales de Control
   A         C U 31 3 2 1 0 t2 t1 t0 X21 X20 X19 X18 X17 X16 X15 X14 X13 X12 X11 X10 X9 X8 X7 X6 X5 X4 X3 X2 X1
  0X           1X 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0                                0 0 0 0 0 0 0 1
  0X           1X 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0                                0 0 0 0 0 1 0 1
  0X           1X 1 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0                                0 0 0 0 1 0 0 0
  0X           0X 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
  0X           0X 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
  0X           0X 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0
       21. Salta si acarreo.
Int.        Ban.         Cod Ins  Secuen                                  Señales de Control
       A     C     U 31 3 2 1 0 t2 t1 t0 X21 X20 X19 X18 X17 X16 X15 X14 X13 X12 X11 X10 X9 X8 X7 X6 X5 X4 X3 X2 X1
  0        1X      X 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0                                 0 0 0 0 0 0 0 1
  0        1X      X 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0                                 0 0 0 0 0 1 0 1
  0        1X      X 1 0 1 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0                                 0 0 0 0 1 0 0 0
  0        0X      X 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
  0        0X      X 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
  0        0X      X 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0
192
                                                    Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
       22. Interrupción.
Int.    Ban.           Cod Ins  Secuen                                  Señales de Control
   A     C     U   31 3 2 1 0 t2 t1 t0 X21 X20 X19 X18 X17 X16 X15 X14 X13 X12 X11 X10 X9 X8 X7 X6 X5 X4 X3 X2 X1
  1X     X     X   x X X X X    0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1
  1X     X     X   x X X X X    0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1
  1X     X     X   x X X X X    1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
Una vez diseñado las microinstrucciones se procedió a implementar en un código
VHDL como se muestra en la Figura 164, Figura 165, Figura 166, Figura 167 y Figura
168; en algunas microinstrucciones se repite la salida de señales de control y esto es
un error en programación de VHDL, por lo tanto se agruparon en conjuntos para
tener diferentes entradas y una sola salida.
                   Figura 164 Código VHDL Implementación Unidad de control 1.
                                                                                                             193
                             Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
      Figura 165 Código VHDL Implementación Unidad de control 2.
      Figura 166 Codigo VHDL Implementación Unidad de control 3.
194
                       Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
Figura 167 Código VHDL Implementación Unidad de control 4.
Figura 168 Código VHDL Implementación Unidad de control 5.
                                                             195
                                   Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
Para completar la funcionalidad de la unidad se le diseñaron bloques para su
funcionamiento. Entrada_u_control concatena las entradas de interrupción,
secuencias (T), banderas y código de instrucción; y el bloque Xs_ind divide el bus
de las señales de control para que actúen de manera individual. Figura 169
                 Figura 169 Bloques auxiliares unidad de control.
196
                                      Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
Es importante resaltar que se utilizaron en puntos importantes salidas de los buses
para monitorear los valores, estos se guardaren en registros del banco de registros
para ser visualizados por la interfaz. Figura 170
                            7     3
         Figura 170 Puntos de salida procesador dedicado implementado.
   1. Salida de la memoria ROM para                 4. Contador de programa.
       instrucciones.                               5.   Destino de guardado.
   2. Código de instrucción.                        6. Microinstrucciones.
   3. Secuenciador.
                                                                                197
                                    Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.7 Implementación de interfaz.
Con el propósito de poder configurar y monitorear los parámetros del sistema de
control distribuido se diseñó una interfaz dentro del sistema. Se realizó con el uso
del puerto paralelo de una PC y utilizando la herramienta de desarrollo C++ Builder.
Dentro de esta interfaz se encuentran los parámetros de configuración del PID y un
cargador, decodificador y depurador del sistema supervisorio.
4.6.1 Implementación de un registro en FPGA
Dentro de la implementación en el FPGA, se diseñó la función de un registro, a partir
del elemento básico CB8CLE, el cual es un contador de ocho bits con carga de datos
síncrona y reseteo asíncrono.
La Figura 171 muestra el circuito necesario para almacenar datos en un registro, este
circuito comprende del contador antes mencionado, las señales de control: escritura,
datos y reset provenientes del puerto paralelo de la PC, además de la señal de reloj
interno del FPGA, para realizar la sincronización.
                 Figura 171 Circuito para escritura en un registro.
El comportamiento del registro se representa en la Tabla 12, en la cual se puede
interpretar que el reseteo asíncrono obliga a que los datos en la salida del contador
sean de valor lógico cero, sin importar la transición en la que se encuentre el reloj
198
                                       Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
interno del hardware; la carga de datos será realizada y estos serán almacenados
dentro del registro, cuando la entrada “carga” este en estado alto y la transición
positiva del reloj se haga presente.
Tabla 12 Tabla de verdad del registro.
                             Entrada                                    Salidas
    Reseteo        Carga       Conteo        Reloj     D7-D0            Q7-Q0
     (CLR)          (L)         (CE)          (C)
       1             X            X            X         X                 0
       0             1            X                     Datos            Datos
       0             0            0           X          X            Sin cambio
       0             0            1                      X            Incremento
Es importante asegurar que la señal que habilita el conteo (la entrada CE), se
encuentre en estado deshabilitado para que el dato almacenado no se modifique. La
señal para acarreo de cuenta (CEO) y la que indica que el conteo ha llegado a su
máximo (TC) no son utilizadas en esta aplicación.
Para completar la función de registro, se necesita tener la operación de lectura, por
el mismo bus que se utiliza para escribir, este bus será entonces bidireccional. Como
se observa en la Figura 172 este bus intersecta entradas y salidas en un punto común,
entonces es necesario la siguiente serie de pasos para poder llevar a cabo estas
acciones sin conflictos:
      El puerto de datos en la PC inicialmente está en modo salida, debe cambiar a
       modo entrada.
      La señal de lectura se manda.
      La PC toma los datos del registro.
      Se desactiva la señal de lectura.
      El puerto de datos se cambia a modo salida.
La señal de lectura en el FPGA, se implementa utilizando el buffer de tercer estado
OBUFT8 en la salida de los datos, este tiene la función de colocar los datos de salida
del registro dentro del bus cuando se requiera, esto sucede al recibir el comando de
                                                                                   199
                                      Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
lectura del que se habla anteriormente; en caso contrario, se mantiene en estado alta
impedancia.
Así se tiene la posibilidad de utilizar el bus de manera bidireccional y tener el control
de cuando se desea leer y cuando escribir, evitando colocar ambas operaciones al
mismo tiempo, lo que provocaría interferencia de datos o la pérdida de estos.
Con este diseño, Figura 172, se logra utilizar la comunicación vía puerto paralelo de
la PC que tiene la limitante de enviar y recibir datos por una sola dirección del
puerto, el único que es bidireccional.
         Figura 172 Circuito para lectura y escritura de datos, un registro.
4.5.2 Implementación del banco de registros.
El banco de registros con la habilidad para escribir en él se muestra en la Figura 173,
este circuito consta de cuatro registros como los anteriormente mencionados,
utilizando de manera auxiliar la operación de la compuerta “and” entre la señal de
escribe y la señal de habilitación de banco, esto para tener el control de a quien se le
realizará la carga de datos. La señal habilitación de banco es agregada, debido a que
200
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
se requieren bancos de registros trabajando conjuntamente, esta señal es la que se
modifica de acuerdo al banco en el que se desea trabajar.
                    Figura 173 Banco de registros, solo escritura.
Sin embargo, hasta este punto el banco de registros solo tiene la capacidad para
recibir y guardar el mismo dato en todos sus módulos, por esto fue necesario
integrar el multiplexor D2_4E (Figura 174), el cual se encarga de direccionar a que
módulo se le desean cargar los datos, creando indirectamente las direcciones de los
registros. La salida del multiplexor brinda una señal con la cual se selecciona el
número de registro a utilizar para almacenar la información.
Para la operación de lectura dentro del arreglo del banco de registros, se requiere de
otro multiplexor con entradas y salida del tipo bus, en este caso el
“MultiplexorBus4a1”, el cual trabaja en sincronia con la misma dirección que se le
haya establecido al multiplexor de entrada de datos, con esto se tiene un banco de
registros con acceso a todos los registros de manera individual.
                                                                                  201
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
       Figura 174 Esquema Banco de registros Lectura y Escritura desde PC.
En algunos casos solo, se requiere que la PC escriba y lea dentro de los registros,
configuración de sistema, también en necesario implementar registros en los que la
PC solo pueda tener la operación de lectura. A estos registros se les conoce por el
nombre de “Latch”.Figura 175
202
                                    Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
                        Figura 175 Esquema registro Latch.
4.5.3 Expansión Banco de Registros
Un módulo se conforma de cuatro registros, se pueden conectar los módulos que
sean requeridos por la aplicación para así conformar el banco de registros
flexiblemente.
La aplicación realizada requiere de varios módulos de registros o de mayor espacio
por lo cual solo es necesario copiar los módulos y ajustar el multiplexor para la
lectura de datos. Ya que el registro de direcciones es de 8 bits de tamaño, se pueden
implementar hasta 256 registros de datos. En la Figura 176 se presenta el banco de
registros implementados y en la Tabla 13 se presenta la relación de registros y su
función.
                                                                                 203
                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
      Figura 176 Banco de Registros implementado
204
                                                                              Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
Tabla 13 Información de Banco de Registros.
                                                 Direccion       Registro
                                             Dec           Hex
                                              0             0            Codigo bits (7:0)
       Escritura y Lectura desde
                                              1             1           Codigo bits (8:15)          Entrada de codigo en ROM
                                              2             2          Codigo bits (16:23)
                                              3             3          Codigo bits (24:31)
                    PC
                                              4             4          Codigo bits (32:36)
                                              5             5    Dirección ROM parte baja (7:0)
                                              6             6    Dirección ROM parte alta(9:8)
                                              7             7         Control de carga(3:0)
                                              8             8            Codigo bits (7:0)
                                              9             9           Codigo bits (8:15)
              Lectura desde PC
                                              10            A          Codigo bits (16:23)          Salida de codigo en ROM
                                              11            B          Codigo bits (24:31)
                                              12            C          Codigo bits (32:36)
                                              13            D
                                              14            E
                                              15            F
                                              16            10         Debug Registro A
                                              17            11         Debug Registro A
                                              18            12         Debug Registro A
                                              19            13         Debug Registro B
                                              20            14         Debug Registro B
              Lectura desde PC
                                              21            15         Debug Registro B
                                              22            16               Sal PC
                                              23            17             Sal Xbaja
                                              24            18            Sal Xmedia
                                              25            19             Sal Xalta
                                              26           1A           Cod Instrucción
                                              27           1B       Ts(microinstrucciones)
                                              28           1C               Destino
                                              29           1D              banderas
                                              30            1E
              Escritura y Lectura desde PC
                                                                               kp
                                              31            1F
                                              32            20
                                                                                ki
                                              33            21
                                              34            22
                                                                               kd
                                              35            23
                                              36            24
                                                                       Limite Integracion
                                              37            25
                                              38            26        Divisor Frecuencia
                                              39            27
                                              40            28              Error Real
                                              41            29
                                              42           2A
                                                                            Valor Real
                                              43           2B
                                              44           2C
              Lectura desde PC
                                              45           2D
                                              46            2E
                                                                        Valor Deseado
                                              47            2F
                                              48            30
                                              49            31                PWM
                                              50            32
                                                                      Accion Proporcional
                                              51            33
                                              52            34
                                                                        Accion Integral
                                              53            35
                                              54            36
                                                                       Accion Derivativo
                                              55            37
                                                                                                                               205
                                       Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.5.4 Filtro de ruido.
Toda señal que viaja a través de un conductor es propensa a que se le sume el ruido
el cual describe que existirá una oscilación de gran intensidad y con una duración
corta (Figura 177), la cual si no es aislada o eliminada, afecta a los circuitos digitales.
                   Figura 177 Señal con ruido vista en osciloscopio.
Para poder eliminar este fenómeno se puede implementar un circuito pasivo
conocido como “pasa-bajas”, el cual es un arreglo de capacitor y resistencias que
filtrara la señal y mantendrá el valor que dure por más tiempo.
Se implementó un filtro de manera digital sin utilizar componentes externos (Figura
178), el cual se diseñó filtrar la señal tiene que durar el mismo periodo mientras se
carga en todos los flip-flop y al final se realiza una acción de AND para confirmar
que la señal tuvo una duración y no solo fue un pulso. Con esto la señal tiene que
tener una duración de mínimo 70ns para poder ser considerada señal válida.
                         Figura 178 Esquemático filtro ruido.
206
                                  Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.8 Programa Control Supervisorio.
Una vez que existe un camino entre la PC y el procesador embebido dentro del
FPGA se realizó tanto un interpretador de programa, un cargador de programa a la
memoria de instrucciones y un sistema que permita depurar el programa. Figura
179
                                     Inicio
                                  Captura de
                                  Programa
                                 Interpretador
                                       y
                                 Ensamblador
                                  Cargador de
                                   memoria
                                   Ejecución
                                  Depurador
                                      Fin
          Figura 179 Secuencia de programación procesador embebido.
                                                                             207
                                                         Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.8.1 Programador.
Basado en el diagrama de flujo de implementación de un perfil de trayectoria se
presenta el programa del control supervisorio con los mnemónicos desarrollados
para implementar en el procesador general, con aplicación de comentarios y
etiquetas emulando a cualquier programa de programación de alto nivel. Figura 180,
Figura 181, Figura 182 y Figura 183
  FIN_POSICION     EQUI         0X10       // RAM PROBLEMAS CON POSICION 0
  ACELERACION       EQUI        0X01
  VELOCIDAD_CTE EQUI              0X02
  VELOCIDAD_FIN EQUI             0X03
  VELOCIDAD_INI EQUI            0X04
  ALTA_MULTI     EQUI         0X05
  BAJA_MULTI     EQUI         0X06
  TIEMPO       EQUI        0X07
  RESUL_RESTA       EQUI        0X08
  CON_ACE        EQUI         0X09
  ALTA_MULTI2      EQUI         0X0A
  BAJA_MULTI2      EQUI         0X0B
  CON_POS        EQUI         0X0C
  CON_VEL_CTE       EQUI        0X0D
  ITERACIONES      EQUI         0X0E
  CON_DES        EQUI         0X0F
  RA        EQUI        0X3
  MEM        EQUI         0X2
  1                     MOVRADI          0X6000 // DATOS DE PRUEBA
  2                     MOVRAM           VELOCIDAD_CTE
  3                     MOVRADI          0X1000
  4                     MOVRAM           ACELERACION
  5                     MOVRADI          0X32
  6                     MOVRAM           FIN_POSICION
                   Figura 180 Programa control supervisorio alto nivel 1.
208
                                                    Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
7INIPROG      BORRA                                                      //CUANDO SESALTA SE DEBE DE REGRESAR A
UNA INSTRUCCION ANTERIOR A LA QUE SE VA A EJECUTAR
8          MOVRAM     VELOCIDAD_INI
9          MOVRAM     CON_ACE              //PUESTA A CERO VARIABLES
10         MOVRAM     VELOCIDAD_FIN
11                   MOVRAM     CON_DES
12                   MOVRAM     CON_POS
13                   MOVRAM     CON_VEL_CTE
14                   MOVRAM     ITERACIONES
15                   MOVRAM     TIEMPO
16ACELERA      MOVM       VELOCIDAD_FIN , RA
17         RESRAM     VELOCIDAD_CTE , RA
18         SALTOAC    VELOCTE              //INICIO Y CABECERA WHILE
19            MOVM       VELOCIDAD_INI,RA
20            MULTRAM      VELOCIDAD_INI
21            MOVRBM      ALTA_MULTI
22            MOVRAM      BAJA_MULTI
23            MOVM       ACELERACION,RA
24            MULTRADI    0X02000        //El dato inmediato 12b parte entera 12b fraccionaria
25            MOVRBM      ALTA_MULTI2
26            MOVRAM      BAJA_MULTI2
27            SUMARAM      BAJA_MULTI, MEM
28            SUMAARBM     ALTA_MULTI, RA
29            RAIZRAM     BAJA_MULTI,RA
30            MOVRAM      VELOCIDAD_FIN           // CALCULO VELOCIDAD FINAL
31            MOVM       VELOCIDAD_INI,RA
32            RESRAM      VELOCIDAD_FIN,RA
33            MOVRAM      RESUL_RESTA
34            MOVM       ACELERACION,RA
35            DIVIRAM    RESUL_RESTA,RA
36            MOVRAM      TIEMPO              // CALCULO TIEMPO ACELERACION
37            MOVM       VELOCIDAD_FIN,RA
38            MOVRAM      VELOCIDAD_INI           // VF=VI
39            MOVM       CON_ACE,RA
40
                Figura0X1,RA
              SUMARADI
                       181 Programa   control supervisorio alto nivel 2.
                                 //CUENTA DE ACELERACION
41            MOVRAM      CON_ACE
                                                                                                                  209
42            MOVM       CON_POS,RA
                                                      Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
 40              SUMARADI        0X1,RA         //CUENTA DE ACELERACION
 41              MOVRAM       CON_ACE
 42              MOVM       CON_POS,RA
 43              SUMARADI        0X1,RA         //CUENTA DE POSICION
 44              MOVRAM       CON_POS
 45              CORDM       FIN_POSICION,RA
 46              MOVRAM       RESUL_RESTA
 47              MOVM       CON_ACE,RA
 48              RESRAM      RESUL_RESTA,RA           //SE DETIENE LA ACELERACION A LA MITAD DE POSICION DESEADA
 49              SALTOAC     DESACELERA
 50          SALTO      ACELERA             // SE CIERRA CICLO DE WHILE (ACELERACION)
 51VELOCTE        MOVM       VELOCIDAD_CTE,RA
 52          DIVIRADI   0X1000,RA
 53          MOVRAM      TIEMPO                 // CALCULO TIEMPO VELOCIDAD CONSTANTE
 54          CORIM      CON_ACE,RA
 55          RESRAM      FIN_POSICION, RA
 56          MOVRAM      ITERACIONES               //CALCULO ITERACIONES CICLO FOR
 57          BORM       CON_VEL_CTE
 58INIFOR       MOVM        CON_VEL_CTE, RA
 59          RESRAM      ITERACIONES, RA
 60          SALTOCE     DESACELERA             //SE CHECA CEROS PARA QUE OMITA LA IGUALDAD     //CABECERA FOR
 61              MOVM       TIEMPO, MEM           // VUELVE A CARGAR TIEMPO EN APLICACION(SALIDA DE PROCESADOR)
 62             MOVM        CON_POS,RA
 63              SUMARADI        0X1,RA         //CUENTA DE POSICION
 64              MOVRAM       CON_POS
 65              MOVM       CON_VEL_CTE,RA
 66              SUMARADI        0X1,RA         //CUENTA DE VELOCIDAD CONSTANTE
 67              MOVRAM       CON_VEL_CTE
 68          SALTO      INIFOR            //SE CIERRA CICLO FOR
 69DESACELERA        BORM        CON_DES
 70INIFOR2      MOVM        CON_DES, RA
 71          RESRAM      CON_ACE,
210
 88              MOVM    Figura  182 Programa control supervisorio alto nivel 3.
                           VELOCIDAD_FIN,RA
 89              RESRAM      VELOCIDAD_INI,RA
 90              MOVRAM       RESUL_RESTA
 91              MOVM       ACELERACION,RA
                                              Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
72    SALTOCE    INIPROG           //CABECERA FOR
73      MOVRADI     0X1
74       RESRAM      FIN_POSICION, RA
75       SALTOCE     INIPROG            // EN CASO DE TENER DESPLAZAMIENTO IGUAL A UN PASO
76       MOVM       VELOCIDAD_INI,RA
77       MULTRAM     VELOCIDAD_INI
78       MOVRBM      ALTA_MULTI
79       MOVRAM      BAJA_MULTI
80       MOVM       ACELERACION,RA
81       MULTRADI    0X2000
82       MOVRBM      ALTA_MULTI2
83       MOVRAM      BAJA_MULTI2
84       RESRAM      BAJA_MULTI, MEM
85       RESARBM     ALTA_MULTI, RA
86       RAIZRAM     BAJA_MULTI,RA
87       MOVRAM      VELOCIDAD_FIN          // CALCULO VELOCIDAD FINAL
88       MOVM       VELOCIDAD_FIN,RA
89       RESRAM      VELOCIDAD_INI,RA
90       MOVRAM      RESUL_RESTA
91       MOVM       ACELERACION,RA
92       DIVIRAM    RESUL_RESTA,RA
93       MOVRAM      TIEMPO             // CALCULO DE TIEMPO
94       MOVM       VELOCIDAD_FIN,RA
95       MOVRAM      VELOCIDAD_INI         // Vi=Vf
96       MOVM       TIEMPO, MEM          // VUELVE A CARGAR TIEMPO EN APLICACION(SALIDA DE PROCESADOR)
97       MOVM       CON_POS,RA
98       SUMARADI    0X1,RA             //CUENTA DE POSICION
99      MOVRAM       CON_POS
100       MOVM       CON_DES,RA
101       SUMARADI    0X1,RA            //CUENTA DE ACELERACION
102       MOVRAM      CON_DES
103   SALTO     INIFOR2
           Figura 183 Programa control supervisorio alto nivel 4.
                                                                                                         211
                                                  Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
Al capturar el programa en alto nivel mediante el archivo Principal.txt se procedió
a realizar la primera operación sobre el archivo, se sustituyeron los mnemónicos de
etiquetas por la dirección que se utiliza en la memoria de datos y se creó el archivo
Ensam.ens con una extensión propia. Figura 184
 1                      MOVRADI       0X6000
 2                      MOVRAM        0X02
 3                      MOVRADI       0X1000
 4                      MOVRAM        0X01
 5                      MOVRADI       0X32
 6                      MOVRAM        0X10
 7INIPROG      BORRA
 8          MOVRAM     0X04
 9          MOVRAM     0X09
 10         MOVRAM     0X03
 11                      MOVRAM            0X0F
 12                      MOVRAM            0X0C
 13                      MOVRAM            0X0D
 14                      MOVRAM          0X0E
 15                      MOVRAM            0X07
 16ACELERA      MOVM          0X03 , 0X3
 17         RESRAM     0X02 , 0X3
 18         SALTOAC    0X32
 19            MOVM       0X04,0X3
 20            MULTRAM        0X04
 21            MOVRBM         0X05
 22            MOVRAM         0X06
 23            MOVM       0X01,0X3
 24            MULTRADI       0X02000
 25            MOVRBM         0X0A
 26            MOVRAM         0X0B
 27            SUMARAM         0X06, 0X2
 28            SUMAARBM         0X05, 0X3
 29            RAIZRAM        0X06,0X3
 32            RESRAM         0X03,0X3
 33
        Figura 184 0X08
           MOVRAM
                    Programa control supervisorio etiquetas de memoria Ensam.ens.
212
 34            MOVM       0X01,0X3
 35            DIVIRAM    0X08,0X3
 36            MOVRAM         0X07
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.8.2 Cargador de programa.
Un cargador de programa es el proceso encargado de modificar el archivo en un alto
nivel y pasarlo a un tipo que pueda interpretar el sistema. A continuación se
presentan los pasos para poder utilizar el cargador diseñado en el programa Builder
C++.
Al tener el archivo del programa desarrollado en un editor de texto con la extensión
propia (.ens) se procede a abrir la interfaz diseñada, y se pulsa el botón de abrir
programa. Figura 185
                  Figura 185 Captura de pantalla Interfaz prueba.
Con esto se obtendrá una ventana emergente (Figura 186). Se seleccionará la ruta de
la carpeta donde se encuentra el archivo .ens y se pulsa el botón de abrir, con esto se
tiene la ruta y el archivo para poder pasar a los siguientes procesos.
                                                                                   213
                                    Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
           Figura 186 Captura de pantalla Interfaz apertura de archivos.
Al tener el archivo abierto se desplegará su dirección y se procederá a realizar la
acción de convertir los mnemónicos a una codificación de números la cual será
plasmada en un archivo .cod en la misma carpeta de donde se seleccionó el archivo,
para realizar esto es necesario evaluar los tokens y determinar si es una etiqueta,
instrucción y argumentos (dato inmediato, dirección de memoria o registro), una
vez determinado el tipo se procede a sustituirlo por su valor en código numérico de
tipo ASCII (Figura 188); con esto ya se cuenta con las instrucciones en código. Esto
se realiza al accionar el botón de Codificación ASCII. Figura 187
      Figura 187 Captura de pantalla Interfaz codificación de archivos a ASCII.
214
                                    Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
0000000010101111000000000110000000000000
000001001XXXXX10000000000000000000000010
0000000010101111000000000001000000000000
000001001XXXXX10000000000000000000000001
0000000010101111000000000000000000110010
000001001XXXXX10000000000000000000010000
0000000111010011000000000000000000000000
000001001XXXXX10000000000000000000000100
000001001XXXXX10000000000000000000001001
000001001XXXXX10000000000000000000000011
000001001XXXXX10000000000000000000001111
000001001XXXXX10000000000000000000001100
000001001XXXXX10000000000000000000001101
000001001XXXXX10000000000000000000001110
000001001XXXXX10000000000000000000000111
0000000110101111000000000000000000000011
0000000110001111000000000000000000000010
000010101XXXXX00000000000000000000110010
0000000110101111000000000000000000000100
0000001110000000000000000000000000000100
000001010XXXXX10000000000000000000000101
000001001XXXXX10000000000000000000000110
0000000110101111000000000000000000000001
0000001010000000000000000010000000000000
000001010XXXXX10000000000000000000001010
000001001XXXXX10000000000000000000001011
0000000110000110000000000000000000000110
0000100100001011000000000000000000000101
0000000110011011000000000000000000000110
000001001XXXXX10000000000000000000000011
0000000110101111000000000000000000000100
0000000110001111000000000000000000000011
000001001XXXXX10000000000000000000001000
0000000110101111000000000000000000000001
0000000110010111000000000000000000001000
000001001XXXXX10000000000000000000000111
0000000110101111000000000000000000000011
000001001XXXXX10000000000000000000000100
0000000110101111000000000000000000001001
0000000010000111000000000000000000000001
000001001XXXXX10000000000000000000001001
0000000110101111000000000000000000001100
0000000010000111000000000000000000000001
000001001XXXXX10000000000000000000001100
0000000110110011000000000000000000010000
000001001XXXXX10000000000000000000001000
0000000110101111000000000000000000001001
0000000110001111000000000000000000001000
000010101XXXXX00000000000000000001000100
000001011XXXXX00000000000000000000001111
                          Figura 188 Codificación
0000000110101111000000000000000000000010            tipo ASCII.
0000000010010111000000000001000000000000
000001001XXXXX10000000000000000000000111
0000000110110111000000000000000000001001
0000000110001111000000000000000000010000
                                                                         215
000001001XXXXX10000000000000000000001110
0000000111010010000000000000000000001101
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
A esta altura el archivo tiene la información parecida al lenguaje máquina pero no
completamente, la acción del botón Codificación Bin (Figura 189) es tomar el archivo
codificado y convertirlo en un archivo bin, en la misma carpeta que los archivos
anteriores, para poder ser cargado en los registros del banco de registros
implementado en el FPGA.
      Figura 189 Captura de pantalla Interfaz codificación de archivos a ASCII.
Al tener el archivo de programación .bin se procede a cargar el archivo segmentado
en el banco de registros, para lo cual la interfaz cargara el archivo mediante el botón
abrir .bin. Figura 190
             Figura 190 Captura de pantalla Interfaz Carga archivo .bin.
216
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
Una vez cargado el archivo la interfaz ya está preparada para proceder a cargar en
los registros en el banco de registros. Se procede a accionar el botón P.Memoria el
cual se encargará de seccionar las instrucciones por bloques de 8 bits y pondrá un
valor en el registro de control del procesador: parando el procesador, seleccionando
el camino para poner el valor de la instrucción a la entrada de la memoria de
instrucciones del procesador y dará el pulso de escritura. Así lo realizará línea por
línea de instrucciones hasta encontrar el fin de archivo. Figura 191
           Figura 191 Captura de pantalla Interfaz programar memoria.
                                                                                 217
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.8.3 Verificador de programa.
Se requiere tener certeza de que las instrucciones fueron cargadas de manera
correcta y que no se perdió ningún valor, para lo cual se diseñó el botón V.Memoria,
el cual realiza la acción de verificar la memoria haciendo la operación de lectura de
instrucción y se compara con el archivo de instrucciones; si existe algún error se
desplegará la línea de instrucción en la que se encuentra el error, en caso contrario,
se despliega el mensaje bien. Figura 192
            Figura 192 Captura de pantalla Interfaz botón V. Memoria.
218
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
4.8.4 Depurador.
Al tener el programa cargado, se realizó el trabajo de verificar las instrucciones se
realizará de manera correcta y el resultado fuera el apropiado, para lo cual se diseñó
un depurador manual en tiempo real.
Primeramente se implementó un circuito que pudiera cambiar el reloj del
procesador de manera que pudiera tener tres entradas: un reloj a 50 MHz, un reloj a
4 kHz y un pulsador. Figura 193
              Figura 193 Circuito variación de velocidad procesador.
                                                                                  219
                                     Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
Para la parte de interfaz se le agregaron los botones de ejecución, paro y reset los
cuales tiene efecto en el registro de control. Figura 194
           Figura 194 Captura de pantalla Interfaz control de procesador.
También se agregó una visualización llamada microinstrucciones con lo cual se
visualiza cada 200 ms el valor de las microinstrucciones, contador de programa,
registro A, registro B, codificación de operación unidad de punto fijo, secuencia,
codificador de destino y banderas. Figura 195
            Figura 195 Captura de pantalla Interfaz microinstrucciones
Esto se realiza con la finalidad de verificar cada instrucción y su ciclo de ejecución
en cada secuencia y verificando las microinstrucciones dadas, asegurando el buen
funcionamiento conforme una comparación de resultados.
220
                                    Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
Se verificaron todas las instrucciones mediante la interfaz mostrada en la Figura 196
y Figura 197.
                Figura 196 Captura de pantalla Interfaz depurador 1.
                Figura 197 Captura de pantalla Interfaz depurador 2.
                                                                                 221
                                      Capítulo 4: DESARROLLO E IMPLEMENTACIÓN.
También a esta interfaz se le implementaron habilidades como poder verificar
individualmente los registros y alterar su valor solo en los registros diseñados para
lectura y escritura se tiene la Figura 198.
        Figura 198 Captura de pantalla Interfaz control individual registros.
Si es necesario verificar y alterar el código de instrucción, se diseñó la sección
mostrada en la Figura 199, la cual puede leer cualquier instrucción en la memoria de
instrucciones y se puede sustituir únicamente por cualquier instrucción en valor
binario.
 Figura 199 Captura de pantalla Interfaz lectura y modificación de instrucciones.
222
Capítulo 5.
PRUEBAS Y
RESULTADOS.
5.1 Introducción.
Se realizaron varias pruebas para evaluar el desempeño del sistema integrado en
esta tesis, además se exponen las diferentes incidencias ocurridas en estas pruebas y
se emiten recomendaciones para futuras aplicaciones.
                                                                                 223
                                                 Capítulo 5: PRUEBAS Y RESULTADOS.
5.2 PWM y transistores puente H.
Se realizó la medición mediante el osciloscopio el comportamiento de los
transistores en una rama del puente H con lo cual se realizan las siguientes
afirmaciones:
         La técnica de PWM varía la energía brindada al servomotor con periodos de
          conexión y desconexión. Con esto se pueden tener diferentes niveles de
          energía sin contar con diferentes fuentes de energía eléctrica (Figura 200 y
          Figura 201).
          Figura 200 Señal PWM recibida en transistores de puente H trifásico.
          Figura 201 Señal PWM recibida en transistores de puente H trifásico.
224
                                            Capítulo 5: PRUEBAS Y RESULTADOS.
   La forma de la corriente (Figura 202). vista en una bobina del servomotor
    BLDC cumple con la esperada en la conmutación trapezoidal. En la Figura
    203 se muestra la conmutación en 2 transistores del puente H trifasico.
             Figura 202 Forma corriente bobina servomotor BLDC.
           Figura 203Conmutacion transistores puente H trifásico.
                                                                              225
                                                    Capítulo 5: PRUEBAS Y RESULTADOS.
         Existe una saturación en el periodo de trabajo del PWM fijada al 90% para el
          periodo superior y una saturación de 5% para el periodo inferior. Esto tiene
          la finalidad de que el tiempo de corte y saturación de los transistores IGBTs
          cumpla con el mínimo especificado de 750 ns. (Figura 204, Figura 205 y Figura
          206).
                  Figura 204 Visualización osciloscopio transistores puente H.
             Figura 205 Periodo saturación alto PWM recibido en transistor.
             Figura 206 Periodo saturación bajo PWM recibido en transistor.
226
                                                       Capítulo 5: PRUEBAS Y RESULTADOS.
5.3 Desenergizado rápido vs desenergizado lento.
Para comprobar la diferencia de desempeño del servomotor con los diferentes tipos
de desenergización en las bobinas se realizó el experimento de variar la amplitud
del PWM y verificar las revoluciones desempeñadas por el motor (Figura 207 y
Figura 208). Obteniendo las siguientes gráficas.
              Descarga lenta para el servomotor BLDC.
              8000
              7000
              6000
              5000
  Velocidad
              4000
              3000
              2000
              1000
                 0
                     4   8 12 16 20 25 29 33 37 41 45 50 54 58 62 66 70 75 79 83 87 91 95 100
                                             Amplitud porcentual PWM
                     Figura 207 Gráfica servomotor BLDC desenergizado lento.
                                                                                        227
                                                                Capítulo 5: PRUEBAS Y RESULTADOS.
             Descarga rápida para el servomotor BLDC.
                      7000
                      6000
                      5000
          Velocidad
                      4000
                      3000
                      2000
                      1000
                         0
                               4   8 12 16 20 25 29 33 37 41 45 50 54 58 62 66 70 75 79 83 87 91 95 100
                                                      Amplitud porcentual PWM
                             Figura 208 Gráfica servomotor BLDC desenergizado lento.
5.4 Sintonización PID.
Durante las pruebas de sintonización del filtro PID implementado en hardware
dedicado se procedió a usar la interfaz para graficar la respuesta del servomotor
comparado una referencia dada por cálculos de una PC, obteniendo los siguientes
resultados:
            Se realizó la sintonización primeramente utilizando la acción de control
             proporcional en una prueba escalón a la máxima velocidad del servomotor
             en una posición de 150 cuentas y con una configuración de desenergizado
             lento. Figura 209
228
                                           Capítulo 5: PRUEBAS Y RESULTADOS.
               Figura 209 Sintonización control proporcional.
   Posteriormente se le conecto un dispositivo husillo de bola, buscando que el
    servomotor tuviera una mayor inercia de arranque y tener una mejor
    respuesta. Figura 210
    Figura 210 Sintonización control proporcional con actuador mecánico
                                                                            229
                                                  Capítulo 5: PRUEBAS Y RESULTADOS.
         Al tener una respuesta relativamente aceptable del control proporcional, se
          configuro el control integral para eliminar el error en estado permanente.
          Figura 211
                Figura 211 Sintonización control proporcional e integral.
         Posteriormente se adiciono la acción de control derivativo al control.
                          Figura 212 Sintonización control PID.
230
                                            Capítulo 5: PRUEBAS Y RESULTADOS.
   Una vez sintonizado el control, el servomotor realizaba la acción de
    posicionamiento. Pero después de un lapso de tiempo. el servomotor entraba
    en oscilaciones y se accionaba sin control. En la gráfica de la Figura 213 se
    muestra el comportamiento, en esta grafica se agregó una visualización de la
    acción del PWM.
                        Figura 213 Oscilaciones PID.
    Para evitar este comportamiento se implementó una protección (Figura 214)
    en la que si el error sobrepasa un valor de 120 o -120 anule el accionamiento
    del puente H, evitando así que el motor se accione sin que tenga un control.
                                                                             231
                                                 Capítulo 5: PRUEBAS Y RESULTADOS.
      Figura 214 Código VHDL protección accionamiento sin control servomotor.
         Al tener la gráfica del PWM (Figura 215) se cuestionó ¿Por qué la acción del
          PWM es máxima y no reduce su valor después de un lapso de tiempo? Este
          comportamiento se le atribuye a la acción de control integral, ya que por
          observación de los valores mostrados en la interfaz, su participación es muy
          grande y no tiene el mismo comportamiento en tiempo que la dinámica del
          error. De esta forma el servomotor tiene un sobrecalentamiento y vibración
          durante el desarrollo de sus movimientos.
232
                                            Capítulo 5: PRUEBAS Y RESULTADOS.
             Figura 215 Sintonización PID máxima acción PWM.
    Para evitar este comportamiento se reconfiguro la implementación del
    control en su acción integral limitándola a actuar en únicamente cuando el
    error tenga un error no mayor a 5 y cuando el error sea 0 forzar el acumulador
    un valor de inicio.
   Con estas consideraciones se procedió a elegir los mejores valores para
    sintonización del PID teniendo los mejores valores para el comportamiento
    los mostrados en la Figura 216.
                                                                              233
                                                      Capítulo 5: PRUEBAS Y RESULTADOS.
           Figura 216 Mejores valores sintonización PID desenergizado lento.
Al contar con los mejores valores para la sintonización del PID se procedió a
configurar la conmutación con un desenergizado lento cambiando drásticamente el
comportamiento del servomotor, por lo cual se procedió a resintonizar el
controlador.
         Se realizó la prueba de configurar los valores de participación de las acciones de
          control con los mejores obtenidos con la desenergización lenta. Figura 217
234
                                              Capítulo 5: PRUEBAS Y RESULTADOS.
                Figura 217 Sintonización PID desenergizado lento.
   Se propuso nuevos valores de sintonización PID. Figura 218
        Figura 218 Mejores valores sintonización PID desenergizado lento.
                                                                            235
                                                  Capítulo 5: PRUEBAS Y RESULTADOS.
         Se procedió a visualizar las primeras cuentas de un perfil de trayectoria para
          visualizar el comportamiento del control PID. Figura 219
                Figura 219 Comportamiento PID en perfil de trayectoria.
236
                                                           Capítulo 5: PRUEBAS Y RESULTADOS.
5.5 Procesador embebido.
Se compara los resultados del procesador embebido contra un cálculo realizado en
una computadora personal, mediante el depurador de la interfaz.
Se realizó la comparación con las constantes siguientes:
       Aceleración = 1                                         Fin de posición = 99
       Velocidad constante = 60
En la Tabla 14 se muestra la comparación en el ciclo de aceleración.
Tabla 14 Comparación de la precisión de cálculo en procesadores.
                               Procesador PC                     Procesador Diseñado
Iteracion        Vf             Vi           Tiempo      Vf          Vi          Tiempo      Diferencia
             1        1.41421356 0.00000000 1.41421356    1.41406250 0.00000000 1.41406250    0.00015106
             2        2.00000000 1.41421356 0.58578644    2.00000000 1.41406250 0.58593750   -0.00015106
             3        2.44948974 2.00000000 0.44948974    2.44946289 2.00000000 0.44946289    0.00002685
             4        2.82842712 2.44948974 0.37893738    2.82836914 2.44946289 0.37890625    0.00003113
             5        3.16227766 2.82842712 0.33385054    3.16210938 2.82836914 0.33374023    0.00011030
             6        3.46410162 3.16227766 0.30182395    3.46386719 3.16210938 0.30175781    0.00006614
             7        3.74165739 3.46410162 0.27755577    3.74145508 3.46386719 0.27758789   -0.00003212
             8        4.00000000 3.74165739 0.25834261    3.99975586 3.74145508 0.25830078    0.00004183
             9        4.24264069 4.00000000 0.24264069    4.24243164 3.99975586 0.24267578   -0.00003509
            10        4.47213595 4.24264069 0.22949527    4.47192383 4.24243164 0.22949219    0.00000308
            11        4.69041576 4.47213595 0.21827980    4.69018555 4.47192383 0.21826172    0.00001809
            12        4.89897949 4.69041576 0.20856373    4.89868164 4.69018555 0.20849609    0.00006763
            13        5.09901951 4.89897949 0.20004003    5.09863281 4.89868164 0.19995117    0.00008886
            14        5.29150262 5.09901951 0.19248311    5.29101563 5.09863281 0.19238281    0.00010030
            15        5.47722558 5.29150262 0.18572295    5.47680664 5.29101563 0.18579102   -0.00006806
            16        5.65685425 5.47722558 0.17962867    5.65649414 5.47680664 0.17968750   -0.00005883
            17        5.83095189 5.65685425 0.17409765    5.83056641 5.65649414 0.17407227    0.00002538
            18        6.00000000 5.83095189 0.16904811    5.99951172 5.83056641 0.16894531    0.00010279
            19        6.16441400 6.00000000 0.16441400    6.16381836 5.99951172 0.16430664    0.00010736
Se procedió a verificar a graficar los valores calculados durante todo el perfil de
trayectoria de un procesador embebido y el procesador del PC, con un error de
0.01% en la posicion (Figura 220y Figura 221).
                                                                                                237
                                                                     Capítulo 5: PRUEBAS Y RESULTADOS.
                                 Perfil de trayectoria desarrollado
              70
              60
              50
  Velocidad
              40
              30
              20
              10
              0
                   0 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 84 87 90 93 96 99
                                                              Posición
              Figura 220 Gráfica perfil de trayectoria calculado procesador embebido.
                                 Perfil de trayectoria calculado PC
              70
              60
              50
  Velocidad
              40
              30
              20
              10
              0
                   0 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 84 87 90 93 96 99
                                                              Posición
                    Figura 221 Gráfica perfil de trayectoria calculado procesador PC
238
                                                     Capítulo 5: PRUEBAS Y RESULTADOS.
5.6 Modularidad.
Para demostrar la modularidad se procedió a realizar tres veces el sistema de control
con tres interfaces (Figura 222), utilizando un mismo motor conectado al eje,
seleccionando el sistema de control requerido por medio de un multiplexor y se
realizó la misma requisición posicionamiento al servomotor.
                            Control distribuido
             Banco de       Procesador               Puente H              Servomotor
    PC                                     PID
             Registros       Dedicado                Trifasico                BLDC
                                                   Conmutador         Sensores
                                                                                      Encoder
                                                    Electronico         Hall
                                                   Decodificador
                                                   Multiplicador
                              Procesador               Puente H              Servomotor
                                            PID
                               Dedicado                Trifasico                BLDC
                                                     Conmutador         Sensores
                                                                                        Encoder
                                                      Electronico         Hall
                                                     Decodificador
                                                     Multiplicador
                              Procesador                Puente H                 Servomotor
                                             PID
                               Dedicado                 Trifasico                   BLDC
                                                      Conmutador        Sensores
                                                                                        Encoder
                                                       Electronico        Hall
                                                      Decodificador
                                                      Multiplicador
                         Figura 222 Sistema de control para tres ejes.
En las Figura 223, Figura 224 y Figura 225 se muestran las interfaces creadas y el
resultado mostrado de la posición global.
                                                                                                  239
                        Capítulo 5: PRUEBAS Y RESULTADOS.
      Figura 223 Interfaz motor 1.
      Figura 224 Interfaz motor 2.
      Figura 225 Interfaz motor 3.
240
Capítulo 6.
CONCLUSIONES Y
TRABAJO A FUTURO.
6.1 Introducción.
Dentro de las conclusiones se puntualiza los objetivos obtenidos después de realizar
el trabajo del sistema de control distribuido embebido en FPGA para servomotores
BLDC para la aplicación de robots móviles.
                                                                                241
                                 Capítulo 6: CONCLUSIONES Y TRABAJO A FUTURO.
      6.2 Conclusiones.
En esta tesis se ha propuesto un control modular de los ejes de accionamiento motriz
que constituyen un robot móvil. Como mejor actuador mecánico se propuso los
servomotores BLDC ya que por sus características eléctricas y mecánicas de última
tecnología son los ideales para aplicaciones donde se encuentran comprometidos el
máximo desempeño de posicionamiento y accionamiento contra el espacio físico y
la disposición de energía.
Se diseñó una arquitectura de control distribuido para regular las variables de
posición, velocidad y aceleración para realizar un perfil de trayectoria en tiempo real
en los servomotores BLDC, integrando una combinación de hardware dedicado
para la sección regulatoria del control distribuido y un procesador de propósito
general para la sección supervisora.
Para el sistema regulatorio encargado de controlar la variable de posición, se diseñó
un hardware dedicado basado en el algoritmo de control retroalimentado PID. El
cual se implementó con restricciones en la acción de control integral, además en su
actuador final, el PWM, fue necesario limitar sus amplitudes ya que los transistores
IGBTs tienen tiempos mínimos de estabilización de señales para las acciones de corte
y saturación. También fue necesario implementar protecciones para asegurar un
buen funcionamiento y cuidar los sistemas acoplados a los servomotores
controlados.
La conmutación electrónica en modo de desenergización lenta demostró que mejora
significativamente el desempeño del PWM a través de los transistores IGBTs en el
IPM, reduciendo el consumo de energía, ya que al posicionar el servomotor por la
acción del algoritmo PID solo se utiliza la mínima energía para mantenerlo en esa
posición al tener una perturbación.
242
                                 Capítulo 6: CONCLUSIONES Y TRABAJO A FUTURO.
Para tener un control de velocidad y aceleración se utilizó la abstracción de que al
cambiar la referencia a un algoritmo PID durante un tiempo precalculado se
desarrolla una velocidad y una aceleración. Al contar con el encoder el movimiento
rotatorio se puede considerar como un movimiento lineal, de esta manera para el
cálculo del tiempo de cambio de referencia se utilizan los algoritmos del movimiento
rectilíneo uniformemente acelerado.
Contar con un dispositivo FPGA apoyo para tener la implementación en un tamaño
reducido, además de tener la característica de repetir el control de manera modular,
brindando la versatilidad de resolver necesidades actuales y futuras de los
requerimientos motrices, sin perder la configuración de un control en tiempo real
con la mayor eficiencia de energía posible.
Es de vital importancia contar con un medio de supervisión, operación y
configuración del sistema adecuado a un ambiente familiar tanto para el usuario
como para el desarrollador por lo que realizar una interfaz humano-maquina auxilia
en estas tareas.
6.3 Trabajo a futuro.
Como a trabajo a futuro se propone lo siguiente:
      Realizar la implementación de algoritmos de control moderno en el sistema
       regulatorio como lógica difusa o espacio de estados.
      Implementar algoritmos de autosintonización para el PID del sistema
       regulatorio.
      Realizar una verificación de conexión en las bobinas al iniciar el sistema, ya
       que la responsabilidad se le delega al operador.
      Montar el sistema en una maquina con varios ejes como una maquina CNC o
       una impresora 3D, para evaluar sus beneficios en este tipo de sistemas.
                                                                                 243
      Anexo.
244
                                                                                                  Anexo.
                 Perfil de trayectoria en aplicaciones mecatrónicas.
                               Publicado Boletín UPIITA No. 42
                                          1 de marzo 2014
                                        G. Martínez Fernández, D. Jaramillo Vigueras., A. Cruz Contreras
                                                       Centro de Investigación e Innovación Tecnológica-IPN
Resumen.
Durante el desarrollo de aplicaciones mecatrónicas, es importante considerar el perfil de la trayectoria
con la cual se deben realizar los movimientos. En este trabajo se presenta una propuesta de un control
de movimiento y una selección del motor para tener un desempeño ideal en los mecanismos.
1. Introducción.
Cuando un cuerpo realiza un desplazamiento de un punto “A” a un punto “B”,
saliendo del estado de reposo y llegando nuevamente a este, primeramente debe
acelerar hasta llegar a una velocidad máxima, hacer el recorrido a esta velocidad,
llegando a una posición en la cual debe comenzar a desacelerar, hasta alcanzar el
reposo en el punto “B”. La gráfica de este desplazamiento se conoce como el perfil
de trayectoria (Figura 1).
                                  Figura 1.Grafica de perfil de trayectoria.
Para ejemplificar, se utilizará un medio de uso cotidiano, el automóvil; el cual,
cuando se empieza un viaje, parte del reposo acelerando gradualmente, viaja a una
                                                                                                       245
                                                                               Anexo.
máxima velocidad permitida, cuando se encuentra cerca del destino se comienza a
frenar (desacelerar) hasta alcanzar el reposo. Si la conducción se da de manera
incorrecta, haciendo cambios bruscos de velocidad, se carece de un control
apropiado del automóvil y se pueden ocasionar daños a sus sistemas.
En aplicaciones mecatrónicas, el movimiento de los mecanismos se debe realizar con
un perfil de trayectoria como el descrito, ya que de lo contrario aceleraciones
abruptas generarían fuertes sacudidas, dando un mal funcionamiento del
mecanismo, el cual puede ocasionar daños.
El movimiento de los mecanismos se realiza por medio de motores de corriente
directa, por lo tanto en el motor se deben regular las variables de posición,
aceleración y velocidad, esta tarea, se realiza por medio de un controlador
electrónico (driver).
2. Servomotor.
Para la tarea de posicionamiento se emplean motores de corriente directa, estos
motores se conocen comercialmente como servomotores.
                           Figura 2. Servomotor AC300022 Microchip.
El servomotor es un motor de alta precisión, es decir, se caracteriza por la capacidad
que tiene de ubicarse en cualquier posición angular y velocidad, dentro de un rango
de operación, con la habilidad de poder mantener una estabilidad dentro de esos
parámetros. Además, puede mantener el nivel de torque a altas velocidades de giro,
246
                                                                                Anexo.
proporcionando muy buena operación a bajas velocidades. Por lo cual, son
utilizados en las más variadas aplicaciones industriales, en donde una elevada
dinámica, control de par, y alta precisión de velocidad y posicionamiento son
necesarios, por ejemplo: corte, impresión, etiquetado, empacado, manipulación de
alimentos, robótica y automatización de fábricas.
Aunado a esto, los servomotores son compactos, lo cual reduce la inercia del rotor,
esto permitiendo una aceleración y un posicionamiento más rápidos. Pueden ser
usados con retroalimentación, lo cual provee información al controlador para
monitorear el proceso y llevar a cabo tareas con mayor precisión.
3. Control Distribuido.
Para lograr comportamiento del perfil de trayectoria, utilizando los servomotores en
los mecanismos, se deberán regular tres variables: posición, velocidad y aceleración.
Esto se logra a través de un sistema de control distribuido. Un control distribuido se
compone de dos partes principales: i) sistema regulatorio y ii) sistema supervisor.
Para uso en aplicaciones mecatrónicas, se utiliza el control regulatorio para controlar
la variable de posición y el control supervisor para las variables de velocidad y
aceleración.
Al ser las variables velocidad y aceleración dependientes de la posición, bastará con
regular la variación de posición. A través de un tiempo calculado se tendrá el control
de la aceleración y velocidad. Para regular la posición puede emplearse un algoritmo
de control clásico PID, el cual es un algoritmo que ha demostrado un buen
desempeño en la industria, y tiene un costo computacional muy reducido, ya que
está basado en operaciones simples de suma, resta y multiplicación. Para calcular el
tiempo del desplazamiento entre cada fracción de avance, se pueden emplear las
ecuaciones     de   movimiento   rectilíneo   uniforme    y   movimiento     rectilíneo
uniformemente acelerado.
3-1. Sistema regulatorio.
                                                                                   247
                                                                                          Anexo.
Para el control regulatorio de posición se implementa la ecuación 1, a través de un
lazo de control cerrado como el mostrado en la figura 3.
                                             𝑛
                 𝑢(𝑛) = 𝑘𝑝 𝑒(𝑛) + 𝑘𝑖 ∑ 𝑒(𝑛) + 𝑘𝑑 [𝑒(𝑛′) − 𝑒(𝑛′ − 0)]
                                           𝑛=0
                               Ecuación 1. Filtro PID en tiempo discreto.
                 Figura 3.Diagrama a bloques de un control de posición para servomotor.
Todo algoritmo de control mide el valor real de la variable y lo compara con el valor
de referencia dado. Al valor de referencia se le sustrae el valor real, de lo que se
obtiene la magnitud del error. El error pasa a través del filtro PID generando una
acción de control, la cual se conforma por tres acciones distintas en función del error:
i) proporcional que actúa de acuerdo a la magnitud; ii) integral que va de acuerdo a
su duración y iii) derivativa que considera la razón de cambio.
3-2. Sistema supervisor.
El sistema supervisor es el encargado de monitorear el correcto desempeño del
sistema regulatorio, además de, brindar al sistema regulatorio el cambio en la
referencia de posición con cierto tiempo precalculado para generar el
desplazamiento a velocidad y aceleración requeridos.
248
                                                                                                 Anexo.
4. Implementación.
Para la implementación del control distribuido propuesto, en el cual se regulan las
variables de posición, velocidad y aceleración se emplea: lógica reconfigurable para
una implementación concurrente, con la cual se logra una regulación en tiempo real;
un procesador de propósito general para las tareas supervisoras.
Existen drivers comerciales diseñados para cumplir con los requerimientos de
movimiento, por citar algunos fabricantes: Siemens, Emerson Proccess, General
Electric, Wonderware, Parker; en ocasiones, estos drivers no brindan la versatilidad
y en muchos casos no son escalables para necesidades más robustas o complejas,
otro factor, es que su costo es elevado perjudicando la viabilidad económica de la
aplicación.
5. Conclusiones.
Los mecanismos usados en aplicaciones mecatrónicas, necesitan tener un control en
sus movimientos para tener un óptimo funcionamiento, por lo cual se necesitan
regular las variables de posición, velocidad y aceleración. Realizar implementación
sin considerar el perfil de trayectoria, conlleva a que los resultados siempre estén
lejos de un funcionamiento apropiado. Por ello, desarrollar tecnología en esta área
es de vital importancia, para que se puedan realizar aplicaciones mecatrónicas
innovadoras que cumplan con un desempeño óptimo y sean viables en cuanto a
costos.
6. Referencias.
Poza, J. L., Posadas, J. L., & Simó, J. E. (2009). Arquitecturas de control distribuido. Technical Report.
Universidad Politécnica de Valencia.
Reynoso-Meza, G., Blasco, X., & Sanchis, J. (2009). Diseño multiobjetivo de controladores pid para el
benchmark de control 2008–2009. Revista Iberoamericana de Automática e Informática Industrial
RIAI, 6(4), 93-103.
                                                                                                      249
                    Referencias.
[1] U. Nehmzow, «Introduction,» Springer, 2000.
[2] M. K. M. M. P. P. Krzysztof Kozłowski, «Universal Multiaxis Control System for
      Electric Drives,» Industrial Electronics, IEEE Transactions on, 60(2), pp. 691-698, 2013.
[3] A. K. Kaviani, B. Hadley y B. Mirafzal, «A time-coordination approach for
      regenerative energy saving in multiaxis motor-drive systems,» Power Electronics,
      IEEE Transactions on, vol. 27, nº 2, pp. 931-941, 2012.
[4] J. U. Cho, Q. N. Le y J. W. Jeon, «An FPGA-based multiple-axis motion control chip,»
      Industrial Electronics, IEEE Transactions on, vol. 56, nº 3, pp. 856-870, 2009.
[5] R. J. C. J. Eimei Ming Onaga, «Multiaxis robot control having protection system with
      energy and backup velocity monitoring». Patente EP 0269373 A2, 1 Junio 1988.
250
                                                                                   Referencias.
[6] P. Yedamale, «Brushless DC (BLDC) motor fundamentals,» Microchip Technology Inc,
    p. 20, 2003.
[7] S. B. Ozturk y H. A. Toliyat, «Direct torque and indirect flux control of brushless DC
    motor,» Mechatronics, IEEE/ASME Transactions on, vol. 16, nº 2, pp. 351-360, 2011.
[8] Y. Honda, T. Higaki, S. Morimoto y Y. Takeda, «Rotor design optimisation of a multi-
    layer interior permanent-magnet synchronous motor,» de Electric Power Applications,
    IEE Proceedings-, 1998.
[9] J. Cros, J. Figueroa y P. Viarouge, «BLDC motors with surface mounted PM rotor for
    wide constant power operation,» de Industry Applications Conference, 2003. 38th IAS
    Annual Meeting. Conference Record of the, 2003.
[10] H. J. Pahk, D. S. Lee y J. H. Park, «Ultra precision positioning system for servo motor-
    -piezo actuator using the dual servo loop and digital filter implementation,»
    International Journal of Machine Tools and Manufacture, vol. 41, nº 1, pp. 51-63, 2001.
[11] M. Hui-Cheng, «Analysis of Permanet-Magnet AC Servo Motor Torque Ripple [J],»
    Micromotors Servo Technique, vol. 3, p. 000, 2007.
[12] X.-j. a. C. B.-s. Zhang, «The different influences of four PWM modes on commutation
    torque ripples in brushless DC motor control system,» Electric Machines and Control,
    vol. 7, nº 2, pp. 87--91, 2003.
[13] E. Ramsden, {Hall-effect sensors: theory and application, Newnes, 2011.
[14] S. Dwari y L. Parsa, «Fault-tolerant control of five-phase permanent-magnet motors
    with trapezoidal back EMF,» Industrial Electronics, IEEE Transactions on, vol. 58, nº 2,
    pp. 476-485, 2011.
[15] A. a. P. F. E. A. a. S. O. R. Cruz Contreras, «Multiplicador Electrónico para Encoder
    Incremental,» Polibits, nº 38, pp. 63--67, 2008.
                                                                                              251
                                                                                     Referencias.
[16] H. O. Amadasu, «Development of three-phase source inverter for research and
      laboratories,» 2011.
[17] F. Casanellas, «Losses in PWM inverters using IGBTs,» IEE Proceedings-Electric Power
      Applications, vol. 141, nº 5, pp. 235--239, 1994.
[18] STMicroelectronic, «SLLIMM™ (small low-loss intelligent molded module) IPM, 3-
      phase inverter - 18 A, 600 V short-circuit rugged IGBT,» 2014.
[19] A. San Vicente, Soluciones a Interfaz por medio del Puerto Paralelo de la PC. 119 pp.
      Ed, Prentice-Hall Hispanoamericana, SA, 2003.
[20] Texas Instruments, «Texas Instruments, Logic Solutions for IEEE std 1284,» Junio
      1999. [En línea]. Available: http://www.ti.com/lit/an/scea013/scea013.pdf. [Último
      acceso: 27 Febrero 2014].
[21] C. Smith, Control Automatico de Procesos, México: Limusa, 2010.
[22] R. J. Casler Jr y E. M. Onaga, Multiaxis digital robot control having a backup velocity
      monitor and protection system, Google Patents, 1989.
[23] K. Ogata, Ingenieria de control moderna, México: Prentice Hall Internacional, 2012.
[24] B. Alecsa y A. Onea, «Design, validation and FPGA implementation of a brushless
      DC motor speed controller,» de Electronics, Circuits, and Systems (ICECS), 2010 17th
      IEEE International Conference on, 2010.
[25] G. E. Santana Hernandez, Diseño de un procesador usando lenguajes de descripcin
      de hardware, México: IPN-CIC, 2004.
[26] S. Brown, Fundamentos logica Digital con diseño VHDL, Mc Graw Hill, 2013.
[27] t. f. e. Wikipedia, «Saturation arithmetic,» [En línea]. Available:
      http://en.wikipedia.org/wiki/Saturation_arithmetic. [Último acceso: 24 11 2014].
[28] M. MAno, Computer Logic Design, Pretice Hall International, 1978.
252
                                                                                   Referencias.
[29] I. Bravo, D. Padilla, M. Mazo, A. Hern{\'a}ndez, A. Gardel, R. Mateos y J. L{\'a}zaro,
    «Algoritmo de c{\'a}lculo de autovalores y autovectores en Xilinx System
    Generator,» Actas de las IV Jornadas de Computaci{\'o}n Reconfigurable y Aplicaciones
    (JCRA’04), pp. 415-422, 2004.
[30] R. J. Schweers, «Descripci{\'o}n en VHDL de arquitecturas para implementar el
    algoritmo CORDIC,» 2002.
[31] J. E. Volder, «The CORDIC trigonometric computing technique,» Electronic
    Computers, IRE Transactions on, pp. 300-334, 1959.
[32] N. a. B. A. a. K. W. a. M. N. Neji, «Architecture and FPGA implementation of the
    CORDIC algorithm for fingerprints recognition systems,» Systems, Signals and Devices
    (SSD), 2011 8th International Multi-Conference on, 2011.
[33] Z. Liu, D. Howe, P. Mellor y M. Jenkins, «Coupled thermal and electromagnetic
    analysis of a permanent magnet brushless DC servo motor,» de Electrical Machines
    and Drives, 1993. Sixth International Conference on (Conf. Publ. No. 376), 1993.
[34] F.-J. Lin, K.-K. Shyu y Y.-S. Lin, «Variable structure adaptive control for PM
    synchronous servo motor drive,» de Electric Power Applications, IEE Proceedings-, 1999.
[35] A. c. systems, Kuo, Benjamin C, Prentice Hall PTR, 1981.
                                                                                            253