Download Controlador SeNoidal para motor PMBLDC en tracción de vehículos
Document related concepts
Transcript
INSTITUTO POLITÉCNICO NACIONAL CENTRO DE INVESTIGACIÓN E INNOVACIÓN TECNOLOGICA Controlador Senoidal para motor PMBLDC en tracción de vehículos eléctricos TESIS QUE PARA OBTENER EL GRADO DE: MAESTRÍA EN TECNOLOGÍA AVANZADA Presenta Octavio Sánchez García Director M. en C. Agustín Cruz Contreras México D.F., julio de 2015 Resumen En este trabajo se realiza el desarrollo tecnológico de un controlador para motores de campo permanente sin escobillas de corriente continua empleando conmutación senoidal, a través de la cual se logra torque constante, un elevado factor de potencia y se minimiza el nivel de armónicos. La eficiencia que se logra con este tipo de conmutación es muy elevada, razón por la cual es ideal para sistemas alimentados por baterías, como es el caso de vehículos eléctricos. Al hacer uso de la tecnología en motores de campo permanente sin escobillas, el primer problema que se tiene es lograr accionarlo, ya que se deben conocer los puntos de conmutación en los cuales se le debe cambiar la polaridad a las bobinas de manera electrónica; por medio del sensor absoluto de posición analógico “Resolver”, se conocen estos puntos, obteniendo la carta de conmutación del motor. La selección del sensor “Resolver”, es debido a que es capaz de medir la posición absoluta del rotor, situación requerida para implementar la conmutación senoidal. Al desear el control de diferentes velocidades de giro del motor, se requiere de la técnica de modulación de ancho de pulso, mediante la cual se logra promediar el voltaje que es entregado al motor, dependiendo de las habilidades que se generen en el ancho de pulso modulado, en cuanto a su forma, el motor recibirá conmutación trapezoidal o senoidal, para esta aplicación se tiene ambas habilidades. Para su accionamiento se desarrolla, el módulo inteligente de potencia con la capacidad de 600 V a 30 A, y con aislamiento de la etapa de control. El control y el accionamiento diseñados, son implementados en electrónica reconfigurable, mediante leguaje de descripción, esquemas y macros. Además son implementados circuitos de protección, adquisición de datos y medición de parámetros por este mismo medio. El algoritmo de control que se utiliza, puede operar en dos modos: Posición, mediante el cual puede seguir un perfil de trayectoria para desplazarse del punto “A” al punto “B”, manteniendo la posición final hasta que le sea requerido otro desplazamiento. Velocidad, mediante el cual se le establece una velocidad en rpm de referencia a la que el rotor debe girar, y aunque exista una fuerza externa que intente detenerlo, el control dará la energía necesaria para mantener la velocidad de referencia. Para poder operar, configurar y evaluar el comportamiento del sistema, se desarrolla la interfaz hombre-máquina en ambiente gráfico por medio de la PC. 1 Abstract In this technological development work, a driver for a permanent magnet brushless of direct current electrical motor using sinusoidal commutation is design and implement. This kind of commutation can obtain constant torque, high power factor and low harmonics level. The efficiency achieved with this type of switching is very high, which is why it is ideal for battery-powered systems, such as electric vehicles. By making use of this technology of permanent magnet brushless, the first problem is to move the rotor, as the switching points must be determined on which the polarity of the coils change electronically by means of the absolute analog position sensor "Resolver", and thus the commutation letter is obtained. Sensor selection "Resolver" is need because it is able to measure the absolute position of the rotor required to implement the sinusoidal commutation. If the control needs to have different rotational speeds of the motor, it requires the use of the Pulse Width Modulation technique. The average voltage is obtain that is deliver to the motor, depending on the capacities that are generated in the Pulse Width Modulation, in terms of its form, the motor will receive trapezoidal or sinusoidal commutation and for this application, both capacities are available. For the driving of the motor an intelligent power module with the capacity of 600 V at 30 A, and isolation of the control stage. The control system and the driver were design and implement in reconfigurable electronics, by language of description, schemes and macros, are also implemented protection circuits, data acquisition and measurement of parameters. The control algorithm used, can operate in two modes: Position, where you can follow a profile path to move from point "A" to point "B", keeping the final position until it is required another shift, Speed mode, where the system will establish a reference speed mode, in rpm´s, to which the rotor must rotate, and even when an external force is apply attempting to stop it, the control system will provide the energy needed to maintain the reference speed. To operate, configure, and evaluate the performance of the system, a man-machine interface was develop in a graphical environment for the PC. 2 Agradecimientos Este trabajo de desarrollo tecnológico no sería posible sin el apoyo de 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. 3 Dedicatorias Para mis confidentes y mejores amigos, los amo familia. 4 Contenido Resumen............................................................................................................................................ 1 Abstract ............................................................................................................................................. 2 Agradecimientos .............................................................................................................................. 3 Dedicatorias ...................................................................................................................................... 4 Contenido ......................................................................................................................................... 5 Figuras ............................................................................................................................................... 9 Tablas............................................................................................................................................... 13 Capítulo 1. Introducción ............................................................................................................. 14 1.1 Aspectos Generales ................................................................................................................ 14 1.2 Estado del Arte ....................................................................................................................... 16 1.3 Objetivos ................................................................................................................................. 18 1.3.1 Objetivo General ............................................................................................................. 18 1.3.2 Objetivos Específicos ....................................................................................................... 18 1.4 Justificación ............................................................................................................................ 19 Capítulo 2. Fundamentos Teóricos ........................................................................................... 20 2.1 Introducción ............................................................................................................................ 20 2.2 Motor de Eléctrico .................................................................................................................. 21 2.2.1 Motor convencional de corriente continua con escobillas ............................................ 22 2.2.2 Motor de campo permanente sin escobillas .................................................................. 24 2.3 Conmutación Electrónica ....................................................................................................... 28 2.3.1 Conmutación Trapezoidal ............................................................................................... 28 2.3.2 Conmutación Senoidal .................................................................................................... 30 2.3.3 Torque constante a partir de la conmutación senoidal ................................................. 31 2.3.4 Armónicos ........................................................................................................................ 31 2.3.5 Factor de potencia ........................................................................................................... 33 2.4 Modulación por ancho de pulso ............................................................................................ 34 2.5 Formación de la senoide empleando PWM........................................................................... 36 2.5.1 El Algoritmo CORDIC........................................................................................................ 37 5 2.6 Generación de senoide con ángulo de desfase ..................................................................... 38 2.7 Sensor de posición angular absoluto ..................................................................................... 38 2.8 Interfaz de Potencia................................................................................................................ 40 2.8.1 Puente H .......................................................................................................................... 40 2.8.2 Transistor bipolar de compuerta aislada (IGBT) ............................................................. 41 2.8.3 Capacitores de arranque ................................................................................................. 43 2.8.4 Supresor de transitorios .................................................................................................. 44 2.8.5 Desenergizado de la bobina ............................................................................................ 45 2.9 Medio de implementación ..................................................................................................... 47 2.10 Sistema de control ................................................................................................................ 47 2.10.1 Algoritmo de control PID............................................................................................... 48 2.11 Sistema de control distribuido ............................................................................................. 49 2.12 Interfaz de usuario................................................................................................................ 50 2.12.1 Puerto de la PC .............................................................................................................. 50 2.12.2 Registro Digital en FPGA................................................................................................ 51 Capítulo 3. Accionamiento del motor PMBLDC .................................................................... 52 3.1 Introducción ............................................................................................................................ 52 3.2 Medición de la posición absoluta del rotor ........................................................................... 53 3.2.1 Conversión de “Resolver” a digital ................................................................................. 53 3.2.1 Generación de señales para leer convertidor ................................................................ 55 3.3 Registro de posición en FPGA ................................................................................................ 57 3.3.1 Filtro Digital ..................................................................................................................... 59 3.3.2 Señal para registro de posición ....................................................................................... 62 3.3.3. Monoestable digital ....................................................................................................... 64 3.4 Encoder Emulado .................................................................................................................... 65 3.4.1 Multiplicador de encoder ................................................................................................ 66 3.5 Generación de PWM............................................................................................................... 69 3.6 Decodificador de conmutación .............................................................................................. 75 3.6.1 Carta de conmutación del motor PMBLDC Parker BE341J ............................................. 75 3.6.2 Diseño el decodificador de conmutación ....................................................................... 77 3.6.3 Implementación del decodificador de conmutación ..................................................... 80 6 3.7 Conmutador Trapezoidal ........................................................................................................ 83 3.8 Generación del PWM senoidal ............................................................................................... 84 3.8.1 Posición Angular .............................................................................................................. 84 3.8.2 Cálculo de seno ................................................................................................................ 88 3.8.3 Multiplicador ................................................................................................................... 89 3.8.4 Generador de Ancho de Pulso......................................................................................... 91 3.8.5 PWM senoidal.................................................................................................................. 92 3.9 Decodificador de PWM senoidal ............................................................................................ 94 3.9.1 Descarga lenta en la conmutación senoidal ................................................................... 97 3.10 Conmutador Senoidal ........................................................................................................... 98 3.11 Conmutador del sistema .................................................................................................... 101 3.12 Interfaz hombre-máquina .................................................................................................. 102 3.12.1 Registro digital ............................................................................................................. 102 3.12.2 Banco de registros ....................................................................................................... 105 Capítulo 4. Control ..................................................................................................................... 110 4.1 Introducción .......................................................................................................................... 110 4.2 Control distribuido en FPGA................................................................................................. 111 4.3 Sistema Supervisor ............................................................................................................... 111 4.4 Sistema Regulador, Algoritmo de control modo posición .................................................. 112 4.4.1 Obtención del valor del error ........................................................................................ 113 4.4.2 Acción proporcional ...................................................................................................... 116 4.4.3 Acción Derivativa ........................................................................................................... 119 4.4.4 Acción Integral ............................................................................................................... 121 4.4.5 Sumador de acciones de control ................................................................................... 125 4.5 Sistema Regulador, Algoritmo de control Modo Velocidad ............................................... 127 4.6 Seleccionador de modo de control ...................................................................................... 133 4.7 Medición interna de velocidad ............................................................................................ 134 4.8 Gráfica de la respuesta del motor........................................................................................ 142 4.8.1 Captura en ráfaga de la respuesta del motor ............................................................... 143 4.9 Interfaz de potencia Puente “H” trifásico............................................................................ 146 4.10 Circuitos de protección ....................................................................................................... 149 7 4.10.1 Verificación de correcta conexión de fases ................................................................ 149 4.10.2 Protección error máximo ............................................................................................ 154 Capítulo 5. Pruebas y resultados ............................................................................................. 156 5.1 Introducción .......................................................................................................................... 156 5.2 Señales obtenidas para protocolo con el convertidor analógico digital ............................ 156 5.3 Filtro digital ........................................................................................................................... 157 5.4 Monoestable digital ............................................................................................................. 158 5.5 Multiplicador de encoder emulado ..................................................................................... 158 5.6 Generación de Ancho de pulso PWM .................................................................................. 159 5.7 Conmutador Trapezoidal ...................................................................................................... 160 5.8 Generación de PWM senoidal .............................................................................................. 161 5.9 Banco de pruebas ................................................................................................................. 162 5.9.1 Prueba en modo posición.............................................................................................. 163 5.9.2 Prueba en modo velocidad ........................................................................................... 164 5.9.3 Medición de corriente ................................................................................................... 165 Capítulo 6 Conclusiones y trabajo futuro.............................................................................. 167 6.1 Introducción .......................................................................................................................... 167 6.2 Conclusiones ......................................................................................................................... 167 6.3 Trabajo Futuro ...................................................................................................................... 168 Anexo 1 Hoja de especificaciones servomotores serie “BE” Parker ............................................. 169 Referencias ................................................................................................................................... 174 8 Figuras FIGURA 1 ESTRUCTURA DEL MOTOR CONVENCIONAL DE DC ........................................................................................... 22 FIGURA 2 CONMUTADOR DEL MOTOR CONVENCIONAL DE DC ........................................................................................ 23 FIGURA 3 FUNCIÓN DEL CONMUTADOR A) PRIMER ENERGIZADO B) POLARIDADES IGUALES C) CONMUTACIÓN .......................... 24 FIGURA 4 ESTRUCTURA DEL MOTOR DE CAMPO PERMANENTE SIN ESCOBILLAS, MONOFÁSICO ............................................... 25 FIGURA 5 CONFIGURACIÓN BÁSICA BLDC A TRES FASES, Y DOS POLOS EN IMÁN PERMANENTE .............................................. 26 FIGURA 6 CONEXIÓN CARACTERÍSTICA DE LAS BOBINAS EN EL MOTOR BLDC ..................................................................... 26 FIGURA 7 SECUENCIA DE POLARIZACIÓN DE LAS BOBINAS PARA PRODUCIR QUE EL ROTOR GIRE .............................................. 27 FIGURA 8 VOLTAJE EN CADA FASE, FORMA DE ONDA DE CORRIENTE Y CODIFICACIÓN DE SENSOR HALL CON RESPECTO AL ÁNGULO ELÉCTRICO DEL ROTOR.................................................................................................................................... 29 FIGURA 9 SEÑAL CON ARMÓNICOS ............................................................................................................................ 32 FIGURA 10 ESTRUCTURA DEL ANCHO DE PULSO MODULADO .......................................................................................... 34 FIGURA 11 DIAGRAMA A BLOQUES PARA LA VARIACIÓN DEL CICLO DE TRABAJO EN EL PWM ................................................ 35 FIGURA 12 DIAGRAMA A BLOQUES PARA GENERAR EL PWM SENOIDAL ........................................................................... 37 FIGURA 13 VUELTA ELÉCTRICA DEL MOTOR PMBLDC Y SUS PASOS DE CONMUTACIÓN ....................................................... 38 FIGURA 14 GENERADOR DE SENO Y COSENO. EL ROTOR ACTÚA DE PRIMARIO Y LOS DOS DEVANADOS DEL ESTATOR ACTÚAN DE SECUNDARIO ................................................................................................................................................ 39 FIGURA 15 PUENTE H TRIFÁSICO .............................................................................................................................. 40 FIGURA 16 CIRCUITO EQUIVALENTE AL IGBT .............................................................................................................. 41 FIGURA 17 TRANSISTORES SUPERIORES DEL PUENTE H .................................................................................................. 43 FIGURA 18 FUNCIONAMIENTO DEL CAPACITOR DE ARRANQUE ........................................................................................ 44 FIGURA 19 TRANSITORIO DE VOLTAJE ........................................................................................................................ 44 FIGURA 20 DIODOS DE RECIRCULACIÓN EN EL PUENTE H MONOFÁSICO ............................................................................ 45 FIGURA 21 DESENERGIZADO RÁPIDO ......................................................................................................................... 46 FIGURA 22 DESENERGIZADO LENTO .......................................................................................................................... 46 FIGURA 23 LAZO DE CONTROL ABIERTO ..................................................................................................................... 48 FIGURA 24 LAZO DE CONTROL CERRADO .................................................................................................................... 48 FIGURA 25 CONTROL DISTRIBUIDO A BLOQUES ............................................................................................................ 50 FIGURA 26 DIAGRAMA DE TIEMPOS PARA LECTURA PARALELA ........................................................................................ 54 FIGURA 27 BLOQUE DEL PROTOCOLO CON EL CONVERTIDOR ANALÓGICO-DIGITAL .............................................................. 56 FIGURA 28 ESQUEMA PARA OBTENER DATOS DEL CONVERTIDOR ..................................................................................... 57 FIGURA 29 BLOQUE QUE SE ENCARGA DE REGISTRAR LA POSICIÓN DEL ROTOR ................................................................... 58 FIGURA 30 DIAGRAMA DE REGISTRO DE POSICIÓN ....................................................................................................... 59 FIGURA 31 BLOQUE DEL FILTRO DIGITAL..................................................................................................................... 60 FIGURA 32 ESQUEMA DEL FILTRO DIGITAL .................................................................................................................. 60 FIGURA 33 FILTRO PARA 16 BITS .............................................................................................................................. 61 FIGURA 34 PRIMITIVA CB16CLE ............................................................................................................................. 61 FIGURA 35 BLOQUE DE DETECCIÓN DE CAMBIO DE POSICIÓN ......................................................................................... 62 FIGURA 36 CIRCUITO PARA LA DETECCIÓN DE CAMBIO DE POSICIÓN................................................................................. 63 FIGURA 37 MONOESTABLE DIGITAL .......................................................................................................................... 64 FIGURA 38 DIAGRAMA DEL MONOESTABLE DIGITAL...................................................................................................... 64 FIGURA 39 BLOQUE DE NOMBRE "ENCODER" ............................................................................................................. 65 FIGURA 40 DIAGRAMA DEL BLOQUE DENOMINADO "ENCODER" ..................................................................................... 65 FIGURA 41 FUNCIONAMIENTO GENERAL DEL ENCODER INCREMENTAL .............................................................................. 66 9 FIGURA 42 SECUENCIAS PARA IDENTIFICAR GIRO EN EL MULTIPLICADOR DE ENCODER .......................................................... 66 FIGURA 43 DIAGRAMA DE ESTADOS PARA CONOCER DIRECCIÓN DE GIRO .......................................................................... 67 FIGURA 44 DIAGRAMA DEL MULTIPLICADOR DE ENCODER.............................................................................................. 68 FIGURA 45 DISEÑO A BLOQUES DEL PWM ................................................................................................................. 69 FIGURA 46 BLOQUE PWM_TRAP .............................................................................................................................. 70 FIGURA 47 FUNCIONAMIENTO DEL DISEÑO DE PWM ................................................................................................... 70 FIGURA 48 IMPLEMENTACIÓN DEL BLOQUE PWM_TRAP ................................................................................................ 71 FIGURA 49 BLOQUE PARA DIVIDIR FRECUENCIA DEL PWM, " DIV_FREC" ......................................................................... 71 FIGURA 50 IMPLEMENTACIÓN DEL DIVISOR DE FRECUENCIA ........................................................................................... 72 FIGURA 51 BLOQUE "LIMITES_CONMUTAR"............................................................................................................... 73 FIGURA 52 IMPLEMENTACIÓN DE LA LIMITACIÓN DEL CICLO TRABAJO............................................................................... 74 FIGURA 53 DIAGRAMA QUE GENERA EL PWM PARA EL SISTEMA .................................................................................... 75 FIGURA 54 ORDEN CONSIDERADO PARA OBTENER LA CARTA DE CONMUTACIÓN................................................................. 76 FIGURA 55 BLOQUE DEL DECODIFICADOR DE CONMUTACIÓN ......................................................................................... 81 FIGURA 56 IMPLEMENTACIÓN DEL DECODIFICADOR DE CONMUTACIÓN ............................................................................ 82 FIGURA 57 DIAGRAMA DEL CONMUTADOR TRAPEZOIDAL ............................................................................................. 83 FIGURA 58 DIAGRAMA A BLOQUES DEL DISEÑO DEL PWM SENOIDAL .............................................................................. 84 FIGURA 59 GRÁFICA DE CONMUTACIÓN SENOIDAL ....................................................................................................... 85 FIGURA 60 OBTENCIÓN DE LA POSICIÓN ANGULAR ....................................................................................................... 86 FIGURA 61 BLOQUE "SUMADOR" ............................................................................................................................. 87 FIGURA 62 VHDL DEL BLOQUE "SUMADOR" .............................................................................................................. 88 FIGURA 63 MACRO DE CÁLCULO CORDIC ................................................................................................................. 89 FIGURA 64 MULTIPLICADOR DE AMPLITUD POR SENO ................................................................................................... 89 FIGURA 65 CÓDIGO EN VHDL DEL MULTIPLICADOR_7_7 ............................................................................................. 90 FIGURA 66 BLOQUE "TOP2", GENERADOR DE ANCHO DE PULSO ..................................................................................... 91 FIGURA 67 DIAGRAMA GENERADOR DEL ANCHO DE PULSO SENOIDAL .............................................................................. 91 FIGURA 68 CÓDIGO VHDL DEL BLOQUE "REG_14" ..................................................................................................... 92 FIGURA 69 DIAGRAMA DEL GENERADOR DE PWM SENOIDAL ........................................................................................ 93 FIGURA 70 BLOQUE "PWM_COR", GENERADOR DE UN PWM SENOIDAL ......................................................................... 93 FIGURA 71 DIAGRAMA PARA GENERAR LOS TRES PWM SENOIDALES DEL SISTEMA ............................................................. 94 FIGURA 72 BLOQUE "CONMUTA_SENOIDAL", DECODIFICADOR PARA LA CONMUTACIÓN SENOIDAL........................................ 95 FIGURA 73 IMPLEMENTACIÓN DEL DECODIFICADOR DE CONMUTACIÓN SENOIDAL .............................................................. 96 FIGURA 74 TRANSISTORES EN PUNTO MÁXIMO DE CONMUTACIÓN, EN LA CONMUTACIÓN SENOIDAL...................................... 97 FIGURA 75 CONMUTADOR SENOIDAL ........................................................................................................................ 98 FIGURA 76 BLOQUE "CARGA_BOOTSTRAP" .............................................................................................................. 100 FIGURA 77 LÓGICA DEL BLOQUE "CARGA_BOOTSTRAP" .............................................................................................. 101 FIGURA 78 BLOQUE "CONMUTACIÓN", CONTENEDOR DE LA CONMUTACIÓN TRAPEZOIDAL Y SENOIDAL ................................ 102 FIGURA 79 DIAGRAMA GENERAL DE UN REGISTRO ELECTRÓNICO................................................................................... 102 FIGURA 80 CIRCUITO PARA ESCRITURA, UN REGISTRO ................................................................................................. 103 FIGURA 81 CIRCUITO PARA LECTURA Y ESCRITURA DE DATOS, UN REGISTRO .................................................................... 105 FIGURA 82 MACRO IMPLEMENTADA DE CUATRO REGISTROS ........................................................................................ 105 FIGURA 83 MACRO DE CUATRO REGISTROS, SOLO ESCRITURA....................................................................................... 106 FIGURA 84 IMPLEMENTACIÓN DE LA MACRO DE CUATRO REGISTROS.............................................................................. 107 FIGURA 85 BANCO DE REGISTROS IMPLEMENTADO .................................................................................................... 108 FIGURA 86 DIAGRAMA A BLOQUES DEL CONTROL DISTRIBUIDO IMPLEMENTADO .............................................................. 111 FIGURA 87 RELACIÓN ENTRE ANCHO DE PULSO Y CAMBIO EN LA REFERENCIA DE POSICIÓN ................................................. 111 10 FIGURA 88 DIAGRAMA A BLOQUES DEL ALGORITMO DE CONTROL ................................................................................. 113 FIGURA 89 CONTADOR DE 32 BITS, ASCENDENTE DESCENDENTE ................................................................................... 114 FIGURA 90 IMPLEMENTACIÓN DEL CONTADOR DE 32 BITS ASCENDENTE-DESCENDENTE ..................................................... 115 FIGURA 91 BLOQUE RESTADOR DE 32 BITS PARA OBTENCIÓN DEL ERROR ........................................................................ 116 FIGURA 92 IMPLEMENTACIÓN EN VHDL DEL BLOQUE "RESTADOR_32B"....................................................................... 116 FIGURA 93 BLOQUE DE LA ACCIÓN PROPORCIONAL .................................................................................................... 117 FIGURA 94 IMPLEMENTACIÓN DE LA ACCIÓN PROPORCIONAL ....................................................................................... 117 FIGURA 95 IMPLEMENTACIÓN DEL MULTIPLICADOR 16X16 SATURANTE ......................................................................... 119 FIGURA 96 BLOQUE DE LA ACCIÓN DERIVATIVA ......................................................................................................... 120 FIGURA 97 IMPLEMENTACIÓN DE LA ACCIÓN DE CONTROL DERIVATIVA........................................................................... 120 FIGURA 98 IMPLEMENTACIÓN DE LA ACCIÓN INTEGRAL ............................................................................................... 122 FIGURA 99 BLOQUE INTEGRADOR........................................................................................................................... 122 FIGURA 100 IMPLEMENTACIÓN DEL BLOQUE INTEGRADOR .......................................................................................... 124 FIGURA 101 BLOQUE SUMA_PID .......................................................................................................................... 125 FIGURA 102 IMPLEMENTACIÓN DEL SUMADOR DE ACCIONES DE CONTROL ...................................................................... 126 FIGURA 103 EJEMPLO DE REINICIO DEL CONTADOR EN MODO VELOCIDAD ...................................................................... 128 FIGURA 104 CONTADOR A 32 BITS CON CARGA PARALELA ........................................................................................... 129 FIGURA 105 CONTADOR PARA MODO VELOCIDAD A BLOQUES ...................................................................................... 129 FIGURA 106 IMPLEMENTACIÓN DEL CONTADOR PARA VALOR DE REFERENCIA MODO VELOCIDAD Y POSICIÓN ......................... 130 FIGURA 107 IMPLEMENTACIÓN DEL COMPARADOR DE DESBORDE ................................................................................. 131 FIGURA 108 BLOQUE "TIME_VELOCIDAD" ............................................................................................................... 132 FIGURA 109 DIAGRAMA A BLOQUES DEL MÓDULO "TIME_VELOCIDAD" ......................................................................... 132 FIGURA 110 IMPLEMENTACIÓN DEL BLOQUE "TIME_VELOCIDAD" ................................................................................ 133 FIGURA 111 BLOQUE "CAMBIO_MODO" ................................................................................................................. 134 FIGURA 112 IMPLEMENTACIÓN DEL BLOQUE "CAMBIO_MODO" .................................................................................. 134 FIGURA 113 BLOQUE "VELOCIMETRO" GENERADO PARA MEDIR RPM .......................................................................... 135 FIGURA 114 DIAGRAMA A BLOQUES DEL BLOQUE "VELOCÍMETRO" ............................................................................... 136 FIGURA 115 OSCILOGRAMA DE LA SEÑAL DE VUELTA MECÁNICA GIRO ASCENDENTE.......................................................... 136 FIGURA 116 OSCILOGRAMA DE LA SEÑAL DE VUELTA MECÁNICA GIRO DESCENDENTE ........................................................ 137 FIGURA 117 FLANCOS EN LOS QUE EL PRE DIVISOR CONSIDERA A UNA VUELTA MECÁNICA .................................................. 137 FIGURA 118 PRE DIVISOR PARA LA FUNCIÓN DE VELOCÍMETRO ..................................................................................... 138 FIGURA 119 ESQUEMA DE MEDICIÓN DEL INTERVALO PARA DETERMINAR VELOCIDAD ....................................................... 139 FIGURA 120 IMPLEMENTACIÓN DEL REGISTRO ASÍNCRONO .......................................................................................... 140 FIGURA 121 SEÑALES DE CONTROL DEL CONTADOR DE REVOLUCIONES .......................................................................... 141 FIGURA 122 GRÁFICA MUESTRA DE LA PRUEBA ESCALÓN............................................................................................. 142 FIGURA 123 IMPLEMENTACIÓN CAPTURA EN RÁFAGA ................................................................................................. 144 FIGURA 124 BLOQUE "CAPTURA" .......................................................................................................................... 145 FIGURA 125 DIAGRAMA A BLOQUES DE LA INTERFAZ DE POTENCIA ................................................................................ 146 FIGURA 126 DIAGRAMA ELÉCTRICO DEL AISLAMIENTO ELÉCTRICO DE LA INTERFAZ DE POTENCIA .......................................... 147 FIGURA 127 CONEXIÓN DEL ACCIONADOR DE COMPUERTAS DE LOS IGBT Y CAPACITORES DE ARRANQUE ............................. 148 FIGURA 128 IGBT´S CONECTADOS PARA FORMAR EL PUENTE H TRIFÁSICO ..................................................................... 149 FIGURA 129 DIAGRAMA A BLOQUES DE LA PROTECCIÓN PARA VERIFICACIÓN DE CONEXIÓN DE FASES ................................... 150 FIGURA 130 BLOQUE "VERIFICA_FASES" ................................................................................................................. 151 FIGURA 131 ESQUEMA PARA LA VERIFICACIÓN DE FASES ............................................................................................. 151 FIGURA 132 LÓGICA PARA LA OBTENCIÓN DE LA DIRECCIÓN REAL DE GIRO ...................................................................... 152 FIGURA 133 LÓGICA PARA VERIFICAR GIRO DE MOTOR................................................................................................ 153 11 FIGURA 134 DIAGRAMA DE LA PROTECCIÓN ERROR MÁXIMO ...................................................................................... 154 FIGURA 135 IMPLEMENTACIÓN EN LÓGICA DIGITAL DE LA PROTECCIÓN MÁXIMO ERROR .................................................... 155 FIGURA 136 FRECUENCIA MUESTREO Y LECTURA ....................................................................................................... 157 FIGURA 137 FILTRO DIGITAL, FILTRANDO RUIDO ........................................................................................................ 157 FIGURA 138 FILTRO DIGITAL, DETECTANDO QUE NO ES UN RUIDO ................................................................................. 158 FIGURA 139 MONOESTABLE DIGITAL MONITOREANDO UNA SEÑAL................................................................................ 158 FIGURA 140 SEÑAL "A", DEL ENCODER EMULADO ..................................................................................................... 159 FIGURA 141 OSCILOGRAMA DEL RESULTADO OBTENIDO AL MULTIPLICAR LA RESOLUCIÓN DEL ENCODER EMULADO ................. 159 FIGURA 142 TREN DE PULSOS A LA SALIDA DEL BLOQUE "DIV_FREC"............................................................................. 160 FIGURA 143 PWM TRAPEZOIDAL GENERADO ........................................................................................................... 160 FIGURA 144 OSCILOGRAMA DE LA CONMUTACIÓN TRAPEZOIDAL GENERADA ................................................................... 161 FIGURA 145 CONEXIÓN DE BOBINA EN LA CONMUTACIÓN TRAPEZOIDAL. ....................................................................... 161 FIGURA 146 FILTRO PASA BAJAS, PARA PRUEBA DE PWM SENOIDAL ............................................................................. 162 FIGURA 147 PWM SENOIDAL OBTENIDO ................................................................................................................. 162 FIGURA 148 BANCO DE PRUEBAS DESARROLLADO ...................................................................................................... 163 FIGURA 149 SINTONIZACIÓN Y RESULTADO DE SEGUIMIENTO DEL CONTROL A LA PRUEBA ESCALÓN...................................... 164 FIGURA 150 SINTONÍA Y RESULTADO OBTENIDO EN EL CONTROL DE VELOCIDAD ............................................................... 165 FIGURA 151 FORMAS DE ONDA DE LA CORRIENTE TOTAL DE LA FUENTE HACIA EL MOTOR .................................................. 166 12 Tablas TABLA 1 COMPARATIVA ENTRE MOTOR DE INDUCCIÓN Y MOTOR DE CAMPO PERMANENTE................................................... 21 TABLA 2 CODIFICACIÓN CONMUTACIÓN TRAPEZOIDAL .................................................................................................. 30 TABLA 3 PROBLEMAS Y EFECTOS DE LOS ARMÓNICOS .................................................................................................... 32 TABLA 4 COMPARATIVA DEL IGBT CONTRA EL BJT Y EL MOSFET .................................................................................. 42 TABLA 5 OPCIONES DE RESOLUCIÓN DEL CONVERTIDOR ANALÓGICO-DIGITAL..................................................................... 53 TABLA 6 OPCIONES DE CONFIGURACIÓN OPERACIÓN ADS2S1210 ................................................................................. 53 TABLA 7 INTERFAZ CON EL CONVERTIDOR ANALÓGICO-DIGITAL ....................................................................................... 55 TABLA 8 DIVISIÓN DE FRECUENCIA ............................................................................................................................ 56 TABLA 9 CARTA DE CONMUTACIÓN BLDC BE341J ...................................................................................................... 77 TABLA 10 NÚMERO DE CUENTAS EN LAS QUE SE DEBE GENERAR EL CAMBIO DE POLARIDAD .................................................. 78 TABLA 11 RANGOS PARA CONMUTAR ........................................................................................................................ 79 TABLA 12 CONMUTACIÓN DISEÑADA PARA EL SISTEMA ................................................................................................. 80 TABLA 13 VALORES OBTENIDOS PARA IDENTIFICACIÓN DE FALLA EN EL ARRANQUE DE CONMUTACIÓN SENOIDAL ...................... 99 TABLA 14 TABLA DE VERDAD DEL REGISTRO DIGITAL ................................................................................................... 103 TABLA 15 LOCALIDADES INTERFAZ PC ..................................................................................................................... 109 TABLA 16 CANTIDAD DE VUELTAS NECESARIAS PARA CALCULAR NUEVO VALOR DE VELOCIDAD............................................. 138 13 Capítulo 1. Introducción Capítulo 1. Introducción 1.1 Aspectos Generales El vehículo eléctrico representa la mejor alternativa fundamentada y avalada a nivel mundial como transporte en la actualidad. Se debe considerar como un vehículo eléctrico, a todo aquel vehículo capaz de desplazarse sobre ruedas, en el que su propulsión sea obtenida por energía eléctrica, se incluyen los vehículos a baterías, los vehículos híbridos y los vehículos con celdas de combustible. [1] Los vehículos eléctricos (EV: Electric Vehicles), fueron inventados en 1834, durante la última década del siglo XIX, muchas compañías produjeron vehículos eléctricos en América, Gran Bretaña y Francia, pero existieron limitaciones, en cuanto a las baterías principalmente, asociado al rápido avance en el vehículo de combustión interna, logrando imponerse este último por su potencia, velocidad e independencia, elementos que hacían sentir eficiencia al transportarse. Además que los recursos naturales eran bastos y al ser un bien al cual no todos tenían acceso, no representaba significativamente un impacto ambiental negativo en cuanto a sus residuos. Al ser un negocio global en expansión fue fácil que grandes empresas realizaran inversión para tener las suficientes estaciones de abasto de combustible que demandaban estos vehículos, lo que generó una aceptación vertiginosa. Fue esto el motivo para que el vehículo eléctrico desapareciera de la escena del mundo en 1930. Sin embargo, con el paso de los años a nivel internacional, existieron cambios de acuerdo a cómo la sociedad vivía su época, como ejemplo se tiene que cercanos a los años setentas, algunos países obligados por las crisis energéticas retomarán el interés en el vehículo eléctrico, es así como en 1976 Estados Unidos lanzó una ley pública para el desarrollo de autos eléctricos e híbridos, observando que podrían ser rentables este tipo de vehículos y demostrando al mundo que era esta línea el futuro del transporte a nivel mundial. Sin embargo en ese tiempo continuaba la limitación en baterías ya que se lograban rangos de conducción cortos y el costo de estos vehículos era muy alto, lo cual restringió de nuevo la popularidad del vehículo eléctrico. 14 Es así como algunos avances tecnológicos aplicados hasta los años 1990; como son, tecnología en baterías, el desarrollo en control de motores y el avance en electrónica de potencia, lo que hacen prometedor el desarrollo de vehículos eléctricos de nuevo. En el inicio del siglo XXI muchos países se enfrentaron con el cambio climático, crisis energéticas, contaminación y el alto interés que a nivel mundial se da por el ambiente y la sustentabilidad, estos factores, en conjunto generan la importancia y el porqué del gran crecimiento que ha tenido el vehículo eléctrico en nuestros tiempos. El avance tecnológico en el ramo de los vehículos eléctricos, converge con la mejora en acumuladores o baterías de diferentes materiales y capacidades. Los tipos de baterías con los que se han contado desde la invención del vehículo eléctrico frenaron su comercialización y aprovechamiento de sus capacidades. Los desarrollos en baterías de Ion-Litio que de igual manera se generaron en la década de los noventa, son pieza clave para que los vehículos eléctricos sean viables como medio de transporte, por factores como: su alta densidad de energía, alta tensión por celda 3.6-3.7 V, no requieren mantenimiento, no tienen efecto memoria, bajo efecto de autodescarga inferior al 10%, no es fabricada con productos tóxicos, ciclos de vida entre los 400 a 1200 y con un mejor índice de seguridad. Sin embargo, estos avances no pueden ser aprovechados, si no existe la electrónica capaz de controlar los parámetros de buen funcionamiento de una batería. [2] De igual manera que en las baterías, los recientes avances en los motores de campo permanente sin escobillas, han hecho que estos motores tengan un incremento en un gran espectro de aplicaciones tanto domesticas como en la industria. Esto ha llegado a ser posible por su superior desempeño en términos como alta eficiencia, respuesta rápida, precisión, peso ligero y control exacto, además de ser altamente confiables y de libre mantenimiento. El desarrollo de estos motores y su alto rendimiento ha sido gracias a diversos factores: materiales de tierras raras en los campos permanentes, variadas formas de construcción del motor, tecnología en sensores que los vuelve más precisos, semiconductores rápidos para su operación, microelectrónica con alto rendimiento a bajo costo, electrónica de potencia fiables y ligera además de nuevas filosofías de control mucho más robustas y adaptables. [3] Mencionado avance en baterías en conjunto con el motor de magneto permanente sin escobillas de corriente continua (PMBLDC: Permanent Magnet Brushless Direct Current), logran la sinergia que faltaba para que el vehículo eléctrico sea eficiente y capaz de generar el torque, para impulsar un vehículo a consumo de energía viable, siempre y cuando se tenga un buen control en el accionamiento del motor. 15 Capítulo 1. Introducción Dado que el motor PMBLDC es alimentado por baterías, es necesario accionarlo de manera eficiente y segura, vigilando durante su operación el nivel de armónicos, factor de potencia y temperatura. El control para un motor PMBLDC con las características de voltaje y corriente, para una aplicación de vehículo eléctrico, es complejo por factores como la adquisición de datos del motor (corriente y voltaje en devanados, temperatura y posición del rotor), la conmutación para hacer que realice su trabajo, las pérdidas en calor generadas por mal accionamiento, entre otras. La eficiencia para este motor PMBLDC en el propósito de un vehículo eléctrico se reflejará en el consumo de energía, en el torque desarrollado en un vehículo y en una interfaz comprensible y adaptable para cualquier usuario. Con el panorama en mente, de cómo el vehículo eléctrico ha logrado su evolución, este trabajo se propone desarrollar el controlador para motor PMBLDC como tecnología ideal para la tracción de vehículos eléctricos, cuidando los parámetros de funcionamiento y buscando el consumo eficiente de energía, atendiendo en todo momento la velocidad a la que el usuario desee desplazarse. El controlador senoidal da las facultades al sistema para obtener la mayor eficiencia energética, ya que con este método las tres bobinas del motor están energizadas y por tanto contribuyendo en la generación de torque, con el menor consumo de potencia posible. 1.2 Estado del Arte Como parte del estado del arte, se tiene al trabajo de Mohamed El Hachemi Benbouzid y colaboradores [4], en el cual se busca hacer tolerante a fallas al controlador de tracción de un vehículo eléctrico impulsado por motor de inducción, considerando que son variadas las fallas que pueden afectar a la operación de un controlador de motor eléctrico de inducción, especialmente en aplicaciones automotrices como son vehículos eléctricos e híbridos donde los sistemas de control deben ofrecer mayor fiabilidad y robustez en condiciones donde opera un vehículo. Se considera al motor de inducción como el mejor candidato para la propulsión eléctrica por su confiabilidad, robustez, bajo mantenimiento, bajo costo y la facilidad de operar en ambientes hostiles, además de que hoy en día es la tecnología más conocida y madura en el mercado en el que no se requiere de un conmutador. Sin embargo, la anterior no es la mejor, ya que estos motores, como lo describe Ali Emadi y colaboradores [5], pueden ser reemplazados con la nueva tecnología de motores PMBLDC, resultando en un substancial ahorro de energía. La confiabilidad es mayor, el mantenimiento es nulo, el control puede ser más fino y preciso ya que este tipo de motor se comporta de forma lineal, por lo cual es suficiente el algoritmo 16 de control proporcional integral, para la correcta compensación de velocidad y torque; además de que se elimina la conmutación mecánica, con el inconveniente de que su accionamiento es más costoso y complejo por la electrónica de potencia involucrada. Del trabajo Mohamed El Hachemi Benbouzid y colaboradores se desprenden los requerimientos, que el controlador a desarrollar debe cubrir para una aplicación de vehículo eléctrico: Alta conversión de energía y alta transmisión de potencia. Alto torque a baja velocidad para arranque o pendientes, así como alta potencia a alta velocidad para velocidad crucero. Muy alto rango de velocidades a torque sin risos y sin pérdida de potencia. Respuesta de torque rápido. Alta eficiencia entre los rangos de velocidad y torque. Alta fiabilidad y robustez para operar en condiciones diversas a las que un vehículo esté expuesto. Costo razonable. Obviamente estas características permiten el mayor aprovechamiento del banco de baterías, reflejado en la extensión de la distancia de desplazamiento que el banco de baterías permite y la disminución de tamaño y peso del motor. Sin embargo, para lograr la producción de torque, altos rangos de velocidad y la eficiencia esperada, para un vehículo eléctrico, es necesario accionar al motor PMBLDC bajo el método de conmutación que permita obtener mencionado desempeño. Los dos métodos de conmutación permisibles para el PMBLDC, son descritos en el trabajo de Steinbuch, M. [6], en el cual se describe que para obtener el mayor rendimiento de estos motores es, conmutar con el método senoidal por las siguientes razones: Las tres fases del motor están conduciendo de manera constante. La contante de torque y el consumo de potencia son más bajos. Baja generación de armónicos. El factor de potencia alto, se puede lograr a cualquier rango de velocidad. Para lograr la conmutación senoidal, es crucial tener la información de la posición absoluta del rotor, con el fin de producir las formas de onda en el voltaje, sincronizadas con el desplazamiento del motor. Para obtener esta información, los motores son equipados de sensores que codifican la posición angular de un eje a 17 Capítulo 1. Introducción un código digital como es el caso del encoder o a un código analógico como el caso del resolver. [7] Con lo cual se puede concluir, que el tema del vehículo eléctrico es actual y que existen los medios para hacer que sean eficientes, con lo cual lograrían la popularidad que se les ha negado por décadas. Además de que al observar, los requerimientos que el controlador para esta aplicación, debe cumplir, es correcto pensar en que la mejor alternativa es desarrollar el controlador eficiente para motor PMBLDC y no para otro tipo de motor eléctrico. Eficiencia que se logrará al conmutar bajo el esquema senoidal. Después de analizar los algoritmos de control que se proponen para estos motores, sobresale que, a pesar de existir nuevas teorías y métodos, el control Proporcional Integral Derivativo, es el que mejor se ajusta para la regulación de velocidad, contando con un sensor de posición absoluta. 1.3 Objetivos 1.3.1 Objetivo General Regular la velocidad del motor PMBLDC empleando conmutación trapezoidal y senoidal, realizando una comparación entre estos métodos para mostrar las ventajas del método senoidal con respecto a torque, nivel de armónicos y factor de potencia. 1.3.2 Objetivos Específicos 1. Diseñar e implementar el conmutador senoidal para motor PMBLDC. 2. Diseñar e implementar el conmutador trapezoidal para motor PMBLDC 3. Implementar la carta de conmutación para la decodificación del sensor de posición. 4. Diseñar e implementar circuitos de protección contra temperatura, corriente y fallas de conexión. 5. Crear interfaz de usuario para operación y monitoreo. 6. Implementar la etapa de potencia, con capacidad de aislamiento eléctrico entre la etapa de control y potencia, para la tensión eléctrica de 340 V. 7. Diseñar e implementar el control PID para regulación de posición y velocidad, haciendo uso de un solo módulo de control. 8. Realizar pruebas y evaluar el desempeño del sistema en un mecanismo. 18 1.4 Justificación En los últimos veinte años, el uso de vehículos eléctricos se ha incrementado anualmente 13% en promedio [8], siendo el vehículo de combustible alternativo con mayor crecimiento. Fabricantes como BMW, Chrysler, Ford, GM, Honda, Nissan, VW, apuestan a esta tecnología, con autos 100% eléctricos ya en el mercado [9], con promedio de ventas de 16 mil vehículos por año solo en Estados Unidos [10], con estos datos en mente, este medio de transporte, representa a la nueva generación de vehículos que se comercializarán a gran escala a nivel mundial, principalmente motivado por el impacto ambiental, siendo viable por los avances en tecnología de baterías, motores, electrónica de potencia y generación limpia de energía eléctrica. La principal motivación, de este trabajo de tesis en desarrollar el controlador de velocidad con alta eficiencia para motores PMBLDC, es debido al nivel de impacto que tendrán los vehículos eléctricos, no solo en el usuario final, más bien en la abundante opción de trabajo que rodea al vehículo eléctrico, desde el diseño, fabricación, venta y mantenimiento; ya que este controlador, será la llave para poder lograr buen consumo de energía de los bancos de baterías, así como obtener el mayor rendimiento del motor de tracción. Es relevante el desarrollo de tecnología propia, en el controlador de velocidad para vehículos eléctricos, ya que las aptitudes del vehículo se verán aumentadas o disminuidas, tanto como el controlador lo autorice, o en este caso hasta donde el diseñador lo faculté, lo cual lo convierte en la esencia de la nueva generación de vehículos y a través del cual, se podrán hacer mejores trabajos a futuro como los vehículos autodirigidos. Además al desarrollar el controlador, se puede contribuir en la formación de recursos humanos, capaces de comprender, mantener y aportar a esta tecnología, y como máxime generar empresas que incursionen en este rubro a nivel nacional, ya que para fabricar un vehículo de estas características o las autopartes, no se requerirá de gran infraestructura. 19 Capítulo 2. Fundamentos Teóricos Capítulo 2. Fundamentos Teóricos 2.1 Introducción En este capítulo, se describe al sensor absoluto de posición que es necesario para el desarrollo de esta aplicación, así como el principio de funcionamiento, y teoría que avala el por qué este desarrollo se realiza con este dispositivo y algoritmos. Se selecciona como el óptimo motor para esta aplicación, al motor sin escobillas, debido a su alta eficiencia en comparación con los motores de inducción y de campo permanente con escobillas. Sin embargo, el motor sin escobillas no contiene los medios mecánicos, denominados escobillas, para generar el cambio de polaridad en las bobinas para hacer que el rotor gire, debido a esto, es por medio de la electrónica que se logra este cambio de polaridad, por lo cual se requiere de sensores internos en el motor que permitan conocer en qué momento se debe cambiar la polaridad. El cambio de polaridad, mayormente conocido como conmutación, se puede realizar de dos tipos: la conmutación trapezoidal y la conmutación senoidal; sin embargo, existe suficiente teoría que sustenta a la conmutación senoidal, como el método más eficiente, con el único inconveniente de ser más complejo y costoso de implementar. [6] [11] [12] La forma senoidal, se logra a través de generar una senoide por medio de modulación de anchos de pulso (PWM: Pulse Width Modulation), calculando en tiempo real la forma de acuerdo a la posición en la que se encuentre el rotor, por tal motivo se requiere de un sensor de posición absoluto dentro del motor, en esta aplicación se utiliza el sensor “Resolver”, el cual puede calcular, la posición angular del rotor con la precisión necesaria, para generar la senoide. Para poder regular la velocidad, se utiliza el algoritmo de control proporcional integral derivativo, considerando como el método más eficiente y menos costoso en cuanto a recursos de hardware. 20 Para lograr la interfaz, entre la lógica y el motor, se define al puente H trifásico, con transistores bipolares de potencia de compuerta aislada, con características de voltaje y corriente, capaces de soportar la dinámica del motor. También se requiere de la interfaz, con la que el usuario pueda interactuar con el sistema, la cual se desarrolla sobre plataforma gráfica para hacerla más entendible por el usuario. 2.2 Motor de Eléctrico Para comprender qué tipo de motor es el que mejor se adapta a las necesidades de la aplicación, se debe tener en cuenta el siguiente análisis. Debe entenderse como motor eléctrico una máquina que realiza la conversión de energía eléctrica de entrada en energía mecánica de salida, presentando pérdidas de energía en dicha transformación, es decir no tiene comportamiento ideal, debido a fricción e inercia así como la misma oposición interna de magnetos a generar el movimiento. Entre las variantes de motores se encuentra los de corriente alterna y corriente directa, estos últimos están diseñados para desarrollar máximo torque desde la primera revolución, y la regulación de velocidad, se puede realizar limitando el voltaje de entrada, además de ser compactos, lo cual los convierte en los mejores actuadores para aplicaciones precisas, como lo son aplicaciones mecatrónicas. [13] En la Tabla 1, se muestra la comparativa entre el motor de inducción de corriente alterna y el motor de campo permanente de corriente directa, encontrando que este último tiene ventajas que lo hacen sobresalir para la aplicación de vehículo eléctrico. Tabla 1 Comparativa entre motor de inducción y motor de campo permanente Característica Motor de Inducción Motor de campo magnético permanente Corriente al arranque Es muy elevada Igual a la de operación continúa Tamaño Torque Grande Mínimo en el arranque Reducido Máximo desde la primer RPM Disipación de calor Eficiencia energética Tipo de control Complejidad de controlar Ruido Costo Ineficiente Baja No lineal Muy alta Demasiado Bajo Eficiente Alta Lineal Alta Mínimo Alto 21 Capítulo 2. Fundamentos Teóricos Una de las ventajas más relevantes de los motores de campo permanente, es que la corriente al arranque es igual a la de operación lo cual, permite que el torque pueda ser máximo desde la primer revolución elevando la eficiencia energética, además de ser silenciosos. 2.2.1 Motor convencional de corriente continua con escobillas Un motor de este tipo, como se puede observar en la Figura 1, consiste en un rotor embobinado el cual puede rotar dentro del campo magnético generado por los imanes en el estator, debido a las fuerzas de atracción y repulsión entre cargas electromagnéticas. [14] Figura 1 Estructura del motor convencional de DC Estas cargas electromagnéticas, se interpretarán como polos, norte (N) y sur (S). Se realiza la conexión de la bobina por medio de anillos, como se puede observar en la Figura 2. Los anillos generan un punto donde se puede manipular por medios externos la energía en la bobina, al ser montada en una flecha, este punto es conocido como conmutador. 22 Figura 2 Conmutador del motor convencional de DC La finalidad de este conmutador se puede apreciar en la Figura 3; cuando la bobina se energiza por primera vez, se tiene al polo norte en la bobina con el polo norte en el estator al igual que, el polo sur de la bobina con el polo sur del estator, esto generará fuerza de repulsión, que a su vez originará que el rotor se mueva en sentido contrario a las manecillas del reloj. Una vez que el polo norte de la bobina se encuentre con el polo sur del estator y el sur de la bobina con el norte del estator, el movimiento se verá detenido porque se ha encontrado un punto de equilibrio electromagnético, en este instante hay que cambiar las polaridades en la bobina para que el rotor pueda de nuevo tener movimiento, a este proceso se le conoce como conmutación. El conmutador en este instante, genera un corto en la bobina para poder desenergizar, lo que comúnmente se observa como una chispa en la operación de los motores, inmediatamente después de la desenergización, a la bobina se le coloca la polaridad de tal manera que no concuerden los polos entre bobina y estator, para generar de nuevo las fuerzas de atracción repulsión, en caso de que la polaridad continúe igual que la conmutación anterior, el motor rotará en el mismo sentido, de lo contrario este cambiará de sentido de giro. La chispa generada por el cambio de la conexión, se traduce en pérdidas de energía lo cual no es lo mejor, si se piensa en una aplicación de vehículo eléctrico en la que la fuente de energía es limitada. 23 Capítulo 2. Fundamentos Teóricos Figura 3 Función del conmutador a) primer energizado b) polaridades iguales c) conmutación Dentro de los motores de corriente directa se encuentran los motores de campo permanente sin escobillas, los cuales son considerados comercialmente como los mejores motores para la aplicación de tracción eléctrica, debido a su alta eficiencia en cuanto a cantidad y aprovechamiento de la energía que demanda a la fuente, que lo esté alimentando. [15] 2.2.2 Motor de campo permanente sin escobillas A principios y mediados de los años noventa, en la industria era repetitivo escuchar de estos motores, como los más pequeños, rápidos y fuertes. Ya que con la nueva generación de motores sin escobillas de DC se obtiene lo siguiente [12]: • • • • • Mayor rendimiento.- El bajo nivel de inercia del rotor da como resultado mayor velocidad y aceleración. Alta confiabilidad y bajo mantenimiento.- Sin escobillas que se desgasten. Disipación de calor superior a los motores de inducción.- Las bobinas se montan en un disipador de calor (estator). Reducción de las emisiones por interferencia electromagnética (EMI: ElectroMagnetic Interference).- Eliminación del arco en conmutador de escobillas. Alta potencia en relación del tamaño. El motor PMBLDC está diseñado para tener un desempeño similar a los motores de corriente directa con escobillas, pero sin las limitaciones y pérdidas de energía que genera la conmutación mecánica. El motor sin escobillas aplica el principio de la ley de Lenz, la cual indica que si un conductor por el que circula una corriente eléctrica se encuentra dentro de la acción de un campo magnético, por la interacción entre los campos magnéticos naturales con los inducidos en el conductor éste tiende a desplazarse perpendicularmente a 24 las líneas de acción del campo magnético, la fuerza que produce este desplazamiento se conoce como fuerza electromotriz. Con esta fuerza electromotriz se realiza el giro continuo (sin ningún contacto con las bobinas en el estator) del servomotor sin escobillas. Para comprender al motor sin escobillas a partir de un motor de corriente directa, se debe comenzar por eliminar el embobinado en el rotor, ya que en el diseño de estos motores, como se puede observar en la Figura 4, los imanes permanentes que se tenían en el estator ahora son colocados en la parte rotatoria del motor y los embobinados se colocan en el estator para generar los polos de conmutación. Esto significa que para poder conmutar la energía en la bobina, se requiere conocer la posición del rotor por medio de algún sensor de posición, que permita conocer con exactitud los puntos en los que la bobina tiene que cambiar de polaridad. Figura 4 Estructura del motor de campo permanente sin escobillas, monofásico El motor a utilizar en esta aplicación es el PMBLDC trifásico, por lo cual como estructura básica se tiene tres bobinas en el estator, generando los polos electromagnéticos en el estator para generar la fuerza mecánica que hace girar al rotor, estas bobinas se encuentran divididas en el estator de forma tal, que se aprovecha al máximo su energía cuando son polarizadas. [16] 25 Capítulo 2. Fundamentos Teóricos Figura 5 Configuración básica BLDC a tres fases, y dos polos en imán permanente Como lo muestra la Figura 5, la bobina de la fase “A” se encuentra en dos secciones, en la sección superior del estator se encuentra la parte positiva y en la parte inferior la parte que se conecta a la polaridad negativa; así se encuentra la distribución de las bobinas de las 3 fases, a cada sección de la bobina se le conoce como polo. Los motores PMBLDC entre las tres fases, forman un embobinado trifásico con conexión tipo estrella, Figura 6; todas las fases son conectadas en un punto en común [17]. Figura 6 Conexión característica de las bobinas en el motor BLDC Conociendo la configuración de la conexión estrella que representa al motor, se puede conocer el sentido para realizar la polarización de las bobinas de las fases 26 en un lapso de tiempo y con secuencia determinada; a manera de ejemplo, para realizar un giro, se debe de seguir la secuencia de la trayectoria 1,2 y 3, mostrado en la Figura 7, donde se observa que la primer conmutación es con las bobinas “A” en positivo y “B” en negativo, para continuar el giro una fase debe mantener su polaridad y la otra a conectar es la que puede cambiar de polaridad, en este caso la segunda conmutación mantiene a “B” en negativo y la bobina “C” es polarizada positivamente, para continuar el giro en la conmutación 3 se mantiene a “C” positiva y “A” se vuelve negativa, y así cíclicamente hasta terminar 6 pasos de conmutación, que es cuando las polaridades se repetirían, a este ciclo de los 6 pasos de conmutación se le conoce como vuelta eléctrica. Figura 7 Secuencia de polarización de las bobinas para producir que el rotor gire La vuelta mecánica del motor BLDC, se considera como el desplazamiento que genera el rotor en dar una vuelta completa, si está conectado a un mecanismo este dará un giro completo. Dependiendo de la cantidad de polos de los que esté construido el motor BLDC, se determina cuantas vueltas eléctricas son necesarias para que el rotor de una vuelta mecánica, a manera de ejemplo, supóngase un motor de 4 polos, es decir bifásico, este tendrá que dar dos vueltas eléctricas para generar una vuelta mecánica. En los motores PMBLDC su accionamiento no es simple, como es el caso de los motores con escobillas, que es suficiente con solo conectarlos a la fuente energía para que se muevan. La polaridad en las bobinas está definida por la posición del rotor por lo tanto debe existir un sistema de electrónica digital, que este conmutando de acuerdo a lo que el sensor de posición retroalimente. A este tipo de conmutación se le conoce como conmutación electrónica. 27 Capítulo 2. Fundamentos Teóricos Con una confiabilidad mejorada y costos cada vez menores, la industria ha centrado su atención en los problemas provenientes con los motores sin escobillas, como son: • • Rizado en el torque.- El torque variará en función de la posición del eje del motor, ocasionando ondulación del toque generado, debido a la conmutación a 6 pasos con conmutadores trapezoidales. Sensores de efecto Hall – Los sensores usualmente utilizados para conocer los puntos de conmutación pre ensamblados en el motor, son los de efecto Hall, en el ensamble es imposible la perfección generando tolerancias de alineación y de histéresis para reducir el rebote de señal u oscilación, reduciendo la eficiencia de conmutación. Juntos el rizo en el torque con las deficiencias de los sensores de efecto Hall, produce que el desempeño del torque de un motor PMBLDC, se reduzca en 15% a 20%. Para hacer frente a estos problemas se requería otra forma de conmutación del motor, y conmutar sin sensores de efecto Hall. La respuesta fue la conmutación sinusoidal y sensores absolutos. [12] 2.3 Conmutación Electrónica El conmutador electrónico realiza la inversión del flujo de la corriente en las bobinas del estator, en la secuencia determinada por la vuelta eléctrica, para que el motor BLDC pueda realizar un movimiento giratorio en la misma dirección. 2.3.1 Conmutación Trapezoidal La conmutación trapezoidal se caracteriza por tener dos fases en operación del motor y una fase desconectada para que se libere la energía almacenada en esta, en cada punto de conmutación la combinación de conexión en las fases cambia, de acuerdo a la codificación de los sensores de efecto “Hall”, los cuales determinan en qué puntos se debe realizar la conmutación. La conmutación trapezoidal es la más redituable en cuanto a sencillez de accionamiento y gasto de recursos. Y perfecta para aplicaciones de alta velocidad, donde el motor y la mecánica puedan eliminar el rizo en el torque que se produce durante la conmutación de una fase a otra. [18] El sensor de efecto Hall, sonda Hall o simplemente sensor Hall, opera en base al efecto Hall, el cual se utiliza para la detección de presencia de campos magnéticos. Estos sensores tienen la característica que, al detectar la polaridad positiva del campo magnético, generan una señal lógica de en valor alto (1 en valor binario) y cuando detectan la polaridad negativa generan la señal digital en bajo (0 en valor binario). [19] 28 En la Figura 8 se describen las formas de onda de las señales de voltaje del motor, corriente y sensores Hall, correspondiente con el ángulo del rotor del motor BLDC. Típicamente la mayoría de motores BLDC se fabrican con tres sensores Hall integrados, colocados 120 grados uno del otro. Esto proporciona las señales digitales necesarias para el decodificador, con el fin de determinar la posición del rotor en intervalos de 60 grados eléctricos. La colocación de los sensores Hall cada 120 grados es la configuración más popular debido a que, en condiciones normales, nunca genera los códigos en la que los tres sensores tengan su salida lógica en alto o bajo simultáneamente. Esto significa códigos binarios 111 o 000 son inválidos y esto permite un mecanismo de detección de fallos más fácil, en caso de que los sensores fallen. [20] Figura 8 Voltaje en cada fase, forma de onda de corriente y codificación de sensor Hall con respecto al ángulo eléctrico del rotor La información dada en la Figura 8, puede ser fácilmente presentada en forma de tabla de conmutación de seis pasos para el inversor de 3 fases, como se muestra en la Tabla 2. En esta tabla se proporciona la secuencia adecuada de excitación de las fases del motor con respecto al código binario generado a partir de 3 sensores Hall. Diseñar la tabla de conmutación correcta es fundamental para desarrollar el decodificador de conmutación de 6 pasos para accionar el motor de manera eficiente, así como para asegurarse de que el voltaje es suministrado a la fase adecuada el tiempo de duración justo. 29 Capítulo 2. Fundamentos Teóricos Tabla 2 Codificación conmutación trapezoidal HA 1 0 0 0 1 1 Sensores Hall HB 1 1 1 0 0 0 HC 0 0 1 1 1 0 FASE A Apagada Apagada + + Fases el motor FASE B + + Apagada Apagada FASE C Apagada + + Apagada - Para mayor claridad de la convención, el signo + en la Tabla 2 significa que el voltaje a suministrar en cada fase es positivo, además de corriente positiva, y el signo significa que el voltaje suministrado es negativo, suministrando así corriente negativa en la fase. Apagada significa que el voltaje suministrado es cero en la fase. En resumen, la polarización se realiza en 2 fases con polaridad distintas positiva y negativa, y una tercera fase se mantiene desconectada para que libere su energía, y pueda ser utilizada en la siguiente secuencia de polaridad, requerida para continuar el giro, el energizado e inversión de la polaridad en las bobinas del estator se realiza por medio de la interfaz de potencia, que consiste en un puente H trifásico. 2.3.2 Conmutación Senoidal En la conmutación senoidal durante la dinámica del motor, siempre las tres fases están conduciendo y contribuyendo para la producción de torque, generando menor consumo de potencia, reduciendo el nivel de armónicos, reduciendo el ruido electromagnético, además de reducir e incluso llegar a eliminar los rizos en la corriente, reflejados en la producción de torque. [6] [11] [12] La conmutación sinusoidal es la mejor para bajas velocidades, o aplicaciones de control de motores lineales, donde el rizo en el torque del motor debe ser minimizado. Puesto que la corriente en las fases del motor es suministrada en forma de ondas senoidales, el torque desarrollado por el motor es suave y tiene ondulación mínima. [18] Este tipo de conmutación, solo es posible cuando existe la suficiente resolución en la medición de la posición del rotor para crear una senoide lo más fiel a la fundamental, ya que la corriente en las fases es en función de la posición del rotor, de aquí, la necesidad de un sensor de posición absoluto, que al medir el ángulo del rotor pueda determinar la posición, y producir la retroalimentación para el bloque de control. [21] 30 2.3.3 Torque constante a partir de la conmutación senoidal La conmutación senoidal provee del óptimo torque constante, con el inconveniente de los altos requerimientos de la retroalimentación de posición, y la dificultad de implementar el algoritmo en el hardware dedicado. [21] Es posible obtener torque constante con esta conmutación, gracias a que la corriente y el voltaje se defesan de igual manera 120°, como se muestra en la Ecuación 1. El por qué la producción del torque puede ser constante, se muestra en la referencia [6]. 𝑇 = 𝐾𝑡 (𝐼𝑎 𝐸𝑎 𝑠𝑖𝑛(𝜃)𝑠𝑖𝑛(𝜃) + 𝐼𝑏 𝐸𝑏 𝑠𝑖𝑛 (𝜃 + + 𝐼𝑐 𝐸𝑐 𝑖𝑛 (𝜃 − 2𝜋 2𝜋 ) 𝑠𝑖𝑛 (𝜃 − )) 3 3 2𝜋 2𝜋 ) 𝑠𝑖𝑛 (𝜃 + ) 3 3 ( 1) De manera simplificada se tiene lo mostrado en la Ecuación 2, donde, en el torque que produce el motor se ve afectado solamente por su constante de torque, y por la corriente que consume. 𝑇𝑡 = 3 𝐾𝐼 2 𝑡𝑡 ( 2) 2.3.4 Armónicos Los armónicos son corrientes o voltajes, con frecuencias que son múltiples enteros de la frecuencia fundamental, como se muestra en la Figura 9. Por ejemplo si la frecuencia fundamental es 60 Hz, entonces la segunda armónica es 120 Hz, la tercera es 180 Hz, etc. 31 Capítulo 2. Fundamentos Teóricos Figura 9 Señal con armónicos Los armónicos son creados por cargas no lineales, que despliegan pulsos abruptos de corrientes en lugar de una senoidal. Estos pulsos causan distorsión en la forma de onda de corriente, la cual en el retorno causa armónicos de corriente por flujo en otras partes del sistema de potencia. En plantas industriales, la causa más común de armónicos son cargas trifásicas nolineales, las cuales incluye controladores de motores, y fuentes de poder ininterrumpidas (UPS sin corrector de factor de potencia). [22] Algunos de los problemas que ocasionan los armónicos, se listan en la Tabla 3. [23] Tabla 3 Problemas y efectos de los armónicos ELEMENTO Conductor Conductor de Neutro Condensador PROBLEMA • Aumento de la corriente • Aumento de perdidas térmicas (efecto Joule) • Circulación armónicos múltiplos de 3 • Retorno por el conductor de neutro • Resonancia paralelo con el sistema • Amplificación de los armónicos 32 EFECTO • Calentamiento cables (deterioro) • Disparo de protecciones • Sobreintensidad por el neutro • Calentamiento del neutro • Degradación prematura • Disparo de protecciones • Calentamiento condensadores • Envejecimiento prematuro de condensadores • Destrucción de condensadores Maquinas Eléctricas • Circulación de corrientes armónicas por los devanados y tensiones armónicas en bornes Equipos de Medida y Control • Medidas no válidas • Errores en procesos de control • Sobrecalentamiento y perdida de aislamiento térmico (efecto Joule) • Aumento perdidas magnéticas (por Histéresis y Foucault) • Desclasificación (Transformador) • Vibraciones en el eje, desgaste mecánico en rodamientos y excentricidades (motores) • Valores de magnitudes incorrectas • Interferencias con sistemas de comunicación y control • Error en los instantes de disparo de tiristores Los armónicos pueden eliminarse utilizando cargas lineales, como lo es el motor PMBLDC, en las cuales se desplieguen pulsos de corriente en forma senoidal, lo más apegado a la forma de onda senoidal fundamental, mostrada en la Figura 9, el medio para generar la forma de estos pulsos de corriente, es con la conmutación senoidal. 2.3.5 Factor de potencia El factor de potencia es el indicador sobre el correcto aprovechamiento de la energía, técnicamente es la cantidad de energía eléctrica que se ha convertido en trabajo. Si al medir las corrientes y tensiones en la carga son señales perfectamente sinusoidales, el factor de potencia es igual a cos ϕ, en caso de no ser perfectas el rango de valores para este indicador, está comprendido entre 0 y 1. En motores y transformadores un factor de potencia cercano a la unidad significa que la energía reactiva, correspondiente a la energía necesaria para crear los campos magnéticos, es pequeña comparada con la energía activa, que corresponde a la potencia que se transforma íntegramente en energía mecánica y en calor, dimensionada en Watts, es decir, existe eficiencia en la transformación de energía. Un factor de potencia alto, permite la optimización de los diferentes componentes de una instalación y aprovechamiento de energía, entre las ventajas se tiene [24]: Reducción de la sección de los cables 33 Capítulo 2. Fundamentos Teóricos Reducción de las pérdidas en cables Reducción de las caídas de tensión Aumento de la potencia disponible 2.4 Modulación por ancho de pulso La modulación por ancho de pulso (PWM: Pulse-Width Modulation), es la técnica utilizada para variar la energía que se suministra a una carga, utilizando una combinación entre los estados “conexión” y “desconexión”, para obtener en la carga un promedio de voltaje con el cual se energiza. En esta aplicación, la variación de voltaje es la forma que se tiene para variar la velocidad a la que gira el motor PMBLDC, es entregado un promedio de voltaje de la fuente de alimentación con esta técnica ya que es eficiente y a la velocidad que se realiza la conmutación, el motor no observa los cambios entre conexión y desconexión. Además, el ancho de pulso modulado, es una de las técnicas más utilizadas en aplicaciones que requieren conversión de DC a AC, o mejor conocida como inversor, aplicaciones como son: Posicionamiento de motores Variadores de velocidad Filtros activos. El PWM, como se puede observar en la Figura 10, consiste en generar un periodo, que podrá ser repetitivo, por medio de dos pulsos rectangulares de tamaño definido por el diseñador, con la capacidad de estar en alto por un tiempo T1 o ciclo de trabajo activo, que será el tiempo que el motor estará conectado a la fuente alimentación y un estado bajo T2 que el motor lo que verá será la desconexión. Repitiendo este periodo por unidad de tiempo es lo que se conoce como tren de pulsos. Figura 10 Estructura del ancho de pulso modulado 34 Con esta técnica de conexión y desconexión es como se logra, que el motor experimente un promedio del voltaje de su fuente de alimentación, por ejemplo: Si el accionamiento del motor, se va a realizar con una fuente de alimentación que suministre 120 volts, pero se desea que el motor solo aprecie 72 volts, es decir el 60% del voltaje de la fuente, entonces el PWM que se debe generar debe tener como T1, el 60% del periodo y T2 el 40% del periodo restante. En esta aplicación, para regular el voltaje en la conmutación electrónica, es necesario generar tren de pulsos con forma senoidal, el cual se logra variando el ciclo de trabajo en el PWM de acuerdo al punto donde se encuentre el motor. Surge entonces la necesidad, de conocer como variar la amplitud del ciclo de trabajo en el periodo de un PWM, se puede explicar cómo hacerlo apoyados en la Figura 11, en la cual se observa que se requiere: Determinar la frecuencia de trabajo del ancho de pulso, es decir, determinar el tiempo que se desee dure un periodo del PWM, este parámetro una vez calculado e implementado, no es necesario modificarlo. El periodo que es el tamaño de un solo ancho de pulso, está determinado por la cantidad de bits con la que se cuente para crearlo, entre más bits se tengan, crece la resolución del PWM y por tanto se puede generar una senoide más apegada a la forma ideal. Una vez determinado el periodo, el único valor que se modifica es el tamaño del ciclo de trabajo activo T1, para lo cual se necesita un contador y un comparador. Tamaño del ciclo de trabajo (T1) Comparación Frecuencia PWM Periodo Figura 11 Diagrama a bloques para la variación del ciclo de trabajo en el PWM El contador realiza la cuenta de 0 hasta el valor máximo permisible en el periodo, y el T1 es el valor a comparar, cuando el contador este en cero el ancho de pulso se pone en activo alto generando el ciclo de trabajo activo, cuando el valor del contador 35 Capítulo 2. Fundamentos Teóricos es igual al valor de T1, el ancho de pulso sufre un cambio al estado bajo generando T2, y se mantendrá esta condición hasta que el contador vuelva a ser cero, es decir, cuando cruce por el máximo valor del periodo y tenga un reinicio. A manera de ejemplo, se desea un ciclo de trabajo del 25% a la frecuencia deseada de diez y seis segundos por cada periodo, y los bits con los que se cuenta para generarlo son cuatro, por tanto el contador tendrá como cuenta máxima, de cero a diez y seis valores, valor determinado por la cantidad de bits disponibles. En este caso particular, el periodo tendrá la duración en total de diez y seis segundos, con lo cual el mínimo T1 durará un segundo, de acuerdo a lo calculado en la Ecuación 3. Si se desea un ciclo de trabajo del 25%, implica que el PWM debe permanecer activo durante cuatro cuentas, que significan cuatro segundos, e inactivo durante las restantes doce. T1 mínimo = Duración del periodo 16 𝑠𝑒𝑔𝑢𝑛𝑑𝑜𝑠 = = 1 𝑠𝑒𝑔𝑢𝑛𝑑𝑜 𝐶𝑢𝑒𝑛𝑡𝑎 𝑚á𝑥𝑖𝑚𝑜 16 𝑣𝑎𝑙𝑜𝑟𝑒𝑠 ( 3) El comparador debe estar observando al contador, ya que mientras se lleve a cabo la cuenta de cero a cuatro, el ancho de pulso se pone en activo alto y en cuanto se dé la igualdad de cuatro el pulso debe pasarse a activo bajo y así se mantendrá de la cuenta cinco a la dieciséis, en cuanto se genere el reinicio del contador a cero, automáticamente el PWM será puesto a activo alto para generar el siguiente periodo, de esa forma reiterativamente se realizará este pulso hasta que el tamaño de T1 cambie. 2.5 Formación de la senoide empleando PWM En lugar de mantener igual el ancho de todos los pulsos, se hace variar el ancho de cada pulso en proporción con la amplitud de una onda senoidal, esta modulación es la que se suele usar en aplicaciones industriales. Se puede modificar el voltaje que recibe el motor variando el índice de modulación, se puede decir que el área de cada pulso corresponde, en forma aproximada, al área bajo la onda senoidal. [25] Para generar la senoide buscada en la conmutación, el PWM además de variar su amplitud debe ser capaz de modificar su forma, esto se logra por medio de la Ecuación 4, donde A es la amplitud y 𝜃 es la posición del rotor, se puede observar que la forma del PWM, es multiplicada por su amplitud, para generar un solo pulso contenedor de ambas funciones. 𝑃𝑊𝑀 𝑠𝑒𝑛𝑜𝑖𝑑𝑎𝑙 = 𝐴(𝑆𝑒𝑛 𝜃) ( 4) En la Figura 12, se observan los componentes requeridos para generar la función 𝑆𝑒𝑛 𝜃 en esta aplicación, la posición angular del motor tiene el papel fundamental 36 ya que dependiendo de su valor, la forma va a sufrir un cambio, generando un nuevo cálculo del seno. El cálculo del seno, debido a que el hardware de implementación solo cuenta con operaciones matemáticas básicas, se realiza con el algoritmo de computadora digital para rotación de coordenadas (CORDIC: COordinate Rotation DIgital Computer). La multiplicación que dará el dato final para la generación del PWM, se debe realizar en tiempo real, ya que en cuanto cambie la posición del rotor la forma debe ser ajustada inmediatamente. Por ende se requiere conocer la posición del rotor en todo momento, de aquí la necesidad de utilizar un sensor absoluto de retroalimentación. Figura 12 Diagrama a bloques para generar el PWM senoidal 2.5.1 El Algoritmo CORDIC La técnica del computado CORDIC fue desarrollada, especialmente para el uso en sistemas digitales operados en tiempo real, donde la mayoría de los cálculos implican intervalos, teniendo en memoria valores aunados a relaciones trigonométricas, se puede obtener una solución de ecuaciones más complejas, realizando transformaciones de coordenadas. El algoritmo original fue propuesto por Jack Volder en el año 1959. [26] El algoritmo CORDIC proporciona un método iterativo para rotar vectores ciertos ángulos determinados y se basa exclusivamente en sumas y desplazamientos, lo cual lo hace el algoritmo más eficaz para el hardware que se utilizará en esta aplicación. 37 Capítulo 2. Fundamentos Teóricos 2.6 Generación de senoide con ángulo de desfase El motor a trabajar es trifásico, por ende para poder realizar la conmutación senoidal, se debe considerar que las fases del motor se comportan como se muestra en la Figura 13, observando que si se tomará la fase B-A como referencia, la fase A-C está desfasada 120°, y la fase C-B está desfasada 240°. Por tanto existe el desfasamiento de 120° ente ellas. Además para dar una vuelta eléctrica se requieren seis pasos de conmutación, en cada paso de conmutación las fases deben contar con su propia amplitud y forma, lo cual genera que cada fase debe tener su propio cálculo en tiempo real de PWM. Figura 13 Vuelta eléctrica del motor PMBLDC y sus pasos de conmutación Tomando en consideración estos detalles, la Ecuación 4 debe calcularse por cada fase, además de sufrir un cambio para considerar el desfasamiento descrito, lo cual crea la Ecuación 5, en donde 𝜑 tomará el valor de cada desfasamiento. 𝑃𝑊𝑀 𝑠𝑒𝑛𝑜𝑖𝑑𝑎𝑙 = 𝐴(𝑆𝑒𝑛 𝜃 + 𝜑) ( 5) 2.7 Sensor de posición angular absoluto La retroalimentación del motor en este sistema, se realiza por medio del sensor “resolver”, el cual es un tipo de sensor de posición angular absoluto analógico, y trabaja a razón de la variación de conducción electromagnética. 38 La variación de electromagnetismo, así como la variación de la reactancia de un componente o circuito, ofrecen alternativas de medida a las disponibles en sensores resistivos. Muchas de ellas no requieren contacto físico con el sistema donde se va a medir, o bien tienen un efecto de carga mínima. En concreto, ofrecen soluciones mejores para mediciones de desplazamientos lineales y angulares, en el caso de tratar con materiales ferromagnéticos, y para las medidas humedad. Si en un transformador uno o varios de los devanados pueden desplazarse, linear o angularmente, respecto a los demás, variando el acoplamiento entre primario y secundario, es decir, la inductancia mutua entre ellos, también variará la amplitud de tensión inducida en los devanados. Los “resolvers” o “resolucionadores” son un tipo de transformador variable, con devanados dispuestos formando un ángulo de 90° en el estator y en el rotor. En los llamados generadores de seno y coseno, como el utilizado en esta aplicación mostrado en la Figura 14, hay un devanado en el rotor actuando de primario y dos devanados en el estator actuando de secundario. [27] Figura 14 Generador de seno y coseno. El rotor actúa de primario y los dos devanados del estator actúan de secundario Físicamente es un transformador rotatorio el cual para poder obtener lectura de posición del rotor, es necesario generar oscilaciones de referencia en el devanado primario del motor, y de acuerdo a las variaciones de amplitud que se muestren en la oscilación de los devanados secundarios, seno y coseno, se logra obtener la medición de posición e interpretación del actuar del motor, dirección y velocidad. 39 Capítulo 2. Fundamentos Teóricos 2.8 Interfaz de Potencia Para poder hacer la unión entre la lógica que se genere, con la planta del sistema, se requiere de una interfaz, denominada de potencia, la cual será encargada de servir de puente entre las señales lógicas que operan a bajo voltaje y el motor que opera a voltaje mayor. Los dispositivos utilizados para este fin, son los transistores bipolares de compuerta aislada (IGBT: Insulated Gate Bipolar Transistor), y con la unión de estos, seis en específico se genera el puente H trifásico, requerido para operar el motor PMBLDC de esta aplicación. 2.8.1 Puente H Con el puente H se realiza la energización y cambio de polaridad en las bobinas del estator, por lo que se utiliza como dispositivo de potencia para que el motor obtenga la energía para girar. 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 fuentes de energía diferentes. Recibe su nombre por la representación gráfica, que se le da como diagrama eléctrico. El puente H a utilizar en esta aplicación, es trifásico como el que se muestra en la Figura 15, debido a que el motor a utilizar es trifásico Figura 15 Puente H trifásico Los puentes H se pueden implementar con diferentes componentes electrónicos, que cumplan la función de interruptor, como el IGBT, con sus respectivas ventajas y desventajas. El PWM debe cumplir con ciertas características, para que pueda ser funcional en el control de motores, debido a los componentes que se utilizarán como puente, entre la etapa de control y la etapa de potencia del sistema. 40 Específicamente en esta aplicación se utilizarán IGBT´s, debido a sus condiciones de operación y velocidad de trabajo, que serán explicadas más adelante, además de que los componentes periféricos necesarios para la activación de los transistores; se requiere que el PWM cumpla con las siguientes características: La duración mínima no puede ser menor al tiempo de transición de apertura y cierre del IGBT. Dentro de la duración mínima se debe considerar el tiempo muerto, que existe en el puente H, para que los transistores de una misma rama no vayan a estar cerrados al mismo tiempo generando corto circuito. Contener la suficiente resolución en bits, para permitir al controlador amplia gama de valores de voltaje. El valor máximo del periodo debe ser saturado, ya que se debe considerar el tiempo que tarda el capacitor de encendido del IGBT, en cargar, de lo contrario el transistor no podrá saturarse. La frecuencia debe ajustarse a la velocidad de conmutación del transistor seleccionado. 2.8.2 Transistor bipolar de compuerta aislada (IGBT) El IGBT combina las ventajas de los transistores de efecto de campo (MOSFET) de poder y la potencia de los transistores bipolares (BJT), similares en su estructura también, como se muestra en la Figura 16, la entrada es la estructura de la compuerta de un MOSFET, y la salida es un transistor BJT; contrario al MOSFET de poder, este transistor no incluye el diodo parasito de recirculación, y es por eso que se requieren conectar diodos apropiados de recuperación rápida. [28] Figura 16 Circuito equivalente al IGBT El IGBT tiene las siguientes ventajas: 41 Capítulo 2. Fundamentos Teóricos Alta densidad de conducción de corriente y baja caída de voltaje en el estado activado, el IGBT tiene una caída de tensión muy baja en el estado cerrado, debido a la modulación de conductividad y la densidad de corriente en el estado activado es superior, en comparación con el MOSFET de potencia y transistor bipolar. Es posible un chip de tamaño más pequeño y de costo reducido. Consumo bajo de potencia y circuito de control simple debido a la estructura de compuerta MOS, el IGBT es fácil de ser controlado en comparación a los componentes controlados por corriente, como el BJT, en aplicaciones de alto voltaje y corriente. Amplía área de operación segura (SOA: Safe Operation Area), respecto a sus características de salida, el IGBT tiene la capacidad de conducción de corriente más alta comparado con el transistor bipolar. Su capacidad de bloqueo es excelente. Como desventajas tiene: Velocidad de conmutación menor a los 100 kHz, es inferior a los MOSFET de potencia, pero es superior a los BJT. Existe la posibilidad de cortocircuito en la estructura interna PNPN. En la Tabla 4, se muestra la comparativa entre los BJT, MOSFET e IGBT. Tabla 4 Comparativa del IGBT contra el BJT y el MOSFET Características Método Activación Circuito de control Impedancia en compuerta Consumo en la activación Velocidad de conmutación Frecuencia de operación SOA Voltaje de Saturación BJT Corriente Complejo Bajo MOSFET Voltaje Sencillo Alto IGBT Voltaje Sencillo Alto Alto Bajo Bajo Lento(µs) Rápido(ns) Medio Bajo(menor a 100KHz) Estrecho Bajo Rápido (menor a 1MHz) Amplio Alto Medio 42 Amplio Bajo 2.8.3 Capacitores de arranque Los capacitores de arranque son necesarios en la interfaz de potencia, debido a que en el puente H, los transistores de la parte superior mostrados en la Figura 17, no tienen referencia con el Negativo de la fuente, por ende no se tiene el voltaje para realizar el cierre de la compuerta. A este estado se le conoce como que el transistor esta flotado, de no existir los capacitores de arranque, se debería tener dos fuentes diferentes para activar los transistores, una fuente para los transistores inferiores y otra para los transistores superiores. Figura 17 Transistores superiores del puente H El circuito de los capacitores de arranque, funciona como se muestra en la Figura 18, cuando el pin Vs, tiene un voltaje menor al voltaje con el que se alimenta al accionador de transistores VDD, o es puesto a tierra, esto se da cuando el transistor de la parte inferior está cerrado y el transistor de la parte superior está abierto, el capacitor de arranque, se carga por medio de la resistencia y el diodo de arranque, con la energía suministrada por VDD. La energía que se almacenó en el capacitor de arranque, está prevista entre el punto VBS cuando el pin Vs es llevado a un alto voltaje, logrando así que la energía a suministrar en VBS este flotando al igual que el transistor superior, y el diodo de arranque estará en polarización inversa, bloqueando la tensión de regreso en dirección a la fuente VDD, esto se da cuando el transistor de abajo está abierto y el transistor de arriba está cerrado. [29] 43 Capítulo 2. Fundamentos Teóricos Figura 18 Funcionamiento del capacitor de arranque 2.8.4 Supresor de transitorios Los transitorios o transientes, como se muestra en la Figura 19, son definidos como subciclos de corta duración, menor a medio ciclo de una onda del sistema, con deformaciones de energía, de dos tipos, mayores que dos veces el pico RMS de voltaje, o menores a dos veces el pico RMS del voltaje suministrado. La conmutación de cargas eléctricas en el motor eléctrico, genera transitorios. Figura 19 Transitorio de voltaje 44 Los componentes electrónicos son sensibles a estos transientes, ya que tienen límites de voltaje de operación, por tanto necesitan estar protegidos de ambos transitorios repetitivos y aleatorios. [30] Un supresor de transitorios es un dispositivo electrónico que monitorea al voltaje, cuando detecta un pico de voltaje lo suprime disipándolo en calor, permitiendo a los circuitos electrónicos no percibirlos y por tanto no degradarlos. 2.8.5 Desenergizado de la bobina Para poder realizar un cambio de polaridad, en una bobina que acaba de ser utilizada, la bobina debe pasar primero por un proceso de desenergizado, no dar un camino seguro para el flujo de corriente mientras la energía en la bobina se hace cero, o los interruptores van a cambiar el giro del motor a una nueva dirección, lo que tendría como consecuencia la degradación del puente H. Un camino correcto para el desenergizado, como se muestra en la Figura 20, es a través de un diodo de recirculación en paralelo con el transistor, que cuando el transistor este conduciendo estén desactivados. Para mayor eficiencia, se deben conmutar los transistores, con la secuencia correspondiente al tipo de desenergizado. Figura 20 Diodos de recirculación en el puente H monofásico Existen dos tipos básicos de desenergizado de bobinas, el rápido y el lento, los nombres son en correlación con la velocidad en la que la corriente decae hasta llegar a cero. 45 Capítulo 2. Fundamentos Teóricos Durante el desenergizado rápido, como se muestra en la Figura 21, la corriente en la bobina decae a cero lo más rápido que sea posible, esto se logra alcanzando a deshabilitar los transistores que estaban en uso y habilitar los transistores contrarios, o permitiendo el flujo de corriente a través de los diodos de recirculación . Figura 21 Desenergizado rápido Durante el desenergizado lento, la corriente decae a cero más lento comparado con el modo rápido. Se logra deshabilitando los transistores superiores y activar todos los transistores de abajo, como se muestra en la Figura 22. [31] Figura 22 Desenergizado lento 46 2.9 Medio de implementación Para esta aplicación, se requiere generar hardware dedicado que sea capaz de procesar a la velocidad de cambio del motor, que permita implementar lógica digital en un espacio físico, permitiendo generar un integrado para la aplicación sin necesidad de fabricarlo. El dispositivo apto para realizar esta tarea, es el arreglo de compuertas programables en campo (FPGA: Field Programmable Gate Arrays) el cual son semiconductores que se basan en una matriz de bloques lógicos, conectados a través de las interconexiones programables. El FPGA puede ser reprogramado para la aplicación o funcionalidad deseado, después de haberlo fabricado. Esta característica distingue al FPGA de circuitos integrados de aplicación específica (ASIC), que se fabrican a medida para tareas específicas de diseño. Aunque los FPGA programables de una sola vez (OTP) están disponibles, los tipos dominantes son los de memoria estática de acceso aleatorio (SRAM: Static random-access memory) los cuales pueden ser reprogramados a medida que evoluciona el diseño. [32] [33] En esta aplicación se desarrolla, desde los bloques lógicos más básicos, es decir compuertas lógicas, operaciones aritméticas, operaciones lógicas, comparaciones, toma de decisiones y almacenamiento de datos. Cabe mencionar que en cuanto a tecnología digital, este tipo de dispositivos es lo más avanzado en este momento, así como el uso de lenguaje de descripción de hardware, (VHDL: Very High Speed Integrated Circuit Hardware Description Language). 2.10 Sistema de control Inicialmente se debe considerar que control, significa mantener una variable o varias variables en un valor de referencia ya sea de manera dinámica o en el estado estacionario del motor. Al usar la terminología sistema de control, se puede entender, como un arreglo de componentes físicos conectados de tal manera, que la unificación de los elementos puede comandar, dirigir o regular, a sí mismos en primera instancia, con lo que se obtendrá o realizarán alguna actividad controladora sobre otro componente. Los sistemas de control, se pueden clasificar de la siguiente manera: Sistemas de control de lazo abierto, mostrado en la Figura 23, en el cual la acción de control es independiente de la salida; es decir no tiene retroalimentación de la información. 47 Capítulo 2. Fundamentos Teóricos Figura 23 Lazo de control abierto Sistemas de control de lazo cerrado, véase Figura 24, en el cual la acción de control, tiene una dependencia con la variable de salida, puesto que esta información se compara con la señal de entrada por medio de retroalimentación. Figura 24 Lazo de control cerrado La retroalimentación, se encuentra únicamente en el sistema de control de lazo cerrado, la cual ingresa la información al sistema para realizar una comparación, entre la variable de entrada y la variable de salida, de tal manera que se establece un error, la existencia de este error no es óptimo para el sistema, se realiza la acción de control apropiada, para nulificarlo, en función de las variables de control. 2.10.1 Algoritmo de control PID El control PID (Proporcional Integral Derivativo), es un sistema de control de lazo cerrado, el cual se caracteriza por tener un sistema de retroalimentación, que calcula la desviación o error entre un valor medido y el valor de referencia, generalmente o en forma ideal el error debe de ser uno (1), en casos prácticos, solo en casos excepcionales se consigue el número uno por tal motivo, se aplica la acción correctiva que ajusta el proceso, realizando que la diferencia entre el error medido y el valor deseado tienda a uno. El control Proporcional Integral Derivativo es la solución ideal para sistemas de control que deseen corregir su respuesta tanto en el transitorio como en el régimen estacionario. Ofreciéndonos la gran libertad de acción al tener tres parámetros (Kp, Ki y Kd) con los que ajustar el lazo de control. 48 El control P.I.D., además, tiene la ventaja de ser un método probado y aplicado en muchos sistemas de control, por lo que existe abundante información y ejemplos de aplicación. El P.I.D. como su nombre lo indica, realiza un control proporcional + Integral + derivativo, lo cual significa que si bien tiene una acción proporcional al error entre la salida y el valor deseado, también puede corregir el error permanente y mejorar la respuesta en el transitorio. La ecuación típica se muestra en la Ecuación 6. 𝑦[𝑛] = 𝐾𝑝 𝑒[𝑡] + 𝐾𝑖 ∫ 𝑒(𝑡)𝑑𝑡 + 𝐾𝑑 𝑑(𝑒(𝑡))/𝑑𝑡 ( 6) Donde: Kp = Constante del control proporcional Kd = Constante del control diferencial Ki = Constante del control integral e[t]= error de posición (posición actual – posición anterior) El controlador más simple y efectivo que puede usarse es el control proporcional, que presenta una salida proporcional al error entre la salida deseada y la obtenida. La desventaja de este controlador es que a medida que el error disminuye, es decir cuando la salida tiende al valor deseado, pierde participación, ya que como el error tiende a cero la acción correctiva también tiende a cero, y no se llega nunca al valor deseado de salida. La acción Integral justamente corrige este defecto, elevando el tipo de sistema y eliminando el error en el régimen permanente. La acción derivativa mejora el transitorio y reduce el tiempo de establecimiento, el tiempo que tarda en llegar al valor deseado, o a un porcentaje del mismo. [34] 2.11 Sistema de control distribuido La sección de lógica de control total del sistema, se basa en un sistema de control distribuido (DCS) por sus en inglés: Distribution Control System, como el mostrado en la Figura 25, este sistema de control tiene la finalidad de controlar el proceso o planta en tiempo real, el cual es capaz de regular velocidad y aceleración en cada unidad de tiempo para llegar a la posición deseada; este control está compuesto por dos bloques principales los cuales son: el bloque supervisor y el bloque regulador. 49 Capítulo 2. Fundamentos Teóricos Figura 25 Control distribuido a bloques El bloque regulador lo realiza el algoritmo de control PID ya que es el que controla la posición, mientras que el bloque supervisor es el que controla la velocidad y aceleración. 2.12 Interfaz de usuario 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 en la PC, además de embeber en el FPGA la estructura de registros para el almacenamiento de datos, a través de los cuales se da la interacción. 2.12.1 Puerto de la PC El puerto de Entrada / Salida del PC, se constituye como el medio por el cual, el procesador principal (microprocesador) se comunica e interactúa con el FPGA. En la aplicación de este proyecto, se utiliza el puerto paralelo, que es capaz de transmitir ocho bits en un instante. El puerto paralelo originalmente fue diseñado para el uso de impresoras con tres direcciones físicas; sin embargo, es posible utilizarlo para aplicaciones como las de este proyecto, donde se requieren entradas y salidas digitales, para desempeñar tareas de transmisión de datos y protocolo, con las características siguientes: Puerto bidireccional.- Es capaz de transmitir y recibir datos de ocho bits. Es vigente.- Se puede conseguir en computadoras recientes. La velocidad.- Ronda entre los 50 a 150 kb por segundo [35], 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 operación: outport para la salida e inport para la entrada de datos. 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 50 siguiente manera: ocho bits de datos bidireccionales en la dirección 0x378 (dirección base), el bit cinco del puerto 0x37A se usa para su configuración: con cero es salida y con uno es entrada. Cinco bits de entrada en la dirección 0x379 (dirección base más uno) y cuatro bits de salida en la dirección 0x37A (dirección base más dos). 2.12.2 Registro Digital en FPGA El registro de datos, es un espacio físico dentro del hardware, donde se obtiene almacenamiento temporal, donde se almacenan los datos del sistema o configuraciones del usuario. Dado que la memoria y el desplazamiento de información son sus características básicas, los registros son circuitos secuenciales constituidos por flip flops, donde cada uno de ellos maneja un bit de la palabra binaria. Son muy populares los registros de 8 bits, ya que en los computadores con frecuencia manipulan bytes de información. Un registro de corrimiento básico es un conjunto de flip-flops, conectados de tal forma que los números binarios almacenados en él son desplazados de un flip-flop al siguiente con cada pulso de reloj aplicado. Existen dos formas de cargar un dato a los registros, de manera serial, es decir un bit a la vez, o la carga paralela, que es el ingreso de los datos al mismo tiempo en todos los flip flops. 51 Capítulo 3. Accionamiento del motor PMBLDC Capítulo 3. Accionamiento del motor PMBLDC 3.1 Introducción En este capítulo se describe el diseño y la implementación que se requiere para poder accionar un PMBLDC. En el motor PMBLDC se requiere de medir la posición del rotor en cada instante, para conocer los puntos de conmutación. Esta aplicación realiza la conversión de sensor “Resolver” a digital para poder procesar su posición dentro del hardware dedicado, definiendo una resolución de la posición a 10 bits, es decir 1024 posiciones de una vuelta del rotor, la cual es suficiente para lograr la tarea de accionarlo. Se muestra la lógica que se implementa para decodificar los puntos de conmutación, obteniendo experimentalmente la carta de conmutación del BLDC, para diseñar el decodificador para conmutar en modo trapezoidal y senoidal. Se modula el ancho de pulso, para poder variar la velocidad del motor, entregando valores intermedios de voltaje, desde cero hasta el máximo voltaje que pueda entregar la fuente de alimentación disponible, este ancho de pulso es el utilizado en el conmutador trapezoidal. Sin embargo, para lograr el conmutador senoidal, se genera el ancho de pulso con forma senoidal, de acuerdo al cálculo que en tiempo real se tenga como resultado del seno de la posición del rotor, de esta manera se logra entregar el voltaje y la corriente a las bobinas en forma senoidal y con el desfase de 120°, como lo requiere la teoría de conmutación senoidal. De igual manera, se muestra la lógica digital requerida para implementar el banco de registros dentro del FPGA, con la capacidad de extender su tamaño, tanto como lo requiera la aplicación, generando un hardware genérico para futuras aplicaciones. 52 3.2 Medición de la posición absoluta del rotor Como se mencionó en el capítulo anterior, se tiene el requerimiento de conocer de manera absoluta la posición del rotor, para lograr conmutar de forma senoidal y además poder dejar fijo al motor en una posición deseada, lo cual se consideró que la mejor opción es el sensor “Resolver”, pre ensamblado con el motor por el fabricante del PMBLDC. 3.2.1 Conversión de “Resolver” a digital El sensor “Resolver” al ser un sensor analógico, requiere de un proceso de conversión analógico digital, es decir proporcionar la posición en bits, por lo cual se utiliza el convertidor analógico-digital AD2S1210 de Analog Devices el cual tiene la capacidad de resolución en la conversión configurable entre 10 bits a 16 bits, con lo cual la vuelta mecánica del motor, puede ser dividida en 1024 partes como su mínima resolución o en su máxima resolución de 65,536 partes. La resolución de la conversión puede ser configurada por medio de las señales R0 y R1, de acuerdo a la Tabla 5. Tabla 5 Opciones de resolución del convertidor analógico-digital RES0 RES1 Resolución (Bits) Posición (Arc min) Velocidad (rps) 0 0 1 1 0 1 0 1 10 12 14 16 21.1 5.3 1.3 0.3 4.88 0.488 0.06 0.004 Este convertidor, al seleccionar su modo de operación, permite leer de él de manera paralela la posición angular en la que se encuentre el rotor o la velocidad a la que este se mueve, configurándolo por medio de lo pines A0 y A1, con la lógica de la Tabla 6. Tabla 6 Opciones de configuración operación ADS2S1210 A0 A1 Resultado 0 0 1 1 0 1 0 1 Modo normal – Medición de posición en la salida Modo normal – Medición de velocidad en la salida Reservado del sistema Modo configuración de registros La interfaz digital del convertidor funciona a través de registros, por lo cual para poder leer un dato de esté, es necesario estar en protocolo con mencionado registro, 53 Capítulo 3. Accionamiento del motor PMBLDC además de señal de reloj para la sincronía. El diagrama necesario para el protocolo se muestra en la Figura 26. Figura 26 Diagrama de tiempos para lectura paralela Inicialmente se debe mandar un valor bajo en la señal activa chip, para seleccionar como activo al convertidor del que se quiere leer , la señal de reloj es generada por el cristal del convertidor a la frecuencia de 10 MHz, posteriormente se requiere una señal para que el registro tome el valor de la posición en el rotor, lo que sería similar a una señal de carga registro, esta señal es etiquetada como “Muestra” y trabaja en activo bajo, esta señal debe tener una transición por cada dato que se quiera almacenar. La señal muestra, debe de estar oscilando, la frecuencia de esta oscilación es lo que llamaremos Frecuencia de Muestreo, para esta aplicación se decidió tener una frecuencia de muestreo de 3khz, por lo cual se estará tomando un nuevo valor de posición angular del rotor cada 333 µs un aproximado de 3,000 muestras por segundo. Se considera que esta velocidad es suficiente para no perder ni una sola posición aunque el motor este girando a su velocidad máxima, y no tendría sentido hacerla más rápida ya que pasarían muchas muestras sin que se perciba un cambio significativo. 54 Una vez que se capturó el valor de la posición para leerlo es necesario que la señal Leer tenga una transición de alto a bajo, con esto el valor de la posición estará disponible en el bus de datos listo para ser adquirido por el FPGA. Cabe mencionar que si se desea leer cada valor muestreado y no solo registrarlo, la señal de lectura debe de oscilar a la misma frecuencia de la señal de muestreo pero con un retardo de 608 ns como mínimo para que el dato que se muestrea ya se encuentre bien definido al leerlo, esto se logra utilizando la misma señal de muestreo con inversión. Las locaciones donde es aplicada la interfaz con el convertidor analógico-digital, se muestran en la Tabla 7. Tabla 7 Interfaz con el convertidor analógico-digital Señal D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 Pin FPGA L20 P20 M20 M18 L19 L18 K19 K20 K18 K17 H19 J18 G20 G19 F20 E20 Señal READ CHIPSET SAMPLE RES0 RES1 DIR EMULADO ENCODER A EMULADO ENCODER B Pin FPGA F18 F19 D22 E22 D20 D21 D18 E17 3.2.1 Generación de señales para leer convertidor Para generar las señales descritas anteriormente se utiliza el FPGA que se tiene dedicado para la aplicación, al FPGA se le da la capacidad de leer los 16 bits que es la resolución máxima del convertidor, sin embargo para controlar velocidad no es necesario tanta resolución. Se considera que es suficiente con utilizar la resolución de 10 bits la cual se configura por medio de Res0 y Res1, véase Tabla 5. En la Figura 27, se muestra 55 Capítulo 3. Accionamiento del motor PMBLDC el bloque que se generó para realizar el protocolo con el convertidor analógicodigital, en donde se tiene como entradas a las señales generales del sistema de reloj 50 MHz y de Borrar. Como salidas se tienen los configuradores de resolución Res0, Res1, la señal de activación del chip, y las señales de muestra y lectura. Figura 27 Bloque del protocolo con el convertidor analógico-digital Internamente se tiene que las señales Res0, Res1, y Activa chip, deben de estar asegurados a un valor lógico cero por lo cual se conectan por medio de un búfer a tierra. Las señales de muestra y Leer deben de tener la frecuencia de 3 kHz, para generarlas se hace uso de un contador de 16 bits, con la primitiva CB16CE, el cual con cada transición de reloj realizará una cuenta y con la capacidad de borrado asíncrono. En este caso el contador funcionará como un divisor de frecuencia ya que de acuerdo al bit que se tome de su salida tendrá diferente frecuencia, potencia de dos de la frecuencia del reloj de entrada, si para esta aplicación se requiere la frecuencia de 3 kHz, se debe dividir el reloj principal del sistema, que es de 50 MHz, si se realiza la división entre potencias de 2, tendremos la Tabla 8. Tabla 8 División de frecuencia Numero de división Potencia Frecuencia de salida (Hz) 1 2 3 4 5 2 4 8 16 32 56 25,000,000 12,500,000 6,250,000 3,125,000 1,562,500 6 7 8 9 10 11 12 13 14 64 128 256 512 1024 2048 4096 8192 16384 781,250 390,625 195,313 97,656 48,828 24,414 12,207 6,104 3,052 Al realizar las divisiones se puede determinar que hay que dividir la frecuencia del reloj catorces veces, para alcanzar el valor más cercano a 3 kHz, lo cual se logra tomando el bit número trece de la cuenta de la primitiva CB16CE. En la Figura 28, se muestra el esquemático, que genera las señales para poder obtener datos del convertidor. Figura 28 Esquema para obtener datos del convertidor 3.3 Registro de posición en FPGA Una vez obtenida la posición del rotor por medio del convertidor, se requiere registrarla dentro del FPGA, para lo cual se diseñó el bloque Registra posición mostrado en la Figura 29, en el cual se tienen cinco entradas: Resolver, en la que se ingresa el valor de posición proveniente del convertidor analógico-digital. R50Mhz, entrada del reloj principal del sistema. Borrar, entrada del reinicio general 57 Capítulo 3. Accionamiento del motor PMBLDC del sistema. Reg_posicion, entrada de la señal que realiza el almacenamiento de la posición. Frec_filtros, entrada de la frecuencia utilizada para filtrar señales; además de siete salidas. Figura 29 Bloque que se encarga de registrar la posición del rotor Como se puede observar en la Figura 30, la posición es registrada en dos ocasiones para tener el dato de la posición actual y la posición anterior, además como estos datos se desean tener visibles en la interfaz gráfica, se realiza el ajuste para de los 16 bits que salen del registro, se generen dos buses de 8 bits, esto necesario porque el banco de registros trabaja con registros de 8 bits. Un detalle más a considerar, es que la señal “cambio_pos” es conectada junto con la señal de borrado general, mediante la compuerta lógica OR, ya que se requiere que al generar el borrado general sea registra la última posición en la que se encuentre el motor, de lo contrario el sistema no tendría un valor inicial con el cual generar nuevos valores de cálculo para la conmutación y el motor no podría salir del reposo por sí solo. 58 Figura 30 Diagrama de registro de posición 3.3.1 Filtro Digital Sin embargo, como los datos a registrar son señales provenientes del exterior, no es sencillo el registro del valor de posición, como primera necesidad se debe filtrar para evitar lecturas erróneas causadas por ruido. Ya que si el ruido afecta el dato equivaldría a leer una posición errónea del motor, que afectaría el procesamiento del sistema en su totalidad. El funcionamiento del filtro que se diseñó, parte de la primicia de que el valor que se va a obtener a su salida es porque el dato de entrada debe de tener cierta duración y no ser solo un pico transitorio, duración que es configurable. Como bloque el filtro, véase siguiente Figura 31, se representa por tener dos entradas, llamadas reloj donde entrará la frecuencia de filtrado, en la entrada “ent” se ingresa la señal que se desea filtrar, y en la salida se obtiene la señal que se desea sin que el ruido haya afectado. 59 Capítulo 3. Accionamiento del motor PMBLDC Figura 31 Bloque del filtro digital Cabe mencionar que el reloj que se utiliza para los filtros, no puede ser el de 50 MHz del sistema, ya que el tiempo de duración de la señal a filtrar sería muy corto y podría seguir dejando entrar al ruido, por otra parte no puede ser una frecuencia muy baja, porque se podría perder el dato que se intenta filtrar, se debe buscar la frecuencia apta para el filtrado. Para esta aplicación se utiliza un filtro digital con una frecuencia de corte de 3.1 MHz, ya que se tuvo el problema que al filtrar con menor frecuencia los datos a registrar de posición se perdían Internamente el esquema que realiza el filtrado, mostrado en la siguiente Figura 32, consta de tres flip-flop tipo D, conectado en cascada y a la misma frecuencia de operación, la salida individual de cada filtro es conectada a una compuerta OR de tres entradas, con esto lo que se busca es que la señal filtrada tenga un valor lógico cero con una duración mínima de tres ciclos de reloj de la frecuencia de filtrado, de lo contrario la señal de salida no cambiará. Figura 32 Esquema del filtro digital De esta manera se filtran las señales externas que se pretenden ingresar al FPGA, para el caso de la posición del rotor, se realiza el acoplamiento de 16 filtros, debido a que se utiliza un filtro por cada bit que se desea ingresar al sistema, en el caso de la posición del rotor, el FPGA tiene la capacidad de capturar la resolución máxima del convertidor analógico-digital. Quedando un bloque como el mostrado en la Figura 33, a la entrada ingresan los 16 bits y la frecuencia de filtrado, y a la salida 60 se obtienen las 16 señales sin que las haya afectado el ruido, se puede considerar una posición efectiva del rotor lista para poder ser registrada. Figura 33 Filtro para 16 bits Una vez que se filtró el dato de posición, se registra para tener un valor fijo por un tiempo, con el que se realiza el procesamiento del sistema. Se utiliza el registro de 16 bits, con carga síncrona obtenido con la primitiva CB16CLE que se muestra en la Figura 34. Figura 34 Primitiva CB16CLE Como se puede observar se tiene: La entrada de 16 bits, donde se ingresa el dato de la posición a registrar, La señal “L” para cargar el dato, funciona con activo en alto, para esta acción de registrar posición, se deja fija a un valor lógico alto a través de Vmas, por lo tanto se registrará un nuevo valor cada vez que se presente un flanco de subida del reloj en la señal “C”. La señal de “CE” se fija a un valor lógico cero a través de Tierra, ya que no se requiere en esta ocasión de la función de contador de la primitiva, de lo contrario se modificará el valor que se ingresa. La señal “CLR” que es la que reinicia a “0000000000000000” la salida del registro es conectada a la señal de Borrado general del sistema. Las señales CEO y TC no son utilizadas. 61 Capítulo 3. Accionamiento del motor PMBLDC 3.3.2 Señal para registro de posición Lo interesante y punto fundamental en el registro de posición, es determinar cuál es la mejor señal de reloj para esta primitiva, pues bien, se pensaría que lo mejor es tomar la frecuencia de muestreo que es de 3.052 kHz, para que cada vez que tome una nueva muestra sea registrada, sin embargo esta no es la indicada ya que se podría estar registrando el mismo valor varias veces dependiendo de la velocidad de giro o estando detenido el motor, lo cual no es funcional, lo que se requiere es registrar cuando exista un cambio de posición, esto garantiza que el dato que entra es solo una posición más de la que estaba anteriormente, por ejemplo si se encuentra registrado el valor de 581 el siguiente valor registrado será 580 o 582 dependiendo de la dirección en que gire el motor. Para generar la señal de reloj de este registro, se diseñó un bloque que detecte el cambio de posición, mostrado en la figura 35, el cual cuenta con la entrada de 16 bits de la posición obtenida del resolver después de ser filtrada, en otra entrada se ingresa la señal de reloj del sistema de 50 MHz y a la salida se obtiene un solo bit en activo bajo el cual tendrá una transición de 1 a 0 cada vez que la posición del rotor se modifique. Figura 35 Bloque de detección de cambio de posición Dentro del bloque “Detecta_cambio_16” se tienen 32 monoestables digitales, de los cuales 16 observan que el bit haya tenido un flanco de subida y los otros 16 observan que el bit haya experimentado un flanco de bajada, la salida de los 32 monoestables se unen a través de la operación lógica OR, para garantizar que con un bit que cambie, será suficiente para determinar que la posición cambio y dar el pulso de reloj para registrarla, a la salida de esta OR se conecta un inversor para que el reloj funcione en activo bajo. Quedando el circuito como se muestra en la Figura 36. 62 Figura 36 Circuito para la detección de cambio de posición 63 Capítulo 3. Accionamiento del motor PMBLDC 3.3.3. Monoestable digital Para entender lo que realiza el circuito de la señal para registro posición, hay que conocer el funcionamiento del bloque monoestable digital, mostrado en la Figura 37, que a su entrada tiene la señal a monitorear, la señal de reloj y a su salida el pulso monoestable que se genera. Figura 37 Monoestable Digital El principio de funcionamiento, mostrado en la Figura 38, es cuando la señal que es monitoreada tiene un flanco de subida es decir, el cambio de cero a uno, el flip-flop “FDC” pone a la salida “Q” el valor que se tenga en “D”, que en este caso está amarrado al valor lógico alto, debido a que su señal de reloj “C” tuvo una transición; al poner “Q” en uno, la salida del monoestable se pone a uno de igual forma y se activa el conteo en la primitiva CB8CE a la frecuencia del reloj del sistema, en cuanto llega a “01000000” la cuenta, se reinicia al contador y a “FDC”, provocando que la salida del monoestable se vuelva cero, logrando así generar un pulso con duración preestablecida al detectar un cambio en la señal a monitorear. Figura 38 Diagrama del monoestable digital 64 3.4 Encoder Emulado Del convertidor analógico-digital, se pueden obtener las sseñales de un encoder de forma simulada, el emulador propio del convertidor entrega tres señales: “A”, “B” y “Dirección”. Esta emulación es utilizada para generar el paso y dirección del controlador PID, para lo cual se generó el bloque “encoder” mostrado en la Figura 39, el cual tiene como entradas las tres señales emuladas, la frecuencia de los filtros digitales y el reloj general del sistema, además como salida el paso y la dirección que se obtienen de las señales del encoder. Figura 39 Bloque de nombre "encoder" Internamente como se muestra en la Figura 40, las señales provenientes del exterior son filtradas para ser ingresadas al multiplicador de encoder, el cual tiene como función multiplicar en cuatro la resolución de encoder que se tenga, y generar las señales que utiliza el controlador PID. Figura 40 Diagrama del bloque denominado "encoder" 65 Capítulo 3. Accionamiento del motor PMBLDC 3.4.1 Multiplicador de encoder Tradicionalmente en el encoder, la señal “A” es utilizada para conocer el desplazamiento en cuentas del rotor, y la señal “B” es utilizada para conocer la dirección de giro, como se observa en la Figura 41, en cada flanco de subida de la señal “A” la cuenta de posiciones se incrementa en 1, y si el flanco de “B” inmediato al flanco ascendente de “A”, es de subida el giro se está dando a la derecha, de lo contrario, si se da un flanco en “B” de bajada se está girando a la izquierda; sin embargo, para esta aplicación la mezcla de ambas es utilizada para conocer desplazamiento y dirección. Figura 41 Funcionamiento general del encoder incremental El multiplicador de encoder tiene como finalidad, multiplicar cuatro veces la señal “A”, como ejemplo, supongamos que el desplazamiento total de un encoder, es de 250 cuentas por vuelta mecánica, al utilizar “A” y “B” para conocer desplazamiento se puede multiplicar por cuatro esta resolución, llegando a tener 1000 posiciones por vuelta mecánica. El funcionamiento del multiplicador se basa en que cada flanco ya sea de subida o de bajada, en cualquiera de las dos señales será contado como una cuenta de desplazamiento. Para identificar la dirección de giro, se debe de tener en cuenta Figura 42, donde se observa, que para conocer dirección se debe contar con el valor de “A” y “B” en el estado actual y uno anterior, con la finalidad de tener secuencias de valores identificables, para cada sentido. Figura 42 Secuencias para identificar giro en el multiplicador de encoder 66 De la Figura 42, se desprende el diagrama de estados mostrado en la Figura 43, que muestra la secuencia posible, de acuerdo a los niveles de ambas señales para identificar la dirección. Figura 43 Diagrama de estados para conocer dirección de giro Para implementar el multiplicador, se utiliza el diagrama mostrado en la Figura 44, donde para multiplicar el desplazamiento, se tienen las dos señales interconectadas para detectar cambio y generar pulsos de salida mediante la compuerta XOR, y dos monoestables digitales monitoreando a esta compuerta, uno para los cambios en flanco de subida y otro con su entrada negada, para los cambios en flanco de bajada. Los monoestables son interconectados mediante la compuerta OR, por ende con un cambio que exista en cualquiera de los dos monoestables, se tendrá una señal lógica en valor alto a la salida de la compuerta, esta señal es invertida para generar un retardo, con finalidad de esperar, a que el valor que se va a tomar como bueno, este establecido, garantizando que se toma el valor un instante después de que esté cambió, este último paso se hace dos veces para garantizar, que al pulso que se utilizará como paso en el controlador, no tenga valores erróneos o transitorios. 67 Capítulo 3. Accionamiento del motor PMBLDC Figura 44 Diagrama del multiplicador de encoder Para obtener la dirección en la que gira el motor, se implementó en los dos flip-flop “FD”, el registro de la posición anterior, para que mediante compuertas AND se realice la comparación entre el valor actual y el anterior, por último la salida es registrada para evitar que el controlador observe el cambio de dirección en transición, logrando obtener que para giro en sentido horario el valor registrado de dirección es “1” y para giro a la izquierda e valor es “0”. 68 3.5 Generación de PWM En la Figura 45, se muestra el diseño a bloques para generar el PWM, a utilizar en la conmutación de los transistores. Figura 45 Diseño a bloques del PWM Como se puede observar para generar el periodo del PWM, se hace uso de un contador, que va a tener la capacidad de acuerdo a la finura que se requiera en los anchos de pulso, para esta aplicación en el modo trapezoidal, se genera el contador a 8 bits, por ende se tendrá la cuenta de 0 – 255, dando el conteo total de 256 valores. En cada pulso de reloj el contador es incrementado en 1, cuando llega a “11111111”, se genera un pulso que activa el preset de un flip flop, poniendo la salida al valor lógico alto, dando inicio a un nuevo periodo, y a su vez permite el ingreso de un nuevo valor para el ciclo de trabajo T1, a comparar. La función del comparador, es monitorear que el valor del contador y el valor del ciclo de trabajo, sean iguales, en cuanto se da esta condición se genera un pulso que resetea al flip flop, haciendo que la salida tome un valor lógico cero y se mantenga así hasta el final del periodo, que es cuando el contador termina el conteo. Los componentes del comparador, contador y flip flop, son implementados en el bloque “pwm_trap”, Figura 46, que cuenta con la entrada “ck” donde se ingresa la frecuencia del contador, “t1” donde se ingresa el ciclo de trabajo a 8 bits, “borrar” donde se ingresa la señal de borrado general del sistema, y la salida “sal” de donde se obtiene el PWM para la conmutación trapezoidal. 69 Capítulo 3. Accionamiento del motor PMBLDC Figura 46 Bloque pwm_trap La funcionalidad de este bloque se puede observar a detalle en la Figura 47. Figura 47 Funcionamiento del diseño de PWM A manera de ejemplo, supongamos que t1 tiene el valor de 10, el contador acaba de pasar por 255 por ende el PWM se encuentra en el valor lógico alto, en cuanto el contador tenga un valor de 10, inmediatamente el ancho de pulso cambiará al valor lógico bajo, y se mantendrá así durante las siguientes 245 cuentas que es cuando el contador volverá a poner en alto a la salida y se permitirá el cambio de valor en t1. El VHDL, que muestra la lógica con la que se implementa el bloque “pwm_trap”, se muestra en la Figura 48. 70 Figura 48 Implementación del bloque pwm_trap La frecuencia a la que se realiza el conteo, debe estar generada en base a la frecuencia de salida deseada en el ancho de pulso, que en esta aplicación se pretende, generar 18 kHz, frecuencia elegida por experimentación, ya que entre más cercanos a la frecuencia de 20 kHz, se entra en la frecuencia no audible para el oído humano y así tener un sistema bajo en ruido en la conmutación. Para generar la frecuencia de conteo, se implementó el divisor de frecuencia mostrado en la Figura 49, el cual tiene a su entrada la frecuencia general del sistema de 50 MHz, la señal de borrado general y el valor de división fija calculada para lograr la frecuencia de 18 kHz. Figura 49 Bloque para dividir frecuencia del PWM, " Div_Frec" 71 Capítulo 3. Accionamiento del motor PMBLDC Internamente, como se muestra en la Figura 50, se realiza un proceso síncrono donde la mayor jerarquía la tiene la señal borrar, que en cuanto esta sea un valor lógico alto, la señal “cuenta” será cero, generando que la salida del divisor sea uno, de lo contrario en cada pulso de reloj, “cuenta”, tendrá un decremento en 1, hasta llegar a cero, en cuanto se de esta condición la “cuenta” podrá recibir un nuevo valor de división. Por otra parte de manera asíncrona a la señal de reloj, cada vez que “cuenta” tenga un valor igual a cero, la salida del divisor de frecuencia tendrá un valor lógico alto y cuando sea cualquier otro valor la salida será cero. Figura 50 Implementación del Divisor de frecuencia Para determinar el número de divisiones, que se tiene que realizar a la frecuencia del sistema, se utiliza la Ecuación 7, donde se debe de tener en cuenta el número de bits que tendrá el PWM del sistema, para esta aplicación el PWM trapezoidal, es de 8 bits por ende el periodo del PWM podrá ser dividido en 256 partes iguales, como se mencionó con anterioridad. 72 𝐷𝑖𝑣𝑖𝑠𝑖𝑜𝑛𝑒𝑠 = 𝐹𝑟𝑒𝑐𝑢𝑒𝑛𝑐𝑖𝑎 𝑟𝑒𝑙𝑜𝑗 𝑑𝑒𝑙 𝑠𝑖𝑠𝑡𝑒𝑚𝑎 ( 7) (𝐹𝑟𝑒𝑐𝑢𝑒𝑛𝑐𝑖𝑎 𝑑𝑒𝑠𝑒𝑎𝑑𝑎) (𝐶𝑜𝑛𝑡𝑒𝑜 𝑚á𝑥𝑖𝑚𝑜 𝑒𝑛 𝑙𝑜𝑠 𝑏𝑖𝑡𝑠 𝑑𝑖𝑠𝑝𝑜𝑛𝑖𝑏𝑙𝑒𝑠 ) El valor fijo de división debe ser calculado de acuerdo a la frecuencia general que se tenga en cada sistema, en el caso específico de esta aplicación, al contar con reloj de 50 MHz si esta es dividida 11 veces, como se observa en el cálculo de la Ecuación 8, se logra aproximarse a los 18 KHz esperados para el transistor. 𝐷𝑖𝑣𝑖𝑠𝑖𝑜𝑛𝑒𝑠 = 50 𝑀𝐻𝑧 = 10.85 ≈ 11 𝑑𝑖𝑣𝑖𝑠𝑖𝑜𝑛𝑒𝑠 (18 𝑘𝐻𝑧) (256) ( 8) El ciclo de trabajo que se ingresa en el valor t1, debe estar previamente limitado en valores que aseguren, no tener al transistor trabajando en su zona activa y garantizar el corte y saturación del mismo, para lo cual se generó el bloque “limites conmutar”, mostrado en la Figura 51, que tiene como entrada la amplitud deseada y como salida la amplitud limitada. Figura 51 Bloque "Limites_conmutar" Dentro del bloque “Limites_conmutar”, véase Figura 52, se tiene que el PWM más pequeño que se puede entregar a los transistores es de 5 cuentas de los 256 posibles, de ser menor el ciclo de trabajo se vuelve cero, en contra parte el valor más grande que se puede entregar es de 241, de ser más grande el ciclo de trabajo se satura en 240, cualquier otro valor dentro de estos rangos se le permite el paso hacia los transistores sin realizar modificación. 73 Capítulo 3. Accionamiento del motor PMBLDC Figura 52 Implementación de la limitación del ciclo trabajo Como se puede observar se tiene una señal llamada “compensa”, que tiene la finalidad de eliminar el tiempo que recorta el chip IR2132, por cuestiones de tiempo muerto, que el chip necesita para garantizar que dos transistores de una misma rama no estén cerrados al mismo tiempo, este problema será detallado más adelante. Lo que se genera dentro de los límites del ciclo de trabajo, es que al ciclo de trabajo deseado se le suman tres cuentas, que es aproximadamente el recorte en cuentas que nos genera el chip. En la Figura 53, se muestra el diagrama completo de la implementación del PWM. 74 Figura 53 Diagrama que genera el PWM para el sistema 3.6 Decodificador de conmutación Del sensor de retroalimentación “Resolver” se logra obtener la posición absoluta del rotor, como se explicó con anterioridad, sin embargo, no se obtienen directamente las señales de los lugares específicos para realizar el cambio de polaridad en las bobinas. Por ende en base a la información proporcionada por el sensor, se debe interpretar para decodificar estos puntos. 3.6.1 Carta de conmutación del motor PMBLDC Parker BE341J El motor a utilizar en esta aplicación es de la serie de servomotores “BE” del fabricante Parker, véase anexo 1, cabe mencionar que en la información que proporciona el fabricante, no está incluida la tabla de conmutación de acuerdo a los valores que genera el sensor que trae incluido. Se realizó la obtención de la tabla mediante el siguiente método: El motor cuenta con los tres cables para conectar las bobinas, delimitados por los colores: rojo, blanco y negro. Sin embargo, no se menciona cual es la fase A, la fase B o la fase C, esto se determina de acuerdo a como el conmutador, lo tenga preestablecido para la decodificación. La vuelta eléctrica requiere de seis pasos de conmutación, se buscan conectando las fases en base al orden mostrado en la Figura 54. Se conectaron las fases al voltaje de 5 volts, generando que el rotor girará hasta la posición en que se mantuviera estático, asimilando que en este punto es cuando los polos del imán y el polo generado en la bobina habían encontrado el equilibrio, esta conexión solo era momentánea, ya que al mantenerse estático con energía en las bobinas, se corre el riesgo de dañar a los embobinados del motor. 75 Capítulo 3. Accionamiento del motor PMBLDC Se capturo la posición reportada por el sensor de retroalimentación, y se procedía a conectar las fases en el orden que seguía. Figura 54 Orden considerado para obtener la carta de conmutación En la Tabla 9, se muestra la carta de conmutación obtenida, con la resolución de 10 bits en el convertidor analógico-digital, determinando para el sistema, que el cable rojo es la fase A, el cable blanco es la fase B y el cable negro es la fase C, se muestra la conversión de binario a decimal para mayor comprensión. Cabe mencionar, que el método de obtención de la carta de conmutación, se realizó repetidamente en tres ocasiones, obteniendo los mismos datos, con lo que se consideró que son confiables estos para determinar los puntos de conmutación. Con la experimentación se consiguió observar, que para dar una vuelta mecánica el rotor, son requeridas cuatro vueltas eléctricas, determinadas en los siguientes rangos: 1. 2. 3. 4. Del valor 171 al 982 Del valor 938 al 725 Del valor 680 al 467 Del valor 426 al 211 76 Tabla 9 Carta de conmutación BLDC BE341J A(Rojo) POSITIVO NEGATIVO NEGATIVO POSITIVO POSITIVO NEGATIVO NEGATIVO POSITIVO POSITIVO NEGATIVO NEGATIVO POSITIVO POSITIVO NEGATIVO NEGATIVO POSITIVO FASES B(Blanco) NEGATIVO NEGATIVO POSITIVO POSITIVO NEGATIVO NEGATIVO POSITIVO POSITIVO NEGATIVO NEGATIVO POSITIVO POSITIVO NEGATIVO NEGATIVO POSITIVO POSITIVO C(Negro) POSITIVO POSITIVO NEGATIVO NEGATIVO POSITIVO POSITIVO NEGATIVO NEGATIVO POSITIVO POSITIVO NEGATIVO NEGATIVO POSITIVO POSITIVO NEGATIVO NEGATIVO Datos medidos con resolución a 1024 valores (10bits) 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 0 0 1 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 1 1 1 0 1 1 0 1 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 1 0 0 1 1 0 1 1 0 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 1 1 1 0 1 1 0 1 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 1 0 0 1 1 0 1 1 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 1 1 0 1 1 1 1 1 Valor en Decimal 171 126 84 43 1022 982 938 895 854 808 768 725 680 641 596 553 513 467 426 385 339 299 255 211 3.6.2 Diseño el decodificador de conmutación De la carta de conmutación obtenida, se logra interpretar lo mostrado en la Tabla 10, en promedio se tienen que dar 42.6 cuentas para que la polaridad en las bobinas necesite ser cambiada. Como no se puede realizar el cambio de polaridad en las 42.6 cuentas exactas, debido a que del sensor no se pueden obtener posiciones fraccionarias, se consideró que la mejor manera para manejar el cambio de polaridad, era en algunas ocasiones hacerlo cada 42 cuentas y en otras cada 43 cuentas, interpolando para 77 Capítulo 3. Accionamiento del motor PMBLDC encontrar la combinación que generará el menor error posible con respecto a la tabla de conmutación de la Tabla 9. Tabla 10 Número de cuentas en las que se debe generar el cambio de polaridad Valor medido Diferencia Diferencia Valor medido (Vant - Vactual) 171 126 84 43 1022 982 938 895 40 45 42 41 45 40 44 43 Valor medido (Vant - Vactual) 854 41 808 46 768 40 725 43 680 45 641 39 596 45 553 43 En promedio la diferencia = 42.66 cuentas Diferencia (Vant - Vactual) 513 467 426 385 339 299 255 211 40 46 41 41 46 40 44 44 La interpolación más adecuada que se encontró es la mostrada en la Tabla 11, con su respectiva conexión de las fases, como se puede observar el error más grande que se tiene es de 2 cuentas. 78 79 Valor para conmutar (decimal) 42 85 127 170 212 255 298 340 383 426 468 511 553 596 639 681 724 767 809 852 895 938 981 1023 Rango de suma 42 43 42 43 42 43 43 42 43 43 42 43 42 43 43 42 43 43 42 43 43 43 43 42 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 0 1 0 0 1 0 0 1 0 0 1 1 0 1 0 1 1 0 0 1 0 0 1 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 Tabla para conmutar (binario) 43 84 126 171 211 255 299 339 385 426 467 513 553 596 641 680 725 768 808 854 895 938 982 1022 Valor Medido (decimal) 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0 1 1 1 0 1 1 0 1 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 1 0 1 1 1 0 1 1 0 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 1 0 1 1 1 0 1 1 0 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 1 1 1 0 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 Valor medido (binario) Tabla 11 Rangos para conmutar 1 0 0 1 1 1 1 1 1 0 1 1 1 0 1 0 1 0 0 0 1 0 0 0 1 1 1 1 1 0 1 1 2 0 1 2 0 0 2 1 1 1 1 2 0 0 1 1 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 Error AH (medido vs calculado) 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 AL 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 BH 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 BL 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 CH 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 CL 4 3 2 1 6 5 4 3 2 1 6 5 4 3 2 1 6 5 4 3 2 1 6 5 No. Conmu tación Capítulo 3. Accionamiento del motor PMBLDC Se debe conocer que al desear hacer girar al motor, no se le asigna la conmutación inmediata al rango donde se encuentra, por ejemplo, si está en una posición dentro del rango 85-126 y se quiere un giro a la izquierda no se la da a los transistores la combinación 000110 que es la correspondiente a la conmutación 2 B en bajo y C en alto, se le da la siguiente que es 100100 correspondiente a la conmutación 1. De lo contrario, cuando se experimentó dando el mismo valor al correspondiente en el rango, el motor giro pero con muchas inconsistencias generando muchas vibraciones en el motor y el puente h se calentaba mucho. Se concluye que al compararlo con un sensor Hall, todo el rango seria como la presencia de un valor (sea uno o cero) y en los Hall se le da la siguiente conmutación no el filo donde terminaría su observación (rango). Con esto en mente, se desarrolló la Tabla 12, donde se determinan las conmutaciones correspondientes al sentido de giro deseado, dependiendo del rango donde se encuentre, la posición leída del sensor en el estado actual; mencionada tabla solo representa a una vuelta eléctrica de las cuatro necesarias, basta con repetirla cuatro veces haciendo el incremento de rangos. Tabla 12 Conmutación diseñada para el sistema Rangos de conmutación 0-41 42-84 85-126 127-169 170-211 212-254 Conmutación correspondiente para giro a la izquierda 010010 000110 100100 100001 001001 011000 Conmutación correspondiente para giro a la derecha 100001 001001 011000 010010 000110 100100 3.6.3 Implementación del decodificador de conmutación Para implementar el diseño del decodificador, se generó el bloque que se mostrado en la Figura 55, donde como entradas se tiene la dirección deseada de giro, y la posición del rotor a 10 bits, y como salidas se tienen los pulsos individuales para cada uno de los seis transistores del puente H. 80 Figura 55 Bloque del decodificador de conmutación Internamente se utiliza VHDL para generarlo, véase la Figura 56, de inicio se hace el ajuste, para unir en una sola señal la dirección deseada, con la posición del rotor, en la señal “Resolver” que es de 11 bits, con la finalidad de realizar la selección de conmutación con una sola variable, en el bit más significativo se introduce el valor de la dirección deseada, si es 1 el giro es hacia la izquierda, si es 0 el giro es hacia la derecha; en los bits 9 a 0, es ingresada la posición del rotor. Con la variable “Resolver” conteniendo la información en una sola señal, se realiza el proceso de selección de conmutación de acuerdo al giro deseado y al rango del estado actual. Básicamente se tienen doce condiciones a elegir, ya que existen seis posibles conmutaciones cuando se gira a la izquierda y seis conmutaciones más cuando se gira a la derecha, dependiendo del rango en que se encuentre la posición en el estado actual, se asigna a la variable “Fases” el valor de conmutación que le corresponde de acuerdo a la Tabla 12. Por último de forma combinatoria, la señal “Fases”, es dividida en bits individuales para cada salida de los seis transistores. 81 Capítulo 3. Accionamiento del motor PMBLDC Figura 56 Implementación del decodificador de conmutación 82 3.7 Conmutador Trapezoidal Para realizar el conmutador trapezoidal se hace la unión del decodificador de conmutación con el generador de PWM, mediante compuertas AND, como se muestra en la Figura 57, se utiliza una compuerta por cada transistor, la función que realiza es, cuando el decodificador selecciona a un transistor como activado, la señal de activación de este sea troceada dependiendo de los valores que el generador de PWM tenga, y cuando el decodificador desactive el transistor el troceado del PWM no llegue a él. Figura 57 Diagrama del Conmutador Trapezoidal A manera de ejemplo, supóngase que se está dentro del rango 255 – 297 y se desea girar hacia la izquierda, en este caso el decodificador va a tener la combinación a su salida “010010”, que significa que el transistor de la fase A bajo y el transistor de la fase C alto deben estar activados, todos los demás transistores deben estar desactivados. 83 Capítulo 3. Accionamiento del motor PMBLDC Al salir a las compuertas, las únicas que tendrán a su salida valores de activación serán las correspondientes “AL” y “CH”, todas las demás están desactivadas debido a que el cero que manda el decodificador a ellas, congela su salida a cero, que es el valor de desactivación de los transistores, las dos únicas compuertas que siguen trabajando, a su salida no se observará el valor lógico alto de manera fija, lo que se observará será el troceado que esté realizando el PWM. 3.8 Generación del PWM senoidal Para generar el PWM senoidal, como se mencionó en el capítulo anterior se tiene que calcular en tiempo real, en base a la Ecuación 5, en la Figura 58 se muestra a bloques, el diseño que se realizó para cumplir con mencionada función. Donde por un lado se calcula la forma del PWM, y por otra entrada se tiene la amplitud del PWM, unidos en sincronía por medio de la multiplicación para entregar el valor con amplitud y forma al generador de PWM. Figura 58 Diagrama a bloques del diseño del PWM senoidal 3.8.1 Posición Angular Para obtener la posición angular con la que PWM obtendrá su forma, no está dada solo por el valor de posición del rotor multiplicada por el valor de incremento angular como se pensaba en un inicio. En este instante es donde se debe sumar la fase correspondiente a la bobina, para que el cálculo del seno sea correspondiente con el desfasamiento de estas en el motor. Además, como se realiza en la conmutación trapezoidal, las bobinas deben tener la polaridad del siguiente paso de conmutación, no el de la conmutación en estado 84 actual, sin embargo, en el PWM senoidal además de dar la polaridad del paso de conmutación siguiente, se debe dar la forma de la siguiente conmutación. Para ejemplificar obsérvese la Figura 59, supóngase que el rotor se encuentra en alguna posición dentro del rango de 255-297 posiciones, y se desea girar en sentido horario, para lograr conmutar, a la posición se le debe sumar 43 posiciones para que se le asigne la forma de conmutación del rango 298-339, en caso contrario que se deseará girar en sentido antihorario se le deben sumar 43 posiciones para que el PWM tome la forma del rango 212-254. Figura 59 Gráfica de conmutación senoidal Hasta este momento, se tendría el valor para calcular que tanto incremento angular se debe generar en el PWM, cabe mencionar que el incremento en grados de la senoide no es grado a grado o de dos en dos grados, el avance en grados depende de la resolución que se tenga del sensor de retroalimentación, ya que este mínimo avance en grados, será con que finura el PWM logrará, generar un avance en el motor. Para obtener el mínimo avance en grados que se puede realizar, es de considerar que, por vuelta mecánica del rotor se realizan cuatro vueltas eléctricas. Mecánicamente la vuelta eléctrica está dividida en 256 partes iguales, debido a que una mecánica equivale a 1024 partes o posiciones. 85 Capítulo 3. Accionamiento del motor PMBLDC Para conocer el mínimo avance en grados, se tiene que hacer referencia a la Ecuación 9, considerando que una vuelta eléctrica equivale a 360°. 𝑉𝑢𝑒𝑙𝑡𝑎 𝐸𝑙é𝑐𝑡𝑟𝑖𝑐𝑎 𝑒𝑛 𝑔𝑟𝑎𝑑𝑜𝑠 360 = = 1.4062 𝑔𝑟𝑎𝑑𝑜𝑠 𝑃𝑜𝑠𝑖𝑐𝑖𝑜𝑛𝑒𝑠 𝑞𝑢𝑒 𝑐𝑜𝑛𝑓𝑜𝑟𝑚𝑎𝑛 𝑙𝑎 𝑣𝑢𝑒𝑙𝑡𝑎 𝑒𝑙é𝑐𝑡𝑟𝑖𝑐𝑎 256 ( 9) El cálculo del seno en el algoritmo CORDIC del hardware dedicado, se realiza en radianes, por lo tanto el avance mínimo en grados debe ser convertido a esta unidad, el valor resultado de la conversión, es considerado en la resolución de 16 bits, para tener la mayor proximidad en la conversión decimal a binario, y omitir en medida lo posible el error de cálculo acumulado por este motivo. 180° = 𝜋 𝑟𝑎𝑑 1.40625 = 𝑥 Donde: 𝑥 = 0.024543693 𝑟𝑎𝑑 que en binario es 000.0000011001001 Ahora bien, la onda senoidal a generar es solo la mitad de los 360°, debido a que en el PWM solo se pueden generar los primeros 180° valores positivos, algo que no es problema ya que el puente “H” generará la inversión para completar los 360°; esta media onda, se repetirá las veces que sean necesarias, por tanto solo se observarán 7 bits para generar la forma y el reinicio se dará de manera natural del 0 al 127. Para generar la forma de onda se debe conocer, la posición más la fase y el incremento de conmutación entre 0 y 127, y multiplicarlo por el mínimo avance en grados calculando en la Ecuación 9. Se tiene entonces: Figura 60 Obtención de la posición angular 86 A la posición, para poder multiplicada por el mínimo avance en radianes, se ajusta a 16 bits, en el resultado de la multiplicación, se toman solo 16 bits, ya que el resultado se ajusta a la parte menos significativa de estos. Lo anterior, es implementado en el bloque “sumador” mostrado en la Figura 61, que tiene como entradas a las variables de posición del rotor, fase a sumar, el incremento de la forma, dirección deseada de giro, el reloj del sistema para la sincronía, la señal de registra posición que indicará la existencia de un nuevo valor para realizar cálculo; y como salida se tiene a los 16 bits con los que se generará en cálculo del seno. Figura 61 Bloque "Sumador" Internamente como se muestra en la Figura 62, se realiza mediante VHDL lo diseñado, inicialmente se realiza el ajuste de la posición del rotor a 16 bits, en la variable “pos” para que pueda ser multiplicado con el mínimo avance en grados. En las señales “sum” y “res” se realizan los cálculos aritméticos para añadir a la posición del rotor, la fase correspondiente y el incremento para dar la forma de la senoide siguiente, la única diferencia entre estas variables es, el incremento de forma, ya que es sumado en la variable “sum”, y restado en la variable “res”. En la variable aux2 es almacenado el cálculo aritmético de “sum” o “res”, dependiendo de en qué dirección se desea que el motor gire, si se desea giro a la derecha se almacena “sum”, de lo contrario “res” es almacenada. De la operación aritmética resultante son tomados, los siete bits menos significativos para lograr el reinicio natural al obtener la media onda, y son almacenados en los siete bits menos significativos de “pos”. En sincronía con la señal de reloj, cada vez que se dé un flanco de subida, se realizará la multiplicación de “pos” por el mínimo avance en grados, siempre y 87 Capítulo 3. Accionamiento del motor PMBLDC cuando “reg_pos” este el valor lógico bajo, “reg_pos” con el nivel alto indica que se registró un nuevo valor de posición del rotor, por ende en este bloque “sumador” se observa al valor lógico bajo, así se garantiza que se dio el cambio de posición, y las señales ya se propagaron por el sistema y están estables, para generar el nuevo cálculo, de lo contrario se tendrá el problema de realizar cálculos con valores en transición. Figura 62 VHDL del bloque "Sumador" 3.8.2 Cálculo de seno Para realizar el cálculo del seno, se utiliza la macro de XILINX de cálculos CORDIC, mostrada en la Figura 63, donde se tiene a la entrada los 16 bits del valor al cual se le calculará el seno, la señal “nd” nuevo dato y el reloj del sistema de 50 MHz; como salida, se obtiene el valor del seno en 10 bits, y la señal de listo. Cada vez que la macro reciba la señal de nuevo valor, iniciara el cálculo del seno del valor que se encuentre en su entrada, al finalizar el cálculo, la señal “rdy” tendrá el cambio de nivel de cero a uno, y el valor el resultado del cálculo se podrá obtener a la salida de la macro. 88 Figura 63 Macro de cálculo CORDIC 3.8.3 Multiplicador Para realizar la multiplicación de la Amplitud por el seno, se generó el bloque “Multiplicador_7_7”, mostrado en la Figura 64, el cual tiene capacidad de multiplicar 7 bits por 7 bits, dando resultado a 14 bits, tiene como entradas a: “Ent_A” donde se ingresa el valor resultado del cálculo del seno, considerando siete bits intermedios del 2 al 8 de los diez disponibles, “Ent B” donde se ingresa el valor de la amplitud previamente ajustada a 7 bits, ya que el controlador la genera a ocho bits, la señal “LForma” proveniente de la señal “rdy” de la macro de cálculo cordic, la señal “LAmpli” acoplado con la señal de muestreo que se manda al convertidor analógico-digital, y “R50Mhz” donde se ingresa el reloj del sistema de 50 MHz; como salida se obtiene el resultado de la multiplicación a 14 bits. Figura 64 Multiplicador de amplitud por seno En este multiplicador se debe ser cuidadoso con los valores que son tomados para realizar la multiplicación, ya que un valor en transición o erróneo que se tome para multiplicar, se reflejará en amplitud y forma no correspondiente al movimiento deseado. 89 Capítulo 3. Accionamiento del motor PMBLDC En la Figura 65, se muestra el código que conforma el bloque Multiplicador_7_7, como se puede apreciar se realiza la entrada de los datos de amplitud y forma de manera registrada con el reloj del sistema, además con la condición de que las señales “LForma” y ”LApmli” se encuentren en valor lógico alto. En caso de la señal de listo del CORDIC, tenga un nivel alto y el reloj del sistema tenga un flanco de subida, significará que se ha calculado un nuevo valor de forma por lo cual el PWM debe cambiar, entonces el valor del seno, en la variable “B”, que se utiliza para la multiplicación podrá cambiar, de lo contrario se mantendrá en el mismo valor para no alterar la multiplicación. Por otro lado, si se da un nuevo muestreo del sistema “LAmpli” tendrá un valor lógico alto y aunado con un flanco de subida del reloj del sistema, significará que existe un nuevo valor de amplitud, por lo cual el sistema permitirá que el valor en “A”, cambie por el nuevo valor de amplitud, de lo contrario “A” mantiene su valor a multiplicar. De esta manera, se asegura que cualquier cambio, ya sea en amplitud o en forma del PWM senoidal, sea atendido sin multiplicar con valores inestables. Figura 65 Código en VHDL del Multiplicador_7_7 90 3.8.4 Generador de Ancho de Pulso Al tener el valor de multiplicación conformado por forma y amplitud, el último paso es generar anchos de pulso con mencionado valor, para lo cual se desarrolla el bloque “top2” mostrado en la Figura 66, que tiene como entradas al reloj del sistema, a la señal de borrado general del sistema, y a los catorce bits resultado de la multiplicación del bloque Multiplicador_7_7, en “dat_pwm”; como salida tiene al PWM senoidal. Figura 66 Bloque "top2", generador de ancho de pulso Internamente se tiene el diagrama mostrado en la Figura 67, el cual es básicamente el mismo generador de PWM trapezoidal, con el divisor de frecuencia y lo límites de conmutación, explicados con anterioridad; con la diferencia, de que la amplitud para generar el ancho de pulso es registrada en “reg_14”, antes de ser utilizada. Figura 67 Diagrama generador del ancho de pulso senoidal El registro “reg_14”, que tiene la capacidad de almacenar el resultado de la multiplicación en sincronía con la señal de reloj del sistema, para que el generador de PWM, no cambie en valores transitorios, además de que a su salida se realiza un corrimiento de valores, ya que de los 14 bits disponibles, se consideran solo ocho 91 Capítulo 3. Accionamiento del motor PMBLDC bits del 5 al 12 , con la finalidad de generar cambios de ancho de pulso más grandes y significativos para el motor, ya que de lo contrario con muy ligeros cambios, no visibles para el motor, en la amplitud o forma se le pediría al ancho de pulso modificarse. En la Figura 68, se muestra el VHDL encargado de esta función. Figura 68 Código VHDL del bloque "reg_14" 3.8.5 PWM senoidal Para generar el PWM senoidal se unen los bloques anteriores, como muestra el diagrama de la Figura 69, añadiendo que la señal de borrado general del sistema con su flanco de bajada, es capaz de registrar nuevo valor de forma y pedirle al CORDIC que genere un nuevo cálculo. Como se cuenta con sensor absoluto se conoce la posición estacionaria del rotor, valor aprovechado para que al borrar al sistema se tome en cuenta este valor, y se tenga una forma inicial para multiplicar con la amplitud, de lo contrario la amplitud se multiplicaría por cero y el sistema no podría hacer girar al motor, y por lo tanto no generar una nueva posición para indicar que la forma cambio y permitir que la dinámica del sistema continúe. 92 Figura 69 Diagrama del generador de PWM senoidal Se genera con este diagrama, el bloque “pwm_cor” mostrado en la Figura 70, el cual tiene como entradas a: la frecuencia de muestreo de la posición en “Frec_muestra”, la señal de que se registró un cambio de posición en “Reg_pos”, la señal de dirección deseada en “Direccion”, la señal de borrado general del sistema, el reloj del sistema, la amplitud, posición, incremento de conmutación y el incremento de fase; como salida, se tiene el pwm senoidal. Figura 70 Bloque "pwm_cor", generador de un PWM senoidal 93 Capítulo 3. Accionamiento del motor PMBLDC A partir del bloque “pwm_cor”, se generan las tres ondas senoidales requeridas para el motor, con el diagrama mostrado en la Figura 71, modificando únicamente la fase a sumar, generando un nuevo bloque llamado “Genera_PWM_senoidal”. Figura 71 Diagrama para generar los tres PWM senoidales del sistema 3.9 Decodificador de PWM senoidal Para conmutar al motor en forma senoidal se hace uso de una variante del decodificador trapezoidal, se sigue basando en la filosofía de trabajo de la conmutación trapezoidal pero con las variantes, de que este decodificador debe generar el valor de incremento para la forma de conmutación, además de las señales de bloqueo de PWM para cuando se desea desenergizar a las bobinas en modo lento, el bloque “conmuta_senoidal”, mostrado en la Figura 72, es el encargado de realizar esta función. A su entrada se tiene la dirección deseada de giro y el valor de la posición registrada; a su salida se tienen las señales individuales para la activación de cada transistor, el valor de incremento para la forma de conmutación, y las señales por cada fase, para inhabilitar el PWM en el caso de desenergizar lento. 94 Figura 72 Bloque "conmuta_senoidal", decodificador para la conmutación senoidal En la Figura 73, se muestra la implementación del decodificador senoidal, como se puede apreciar los rangos de conmutación, no cambian, sin embargo, a diferencia de la conmutación trapezoidal, en la conmutación senoidal, como pudo observar en la Figura 49, la tres fases contribuyen en todo momento al movimiento del motor en mayor o menor medida, por ende en este decodificador la señal fases, tiene tres valores en alto, es decir tres transistores activos en cada paso de conmutación, para determinar cuáles son los transistores que se deben activar se debe considerar de nuevo la Figura 49, donde por cada rango se tiene establecido que fase o fases van a estar en polaridad positiva y cual o cuales en polaridad negativa. También se puede observar, a la variable “Incre”, la cual de acuerdo al rango de conmutación en el que se encuentre el rotor toma el valor de 42 o 43, el cual es el incremento que recibe el sumador del generador de PWM senoidal para conocer la posición angular siguiente. Por otra parte se tiene ala variable “Inhabilita”, la cual dependiendo de igual manera del rango de conmutación en donde se encuentre el rotor, va a seleccionar que fase dejará de observar PWM y se mantendrá el transistor cerrado durante todo el rango, con la combinación “100” inhabilita a “A”, con “010” inhabilita B y con “001” inhabilita C. El criterio de selección para desenergizar lento, es explicado más adelante. Por último en el decodificador senoidal, las señales “Fases” e “Inhabilita”, son separadas en salidas individuales, para cada fase. 95 Capítulo 3. Accionamiento del motor PMBLDC Figura 73 Implementación del decodificador de conmutación senoidal 96 3.9.1 Descarga lenta en la conmutación senoidal Al trabajar con la conmutación senoidal, se intentó poner en descarga lenta a las bobinas de la misma manera que se hace en la conmutación trapezoidal, dejando sin ancho de pulso a los transistores de la parte baja del puente H. Inicialmente se consideraba que estaba bien, ya que dé girar 100 rpm máximo a 24 V, con este método se lograba alcanzar la velocidad de 1500 rpm; sin embargo, se observó que el chip de puente H se calentaba, y al medir corriente al vacío esta se aumentaba, consumiendo de 0.08 A a 0.45 A lo cual hizo dudar de este procedimiento. Se observó experimentalmente que la señal obtenida en vez de generar la senoide la estaba destruyendo, se perdía la forma y el cálculo que se estaba realizando, ya que se pierde amplitud, forma y fase, con este método no se logra tener la descarga lenta de las bobinas en la conmutación senoidal. Para poder lograr la descarga lenta en la conmutación senoidal, el método que se ideó, es no congelar los transistores de la parte baje del puente H, sin ancho de pulso, en el caso de la conmutación senoidal, se tiene en los pasos de conmutación cruces con aportación de energía diferente en cada rango, como se observa en la Figura 74, no es correcto amarrar transistores sin motivo, lo que se debe hacer es amarrar únicamente y dinámicamente, al transistor que está en su punto máximo, no importando si está en su máximo positivo o negativo, ya que ese punto máximo, es el contrario del resultado de la suma de las otras dos fases. Figura 74 Transistores en punto máximo de conmutación, en la conmutación senoidal 97 Capítulo 3. Accionamiento del motor PMBLDC Como ejemplo, Obsérvese en el punto de la conmutación 4, “A” se encuentra en su punto máximo, por tanto es la fase que se congela para este paso de conmutación, “C” y “B” se mantendrán con PWM porque son los que en suma, tendrán la energía que se desea en el motor. No importa si en el paso de conmutación, se tiene que congelar a máximo positivo o máximo negativo, ya que con congelar solo el transistor que está en máximo, se logra tener la energía recirculando dentro del puente H, es decir se logra la descarga lenta. Con esta idea en mente, al implementarlo fue posible que el motor comenzara su movimiento con menos porcentaje de PWM, la corriente no aumenta se mantiene en 0.08 A y las rpm subieron de 700 a 1000 rpm. 3.10 Conmutador Senoidal Para realizar el conmutador senoidal se unen los bloques descritos anteriormente como se muestra en la Figura 75. Figura 75 Conmutador Senoidal 98 Como se puede observar el PWM y la señal de conmutación proveniente del decodificador, son unidas por medio de la compuerta AND, con la finalidad de que el troceo de voltaje sea visto por el transistor, solo cuando el decodificador lo ha seleccionado como transistor activo. Sin embargo, al accionar el motor de forma senoidal, este no salía del reposo al iniciar la conmutación, por lo que era necesario manualmente darle impulso para que iniciara el giro. Primero se realizó el seguimiento a los puntos de conmutación para detectar la falla, se observó a los valores seno de la forma y que transistor se tenía PWM activo, obteniéndose los valores de la Tabla 13, en donde se observó que solo cuando se congela, sin ancho de pulso al transistor de arriba de alguna rama, de acuerdo a la posición, es cuando no arranca el motor, acción repetitiva en ambos sentidos de giro. Tabla 13 Valores obtenidos para identificación de falla en el arranque de conmutación senoidal Giro a la Izquierda Transistor Posición Arranque sin PWM 280 CH No 300 BL Si 350 AH No 386 CL Si 434 BH No 476 AL Si Giro a la Derecha Transistor Posición Arranque sin PWM 288 AH No 330 CL Si 369 BH No 406 AL Si 430 CH No 503 BL Si Al ser la falla solo en el momento que se congelaba al transistor superior, se realizó el monitoreo al trabajo del capacitor de arranque, encargado de darle el voltaje para que cierre el transistor. Observando algo no esperado, al dar borrado general del sistema, el capacitor lograba obtener carga de 15 V; sin embargo, se tenía la falsa idea de que el capacitor se mantenía cargado hasta el momento que se fuera a ocupar, y esto no es así casi de inmediato después de dejar de la señal de borrado, que es donde se obliga a los transistores de abajo a cerrar para que el capacitor de arranque cargue, el capacitor comienza a perder energía, por lo cual al momento de querer utilizar un transistor de arriba no era posible, porque el capacitor ya no tenía energía para cerrar la compuerta. Este problema se vio acrecentado, por la limitación de amplitud del PWM, ya que valores menores al 2% de ancho de pulso, se vuelven cero para proteger al transistor, por lo cual al dar borrado general, al cambiar de sentido de giro o al detener el movimiento, intentar que arrancará de nuevo era imposible. 99 Capítulo 3. Accionamiento del motor PMBLDC Lo anterior se solucionó observando, que si con cada señal de borrado general, se cerraban los transistores de abajo y así se lograban cargar los capacitores de arranque, también teníamos que observar que el motor no estuviera parado, ya que es el único lugar donde se da este problema, al estar en movimiento la misma dinámica de desenergizado de la bobina carga a los capacitores de arranque. Para determinar que el motor no está parado, se requiere que los PWM0, PWM180 y PWM 240 sean cero al mismo tiempo, ocasionando que se cierren los transistores de abajo para cargar los capacitores de arranque, y así después de borrado general, cambio de giro o un simple paro y arranque, el motor logre salir del reposo por sí solo. La implementación para cargar los capacitores de arranque, se realiza en el bloque “Carga_bootstrap” mostrado en la Figura 76, que tiene como entradas, a la señal de borrado general, y los tres PWM senoidales para cada fase; a su salida se tiene de forma individual, a la señal para cada compuerta del transistor. Figura 76 Bloque "Carga_bootstrap" Internamente la lógica de este bloque, mostrado en la Figura 77, es inicialmente verificar que los anchos de pulso sean cero al mismo tiempo, de ser así la señal “cero” recibe un valor lógico alto, de lo contrario recibe el valor lógico bajo. Con la asignación establecida en la señal “cero”, se procede a evaluar los casos de que hace realizado el borrado general o los PWM sean ceros, si alguna de estas dos situaciones se cumple, las señales “AL”, “BL”, “CL”, recibirán el valor lógico alto con la finalidad de cerrar los transistores de abajo para cargar los capacitores, y las señales “AH”, “BH”, “CH”, reciben el valor opuesto, con la finalidad de abrir los transistores superiores para evitar el cortocircuito. 100 Si la condición de borrado general o PWM ceros no se cumplen, se generan señales que permitirán la operación normal del conmutador. Figura 77 Lógica del bloque "Carga_bootstrap" 3.11 Conmutador del sistema El conmutador trapezoidal y senoidal se encuentran dentro del bloque “Conmutacion”, que se muestra en la Figura 78, de este bloque se obtienen los puertos de salida de las seis señales para los transistores del puente H, las señales de PWM trapezoidal, PWM0, PWM120 y PWM240 son puntos de prueba mostrados en pines exteriores del FPGA, para poder monitorearlos. 101 Capítulo 3. Accionamiento del motor PMBLDC Figura 78 Bloque "Conmutación", contenedor de la conmutación trapezoidal y senoidal 3.12 Interfaz hombre-máquina En el desarrollo de esta aplicación se implementa, por medio de registros digitales, un banco de registros el cual permite almacenar información para configurar al sistema, así como para poder monitorearlo. La interfaz gráfica de la PC, es utilizada únicamente para leer y escribir en mencionado banco, lo que se resume a accesos al puerto y generación de protocolo de comunicación. 3.12.1 Registro digital Un registro de datos, como se muestra en la Figura 79, es el espacio físico dentro del hardware, donde se almacenanarám los datos del sistema o configuraciones del usuario. Registro Datos Salida Datos Entrada Escritura Información Lectura Reset Figura 79 Diagrama general de un registro electrónico 102 El registro tiene un bus de datos bidireccional de ocho bits y tres señales de control: escritura, ingresa datos; lectura, saca datos y reset, que inicializa con ceros el contenido. Con el registro se puede conformar de manera flexible, un banco de cualquier tamaño para cubrir las necesidades de todas las aplicaciones. 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 80, 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 borrar provenientes del puerto paralelo de la PC, además de la señal de reloj interno del FPGA, para realizar la sincronización. Figura 80 Circuito para escritura, un registro El comportamiento del registro se representa en la Tabla 14, 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 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 14 Tabla de verdad del registro digital Reseteo (CLR) 1 0 0 0 Carga (L) X 1 0 0 Entradas Conteo (CE) X X 0 1 Reloj (C) X X 103 D7-D0 X Datos X X Salida Q7-Q0 0 Datos Sin cambio Incremento Capítulo 3. Accionamiento del motor PMBLDC 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, en consecuencia este bus será bidireccional. Como se observa en la Figura 81, este bus intersecta entradas y salidas en un punto común, entonces es necesaria la siguiente serie de pasos para poder llevar a cabo estas acciones sin conflictos: 1. El puerto de datos en la PC inicialmente está en modo salida, debe cambiar a modo entrada. 2. La señal de lectura se manda desde la PC. 3. La PC toma los datos del registro. 4. Se desactiva la señal de lectura. 5. 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 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, 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 bidireccional. 104 Figura 81 Circuito para lectura y escritura de datos, un registro 3.12.2 Banco de registros El banco de registros se genera por medio de módulos, un módulo se conforma de cuatro registros, se pueden conectar tantos módulos como sean requeridos por la aplicación, logrando así conformar el banco de registros flexiblemente. La aplicación realizada puede requerir de un solo módulo de registros o de mayor espacio de almacenamiento, tanto para datos de configuración provenientes de la PC, como de datos de operación del sistema dentro del FPGA, por esto se crea una macro a forma de esquema que contenga estas capacidades, Figura 82. Figura 82 Macro implementada de cuatro registros 105 Capítulo 3. Accionamiento del motor PMBLDC Esta capacidad que se le da al FPGA es muy útil, ya que se da el espacio justo para cada aplicación, optimizando recursos, para esta aplicación son utilizadas 22 macros de “BancoRegistros”, teniendo en total 88 registros de ocho bits para almacenar información. La macro, internamente tiene cuatro registros con la habilidad para escribir en él, se muestra en la Figura 83, 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 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 83 Macro de cuatro 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 es necesario integrar el multiplexor “D2_4E”, véase Figura 84, 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 106 “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. Figura 84 Implementación de la macro de cuatro registros La conexión de las macros es realizada, como se muestra en la Figura 85, se puede observar todas las señales, que provienen de la PC son filtradas, por medio del filtro digital para evitar que los datos y señales de control sean erróneos al capturar en el banco de datos. 107 Capítulo 3. Accionamiento del motor PMBLDC Figura 85 Banco de registros Implementado 108 En la Tabla 15, se indican las localidades utilizadas del FPGA, para implementar la interfaz con la PC. Tabla 15 Localidades interfaz PC Función D0 D1 D2 D3 D4 D5 D6 D7 RESET WRITE READ DAT/DIR FPGA B4 A4 A5 B6 A6 A7 A8 A9 C10 A10 A11 A12 DB25 2 3 4 5 6 7 8 9 1 14 16 17 109 Capítulo 4. Control Capítulo 4. Control 4.1 Introducción En este capítulo, se muestra el diseño y la implementación del sistema de control distribuido en el FPGA, con la capacidad de regular la posición, velocidad y aceleración. Siguiendo un perfil de trayectoria en tiempo real de acuerdo a los requerimientos del usuario. Determinando que para el modo posición, el perfil de trayectoria tendrá una rampa de aceleración, desplazamiento a velocidad de referencia y una equivalente rampa de desaceleración, en el caso del modo velocidad, el perfil de trayectoria se limita a tener una rampa de aceleración, hasta llegar a la velocidad de referencia, ya que la desaceleración en un vehículo eléctrico se sigue realizando de manera mecánica por fricción o con otros elementos eléctricos externos al sistema de tracción, debido a que si se frenará al sistema con el mismo motor de tracción, se frenaría utilizando energía del banco de baterías, generando gasto de energía no deseable en la aplicación de vehículo eléctrico. Se describe de igual manera, la forma en la que se realiza la gráfica del comportamiento del sistema, utilizada para sintonizar a las constantes de la acción de control Kp, Ki y Kd, ante un cambio abrupto de posición a velocidad y aceleración máxima, definiendo que la captura de información se hace en modo ráfaga dentro del hardware dedicado, y la PC es la encargada de leer los valores capturados para presentar un gráfico en la interfaz de usuario. Se presenta la implementación de la interfaz de potencia, para lograr que la lógica diseñada se vea reflejada en el BLDC, con la capacidad de voltaje máximo 600 V y 30 A de corriente. Para finiquitar el capítulo, se expone la necesidad de contar con protecciones inherentes en el sistema, así como mostrar la implementación de estas protecciones haciéndolas capaces, de detener al proceso en caso de falla de conexión o la sobrecompensación del control. 110 4.2 Control distribuido en FPGA El control distribuido que se implementa en esta aplicación, es de acuerdo al diseño a bloques mostrado en la Figura 86, desarrollando un sistema de control de lazo cerrado con la capacidad de regular, aceleración, velocidad y posición. Figura 86 Diagrama a bloques del control distribuido implementado 4.3 Sistema Supervisor Este bloque se implementó en la PC, por la necesidad que se tiene para realizar cálculos matemáticos de 2do orden; calcula el nuevo valor de referencia, basándose en las leyes de la física del movimiento rectilíneo uniforme (M.R.U.) y movimiento rectilíneo uniformemente acelerado (M.R.U.A). Con los nuevos valores de referencia generados se determina el tiempo entre cada paso para llegar a los valores deseados de la velocidad y la aceleración. Paso 1 T1 Paso 2 Paso 3 T2 T3 𝑉= Paso 4 T4 T5 𝑠 𝑡 Figura 87 Relación entre ancho de pulso y cambio en la referencia de posición En la Figura 87, se muestra que la velocidad es inversamente proporcional a el tiempo dado entre cada pulso, es decir, si se aumenta el tiempo (t1, t2, t3, t4, t5) entre cada paso la velocidad disminuye o viceversa. Teniendo los bloques regulador y supervisor se puede generar el perfil de trayectoria. 111 Capítulo 4. Control 4.4 Sistema Regulador, Algoritmo de control modo posición La ecuación que muestra en tiempo continuo el algoritmo de control, no puede ser implementada en lógica digital, lo ideal sería tomar todas las muestras, es decir el infinito de muestras, situación que no es posible, a menos que sea convertida a tiempo discreto, que significa trocear la señal para tomar cierto puntos, con el criterio de tomar las muestras necesarias sin perder información del sistema, diferenciado se tiene la Ecuación 10: 𝑁 𝑢(𝑛) = 𝐾𝑝 𝑒(𝑛) + 𝐾𝑖 ∑ 𝑒(𝑛) + 𝐾𝑑 [𝑒(𝑛´) − 𝑒(𝑛´ − 0)] ( 10) 𝑛=0 Donde: Kp, Ki, Kd son los coeficientes discretos de control e(n) es el error en la muestra n n´ muestra a la frecuencia de derivación Del error por medio de este algoritmo, se observa su magnitud, duración y rapidez de cambio; para observar la duración es a través de la operación matemática de integración ya que representa una acumulación del error en base al tiempo, para observar la relación de cambio es por la derivada, ya que esta da la diferencia entre errores y el proporcional permite observar la acción del error en relación a su magnitud. Para saber qué tanto de cada variable será considerada para la acción de control, se establecen los coeficientes K. Los coeficientes K, como tal se mantienen como constantes, una vez que se calibran ya no se modifican, a menos de que las condiciones cambien, como: aumentar la carga, modificar la dinámica del sistema o cambio del motor. El diseño del algoritmo de control implementado para este sistema, mostrado en la Figura 88, se basa en conocer y nulificar la diferencia que exista entre la posición deseada y la posición real, por medio de las acciones de control, proporción, integración y derivación, calculando valores óptimos de amplitud. La posición deseada es generada por el bloque supervisor del sistema, que será detallado más adelante y la posición real es obtenida del sensor de retroalimentación. Para determinar el tiempo de muestreo, se considera la máxima velocidad de cambios de posición que se tendrán a la máxima velocidad de giro del motor, es decir, la resolución que se tiene del sensor de posición por vuelta mecánica multiplicado por la velocidad máxima de giro del motor en rpm, para garantizar que 112 se realiza el muestro que permita observa cambios significativos del error, sin pérdida de información y sin llegar al sobre muestreo. La frecuencia para esta aplicación es entonces de 3 kHz, es decir cada 0.3 milisegundos, se toma una muestra nueva. Figura 88 Diagrama a bloques del algoritmo de control Sin embargo, existen dos frecuencias de muestreo, para las acciones integral y la proporcional es utilizada la frecuencia descrita de 3 kHz, y para la acción derivativa como es de acuerdo a la rapidez de cambio del error, es decir de acuerdo a la velocidad del sistema, la derivativa va a actuar diferente frecuencia, ya que si no es muy rápido el sistema y la derivativa tiene una frecuencia de muestreo muy alta, se llegaría a tener una sobrecompensación, ya que no existiría cambio considerable del error y la acción estaría corrigiendo, la literatura dice, que si la dinámica el sistema no es muy alta, la frecuencia de derivación debe ser inferior pero en sincronía y múltiplo de la frecuencia maestra de 3 kHz, es decir la sintonía del sistema, se calibra nivel de coeficientes K y el valor del divisor de frecuencia para la acción derivativa. 4.4.1 Obtención del valor del error De inicio para conocer el valor del error, se necesita conocer el valor real de posición del rotor, proveniente de la retroalimentación, además del valor de referencia y un restador para conocer la diferencia entre estos dos valores. En el restador, el minuendo será el valor de referencia y el sustraendo debe ser el valor real, ya que la retroalimentación, de acuerdo a la literatura en sistemas retroalimentados, la realimentación siempre es negativa. Para obtener lo valores necesarios para la resta, se implementan dos contadores, uno para el valor real y otro para el valor de referencia, como el mostrado en la Figura 89, que tiene como entradas: a la señal de borrado general, la entrada reloj 113 Capítulo 4. Control que es conectada, a los pulsos del encoder emulado, en el caso del contador de valor real, o a los pulsos del sistema supervisor, en el caso del contador de valor deseado, y la entrada “Asc_Desc” donde se conecta el pulso de dirección. Figura 89 Contador de 32 bits, ascendente descendente Para cargar el valor de posición, pensemos que se desea cargar 25 posiciones, estas posiciones no son cargadas en forma paralela, se le da una posición a una, concordando en la forma, que la emulación de encoder da pulsos en su incremento, da posiciones cuenta a cuenta es decir pulso a pulso, de igual manera el supervisor entrega el valor de referencia pulso a pulso. Los contadores son ascendentes descendentes, debido a que, dependiendo, de la dirección en que se esté realizando el desplazamiento, se va a incrementar o disminuir la cuenta. Para conocer de cuantos bits se debe generar este contador, hay que considerar que la posición guardada es del tipo absoluta, por lo cual el valor máximo va desde cero hasta el final del recorrido, entonces está dado por el número de cuentas del sensor, el avance que se tiene en cada revolución y en la distancia desde el inicio hasta el final del mecanismo. Supóngase que se tiene una máquina con tres metros de largo, y se tiene la resolución del sensor de posición de 1000 cuentas por vuelta mecánica, y el acoplamiento es por medio de un tornillo muy fino de 1 mm, se tiene entonces que se debe avanzar mil cuentas del rotor para avanzar un milímetro, con lo cual para avanzar tres metros, son nueve millones de posiciones el error máximo, para este nivel de error bastaría con 24 bits. Como se busca desarrollar un sistema genérico ante cualquier desarrollo, el registro es creado a 32 bits, con la reserva de que entre más grande sea la resolución del sensor de retroalimentación más cuentas a almacenar se tendrán. La implementación es realizada, mediante VHDL como se muestra en la Figura 90, si se recibe la señal en activo alto de borrado general del sistema, los 32 bits de 114 salida del contador son puestos a cero, con lo que se representa que es el punto inicial del desplazamiento; de lo contrario, en sincronía con la señal de reloj, en cada flanco de subida se realiza el incremento en uno a la señal “Sal” en caso de que “Asc_Desc” sea uno, o se realiza decremento en uno en caso de que “Asc_Desc” sea cero. Figura 90 Implementación del contador de 32 bits ascendente-descendente Se debe destacar que el contador de valor de referencia, contiene el valor de posición global, este contador sólo es borrado al inicio del movimiento o lo que es conocido como el “home” del sistema. Una vez que se tienen registrados los dos valores de posición; referencia y real, se procede a realizar la operación aritmética de resta para obtener el valor del error, sobre el cual se van a aplicar las acciones de control. La diferencia esperada normalmente son valores pequeños, por ende el restador no es requerido diseñarlo a 32 bits, se diseña con salida del resultado a 16 bits, porque la parte siguiente de los registros de las acciones de control proporcional, integral, derivativo son de 16 bits, y se debe cumplir con manejar tipos de datos del mismo tamaño para realizar operaciones de producto, acumulación y diferenciación. La implementación del restador es realizado en el bloque de la Figura 91, donde se observa que entran dos datos de 32 bits y sale un dato de 16 bits. 115 Capítulo 4. Control Figura 91 Bloque restador de 32 bits para obtención del error Internamente se implementa en VHDL, como se muestra en la Figura 92, se tiene la señal “aux” de 32 bits para hacer la resta del valor de referencia menos el valor real, esta operación es realizada en forma combinatoria, y en el puerto “Salida” solo se le asignan 16 bits del resultado de la resta. Figura 92 Implementación en VHDL del bloque "Restador_32b" El error calculado, llega de manera paralela al integrador, al derivador y al proporcional. 4.4.2 Acción proporcional La acción proporcional del algoritmo de control, va a actuar en proporción del error, es decir, si el error es pequeño actúa poco, entre más pequeño actúa menos, por el contrario si es grande el error, esta acción es la que más va a aportar para corregirlo, por ende debe existir valor de error para que pueda actuar. Cabe mencionar que por sí sola, la acción proporcional nunca logra hacer el error cero, ya que por razones del algoritmo, no se puede dar una compensación tan pequeña. 116 Esta acción, es realizada por el bloque mostrado en la Figura 93, que tiene como entrada al error calculado a 16 bits, la frecuencia de control, el valor de la contante Kp a 16 bits y la señal de borrado general del sistema; como salida se tiene el valor calculado de la acción proporcional a 16 bits, lista para ser sumada a las otras dos acciones de control. Figura 93 Bloque de la acción proporcional Internamente el bloque “Proporcional”, está constituido por el diagrama mostrado en la Figura 94, como se puede observar consta de la multiplicación del error por la constante Kp dentro del bloque “Multi_16_16_sat”, para registrar el resultado en la primitiva “CB16CLE” a la cadencia de la frecuencia de muestreo, para garantizar que el valor que se va a utilizar para generar la acción de control, no esté en transición. Figura 94 Implementación de la acción proporcional El bloque “Multi_16_16_sat”, es un multiplicador de 16 bits por 16 bits con signo y salida saturante. La multiplicación es realizada, entre el error que es de 16 bits, y la Kp que de igual manera es de 16 bits, el bit más significativo en ambos datos, es el signo, quedando 117 Capítulo 4. Control la interpretación de estos valores como 15 bits del 0 al 14 para el dato y un bit el 15 para el signo, de forma habitual se esperaría la salida al doble de capacidad, es decir, 16x16 el resultado se esperaría a 32 bits. En este caso específico, como el error estimado es muy pequeño, se va a multiplicar la Kp que si puede tener un valor en todo su rango de 16 bits, con valores muy pequeños como puede ser la unidad o dos, por ende se espera que el resultado del multiplicador sea con pocas frecuencias mayor a 16 bits. El diseño de este multiplicador, se basa en obtener el valor absoluto de cada operando, es decir, si el error es negativo lo volvemos positivo para hacer la multiplicación, una vez realizada la multiplicación, se compara si el resultado es mayor al valor de saturación, en caso de que esta condición sea cierta, el resultado se reemplaza por el valor de saturación, de lo contrario el resultado no es modificado. Como en la salida del multiplicador se reduce la toma del resultado a 16 bits, es decir no se toman los 32 bits resultantes de 16x16 , se va a perder el valor del signo, ya que esa información estaría en el bit más significativo de los 32 bits, entonces para considerar en el resultado a 16 bits el valor original de los signos, se monitorean los signos de los datos de entrada, que signo tiene la Kp y que signo tiene el error, si entre los dos signos son diferentes, el resultado se multiplica por menos uno para volverlo negativo, si son iguales el resultado no se modifica. La implementación de este multiplicador, es realizada en VHDL como se muestra en la Figura 95, inicialmente se realiza la revisión de los signos en los valores de entrada, si el bit 15 de “Ent1” es uno significa que el valor es negativo, se procede a obtener el valor absoluto mediante complemento a dos, y se asigna a la señal “aux1” ,si es positivo, es decir, que el bit 15 de “Ent1” sea cero significa que el valor es positivo entonces, se asigna a “aux1” sin modificarlo, el mismo principio es aplicado al otro multiplicando. Ya con los valores absolutos se hace la multiplicación, y el resultado se asigna a la señal “sal1”. Se realiza la comparación de “sal1” con el valor de saturación, si es mayor al valor de saturación a la señal “sal2” es asignada el valor de saturación, si es menor “sal1” se asigna a “sal2”, la saturación solo es realizada entre el cero y el máximo porque se está haciendo operación con puros positivos. Como último paso, se devuelve el signo original de los multiplicandos al resultado, se comparan los signos en las variables de entrada, si son diferentes se complementa al resultado y se asignan los 16 bits menos significativos al puerto “Sal”, de lo contrario se asignan los 16 bits menos significativos de la señal “sal2” sin modificar al puerto “Sal”. 118 Figura 95 Implementación del multiplicador 16x16 saturante 4.4.3 Acción Derivativa En el modelo discreto se tiene la derivación como n apostrofe multiplicado por la constante Kd, lo que significa que se debe realizar el valor de la muestra actual menos el valor de la anterior, entonces se debe estar guardando la muestra anterior, implementando registros de corrimiento, con dos registros se logra obtener estos valores, para calcular la diferencia. Cuidando que la frecuencia del derivador, sea múltiplo de la frecuencia maestra, ya que con esto se garantiza que la acción derivativa este en sincronía, con las demás acciones de control. La implementación de la acción derivativa, se realiza en el bloque mostrado en la Figura 96, donde se puede observar como entrada al error calculado a 16 bits, el valor de división deseado para la frecuencia derivativa, la frecuencia maestra de control, la señal de borrado general y la constante de derivación Kd. 119 Capítulo 4. Control Figura 96 Bloque de la acción derivativa Internamente se implementa mediante el circuito mostrado en la Figura 97, Se utiliza un divisor de frecuencia en el bloque “Frec_d”, similar en construcción al que se utiliza en el PWM, la idea se basa en recibir un dato de ocho bits el cual corresponde al valor por el cual se divide la frecuencia de muestreo, en cada flanco de subida se realiza un decremento hasta llegar a este valor, en este momento se carga de nuevo el valor del divisor, y eso generado de manera cíclica. De este modo se genera, la frecuencia derivativa a la cual operan los registros de corrimiento. Figura 97 Implementación de la acción de control derivativa Para poder registrar la muestra actual y la muestra anterior, son utilizados dos registros por medio de la primitiva CB16CLE, con carga paralela y la misma frecuencia alimentada a ambos, la señal de borrado es la general del sistema y se mantiene siempre está activo la carga paralela y el CE, se conectan en cascada para lograr tener el valor actual y anterior del error recorriéndose en cada flanco de la frecuencia derivativa. Entonces en un primer flanco el error se carga en el primer registro y el que estaba ahí se carga en el segundo registro, en un segundo flanco, el que estaba en el primer registro seguramente se encuentra ahora en el segundo registro 120 El bloque “Resta_16”, es el restador donde se realiza la diferencia mediante VHDL, se realiza la diferencia A- B de restar al error presente el error anterior, se realiza la resta a 16 bits y la salida es a 16 bits, por lo cual no es necesario hacer aritmética saturante, ya que no se está perdiendo información. Para definir cuál valor es el minuendo y cual el sustraendo, se tiene que observar la ecuación discreta del algoritmo de control, la cual indica que se debe sacar diferencia del valor actual menos el anterior. Por último, por medio del multiplicador saturante descrito en la acción de control proporcional, se multiplica la diferencia calculada por la constante de control Kd, obteniendo a su salida, el valor de la acción de control derivativa lista para ser sumada con las otras dos acciones de control. 4.4.4 Acción Integral En la acción integral se tiene un acumulador donde se suma el valor del error durante el tiempo que esté presente, en la mayoría de las ocasiones el error es muy pequeño y no se logra nulificar, por tal motivo se acumula y acumula, pero se debe tener cuidado en no llegar a la sobrecompensación, es decir es tanto el error acumulado que se va a compensar, que cuando el error por alguna razón desaparece genera inestabilidad o que el control se pierda, además de oscilaciones, a manera de ejemplo, supóngase que en condiciones operativas, se llegará a tener un atasco en una máquina, el control comenzaría a compensar más y más, hasta llegar a eliminarse ese error, y si el atasco se pierde repentinamente, el motor tendría una acción demasiado brusca e inesperada. De la ecuación del algoritmo de control, se tiene que la acción integral en modo discreto es una sumatoria desde la primer muestra “n” hasta “N”, donde se debe interpreta que “N” no tiene límite, ya que no influye en el valor de la suma, solo cuando se enciende el sistema se determina cual es la primer muestra, y hasta que se apaga, si fueron millones de muestras no importa, ya que cada vez que se mueva la posición, el error deja de ser cero, y al tener un valor de error el sistema inicia de nuevo a trabajar, por lo que “N” no tiene un valor final. La acción integral es implementada por medio del circuito mostrado en la Figura 98, en el cual se observa el bloque “Integrador”, en el cual se realizará la acumulación del error con la limitación de integración establecida en la calibración del sistema, para generar el valor de la acción de control integral a multiplicar por la constante de integración Ki, para determinar el valor a sumar con las otras dos acciones de control, además se tiene el punto de monitoreo “Integración” mediante el cual se monitorea si la acción integral, llego a su límite o aún tiene rango de acción. 121 Capítulo 4. Control Figura 98 Implementación de la acción integral El integrador, mostrado en la Figura 99, tiene como entrada al error calculado a 16 bits, el límite de integración a 16 bits, la señal de borrado general del sistema y la frecuencia de control; y una salida, con el valor de integración a 16 bits Figura 99 Bloque Integrador Al implementar el bloque “Integrador” como se muestra en la Figura 100, la señal “clear”, que es a su vez la señal de borrado general del sistema, tiene máxima jerarquía junto con la condición de que el error calculado sea cero, si alguna de estas dos condiciones se cumple, el acumulador es reiniciado, cabe mencionar que el acumulador se define a 24 bits, la razón es para quitarle sensibilidad a valores pequeños entre cero y 255, estos se toman como irrelevantes, se desprecian no va a actuar la integración hasta que la acumulación pase de 255. Es necesario realizarlo tomando los 16 bits más significativos de 24, para evitar que los datos a acumular hagan la saturación tan rápida, pero como las demás acciones de control, son a 16 bits no es posible manejar la capacidad de 24 bits completa, ya que se tendría que modificar la capacidad en las demás acciones de control, solamente se prevé mayor espacio para el acumulador, en valores de error con duración muy prolongada. 122 La condición de que el error sea cero es debido a que cada vez que el controlador pase por el cero, el valor a acumular debe iniciar desde cero, de lo contrario se realizaría una acción de control en sentido contrario, con valor de lo acumulado más lo que se va a acumular, lo cual llevaría al sistema a oscilaciones incontrolables. En caso de que no se cumpla alguna condición que el reinicie el acumulador, en sincronía con la frecuencia de muestreo, se registra el nuevo valor acumulando durante la muestra anterior, con la finalidad de obtener a la salida el valor perfectamente definido, para garantizar que la acción de control integral no se tome en transición. Para poder sumar el error con el acumulador, el primer cambio que experimenta el error es el ajuste de 16 a 24 bits, observando el bit 15 del error, se realiza el ajuste, dependiendo si es negativo se le concatenan ocho unos en su parte más significativa y se asigna a la señal “Errorbus”, si es positivo se le concatenan ocho ceros y de igual forma se asigna a la señal “Errorbus”. En forma combinatoria, se genera el límite de integración negativo, calculando el complemento a dos, del límite de integración obtenido por configuración del sistema, y se asigna a la señal “il_neg”. De igual manera se complementa a dos a la señal “suma”, para conocer el acumulador en forma negativa, para que en caso de que el error sea negativo, este es el acumulador que se debe considerar. 123 Capítulo 4. Control Figura 100 Implementación del bloque Integrador Se realiza la comparación de la señal “acumulador” que contiene el valor registrado del acumulador, con el límite de integración positivo y negativo, en caso de que se encuentre dentro del rango que generan los límites de integración, “acumulador” es sumado con el error actual, y el resultado se asigna a la señal “suma”, en caso de que no esté dentro del rango, pero se pueda asegurar que la acumulación en vez de sumar lo que va a realizar es una resta, también se le permite realizar el cálculo, la forma para asegurar esto, es observando los signos del error y del acumulador, si son contrarios se puede definir que al realizar el cálculo se restaran. Si no se da ninguna de estas dos condiciones, el acumulador no sufre cambio. 124 Para definir el sentido en el que será aplicada la acción de control, se debe considerar que está debe ser realizada en sentido contrario a la acumulación del error, es decir si se gira a la derecha y se acumula el error, se debe aplicar el valor del acumulador pero en dirección a la izquierda y viceversa. Para esto se comparan los signos del error y del acumulador, si son diferentes la acción del acumulador es tomada en forma negativa y si son iguales el valor del acumulador no sufre cambio. Por último al puerto de salida “total”, son asignados los 16 bits más significativos del acumulador, listos para ser multiplicados por la constante Ki en el multiplicador saturante, para que el resultado sea sumado con las otras dos acciones de control. 4.4.5 Sumador de acciones de control La suma de las acciones de control integral, proporcional y derivativo, es realizada en el bloque “Suma_PID” mostrado en la Figura 101, donde se puede observar que como entrada tiene a los valores calculados de cada acción de control a 16 bits cada una, además de la frecuencia de control; como salida se obtiene la Amplitud calculada para el PWM, lista para ser enviada al conmutador, además del signo que determina en qué sentido debe girar el rotor para lograr la posición de referencia. Figura 101 Bloque Suma_PID La implementación de la suma de las acciones de control, es realizada por medio de VHDL, como se muestra en la Figura 102, de manera combinatoria se realiza la suma de las acciones de control y el resultado es guardado en la señal “suma” a 16 bits, con el resultado de la suma, observando el bit más significativo que proporciona el valor del signo resultado de la operación, se determina si es positivo o negativo, en caso de ser negativo se complementa a la señal “suma” y se asigna a la señal “aux1”, en caso de ser positivo no se modifica pero se asigna de igual forma a “aux1”, esto con la finalidad de que los valores de amplitud solo pueden ser positivos en el PWM. 125 Capítulo 4. Control Figura 102 Implementación del sumador de acciones de control Una vez que se tienen solo resultados positivos de la suma, en sincronía con la señal de frecuencia de control, se asigna el valor de signo de la suma al puerto de salida “Signo”, así como el valor que se calculó para la amplitud es asignado al puesto de salida “Amplitud”. “Signo” y “Amplitud”, son las señales enviadas al conmutador para que el motor realice el movimiento deseado por el controlador. Interpretando los 16 bits de la suma resultante, el bit 15 es utilizado como signo que da la información de sentido de giro del rotor, el bit 14 es utilizado como señal de desborde de la suma, del bit 13 al bit 0 son utilizados para almacenar el tamaño de la amplitud que el control calculó. Como se puede observar, al puerto de salida “Amplitud” al asignar el valor de la suma del PID, se hace un escalamiento al resultado de la suma ya que para el valor de amplitud o acción de control, no se toman los bits menos significativos de 16 bits, si no que se toman del 6 al 13 que son los más significativos, considerando que el bit 14 se usa para conocer desborde en la suma. Este escalamiento se realiza, debido a que si se toman los menos significativos, el valor de las constantes K, sería muy pequeño para alcanzar las sintonía, por ejemplo, experimentalmente cuando se tiene escalamiento se requiere mínimo Kp=FF para controlar, y sin escalamiento con un Kp=02 es suficiente para obtener el control, esto parecería una ventaja pero no es así, ya que sin escalamiento con solo subir un valor de 2 a 3 el sistema entra en inestabilidad, lo cual deja sin rango 126 para tener más precisión en el sintonizado, por el contrario cuando se escala se tiene la ventaja y facilidad de dar más valores a las constantes K, para aproximar el control a la sintonía óptima, dar más valores a las constantes K, es cómo manejar números fraccionarios ya que ese mismo brinco que se da de 2 a 3 con inestabilidad cuando no se escala, haciendo la comparación cuando se escala es como si diéramos un 2.1, 2.2, 2.3. Lo cual aumenta la resolución del sistema y se espera una mejora en el movimiento del mecanismo. 4.5 Sistema Regulador, Algoritmo de control Modo Velocidad Para poder regular la velocidad el control supervisorio, va a ser suplido finalmente por el usuario que va a controlar el vehículo por medio del acelerador, por lo cual no es necesario crear perfil de trayectoria, debido a que el punto final del movimiento no es conocido, dependiendo de sus necesidades el mismo usuario lo generará. Si bien en el modo de posición se le da al sistema, posición, aceleración y velocidad, es necesario que en modo velocidad el usuario solo ingrese la velocidad a la que desea moverse, para poder regular velocidad al control, se le debe estar cambiando la referencia de posición contantemente, es decir nunca alcanzará la posición de referencia, a la velocidad que el usuario lo desee, es decir, el cálculo que se hacía del tiempo entre cada pulso o paso en el bloque supervisor, ahora va a calcular con que tiempo se debe de dar un pulso para que el control alcance la velocidad de referencia. Implícitamente que tan rápido se mueva esa referencia de velocidad, será la aceleración con la que el motor alcanzará la velocidad deseada. Entonces aprovechando los recursos con que se cuenta en el bloque regulatorio, para posición, es posible controlar velocidad, se tiene el contador de 32 bits ascendente y descendente, que lleva la cuenta del valor de referencia, el cual si consideramos que el motor va a avanzar en un sentido fijo durante su trayectoria, ya sea drive o en reversa, el contador debe estar amarrado a un valor de dirección como en un vehículo convencional. Sin embargo en modo velocidad, se tiene el problema de reinicio por desborde en el registro contador de valor de referencia, ya que por muy grande que se puede realizar este registro, llegará un momento en el que las cuentas de referencia desbordarán al contador generando el reinicio natural de la cuenta. El problema del reinicio haría, que la compensación y el PWM se perdieran ya que los dos registros contadores de valor real y valor de referencia se harían cero. La forma que se diseñó para solucionarlo, fue que cuando el contador de valor deseado este por reiniciar, el valor registrado del error sea cargado en forma paralela al contador de valor de referencia y el de valor real sea puesto a cero asíncronamente, 127 Capítulo 4. Control de esta forma el error que se llevaba no se perdería y podría ser imperceptible para el funcionamiento del motor. A manera de ejemplo, obsérvese el caso de la Figura 103, supongamos que la cuenta final del contador es 100, y el valor de referencia es esta en 100 y el valor real es 98, dando un error de 2, en ese momento se sabe que el siguiente valor es desborde en el contador de valor de referencia. Por lo tanto el contador de valor de referencia se le carga el valor del error y el valor real se reinicia, logrando que no cambie el valor del error que existía ni la compensación. Figura 103 Ejemplo de reinicio del contador en modo velocidad De esta manera se logra hacer imperceptible el reinicio y además se puede tener un registro contador para valor de referencia, de cualquier magnitud ya que el reinicio se puede realizar en cualquier valor sin problema, en este caso se dejó el reinicio hasta el desborde de 32 bits porque es un registro compartido con modo posición. La implementación en el hardware, tuvo que modificar el contador de valor de referencia que se tenía para habilitar la carga paralela de un valor, el bloque desarrollado se muestra en la Figura 104, en el cual se tiene las entradas de cuenta y dirección de referencia, la señal de borrado general del sistema, el valor del error a 16 bits y la señal carga paralela; a la salida se tiene el valor de referencia. 128 Figura 104 Contador a 32 bits con carga paralela La lógica con la que trabaja este contador es mostrada en la Figura 105. Figura 105 Contador para modo velocidad a bloques Con la señal borrar se realiza el multiplexado de datos, si es “uno” la señal de borrado general entran 32 ceros que es lo equivalente a reiniciar al registro, de lo contrario deja pasar al dato del valor de error. Una vez seleccionado el dato, de manera asíncrona, si la señal de carga o la de borrado general del sistema se dan, la salida del registro adquiere el valor del dato a la salida del multiplexor, de manera síncrona se elige realizando la suma o resta del valor de referencia como el contador descrito en modo posición. Con esto se logra tener el registro de valor de referencia como se requiere para la solución propuesta, se implementa en VHDL como se muestra en la Figura 106. El valor de error, se debe tomar para que no sea perceptible el reinicio, el valor ya registrado dentro del módulo proporcional, con esto el motor no da un brinco al reinicio y el motor opera sin falla aparente. 129 Capítulo 4. Control Figura 106 Implementación del contador para valor de referencia modo velocidad y posición Ahora se requiere de un comparador, que este vigilando la cuenta del valor de referencia para identificar cuando el registro va a desbordar o poner el dato donde se desea que reinicie, en este caso se seleccionó el valor aleatorio de 2147483647 tanto positivo como negativo, cuando se da este valor el bit de salida se pone a uno y esta señal es la que se ocupa para cargar el valor deseado y para reiniciar el valor real, se implementa en el bloque “maximo_contador”, con la lógica descrita en la Figura 107. 130 Figura 107 Implementación del comparador de desborde Para el control de velocidad, Ahora no se necesita que el software genere el perfil de trayectoria. Para calcular el tiempo entre cada pulso, se toma el valor de referencia como velocidad constante de una barra en la interfaz y con ese valor se calcula el tiempo a través de: 𝑡𝑖𝑒𝑚𝑝𝑜 = 1 𝑣𝑒𝑙𝑜𝑐𝑖𝑑𝑎𝑑 𝑐𝑜𝑛𝑠𝑡𝑎𝑛𝑡𝑒 ( 11) A través de la Ecuación 11, se obtiene cada cuando se tiene que modificar la referencia de posición deseada. Sin embargo al generar el cálculo en la PC, se tiene el problema al implementar el control de velocidad, ya que al establecer una velocidad deseada el microcontrolador de la PC se queda haciendo el cálculo necesario para generar el tiempo entre cada paso a esa velocidad, por lo cual si se deseaba modificar esta velocidad inicial el microcontrolador está ocupado y no permitirá un cambio de velocidad de referencia, ni reiniciar, ni nada por que el microcontrolador está trabajando en una tarea cíclica. Este problema es solucionado generando en hardware el bloque “TIME_VELOCIDAD”, mostrado en la Figura 108, que tiene como entrada, la referencia de velocidad a 32 bits, dividido en cuatro datos de ocho, provenientes del banco de registros, la señal de borrado general, la señal de reloj del sistema y la señal de paro, en caso de que se necesite dejar de dar pulsos en la salida; como salida tiene la señal “Pulso_t”, de donde se obtendran los pulsos de paso para el contador de valor de referencia del controlador. 131 Capítulo 4. Control Figura 108 Bloque "Time_velocidad" Este módulo trabaja bajo la lógica de la Figura 109, en donde la PC lo que va a hacer es calcular el tiempo entre paso y paso, para lograr la velocidad de referencia, y además calcular cuantas veces el tiempo de la frecuencia de 50 MHz, 20 nanosegundos, cabe en ese tiempo calculado. El valor de cuantas veces se divide el tiempo calculado entre la frecuencia de 50 MHz, es enviado al hardware por medio del banco de registros, son capturados y se realiza un ajuste de cuatro datos de ocho bits a un solo dato a 32 bits, con esto se logra que la PC genere el cálculo, envié el dato y libere su procesador para poder hacer otras tareas. Figura 109 Diagrama a bloques del módulo "Time_velocidad" 132 Una vez que se captura a 32 bits, el valor es entregado a un contador descendente el cual realiza la cuenta desde el valor enviando de la PC hasta cero, a la frecuencia de 50 MHz, cuando el contador es cero la salida del contador se vuelve uno y carga un nuevo valor de cuenta, generando así pulsos con duración entre ellos del valor calculado por la PC. La implementación es realizada por medio del diagrama mostrado en la Figura 110, donde se observa que el registro de 32 bits, es conectado en cascada con el contador descendente, teniendo como misma señal de carga a la señal “Pulso t”, invertida. Logrando que cada que se da este pulso avanzara el banco de registros al registro de 32 bits y del registro al contador descendente. En el contador descendente cada vez que se llega a cero contando con una frecuencia de 50MHz el pulso “Pulso t” se dará y este, es el que se ingresa al regulatorio para lograr mover la referencia y correr los registros. Figura 110 Implementación del bloque "Time_velocidad" 4.6 Seleccionador de modo de control En el hardware se implementa el bloque “Cambio_modo”, el cual permite modificar el esquema de control entre posición o velocidad desde la interfaz en la PC, opera como un multiplexor, el cual dependiendo del valor del bit en la entrada de selección, las salidas que entregan al controlador paso y dirección serán tomadas del supervisor de posición o de velocidad. 133 Capítulo 4. Control Figura 111 Bloque "Cambio_modo" Es implementado en VHDL, con la lógica descrita en la Figura 112, donde se observa que si el seleccionador es uno, los puertos de salida de paso y dirección, serán tomados del supervisor de velocidad, en caso contrario a los puertos se asignarán los valores del supervisor de posición. Figura 112 Implementación del bloque "Cambio_modo" 4.7 Medición interna de velocidad En esta aplicación al estar enfocada en la tracción de un vehículo eléctrico, el usuario requiere que le sea mostrada la velocidad a la que el motor se está desempeñando, para verificar que la velocidad a la que se desplaza es la que él desea. Aprovechando los recursos, es implementado un tacómetro digital dentro del hardware, 134 Para lo cual se desarrolló el bloque “velocímetro” que se muestra en la Figura 113, el cual tiene como finalidad calcular una velocidad promedio a la cual está desplazando el motor, cuenta con tres entradas: la de reloj que recibe 50 MHz generales del sistema, la de borrar donde se ingresa la señal de borrado general del sistema, y la revolución la cual permite ingresar la señal que indica que el motor ha dado una vuelta mecánica. Así como con dos salidas en las cuales se tendrán el resultado de medición de velocidad, dividida en parte alta y parte baja de ocho bits respectivamente, para poder introducir el valor al banco de registros y poder mostrarlo en la interfaz de usuario. Figura 113 Bloque "Velocimetro" generado para medir RPM Cabe mencionar que la velocidad medida en este bloque, no es la misma que se utiliza para el control, ya que la que se utiliza en la etapa de control es la velocidad instantánea, es decir, cambios de velocidad muy rápidos sin significado para el usuario, por tal motivo se optó por calcular la velocidad promedio que es un valor más digerible y confiable, sin embargo este promedio no puede ser tan sensible que caiga en la exageración, ni tan insensible que no permita observar los cambios de mencionada variable. Un sistema existente en los carros actuales que trabaja de este modo, es el de revisión del nivel de combustible, el cual si mostrará un promedio exagerado con el movimiento del fluido, la aguja de nivel tendría un vaivén que se traduciría en una lectura incorrecta por tanto no confiable, por el contrario si el promedio es muy lento, se tendría de igual manera una lectura errónea porque no se mostraría un valor equivalente a la velocidad de desgaste del fluido. Otro punto a considerar es que la señal de revolución debe ser adquirida hasta que esté fija en un valor, asegurándonos de no tomarla para el procesamiento cuando está en transición, ya que esto ocasionaría la obtención de valores erróneos e incoherentes en el cálculo de la velocidad promedio. Para solucionar este problema se hizo el registro a la señal de revolución justo a la salida del bloque donde se genera, en sincronía con la señal de cambio posición, con esto aseguramos que la señal de revolución está en un valor definido para ingresarla al bloque de velocímetro. 135 Capítulo 4. Control Explicado lo anterior, la lógica con la que trabaja este bloque, se puede observar en el diagrama de la Figura 114. Pre divisor Control del contador de RPM Contador de RPM Registro del Dato Figura 114 Diagrama a bloques del bloque "velocímetro" Inicialmente se tiene un pre divisor el cual tiene dos funciones: La primera es homogeneizar la señal de revolución ya que se genera de manera diferente dependiendo del sentido en el que se esté girando. Es decir, cuando se gira en sentido que la cuenta de posición es ascendente, la resta que se realiza para obtener el bit de dirección real tiene datos como 500-499 o 875-874 lo cual da un resultado de +1 que representado en los 10 bits que se observan en ese modulo seria de la siguiente manera, 00000000001, con lo cual se tiene que el bit de revolución (bit 10) es cero durante el giro, pero va a llegar el momento en que se cumple la vuelta mecánica, en este punto la cuenta va a dar el brinco de 1023 a cero, generando entonces que la resta sea 0-1023 con lo cual si lo observamos en bits el resultado es 10000000001, con lo cual se tiene una transición de cero a uno en la señal de revolución como se puede observar en la Figura 115. Figura 115 Oscilograma de la señal de vuelta mecánica giro ascendente. De lo contrario, cuando se gira y la cuenta es de manera descendente la resta será 499-500 dando como resultado 11111111111 en el momento de la vuelta mecánica se va ver el brinco de cero a 1023 por lo cual la resta seria 1023-0 y se tendría como resultado 01111111111 y el bit 10 va tener una transición de uno a cero como se puede observar en la Figura 116. 136 Figura 116 Oscilograma de la señal de vuelta mecánica giro descendente Como se puede apreciar, no se tienen señales iguales lo cual genera un problema al intentar conocer la velocidad en ambos sentidos, ya que se tendría que generar un módulo de medición de la velocidad para cada sentido. Para evitar esta situación se hace uso del pre divisor, ya que el contador con el que está hecho sólo cuenta con los flancos de subida que es la similitud que existe entre las dos señales, véase Figura 117, así no importa en qué sentido gire el motor se podrá conocer el instante en que se dio una vuelta mecánica, lo único erróneo que se tendrá con este método, es que existirá un error de una milésima de posición al hacer esto, lo cual para promediar la velocidad se consideró despreciable. Figura 117 Flancos en los que el pre divisor considera a una vuelta mecánica La segunda función para la que sirve el pre divisor, es para promediar ya que dependiendo del bit que se tome a la salida del contador se puede definir cada cuantas vueltas se va calcular el valor de la velocidad, véase la Tabla 16. 137 Capítulo 4. Control Tabla 16 Cantidad de vueltas necesarias para calcular nuevo valor de velocidad Bit del contador 0 1 2 3 4 5 6 7 Cantidad de vueltas para calcular nuevo valor 2 4 8 16 32 64 128 256 El esquemático implementado, que realiza la función de pre divisor se muestra en la Figura 118, La señal que se obtendrá del pre divisor, será la señal que indica, que el intervalo a medir ha finalizado y que inicia uno nuevo. Intervalo que se genera indirectamente en el contador de revoluciones que se explica más adelante. Figura 118 Pre divisor para la función de velocímetro Una vez que se tiene como generar el intervalo a medir, se debe tener la unidad con la que será medido, dicha unidad es un tiempo fijo y conocido generado por una frecuencia, para por medio de cálculos aritméticos determinar cuántas veces este tiempo cabe en el intervalo. En esta aplicación se utiliza como unidad de medida la frecuencia de 3.052 kHz, que en tiempo son unidades de 0.328 milisegundos. El contador de revoluciones tiene como función, hacer el recuento de cuantas veces cabe la frecuencia de 3.052 kHz en el intervalo limitado por el pre divisor, almacenar ese valor por un momento en espera de que sea registrado, y volver a iniciar la medición. Para que el contador de revoluciones trabaje como se requiere, necesita de señales de control sincronizadas para garantizar la medición justa del intervalo, se cuenta con el tiempo de duración de un pulso de la señal de vuelta mecánica, como el mostrado en la Figura 115, para realizar tres acciones: 138 Detener el contador para garantizar que el dato no cambia. Cargar al registro el valor que quedo en el contador. Reiniciar el contador para garantizar el inicio de la medición de un nuevo intervalo. Por lo antes mencionado se hace uso de las señales de cuenta, carga y borra, y se requiere respetar ciertos puntos exactos en que se dan las acciones, así como la duración de las mismas. El esquema que realiza la medición y registro de la velocidad se muestra en la Figura 119. Figura 119 Esquema de medición del intervalo para determinar velocidad Como se puede observar para generar las señales de control se utilizan monoestables digitales, ya que con estos se puede tener dominio sobre la duración y el momento en que se dan las señales. El registro donde se guarda el valor se generó en lenguaje de descripción, véase Figura 120, ya que se necesita que funcione de manera asíncrona, para asegurar capturar el dato en el poco tiempo que se tiene. 139 Capítulo 4. Control Figura 120 Implementación del registro asíncrono Para poder cargar un nuevo valor en el registro de carga asíncrona, la señal que sale del pre divisor debe disparar el monoestable de cuenta, el cual tiene la transición de uno a cero con una duración de 2.56 µs, antes de cambiar de nivel, y el de carga con una duración de 0.64 µs el cual tiene la transición de cero a uno. Con estos eventos, el contador deja de adicionar, y el último valor de cuenta es registrado, al terminar la duración de la señal de carga, esta tiene un flanco de bajada y en ese momento se dispara el monoestable de la señal borra que tiene idéntica duración de 0.64 µs para que el contador regrese a cero. Al pasar 1.28 µs ya terminaron su evento las señales de carga y borra, para que cuando se termine la duración de 2.56 µs la señal de cuenta vuelva a ser uno y permita que el contador de revoluciones trabaje para medir el nuevo intervalo siguiente. En la Figura 121, se muestra la captura al osciloscopio de cómo se sincronizan las señales de control, como se puede observar la señal de cuenta y carga tienen su evento en el mismo instante y la señal de borra se genera hasta que se garantizó que el dato se registró, otro detalle a notar es que se comprobó que las acciones son generadas antes de que la señal de cuenta regrese a un valor lógico alto para evitar discrepancias en la medición de los intervalos. 140 Figura 121 Señales de control del Contador de revoluciones Hasta este punto se tiene a la salida del registro, el valor medido dividido en RPM_alta y RPM_baja, y por tanto ya se tienen registrados en el banco de registros, el valor de las cuentas que midió el intervalo de velocidad; sin embargo, lo que se desea tener es un valor en RPM para lo cual, en la PC se hacen los cálculos necesarios para obtener la medición es en estas unidades. Ejemplo: supongamos que el promedio de velocidad se desea medir cada dos vueltas, con la unidad de frecuencia de 3052 Hz, y en el contador de revoluciones se tiene el resultado de 1390 cuentas. Estas 1390 cuentas indican que la unidad de tiempo se repitió 1390 veces, si se desea conocer cuánto tiempo tardo en dar una revolución basta con dividir este número de cuentas entre la cantidad de vueltas que se está utilizando para promediar en este caso dos y quedaría que en una vuelta la unidad se repitió 695 veces. Entonces para obtener cuanto tiempo se tardó el motor en dar una revolución basta con realizar la siguiente operación. Tr = Cuentas × Unidad de Tiempo = 695 × 1 3052 Sin embargo el valor que se busca, es conocer cuántas vueltas da en un segundo, lo cual se obtiene con la siguiente regla. 1 𝑣𝑢𝑒𝑙𝑡𝑎 𝐶𝑎𝑛𝑡𝑖𝑑𝑎𝑑 𝑑𝑒 𝑣𝑢𝑒𝑙𝑡𝑎𝑠 = 𝑇𝑟 = 1 𝑠𝑒𝑔𝑢𝑛𝑑𝑜 ∴ 𝐶𝑎𝑛𝑡𝑖𝑑𝑎𝑑 𝑑𝑒 𝑣𝑢𝑒𝑙𝑡𝑎𝑠 = 1 𝑇𝑟 Y si se desea conocer cuántas revoluciones se dan en un minuto basta multiplicar por sesenta, entonces la ecuación para determinar las RPM quedaría de la siguiente manera: 141 Capítulo 4. Control 1 1 3052 × 60 = × 60 = × 60 ≈ 263 𝑅𝑃𝑀 695 𝑇𝑟 695 3052 Por último en la interfaz de la PC, se despliega en una etiqueta el valor calculado en Revoluciones Por Minuto. 4.8 Gráfica de la respuesta del motor Para conocer si se está logrando sintonizar de manera óptima al controlador, es necesario conocer cómo responde el motor a un cambio realizado, en este caso el cambio que se le pide al motor seguir, es la prueba escalón que es considerada como la prueba más demandante a un sistema de control, esperando una gráfica como la mostrada en la Figura 122. Figura 122 Gráfica muestra de la prueba escalón En el eje horizontal se tiene el tiempo y en el vertical se tiene la posición, obviamente el tiempo va a estar en segundos y la posición en cuentas, se le va a pedir al motor que haga un escalón, es decir, que se posicione a velocidad de cero a su máxima y aceleración abrupta, y después de un cierto tiempo mantenga su posición, este requerimiento se da una sola vez, es decir no se le pide que cíclicamente siga al escalón. Como en el osciloscopio solo se pueden observar señales periódicas, es decir que se están repitiendo una y otra vez, no se podría observar esto a menos que nos pudiéramos sincronizar con el evento, y se tuviera un osciloscopio con memoria. 142 La PC tampoco puede observar a la velocidad de operación del motor; sin embargo en el FPGA, aprovechando los recursos de la aplicación, nos permite observar en tiempo real el evento, esto es posible porque se tiene un hardware dedicado a esta tarea y puede capturar a la misma velocidad del evento, los valores que se capturan se tiene que almacenar, no se puede tomar y mandar a la PC inmediatamente, correría el riesgo de no alcanzar a ver el siguiente muestreo, lo que se hace es muestrear todo el evento, y una vez que se tienen todos los puntos, se mandan a la PC y los gráfica. A este método de adquisición, se le conoce como una adquisición en ráfaga, no hay tiempo ni de mandarlos a la PC, ya que no hay tiempo ni para direccionar, o seguir algún protocolo de comunicación. 4.8.1 Captura en ráfaga de la respuesta del motor Para capturar los valores a graficar, se debe establecer una cantidad específica de muestras, ya que esta gráfica es discreta se le debe dar una cantidad finita de puntos, se debe determinar cantidad de puntos en la horizontal, y cantidad puntos a la vertical. Se diseña a la vertical con 256 valores, cantidad almacenable a ocho bits, se considera conveniente este tamaño, porque del tamaño de la pantalla de la PC, abarca aproximadamente un cuarto de esta, no es necesario tomar más valores si no se van a poder observar en pantalla, para dar un rango de variación el máximo que puedo muestrear es el 255 partiendo del cero, produciendo así que el escalón solicitado al motor, debe ser de 200 posiciones, para tener 55 espacios libres para la observación al sobretiro. Para el eje horizontal del tiempo, se debe construir una señal base tiempo, al reloj del sistema se le realiza un escalamiento para obtener una frecuencia en ms, quedando entonces la escala de las “x” en ms El diseño se basa, en tomar una muestra cada cierto tiempo y guardar su valor, otro intervalo de tiempo y guarda otro valor, y así continuamente 256 veces, esto se va guardando en una memoria, para graficar, lo que hace la pc es leer el contenido de esa memoria. De la memoria en el FPGA, solo se extraen los puntos de las posiciones en las que el motor estuvo mientras generaba el escalón, se almacena en un arreglo serial de registros, se tienen 256 registros que guardan específicamente 256 valores, en cada pulso de reloj se guarda el nuevo valor y se van recorriendo. 143 Capítulo 4. Control La implementación de este diseño se realiza, mediante el circuito mostrado en la Figura 123. Figura 123 Implementación captura en ráfaga Se tiene un contador con el cual se genera la escala de tiempo de la gráfica, por medio de dividir el reloj del sistema de 50 MHz, en su división binaria 15, cada ese tiempo se toma una nueva muestra, el valor de este contador es la señal de reloj de todos los registros de la memoria, y la memoria podrá hacerle caso a esta señal de reloj, solo si se le indica al sistema el inicio de la captura o si no ha llegado a memorizar los 256 valores, este pulso debe estar definido en duración, con valor conocido ya que es el tiempo, en que se toma una nueva muestra. La señal de inicio, es la señal con la que se indica al sistema el comienzo de adquisición de datos, genera un valor que permite que pase la escala de tiempo, generando un enclave, la señal de inicio dispara a uno el valor de un “preset”, esta señal es registrada, con el fin, de que una vez que se recibe se mantenga durante todo el muestreo. La obtención de la señal de inicio, es de le siguiente manera, si se tiene un registro para el valor de posición de referencia, y se va a pedir un desplazamiento de 200 pasos, se van a mandar 200 pulsos, el primero de esos 200, debe disparar la ráfaga, ya que es el punto conocido de inicio de movimiento. Pero existen tres señales por medio de la operación lógica “And”, para permitir o desactivar la captura, la de inicio, la escala de tiempo y la de paro, la señal de paro se genera por medio de otro contador el cual lleva el conteo de valores que se han 144 capturado y mediante un bit, el bit 9, cuando desbordan a los ocho bits demuestra que ya se capturaron 256 cuentas, y la señal borrar del registro paro de captura es la que se activa con este bit para mandar un cero a la “And” y detener la captura, así como reiniciar el contador de muestras tomadas, logrando así adquirir exactamente las 256 muestras de lo contrario se perdería información. Para almacenar las muestras se implementa una cola, que es un arreglo de 256 registros, 16 por 16, otro detalle a observar con estos registros es que son registros de corrimiento que se implementan utilizando tablas, es decir con pura lógica, la cantidad de flip flops que se tienen en el FPGA no es infinita es limitada, si esos registros se hacen con flip flops se agotaría este recurso, entonces la primitiva utilizada para generar estos registros no usa flip flops usa lógica, y construye los registros de esa forma, realizarlos con lógica significa que son hechos por medio de compuertas lógicas no solo con flip flops. El siguiente paso es la conexión con la pc para poder graficar el comportamiento del motor, para leer se vuelve a dar la misma señal de reloj de los registros, pero ahora desde la PC 256 veces, en la señal de reloj de los registros se tiene a su entrada una compuerta OR ya que con la señal de la captura en ráfaga o con la PC, se pueden ir recorriendo estos registros, para su lectura, leyendo el valor registrado solo del último registro, se asigna un registro del banco de datos para poner ahí la información y mandarla a la PC. Los valores se almacenan en un arreglo en la PC, y con la función de la PC de dibujar línea entre punto uno y punto se realiza trazado de la gráfica. El circuito de la captura, es implementado en el bloque “Captura”, mostrado en la Figura 124, donde como entrada se tiene al reloj del sistema, la señal de borrado general, la señal de inicio y la señal de lectura; como salida se tiene el dato capturado a ocho bits. Figura 124 Bloque "Captura" 145 Capítulo 4. Control 4.9 Interfaz de potencia Puente “H” trifásico La interfaz de potencia, mediante la cual se realiza el cambio de la polaridad en las bobinas, se diseñó e implemento con las siguientes características. Aislamiento eléctrico entre la etapa de potencia y la lógica digital del sistema Apertura y cierre por medio de IGBT Voltaje máximo de 600 V Corriente máxima 30 A Supresión de transitorios de voltaje Es de relevancia mencionar que para determinar la frecuencia del PWM, se debe tomar en cuenta los dispositivos específicos que se utilizarán para conmutar al motor; ya que no todos los transistores manejan la misma frecuencia, depende del modelo y fabricante elegido. Para esta aplicación se utilizan IGBT, los cuales por especificaciones del fabricante no pueden trabajar a más de 20 kHz, para evitar trabajar en la zona activa del transistor y llevarlo a una pronta degradación, en esta aplicación se conmutan a la velocidad aproximada de 18 kHz, como se menciona en la generación del PWM. El diseño a bloques de esta interfaz, como se puede observar en la Figura 125, tiene como entrada las señales de PWM provenientes del FPGA, son ingresadas individualmente a un optoacoplador, teniendo un total de seis optoacopladores, de la salida de los optoacopladores de manera aislada al FPGA se entregan los PWM al accionador de compuerta de los IGBT, por último los transistores abren y cierran de acuerdo a los PWM generados, permitiendo a las bobinas del motor recibir energía y accionar el motor, los IGBT son protegidos contra picos de voltaje que podrían perforarlos por medio de supresores de transitorios. Figura 125 Diagrama a bloques de la interfaz de potencia 146 Para el aislamiento eléctrico, se realiza la conexión de las señales de PWM provenientes del FPGA con los optoacopladores, como se muestra en el diagrama de la Figura 126, un optoacoplador para cada polaridad, es decir individual para AL,AH,BL,BH,CL y CH. Entre la señal del FPGA y la entrada del led de aislamiento, se conecta un capacitor y una resistencia conectados paralelamente entre sí, con la finalidad de: la resistencia limite el paso de corriente por el led, y el capacitor es para acelerar la conmutación de encendido a apagado del led, ya que cuando la señal del FPGA sea cero el led no vera cero, vera el voltaje del capacitor pero en forma negativa, por lo cual, el led descargará con mayor velocidad al tener una referencia hacia voltaje negativo. Figura 126 Diagrama eléctrico del aislamiento eléctrico de la interfaz de potencia Las salidas de los optoacopladores, son introducidas en el accionador de compuerta, para esta aplicación se hace uso del chip fabricado por International Rectifier IR2132, el cual es un accionador para puente H de tres fases, y tiene las características descritas en la referencia [36]. 147 Capítulo 4. Control De acuerdo a la información que el fabricante proporciona para el funcionamiento de su chip [37] [38], se realizó la implementación del circuito mostrado en la Figura 127 en el cual contiene los dispositivos necesarios para que el IR2132 funcione, además de los capacitores de arranque, para lograr el cierre de los transistores superiores del puente H. Figura 127 Conexión del accionador de compuertas de los IGBT y capacitores de arranque Por último las señales del accionador de compuertas, son introducidas a las compuertas de los IGBT, haciendo corresponder a las señales de cada transistor de acuerdo al IR2132. Como resultado se tiene la conexión mostrada en el circuito de la Figura 128, como se puede observar en paralelo a la fuente de alimentación, se conecta el supresor de picos mediante el cual se protege a los transistores para que no vayan a ser perforados por la presencia de un voltaje mayor al que están especificados. De no protegerlos, al intentar hacer operar el control de posición con carga se suscitará el problema, que al accionar para intentar llegar a la posición de referencia y existir oscilaciones al acercarse a esta, se generen picos de voltaje muy altos, haciendo fallar los transistores y se dé un corto circuito, debido a que estos quedan 148 como si estuvieran cerrados todos al mismo tiempo, generando que toda la interfaz de potencia se dañe, debido al flujo de voltaje de 340 V por toda la interfaz. Figura 128 IGBT´s conectados para formar el puente H trifásico 4.10 Circuitos de protección En todo sistema se requiere de circuitos que realicen un continuo monitoreo en la operación del motor, con la capacidad de detener al sistema antes de que, por motivos de falla se degrade algún o algunos componentes. 4.10.1 Verificación de correcta conexión de fases En operaciones de campo, es común encontrar el problema de interconectar por primera vez al motor con el controlador, problema acrecentado cuando se conectan motor y controlador de diferentes fabricantes, o simplemente porque no es información que el fabricante proporcione, debido a que cada fabricante tanto de controlador como de motor, puede tener consideración propia para determinar el nombre, número y colocación de cada fase, en la maquila de sus productos. Como consecuencias de este problema se tiene, degradación del motor, imposible control y accionamiento, e incluso el daño total al controlador. 149 Capítulo 4. Control Considerando la cantidad de recursos, que se pueden dañar por la mala interconexión del motor con el controlador, se diseña e implementa el circuito de protección capaz de verificar si la conexión de las fases es correcta. El diseño de esta protección se describe en la Figura 129, se basa en monitorear si la dirección en la que gira realmente el motor es igual a la dirección de referencia, se hace uso de lógica digital para determinar si el valor de las direcciones es el mismo, en caso de que esto sea positivo, el motor podrá seguir su giro, en caso contrario el motor se detendrá por medio de desactivar a la interfaz de potencia. Para poder realizar el monitoreo es necesario que el motor gire por lo menos una posición, con esto se puede conocer la dirección real del giro, sin embargo se le puede permitir al sistema verificar después de más posiciones recorridas, en caso de que se requiera. Figura 129 Diagrama a bloques de la protección para verificación de conexión de fases La implementación se realiza en el FPGA, por medio del bloque mostrado en la Figura 130, teniendo como entrada a la señal general de borrado del sistema, la señal “cambio_pos” que determina que la posición del motor cambio, los datos a 10 bits de la posición actual y la posición anterior, la dirección de referencia y la frecuencia de los filtros de ruido digitales; como salida se tiene la señal “revol” en la cual se obtiene el indicador de que el motor dio una revolución, utilizado en el bloque de la medición interna de velocidad, y la señal “Activa” por medio de la cual se activa o desactiva a la interfaz de potencia. 150 Figura 130 Bloque "Verifica_fases" Internamente este bloque es conformado, por el circuito lógico mostrado en la Figura 131. Figura 131 Esquema para la verificación de fases En el cual por medio del bloque “Dir_real”, se obtiene la dirección real en la que gira el motor, a través de realizar la diferencia de la posición actual menos la posición anterior, como se muestra en la Figura 132, el dato tanto de posición actual como de posición anterior son ajustados a un bus de 11 bits con la finalidad de que, con el onceavo bit se pueda observar que el motor giro una revolución. 151 Capítulo 4. Control Se realiza la diferencia, y del resultado se toma al bit 9 para conocer la dirección en la que está girando el motor, teniendo que en caso de que sea cero el motor giro a la derecha y si es uno el motor giro a la izquierda, acciones que concuerdan con las direcciones que se toman en el decodificador con estos valores. El bit 10 del resultado de la diferencia, es el que sirve para indicar que la resta se desbordo, en este punto de desborde es cuando el motor paso de 0 a 1024 o viceversa, por tanto es cuando el motor dio una revolución. Este valor se registra para poder utilizarlo en la medición de velocidad interna. Figura 132 Lógica para la obtención de la dirección real de giro El módulo “Checa_giro”, es el encargado de monitorear si la dirección de referencia y la real son iguales o no, para tomar una decisión. En la Figura 133, se muestra la lógica mediante la cual opera este bloque, a su entrada se tiene un contador el cual va a definir después de cuantas posiciones se debe verificar el giro. Para lo que se definió, que al revisar giro es necesario por fuerza que el chequeo sea realice desde un cambio de posición, ya que el bloque de control PID va a poder ir y venir en ese rango de cambio, es decir de revisar el giro hasta después de dos cuentas o más, el actuar del control podría activar la protección sin ser necesario. Entonces se tiene que, el módulo “Checa_giro” compara en cada posición, es decir con un ligero giro de cero a uno en posiciones, ya tiene la información necesaria para actuar. 152 Figura 133 Lógica para verificar giro de motor La verificación de si el giro fue correcto o erróneo, se realiza en sincronía con la señal de “cambio_pos”, debido a que si se comparan direcciones sin ella, existe la posibilidad de comparar la dirección de referencia con una dirección real no definida, debido al tiempo que tarda la operación resta en “Dir_real”. Al realizar la comparación de direcciones si estas fueron diferentes, a la señal “Para” se le asigna un uno lógico, de lo contrario mantiene el valor de inicialización, que se le asigna en el borrado general, que es de cero. Cabe mencionar que una vez que se detectó la falla, esta protección no puede ser modificada por ningún medio a menos que se reinicialice el sistema. Por último, se registra el valor obtenido en un flip flop con preset, a la salida “Para” del bloque “Checa_giro” se le conecta a la salida un inversor para que sea excluyente el preset del borrado del registro y así no se puedan dar los dos casos al mismo tiempo. Al checar el giro para ver las fases si están bien conectadas se notó, que en ocasiones es ligero el movimiento del motor y lo detiene, pero en otras ocasiones avanza más y después para, esto se debe a que se da la casualidad que la conexión en fases, concuerda con la secuencia en el paso eléctrico de la conmutación en la posición que se encuentra, y no es hasta la siguiente secuencia de conmutación en donde falla, entonces es por esto que en ocasiones puede girar un poco más y después detenerse. Como ejemplo, se puede dar la casualidad que aun equivocadas de conexión las fases, se tenga A+ con B- y que en la secuencia de conmutación sea precisamente A+ con B- la que corresponde, entonces giraría pero en el siguiente paso eléctrico la fase que este mal conectada, tendrá que fallar y con esto, la secuencia se rompe provocando un giro erróneo. 153 Capítulo 4. Control Cabe mencionar que esta protección no solo opera en el inicio del accionamiento del motor, más bien monitorea durante el mismo tiempo que dure la dinámica del motor, para fallas futuras como puede ser, la falta de energía en alguna fase aunque estén bien conectadas. 4.10.2 Protección error máximo La protección de error máximo, es muy útil cuando se sintoniza el motor así como para eventos no imprevistos, como que el mecanismo se atasque. Esta protección basa su funcionamiento en monitorear al error, y cuando el error sea mayor al valor preestablecido un bit enunciara este estado. En la Figura 134, se muestra el diagrama de la protección error máximo, como se puede observar, a su entrada se tiene la señal de borrado general del sistema, la frecuencia de muestreo igual a la utilizada en el bloque de control, y el error a 16 bits; como salida se tiene el puerto “Protec”, en el cual se obtiene el resultado del monitoreo. Figura 134 Diagrama de la protección error máximo La lógica mediante la cual trabaja esta protección, se muestra en la Figura 135, al realizar el borrado general del sistema, se asigna a las señales “Protec” el valor uno y “Error_reg” en ceros, que son valores de inicialización, en este estado la protección permite el giro del motor. En sincronía con la frecuencia de muestreo del control, se registra un nuevo valor de error para realizar la comparación, además de asignar al puerto “Protec” el valor cero, en caso de que la falla se haya presentado, registrando así el valor de la protección para evitar tomar un valor en transición. 154 Figura 135 Implementación en lógica digital de la protección máximo error Simultáneamente, a lo descrito, se realiza la comparación del error con el error máximo permitido, en este caso el error máximo a soportar es de doscientas posiciones, en caso de que sea mayor se asigna a “falla” el valor lógico de cero, en caso contrario se le asigna el valor lógico uno. 155 Capítulo 5. Pruebas y resultados Capítulo 5. Pruebas y resultados 5.1 Introducción En el presente capítulo, se muestran los resultados obtenidos al implementar partes aisladas del controlador, para evaluar su funcionamiento; así como los resultados de la integración de todos los componentes del controlador, mostrando la capacidad del algoritmo implementado, y la capacidad del controlador desarrollado para posicionar al motor, o de mantenerlo a una velocidad constante, a pesar cambios externos en la carga a desplazar. 5.2 Señales obtenidas para protocolo con el convertidor analógico digital Las señales que se generan para realizar protocolo de comunicación, entre el FPGA y la tarjeta del convertidor de Resolver a digital, se muestran en el oscilograma de la Figura 136, en la cual se demuestra que las señales de muestra y Leer se generan a la frecuencia de 3 kHz y el tiempo “t”, que es el tiempo entre flancos de bajada, tiene duración de 3.2 µs siendo mayor al valor que el fabricante especifica como mínimo de 608 ns, garantizando evitar problemas de traslape de señales. 156 Figura 136 Frecuencia muestreo y lectura 5.3 Filtro digital En la Figura 137 se muestra el oscilograma, que demuestra el funcionamiento del filtro digital, cabe recordar que en este caso el valor que se desea tenga cierta duración para tomarlo como un dato es el valor lógico cero. Como se puede observar, la señal “Ent” se encuentra en valor cero solo una vez por cada ciclo de reloj, como se mencionó, este cero debe durar tres ciclos de reloj como mínimo para que sea considerada, por tanto el circuito de filtro considera que este cero es un ruido por no contar con la duración suficiente y la señal de “Sal” se mantiene sin cambio, continúa siendo un valor lógico alto. Figura 137 Filtro digital, filtrando ruido De lo contrario, cuando el cero está presente por los tres ciclos de reloj como se muestra en la Figura 138, la salida lo considera como un dato de la señal y en la salida se obtiene este dato. Como se puede apreciar es justo cuando se cumplen los tres ciclos de reloj, cuando la salida realiza la transición hacia el nuevo valor y lo mantiene así hasta que la 157 Capítulo 5. Pruebas y resultados señal de entrada cambia de valor lógico y de nuevo cuando se vuelve cero tiene que durar los tres ciclos de reloj para que sea considerado. Figura 138 Filtro digital, detectando que no es un ruido 5.4 Monoestable digital El monoestable digital que es utilizado para identificación de cambios rápidos, en las señales, se implementa en el hardware dedicado, obteniendo lo mostrado en el oscilograma de la Figura 139. Se puede observar como el monoestable opera, generando un pulso con el tiempo predefinido, línea amarilla, cada vez que detecta un flanco de subida, en la señal monitoreada, línea azul. Figura 139 Monoestable digital monitoreando una señal 5.5 Multiplicador de encoder emulado Con el multiplicador de encoder, se logra tener una resolución cuatro veces más fina, del encoder emulado obteniendo más valores de posiciones, en las que se puede encontrar al rotor. 158 En el oscilograma de la Figura 140, se muestra la señal “A” que se recibe del convertidor analógico digital, que es con la que típicamente se mide la posición del rotor. Figura 140 Señal "A", del encoder emulado La Figura 141 muestra en un oscilograma el resultado obtenido al multiplicar la resolución del encoder emulado, en el rango que solo se obtendría un valor de posición, se logran obtener cuatro posiciones intermedias, logrando aumentar la precisión del sistema regulatorio de posición. Figura 141 Oscilograma del resultado obtenido al multiplicar la resolución del encoder emulado 5.6 Generación de Ancho de pulso PWM En la Figura 142, se muestra el oscilograma de la salida obtenida del divisor de frecuencia, en el cual se observa que se tienen la frecuencia de 4.16 MHz, este tren de pulsos será la señal de pulso de reloj para el generador de PWM, esta frecuencia es dividida entre 256 valores iguales, ya que el PWM a generar es de ocho bits. 159 Capítulo 5. Pruebas y resultados Figura 142 Tren de pulsos a la salida del bloque "Div_Frec" El PWM que se obtiene, se puede observar en la Figura 143, la frecuencia obtenida después de los cálculos, para conmutar a los transistores es de 16.27 kHz. Se considera que el PWM obtenido es bueno en características, para operar los transistores Figura 143 PWM trapezoidal generado 5.7 Conmutador Trapezoidal El resultado que se obtiene de la unión del generador de PWM con el decodificador de conmutación, se muestra en el oscilograma de la Figura 144, con el motor girando se puede observar los cambios de polaridad que se dan a la bobina por medio de la selección en el decodificador, además del PWM activo durante el trayecto de la energización de la bobina, para promediar el voltaje que observa esta última. 160 En los puntos de desconexión de la bobina se puede observar, pequeños pulsos, esto pulsos significan la energía que tiene la bobina almacenada y que está en proceso de liberarse. Figura 144 Oscilograma de la conmutación trapezoidal generada En la Figura 145, se puede observar el proceso de cambio de conexión, de la bobina de desconectada a conectada, se puede apreciar el recorte de voltaje que realiza el PWM desde el inicio de la conexión. Figura 145 Conexión de bobina en la conmutación trapezoidal. 5.8 Generación de PWM senoidal Para observar que la señal de PWM senoidal se generó correctamente, se realiza la prueba a este, mediante el circuito de filtro pasa bajas mostrado en la Figura 146, con la finalidad de que al promediar con este circuito las amplitudes generadas de PWM, se logre observar la envolvente en forma senoidal. 161 Capítulo 5. Pruebas y resultados Figura 146 Filtro pasa bajas, para prueba de PWM senoidal En la Figura 147, se muestra el oscilograma de dos PWM senoidales, generados con valores aleatorios de amplitud para efectos de prueba, después de haber sido filtrados, demostrando que se logra generar la envolvente senoidal y el desfase entre ellas de 120°. Figura 147 PWM senoidal obtenido 5.9 Banco de pruebas Para poder sintonizar al sistema, se fabricó el banco de pruebas que se muestra en la Figura 148, con la finalidad de tener una carga fija a mover, básicamente se tiene al motor conectando a su eje una polea, para conectar por medio de una banda a otra polea que puede ser frenada por fricción, y en el centro con una altura, otra polea ejerciendo acción de peso sobre una celda de carga, ya que se tiene la idea de lograr medir torque dinámico por este medio. 162 Figura 148 Banco de pruebas desarrollado La primera prueba que se realizó, fue accionar el motor y que este venciera la estática de la carga, el motor logra romper la inercia y mantiene al sistema girando, en la interfaz de la PC en la ventana de accionamiento, se observa las RPM a la que gira el motor manteniéndose estable la velocidad de giro, sin embargo, cuando se le aplica más carga por medio del freno, y sin modificar la amplitud de ancho de pulso, se observa físicamente y en la interfaz, que la velocidad disminuye inmediatamente, y aplicando más freno se llega a detener al sistema, al retirar la carga, el motor continúa su giro a la velocidad que la amplitud de PWM le permita girar. 5.9.1 Prueba en modo posición Operando al sistema en modo posición, lo primero que se realizó fue de manera experimental obtener el valor óptimo de las constantes K del algoritmo PID, para encontrar la sintonización óptima en la prueba escalón. Apoyados en la adquisición de datos en ráfaga que se realiza en el FPGA, se grafica la respuesta del motor, y así evaluar que tan bueno es el seguimiento del motor al desplazamiento solicitado. 163 Capítulo 5. Pruebas y resultados Figura 149 Sintonización y resultado de seguimiento del control a la prueba escalón Como se puede observar en la Figura 149, se le pide al motor avanzar 200 posiciones a máxima aceleración y máxima velocidad, los valores de las constantes K mostrados en esta imagen, son los que experimentalmente hicieron operar de mejor manera al control y por ende al motor. La línea roja representa al cambio abrupto que se le solicita al motor, crece de cero a doscientas posiciones en un lapso no mayor a 50 ms, y la línea azul que muestra el movimiento real del motor, hace un buen seguimiento desde la posición cero hasta las doscientas y logra mantener la posición final. Teniendo durante el recorrido un error máximo de dos posiciones entre el valor de referencia y el valor real, dando como resultado una eficiencia del 99%. 5.9.2 Prueba en modo velocidad De igual forma que en el modo posición, de manera experimental se sintoniza al sistema en modo velocidad, con el fin de que el control sin importar la carga que se le aplique al motor, mantenga la velocidad de referencia. En la Figura 150, se muestra la configuración con la que mejores resultados se obtuvieron en este modo de operación, obteniendo la eficiencia del 100%, ya que por medio del acelerador, se le puede pedir al motor girar a cualquier velocidad dentro de sus límites, y a pesar de variar la carga durante su movimiento, el motor mantiene la velocidad de referencia. 164 Lo único que cambia es el tamaño de la amplitud del ancho del pulso, que dependiendo del aumento o disminución de carga, se modifica equitativamente. Amplitud que es reflejada en el voltaje suministrado al motor y consumo de corriente. Figura 150 Sintonía y resultado obtenido en el control de velocidad El valor monitoreado del error que se observa en esta interfaz, no representa al error que el sistema está corrigiendo, ya que los cambios de referencia no se detienen mientras se le pida al motor girar y la PC no tiene la velocidad de lectura para mostrar el error a la velocidad de la dinámica del movimiento. Sin embargo, sirve para monitorear que no se genere la sobrecompensación del sistema. 5.9.3 Medición de corriente Experimentalmente las corrientes que consume el motor, en base a los dos modos de conmutación que se tienen en este desarrollo, se muestran en la Figura 151, las cuales concuerdan con lo que muestra Wang, S [39] para la reducción del rizo en el torque. 165 Capítulo 5. Pruebas y resultados La conmutación trapezoidal al girar el motor, en cada punto de conmutación tiene una caída casi hasta la línea de referencia, lo que significa perdida de corriente en este instante, por otro lado la conmutación senoidal se presenta ligeramente más constante sin caídas hasta el valor de referencia y manteniendo un nivel de medición siempre por debajo de su cresta. En base a lo anterior se puede comentar, que la conmutación senoidal permite tener consumo de corriente más constante, por lo tanto obtener mayor eficiencia del sistema. Figura 151 Formas de onda de la corriente total de la fuente hacia el motor 166 Capítulo 6 Conclusiones y trabajo futuro 6.1 Introducción Como conclusiones, se exponen los objetivos alcanzados, de acuerdo a lo que se planteó, desde el inicio del desarrollo de Controlador Senoidal para motor PMBLDC en tracción de vehículos eléctricos, identificando los elementos donde se debe aún mejorar al sistema para llegar a un producto comercial. 6.2 Conclusiones En este trabajo se ha propuesto regular la velocidad del motor PMBLDC de manera eficiente, utilizado en la aplicación de vehículo eléctrico, aspecto que se cubre satisfactoriamente, ya que de acuerdo a la teoría la única manera posible de lograrlo es conmutando al motor de manera senoidal, basados en esto, con éxito se implementa la lógica digital capaz de, en tiempo real, generar la forma senoidal al suministrar la energía al motor, considerando así que se está conmutando eficientemente al BLDC. Sin embargo, se cumplieron metas intermedias, para consumar con lo proyectado como objetivo general de este desarrollo, de las cuales se puede concluir: 1. Por medio del cálculo en tiempo real de la operación seno de la posición del rotor, y de la multiplicación por la Amplitud, se logró dar la capacidad de forma senoidal a la técnica de ancho de pulso modulado. Aunándola con el decodificador de posición, se logró que en el motor las tres bobinas estén siempre energizadas con su potencial adecuado de acuerdo a la posición del rotor. 2. Se implementó el conmutador trapezoidal, con la misma capacidad en Amplitud que el conmutador senoidal para poder realizar la comparativa entre métodos. 3. La decodificación de los puntos de conmutación a través del sensor “resolver”, fue satisfactoria ya que en base en la experimentación con el motor, se extrajo la información necesaria para lograr accionar al motor. 4. Las protecciones que se implementaron contra fallas de conexión y sobrecompensación en la sintonización del sistema, necesarias para 167 Capítulo 6. Conclusiones y trabajo futuro 5. 6. 7. 8. continuar con el desarrollo de este sistema, ya que al operar el motor de voltajes como 24 V, a voltajes cada vez más altos tendiendo a los 340 V que es el voltaje nominal del motor, la dinámica de esté cambiaba constantemente, dando resultados en ocasiones no esperados, que de no tener las protecciones se hubiera llegado a la degradación de sistema en desarrollo. Las protecciones de temperatura y corriente están pendientes a un trabajo futuro. La interfaz de operación y monitoreo, resulto ser pieza clave para poder depurar al sistema y verificar que lo implementado en el FPGA, concordaba con lo diseñado. Además de cumplir con su función principal, de configurar al sistema. Se implementó un módulo inteligente de potencia con aislamiento eléctrico entre las etapas de control y potencia, con capacidad de operar a un rango máximo de 600 V y 30 A, y protegido contra picos de voltaje por medio de supresión de transitorios. El algoritmo de control, establecido para esta aplicación es congruente y suficiente para regular la variable de velocidad, aprovechando los recursos de la regulación del modo posición, incrementado las capacidades del controlador en un solo hardware. Se realizó un banco de pruebas, por medio del cual se le pudo ajustar una carga constante al motor, para poder calibrarlo, y a través de él la retroalimentación del sistema hacía con el diseñador, se vio acrecentada mostrando los puntos a mejorar del sistema. Se puede mencionar, que se logró llevar al diseño desde cero a una implementación de controlador senoidal para motor BLDC, en su etapa funcional; sin embargo, este proyecto se puede continuar trabajando y con un poco más de esfuerzo, llegar a madurar al sistema, para llevarlo a una solución robusta para el control de posición, velocidad y aceleración de estos motores en aplicaciones de vehículo eléctrico. 6.3 Trabajo Futuro Como trabajos a realizar a futuro en este proyecto, se tiene que un vehículo eléctrico tiene una dinámica de carga, cambiante constantemente, por ejemplo, no es lo mismo que solo vaya dentro del vehículo el conductor, a que vaya una familia entera, por tal motivo, para poder tener la mejor calibración del sistema, y por ende la mejor respuesta del motor ante estas situaciones, es deseable que el control se autosintonice dependiendo de la carga, que se va a desplazar. Considerando de relevancia, al desarrollo de la autosintonía del controlador, por medio de algoritmos de inteligencia artificial, para obtener mejores resultados, cuando el controlador este trabajando en campo. 168 Anexo 1 Hoja de especificaciones servomotores serie “BE” Parker 169 Anexo 1 170 171 Anexo 1 172 173 Anexo 1 Referencias [1] Y. Hu, J. Sun, W. Li y Y. Pan, «A scientometric study of global electric vehicle research,» Scientometrics, vol. 98, nº 2, pp. 1269-1282, 2014. [2] C. P. Ordóñez, «ESTUDIO DE BATERÍAS PARA VEHÍCULOS ELÉCTRICOS.,» 2011. [3] B. Singh y S. Singh, «State of the art on permanent magnet brushless DC motor drives,» Journal of Power Electronics, vol. 9, nº 1, pp. 1-17, 2009. [4] M. E. H. Benbouzid, D. Diallo y M. Zeraoulia, «Advanced fault-tolerant control of inductionmotor drives for EV/HEV traction applications: From conventional to modern and intelligent control techniques,» Vehicular Technology, IEEE Transactions on, vol. 56, nº 2, pp. 519-528, 2007. [5] A. Sathyan, N. Milivojevic, Y.-J. Lee, M. Krishnamurthy y A. Emadi, «An FPGA-based novel digital PWM control scheme for BLDC motor drives,» Industrial Electronics, IEEE Transactions on, vol. 56, nº 8, pp. 3040-3049, 2009. [6] M. Steinbuch, «Control of Three Phase Brushless DC Motors». [7] Microsemi, «Speed Control of Brushless DC Motors- Sinusoidal Commutation with Hall Sensors,» One Enterprise, Aliso Viejo CA 92656 USA Within the USA: +1 (949) 380-6100, 2012. [8] S. Davis, S. Diegel y R. Boundy, «Transportation Energy Data Book: Edition 26. Oak Ridge National Laboratory,» ORNL, vol. 6978, 2007. [9] N. A. F. D. C. U.S. Department of Energy, Electric Drive Vehicles Available by Manufacturer, Model Year 2014, 2014. [10] T. R. C. at Argonne National Laboratory, Hybrid and Plug-in Vehicle Sales, 1999-2013, 2014. [11] Y. Xu, Q. Yuan, J. Zou, Y. Yao y G. Zhu, «Sinusoidal periodic carrier frequency modulation in reducing electromagnetic noise of permanent magnet synchronous motor,» Electric Power Applications, IET, vol. 7, nº 3, pp. 223-230, March 2013. [12] P. M. Corporation, «Brushless AC Motor Commutation AN1004,» 2075-N Corte del Nogal Carlsbad, CA 92009-1415 USA. 174 Referencias [13] A. C. C. O. Sánchez García, «EN APLICACIONES MECATRÓNICAS ¿MOTOR O SERVOMOTOR?,» Boletín UPIITA, nº 44, Julio 2014. [14] Parker_Motion, «Brushless Motors». [15] J. de Santiago, H. Bernhoff, B. Ekerg{\aa}rd, S. Eriksson, S. Ferhatovic, R. Waters y M. Leijon, «Electrical motor drivelines in commercial all-electric vehicles: a review,» Vehicular Technology, IEEE Transactions on, vol. 61, nº 2, pp. 475-484, 2012. [16] Galil, «Sinusoidal Commutation of Brushless Motors Applicationnote 3414,» 3750 Atherton Road Rocklin, CA 95765 USA. [17] W. Brown, «Brushless DC Motor Control Made Easy,» Microchip Technology Inc, 2002. [18] Galil_JohnH, Trapezoidal vs Sinusoidal Brushless Servo Amplifiers, 30. [19] I. C. Hernández, «Diseño de un control de posición y velocidad para un servomotor sin escobillas de tres fases de uso industrial,» 2013. [20] M. Rajne, Generate your own commutation table: Trapezoidl control 3-phase BLDC motors using hall Sensors, 2013. [21] D. Trends, Brushless Motor Commutation, 2008. [22] F. Fica, Armónicos. [23] F. Fornieles, Armónicos: Efectos, diagnostico y soluciones, www.circutor.com, 2009. [24] S. Electric, «Capítulo L Mejora del factor de potencia y filtrado de armónicos». [25] R. M. H., Electrónica de potencia, P. Educación, Ed., Tercera edición, 2004. [26] J. E. Volder, «The CORDIC Trigonometric Computing Technique,» Electronic Computers, IRE Transactions on, Vols. %1 de %2EC-8, nº 3, pp. 330-334, Sept 1959. [27] B. Viale, «Sensores de reactancia variable y electromagnéticos,» 1995. [28] K. Oh, «Application Note 9016 IGBT Basic I,» Rev. A, Fairchild Semiconductor Corporation, pp. 1-29, February 2001. [29] Fairchild, «AN-6076 Design and Application Guide of Bootstrap Circuit for High-Voltage GateDrive IC,» 2008. 175 Anexo 1 [30] HARRIS, «Suppression of Transients in an Automotive Environment,» 1999. [31] T. Instruments, «Current Recirculation and Decay Modes,» Post Office Box 655303, Dallas, Texas 75265, 2009. [32] XILINX, Field Programmable Gate Array (FPGA). [33] Xilinx, «Spartan-3A/3AN FPGA Starter Kit Board User Guide,» 2008. [34] S. Alberino, P. Folino y C. Verrastro, «Variante en el algoritmo PID para evitar el uso de un generador de trayectoria trapezoidal,» X RPIC Proceedings, San Nicol{\'a}s, Bs. As, pp. 659663, 2003. [35] T. I. Incorporated, Logic Solutions for IEEE Std 1284, 1999. [36] I. Rectifier, «IR2130/IR2132(J)(S) & (PbF) 3-PHASE BRIDGE DRIVER,» 233 Kansas St., El Segundo, California 90245 Tel: (310) 252-7105, 2004. [37] I. Rectifier, «Application Note AN-985 Six-Output 600V MGDs Simplify 3-Phase Motor Drives,» International Rectifier • 233 Kansas Street, El Segundo, CA 90245 USA. [38] I. Rectifier, «Application Note AN-978 HV Floating MOS-Gate Driver ICs,» 233 Kansas St., El Segundo, California 90245 Tel: (310) 252-7105, 2007. [39] S. Wang, «BLDC Ripple Torque Reduction via Modified Sinusoidal PWM,» FAIRCHILD SEMICONDUCTOR POWER SEMINAR 2008 - 2009, 2008 - 2009. [40] J. Zhong, «PID controller tuning: a short tutorial,» class lesson), Purdue University, 2006. [41] varios, EVS27 Simposio y Exposición Internacional de vehículos eléctricos, 2013. [42] K. Um, «Application Note 9020 IGBT Basic II,» Rev. A, Fairchild Semiconductor Corporation, pp. 1-25, April 2002. [43] STMicroelectronics, «SLLIMM™ (small low-loss intelligent molded module) IPM, 3-phase inverter - 18 A, 600 V short-circuit rugged IGBT,» 2013. [44] STMicroelectronics, «AN2372 Low cost sinusoidal control of BLDC motors with Hall sensors using ST7FMC,» 2006. [45] B. Singh, «Recent advances in permanent magnet brushless DC motors,» Sadhana, vol. 22, nº 6, pp. 837-853, 1997. 176 Referencias [46] Z. Shen, D. Briggs y S. Robb, «Design and characterization of high-voltage self-clamped IGBT's,» Electron Device Letters, IEEE, vol. 20, nº 8, pp. 424-427, Aug 1999. [47] R. Shanmugasundram, K. Zakariah y N. Yadaiah, «Implementation and Performance Analysis of Digital Controllers for Brushless DC Motor Drives,» Mechatronics, IEEE/ASME Transactions on, vol. 19, nº 1, pp. 213-224, Feb 2014. [48] T. P. Santamaría, Tecnología Electrónica, U. de Zaragoza., Ed., Universidad de Zaragoza.. [49] T. Roy, L. Smith y J. Prymak, «ESR and ESL of ceramic capacitor applied to decoupling applications,» de Electrical Performance of Electronic Packaging, 1998. IEEE 7th Topical Meeting on, 1998. [50] A. Poullikkas, «Sustainable options for electric vehicle technologies,» Renewable and Sustainable Energy Reviews , vol. 41, nº 0, pp. 1277-1287, 2015. [51] A. C. C. O. Sánchez García, «VEHÍCULO ELÉCTRICO, ¿POR QUÉ HASTA AHORA?,» Boletín UPIITA, nº 42, Marzo 2014. [52] F. MONASTERIO y {. GUTIERREZ, Modelo lineal de un motor de corriente continua, Art, 2012. [53] S. Laboratories, «AN486 High-Side Bootstrap Design Using Si823x ISODrivers in Power Delivery Systems,» 400 West Cesar Chavez, Austin, TX 78701, 2010. [54] D. Kaiser y P. Compumotor, «Fundamentals of servo motion control,» Parker Compumotor, vol. 11, 2001. [55] L. Huang, J. Li y D. Zhang, «Frequency-controlable sine signal based on PWM and its implementation on FPGA,» Frontiers of Mechanical Engineering, vol. 7, nº 3, pp. 322-328, 2012. [56] D. Fodorean, «Study of a High-Speed Motorization With Improved Performances Dedicated for an Electric Vehicle,» Magnetics, IEEE Transactions on, vol. 50, nº 2, pp. 921-924, Feb 2014. [57] W. H. C. Elizabeth B. Chambers, «GENERAL MOTOR TERMINOLOGY,» 2009. [58] L. Dump, «Suppression of Transients in an Automotive Environment,» Application Notes and Technical Brief, p. 9312. [59] E. A. Division, BE Series Servo Motors, 2013. 177 Anexo 1 [60] P. Damodharan y K. Vasudevan, «Sensorless Brushless DC Motor Drive Based on the ZeroCrossing Detection of Back Electromotive Force (EMF) From the Line Voltage Difference,» Energy Conversion, IEEE Transactions on, vol. 25, nº 3, pp. 661-668, Sept 2010. [61] C. Chan y K. Chau, «An overview of power electronics in electric vehicles,» Industrial Electronics, IEEE Transactions on, vol. 44, nº 1, pp. 3-13, Feb 1997. [62] S. Bhogineni y K. Rajagopal, «PWM schemes for Average line to line voltage based sensorless control of BLDC motor,» de Power Electronics (IICPE), 2012 IEEE 5th India International Conference on, 2012. [63] 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]. [64] W. Brown, «Brushless DC Motor Control Made Easy,» 2002. 178