Diseño e implementación de un convertidor trifásico bidireccional para un motor de inducción con capacidad de frenado regenerativo.
Helbert Arturo López Amaris
Trabajo de grado presentado al departamento de ingeniería electrónica de la Pontificia Universidad Javeriana como requisito parcial para el grado de
Magister En Ingeniería Electrónica
Director: Ing. Abdel Karim Hay Harb M.Sc.
Noviembre de 2010
Palabras claves: Modelaje y control de motores, motores de inducción, Control Orientado por campo, Modulación por vectores espaciales, Inversor por fuente de voltaje, frenado regenerativo
Agradecimientos.
Quiero dar gracias ante todo a Dios, por haberme permitido llegar con salud y fortaleza al objetivo de terminar este trabajo. También quiero agradecer a mis padres ya que con su amor y apoyo me han llevado por el camino correcto para que las metas que tengo se puedan cumplir. Igualmente quiero dar agradecimientos sinceros al director de este trabajo el ingeniero Abdel Karim Hay por los consejos y lecciones que me dio en el desarrollo de las clases y del trabajo mismo. A los amigos y compañeros de la maestría les doy gracias por haber convertido el desarrollo de mis estudios de maestría en algo bastante agradable. A Andrés por haber hecho más ameno estudiar en la universidad, a Oscar y Camilo porque con ellos siempre fue más fácil estudiar y a Alberto Mario por haberme ayudado en la materia de sistemas lineales en 2008. A Jeilson, Milton, Arnold y los demás compañeros de maestría les agradezco porque con su pregunta constante: ¿Cómo va la Tesis? me animaban a seguir trabajando. Y finalmente a Claudia que en las últimas semanas del trabajo fue un apoyo importante y de alguna manera hizo desaparecer el aburrimiento que sentía en la soledad de un cubículo.
2
Tabla de Contenido
Lista de Figuras. ............................................................................................................... 5 Capítulo 1. Introducción ................................................................................................... 7 1.1.
Descripción del trabajo ...................................................................................... 7
1.2. Descripción general del sistema............................................................................. 8 Capítulo 2. Modelación del motor de inducción. ........................................................... 10 2.1. Modelo del motor de inducción en el marco de referencia rotativo. ................... 13 2.2. Modelo de señal pequeña de la máquina de inducción ........................................ 18 Capítulo 3. Control Orientado por Campo ..................................................................... 21 3.1. Principios Básicos ................................................................................................ 21 3.2. Control Orientado por Campo Directo ................................................................ 22 3.3. Control Orientado por Campo Indirecto .............................................................. 26 Capítulo 4. Modulación por vectores espaciales e inversor trifásico. ............................ 29 4.1. Inversor por fuente de voltaje. ............................................................................. 29 4.2. Modulación por vectores espaciales. ................................................................... 29 4.3. Esquemas de SVM e implementación. ................................................................ 33 Capítulo 5. Estrategias de control del sistema. ............................................................... 38 5.1. Diseño del control de los lazos de realimentación. .............................................. 38 5.2. Realización de los controladores PID discretos para la implementación en un DSP. .................................................................................................................................... 41 5.3. Estimación del flujo ............................................................................................. 42 Capítulo 6. Frenado regenerativo. .................................................................................. 45 6.1. Frenado dinámico. ............................................................................................... 45 6.2. Frenado regenerativo. .......................................................................................... 46 7. Diseño e implementación de Software y Hardware. .................................................. 47 7.1. Implementación del Software. ............................................................................. 47 7.2. Implementación del Hardware. ............................................................................ 48 7.2.1. Inversor por fuente de voltaje........................................................................ 48 7.2.2. Diseño de los drivers. .................................................................................... 48 3
7.2.3. Circuito de acondicionamiento de las señales medidas. ............................... 49 7.2.4. Medición de la posición y estimación de la velocidad. ................................. 50 Capítulo 8. Resultados Obtenidos. ................................................................................. 51 Capítulo 9. Resumen y conclusiones. ............................................................................. 53 REFERENCIAS ............................................................................................................. 54 APÉNDICE A – Código empleado en el DSP. .............................................................. 55 APÉNDICE B – Esquemáticos del Hardware. ............................................................... 64
4
Lista de Figuras. Figura 1.1. Descripción general del sistema. .................................................................... 9 Figura 2. 1. Circuito equivalente por fase del modelo clásico del motor de inducción. 10 Figura 2. 2. Corriente en el estator representada como un vector espacial y sus componentes. .................................................................................................................. 11 Figura 2. 3. Corriente en el estator representada como un vector espacial y sus componentes en ds, qs, d y q. ................................................................................................................ 12 Figura 2. 4. Circuito equivalente por fase simplificado del modelo clásico del motor de inducción. ....................................................................................................................... 13 Figura 2. 5. Circuito dinámico dq equivalente de la máquina de inducción. ................. 14 Figura 2. 6. Circuito equivalente de la figura 2.1 referido al estator y despreciando la Resistencia de magnetización. ........................................................................................ 16 Figura 2. 7. Diagrama fasorial de las corrientes de estator y rotor del circuito de la figura 2.6. .................................................................................................................................. 17 Figura 3.1. Esquema del control por campo orientado directo. ...................................... 23 Figura 3.2. Control orientado por campo indirecto. ....................................................... 26 Figura 4.1. Inversor por fuente de voltaje. ..................................................................... 29 Figura 4.2. Representación simplificada del inversor por fuente de voltaje. ................. 30 Figura 4.3. Vectores Espaciales. ..................................................................................... 31 Figura 4.4. Síntesis del vector de referencia. .................................................................. 32 Figura 4.5. Síntesis del vector de referencia con ayuda de dos vectores activos y uno nulo. ........................................................................................................................................ 33 Figura 4.6. Esquema de conmutación simple de SVM................................................... 34 Figura 4.7. Esquema de conmutación SVM 2. Trifásico centrado. ................................ 35 Figura 4.8. Esquema de conmutación SVM 3. Trifásico doble periodo. ....................... 35 Figura 4. 9. Esquema de conmutación SVM 4. Bifásico alineado a la derecha. ............ 36 Figura 4.10. Esquema de conmutación SVM 5. Bifásico centrado. ............................... 36 Figura 4.11. Lógica de selección del vector nulo en el sector 1. SVM 6. ...................... 37 Figura 5. 1. Respuesta al paso del lazo de control del flujo a 900 RPM. ....................... 39 Figura 5. 2. Respuesta al paso del lazo de control del torque a 900 RPM. .................... 39 Figura 5. 3. Diagrama de bloques para obtener ωr/iqref por medio de Mason. ................ 40 Figura 5. 4. Respuesta al paso del lazo externo de control de velocidad a 900 RPM. ... 40 Figura 5. 5. Diagrama de bloques del controlador PID con corrección anti-windup. .... 41 Figura 5. 6. Diagrama de bloques de la estimación de flujo mediante un modelo híbrido.43 Figura 6. 1. Frenado dinámico. ....................................................................................... 45 Figura 7. 1. Diagrama de flujo del programa implementado en el DSP......................... 47 Figura 7. 2. Implementación del inversor por fuente de voltaje. .................................... 48 5
Figura 7. 3. Circuito de driver. ....................................................................................... 49 Figura 7. 4. Circuito de acondicionamiento de señal. .................................................... 50 Figura 8. 1. Respuesta del sistema según simulación en MATLAB. ............................. 51 Figura 8. 2. RPM Vs. Potencia. ...................................................................................... 52
6
Capítulo 1. Introducción
1.1. Descripción del trabajo
Varios autores se han encargado desde hace mucho tiempo de enumerar las ventajas que tiene la máquina de inducción al compararse con otros convertidores electromecánicos de energía: escasez de mantenimiento, mayor robustez mecánica y mayor eficiencia si se compara con un motor de corriente directa o DC y menor costo al compararlo con los motores sincrónicos. Poco tiempo después de la invención del motor de inducción por Tesla a finales del siglo XIX se pensó que podría ser un gran competidor del motor más popular de la época: la máquina de corriente continua [1]. Sin embargo, la dificultad que se presenta con el motor de inducción radica en la complejidad para controlar la posición y la velocidad, debido a que para obtener control desacoplado del torque del flujo producido por las corrientes de fase del estator, la magnitud y la fase de las cantidades del estator necesitan ser controladas, además del requerimiento de un cambio en el sistema de coordenadas [2]. Para sobrepasar estas dificultades se han venido desarrollando algoritmos de control vectorial de alto rendimiento gracias a los avances en la electrónica de potencia y los microprocesadores. Si bien el motor de inducción está lleno de virtudes y es la máquina electromecánica más utilizada a nivel industrial, también tiene algunos inconvenientes que limitan sus operaciones. La necesidad de consumir una cantidad importante de energía en el circuito rotórico para producir el torque electromagnético hace que el rendimiento máximo alcanzado por esta máquina sea inferior a otras alternativas. Por otra parte, la necesidad de utilizar una buena cantidad de potencia reactiva inductiva para mantener girando el campo magnético que resulta en el entre hierro constituye una desventaja. No menos importante resulta el hecho de que no puede desarrollar tanto torque electromagnético como un motor DC de la misma potencia debido a la imposibilidad práctica de ortogonalizar espacialmente las fuerzas magnetomotrices que producen el torque [3]. No obstante, se hace actualmente un esfuerzo extendido por obtener las mejores características dinámicas y de estado estacionario del motor de inducción con el fin de tener manejadores de velocidad variable ya que sirven para economizar energía en un porcentaje considerable [4]. Para llegar a obtener una mejor comprensión de la operación dinámica del motor y por ende realizar un controlador de posición o velocidad de la mejor manera, es fundamental encontrar un modelo apropiado. Cuando se estudia un modelo que involucra cantidades trifásicas, es práctico y conveniente cambiar el sistema de coordenadas para que las cantidades puedan permanecer invariantes en el tiempo y aplicar las técnicas de control 7
clásicas. Una vez escogido el sistema de coordenadas se procede a obtener las ecuaciones diferenciales que definen el motor y se procede a desarrollar el modelo de señal grande. En este punto el sistema no es lineal y se debe notar que este modelo debe ser linealizado para el posterior diseño de un control lineal, obteniendo así el modelo de señal pequeña. Una vez extraído todos los fenómenos eléctricos y mecánicos con el fin de desarrollar un modelo pertinente, se escoge la estrategia de control que mejor se ajuste a las necesidades del sector industrial. Una de las estrategias que se ha impuesto en los últimos años es la de control por campo orientado o vectorial. Fue inventado a principios de la década de 1970 y está basado en el hecho de que un motor de inducción puede ser controlado como una máquina DC, desacoplando el torque y el flujo y controlándolos independientemente [5]. Es bien sabido que el motor DC requiere solo el control del campo o de la armadura, proporcionando una simplicidad que no es posible al controlar un motor AC. Puesto que un manejador del motor de inducción necesita un control coordinado de las magnitudes de las corrientes del estator, además de su frecuencia y su fase, además de tener la posición del rotor en cada instante, se tiene un contraste debido a la complejidad del control. Los requerimientos de las cantidades de fase, frecuencia y magnitud de las corrientes o de los flujos son posibles realizando un convertidor trifásico (inversor) y utilizando los sensores adecuados para que de esta forma y con un cambio en el sistema de coordenadas se pueda obtener un control similar al de una máquina DC. Después del control por campo orientado y de haber regulado las corrientes por medio de compensadores, surge la necesidad de modular adecuadamente el inversor. La Modulación por vectores espaciales (Space Vector Modulation o SVM) es la estrategia preferida para manejar el inversor trifásico debido a que puede incrementar la utilización del bus DC, tiene la capacidad de reducir las pérdidas de conmutación comparado con la tradicional técnica de intersección entre una señal seno y una señal triangular y se implementa digitalmente en un procesador [6]. Por último, para mejorar la eficiencia del sistema se implementa un convertidor bidireccional que ayude a recuperar la energía cinética en los momentos de desaceleración del motor. En el caso del uso de una batería como fuente de alimentación, como en un vehículo eléctrico la potencia del frenado en vez de ser disipada en forma de calor puede ser fácilmente devuelta a la fuente. También es posible devolverla a la línea AC si se tiene un rectificador PWM bidireccional alimentando al motor. 1.2. Descripción general del sistema
La figura 1.1 muestra el diagrama de bloques del sistema. La descripción de las partes importantes del sistema comprende: la transformación del sistema de coordenadas, el
8
control orientado por campo, los reguladores del torque y del flujo, el generador de vectores espaciales y el inversor por fuente de voltaje.
Figura 1.1. Descripción general del sistema. Para un rendimiento máximo del vehículo eléctrico, el inversor debe entregar corriente AC de calidad al motor de inducción desde la fuente con un mínimo de pérdidas. Para satisfacer los requerimientos de eficiencia se tiene una estrategia de control basada en DSP que consiste por un lado en el controlador orientado por campo, que se compone de los reguladores de las corrientes dq (en la figura 1.1 los bloques 1 y 2), las transformaciones de Clarke, Park y Park inversa y el bloque de la estimación del flujo y por otro lado del SVM y controladores adicionales que sirven para mejorar la dinámica y rendimiento del sistema. Las corrientes que salen del controlador por campo orientado, después del bloque de transformación de Park, son las entradas de realimentación del compensador dq y están en el marco de referencia rotativo. Estas son retornadas a coordenadas estacionarias para ser usadas por el SVM. Existen dos tipos de control por campo orientado: el método directo y el indirecto, la figura 1.1 muestra el esquema directo. La diferencia entre los dos es que el método directo logra desacoplar el torque y el flujo mediante la medición directa o indirecta del flujo del rotor, mientras que el método indirecto lo hace midiendo la velocidad o posición del rotor y calcula el valor del deslizamiento por medio de los parámetros del motor [8]. Ambos métodos tienen el inconveniente de basarse en las constantes de tiempo, ya sea del estator o del rotor que son dependientes de la temperatura y de la frecuencia por el efecto piel, lo que conlleva a no conocer su valor exacto y por ende se deteriora el control, especialmente a velocidades bajas. 9
Capítulo 2. Modelación del motor de inducción.
El motor de inducción es uno de los convertidores electromecánicos más ampliamente utilizados en la actualidad. Desde hace más de un siglo se vienen desarrollando modelos con el fin de representar con una precisión apropiada las aplicaciones prácticas en régimen permanente con fuentes de alimentación sinusoidales tanto balanceadas como desbalanceadas, pero con el desarrollo de la electrónica de potencia y de los procesadores, se hizo posible el uso de técnicas de modelación más sofisticadas, idóneas para el análisis del motor de inducción en estado transitorio. Es más, estos nuevos convertidores electrónicos que se han adaptado a los motores se fundamentan en los nuevos modelos. El modelo clásico del motor de inducción lo representa como un transformador trifásico, cuyo secundario es rotatorio y el movimiento del rotor constituye un grado de libertad adicional. Para simplificar el análisis de esta máquina, se considera que los fenómenos eléctricos son mucho más rápidos que los fenómenos mecánicos y por ende ambos fenómenos están desacoplados, permitiendo un análisis independiente de cada uno de ellos [3], [7]. La figura 2.1 muestra la representación por fase de una máquina de inducción ideal, que sirve para analizar el estado estacionario.
Figura 2. 1. Circuito equivalente por fase del modelo clásico del motor de inducción. Donde Vs es el voltaje aplicado por fase en el estator, Rs es la resistencia por fase del devanado del estator, L|s es la inductancia de dispersión por fase del devanado del estator, Rm es la resistencia equivalente de la pérdida en el núcleo por fase, Lm es la inductancia de magnetización por fase, L|r´ es la inductancia de dispersión por fase del devanado del rotor, Rr´ es la resistencia por fase del devanado del rotor, Is es la corriente por fase en el devanado del estator e Ir es la corriente por fase en el devanado del rotor. No obstante, cuando se pretende regular la velocidad de la máquina, mediante fuentes de voltaje o de corriente controladas electrónicamente, es necesario buscar otros marcos de 10
referencia y modelos más precisos que reproduzcan las características dinámicas y transitorias. El modelo dinámico de una máquina de inducción es algo complicado porque los tres devanados del rotor están girando con respecto a los devanados del estator, obteniéndose inductancias que varían con el tiempo y haciendo el modelo bastante complejo. Este inconveniente se ha superado gracias al modelo dinámico dq, que sirve para obtener una respuesta dinámica rápida similar a la de una máquina DC y así, incluir la máquina de inducción en un sistema de realimentación con lo que se puede aplicar algoritmos de control de alto rendimiento, con el fin de desacoplar el torque y el flujo. La idea parte de representar las corrientes, voltajes y flujos trifásicos como vectores espaciales como se muestra en la figura 2.2 [9]. Si ia, ib, ic son los valores instantáneos de las corrientes de fase del estator del motor, entonces se puede definir un vector complejo de esta manera:
(2.1)
Donde y , representan operadores espaciales.
Figura 2. 2. Corriente en el estator representada como un vector espacial y sus componentes. Estas cantidades trifásicas pueden ser representadas como una máquina equivalente de dos fases, mediante una transformación de variables conocida como la transformación de Clarke y cuya salida es un sistema de dos coordenadas variante en el tiempo. Estas coordenadas han recibido el nombre histórico D y Q (en inglés Direct y Quadrature) y se escogen para que el eje q tenga la misma dirección que el eje a y el eje d sea una combinación lineal de los ejes b y c de la siguiente manera:
11
= Vas
√
√
(2.2) (2.3)
Donde el superíndice s significa coordenadas estacionarias y el subíndice s significa que las cantidades hacen referencia al estator. Con el fin de hacer el sistema invariante en el tiempo para poder aplicar las técnicas de control clásicas, se tiene que aplicar la transformación más importante del control orientado por campo, inventada en la década de 1920 y que lleva el nombre de Transformación de Park, en homenaje a su creador [5]. De hecho, esta transformación modifica las dos fases ortogonales resultantes de la transformación de Clarke en un marco de referencia rotativo, y se obtienen cantidades DC como señales de control. Si se considera el eje d alineado con el flujo del rotor, la figura 2.3 muestra la relación existente entre los dos marcos de referencia.
Figura 2. 3. Corriente en el estator representada como un vector espacial y sus componentes en ds, qs, d y q. Aquí, ds y qs representan el marco de referencia estacionario, d y q el marco de referencia rotativo y θ la posición del flujo del rotor. Los componentes de torque y flujo del vector son determinados por las siguientes ecuaciones:
(2.4)
(2.5)
(2.6)
De la misma forma, se puede resolver para obtener las coordenadas estacionarias partiendo de las coordenadas rotativas, en lo que se conoce como la transformación inversa de Park:
(2.7)
12
2.1. Modelo del motor de inducción en el marco de referencia rotativo.
El circuito de la figura 2.1 está acoplado por transformador y para obtener mayor simplicidad, las cantidades del rotor deben ser referidas al estator, además de hacer las siguientes suposiciones con respecto a la máquina de inducción: el entrehierro es uniforme y las pérdidas son mínimas por lo que se desprecia la resistencia en el entrehierro, los arrollamientos están balanceados, no hay variación de parámetros y las señales son sinusoidales. La figura 2.4 muestra esta nueva representación en donde transformando a una máquina bifásica con la transformación de Clarke se tienen las siguientes ecuaciones en la malla del estator:
Figura 2. 4. Circuito equivalente por fase simplificado del modelo clásico del motor de inducción. !
Aquí λ se refiere al flujo.
!
# "
# "
(2.8) (2.9)
Cuando las ecuaciones 2.8 y 2.9 son convertidas al marco de referencia rotativo (transformación de Park), se tienen las siguientes ecuaciones [10]: ! " # $% #
! " # $% #
(2.10) (2.11)
Donde ωe es la frecuencia sincrónica.
13
El último término en las ecuaciones 2.10 y 2.11 pueden ser definidos como la velocidad de la fem (fuerza electromotriz) debida a la rotación de los ejes, también se debe notar que los ejes d y q inducen una fem en los ejes q y d respectivamente. Siguiendo con el mismo procedimiento se puede obtener las ecuaciones del rotor, sabiendo que existe un grado de libertad adicional que tiene que ver con la velocidad del rotor. De esta manera se tiene: & !& &
& !& &
# " &
# " &
$% $& #&
$% $& #&
(2.12) (2.13)
Donde el subíndice r significa que las cantidades están referidas al rotor y ωr es la velocidad angular del rotor. La figura 2.5 muestra el circuito que cumple las ecuaciones 2.10, 2.11, 2.12, 2.13 en el marco de referencia sincrónico.
Figura 2. 5. Circuito dinámico dq equivalente de la máquina de inducción. Las cantidades del rotor están referidas al estator, de esta manera se tiene Rr = Rr´/n2 y Lr = Lr´/n2 con respecto al circuito equivalente de la figura 2.1, donde n es la relación de vueltas entre rotor y el estator. Por la forma del circuito el flujo del estator comprende el flujo en serie de las inductancias L|s y Lm y el flujo del rotor comprende el flujo en serie de las
14
inductancias L|r y Lm, por consiguiente se tienen las siguientes expresiones para los flujos de la figura 2.5: # '| ') &
(2.14)
#& '|& & ') &
(2.15)
#) ') &
(2.16)
#& '|& & ') &
(2.18)
# '| ') &
(2.17)
#) ') &
(2.19)
La combinación de las ecuaciones 2.14 a 2.19 con las ecuaciones 2.10 a 2.13, producen el modelo eléctrico en términos de voltajes y corrientes y puede ser dado en forma matricial de la siguiente manera: ! 1' , / $% ' + . 0 1') + & . $% $& ') *& -
$% ' ! 1' $% $& ') 1')
1') $% ') !& 1'& $% $& '&
$% ') 1') 2 $% $& '& !& 1'&
0 2 (2.20) & &
Donde S es el operador de Laplace. Nótese que se tiene un sistema de cuarto orden lineal si se considera ωr constante, además en una máquina de inducción de jaula de ardilla Vqr = Vdr = 0, dado que los devanados están cortocircuitados. Normalmente ωr no puede ser considerado como constante, puesto que esto significaría que la carga tiene inercia infinita, lo que no es posible en la realidad. La velocidad del rotor se relaciona con el torque de acuerdo a la siguiente ecuación [4]: 3% 34 5
67 "
8$) 34
9
5
6: "
8$&
(2.21)
Donde Te es el torque electromagnético, TL es el torque de la carga, J es la inercia del rotor, ωm es la velocidad mecánica, B es el coeficiente de fricción y P es el número de polos del motor. Por otro lado, para desarrollar una expresión para el torque electromagnético se empieza con el hecho de que la potencia de salida mecánica es el producto de la velocidad mecánica y el torque electromagnético: ;< 3% $)
(2.22)
15
Con la resistencia del rotor referida al estator como se ve en la figura 2.6, se puede ver que la potencia activa por cada fase es: Donde d es el deslizamiento. ?
;= &
6@ A6: 6@
>:
(2.23)
Figura 2. 6. Circuito equivalente de la figura 2.1 referido al estator y despreciando la Resistencia de magnetización. Las pérdidas en el cobre del rotor están dadas por:
;B& & !&
(2.24)
Las ecuaciones 2.23 y 2.24, se multiplican por tres para obtener la potencia total del motor trifásico, de esta manera se tiene: ;< ;= ;B& 3 & !&
A
(2.25)
Reemplazando la ecuación 2.25 en la ecuación 2.22 se tiene: 3%
9D
67
A !& 67 &
(2.26)
De la ecuación 2.21 se tiene que $) E2HGI$& E2HGI1 ? $% . Reemplazando esta expresión en la ecuación 2.26 se llega a una nueva expresión para el torque: ; G 3% E H2I =H
%$(2.27)
La ecuación 2.27 indica que el torque puede ser calculado a partir de la potencia en el entrehierro si se conoce la frecuencia de alimentación del estator. Teniendo en cuenta el circuito de la figura 2.6, se observa que la corriente Is se divide por la inductancia de magnetización y por la resistencia dinámica del rotor. Si se hace la analogía 16
con una máquina bifásica, es posible relacionar la corriente de magnetización con la corriente ids que solo contribuye a la potencia reactiva a través de la inductancia Lm y la corriente de torque con iqs que contribuye con la potencia activa a través del entrehierro. Despreciando la inductancia del rotor L|r dado que se puede asumir que toda la potencia reactiva se consume en la inductancia de magnetización se tiene:
Donde Vm = ωeλm.
;= 3) K
(2.28)
Se puede demostrar de acuerdo con el diagrama fasorial de las corrientes de la figura 2.7 que K = K& δ, donde θ es el ángulo referido al estator y δ es el ángulo referido al rotor [5]. Reemplazando estas expresiones y la ecuación 2.28 en la ecuación 2.27, se tiene: G 3% 3 E H2Iλ) K& δ
G 3% E H2IλM) K&N δ
(2.29) (2.30)
Figura 2. 7. Diagrama fasorial de las corrientes de estator y rotor del circuito de la figura 2.6.
Donde λM) e K&N son los valores picos dados por √2λ) y √2K& respectivamente. La ecuación 2.30 es la más aceptada actualmente y puede ser presentada de manera general como: 17
G 3% E H2IλM) O K&
(2.31)
Resolviendo esta ecuación en términos de los componentes dq, se tiene: G 3% E H2IEλ) & λ) & I
(2.32)
O reemplazando los términos de esta última ecuación de acuerdo a las ecuaciones 2.16 y 2.19: G 3% E H2I') Ei & i & I
(2.33)
Las ecuaciones 2.20, 2.21 y 2.33 dan el modelo completo de la máquina de inducción, descrito en el conjunto de ecuaciones 2.34 donde se observa un sistema de quinto orden evidentemente no lineal por la multiplicación entre sí de sus variables de estado. ! 1' , / $% ' + . 0 1') + & . $ *& % $& ')
$% ' ! 1' $% $& ') 1')
3% 34 5
67 "
1') $% ') !& 1'& $% $& '&
8$) 34
5 9
6: "
G 3% E H2I') Ei & i & I
$% ') 1') 2 $% $& '& !& 1'&
8$&
0 2 & &
(2.34)
2.2. Modelo de señal pequeña de la máquina de inducción
Al no ser lineal el modelo obtenido en la sección anterior, se imposibilita la aplicación de las técnicas de control clásicas y lineales directamente, así que las ecuaciones diferenciales tienen que ser linealizadas alrededor de un punto de operación. Una posible forma de hacerlo es usando técnicas de perturbación, al considerar las variables de estado como una cantidad DC más un diferencial. De esta manera se tienen las siguientes ecuaciones: K Q
(2.35)
K Q
(2.36)
& K& Q &
(2.38)
& K& Q &
RQ
RQ
(2.37)
(2.39) (2.40)
18
3% 3% 3S%
34 34 3S4
(2.42)
$& $& $ Q&
(2.44)
$% $% $ Q%
Y puesto que Vdr = Vqr = 0:
(2.41)
& RQ &
& RQ &
(2.43)
(2.45) (2.46)
Reemplazando las ecuaciones 2.35 a 2.46 en la ecuación 2.34, se tienen las siguientes ecuaciones: RQ T! '
? ? V Q Q $% ') Q $% ' Q ') & ?U ?U & ' K ') K& $ Q%
(2.47)
' K ') K& $ Q%
(2.48)
'& K& ') K $ Q& '& K& ') K $ Q%
(2.49)
RQ $% ' Q T! ' RQ & ')
? ? V Q Q $% ') Q & ') ?U ?U &
? ? Q V Q $% $& '& Q $% $& ') Q T!& '& & ?U ?U &
RQ & $% $& ') Q ')
? ? Q V Q $% $& '& Q & T!& '& ?U ?U &
Q& '& K& ') K $ Q% E'& K& ') K I$
3S%
9
9 5 " $ Q& 8$ Q& 3S% 3S4
') K Q & K& Q K Q & K& Q
(2.50) (2.51) (2.52)
Al combinar las ecuaciones 2.47 a 2.52 y ordenarlas como variables de estado se tiene:
Donde:
WXY Z´X \´]
(2.53)
19
Z´
! , $% ' + 0 + + $% $& ') _` K& *
' ,0 + W +') +0 *0
$% ' ! $% $& ') 0 _` K&
1 ,0 + \´ +0 +0 + *0
O de la forma:
Donde:
0 ' 0 ') 0
0 1 0 0 0
0 0 1 0
0 0
X cQ
] eRQ
0 ') 0 '& 0
0 0/ . 0. 0. 5-
0 $% ') !& $% $& '& _` K
_` 0 0 0 1
') 0 '& 0 0
(2.54)
$% ') 0 $% $& '& !& _` K
9
a b ')
' K ') K& ' K ') K& '& K& ') K '& K& ') K
Q
RQ
Q &
RQ &
0
Q &
RQ &
$ Q& d"
$ Q%
0 0 0 0
/ . . . 9. -
" 3S4 f
0 / 0 . '& K& ') K . '& K& ') K . 8 -
(2.55) (2.56)
(2.57)
(2.58) (2.59)
XY ZX \]
(2.60)
Z WA Z´
\ WA \´
(2.61)
y = Cx
(2.63)
(2.62)
La salida del sistema puede considerarse función de las variables de estado de la forma:
Donde C es una matriz de dimensiones apropiadas. Las ecuaciones 2.60 y 2.63 describen el sistema y su salida, que ahora pueden ser controladas de manera lineal.
20
Capítulo 3. Control Orientado por Campo
El control orientado por campo es la base de un método especial de control para los motores de inducción, que permite reemplazar en muchas aplicaciones a los motores de corriente continua. Anteriormente, si se sumaban los costos del motor y el control para aplicaciones de posición o velocidad variable, era preferible emplear motores DC, debido a que el motor de inducción requiere algoritmos de control más complejos, que hacen obligatorio el uso de procesadores potentes para realizar los cálculos propios del algoritmo, si bien, es más económico el motor de inducción. El continuo desarrollo de los microprocesadores y DSPs ha permitido que los modelos dinámicos de la máquina de inducción realizados con el fin de aplicar técnicas de control, sean llevados a cabo debido a la posibilidad de realizar cálculos matemáticos en tiempo real y con la precisión adecuada, lo que ha llevado a reducir costos en la implementación total, es decir, el costo de la máquina y de su control. Asimismo el empleo de la electrónica de potencia en el campo de manejadores de motores se ha adaptado con el uso de estos procesadores y los modelos dinámicos en la modulación de convertidores electrónicos, haciendo factible el aumento de eficiencia de estos manejadores, otro de los tópicos que se mejora con respecto a las aplicaciones con un motor DC. Ahora, con respecto a las técnicas de control de máquinas de inducción, el control orientado por campo o vectorial ha mostrado un rendimiento superior comparado con el control escalar. Si bien, este último es más simple de implementar, el efecto inherente de acoplamiento entre el torque y el flujo debido a que son funciones del voltaje, la corriente y la frecuencia hace que su respuesta dinámica sea más lenta, además de tener tendencias en algunas ocasiones a la inestabilidad [5]. Esto se explica si se tiene en cuenta que la dependencia en este caso es directa entre el torque y el flujo, es decir, si el torque disminuye, controlando la frecuencia, el flujo aumenta y se debe notar que el flujo es una cantidad que tiene una respuesta dinámica lenta. Estos inconvenientes pueden ser superados gracias al control orientado por campo inventado en la década de 1970, que se basa en la idea de controlar la máquina de inducción de forma similar a una máquina DC, desacoplando el flujo del torque y así, esta técnica es aceptada ampliamente en la industria reemplazando paulatinamente al control escalar. Este capítulo describe los principios básicos, los tipos, el análisis y el diseño del control orientado por campo. 3.1. Principios Básicos
21
Idealmente, un motor de inducción que se le aplica el control orientado por campo opera como un motor DC con excitación separada. Con algunas aproximaciones el torque electromagnético de una máquina DC está dado por la siguiente expresión: Te = KTIaIf
(3.1)
Donde Ia es la corriente de armadura e If es la corriente de campo. La manera como se construye la máquina DC hace que la corriente de armadura sea perpendicular a la corriente de campo, lo que significa que cuando se controla el torque, controlando la corriente Ia, la corriente If no se afecta, produciendo una respuesta transitoria rápida y un torque elevado, lo cual no es posible por una condición inherente de acoplamiento en el motor de inducción que conlleva a una pobre respuesta transitoria. Es posible que una máquina de inducción llegue al rendimiento de una máquina DC, si su control se considera en el marco de referencia rotativo (dq), consiguiendo que las variables sinusoidales trifásicas aparezcan como cantidades DC en estado estacionario. Una vez hecha la transformación de variables, el resultado obtenido puede ser considerado análogo a la ecuación 3.1, donde la corriente en el eje directo ids y la corriente en el eje de cuadratura iqs sean semejantes a las corrientes If e Ia respectivamente. Este control solo será posible si la corriente ids está alineada con el flujo λr y la corriente iqs sea perpendicular a esta, para que cuando se quiera controlar el torque por medio de la corriente iqs, no se afecte el flujo λr, asimismo cuando se controle el flujo por medio de la corriente ids no se afecte el torque. Basado en la idea anterior, se hace crucial conocer la posición del flujo del rotor en todo instante. Esencialmente existen dos tipos de control orientado por campo, uno llamado directo y el otro llamado indirecto. El primero se basa en las mediciones directas o indirectas del flujo usualmente con sensores de efecto Hall, mientras que el método indirecto lo hace midiendo la velocidad o posición del rotor y por medio de parámetros de la máquina se calcula el valor del deslizamiento, que sumado con la posición del rotor da como resultado la posición del flujo del rotor. A continuación se darán a conocer las generalidades de los dos tipos de control orientado por campo. 3.2. Control Orientado por Campo Directo La figura 3.1 muestra el esquema general del control orientado por campo directo. La velocidad del rotor, ωr, es comparada con la velocidad de referencia, ωr*, y el error es pasado a través de un compensador para generar la referencia del torque, Te*. La referencia del flujo es derivada de la velocidad del rotor por medio de una función generadora de valor absoluto, que mantendrá la referencia del flujo en un valor fijo, si la velocidad del rotor está entre el cero y el cien por ciento de su valor nominal. Más allá del cien por ciento de la velocidad del rotor nominal el flujo de referencia es una función de la velocidad que se 22
amaina con el fin de reducir la fem inducida a un valor más bajo que la salida de voltaje disponible del inversor [4]. Al reducir el flujo la misma cantidad que el componente productor del torque, se reduce el torque electromagnético, que, en combinación con el incremento en la velocidad del rotor, puede ser controlado para producir una salida constante de potencia. Las referencias del torque y el flujo obtenidas son utilizadas en el control de las corrientes iqs e ids respectivamente y la salida de estos controladores es transformada de coordenadas rotativas a coordenadas estacionarias.
Figura 3.1. Esquema del control por campo orientado directo. De esta manera, la respuesta transitoria será rápida porque la corriente iqs no afecta el flujo, además de ser posible el control en los cuatros cuadrantes como en una máquina DC. En la figura 3.1 hay un bloque destinado a la estimación del flujo, que es parte esencial del control vectorial directo y tiene dos modos de realización: el modelo de voltaje y el modelo de corriente. A continuación, se procederá a describir el modelo de voltaje. Al pasar las corrientes de trifásicas a bifásicas por medio de la transformación de Clarke se llega a las siguientes ecuaciones:
Y dado que ic = -(ia + ib):
√
√
√
2
(3.2) (3.3)
(3.4) 23
√
√
√
(3.5) (3.6)
Las expresiones para flujo se obtienen de la siguiente manera (ver ecuaciones 2.8 y 2.9): # g ! ?U
(3.7)
# h# #
(3.9)
# g ! ?U
(3.8)
Y de acuerdo con las expresiones obtenidas en el capítulo 2 se tiene (ecuaciones 2.15, 2.16, 2.18 y 2.19): #) # '| ') &
(3.10)
#) # '| ') &
(3.11)
#& ') '|& &
(3.13)
#& ') '|& &
(3.12)
Suprimiendo las corrientes idrs e iqrs de las ecuaciones 3.12 y 3.13 con ayuda de las ecuaciones 3.10 y 3.11, se tiene: #&
#&
4:
47 4:
47
#) '|& #) '|&
#& h#& #&
(3.14) (3.15) (3.16)
Sustituyendo estas últimas ecuaciones en la ecuación de torque 2.31 se obtiene la siguiente expresión: 3%
a b 4 E#& #& I
9 47
:
(3.17)
Y de esta manera se obtienen todas las expresiones que definen el estimador de flujo. El ángulo θe es calculado a partir de las ecuaciones 3.14 y 3.16: % i
#& j #&
(3.18) 24
O de una manera más sencilla, su pueden usar directamente las cantidades para la transformación de Park y la transformación inversa de Park de la siguiente manera: %
#& j #&
(3.19)
#& j % #&
(3.20)
El método directo con el modelo de voltaje es difícil de operar exitosamente a frecuencias bajas cercanas a la velocidad nula, debido a que la realimentación del flujo se obtiene mediante la integración del voltaje en el estator y bajo esta condición el desbalance u offset en el integrador es de las mismas proporciones que Vds y Vqs, produciendo un error que incrementa la dificultad en el control. En la última década se ha tratado de resolver este inconveniente mediante la técnica sin sensores del estimado del flujo, pero incrementando la complejidad en los cálculos [11]. También es posible superarlo por medio de una ganancia ajustable tanto en magnitud como en fase que se introduce en el compensador calculado en el DSP para neutralizar la no idealidad del integrador y el error para velocidades bajas. Asimismo, la variación por temperatura de los parámetros de la máquina de inducción que se utilizan en la estimación del flujo, como Rs, Ls y Lr, producen un error significativo a velocidades bajas, particularmente en la resistencia del estator que se hace más dominante. No obstante, es relativamente fácil diseñar un compensador para la resistencia Rs o aplicar una estrategia de control con un modelo hibrido que funcione para todos los rangos de frecuencia, utilizando la resistencia del rotor para estimar el flujo a velocidades cercanas a cero con el modelo de corriente y la resistencia del estator para velocidades más altas con el modelo de voltaje [12]. El modelo de corriente es más apropiado para operar a velocidades bajas, sintetizando el flujo del rotor con ayuda de las corrientes y la velocidad del rotor. A partir de las ecuaciones que describen el modelo para los voltajes del rotor se tiene: kl: m "
kn: m "
!& & $& #& 0
(3.21)
!& & $& #& 0
(3.22)
Sumando los términos (LmRr/Lr)idss y (LmRr/Lr)iqss, respectivamente, en ambos lados de las ecuaciones 3.21 y 3.22 se llega a: kl: m "
kn: m "
>: 4:
>: 4:
') '& & $& #&
E') '& & I $& #&
47 >: 4:
47 >: 4:
(3.23) (3.24) 25
Reemplazando los términos idrs e iqrs, con ayuda de las ecuaciones 3.12 y 3.13 y simplificando se obtiene: kl: m "
kn: m "
`:
47
47 `:
$& #&
$& #&
`:
`:
#& #&
(3.25) (3.26)
Donde Tr es la constante de tiempo del rotor. Tr = Lr/Rr. Las ecuaciones 3.25 y 3.26 definen el flujo y su ángulo de la misma manera que en el modelo de voltaje. Este modelo fue formulado originalmente por Blaschke en la década de 1970 [13], su principal inconveniente es que a frecuencias altas se introduce un error debido a las variaciones en la constante del rotor producidas por la temperatura y el efecto piel, que no son posibles de compensar ya que estas variables en el motor de inducción de jaula de ardilla no son accesibles. 3.3. Control Orientado por Campo Indirecto El control orientado por campo indirecto preserva la mayor parte del método directo y en esencia es parecido, la diferencia radica en la forma como se calcula la posición del flujo del rotor, que en este caso se hace con realimentación de las variables hacia adelante. Este método de control es muy usado en aplicaciones industriales, ya que no es necesario medir o estimar el flujo. Se basa en el modelo de referencia rotativo y sus partes principales están descritas en la figura 3.2.
Figura 3.2. Control orientado por campo indirecto. 26
El método indirecto comprende básicamente el cálculo de la frecuencia de deslizamiento, con el fin de hallar la posición del flujo del rotor de acuerdo con la siguiente ecuación: % g $% ?U g$& $B ?U
(3.27)
Donde ωr es la velocidad del rotor y ωsl es la velocidad de deslizamiento. Los voltajes para el rotor en el marco de referencia rotativo, obtenidos en el capítulo 2, están dados por las siguientes ecuaciones: 0 !& &
0 !& &
# " &
# " &
$% $& #&
$% $& #&
(3.28) (3.29)
Las expresiones para el flujo del rotor de acuerdo al modelo están dadas de la siguiente manera: #& '& & ')
#& '& & ')
(3.30) (3.31)
Suprimiendo los términos idr e iqr, de las ecuaciones 3.28 y 3.29 con ayuda de las ecuaciones 3.30 y 3.31 y simplificando se obtiene: # " &
"
#&
>: 4:
>: 4:
#&
#&
47 >: 4:
47 >: 4:
$B #& 0
$B #& 0
(3.32) (3.33)
Donde ωsl = ωe - ωr. Puesto que el flujo debe estar desacoplado del torque, es necesario que la componente en q del flujo sea cero. #& 0
Por lo tanto:
# " &
0
(3.34)
(3.35)
Sustituyendo las ecuaciones 3.34 y 3.35 en las ecuaciones 3.32 y 3.33, además de saber que el flujo total, λr, está en el eje d, se tiene: 3& " #& #& ')
(3.36)
27
$B
47
k: `:
(3.37)
Donde Tr es la constante de tiempo del rotor y λr = λdr. Las ecuaciones 3.27, 3.36 y 3.37, son las que definen el control por campo orientado indirecto. La ecuación 3.37 indica la forma como estimar la frecuencia de deslizamiento y a partir de esta, obtener la posición para la transformación de Park y la transformación de Park inversa de acuerdo a la ecuación 3.27. Si el flujo del rotor se mantiene constante, como es usualmente el caso en estado estacionario, entonces a partir de la ecuación 3.36, se tiene: #& ')
(3.38)
Lo que significa que el flujo es directamente proporcional a la corriente ids en estado estacionario. En el método indirecto, se observa de nuevo la dependencia de los parámetros de la máquina en la estimación de la frecuencia de deslizamiento, que como se ha visto, es clave en el control. Para lograr un manejo adecuado del motor, es deseable que los parámetros de la máquina concuerden con los parámetros actuales y reales, de hecho si los parámetros están desintonizados se tiene un problema similar al método directo. La variación de los parámetros se debe principalmente, a su dependencia con la temperatura y algunos efectos no lineales como la saturación de las inductancias, algunos autores han propuesto solucionar este inconveniente con diversos métodos de control como, control difuso, control neuronal, control auto-sintonizado, control adaptable por modelo de referencia, entre otros [5], [8], [14].
28
Capítulo 4. Modulación por vectores espaciales e inversor trifásico.
4.1. Inversor por fuente de voltaje. Hay varios tipos de inversores trifásicos reportados en la literatura, tales como, inversores matriciales, multi-nivel, de conmutación suave y varias topologías resonantes. El inversor de conmutación dura es utilizado en este trabajo debido a que es una topología común en el control de la máquina de inducción. La mayor parte del uso del inversor por fuente de corriente o CSI por sus siglas en ingles, se da cuando los rangos de potencia son altos [19], así que la topología dominante en el control de máquinas AC es el inversor por fuente de voltaje (VSI por sus siglas en inglés). El VSI se muestra en la figura 4.1, donde se aprecia un bus DC que puede ser alimentado con una fuente de DC o puede ser creado utilizando un rectificador y un condensador grande. En un VSI hay tres terminales de salida, cada una conectada a una rama, que a la vez es conectada al bus DC.
Figura 4.1. Inversor por fuente de voltaje. 4.2. Modulación por vectores espaciales. Después de realizada la regulación de las corrientes del motor por medio del control orientado por campo, es necesario utilizar una técnica de modulación para manejar el convertidor trifásico. Las dos técnicas de PWM más utilizadas son la técnica de intersección con señal triangular o diente de sierra y la modulación por vectores espaciales o SVM por sus siglas en inglés [15]. SVM es la estrategia preferida para manejadores de motores AC, por su alto rendimiento, traducido en una alta utilización del bus DC, la capacidad para reducir las pérdidas por conmutación y la disminución de armónicos. 29
Basado en la topología del VSI de la figura 4.1, se tienen las restricciones que las líneas de entrada nunca pueden ser cortocircuitadas y las corrientes de fase deben ser siempre continuas [16]. Cada rama del inversor debe tener un transistor conduciendo en todo instante, así que la polaridad del voltaje por cada fase estará entre +VDC y –VDC. Dado que hay tres ramas y cada una tiene dos estados, existen ocho combinaciones discretas para el manejo del inversor. Una ayuda para determinar las salidas que son posibles de los voltajes de línea del inversor, es representar al VSI de la figura 4.1, de forma simplificada en la figura 4.2. Las restricciones anteriormente mencionadas indican que cada rama debe ir conectada, ya sea al terminal positivo de la fuente DC, o p, o al terminal negativo, o n. De acuerdo con la teoría desarrollada en el capítulo 2, se puede definir un vector complejo de la siguiente manera: MMM
√
(4.1)
Donde y , representan operadores espaciales.
Figura 4.2. Representación simplificada del inversor por fuente de voltaje. La tabla 4.1 da los estados de conmutación posibles, los voltajes de línea resultantes y el voltaje complejo, de acuerdo con la topología del VSI. Tabla 4.1. Estados de conmutación del VSI y sus correspondientes voltajes de línea y voltaje de estator complejo. Estado Estado Rama Inversor Sa Sb Sc S0
n
n
n
Voltajes de línea Vab
Vbc
Vca
0
0
0
MMMM op 0
Voltaje estator
30
S1
p
n
n
VDC
0
-VDC
S2
p
p
n
0
VDC
-VDC
S3
n
p
n
-VDC
VDC
0
S4
n
p
p
-VDC
0
VDC
S5
n
n
p
0
-VDC
VDC
S6
p
n
p
VDC
-VDC
0
S7
p
p
p
0
0
0
qr s
qr
2
t
qr u
√3 √3 t 2qr 2 s qr √3 √3 vt qr 2 qr s qr u √3 √3 vt qr 2 qr s qr A u √3 √3 t 2qr 2 s qr A √3 √3 t qr 2 qr s qr A u √3 √3 0
De los ocho estados, hay dos, S0 y S7, que resultan en un voltaje de cero, estos son llamados estados nulos y los otros seis son llamados estados activos. Los vectores espaciales obtenidos en la tabla 4.1 se muestran en la figura 4.3, nótese que están en el marco de referencia estacionario.
Figura 4.3. Vectores Espaciales. Los vectores que no se muestran, V0 y V7, están ubicados en el origen, ya que tienen magnitud nula. Nótese también que el hexágono está dividido en seis sectores. El vector de referencia, i, que se muestra en la figura 4.3, tiene una magnitud de (2/3)ρ·VDC y un ángulo de θ, donde:
31
ρ h?x ?y
U
A
? z yj? { |H6 x
(4.2)
(4.3)
En las ecuaciones 4.2 y 4.3 las cantidades ?x y ?y , son las salidas de la transformación de Park inversa y las entradas del bloque SVM de la figura 1.1. El círculo inscrito en el hexágono de la figura 4.3, indica la magnitud máxima del vector de referencia para evitar voltajes de fase distorsionados. Una vez obtenido el vector de referencia, i, se debe sintetizar durante cada periodo de conmutación, calculando su proyección sobre los dos vectores espaciales adyacentes más cercanos al vector de referencia. Con esto se consigue producir la menor cantidad de distorsión armónica y reducir las pérdidas por conmutación [16], [17]. La figura 4.4 muestra la síntesis del vector de referencia, en un sector cualquiera del hexágono.
Figura 4.4. Síntesis del vector de referencia.
En SVM el único requerimiento para poder sintetizar un vector, es conmutar entre los dos vectores activos adyacentes y uno nulo, como se muestra en la figura 4.5.
32
Figura 4.5. Síntesis del vector de referencia con ayuda de dos vectores activos y uno nulo.
La diferencia entre el ciclo útil dN más el ciclo útil dN+1 y la unidad es el tiempo del ciclo útil del vector nulo, como se muestra en la figura 4.5:
Donde:
?~ 1 ? ?
? ρ |⁄3 ? ρ
(4.4)
(4.5) (4.6)
Si la suma de dN y dN+1 es mayor a uno, d0 es negativo y se tiene una evidente sobremodulación, lo que conlleva a distorsiones en los voltajes, como se explicaba si la magnitud del vector de referencia era mayor al radio del círculo inscrito en el hexágono.
4.3. Esquemas de SVM e implementación.
Puesto que solo hay un requisito básico para sintetizar un vector de referencia, existen muchas posibilidades para realizar SVM en un inversor. En la literatura se ven clasificados por medio de números y a continuación se explicarán las generalidades de los principales tipos de SVM. Tal vez el esquema de conmutación más intuitivo sería dividir el periodo de
33
conmutación en tres partes, correspondientes a los dos vectores activos y al nulo, como se muestra en la figura 4.6.
Figura 4.6. Esquema de conmutación simple de SVM. Hay una desventaja con este simple esquema. La figura 4.6 muestra una doble conmutación al final del periodo de conmutación y en el caso de que el vector de referencia cambie de sector se podría producir una triple conmutación al tiempo, lo que produce un ruido significativo y pérdidas de conmutación, al conmutar seis veces en un mismo periodo. La forma de evitar conmutaciones simultáneas se logra mediante un esquema de modulación centrado, con la división de los ciclos útiles como se muestra en la figura 4.7. El ciclo útil del vector nulo es segmentado en tres partes durante el periodo de conmutación, la mitad de este ciclo útil está en el centro del periodo y la otra mitad dividida al principio y al final del periodo. Los ciclos útiles de los vectores activos son divididos en dos partes para poder obtener una modulación centrada. Por medio de este esquema se reduce la distorsión armónica y se disminuye el ruido al no forzar las conmutaciones al mismo tiempo. Sin embargo, el número de conmutaciones no se reduce con respecto al primer esquema de SVM presentado. Con el tipo de SVM presentado en la figura 4.8 se logra reducir las pérdidas por conmutación en un 50% al reducir a la mitad el número de transiciones en los transistores.
34
Figura 4.7. Esquema de conmutación SVM 2. Trifásico centrado.
Figura 4.8. Esquema de conmutación SVM 3. Trifásico doble periodo. De esta manera se tiene una secuencia asimétrica en TS y simétrica en 2TS y solo tres conmutaciones por periodo, pero un armónico introducido en 1/2TS. En este esquema es necesario utilizar los vectores nulos alternativamente en periodos de conmutación adyacentes. Es posible reducir el número de conmutaciones si se utiliza el mismo vector nulo en el mismo periodo de conmutación a diferencia de los primeros esquemas vistos, como se muestra en la figura 4.9. Así, en los sectores impares siempre se utiliza el vector nulo [ppp] y en los pares el vector nulo [nnn] y se consiguen cuatro conmutaciones por ciclo. No obstante, en la figura 4.9 se muestran conmutaciones simultáneas al final del periodo que generan más ruido. Se puede evitar esto mediante un esquema centrado como se muestra en la figura 4.10, al dividir los ciclos útiles de los vectores activos. 35
Figura 4. 9. Esquema de conmutación SVM 4. Bifásico alineado a la derecha.
Figura 4.10. Esquema de conmutación SVM 5. Bifásico centrado. El esquema centrado de la figura 4.10 reduce la distorsión armónica total con respecto al esquema alineado a la derecha. Pero el SVM puede variar dependiendo de cómo y cuando se aplique el vector nulo en el periodo de conmutación. Dado que las pérdidas de conmutación son proporcionales a la cantidad de corriente que está siendo conmutada, la escogencia del vector nulo se realiza con el fin de dejar a la fase con la corriente más alta sin conmutar. De hecho es posible reducir las pérdidas hasta en un 50% si se utiliza este esquema y así poder ayudar en el incremento en la eficiencia del sistema [18]. Ya que la corriente siempre está desfasada del voltaje, se utiliza un algoritmo que escoja el vector nulo como se muestra en la figura 4.11. Por ejemplo, si el vector de referencia está en el sector 1, la corriente más alta puede ser ias o ics. De esta manera, cuando ias es la corriente 36
más alta el vector nulo [ppp] es escogido debido a que el estado de los interruptores para la corriente de fase a son p (V1[pnn] y V2[ppn]) y por lo tanto la corriente de fase a no es conmutada. Cuando ics es la corriente más alta en el sector 1, el vector nulo [nnn] es escogido ya que los estados de los interruptores para la corriente de fase c son n (V1[pnn] y V2[ppn]) y por lo tanto la corriente de fase c no es conmutada.
Figura 4.11. Lógica de selección del vector nulo en el sector 1. SVM 6.
37
Capítulo 5. Estrategias de control del sistema.
5.1. Diseño del control de los lazos de realimentación.
En el capítulo 2 se obtuvo la representación en variables de estado del modelo dinámico del motor de inducción en un sistema de coordenadas rotativas, que permite realizar un control lineal con la técnica vista en el capítulo 3. El uso de controladores clásicos por medio de la función de transferencia es una estrategia para el control orientado por campo que facilita el diseño sin perder robustez, razón por la cual se emplea en una gran cantidad de casos. La ecuación 5.1 define las funciones de transferencia en el dominio de s, a partir de las variables de estado: ZA \
(5.1)
Las matrices A y B se hallaron en el capítulo 2 y la matriz C está dada en la ecuación 5.2. 1 ,0 + +0 +0 *0
0 1 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0/ . 0. 0. 1-
(5.2)
De esta manera se obtienen 18 funciones de transferencia, de las cuales solo tres son usadas en el control. Como se vio en el capítulo 3, la estrategia de control orientado por campo utiliza dos lazos internos para las corrientes id e iq y un lazo externo que controla la velocidad y cuya salida es la referencia para la corriente que controla el torque, es decir, la corriente iq. La representación de las funciones de transferencia están dadas en las expresiones 5.3, 5.4 y 5.5. Snm
̃nm
Slm
̃lm
: 6 Snm
(5.3)
(5.4) (5.5)
Donde la expresión 5.3 permite diseñar el control para el torque, la expresión 5.4 permite diseñar el controlador para el flujo y la expresión 5.5 se utiliza en el diseño del control de la 38
velocidad. Dado que el sistema depende de la velocidad sincrónica se tiene un conjunto de funciones de transferencia en los tres casos y se busca diseñar un controlador que satisfaga los requerimientos dinámicos y de ancho de banda sin saturarse que abarque todas las velocidades sincrónicas. Haciendo el estudio pertinente se plantea un control PI ya que es práctico y conveniente para los lazos internos de corriente, de esta manera las constantes calculadas son P = 0.05 e I = 6.1364 para ambos lazos, obteniéndose las siguientes respuestas al paso. Step Response 1 0.9 0.8 0.7
Amplitude
0.6 0.5 0.4 0.3 0.2 0.1 0
0
0.5
1
1.5
2
2.5
3
3.5
4
Time (sec)
Figura 5. 1. Respuesta al paso del lazo de control del flujo a 900 RPM. Step Response 1 0.9 0.8 0.7
Amplitude
0.6 0.5 0.4 0.3 0.2 0.1 0
0
0.5
1
1.5
2
2.5
Time (sec)
Figura 5. 2. Respuesta al paso del lazo de control del torque a 900 RPM.
39
Por último está el diseño del lazo externo de velocidad cuya salida es la referencia de la corriente iq. Para esto es necesario encontrar la función de transferencia que relaciona la velocidad del rotor ωr con la corriente iq, es decir, ωr/iqref. Por medio de Mason (ver figura 5.3) se encuentra que esa función de transferencia es la siguiente: :
̃n:@
: 6 S nm
n Snm n j
̃ nm
(5.6)
Figura 5. 3. Diagrama de bloques para obtener ωr/iqref por medio de Mason. Donde Hiq es el controlador diseñado en el lazo de corriente iq interno. Para el lazo externo de velocidad se diseñó un control PID cuyas constantes son P = 1, I = 5.54 y D = 0.01, obteniéndose la siguiente respuesta al paso.
Figura 5. 4. Respuesta al paso del lazo externo de control de velocidad a 900 RPM. 40
5.2. Realización de los controladores PID discretos para la implementación en un DSP.
La implementación de los controladores digitales en el DSP se hace mediante el controlador PID convencional de la figura 5.5 con corrección anti-windup para evitar la saturación que la parte integral del control provoca. El modulo del controlador PID está incluido en la librería Digital Motor Control (DMC) de Texas Instruments. De acuerdo con la figura 5.5 la salida del controlador antes de la saturación está dada por la ecuación 5.7. 9&% " U U U U
(5.7)
Figura 5. 5. Diagrama de bloques del controlador PID con corrección anti-windup. Donde cada término puede ser expresado como sigue: Término proporcional:
U U
(5.8)
Término integral con corrección de saturación: U
` j3 g~ ? EU 9&% " UI
(5.9)
Término derivativo:
41
U 3
?UH ?U
(5.10)
Estas ecuaciones son discretizadas usando aproximación hacia atrás obteniéndose lo siguiente: Término proporcional:
_ _
(5.11)
Término integral con corrección de saturación: _ _ 1 Término derivativo: _
3 j3 _ + E_ 9&% " _I
(5.12)
3 H E_ _ 1I 3
(5.13)
Donde T es el periodo de muestreo. Si se define a Ki = T/Ti y Kd = Td/T, se obtiene finalmente lo siguiente:
_ _ 1 _ + E_ 9&% " _I
5.3. Estimación del flujo
_ a _ _ 1b
(5.14) (5.15)
En el capítulo 3 se vio que existen dos maneras de estimar el flujo en el control orientado por campo directo. Si se conciben dos modelos para la estimación y se fusionan en un modelo híbrido se logra una aproximación bastante cercana al flujo actual en el motor, para todo el rango de velocidades y así se logra una velocidad de respuesta dinámica rápida y robusta. El método que se utiliza se basa en [20] y utiliza las ecuaciones 3.7 a 3.26, es decir, se toma la medida de las corrientes estacionarias y los voltajes de salida de la transformación inversa de Park. El diagrama de bloques de la figura 5.6 describe la implementación de ambos modelos y su forma de fusionarlos.
42
Figura 5. 6. Diagrama de bloques de la estimación de flujo mediante un modelo híbrido. Las ecuaciones 3.25 y 3.26 definen el modelo de corriente, expresadas de nuevo para un mejor entendimiento en las ecuaciones 5.16 y 5.17: kn: m "
kl: m "
`:
47
`:
47
$& #& $& #&
`:
`:
#&
#&
(5.16) (5.17)
Las anteriores ecuaciones definen el modelo de corriente implementado, donde el flujo obtenido esta en el marco de referencia estacionario. Las ecuaciones 5.18 y 5.19 definen la manera de obtener el flujo en el marco de referencia estacionario en el estator a partir del flujo en el rotor. # a
# a
4m 4: A 47 4:
4m 4: A 47 4:
b
b
47 4:
47 4:
#&
#&
(5.18) (5.19)
A continuación se tiene el modelo de voltaje que está definido en las ecuaciones 3.7 y 3.8 e implementado en el modelo hibrido en las siguientes ecuaciones: # g ! <), ?U # g ! <), ?U
(5.20) (5.21)
Donde los voltajes <), y <), son la salida de los compensadores PI de acuerdo con las siguientes ecuaciones:
43
<), E# # I E ⁄3 I gE# # I?U
<), E# # I E ⁄3 I gE# # I?U
(5.22) (5.23)
Donde el subíndice v significa al flujo calculado con el modelo de voltaje y el subíndice c hace referencia al flujo calculado con el modelo de corriente. La ganancia proporcional Kp y la constante de tiempo integral Ti se diseñan para que el flujo calculado por el modelo de corriente sea predominante a velocidades bajas, mientras que a velocidades altas el flujo sea calculado por el modelo de voltaje [20]. Una vez que haya sido calculado el flujo del estator mediante el modelo de voltaje se calcula el flujo del rotor a partir de éste, despejando de manera apropiada las ecuaciones 5.18 y 5.19, obteniéndose lo siguiente: #&
#&
4:
47 4:
47
# a
4m 4: A 47
# a
47
4m 4: A 47 47
b b
(5.24) (5.25)
Por último se computa el ángulo θr, que es utilizado en las transformaciones de Park y Park inversa con la siguiente ecuación: #& j & arctan #&
(5.26)
44
Capítulo 6. Frenado regenerativo.
Cuando se tiene un manejador con velocidad variable para un motor, este puede ser frenado por medios mecánicos o eléctricos para reducir su velocidad. El freno puede ser aplicado externamente o puede ser inherente a la carga que se esté manejando, como en el caso de una bomba o un ventilador. El frenado eléctrico es clasificado en frenado dinámico y frenado regenerativo, en ambos casos el motor opera como un generador y la energía cinética que se produce por la inercia es convertida en energía eléctrica. Una máquina de inducción puede operar de esta manera si se tiene un torque negativo y una velocidad supersincrónica, lo cual es posible al reducir la frecuencia del inversor por debajo de la velocidad de la máquina, es decir, ωe < ωr. 6.1. Frenado dinámico. La condición de frenado dinámico se da cuando se tiene un rectificador y un condensador grande como fuente DC alimentando al inversor. La energía eléctrica recuperada en los terminales de la máquina es convertida en DC a través del inversor, que ahora actúa como rectificador y luego disipada en una resistencia como se muestra en la figura 6.1.
Figura 6. 1. Frenado dinámico. Dado que la corriente no puede fluir de forma bidireccional a través de los diodos del rectificador, esta carga el condensador, aumentando el voltaje DC. Como se muestra en la figura, el circuito para el frenado dinámico se conecta para absorber el exceso de energía mediante la disipación en la resistencia, que limita el voltaje del bus DC. Esencialmente, este circuito es un convertidor DC-DC de tipo buck, el cual opera para controlar el voltaje
45
del bus DC. Normalmente este tipo de frenado es utilizado en manejadores de potencia baja, tales como servos, bombas pequeñas y en robótica. 6.2. Frenado regenerativo. En el frenado regenerativo, la energía eléctrica es devuelta a la fuente con el fin de mejorar la eficiencia del sistema. Si el inversor es alimentado por una fuente DC directamente o batería, como en un vehículo eléctrico, la potencia de frenado en vez de ser disipada en una resistencia, puede ser retornada a la fuente fácilmente. De esta manera la energía es devuelta a la batería por el motor, siempre y cuando la máxima corriente regenerativa no sea mayor a la corriente nominal [21], en este caso se puede utilizar el sistema de frenado dinámico descrito anteriormente. Una operación regenerativa continua también puede ser realizada si la carga del motor es una fuente de potencia, como en un sistema de generación eólica. Asimismo es posible devolver la energía a una fuente trifásica si se utiliza un convertidor bidireccional como rectificador, en lugar del rectificador de diodos de la figura 6.1.
46
7. Diseño e implementación de Software y Hardware.
7.1. Implementación del Software.
La implementación del software se desarrolla en un DSP de Texas Instruments referencia TMS320F2808 y cuya velocidad de instrucción es de 10 ns. En el programa principal se hacen las instanciaciones e inicializaciones de los módulos de hardware y software de acuerdo a un esquema de programación modular y a las variables globales utilizadas en el programa. La siguiente secuencia es llegar a un ciclo sin fin, en donde se realiza el control cada vez que haya una interrupción por comparación del modulo PWM del DSP cuya frecuencia es 20 kHz. La figura 7.1 muestra el diagrama de flujo del programa implementado en el DSP.
Figura 7. 1. Diagrama de flujo del programa implementado en el DSP. 47
7.2. Implementación del Hardware.
7.2.1. Inversor por fuente de voltaje.
El inversor por fuente de voltaje de la figura 7.2 se implementa con transistores MOSFET de referencia IRFZ44NS cuya resistencia de encendido es de 22 mΩ. Las resistencias de derivación colocadas en las dos primeras ramas del convertidor son utilizadas para medir las corrientes de las fases a y b con las que se realiza el control en el DSP.
Figura 7. 2. Implementación del inversor por fuente de voltaje. 7.2.2. Diseño de los drivers.
Las señales de PWM entregadas por el DSP son las encargadas de manejar las compuertas de los MOSFET luego de pasar por un buffer de colector abierto. El driver utilizado es de referencia IR2110, capaz de trabajar a frecuencias altas y es adecuado para este circuito ya que puede manejar una fuente flotante por medio de la implementación de un condensador de bootstrap que genera el voltaje de disparo de los transistores superiores en cada rama del convertidor. En la figura 7.3 se muestra el circuito de disparo de una de las ramas. El condensador C1 tiene la función de desacople de la fuente de 15 voltios, mientras que el condensador CB y el diodo D1 conforman el bootstrap de la fuente flotante del MOSFET superior. 48
Figura 7. 3. Circuito de driver. El cálculo del condensador CB se realiza con base en la carga transferida a la compuerta del MOSFET en el encendido, en la carga recuperada del diodo de bootstrap en inversa, en el ripple de voltaje, en la corriente que circula por la resistencia de gate y en la frecuencia de operación del PWM. Realizando el cálculo se escoge un condensador de 470 nF y un diodo MUR120 capaz de soportar el voltaje en inversa de la fuente que maneja el convertidor. 7.2.3. Circuito de acondicionamiento de las señales medidas.
El circuito de la figura 7.4 muestra el circuito de acondicionamiento de la medición de las dos corrientes utilizadas en el control y del voltaje del bus DC. Se utiliza un amplificador operacional rail-to-rail MCP604, cuyas salidas son las entradas del ADC del DSP. El Op-Amp U1:A es un seguidor que sirve para sumar un voltaje DC a la señal de voltaje AC proveniente de los sensores de corriente. Los Op-Amp U1:B y U1:C se encargan de amplificar el voltaje de los sensores de corriente y el Op-Amp U1:D se encarga de acondicionar el voltaje medido en el bus DC. El cálculo de las resistencias se realiza con base en que el voltaje aceptado por el DSP se encuentra entre 0 V y 3 V, el condensador C1 se diseña para obtener un filtro pasabajos de primer orden con el fin de eliminar la frecuencia de conmutación y el condensador CA es de acople. De esta manera se tiene: R1 = 1 kΩ, R2 = 1 kΩ. R3 = 10 kΩ, R4 = 10 kΩ, R5 = 30 kΩ. R6 = R9 = 560Ω, R7 = R8 = 10 kΩ. R10 = 30 kΩ, C1 = 15 nF, CA = 100 nF.
49
Figura 7. 4. Circuito de acondicionamiento de señal. 7.2.4. Medición de la posición y estimación de la velocidad.
Gracias al módulo Quadrature Encoder Pulse (QEP) del DSP, se puede medir la posición del rotor en cualquier instante y con base en esta medición estimar la velocidad, derivando a la posición. Se utiliza un encoder incremental que proporciona la mayor parte de las veces, dos formas de ondas cuadradas y desfasadas entre sí 90º llamadas canal A y canal B. La lectura de un solo canal proporciona la información correspondiente a la velocidad de rotación, mientras que si se utilizan ambas lecturas, es posible detectar la dirección de la rotación con base en la secuencia de datos que producen ambas señales. También es posible tener una señal llamada index que proporciona la posición absoluta del cero del eje del encoder y así obtener de manera más confiable la posición real del motor. Con base en estas tres señales el módulo QEP logra, por medio de un contador y una lógica de programación obtener una función de la posición con respecto al tiempo y a partir de esta, estimar la velocidad derivando la posición.
50
Capítulo 8. Resultados Obtenidos.
La figura 8.1 muestra la respuesta del control de velocidad del sistema simulado en MATLAB®, cuando se tiene una referencia de 1150 RPM. Esta respuesta se asemeja a la respuesta obtenida en el sistema real. 1200
1000
800
600
400
200
0
-200
0
1
2
3
4
5
6
7
Time
Figura 8. 1. Respuesta del sistema según simulación en MATLAB. El motor de inducción a controlar está acoplado a un motor DC, que a su vez se le conecta una carga variable. En este caso el motor DC actúa como generador y al variar la carga conectada a éste, ocurre un fenómeno que se opone a la generación, por ende se constituye en una carga mecánica para el motor de inducción. Cuando se varía la carga se observa en el osciloscopio el voltaje del generador para calcular la potencia y cuál es la variación de la frecuencia del encoder para determinar la regulación de velocidad. En la figura 8.2 se muestra los resultados obtenidos para diferentes referencias de velocidad, en donde se mantiene la regulación para un rango amplio de potencias y donde la potencia que se 51
muestra es la potencia eléctrica del generador DC, que se suma a la potencia mecánica que se necesita producir, para hacer girar al generador.
Figura 8. 2. RPM Vs. Potencia. La figura 8.2 indica que se mantiene una regulación de velocidad en el rango de potencia del motor de inducción a la cual fue diseñado, el codo que se presenta en las curvas significa que el motor sobrepaso su potencia nominal y nótese también que existen pérdidas en los motores y en el empalme entre ellos. Este es un buen resultado y deja implícito un ahorro de energía en el control orientado por campo puesto que se limita la corriente requerida dependiendo del torque mecánico en cada instante que maneje el motor. La utilización de este tipo de control en la industria así no se tenga una aplicación de velocidad variable es fundamental para el ahorro de energía en motores de corriente alterna y además con su implementación se tiene una relación beneficio-costo bastante alta y un periodo de recuperación de la inversión relativamente corto.
52
Capítulo 9. Resumen y conclusiones.
Este trabajo ha presentado una estrategia de control eficiente y de alto rendimiento para un motor de inducción, con capacidad para estimar el flujo del rotor sin el problema del deterioro en el control que produce la variación en los parámetros del motor. Los fundamentos de operación del motor, del convertidor y de la estrategia de control han sido mostrados para lograr un mejor entendimiento. Por otro lado la modulación por espacios vectoriales demostró que es una técnica efectiva de modulación para todo el rango de velocidades. En el capítulo 1 se mostró la introducción al problema que se tiene cuando se requiere controlar un motor de inducción y la manera posible de lograr una solución adecuada. Aquí también se hizo una descripción del sistema de manera general. En el capítulo 2 se desarrolló un modelo en el marco de referencia rotativo, para poder utilizar un control lineal. Se partió de las ecuaciones diferenciales para obtener un modelo de señal grande y luego por medio de la técnica de perturbación obtener un modelo de señal pequeña. El capítulo 3 presentó las diferentes estrategias del control orientado por campo y el desarrollo de las ecuaciones del modelo de corriente y el modelo de voltaje para obtener una estimación real del flujo del rotor en todo el rango de velocidad. El capítulo 4 trató acerca de la teoría del convertidor y los diferentes esquemas de modulación por espacios vectoriales, mientras que en el capítulo 5 se diseño el control que se implementa en el DSP. El capítulo 6 mostró la descripción de la forma como se puede recuperar la energía cinética en momentos de desaceleración del motor sin deteriorar la vida útil de la batería, el capítulo 7 dio los detalles de la implementación del software y el hardware y el capítulo 8 mostró los resultados que se obtuvieron con el control. El control desarrollado en este trabajo tiene una gran aplicabilidad en el sector industrial y también puede ser aplicado a vehículos de tracción por motores AC tanto sincrónicos como asincrónicos ya que posee una excelente respuesta dinámica del torque en todo el rango de velocidades, además la modulación por espacios vectoriales mostró un gran desempeño y una alta eficiencia que disminuyen el costo y el tamaño del convertidor trifásico.
53
REFERENCIAS
1. Johnk C.T.A. “Engineering Electromagnetic Field And Waves” 2. Vas, Peter. “Sensorless Vector and Direct Torque Control” 3. Aller José “Métodos para el análisis y control dinámico de la máquina de inducción” 4. Krishnan R. “Electric Motor Drives, Modeling, Analysis, and Control” 5. Bose B. K. “Modern Power Electronic and AC Drives” 6. Stefanovic V.R., Vukasavic S. N. “Space Vector PWM Voltage Control with Optimized Switching Strategy” 7. Guru B.S. y Hiziruglu H.R. “Electric Machinery and Transformers” 8. Díaz J. L. y Pardo A. “Esquema indirecto del campo orientado con adaptación de la constante de tiempo del rotor” 9. Zhang L., Wathanasarn C., Hardan F. “An Efficient Microprocessor-Based Pulse Width Modulator using Space Vector Modulation Strategy” 10. Ong C. M. “Dynamic Simulation of Electric Machinery” 11. Nag T., Catterjee D., Ganguli A.K. “A simple approach to rotor flux estimation without integration for a DSP based speed sensorless vector control of induction motor” 12. Jansen P., Lorenz R.D. “A Physically Insightful approach to the design and accuracy assessment of flux observers for field oriented induction machine drives” 13. Blaschke F. “The principle of Field orientation as applied to the new transvector closed loop control system for rotating field machine” 14. Krishnan R., Doran F.C. “Study of parameter sensitivity in high-performance inverter-fed induction motor drive systems” 15. Ahmet M., Russel., Thomas A. “Carrier-based PWM-VSI overmodulation strategies: Analysis, Comparison and Design”. 16. Prasad V., Boroyevich D. y Dubovsky S. “Comparison of High Frequency PWM Algorithms for a Voltage Source Inverter” 17. Holtz J. “Pulse Width Modulation – a Survey” 18. Prasad V., Boroyevich D. y Zhang R. “Analysis and Comparison of Space Vector modulation Schemes for a Four-leg voltage Source Inverter” 19. Mohan N., Undeland T. y Robbins W. “Power Electronics: Converters, Application and Design”. 20. Lascu C., Boldea I. y Blaabjerg F. “A Modified Direct Torque Control for Induction Motor Sensorless Drive”. 21. Wang X., Cheng K.W., Liao X., Cheung N., Dong L. “Fuzzy Logic Controller for Electric Vehicle Braking Strategy” 54
APÉNDICE A – Código empleado en el DSP.
El programa en el DSP está realizado de forma modular, como se vio en el capítulo 7. El siguiente es el código principal descrito en la sección 7.1. /********************************************************************* Control de un motor de induccion por medio de control orientado por campo y SVM. Tesis de maestría en ingeniería electrónica Autor: Helbert Arturo Lopez *********************************************************************/ // Include archivos .h #include "DSP280x_Device.h" #include "IQmathLib.h" #include "imtesis.h" #include "parameter.h" #include "build.h" #include // Funcion de interrupcion interrupt void MainISR(void); // Variables globales float32 SpeedRef = 0.1; // referencia velocidad (pu) float32 T = 0.001/ISR_FREQUENCY; // periodo de interrupcion - ISR frequency = 100 MHz Uint16 Isr_cont = 0; volatile Uint16 bandera = FALSE; int16 DlogCh1 = 0; int16 DlogCh2 = 0; int16 DlogCh3 = 0; int16 DlogCh4 = 0; int16 c=0; //Instancias de las transformaciones de Park y Clarke (Librería DMC) CLARKE clarke1 = CLARKE_DEFAULTS; PARK park1 = PARK_DEFAULTS; IPARK ipark1 = IPARK_DEFAULTS; // Instancias de los controladores PID de las corrientes Iq e Id y la velocidad // (libreria DMC) PIDREG3 pid1_id = PIDREG3_DEFAULTS; PIDREG3 pid1_iq = PIDREG3_DEFAULTS; PIDREG3 pid1_spd = PIDREG3_DEFAULTS; // Instancia del generador PWM del DSP (Librería DMC) PWMGEN pwm1 = PWMGEN_DEFAULTS; //Instancia del generador de espacios vectoriales (Librería DMC) SVGENDQ svgen_dq1 = SVGENDQ_DEFAULTS; // instancia del ADC y de la medición de corrientes (Librería DMC) ILEG2DCBUSMEAS ilg2_vdc1 = ILEG2DCBUSMEAS_DEFAULTS; // instancia del modulo datalog para pruebas en Code Composer Studio (Librería DMC) DLOG_4CH dlog = DLOG_4CH_DEFAULTS;
55
// instancia del modulo de estimación de flujo IM_EF ef1 = IM_EF_DEFAULTS; // instancia de las constantes usadas en el cálculo de la estimación del flujo IM_EF_CONST ef1_const = IM_EF_CONST_DEFAULTS; // Instancia del modulo QEP para el encoder incremental QEP qep1 = QEP_DEFAULTS; //instancia para el modulo de la estimación de velocidad a partir de QEP SPEED_MEAS_QEP speed1 = SPEED_MEAS_QEP_DEFAULTS; void main(void) { /******************************************* Inicializacion del DSP ********************************************/ //Funcion de Inicializacion de los registros de control InitSysCtrl(); // Sincronizacion de los modulos ePWM del DSP a TBCLK EALLOW; SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; EDIS; EALLOW; SysCtrlRegs.HISPCP.all = 0x0000; // SYSCLKOUT/1 EDIS; // Deshabilitar y limpiar todas las interrupciones del procesador: DINT; IER = 0x0000; IFR = 0x0000; InitPieCtrl(); InitPieVectTable(); // Inicializacion modulo PWM pwm1.PeriodMax = SYSTEM_FREQUENCY*1000000*T/2; pwm1.init(&pwm1); // Inicializar modulo DATALOG dlog.iptr1 = &DlogCh1; dlog.iptr2 = &DlogCh2; dlog.iptr3 = &DlogCh3; dlog.iptr4 = &DlogCh4; dlog.trig_value = 0x1; dlog.size = 0x400; dlog.prescalar = 1; dlog.init(&dlog); //Inicializar el modulo QEP para el encoder incremental qep1.LineEncoder = 960; qep1.MechScaler = 0.25/qep1.LineEncoder; qep1.PolePairs = P/2; qep1.init(&qep1); //inicializar el modulo de estimacion de velocidad speed1.K1 = _IQ21(1/(BASE_FREQ*0.00005)); speed1.K2 =_IQ(0.9997); // frecuencia de corte filtro pasabajos speed1.K3 = _IQ(1)-speed1.K2; speed1.BaseRpm = 120*(BASE_FREQ/P); // Inicializar modulo ADC ilg2_vdc1.ImeasAGain = _IQ13(0.3); ilg2_vdc1.ImeasBGain = _IQ13(0.3); ilg2_vdc1.ChSelect = 0x0374; ilg2_vdc1.init(&ilg2_vdc1); // Inicializacion de PID_REG3 para Id (libreria DMC)
56
pid1_id.Kp = _IQ(0.05); pid1_id.Ki = _IQ(0.0061); pid1_id.Kd = _IQ(0); pid1_id.Kc = _IQ(0.1); pid1_id.OutMax = _IQ(0.3); pid1_id.OutMin = _IQ(-0.3); // Inicializacion de PID_REG3 para Iq (libreria DMC) pid1_iq.Kp = _IQ(0.05); //0.05 pid1_iq.Ki = _IQ(0.0061); //0.0061 pid1_iq.Kd = _IQ(0); pid1_iq.Kc = _IQ(0.1); pid1_iq.OutMax = _IQ(0.8); pid1_iq.OutMin = _IQ(-0.8); // Inicializacion de PID_REG3 para la velocidad (libreria DMC) pid1_spd.Kp = _IQ(1); pid1_spd.Ki = _IQ(0.000277);//0.000277 pid1_spd.Kd = _IQ(0);//0 pid1_spd.Kc = _IQ(0.2); pid1_spd.OutMax = _IQ(1); pid1_spd.OutMin = _IQ(-0.25); // inicializacion del modulo de constantes para estimar el flujo ef1_const.Rs = 0.3014; ef1_const.Rr = 0.3049; ef1_const.Ls = 0.0089; ef1_const.Lr = 0.0089; ef1_const.Lm = 0.0079; ef1_const.Ts = 0.00005; ef1_const.calc(&ef1_const); // Inicializacion del modulo de estimacion de flujo ef1.K1 = _IQ(ef1_const.K1); ef1.K2 = _IQ(ef1_const.K2); ef1.K3 = _IQ(ef1_const.K3); ef1.K4 = _IQ(ef1_const.K4); ef1.K5 = _IQ(ef1_const.K5); ef1.K6 = _IQ(ef1_const.K6); ef1.K7 = _IQ(ef1_const.K7); ef1.K8 = _IQ(ef1_const.K8); ef1.Kp = _IQ(0.055); ef1.Ki = _IQ(0.002); EINT; ERTM; EPwm1Regs.CMPA.half.CMPA =0; EPwm2Regs.CMPA.half.CMPA =0; EPwm3Regs.CMPA.half.CMPA =0; while (bandera==FALSE) ; // habilitar CNT_zero interrupt de ePWM1 EPwm1Regs.ETSEL.bit.INTEN = 1; // habilitar interrupcion EPwm1Regs.ETSEL.bit.INTSEL = 1; // seleccionar interrupcion cuando el counter sea cero EPwm1Regs.ETPS.bit.INTPRD = 1; // interrupcion el el primer evento EPwm1Regs.ETCLR.bit.INT = 1; // habilitar mas interrupciones // ISR por ePWM EALLOW; PieVectTable.EPWM1_INT = &MainISR; EDIS; PieCtrlRegs.PIEIER3.all = M_INT1;
57
IER |= M_INT3; for(;;); //Loop sin fin } interrupt void MainISR(void) { // verificar la ISR Isr_cont++; if(SpeedRef!=0){ // ------------------------------------------------------------------// llamado a la funcion de lectura del ADC // ------------------------------------------------------------------ilg2_vdc1.read(&ilg2_vdc1); // ------------------------------------------------------------------// Conexion de entradas al modulo de la transformacion de clarke // llamado al calculo de la funcion // ------------------------------------------------------------------clarke1.As = _IQ15toIQ((int32)ilg2_vdc1.ImeasA); clarke1.Bs = _IQ15toIQ((int32)ilg2_vdc1.ImeasB); clarke1.calc(&clarke1); // ------------------------------------------------------------------// Conexion de entradas al modulo de la transformacion de park // llamado al calculo de la funcion // ------------------------------------------------------------------park1.Alpha = clarke1.Alpha; park1.Beta = clarke1.Beta; park1.Angle = ef1.Theta; park1.calc(&park1); // ------------------------------------------------------------------// Conexion de entradas al modulo PID velocidad // llamado al calculo de la funcion // ------------------------------------------------------------------if(speed1.Speed>0){ pid1_spd.OutMax = _IQ(1); pid1_spd.OutMin = _IQ(-0.25); } else{ pid1_spd.OutMax = _IQ(0.25); pid1_spd.OutMin = _IQ(-1); } pid1_spd.Ref = _IQ(SpeedRef); pid1_spd.Fdb = speed1.SpeedRpm; pid1_spd.calc(&pid1_spd); // ------------------------------------------------------------------// Conexion de entradas al modulo PID Iq // llamado al calculo de la funcion // ------------------------------------------------------------------pid1_iq.Ref =pid1_spd.Out;//pid1_spd.Out; pid1_iq.Fdb = park1.Qs; pid1_iq.calc(&pid1_iq); // ------------------------------------------------------------------// Conexion de entradas al modulo PID Id // llamado al calculo de la funcion // ------------------------------------------------------------------pid1_id.Ref = _IQ(IdRef); pid1_id.Fdb = park1.Ds; pid1_id.calc(&pid1_id); // -------------------------------------------------------------------
58
// Conexion de entradas al modulo de la transformacion de park inversa // llamado al calculo de la funcion // ------------------------------------------------------------------ipark1.Ds = pid1_id.Out; ipark1.Qs = pid1_iq.Out; ipark1.Angle = rg1.Out; ipark1.calc(&ipark1); // ------------------------------------------------------------------// Conexion de entradas al modulo de estimacion de flujo // llamado al calculo de la funcion // ------------------------------------------------------------------ef1.UDsS = ipark1.Alpha; ef1.UQsS = ipark1.Beta; ef1.IDsS = clarke1.Alpha; ef1.IQsS = clarke1.Beta; ef1.Speed = speed1.SpeedRpm; ef1.calc(&ef1); // ------------------------------------------------------------------// Conexion de entradas al modulo de Space Vector (Libreria DMC) // llamado al calculo de la funcion // ------------------------------------------------------------------svgen_dq1.Ualpha = ipark1.Alpha; svgen_dq1.Ubeta = ipark1.Beta; svgen_dq1.calc(&svgen_dq1); // ------------------------------------------------------------------// Conexion de entradas al modulo de PWM (Libreria DMC) // llamado al calculo de la funcion // ------------------------------------------------------------------pwm1.MfuncC1 = (int16)_IQtoIQ15(svgen_dq1.Ta); // MfuncC1 is in Q15 pwm1.MfuncC2 = (int16)_IQtoIQ15(svgen_dq1.Tb); // MfuncC2 is in Q15 pwm1.MfuncC3 = (int16)_IQtoIQ15(svgen_dq1.Tc); // MfuncC3 is in Q15 pwm1.update(&pwm1); // ------------------------------------------------------------------// llamado al calculo de la funcion de QEP // ------------------------------------------------------------------qep1.SpeedRef = SpeedRef; qep1.calc(&qep1); // ------------------------------------------------------------------// Conexion de entradas al modulo de estimacion de velocidad // llamado al calculo de la funcion // ------------------------------------------------------------------speed1.ElecTheta =_IQ(qep1.MechTheta); speed1.calc(&speed1); Vdprueba= _IQtoF(speed1.SpeedRpm); } else{ EPwm1Regs.CMPA.half.CMPA =0; EPwm2Regs.CMPA.half.CMPA =0; EPwm3Regs.CMPA.half.CMPA =0; pid1_iq.Ref = _IQ(0); pid1_iq.Fdb = _IQ(0); pid1_iq.Out = _IQ(0); pid1_id.Ref = _IQ(0); pid1_id.Fdb = _IQ(0); pid1_id.Out = _IQ(0); ipark1.Alpha= _IQ(0);
59
ipark1.Alpha= _IQ(0); svgen_dq1.Ta= _IQ(0); svgen_dq1.Tb= _IQ(0); svgen_dq1.Tc= _IQ(0); speed1.Speed = _IQ(0); } // ------------------------------------------------------------------// Modulo DATALOG (pruebas en CCS) (Libreria DMC) // ------------------------------------------------------------------DlogCh1 = (int16)_IQtoIQ15(svgen_dq1.Ta); DlogCh2 = (int16)_IQtoIQ15(svgen_dq1.Tb); DlogCh3 = (int16)_IQtoIQ15(ipark1.Ds); DlogCh4 = (int16)_IQtoIQ15(ipark1.Qs); // ------------------------------------------------------------------// llamado a la funcion de actualizacion del modulo Datalog // ------------------------------------------------------------------dlog.update(&dlog); // Habilitar mas interrupciones de este timer EPwm1Regs.ETCLR.bit.INT = 1; //ACK de la interrupcion para recibir mas PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; }
El siguiente es el código de la estimación de flujo descrito en la sección 5.3. Archivo im_ef_const.c /********************************************************************** Constantes usadas en el estimador de flujo **********************************************************************/ #include "dmctype.h" #include "im_ef_const.h" void im_ef_const_calc(IM_EF_CONST *v) { float32 Tr; Tr = v->Lr/v->Rr; // constante de tiempo rotor (sec) v->K1 = Tr/(Tr+v->Ts); v->K2 = (v->Ts)/(Tr+v->Ts); v->K3 = v->Lm/v->Lr; v->K4 = (v->Ls*v->Lr-v->Lm*v->Lm)/(v->Lr*v->Lm); v->K5 = v->Rs; v->K6 = v->Ts/v->Lm; v->K7 = v->Lr/v->Lm; v->K8 = (v->Ls*v->Lr-v->Lm*v->Lm)/(v->Lm*v->Lm); }
Archivo im_ef.c /*============================================================= Funcion estimador del flujo Modelo Hibrido de corriente para velocidades bajas y voltaje para velocidades altas ------------------------------------------------------------------------------------*/ #include "IQmathLib.h" #include "dmctype.h"
60
#include "im_ef.h" void im_ef_calc(IM_EF *v) { _iq Error, Old_Fem; // Modelo de corriente v->FlujoDrS = _IQmpy(v->K1,v->FlujoDrS) + _IQmpy(v->K2,v->IDsS); v->FlujoDrS-= _IQmpy(v->Speed,v->IQsS); v->FlujoQrS = _IQmpy(v->K1,v->FlujoQrS) + _IQmpy(v->K2,v->IQsS); v->FlujoQrS+= _IQmpy(v->Speed,v->IDsS); // flujo del estator con base en el modelo de corriente v->FlujoDsS = _IQmpy(v->K3,v->FlujoDrS) + _IQmpy(v->K4,v->IDsS); v->FlujoQsS = _IQmpy(v->K3,v->FlujoQrS) + _IQmpy(v->K4,v->IQsS); // compensadores PI Error = v->flujo_v_DsS - v->FlujoDsS; v->UCompDsS = _IQmpy(v->Kp,Error) + v->UiDsS; v->UiDsS = _IQmpy(v->Kp,_IQmpy(v->Ki,Error)) + v->UiDsS; Error = v->flujo_v_QsS - v->FlujoQsS; v->UCompQsS = _IQmpy(v->Kp,Error) + v->UiQsS; v->UiQsS = _IQmpy(v->Kp,_IQmpy(v->Ki,Error)) + v->UiQsS; // calculo del flujo del estator con base en el modelo de voltaje Old_Fem = v->FemDsS; v->FemDsS = v->UDsS - v->UCompDsS - _IQmpy(v->K5,v->IDsS); v->flujo_v_DsS = v->flujo_v_DsS + _IQmpy(_IQ(0.5),_IQmpy(v->K6,(v>FemDsS + Old_Fem))); Old_Fem = v->FemQsS; v->FemQsS = v->UQsS - v->UCompQsS - _IQmpy(v->K5,v->IQsS); v->flujo_v_QsS = v->flujo_v_QsS + _IQmpy(_IQ(0.5),_IQmpy(v->K6,(v>FemQsS + Old_Fem))); // calculo del flujo del rotor con base en los flujos calculados de estator v->flujo_v_DrS = _IQmpy(v->K7,v->flujo_v_DsS) - _IQmpy(v->K8,v->IDsS); v->flujo_v_QrS = _IQmpy(v->K7,v->flujo_v_QsS) - _IQmpy(v->K8,v->IQsS); // calculo del angulo de rotor v->Theta = _IQatan2PU(v->flujo_v_QrS,v->flujo_v_DrS); }
El siguiente es el código para el manejo del modulo QEP del DSP. /*======================================================================= ========== modulo de encoder ---------------------------------------------------------------------------------*/ #include "DSP280x_Device.h" #include "f280xqep.h" void F280X_QEP_Init(QEP *p) { EQep1Regs.QDECCTL.all = QDECCTL_INIT_STATE; EQep1Regs.QEPCTL.all = QEPCTL_INIT_STATE; EQep1Regs.QPOSCTL.all = QPOSCTL_INIT_STATE; EQep1Regs.QUPRD = 10000; // 100Hz EQep1Regs.QCAPCTL.all = QCAPCTL_INIT_STATE; EQep1Regs.QPOSMAX = 4*p->LineEncoder; EALLOW; // Enable EALLOW GpioCtrlRegs.GPAMUX2.bit.GPIO20 = 1; // GPIO20 is EQEP1A GpioCtrlRegs.GPAMUX2.bit.GPIO21 = 1; // GPIO21 is EQEP1B
61
GpioCtrlRegs.GPAMUX2.bit.GPIO23 = 1; // GPIO23 is EQEP1I EDIS; // Disable EALLOW } void F280X_QEP_Calc(QEP *p) { // chequear direccion p->DirectionQep = EQep1Regs.QEPSTS.bit.QDF; p->RawTheta = EQep1Regs.QPOSCNT; if(p->SpeedRef<0) p->SpeedRef*=-1; if(p->SpeedRef<=0.01) p->MechScaler= 0.25/700; else if(p->SpeedRef>0.01 && p->SpeedRef<=0.5) p->MechScaler= 0.25/960; else p->MechScaler= 0.25/1000; p->MechTheta = p->MechScaler*p->RawTheta; p->MechTheta *=2.0; if(p->MechTheta >= 1 && p->MechTheta<2) p->MechTheta -=1; else if (p->MechTheta >= 2 && p->MechTheta<3) p->MechTheta -=2; else if (p->MechTheta >= 3 && p->MechTheta<4) p->MechTheta -=3; else p->MechTheta -=4; // para bajas velocidades: // Unit Timer es 100 Hz if(EQep1Regs.QFLG.bit.UTO == 1) { if((EQep1Regs.QEPSTS.bit.COEF || EQep1Regs.QEPSTS.bit.CDEF)) { // ERROR no calcule la velocidad EQep1Regs.QEPSTS.all = 0x000C; } else { // computo del periodo p->QepPeriod = EQep1Regs.QCPRDLAT;. } } }
El siguiente es el código para estimar la velocidad por medio de la derivada de la posición. /*======================================================================= ============== Estimacion de velocidad ------------------------------------------------------------------------------------*/ #include "IQmathLib.h" #include "dmctype.h" #include "speed_fr.h" void speed_frq_calc(SPEED_MEAS_QEP *v) { _iq Tmp1; int temp; float temp1; // Derivador if ((v->ElecTheta < _IQ(0.9))&(v->ElecTheta > _IQ(0.1)))
62
// Q21 = Q21*(GLOBAL_Q-GLOBAL_Q) Tmp1 = _IQmpy(v->K1,(v->ElecTheta - v->OldElecTheta)); else Tmp1 = _IQtoIQ21(v->Speed); // filtro pasabajos Tmp1 = _IQmpy(v->K2,_IQtoIQ21(v->Speed))+_IQmpy(v->K3,Tmp1); if((Tmp1 - _IQtoIQ21(v->Speed))< -0.01 ||(Tmp1 - _IQtoIQ21(v>Speed))>0.01){ if (Tmp1>_IQ21(1)) v->Speed = _IQ(1); else if (Tmp1<_IQ21(-1)) v->Speed = _IQ(-1); else v->Speed = _IQ21toIQ(Tmp1); } temp1=_IQtoF( v->Speed); temp=(int)(temp1*100); temp1=temp; temp1=temp1/100; v->SpeedRpm = _IQ(temp1); v->OldElecTheta = v->ElecTheta; }
63
APÉNDICE B – Esquemáticos del Hardware.
65
66