CONTROL DE TORQUE PARA MOTOR BLDC DE VEHICULO …
Transcript of CONTROL DE TORQUE PARA MOTOR BLDC DE VEHICULO …
PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE
ESCUELA DE INGENIERIA
CONTROL DE TORQUE PARA MOTOR BLDC
DE VEHICULO ELECTRICO IMPULSADO POR
ULTRACAPACITORES
MAXIMILIANO MURA JORNET
Tesis para optar al grado de
Magister en Ciencias de la Ingeniería
Profesor Supervisor:
JUAN DIXON ROJAS
Santiago de Chile, Diciembre, 2009
2009, Maximiliano Mura Jornet
PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE
ESCUELA DE INGENIERIA
CONTROL DE TORQUE PARA MOTOR
BLDC DE VEHICULO ELECTRICO
IMPULSADO POR ULTRACAPACITORES
MAXIMILIANO MURA JORNET
Tesis presentada a la Comisión integrada por los profesores:
JUAN DIXON ROJAS
DAVID WATTS CASIMIS
MICAH ORTUZAR DWORSKY
YADRAN FRANCISCO ETEROVIC SOLANO
Para completar las exigencias del grado de
Magister en Ciencias de la Ingeniería
Santiago de Chile, Diciembre, 2009
ii
A todos y cada uno de los miembros
de mi familia, por su apoyo y
compresión en todo momento. En
particular a Sofía y Claudia, quienes
con su amor me dieron las fuerzas
para completar este trabajo.
iii
AGRADECIMIENTOS
Quisiera agradecer en primer lugar a mis padres, por su apoyo constante y esfuerzo
incondicional, los que me permitieron completar con éxito mi educación profesional.
Agradezco también a mi profesor guía durante estos dos años de investigación, don Juan
Dixon Rojas, por su invaluable ayuda a lo largo de todo mi trabajo, por su inmensa
sabiduría, y por sobretodo su sencillez y calidad humana.
Quisiera agradecer además, la ayuda, el apoyo y la compañía de todo el equipo de trabajo
del Laboratorio: Sebastián Bosch, Javier Pereda, y en especial a Carlos Castillo, quien
construyó el inversor que utilicé para mi investigación; entendiendo que el trabajo aquí
presentado es fruto no sólo de mi esfuerzo sino de un trabajo en equipo. Sin duda no
hubiese sido lo mismo sin ellos. Agradezco también a Eduardo Cea, quién siempre estuvo
dispuesto a ayudarme y alegrarnos con su especial sentido del humor.
Por último, pero no menos importante, agradezco a Dios, quien crea las oportunidades y
entrega día a día las fuerzas para llevarlas a cabo.
iv
INDICE GENERAL
Pág.
DEDICATORIA........................................................................................................... ii
AGRADECIMIENTOS .............................................................................................. iii
INDICE DE TABLAS ............................................................................................... vii
INDICE DE FIGURAS ............................................................................................. viii
RESUMEN ................................................................................................................... x
ABSTRACT ................................................................................................................ xi
1. Introducción ........................................................................................................ 1
1.1. Los Ultracapacitores ................................................................................... 3
1.2. Objetivos .................................................................................................... 6
2. Características del motor síncrono BLDC .......................................................... 7
2.1 Comparación con otro tipo de motores eléctricos ...................................... 7
2.1.1 Motores de corriente continua (DC) ................................................ 7
2.1.2 Motores de inducción ....................................................................... 7
2.1.3 Motores síncronos PMSM ............................................................... 8
2.1.4 Motores de reluctancia ..................................................................... 8
2.1.5 Motores síncronos BLDC ................................................................ 9
2.2 Construcción y principios de operación ................................................... 10
2.2.1 El estator ........................................................................................ 10
2.2.2 El rotor ........................................................................................... 12
2.2.3 Sensor de efecto Hall ..................................................................... 13
2.2.4 Teoría de operación ....................................................................... 16
v
2.3 Características de torque y potencia ......................................................... 20
2.4 Descripción del motor a utilizar ............................................................... 22
3. Desarrollo del proyecto ..................................................................................... 25
3.1 Descripción del vehículo .......................................................................... 25
3.2 Descripción del inversor ........................................................................... 27
3.3 Técnica de control a utilizar ..................................................................... 30
3.3.1 Banda de histéresis ......................................................................... 31
3.3.2 Banda de histéresis multinivel ....................................................... 33
3.3.3 Técnica de control con banda multinivel ....................................... 35
3.3.4 Balance de voltajes entre ultracapacitores ..................................... 38
3.4 Simulaciones ............................................................................................ 43
4. Implementación práctica ................................................................................... 48
4.1 Características generales del microprocesador a utilizar ......................... 48
4.2 Esquema de control .................................................................................. 48
4.3 Módulos físicos del controlador ............................................................... 50
4.4 Banco de pruebas ..................................................................................... 53
4.5 Sistemas de seguridad y detección de fallas ............................................. 54
5. Resultados y Discusión ..................................................................................... 58
5.1 Análisis sobre el control de corrientes ..................................................... 58
5.2 Análisis del control de voltajes ................................................................ 62
5.3 Análisis del sistema de frenado regenerativo ........................................... 66
6. Conclusiones y trabajo futuro ........................................................................... 70
BIBLIOGRAFÍA ........................................................................................................ 73
vi
ANEXOS .................................................................................................................... 77
ANEXO A: Esquema de pines del microprocesador ................................................. 78
ANEXO B: Tarjetas del controlador .......................................................................... 79
ANEXO C: Datasheet sensor de corriente ................................................................. 88
ANEXO D: Datasheet sensor de voltaje .................................................................... 91
ANEXO E: Datasheet conversores DC/DC ............................................................... 93
ANEXO F: Código fuente del microprocesador. Archivo main.cl ............................ 95
ANEXO G: Código fuente del microprocesador. Archivo config.h ........................ 115
ANEXO H: Código fuente del microprocesador. Archivo disparos.h ..................... 116
ANEXO I: Código fuente del microprocesador. Archivo extras.h .......................... 118
ANEXO J: Frecuencia en control de banda de histéresis (h) ................................... 119
ANEXO K: Códigos de error del controlador .......................................................... 123
ANEXO L: Construcción del inversor ..................................................................... 124
vii
INDICE DE TABLAS
Tabla 1-1: Cuadro comparativo de elementos de almacenamiento energético ..................... 3
Tabla 2-1: Cuadro comparativo de motores ........................................................................ 10
Tabla 2-2: Voltaje según velocidad angular del rotor ......................................................... 22
Tabla 2-3: Relación entre torque y corriente de armadura .................................................. 23
Tabla 2-4: Resumen de características ................................................................................ 23
Tabla 3-1: Ficha técnica ...................................................................................................... 25
Tabla 3-2: Rangos de control y posibles operaciones. ........................................................ 35
Tabla 3-3: Combinaciones para generar un nivel de voltaje en terminales ........................ 41
viii
INDICE DE FIGURAS
Figura 1-1: Esquema de condensador y ultracapacitor ......................................................... 4
Figura 1-2: Ultracapacitor Maxwell, módulo de 48V y 165F ............................................... 5
Figura 2-1: Estator de máquina BLDC ............................................................................... 11
Figura 2-2: Fuerza contra-electromotriz trapezoidal ........................................................... 11
Figura 2-3: Fuerza contra-electromotriz sinusoidal ............................................................ 12
Figura 2-4: Distintas topologías de rotor con imanes permanentes .................................... 13
Figura 2-5: Sección transversal de motor BLDC ................................................................ 14
Figura 2-6: Sensor de efecto Hall, ejemplo para rotor de un par de polos .......................... 15
Figura 2-7: Campo magnético de estator ............................................................................ 17
Figura 2-8: Movimiento del rotor en sentido horario .......................................................... 19
Figura 2-9: Formas de onda de voltaje y corriente ideales operando como motor ............. 20
Figura 2-10: Característica de torque del motor BLDC ...................................................... 22
Figura 3-1: Fotografía del automóvil .................................................................................. 26
Figura 3-2: Montaje de ultracapacitores en vehículo .......................................................... 26
Figura 3-3: Esquema de puente H ....................................................................................... 27
Figura 3-4: Operación de puente H ..................................................................................... 28
Figura 3-5: Esquema completo del inversor multinivel ...................................................... 28
Figura 3-6: Puente IGBT usado en construcción del inversor ............................................ 29
Figura 3-7: Inversor de 9 niveles construido ....................................................................... 29
Figura 3-8: Diagrama de flujo de control por histéresis...................................................... 31
Figura 3-9: Corriente controlada por banda de histéresis ................................................... 32
Figura 3-10: Corriente controlada por múltiples bandas de histéresis ................................ 34
Figura 3-11: Esquema de conexión para corriente entre las fases A y B ............................ 35
Figura 3-12: Corriente IAB controlada y correspondiente variación del voltaje del inversor
............................................................................................................................................. 37
Figura 3-13: Diagrama de flujo para elección de banda ..................................................... 38
Figura 3-14: a) aumentado corriente de motor b) disminuyendo corriente......................... 40
ix
Figura 3-15: Ejemplo de operación para en nivel +2 (a) y nivel -2 (b)............................... 42
Figura 3-16: Diagrama de flujo del control de voltajes ...................................................... 43
Figura 3-17: Modelo completo del sistema ......................................................................... 44
Figura 3-18: Detalle del motor BLDC ................................................................................ 45
Figura 3-19: Detalle controlador ......................................................................................... 46
Figura 3-20: Detalle de la topología del inversor ................................................................ 47
Figura 4-1: Esquema del software de control...................................................................... 50
Figura 4-2: Tarjeta principal ............................................................................................... 51
Figura 4-3: Tarjeta de disparo para señales ópticas ............................................................ 52
Figura 4-4: Tarjeta para conexión de los sensores .............................................................. 53
Figura 4-5: fotografía del banco de pruebas........................................................................ 54
Figura 4-6: Diagrama de flujo del chequeo de sensores ..................................................... 56
Figura 4-7: Diagrama de conexión y diagrama de flujo del control de cortocircuito ......... 57
Figura 5-1: Simulación de corrientes de armadura ............................................................. 59
Figura 5-2: Oscilograma de las corrientes de armadura ...................................................... 60
Figura 5-3: Corriente de referencia (rojo) y torque de la máquina (amarillo) .................... 60
Figura 5-4: Oscilograma detalle de corriente en una línea.................................................. 61
Figura 5-5: Detalle de rizado de corriente ........................................................................... 62
Figura 5-6: voltaje fase-fase del motor ............................................................................... 63
Figura 5-7: Corriente de línea (amarillo) y voltaje fase-fase (verde) .................................. 64
Figura 5-8: Comportamiento de módulos con voltajes similares ........................................ 65
Figura 5-9: Comportamiento de módulos con voltajes diferentes ...................................... 66
Figura 5-10: Esquema de pedal de control del vehículo ..................................................... 67
Figura 5-11: Flujo del control de voltaje en regeneración .................................................. 68
Figura 5-12: Forma de corriente en regeneración (controlada) ........................................... 69
Figura 5-13: Forma de corriente en regeneración (no controlada) ...................................... 69
x
RESUMEN
En este trabajo se presenta el análisis, diseño e implementación de un control de torque
para un motor síncrono tipo Brushless DC (BLDC) de 5 kW de potencia, con el objeto de
ser utilizado en un vehículo eléctrico. El inversor a utilizar es de 9 niveles, construyéndose
con 2 puentes H en cascada por fase y utilizando como única fuente de energía un módulo
ultracapacitor de 48 Vdc por cada puente. A diferencia de los vehículos eléctricos
convencionales que existen hoy en día, los cuales usan como fuente primaria de
almacenamiento energético baterías de distintos tipos, el vehículo en el cual se
implementará el controlador tendrá una capacidad de potencia mucho más elevada;
permitiendo cargar el vehículo en el transcurso de segundos o minutos, dependiendo de la
capacidad del cargador. Por otro lado, como los ultracapacitores actuales disponen de una
baja densidad energética, la eficiencia del sistema de tracción y la capacidad de frenado
regenerativo son puntos importantes en la implementación. La estrategia de control
utilizada en este trabajo fue el control de corriente por medio de múltiples bandas de
histéresis, el cual fue primero probado en simulaciones utilizando MATLAB/Simulink.
El vehículo dispondrá en total de aproximadamente 280 Wh de energía, lo que le permitirá
tener una autonomía cercana a 3 km., demostrando así que en cuanto los ultracapacitores
basados en nanotubos de carbono salgan al mercado (con 20 o 30 veces más capacidad de
almacenamiento que los utilizados en esta investigación), será perfectamente viable
construir vehículos eléctricos que permitan su uso en ciudad, tengan un tiempo de carga
muy reducido y no requieran ser cambiados en toda su vida útil.
Palabras Claves: Vehículos eléctricos, Ultracapacitores, banda de histéresis, control de
torque
xi
ABSTRACT
This work presents the analysis, design and implementation of a torque control for a
synchronous Brushless DC motor type (BLDC) of 5 kW of power, in order to be used in an
electric vehicle. The inverter is using 9 levels, built with 2 cascaded H-bridge stages and
using a single energy source of 48 Vdc ultracapacitor module for each bridge. Unlike
conventional electric vehicles that exist today, which use a primary source of energy
storage batteries of different types, the vehicle in which control will be implemented, will
have a much higher power capacity, allowing the vehicle to be recharged in the course of
seconds or minutes, depending on the charger capacity. However, as the current
ultracapacitors have a low energy density, the efficiency of drive system and regenerative
braking are important points in the implementation. The control strategy used in this work
was the current control through multiple hysteresis bands, which was first tested in
simulation using MATLAB / Simulink.
The vehicle has a total of approximately 280 Wh energy, allowing it to have an autonomy
close to 3km., demonstrating that once the ultracapacitors based on carbon nanotubes are
in the market (with 20 or 30 times more storage capacity than the used in this research), it
will be perfectly feasible to build electric vehicles that allow their use in town, have a very
short recharge time and do not require to change its batteries throughout its life time.
Keywords: electric vehicles, supercapacitors, ultracapacitor, hysteresis band control, torque
control
1
1. INTRODUCCIÓN
Aunque para muchos pudiera parecer que los vehículos eléctricos son una invención
reciente y que lleva pocos años de desarrollo, ciertamente la historia dista bastante de ser
así; de hecho los vehículos eléctricos en sus comienzos competían codo a codo con sus
rivales de combustión interna y fueron producidos de manera comercial durante 20 años
(Hughes, 1996), hasta que la ventajas comparativas de los vehículos a combustión
frenaron la creación de los propulsados con energía eléctrica. No fue hasta la crisis de
petróleo de los años 70, en que se volvió a pensar nuevamente en la creación de
vehículos eléctricos debido no sólo a la escasez de petróleo sino también a la
contaminación ambiental que produce la combustión de hidrocarburos (D'Agostino,
1993).
Las ventajas que tenían los vehículos a combustión sobre los eléctricos en un comienzo,
siguen siendo básicamente las mismas (Sulzberger, 2004). La gran densidad energética
de la gasolina permite que los automóviles tengan una autonomía mucho mayor que la
que se logra con cualquier tipo de baterías y el tiempo de carga de combustible toma
algunos minutos en lugar las 6 u 8 horas que toma la carga de los vehículos eléctricos
que se ven hoy en el mercado.
Según lo expuesto anteriormente, es claro que el centro de atención para el desarrollo de
más y mejores vehículos eléctricos debe ser la forma de almacenamiento de la energía.
Durante muchos años se ha experimentado con diferentes tipos de baterías, con
hidrógeno, y en el último tiempo han surgido con mucha fuerza los vehículos híbridos
(Chan, 2007)(Chang & Wong, 2004). Sin embargo existe otra tecnología bastante poco
explorada hasta el momento y que podría cambiar drásticamente, en el transcurso de
pocos años más, las prestaciones de los vehículos eléctricos (Schneuwly, Maher, &
Auer, 2004). La tecnología de almacenamiento antes mencionada son los
Ultracapacitores y el tema central de esta tesis es justamente la implementación de un
2
vehículo propulsado únicamente con esta fuente de energía, como prototipo
experimental y base para los futuros desarrollos de estos elementos.
Al margen de los beneficios del vehículo eléctrico como tal, es importante tener en
cuenta que detrás de un cambio tan drástico como la masificación de los vehículos
utilizando esta tecnología, existe un necesario cambio de paradigma del modo en que
concebimos la red eléctrica. Para el sistema eléctrico, sin duda no dejaría de ser
relevante que miles de usuarios se conectaran a la red y decidieran cargar su vehículo
eléctrico por ejemplo, ya que una carga completa de éste puede significar alrededor de
10kWh de energía, la cual puede ser suministrada en un espacio de tiempo muy pequeño
(con la tecnología de los ultracapacitores) o más largo, según se desee. La capacidad de
la red eléctrica es limitada, además se alimenta con distintas fuentes energéticas y a un
distinto precio según la demanda existente en el sistema, lo que implica una gran
complejidad a la hora de operarla, sobre todo ante acciones no absolutamente
predecibles como la necesidad de un usuario por cargar su automóvil. Si bien lo anterior
puede sonar como un gran problema, por medio de las denominadas “redes inteligentes”
o “smart grids” (Farhangi, 2010) (Brown, 2008), podría convertirse en una gran
oportunidad. Las redes inteligentes no son otra cosa que las mismas redes de
abastecimiento energético actuales, pero dotadas de decisiones y acciones que no
dependen del sistema global sino de pequeñas porciones del mismo. Con esta
herramienta, los vehículos eléctricos podrían convertirse en un actor relevante en la red
eléctrica, ahora no sólo como consumidores, sino también como generadores de apoyo
en una mini red que ve sobrepasada su capacidad en algún momento o bien estima que le
es menos costoso comprar esa energía localmente que distribuirla desde una central. En
este nuevo paradigma, existirían más y mejores oportunidades para el usuario de un
vehículo eléctrico, ayudando a rentabilizar su inversión y la del país en estas tecnologías.
3
1.1. Los Ultracapacitores
El condensador electroquímico de doble capa (ECDL), más conocido como
ultracapacitor, es en su definición más básica, un capacitor o condensador con una
capacidad de almacenar energía mucho más alta que lo normal, en general del
orden de diez a veinte veces la capacidad de un condensador electrolítico común
(0,2 Wh/Kg). Ellos permiten tener del orden de 2 a 5 Wh/kg de capacidad de
almacenamiento. Si pensamos que las baterías comunes de Plomo-ácido tienen una
energía específica promedio de 30 Wh/kg (ver Tabla 1-1), nos podemos dar cuenta
de la gran importancia que tienen estos dispositivos en el ámbito del
almacenamiento energético, pues en su estado de desarrollo actual ya se pueden
comparar con las baterías mencionadas.
Un ultracapacitor almacena energía electrostáticamente polarizando una solución
electrolítica y aunque es un dispositivo electroquímico, a diferencia de cualquier
batería, no hay reacciones químicas que intervengan en su mecanismo de
almacenamiento de energía. Por esto último, este mecanismo es altamente
reversible, lo que permite al ultracapacitor a ser cargado y descargado centenares
de miles o incluso millones de veces (Maxwell Inc., 2009).
Tabla 1-1: Cuadro comparativo de elementos de almacenamiento energético
Equipo Densidad de
energía [Wh/Kg]
Densidad de potencia [W/Kg]
Vida útil [Ciclos]
Batería Pb-Ácido 30 150 700
Batería Li-ión 120 250 1.200
Ultracapacitor Maxwell 4 3.200 1.000.000
Al estar formado por dos capas porosas de carbón activado, permite que al
aplicarle potencial entre las placas, la placa positiva atraiga a los iones negativos
4
en el electrolito, mientras que el potencial de la placa negativa atrae a los iones
positivos. Esto crea dos capas de almacenamiento capacitivo, a diferencia de un
condensador electrolítico común.
Figura 1-1: Esquema de condensador y ultracapacitor
La forma de lograr la gran capacidad de los ultracapacitores para almacenar
energía, se debe a la estructura porosa de sus electrodos basados en carbono
activado, lo que permiten multiplicar varias veces el área de las capas que los
componen para un mismo volumen (Figura 1-1); de esta manera se puede lograr
áreas de 2000m2/g, lo que hasta hace poco tiempo parecía imposible. Además de
esto, debido a que la capacidad (C) de un condensador es proporcional al área de
las placas (A) e inversamente proporcional a la distancia de separación entre las
mismas (d) (como se aprecia en la Eq. 1-1 1-1), la extremadamente pequeña
distancia de separación que se logra en los ultracapacitores, hacen posible logran
altos valores de energía específica.
Eq. 1-1
Aunque en el mercado existen diversos modelos de ultracapacitores, por costos,
tamaño y capacidad, se eligieron 6 módulos ultracapacitores de 48V y 165F
5
(Figura 1-2), del fabricante norteamericano Maxwell, los que tuvieron un costo
aproximado de US$2.250 cada uno.
Figura 1-2: Ultracapacitor Maxwell, módulo de 48V y 165F
De esta manera, según la fórmula para calcular la energía almacenada en un
condensador (Eq. 1-2), cada módulo almacena 52,8Wh; lo que hace un total de
316,8Wh almacenados en el vehículo. Sin embargo, por limitaciones del fabricante
los módulos no serán completamente descargados, sino que mantendrán una
tensión mínima de 16V, de manera que la energía total utilizable disminuye a
281,6Wh.
Eq. 1-2
Los ultracapacitores prometen convertirse en poco tiempo en fuentes de
almacenamiento energético altamente competitivas con el resto de las tecnologías
actuales. De hecho en la actualidad ya existen prototipos con energías específicas
varias veces mayores a las de los módulos utilizadas en este proyecto (Bakhoum,
6
2009), (Weir & Nelson, 2008), (Schindall, 2007); pero no son aún productos
disponibles para la venta al público.
1.2. Objetivos
El objetivo principal de esta tesis y del proyecto en el cual se enmarca la misma, es
el desarrollo de un vehículo eléctrico que utilice ultracapacitores como única
fuente energética para tracción. La razón por la cual se hace necesario investigar
acerca de los ultracapacitores como fuente primaria o única de energía para
vehículos, se debe a que estos dispositivos presentan una serie de ventajas frente a
las baterías convencionales, dentro de las cuales podemos resaltar: el reducido
tiempo de carga (del orden de minutos o incluso segundos), la extensa vida útil
(cerca de un millón de ciclos), una muy alta eficiencia (supera el 98%), la no
necesidad de mantenimiento, y que su estado de carga pueda ser determinado
directamente con el voltaje (Maxwell Inc., 2009).
En tanto el objetivo específico de este trabajo, es la realización de un controlador
que sea capaz de manejar el sistema de tracción del vehículo, utilizando el
acelerador del mismo como una referencia de torque (tal como en los vehículos
convencionales), tanto para la aceleración como para el frenado regenerativo.
Como objetivo particular del controlador, se busca que el torque de la máquina
BLDC (motor de tracción a utilizar), sea lo más plano posible, ya que esto implica
un manejo más cómodo y una mayor eficiencia energética.
Finalmente se espera que el control sea capaz de manejar el sistema de carga y
descarga de los ultracapacitores, de manera de mantener el mismo voltaje en todos
los módulos y utilizar así el máximo de la energía disponible en ellos.
7
2. CARACTERÍSTICAS DEL MOTOR SÍNCRONO BLDC
En este capítulo se describe el motor síncrono BLDC, el cual fue utilizado para el
desarrollo del vehículo que trata esta tesis. Lo aquí expuesto no pretende ser una fuente
detallada de información respecto a este tipo de motores, sino más bien un resumen de
sus principales características de funcionamiento, con el objeto de poder comprender
mejor las características del controlador.
2.1 Comparación con otro tipo de motores eléctricos
A continuación veremos un resumen de las características de los motores eléctricos
utilizados actualmente en tracción (Hashemnia & Asaei, 2008).
2.1.1 Motores de corriente continua (DC)
Si bien los motores de continua fueron los primeros motores utilizados para la
tracción y hubo mucho interés en ellos debido a la simplicidad que significa
controlar su torque, su construcción con anillos y escobillas acarrea problemas de
mantenimiento. Por esta razón al surgir nuevos métodos de control para las
máquinas de corriente alterna, el interés en desarrollar aplicaciones con este tipo de
motores bajo considerablemente.
De todas formas el motor DC sigue siendo un buen candidato para aplicaciones de
baja potencia, ya que en la actualidad se fabrican con poderosos imanes
permanentes lo que los hace más eficientes y confiables. El estándar para este tipo
de motores es alcanzar eficiencias de alrededor de un 80%, contando con una
potencia específica de 0,3 kW/kg.
2.1.2 Motores de inducción
Los motores de inducción han sido muy utilizados en diversos tipos de
aplicaciones industriales y estos se debe a sus características de confiabilidad,
8
robustez, bajo mantenimiento, y capacidad de trabajar en entornos hostiles. Por
otro lado, la tecnología de los motores de inducción es la más madura entre los
motores de corriente alterna. Esta máquina tiene una muy buena eficiencia
(alrededor del 90%), es en extremo robusta y de muy bajo costo comparativo.
Además de contar con una potencia específica bastante competitiva (alrededor de
0,6 kW/kg). Sólo en la última década se ha visto superada por la mejor eficiencia y
bajo peso de las máquinas síncronas de imanes permanentes
2.1.3 Motores síncronos PMSM
Los motores síncronos de imanes permanentes son sin duda el competidor más
serio para los motores de inducción en aplicaciones de tracción. En efecto, varias
empresas (ej. Toyota, Honda, Nissan) ya producen vehículos con este tipo de
motores, pues tienen ventajas muy significativas, como son: alta potencia
específica (1kW/kg), mayor eficiencia (95%) y mejor disipación del calor hacia el
medio ambiente. El punto débil de esta tecnología es su elevado costo en relación a
su competidor más cercano, el motor de inducción, que hacen preferible muchas
veces este último pese a las ventajas del primero.
2.1.4 Motores de reluctancia
Los motores de reluctancia han recibido mucha atención para su aplicación en
vehículos, debido a sus ventajas constructivas. Ellos son de implementación muy
simple y muy resistente. Además son bastante similares en prestaciones con
respecto a los motores de inducción (eficiencia cercana a 91% y potencia
específica de 0,7 kW/kg). El motor sin embargo presenta serias desventajas como:
operación ruidosa, alto rizado en el torque, requiere de una topología especial en el
inversor, y produce alta interferencia electromagnética.
9
2.1.5 Motores síncronos BLDC
Estos motores se pueden considerar como un caso particular de los motores
síncronos de imanes permanentes, siendo su diferencia que los motores BLDC se
alimentan con ondas rectangulares de corrientes en contraste con los motores
PMSM que son alimentados con ondas sinusoidales. Se podría decir también que
son el resultado de invertir el estator y el rotor de un motor DC, ya que los imanes
se encuentran en el rotor y el colector es emulado alternando la corriente de
armadura de la máquina, eliminando de esta forma todo tipo de escobillas y
anillos. Las principales ventajas en relación al PMSM son: tamaño más compacto
(1,2kW/kg), eficiencia levemente superior, detección de la posición del rotor más
sencilla y construcción un poco menos complicada. Además, a diferencia de los
motores PMSM, el control es bastante más sencillo de implementar ya que no es
necesario generar ondas sinusoidales en las corrientes de alimentación, en este
sentido son parecidos a los motores DC, pero mucho más eficientes (alrededor de
95%).
En la Tabla 2-1 2-1, podemos ver un cuadro comparativo en el que se midió
(Hashemnia & Asaei, 2008), con un puntaje de 1 a 5, cada característica de los
distintos tipos de motores.
10
Tabla 2-1: Cuadro comparativo de motores
Tipos de Motor DC Inducción PMSM Reluctancia BLDC Características
Densidad de Potencia 2,5 3,5 5 3,5 5
Eficiencia 2,5 3,5 5 3,5 5
Controlabilidad 5 5 4 3 5
Confiabilidad 3 5 4 5 4
Madurez de la tecnología 5 5 4 4 4
Costo 4 5 3 4 3
Puntaje Total 22 27 25 23 26
2.2 Construcción y principios de operación
Como se mencionó anteriormente, los motores BLDC son una clase particular de
motor síncrono. Esto quiere decir que, como cualquier motor síncrono, el campo
magnético del rotor no es inducido por el campo magnético del estator, como lo
haría en un motor común de inducción, y por ende no existe deslizamiento entre
ambos campos (giran a la misma velocidad angular). Si bien existen motores
BLDC con distinto número fases, el motor usado en este proyecto fue un motor
trifásico, por ende cualquier explicación o figura hace referencia a este tipo de
motores únicamente.
2.2.1 El estator
En un motor BLDC, el estator está compuesto de cabezas polares formadas de
fierro laminado, en donde son puestos los embobinados (Figura 2-1). Aunque a
simple vista pareciera la configuración del estator de una máquina de inducción
cualquiera, la diferencia la hace la distribución que tienen los enrollados. La
mayoría de las máquinas BLDC se componen de 3 enrollados conectados en
11
estrella, cada uno compuesto por un grupo de bobinas conectadas entre sí;
formando así un número par de polos en el estator.
Figura 2-1: Estator de máquina BLDC
Existen 2 tipos de embobinados para los motores síncronos, que producen dos
variantes: motores trapezoidales (BLDC) o motores sinusoidales. La diferencia
entre ellos está dada por la interconexión interna que se produce al formar las fases
con las distintas bobinas; lo que produce una fuerza contra-electromotriz o voltaje
inducido distinto entre los terminales del motor (Figura 2-2 y Figura 2-3).
Figura 2-2: Fuerza contra-electromotriz trapezoidal
12
Figura 2-3: Fuerza contra-electromotriz sinusoidal
Cada tipo de motor, al tener distinto tipo de voltaje, también tiene distinto tipo de
corriente. Los motores sinusoidales requieren de corriente de alimentación
sinusoidales y los motores BLDC requieren de corrientes rectangulares
(idealmente), para su correcta operación. De esta manera, los motores sinusoidales
poseen una característica de torque más suaves que los motores BLDC, aunque su
construcción es más compleja por la distribución de las bobinas del estator y
también lo es su control, ya que es necesario generar ondas de corrientes
sinusoidales con bajo contenido armónico para su correcta operación (Yedamale,
2003).
2.2.2 El rotor
El rotor de un motor BLDC está construido con imanes permanentes, los cuales
pueden generar desde uno a un par de decenas de pares de polos. Según los
requerimientos de densidad de flujo magnético de la máquina, los imanes del rotor
pueden ser de diversos tipos. Si bien los imanes de ferrita han sido muy utilizados
para estos efectos, los nuevos descubrimientos de imanes de tierras raras han
13
ganado terreno en este campo; ya que estos imanes poseen una densidad magnética
bastante mayor y son más livianos para un mismo volumen que los imanes de
ferrita (Yedamale, 2003). Actualmente la aleación más usada en motores de imanes
permanentes es la de Neodimio-Fierro-Boro. Cualquiera sea el tipo de imán a
utilizar, los rotores son construidos alternando los polos norte (N) y sur (S) (Figura
2-4), completando una cantidad par de polos y en directa relación con el número de
pares de polos del estator de la misma máquina.
Figura 2-4: Distintas topologías de rotor con imanes permanentes
2.2.3 Sensor de efecto Hall
Como se mencionó anteriormente, a diferencia de los motores DC, la conmutación
de los motores BLDC no se realiza con un colector con escobillas, sino que se
controla electrónicamente. Debido a esto, es necesario conocer la posición del rotor
para saber en qué secuencia se deben energizar las bobinas del estator. En la
mayoría de los motores BLDC, se usan 3 sensores de efecto Hall; los cuales se
ubican en el mismo eje del motor, del lado que no se usa.
Cada vez que los polos magnéticos del rotor pasan cerca de un sensor de efecto
Hall, estos entregan una señal digital (high o low), indicando si por ahí está
pasando un polo N o S. Según la combinación de las señales de estos 3 sensores, se
puede saber exactamente la posición del rotor (con una precisión angular que
14
depende del número de polos); lo que nos permite determinar de manera precisa la
secuencia de conmutación que se debe seguir.
Como los sensores de efecto Hall necesitan estar en la parte estacionaria del motor
y perfectamente alineados con los polos del rotor, en la mayoría de los casos se
realiza una réplica magnética a escala de los polos de rotor exclusivamente para su
uso en el sensor Hall (Figura 2-5).
Figura 2-5: Sección transversal de motor BLDC
Los sensores de efecto Hall utilizados en las máquinas BLDC, se ubican en la
mayoría de los casos a 120° eléctricos de desfase entre ellos y tienen un segmento
circular de un tercio del segmento ocupado por cada polo. Como sabemos, si el
número de pares de polos es mayor que uno, los grados eléctricos y geométricos no
coincidirán, por lo que claramente su posición espacial dependerá directamente del
número de pares de polos del motor.
En la Figura 2-6 se puede ver como ejemplo un rotor con un par de polos, con 3
sensores de efecto Hall a 120° de desfase entre ellos. Si la cercanía del polo norte
(N) implica que el sensor de efecto Hall entrega la señal high (1 lógico) y por el
contrario la presencia del polo sur (S) tiene como salida la señal low (0 lógico);
podemos ver como la combinación de señales de salida (Ha:Hb:Hc), nos permiten
detectar la posición angular con precisión de 60° geométricos. Es decir, tendremos
6 posiciones conocidas para el rotor.
15
Hb Hc
NS
0°
Ha:Hb:Hc=100 à 0°
Hb Hc
Ha:Hb:Hc=101 à 60°
60°
Hb Hc
Ha:Hb:Hc=001 à 120°
120°
NS NS
Ha
Hb Hc
NS
180°
Ha:Hb:Hc=011 à 180°
Ha
Hb Hc
Ha:Hb:Hc=010 à 240°
240°
Ha
Hb Hc
Ha:Hb:Hc=110 à 300°
300°
NS N S
Ha Ha Ha
Figura 2-6: Sensor de efecto Hall, ejemplo para rotor de un par de polos
Es sencillo notar que el ángulo mínimo para precisar la posición del rotor siempre
será de 60° eléctricos. Como los pares de polos tienen que siempre completar los
360° de la circunferencia completa, la relación entre grados eléctricos y
geométricos se establece como:
Eq. 2-1
De esta manera entre más pares de polos tenga el motor, más precisa será al
información de posición del rotor y por ende el controlador puede hacer un control
de torque más preciso.
16
2.2.4 Teoría de operación
Debido a que los sensores de efecto Hall permiten la determinación del rotor en
sectores circulares de 60°, necesariamente tenemos 6 etapas distintas para una
rotación de 360° del mismo; a esto se le llama conmutación de seis pasos (six-step
commutation).
La conmutación en seis pasos, es el resultado del hecho de que no disponemos de
información acerca de la posición angular del rotor durante los 60° en que el motor
permanece en un sector circular específico (al menos no con el sensor Hall); al
desconocer la información, lo óptimo es efectuar una sola acción para cada uno de
los 6 sectores circulares. Como el rotor es de imanes permanentes, es el campo del
estator el que hay que ir variando para lograr un movimiento circular en el eje. Por
cada sector en que se encuentre el rotor, se debe generar un vector de campo
magnético con cierto ángulo y cierta magnitud para que controlar el sentido de giro
y torque de la máquina.
Como se mencionó anteriormente, para la conmutación se usarán 6 vectores de
campo magnético, los que permanecerán constantes durante 60° eléctricos (y
geométricos para el caso base con un par de polos). Estos vectores se forman de las
combinaciones producidas al introducir corriente plana por una de las fases y
sacarla por otra, dejando la tercera sin alimentar.
En la Figura 2-7 podemos ver qué dirección toma el vector de campo magnético
del estator al alimentar diferentes bobinas. Por ejemplo, al introducir corriente por
la fase A y sacarla por la fase B (A→B); el vector del campo que se genera como
resultado de la suma vectorial de los campos generados por cada bobina, apunta en
dirección de los 300° (según las coordenadas de la misma figura).
17
0°
A à B
A
B
C
30°
60°
90°
120°
150°
180°
210°
240°
270°
300°
330°
0°
A à C
A
B
C
30°
60°
90°
120°
150°
180°
210°
240°
270°
300°
330°
0°
B à C
A
B
C
30°
60°
90°
120°
150°
180°
210°
240°
270°
300°
330°
0°
B à A
A
B
C
30°
60°
90°
120°
150°
180°
210°
240°
270°
300°
330°
0°
C à A
A
B
C
30°
60°
90°
120°
150°
180°
210°
240°
270°
300°
330°
0°
C à B
A
B
C
30°
60°
90°
120°
150°
180°
210°
240°
270°
300°
330°
Figura 2-7: Campo magnético de estator
18
Según la teoría básica de las máquinas síncronas, el torque que tiene la máquina es
proporcional al ángulo (δ) que se forma entre el vector de campo magnético del
rotor y el vector de campo del estator; esto quiere decir que el torque alcanza un
máximo cuando ambos vectores se encuentran a una distancia de 90°.
De las figuras anteriores, podemos apreciar que sólo se detectan posiciones en
ángulos múltiplos de 60° y a la vez podemos aplicar vectores de campo en las
mismos seis puntos. Esto quiere decir, en términos prácticos, que los valores más
cercanos a los que podemos poner los vectores de campo (al comienzo de cada
ciclo de conmutación) son 60° y 120°. Es por esto que el motor BLDC no es
cualquier máquina síncrona, sino que está especialmente construida para evitar la
variación de torque, a lo largo de los 60° eléctricos que dura cada ciclo de su
operación. De esta forma, en lugar experimentar una variación entre 120° y 60° al
atravesar un polo, el ángulo del vector se mantiene constante en la posición
intermedia, es decir 90°. Para que esta operación efectivamente resulte, a
diferencia de una máquina síncrona sinusoidal, el motor BLDC debe alimentarse
con corrientes planas. De esta forma, el torque de la máquina podrá ser tan plano
como las corrientes que lo producen.
Dependiendo la señal digital entregada por el conjunto de los sensores de efecto
Hall y del sentido de giro que quiera dársele al rotor, quedará determinado que
vector de campo de estator debe aplicarse y mantenerse hasta el próximo cambio
en la señal del sensor de posición.
19
0°
A
B
C
30°
60°
90°
120°
150°
180°
210°
240°
270°
300°
330°
N S
Ha
Hb
Hc
Ha:Hb:Hc=010
B à A
0°
A
B
C
30°
60°
90°
120°
150°
180°
210°
240°
270°
300°
330°
NS
Ha
Hb
Hc
Ha:Hb:Hc=110
B à C
0°
A
B
C
30°
60°
90°
120°
150°
180°
210°
240°
270°
300°
330°
NS
Ha
Hb
Hc
Ha:Hb:Hc=100
A à C
0°
A
B
C
30°
60°
90°
120°
150°
180°
210°
240°
270°
300°
330°
NS
Ha
Hb
Hc
Ha:Hb:Hc=101
A à B
0°
A
B
C
30°
60°
90°
120°
150°
180°
210°
240°
270°
300°
330°
NSHa
Hb
Hc
Ha:Hb:Hc=001
C à B
0°
A
B
C
30°
60°
90°
120°
150°
180°
210°
240°
270°
300°
330°
NS
Ha
Hb
Hc
Ha:Hb:Hc=101
C à A
Figura 2-8: Movimiento del rotor en sentido horario
20
2.3 Características de torque y potencia
Según lo mencionado hasta ahora, podemos resumir el comportamiento ideal de las
corrientes y tensiones de la máquina BLDC como se ve en la Figura 2-9. En línea
continua se muestra la corriente que pasa por cada bobina y en línea discontinua se
observa la tensión inducida en las bobinas por efecto de la variación del flujo
electromagnético por ellas.
0° 60° 120° 180° 240° 300° 360°
IA
IB
IC
eA
eB
eC
0
+
-
0
+
-
0
+
-
Figura 2-9: Formas de onda de voltaje y corriente ideales operando como motor
Se puede observar claramente que en cada ciclo de 60° eléctricos, sólo se
encuentran 2 de las 3 fases conduciendo; en donde por una de las fases está
entrando la corriente y por la otra saliendo. De esta manera la potencia eléctrica en
el primero ciclo (0 a 60 grados) puede ser calculada como:
Eq. 2-2
21
Resultado que se puede generalizar sabiendo que la magnitud del voltaje inducido
en cada bobina tiene la misma magnitud (e) y lo mismo en el caso de las
corrientes, en que se considera Imax como el máximo valor de la corriente por
cualquiera de las fases; de manera que la ecuación general para el cálculo de la
potencia del motor sería:
Eq. 2-3
Conociendo la relación entre torque y potencia, podemos determinar:
Eq. 2-4
La relación entre la tensión inducida en cada bobina (e) y la velocidad angular (ω),
resulta ser lineal debido a que la densidad de flujo magnético es una constante
determinada por el rotor y el número de vueltas de cada enrollado por bobina es
también constante.
Eq. 2-5
El resultado de la ecuación anterior, nos indica que el torque de la máquina BLDC
es directamente controlado por la magnitud de las corrientes rectangulares de
estator, en donde interviene una constante de proporcionalidad (kΦ) la cual es una
característica de construcción de la máquina la cual debe ser especificada por el
fabricante u obtenida experimentalmente.
Al igual que el motor de inducción, los motores de síncronos y en particular el
motor BLDC, pueden operar variando su torque desde cero hasta el torque nominal
girando a cualquier velocidad (dentro de su rango nominal) usando un inversor.
Como toda máquina eléctrica sin embargo, tanto el torque como la velocidad
nominal se pueden extender bajo ciertas circunstancias, dando lugar a una
extensión de la curva característica de torque (ver Figura 2-10).
22
Figura 2-10: Característica de torque del motor BLDC
2.4 Descripción del motor a utilizar
El motor BLDC utilizado es un motor de procedencia China, del cual sólo se
especificaron la potencia nominal y el número de polos, por lo que el resto de la
información fue obtenida por medio de pruebas experimentales.
Primero se midió la constante de proporcionalidad dada por la relación entre el
voltaje fase-fase y la velocidad angular del rotor, datos que se muestran en la tabla
a continuación.
Tabla 2-2: Voltaje según velocidad angular del rotor
Velocidad [rpm] Voltaje fase-fase [Vrms] Relación
[Vrms/rpm] 50 0,90 0,018
100 1,53 0,015
150 2,29 0,015
250 3,80 0,015
350 5,40 0,015
400 6,16 0,015
23
450 6,92 0,015
500 7,69 0,015
La siguiente medición que se realizó fue de la constante de proporcionalidad que
relaciona la magnitud de las corrientes rectangulares de armadura con el torque del
motor (Tabla 2-3). Esta medición es muy importante, ya que nos indica la
capacidad del motor para propulsar el automóvil.
Tabla 2-3: Relación entre torque y corriente de armadura
Corriente [Arms] Torque medido [Nm] Relación [Nm/A]
8,0 1,4 0,18
16,4 3,6 0,21
19,2 4,2 0,22
24,0 5,25 0,22
Se determinó además que el sensor de efecto Hall, como la mayoría de los sensores
de este tipo, se alimenta con 5V y las señales de salida son de colector abierto, por
lo que es necesario poner resistencias pull-ups para su correcta operación.
Habiendo realizado todas estas pruebas, se llegó al siguiente resumen de
características:
Tabla 2-4: Resumen de características
Características del motor BLDC
Potencia Nominal 5000 W
N° de polos 6 pares
Resistencia por fase 100 mΩ
Inductancia por fase 60 µH
Voltaje nominal 76 Vrms
Corriente nominal 73 Arms
Torque nominal 16 Nm
Velocidad nominal 3000 RPM
24
25
3. DESARROLLO DEL PROYECTO
En el presente capítulo se revisará en detalle las características del proyecto, así como el
marco teórico en el cual se desarrolla el mismo. Hacia el final de este capítulo, se
revisarán las técnicas de control utilizadas y el proceso de simulación del conjunto.
3.1 Descripción del vehículo
El automóvil de combustión interna seleccionado para su conversión a propulsión
eléctrica fue un Suzuki Maruti (Figura 3-1), sus principales características técnicas
se describen a continuación.
Tabla 3-1: Ficha técnica
Características del automóvil
Potencia Máxima 26 kW
Peso 640 kg
Torque máximo 57 Nm
Largo 3300 mm
Ancho 1405 mm
Alto 1410 mm
Consumo promedio 15 km/l
Este vehículo presentó una serie de ventajas con respecto a otros de similares
características, ya que los principales puntos de decisión fueron:
Reducido tamaño
Bajo peso
Medianamente baja resistencia aerodinámica
De construcción simple (fácil de modificar)
Costo reducido (para su adquisición)
26
Figura 3-1: Fotografía del automóvil
Por el peso y las dimensiones de los 6 módulos ultracapacitores, se construyó una
estructura de aluminio para ser puesta en la parte trasera del vehículo; ocupando
parte del maletero y sobre los asientos traseros abatidos como se puede ver en la
Figura 3-2.
Figura 3-2: Montaje de ultracapacitores en vehículo
27
Los módulos son conectados con el inversor, el cual se localiza en la zona donde se
encontraba el motor original del auto, con 12 cables de poder; ya que no existe
punto neutro común, pues cada uno de los ultracapacitores es una fuente flotante.
3.2 Descripción del inversor
Se construyó un inversor multinivel de 9 niveles, con el fin de alimentar el motor
BLDC de tracción. Para realizar este inversor se utilizó una conocida técnica en los
inversores multinivel (Rodriguez, Lai, & Peng, 2002), que consiste en poner en
cascada (o serie) varios puentes H en cada fase (Tolbert, Peng, & Habetler, 1998).
En primer lugar resulta importante recordar cuál es la topología del puente H y en
particular como es controlada su operación. En la Figura 3-3 podemos ver que un
puente H se construye con 4 semiconductores (en nuestro caso IGBT), teniendo
como entrada una fuente de voltaje V y como salida los terminales A-B.
+
V
- AB
SBU
SBD
SAU
SAD
Figura 3-3: Esquema de puente H
Activando la conducción de un IGBT (en rojo) o desactivando la misma (color
negro), es posible variar la tensión entre los terminales A-B, tal como se muestra
en la figura a continuación.
28
+
V
- AB
SBU
SBD
SAU
SAD
+
V
- AB
SBU
SBD
SAU
SAD
+
V
- AB
SBU
SBD
SAU
SAD
VAB = -V VAB = +V VAB = 0
Figura 3-4: Operación de puente H
Al poner 2 puentes en cascada por cada fase, es posible variar la tensión de
cualquiera de las fases (A, B, o C) con respecto al punto neutro (N), de modo de
obtener 5 niveles distintos de voltajes; de esta forma se obtienen 9 niveles para la
tensión entre cualquiera de las fases (-4V, -3V, -2V, -V, 0, +V, +2V, +3V, +4V).
+
V
-
SBU
SBD
SAU
SAD
+
V
-
SBU
SBD
SAU
SAD
+
V
-
SBU
SBD
SAU
SAD
+
V
-
SBU
SBD
SAU
SAD
+
V
-
SBU
SBD
SAU
SAD
+
V
-
SBU
SBD
SAU
SAD
A B C
N
Figura 3-5: Esquema completo del inversor multinivel
29
Aunque existen módulos IGBT que disponen directamente de la configuración
para ser utilizados como puente H, debido a las limitaciones de corriente y al costo
de reposición de estos equipos; se utilizaron puentes trifásicos (la configuración
más común para inversores) en donde sólo será utilizadas 2 se sus 3 piernas
(Figura 3-6). De esta manera el equipo estará trabajando a lo sumo a dos tercios de
la potencia para el cual fue fabricado, y eventualmente al quemarse alguno de los
semiconductores que lo componen, es posible intercambiar las piernas en
operación y poder así seguir operando como un puente H completamente
funcional.
+
V
-
SAU
SAD
SBU
SBD
SCU
SCD
Figura 3-6: Puente IGBT usado en construcción del inversor
Figura 3-7: Inversor de 9 niveles construido
30
3.3 Técnica de control a utilizar
Según lo revisado hasta ahora, para ajustar el torque de la máquina es necesario
controlar sus corrientes de armadura de la misma según lo mostrado en la Figura
2-9 del capítulo anterior. La intensidad de la corriente o valor “techo” de la onda
rectangular, es la que controla la magnitud del torque que entrega la máquina en el
eje y su forma, es decir perfectamente plana, es la que nos asegura un torque
también plano en el rotor. De esta manera resulta evidente que es importante
controlar tanto la operación sincronizada por medio de los sensores de efecto Hall,
como la calidad de la onda de corriente aplicada.
Existen diversos trabajos dedicados a la minimización del ripple del torque de la
máquina BLDC ((Ashabani, Kaviani, Milimonfared, & Abdi, 2008), (Bharatkar,
Yanamshetti, Chatterjee, & Ganguli, 2008), (Liu, Zhu, & Howe, Commutation-
Torque-Ripple Minimization in Direct-Torque-Controlled PM Brushless DC
Drives, 2007),(Liu, Zhu, & Howe, Direct torque control of brushless DC drives
with reduced torque ripple, 2005),(Rodriguez & Emadi, 2007) ), el cual es
producido en su mayor parte en los instantes de conmutación de cada una de las
seis etapas de operación del motor. Por ende, el eje central del problema y el punto
que produce la diferenciación de cada trabajo es el modo en que se controlan las
corrientes de la máquina. Básicamente son utilizados 3 tipos de control para las
corrientes de alimentación del motor, los cuales son:
PWM con portadora triangular
Muestreo periódico
Banda de histéresis
De los métodos mencionados, el seleccionado para este proyecto fue el método de
control de corrientes utilizando banda de histéresis, debido a las ventajas que
31
presenta para este proyecto en particular respecto a los otros métodos, las cuales
serán expuestas a continuación.
3.3.1 Banda de histéresis
El método de banda de histéresis, es esencialmente un método mediante el cual se
mantiene el error de la corriente (e) respecto a la referencia (Iref), dentro de un
determinado valor. De esta manera se diferencia de un esquema de control
convencional, los cuales generalmente buscan mantener el error lo más cercano a
cero posible en todo instante.
La estrategia se puede entender mejor en el diagrama de flujo que se muestra en la
Figura 3-8, en donde e representa el valor del error entre la corriente de referencia
y la corriente medida ( ), eMAX es el mayor valor que se le permite tomar al
error y eMIN el menor valor que puede tomar la misma variable.
e > emaxSi
e < emin
Aumentar
Corriente
Disminuir
CorrienteNo No
Si
Figura 3-8: Diagrama de flujo de control por histéresis
El comportamiento del error (e) de una corriente controlada por el método de
banda de histéresis puede observarse en la Figura 3-9 3-9. La zona verde es donde
el error de la corriente puede variar libremente y la zona rojiza es en donde el
32
controlador se ve forzado a actuar de manera que el valor del error vuelva a los
límites aceptables. El punto 1 en la Figura 3-9 3-9 muestra un ejemplo en el que el
error sobrepasa su límite inferior (e < eMIN) y por consecuencia el controlador debe
conmutar el inversor con el fin de disminuir el valor de la pendiente de la corriente y
entrar de nuevo en la zona verde. El punto 2 ejemplifica el caso opuesto al anterior, en
donde el error sobrepasa su límite superior (e > eMAX) y por ende se debe aumentar la
pendiente corriente para llevar su valor nuevamente dentro de los límites. Los puntos 3, 4,
y 5 son ejemplos de instantes en los que el error de la corriente se mantiene en la zona
verde y en consecuencia el controlador mantiene la última operación realizada (en este
caso particular aumentar la pendiente de la corriente).
e=eMIN
e=0
e=eMAX
1
2
3
Δt1 Δt2
4
5
Figura 3-9: Corriente controlada por banda de histéresis
Como características principales del método, podemos decir que se encuentra el
hecho de que no se preocupa en lo absoluto del valor de la corriente cuando ésta se
encuentra dentro de los rangos permitidos para su valor (determinados por eMAX y
eMIN); por otro lado, podemos ver que la frecuencia a la cual debe conmutar el
controlador (cuando se requiere aumentar o disminuir la corriente) no es ni
constante ni determinable, debido a que depende del valor de las variables en juego
en cada instante del proceso (notar y de la Figura 3-9). Sin embargo su
frecuencia máxima sí es determinable, lo que permite evitar que los IGBTs sean
33
sobrepasados por la frecuencia de conmutación. Al ser determinable, los
parámetros tales como la misma banda de histéresis se pueden ajustar para limitar
la frecuencia. (Ver Anexo J).
3.3.2 Banda de histéresis multinivel
Exactamente en la misma línea del método de control de corriente por banda de
histéresis convencional, la utilización de múltiples bandas de histéresis para
controlar la operación de máquinas eléctricas, ha sido probada con éxito en varios
trabajos anteriores ((Corzine, 2000),(Lock & da Silva, 2007),(Loh P. C., Bode,
Holmes, & Lipo, 2003),(Loh, Bode, & Tan, 2005),(Zare & Ledwich, 2002)).
Dentro de las ventajas que se pueden contar en la utilización de multiplicidad de
niveles, las más relevantes para nuestro proyecto son: el hecho de que permite una
respuesta más rápida a los cambios de la corriente y por otro lado se adecúa
perfectamente a la topología de los inversores multinivel.
Como se puede observar en la Figura 3-10, el comportamiento de la variable
controlada por varias bandas de histéresis es muy similar al que tiene visto con
anterioridad; sin embargo, además de la banda principal de control dada por los
límites de error mínimo y máximo (zona verde); podemos identificar distintos
subniveles de referencia del error, los cuales nos permiten entregar una respuesta
más precisa para un nivel de error en particular. Por ejemplo si la corriente medida
tiene un valor muy distante de la referencia lógicamente sería más conveniente
aplicarle un mayor voltaje al motor, de modo que ésta se acerque rápidamente a la
referencia; sin embargo en el caso contrario, con un error muy pequeño será
siempre más conveniente aplicar un menor voltaje ya que de lo contrario se
producirá una mayor perturbación en la corriente.
34
e=eMIN
ΔBp
e = Iref - IL
ΔBp
ΔBs
ΔBs
e=eMAX
Figura 3-10: Corriente controlada por múltiples bandas de histéresis
Aunque cada banda puede tener distintos niveles de referencia, por lo general se
estandariza su operación de modo de generar una banda principal (la que
determinará el error mínimo del controlador) dada por y el resto de las bandas
se posicionan equidistantemente de la primera por . De esta manera, variando
los dos parámetros mencionados ( y ), se puede configurar el controlador
variando su tiempo de respuesta y frecuencia de conmutación, entre otros.
Como el inversor a utilizar consta de 9 niveles, el controlador debe utilizar 4
niveles positivos y 4 niveles negativos para las bandas de histéresis, lo que genera
9 rangos entre cada uno de los cuales se debería aplicar una acción distinta. La
Figura 3-11, muestra la configuración en que se encuentra el inversor para
controlar la corriente entre la fase A y la B (IAB). Las fuentes en verde representan
los puentes H de la fase A, mientras las azules representan los de la fase B.
35
AH
AL
BH
BL
IAB
N
LA LB
Figura 3-11: Esquema de conexión para corriente entre las fases A y B
A modo de ejemplo, en la Tabla 3-2 podemos ver las diferentes acciones que se
podrán tomar para mantener la corriente IAB, según la banda en que se encuentre el
error. El símbolo “+1” se refiere a un puente H entregando un voltaje positivo en el
sentido representado en la Figura 3-11, el símbolo “-1” se refiere a lo contrario y el
“0” representa un puente H entregando tensión nula.
Tabla 3-2: Rangos de control y posibles operaciones.
Banda Mínimo Máximo AL AH BL BH 4 BP+3BS x +1 +1 -1 -1
3 BP+2BS BP+3BS +1 +1 -1 0
2 BP+BS BP+3BS +1 +1 0 0
1 BP BP+3BS +1 0 0 0
0 -BP BP 0 0 0 0
-1 -BP-BS -BP 0 0 0 +1
-2 -BP-2BS -BP-BS 0 0 +1 +1
-3 -BP-3BS -BP-2BS 0 -1 +1 +1
-4 x -BP-3BS -1 -1 +1 +1
3.3.3 Técnica de control con banda multinivel
Aunque la Tabla 3-2 nos proporciona una referencia en el actuar del control
respecto de la información que nos entregan las bandas, el asunto resulta ser un
36
poco más complejo. Como podemos ver en la misma tabla, debido a que los
puentes H se conectan en serie para modificar la corriente, podemos notar que
existen varias combinaciones para generar un mismo voltaje en los terminales del
inversor. Por ejemplo para generar el voltaje correspondiente a “Banda 3” se usó la
configuración (+1,+1,-1,0), pero bien podría haberse usado (+1,+1,0,-1). Por otro
lado la simple utilización de la tabla anteriormente mostrada sería más bien un
control proporcional discreto; ya que para poder operar realmente como banda de
histéresis es necesario conocer no sólo el estado actual del error, sino que también
su valor en el instante de conmutación anterior.
En la Figura 3-12 se muestra el comportamiento que tendría una corriente al ser
controlada utilizando múltiples bandas de histéresis. Este diagrama podría
corresponder al transiente que ocurre al variar drásticamente la referencia, en
donde la curva se va ajustando cada vez más hacia la banda principal e idealmente
se mantiene ahí. Como se puede apreciar en la misma figura, aunque los puntos 1 y
2 se encuentran en el mismo rango de error (entre B1 y B2), la respuesta del
controlador (voltaje VAB) es completamente distinta en consecuencia de que ésta
depende de la respuesta del mismo en el instante de conmutación anterior. Se
observa de la misma figura que al tener más niveles de respuesta, el control puede
responder más rápido en los cambios repentinos de la variable, sin embargo esto no
quita que en estado estable la velocidad de las conmutaciones sea igual o incluso
más bajas que utilizando una única banda de control.
37
IAB ERROR
B1
B2
B3
B4
B-1
B-2
B-3
B-4
+V
+2V
+3V
+4V
-4V
-3V
-2V
-V
VAB
Figura 3-12: Corriente IAB controlada y correspondiente variación del voltaje del inversor
Como se observó en el comportamiento de la corriente controlada por múltiples
bandas de histéresis (figura anterior), el nivel de error o banda que tomará como
referencia el controlador para operar el inversor, no es directamente el resultado de
la medición de la magnitud del error, sino que rescata también información del
período anterior. Esto último se debe al hecho de que se debe mantener la esencia
del control por banda de histéresis tradicional (de una banda), en donde al elegir
una de las bandas superiores en magnitud, ésta no debe reducirse hasta llegar a las
bandas de distinto signo. Viendo la Figura 3-12, podemos ver que cuando el error
cruza el umbral de B4, se activa la respuesta -4V y aunque la magnitud del error
decrece debido a dicha acción, la respuesta del controlador permanece constante
hasta que el error cambia de signo (al llegar al umbral B-1). Además de lo
mencionado, el controlador debe mantener en todo momento un límite máximo de
38
frecuencia de operación debido a limitaciones de los semiconductores (IGBT), de
modo que esta variable también influye de alguna manera en la selección de la
banda (ver proceso en Figura 3-13).
SELECCIÓN DE BANDA
abs(Bnueva) > abs(Bprev)
O
signo(Bnueva) != signo(Bprev)
Banda=Bnueva Banda=Bprev
NO
Frecuencia < Frec. Máx.
SI
SI
NO
Figura 3-13: Diagrama de flujo para elección de banda
3.3.4 Balance de voltajes entre ultracapacitores
Al estar los ultracapacitores como fuentes flotantes (uno por cada puente H que
contiene el inversor) y operando el inversor como se ha explicado anteriormente,
es lógico y esperable que la descarga de estos módulos no se hará de forma pareja.
El hecho de que los módulos tengan un distinto valor de voltaje nos perjudica por
al menos tres motivos: el primero es que el controlador podría trabajar
incorrectamente, ya que opera sobre la premisa de que puede usar cualquier
combinación de puentes para obtener un voltaje específico, el segundo motivo
consiste en la limitación de descarga de los ultracapacitores, los cuales serán
descargados hasta un tercio de su valor nominal, de modo que el primer módulo
que alcance esa cota obliga al controlador a dejar de operar el motor, y el tercer
motivo guarda relación con el uso eficiente de los módulos, debido a que de flujo
39
de corriente que se genera al utilizarlos (ya sea cargándolos o descargándolos)
provoca calor, resulta recomendable utilizarlos de manera equilibrada para así
minimizar la temperatura de cada módulo.
En general para los inversores multinivel debe ser una preocupación el balancear
correctamente el uso de sus fuentes de alimentación, sean estas ultracapacitores o
cualquier otra (Tolbert L. , Peng, Cunnyngham, & Chiasson, 2002). Muchas veces
la intención de balancear los voltajes se toma normalmente como un objetivo
secundario al control, aunque existen algunos proyectos que incluyen técnicas de
balance especiales y anexas al control de corrientes (Lu, Zhu, Tian, & Wang,
2007). La desventaja de los sistemas anexos para la ecualización de los voltajes,
reside en el hecho de que para hacer el balance se utilizan conmutaciones o
intercambios de energía cuyo único propósito es igualar las tensiones y no el
objetivo principal del controlador, que es ajustar el nivel de torque de la máquina.
En el presente trabajo se ideó una forma de balancear los voltajes de manera muy
precisa y sin usar ninguna conmutación extra o sistema auxiliar de ecualización. La
técnica creada hace uso del hecho de que para mantener una corriente controlada
en una banda de histéresis, en algunos momentos es necesario tanto aumentar su
valor como disminuirlo. Para aumentar la corriente, los puentes han de operarse de
manera que el voltaje de los mismos sea más alto que el inducido por el motor y de
esta manera la corriente fluye desde los ultracapacitores hacia el motor (Figura
3-14-a). Por otro lado, para disminuir la corriente los puentes deben ser operados
de manera inversa, es decir manteniendo una tensión menor que la del motor, pero
a diferencia del caso anterior la corriente seguirá teniendo básicamente el mismo
valor (por ser una carga inductiva) y por ende en este caso la corriente fluye hacia
los ultracapacitores (Figura 3-14-b).
40
a)b)
+
V
-
IM -
V
+
IM
Figura 3-14: a) aumentado corriente de motor b) disminuyendo corriente
Debido al hecho de que el inversor es multinivel, para cada caso en que se requiera
tanto aumentar o disminuir la corriente habrá varias posiciones en que los puentes
se pueden encontrar para generar la misma tensión en terminales. Es esta
redundancia en los niveles del inversor lo que nos permite decidir que módulos
ocupar. Por ende intentaremos usar los más cargados en el caso de querer aumentar
la corriente y los menos cargados en el caso de querer disminuirla.
Sin considerar que los puentes pueden dar el nivel cero al ser cortocircuitados o
que se pueden restar unos con otros para obtener distintos voltajes, debido a que
estas operaciones involucran un gasto energético extra; existe un número
determinado de combinaciones posibles para operar cada nivel (Tabla 3-3). De esta
manera podemos ver que, por ejemplo, al utilizar las bandas 4 (máxima tensión
en terminales) sólo existe una combinación posible y por ende no puede haber
selección de módulos ni balance de voltajes. Por otro lado desde los niveles 1 a
3 existen entre 4 y 6 combinaciones posibles, lo que permite una diversidad de
operaciones de carga y descarga entre módulos.
41
Tabla 3-3: Combinaciones para generar un nivel de voltaje en terminales
Nivel Número de combinaciones
0 1
1 4
2 6
3 4
4 1
La mayoría de los sistemas de ecualización de voltajes, utiliza una cierta diferencia
como referencia para comenzar a operar; por ejemplo, si algún módulo presenta
una diferencia de más de 1 Volt del promedio, gatilla que el sistema de
ecualización entre en acción a modo de bajar esa diferencia. Nuestro sistema en
cambio, opera constantemente, ya que utiliza el mismo ciclo de conmutación de
control de la corriente (que generalmente varía entre 1kHz y 15kHz) para
equilibrar los voltajes (Figura 3-15), por ende tiene una mejor precisión para
mantener todos los voltajes en el mismo valor que el método mencionado
anteriormente.
42
0 (baja carga) - V (alta carga) +
+ V (alta carga) - 0 (baja carga)
A
B
IMIM < Iref (aumentar corriente)
+ V (baja carga) - 0 (alta carga)
0 (alta carga) - V (baja carga) +
A
B
IMIM > Iref (disminuir corriente)
a)
b)
(H1)
(H1)
(H2)
(H3) (H4)
(H3) (H4)
(H2)
Figura 3-15: Ejemplo de operación para en nivel +2 (a) y nivel -2 (b).
El sistema de control de voltajes, el cual como se mencionó antes funciona de
forma paralela al sistema de control de corrientes, resulta ser un sencillo algoritmo
(Figura 3-16) que primero se encarga de ordenar los posibles puentes a utilizar (4
como máximo), y luego según el signo de la banda seleccionada (por el control de
corriente), opera los más cargados (voltaje más alto) en el momento de aumentar la
corriente y los menos cargados en el caso de disminuirla.
43
ALGORITMO PARA CONTROL DE
VOLTAJES
Banda > 0
ORDENAR PUENTES-H
POR VOLTAJE
(orden descendiente)
Seleccionar los primeros
“Banda” Puentes para usarlos
(descargando)
Seleccionar los últimos
“Banda” Puentes para usarlos
(cargando)
SI
NO
Figura 3-16: Diagrama de flujo del control de voltajes
De esta forma podemos ver que el sistema de control de voltajes ideado para este
controlador, además de presentar las ventajas energéticas ya explicadas, ocupa
mucho menos tiempo de procesamiento, pues sólo debe leer 4 voltajes en cada
conmutación y ordenarlos; en lugar de leer todos los voltajes, promediarlos y
seleccionarlos; usando no sólo el tiempo de conmutación, sino también el
intermedio (si es un sistema que trabaja en paralelo).
3.4 Simulaciones
Como en cualquier proyecto, el proceso de simulación es un paso esencial en el
que probamos las distintas características tanto del sistema, como del controlador a
aplicar. En nuestro caso las simulaciones fueron realizadas en el programa
MATLAB/Simulink (The Mathwork Inc., 2008) debido a que este programa
permitía modelar tanto los componentes físicos como el sistema de control. En la
Figura 3-7, se puede observar el sistema completo modelado usando el programa; a
44
la derecha se encuentra el motor BLDC de 12 polos, en el medio (color azul) se ve
el módulo de control y a la izquierda el modelo del inversor de 9 niveles.
fase A
fase B
fase C
vector 1 a->b = [1 2 4 5 ]
vector 2 a->c = [1 3 4 6 ]
vector 3 b->a = [2 1 5 4 ]
vector 4 b->c = [2 3 5 6 ]
vector 5 c->a = [3 1 6 4 ]
vector 6 c->b = [3 2 6 5 ]
Xei : Puente emisor de corriente
Xri : puente receptor de corriente
[Xe 1 Xr 1 Xe 2 Xr2]
|---M1---M4--+A
|---M2---M5--+B
|---M3---M6--+C
Ts=5e-0006 sOJO CON LA CONMUTACION POR DELTA DE VOLTAJE
Y LA REF DE CORRIENTE0.85 ohms | 100 uH (J inicial 0.8m J)
referencia direccion
rad2rpm 1
K-
rad2rpm
K-
Discrete,
Ts = 2e-006 s.
hall 1hall
corrientes
conversor de señales
g6g12 fcn
conversor A /D
In
SS/H
Voltajes
v+-
Vff
Te (N.m)
Referencia Torque
Ordenamiento Voltajes
volts
vector
kill
modo
puentes
Vrank
Check
node 2
node 4
node 3N (rpm )
MinMax 2
max
MinMax 1
max
MinMax
max
Lem2
i+-
Lem1
i+-
Lem
i+-
Inversor
Kill sig
gatesABC
Uc1
Uc2
Uc3
Uc4
Uc5
Uc6
Fem
Em 1
uy fcn
Data Store
Write
banda
Data Store
Read
banda
Data Store
Memory
banda
Corrientes
Controlador Voltajes
modo
puentes
Vrank
Bapl
GATES fcn
Control principal
dirvolts
IrefIabcHall
bandaA
vector
banda
error
fcn
Clock conversor
Banda
BLDC 12 polos
w
mA
B
C
Abs2
|u|
Abs1
|u|
Abs
|u|
<Stator current is _a (A)>
<Rotor speed wm (rad/s)>
<Stator current is _b (A)>
<Stator current is _c (A)>
<Stator back EMF e _a (V)>
<Stator back EMF e _b (V)>
<Stator back EMF e _cV)>
<Electromagnetic torque Te (N*m)>
Figura 3-17: Modelo completo del sistema
Se utilizó el modelo para motor BLDC con que cuenta el mismo programa (Figura
1-1), el cual se conecta al inversor por medio de los nodos 2, 3, y 4. Las variables
de interés como son las corrientes, los voltajes y lo parámetros del motor (toque,
velocidad, sensor Hall) son demultiplexados desde la salida del mismo modelo,
para luego ser utilizados por el controlador.
45
fase A
fase B
fase C
simulador de carga
uy fcn
referencia direccion
rad 2rpm 1
K-
rad 2rpm
K-
Discrete,
Ts = 2e-006 s.
hall
gates to Gates
g6g12 fcn
corrientes
conversor A /D
In
SS/H
Voltajes
v+-
Vff
Velocidad (rpm )
Te (N.m)
Referencia Torque
Pre chequeo
volts
vector
kill
modo
puentes
Vrank
Check
node 2
node 4
node 3
MinMax 2
max
MinMax 1
max
MinMax
max
Lem2
i+-
Lem1
i+-
Lem
i+-
Inversor
Kill sig
gatesABC
Uc1
Uc2
Uc3
Uc4
Uc5
Uc6
Fem
Data Store
Write
banda
Data Store
Read
banda
Data Store
Memory
banda
Corrientes
Controlador Voltajes
modo
puentes
Vrank
Bapl
GATES fcn
Control principal
dirvolts
IrefIabcHall
bandaA
vector
banda
error
fcn
Clock conversor
Banda
BLDC 12 polos
w
mA
B
C
Abs2
|u|
Abs1
|u|
Abs
|u|
<Stator current is _a (A)>
<Rotor speed wm (rad/s)>
<Stator current is _b (A)>
<Stator current is _c (A)>
<Stator back EMF e _a (V)>
<Stator back EMF e _b (V)>
<Stator back EMF e _cV)>
<Electromagnetic torque Te (N*m)>
Figura 3-18: Detalle del motor BLDC
El controlador se simuló utilizando más de un módulo (en azul, Figura 3-19),
debido a las características del mismo, el cual controla en primer lugar la magnitud
de corriente (por ser proporcional al torque) y luego los voltajes de los módulos.
46
fase A
fase B
fase C
vector 1 a->b = [1 2 4 5 ]
vector 2 a->c = [1 3 4 6 ]
vector 3 b->a = [2 1 5 4 ]
vector 4 b->c = [2 3 5 6 ]
vector 5 c->a = [3 1 6 4 ]
vector 6 c->b = [3 2 6 5 ]
Xei : Puente emisor de corriente
Xri : puente receptor de corriente
[Xe 1 Xr 1 Xe 2 Xr2]
|---M1---M4--+A
|---M2---M5--+B
|---M3---M6--+C
Ts=5e-0006 sOJO CON LA CONMUTACION POR DELTA DE VOLTAJE
Y LA REF DE CORRIENTE0.85 ohms | 100 uH (J inicial 0.8m J)
referencia direccion
rad2rpm 1
K-
rad2rpm
K-
Discrete,
Ts = 2e-006 s.
hall 1hall
corrientes
conversor de señales
g6g12 fcn
conversor A /D
In
SS/H
Voltajes
v+-
Vff
Te (N.m)
Referencia Torque
Ordenamiento Voltajes
volts
vector
kill
modo
puentes
Vrank
Check
node 2
node 4
node 3N (rpm )
MinMax 2
max
MinMax 1
max
MinMax
max
Lem2
i+-
Lem1
i+-
Lem
i+-
Inversor
Kill sig
gatesABC
Uc1
Uc2
Uc3
Uc4
Uc5
Uc6
Fem
Em 1
uy fcn
Data Store
Write
banda
Data Store
Read
banda
Data Store
Memory
banda
Corrientes
Controlador Voltajes
modo
puentes
Vrank
Bapl
GATES fcn
Control principal
dirvolts
IrefIabcHall
bandaA
vector
banda
error
fcn
Clock conversor
Banda
BLDC 12 polos
w
mA
B
C
Abs2
|u|
Abs1
|u|
Abs
|u|
<Stator current is _a (A)>
<Rotor speed wm (rad/s)>
<Stator current is _b (A)>
<Stator current is _c (A)>
<Stator back EMF e _a (V)>
<Stator back EMF e _b (V)>
<Stator back EMF e _cV)>
<Electromagnetic torque Te (N*m)>
Figura 3-19: Detalle controlador
El modelo del inversor multinivel (Figura 3-20) se construyó utilizando el modelo
de puente H incluido en el programa. Cada puente H recibe 2 señales
multiplexadas en un vector, las cuales indican en que IGBT conduce de cada una
de las 2 piernas. Antes de esta entrada de señal se encuentra un módulo el cual
recibe
47
FASE A
FASE B
FASE C
Uc6
6
Uc5
5
Uc4
4
Uc3
3
Uc2
2
Uc1
1
voltaje fase -neutro
gates 5
On-off
gatesdisp
gates 4
On-off
gatesdisp
gates3
On-off
gatesdisp
gates 2
On-off
gates
disp
gates 1
On-off
gatesdisp
gates
On-off
gatesdisp
acel
1
VcnV
Vc6
v+-
Vc5
v +-
Vc4
v+-
Vc3
v+-
Vc2
v +-
Vc1
v +-
VbnV
VanV 1
VanV
V3
v+-
V2
v+-
V1
v+-
Scope 5
Scope 4
Scope 3
Scope 2
Scope 1
Scope
SC6
SC5
SC4
SC3
SC2
SC1
Puente bH2
g
A
B
+
-
Puente bH1
g
A
B
+
-
Puente aH4
g
A
B
+
-
Puente aH3
g
A
B
+
-
Puente aH2
g
A
B
+
-
Puente aH1
g
A
B
+
-
node 3
node 1
node 2
node 1
node 1
node 4
node 1
gatesABC
2
Kill sig
1
Figura 3-20: Detalle de la topología del inversor
48
4. IMPLEMENTACIÓN PRÁCTICA
En este capítulo se presentará el detalle de la construcción e implementación del sistema
de control propuesto al comienzo de este trabajo. En primer lugar se revisarán las
características técnicas del microcontrolador utilizado como pieza principal del
dispositivo, para luego revisar el resto de la interfaz que se diseñó para su utilización.
4.1 Características generales del microprocesador a utilizar
Para la construcción física del controlador, se utilizó un microprocesador de la
familia PIC32MX (Microchip Technology Inc., 2009). Este es un dispositivo de
32bits, y gracias a su operación en 80MHz permite procesar una gran cantidad de
operaciones en poco tiempo, lo que es particularmente útil para este tipo de
aplicaciones.
El sistema cuenta con un conversor análogo digital de 16 canales, con 10 bits de
resolución, de los cuales se utilizaron 10 de ellos; tres para sensar las corrientes del
motor, seis para sensar los voltajes de los ultracapacitores y uno para la señal del
acelerador del sistema.
El dispositivo cuenta con 512kb para memoria de programa y 32kb disponibles
para memoria de datos. Tiene 7 puertos de 16 bits para entradas o salidas digitales,
de los cuales se utilizan dos (PORTA y PORTE), para controlar los disparos
ópticos hacia el inversor; se utiliza el PORTD para obtener las señales del sensor
Hall y activar los LEDs de salida; las señales análogas ocupan los pines del
PORTB y se obtienen los datos del control de marcha utilizando el PORTG.
4.2 Esquema de control
Aunque el microprocesador elegido podría haber sido programado en varios tipos
de lenguajes, se prefirió programarlo en lenguaje C. Según el tipo de aplicación
necesaria para el proyecto, por un lado resulta más fácil y rápido programar en
49
lenguajes de alto nivel como pueden ser Java, C# y C++, pero por otro lado, debido
a las limitaciones en memoria y velocidad de respuesta del controlador, parece
mejor utilizar lenguajes de bajo nivel, como es el caso de Assembly. En un punto
intermedio del dilema se encuentra el lenguaje C, el cual no resulta tan básico
como Assembly y a la vez es bastante rápido y eficiente en el uso de memoria.
Habiendo probado variadas formas de programación para el sistema de control en
el microprocesador seleccionado, se eligió un programa de operación secuencial (a
excepción de la rutina del conversor A/D). De esta manera se puede asegurar
fehacientemente que los procesos se llevan a cabo en la secuencia correcta, de
modo de tomar las decisiones y realizar las acciones de la mejor manera.
50
Chequeo
del sistema
Lectura
sensor Hall
-Terminar
-Mostrar error
Hay errores?
Muestreo
de variables
Selector de marcha?
frenando?
Selección de banda
Ordenar puentes
Disparar señales ópticas
seleccionar vector Vx-1seleccionar V0
FWD
BKW
NEUTRAL
seleccionar vector Vx+1
SI
Figura 4-1: Esquema del software de control
4.3 Módulos físicos del controlador
La construcción física del controlador, se llevó a cabo en 3 etapas distintas. La
primera tiene relación con el microprocesador, la segunda con los disparos ópticos
y la tercera con los sensores de corriente y voltaje del inversor.
La tarjeta principal (Figura 4-2), es la encargada de conectarse con el
microprocesador de manera de obtener todas las señales de entrada y salida,
51
comunicándose con las otras tarjetas. Posee 2 fuentes de voltajes de 5V y una de
3.3V, para alimentación de los circuitos integrados que la misma posee y de las
tarjetas anexas. Además tiene conexión directa con el sensor de posición de efecto
Hall y el selector de marchas.
Figura 4-2: Tarjeta principal
La tarjeta de disparos ópticos (Figura 4-3), consiste en una serie de emisores
ópticos especialmente diseñados para trabajar con fibra óptica, los cuales reciben
por medio de un driver las señales eléctricas enviadas por el controlador y éstas
son emitidas en forma de luz, eliminando todo ruido electromagnético que podría
causar interferencia con las mismas. La placa recibe alimentación en 5V desde la
placa principal, con un consumo máximo de 360mA por placa (1080mA en total).
52
Figura 4-3: Tarjeta de disparo para señales ópticas
La tarjeta de adquisición (ver Figura 4-4) consiste en un arreglo de resistencias y
conectores, que permiten la interconexión con los 3 sensores de corriente, los 6
sensores de voltaje y el sensor de posición del acelerador. Esta tarjeta recibe
alimentación de en 5V directamente de la placa principal, teniendo tierras
redundantes en lo cables de señales de entrada y salida. La placa tiene un consumo
promedio de 150mA. Una serie de “jumpers” permiten a la placa trabajar en
solitario (con sus interruptores cerrados) o en conjunto con otra placa de muestreo
(abiertos).
53
Figura 4-4: Tarjeta para conexión de los sensores
4.4 Banco de pruebas
Para la realización de pruebas dinámicas sobre el motor, se implementó un banco
de pruebas (Figura 4-5) el que consiste una máquina de inducción de 3kW,
operado con un inversor donado por ABB1. Este sistema permite la inyección
bidireccional de potencia, pudiendo ser usado como carga o para prueba del
frenado regenerativo.
1 http://www.abb.com/
54
Figura 4-5: fotografía del banco de pruebas
4.5 Sistemas de seguridad y detección de fallas
En el controlador se agregaron una serie de protecciones por software, las cuales
permiten aumentar el nivel de confiabilidad del sistema, alargar la vida útil de sus
componentes y advertir al usuario la existencia de alguna anomalía en el sistema.
Los parámetros básicos en los cuales pone su atención el controlador son el voltaje
de los módulos y la corriente de línea del motor. El voltaje de los módulos debe ir
variando desde 48Vdc hasta los 15Vdc, un valor por sobre este rango pone en serio
riesgo la integridad física de los módulos y un valor por debajo del mismo rango
acorta la vida útil de los módulos, no trayendo gran beneficio pues la energía
restante de un módulo con ese voltaje es inferior al 10% de la total.
Por otro lado, la corriente de línea del motor está limitada por la corriente
soportada por los módulos IGBT, que corresponde al valor de 100A. Por sobre este
valor, los puentes pueden resultar con daños irreparables.
Además de lo anterior, el sistema depende fuertemente de 3 clases de sensores: los
de corriente (3), los de voltaje (6) y el sensor Hall. En la práctica el motor podría
seguir operando sólo con los sensores de corriente y el sensor Hall funcionando, ya
55
que el balance de los voltajes no es un requisito para el movimiento del motor. Sin
embargo, el controlador está configurado de tal forma que termine la operación si
es que detecta un mal funcionamiento de cualquiera de los sistemas.
La verificación de la integridad de los sensores, su conexión o bien el cable de
tierra (común para todas la señales); se llevan a cabo sólo al iniciar el sistema (ver
Figura 4-6). Los rangos de los niveles de voltaje son chequeados en cada iteración.
El sistema además posee un sistema de protección contra cortocircuito, el cual es
capaz de detectar y anular corrientes desde 10A por cualquiera de las fases. Este
sistema además puede comprobar fallas en los sensores de corriente por cada ciclo
del procesador, ya que se basa en el cálculo de la diferencia existente entre la fase
que inyecta corriente y la que debería drenarla (Figura 4-7).
En la práctica resulta poco eficiente imponer un límite de corriente de cortocircuito
muy bajo, debido a que por la topología del inversor, siempre existe una pequeña
corriente de fuga desde y hacia la fase que no se encuentra en conducción; y
aunque esta corriente tiene media cero, si se suma el hecho de que cada sensor
presenta cierta diferencia de precisión y por ende de medición con respecto a los
demás, se obtendrá como resultado falso indicadores de error que obligaran a
detener el sistema.
56
Inicio del
sistema
Idle
Controlador
- Muestrear corrientes y voltajes
- promediar muestras
> SLMAX
o
< SLMIN
m
cbaxI ,,
Fin
SI
Sin errores
-apagar leds
-encender leds amarillo y rojo
m
cbaxI ,,
> V_MAX
o
< V_MIN
m
xV 6..1
m
xV 6..1
-apagar leds
-encender leds amarillo y verde
SI
Figura 4-6: Diagrama de flujo del chequeo de sensores
57
AH
AL
BH
BL
IAB
N
SA SB
- Leer sensor fase inyectando (ej. A)
- Leer sensor fase drenando (ej. B)
|SA-SB| > DIFF_MAX_CORRIENTE
-apagar leds
-encender led amarillo
Fin
Controlador
NO
Figura 4-7: Diagrama de conexión y diagrama de flujo del control de cortocircuito
58
5. RESULTADOS Y DISCUSIÓN
En el presente capitulo se mostrarán los resultados experimentales obtenidos, destacando
sus similitudes y diferencias con respecto a los resultados simulados. En particular se
revisará primero la operación del control de corrientes y en segundo lugar la del control
de voltajes, para finalizar con un análisis macro de la operación.
5.1 Análisis sobre el control de corrientes
Como se mostró en la sección 2.3 (pág. 20), idealmente el motor debe operar con
corrientes cuadradas circulando por el estator, de esta manera se producirá un
torque plano y únicamente dependiente de la magnitud de corriente. Es por esto
que, para controlar la velocidad del automóvil, basta con controlar la magnitud de
las corrientes cuadradas que alimentan a la máquina. De este modo se controla
indirectamente el torque del motor por medio de ese valor.
Como en cualquier tipo de control entonces, la efectividad del mismo se mide
según su capacidad de seguir con el mínimo de error a una referencia dada. En la
práctica, debido a limitaciones que imponen los componentes reales (por ejemplo,
un límite de corriente en el motor), siempre existe un conflicto entre la eficacia del
control, su velocidad, su complejidad, su robustez, su costo, entre otros, y todos
estos parámetros además son restringidos a las capacidades físicas de los equipos.
En este caso particular por ejemplo, al realizar un control de banda de histéresis, se
está dando de por sí una tolerancia fija entre la variable medida y la referencia, lo
que a su vez regula la frecuencia de conmutación con que se dispararán los
transistores.
Para la simulación se utilizaron modelos cuyos parámetros fueron ajustados para
adaptarse a los elementos utilizados en la práctica. El sistema de control es
básicamente el mismo, programado en un seudo-lenguaje C utilizado por el
programa Simulink. Debido a la baja inductancia que presentaba el motor, fue
59
necesario agregar un inductor por fase de alrededor de 300µH con tal de que se
pudiera controlar el nivel de corriente dentro de una tolerancia y frecuencia
aceptable (referirse al Anexo J).
Podemos ver en la Figura 5-1, la simulación de las corrientes de armadura. Esta
simulación muestra claramente que el sistema inversor-controlador responde de
buena manera a los requerimientos de alimentación del motor, planteados en
capítulos anteriores.
Figura 5-1: Simulación de corrientes de armadura
En el oscilograma mostrado en la Figura 5-2, se puede observar, sin lugar a dudas,
que comprobando lo que se había estimado en las simulaciones, el inversor es
capaz de mantener de manera muy ajustada la forma apropiada de las corrientes.
Ello asegura un correcto funcionamiento de la máquina, ya que como se vio en
secciones anteriores, al mantener corrientes cuadradas conmutándose cada 60°
eléctricos, la máquina operará con un torque plano (dentro de la región nominal de
operación), el cual será directamente proporcional a la magnitud de dichas
corrientes.
Por otra parte, en la Figura 5-3, se demuestra lo expresando anteriormente en
cuanto a que la magnitud de la corriente de referencia modifica directamente el
60
torque entregado por la máquina. También se observa lo rápido que este puede
responder a un cambio de la misma referencia.
Figura 5-2: Oscilograma de las corrientes de armadura
Figura 5-3: Corriente de referencia (rojo) y torque de la máquina (amarillo)
61
Otro punto importante a revisar en los resultados del control de corriente, es la
frecuencia de conmutación que se genera en los IGBT. Como se revisó en los
capítulos anteriores, la frecuencia de conmutación es variable en todo momento, ya
que se realiza en respuesta de la magnitud y signo que tenga el error de la corriente
controlada respecto a la referencia. La importancia de la frecuencia radica
fundamentalmente en que entre menor sea la frecuencia con que operan los IGBT
menores serán las pérdidas en los mismos y por ende mayor la eficiencia del
sistema. Como se puede observar en el oscilograma de la Figura 5-4, el cual
muestra en detalle una de las corrientes de línea con que se está alimentando el
motor, la frecuencia de conmutación es bastante adecuada, siendo su promedio
alrededor de 3 kHz y su valor máximo de 10 kHz.
Figura 5-4: Oscilograma detalle de corriente en una línea
Por otro lado, en cuanto a la eficacia del control de corrientes, podemos ver en el
oscilograma de la Figura 5-5 que el controlador es capaz de mantener el valor de la
corriente de referencia con una precisión aproximada de ± 2. Esto significa que el
torque de la máquina tiene un error permanente de ±0,4 Nm (ver Tabla 2-3), lo
62
que se traduce en un error porcentual de 2,5% respecto al torque nominal de la
máquina.
De todas formas, vale la pena destacar que para una aplicación automotriz resulta
poco importante la precisión con que se controle el torque, debido a que la inercia
dinámica del vehículo actúa como un filtro pasabajos respecto a las variaciones de
torque aplicado en el automóvil.
Figura 5-5: Detalle de rizado de corriente
5.2 Análisis del control de voltajes
A diferencia de una batería convencional, los ultracapacitores almacenan energía
en forma de campo eléctrico, lo que se traduce en que su estado de carga (energía
almacenada en el módulo) puede medirse directamente midiendo el potencial de
voltaje entre sus terminales. Esto resulta ser muy beneficioso para poder estimar la
energía restante de cada uno de los módulos (a diferencia de lo que pasa con las
baterías), pero sin embargo resulta ser un problema para el inversor en sí (ver
sección 3.3.4). Para enfrentar el problema de la disminución de voltaje de los
módulos, generalmente se utiliza un convertidor DC-DC el cual funciona como un
transformador de voltaje variable a voltaje continuo. Por ejemplo para nuestro caso
63
necesitaríamos un convertidor que tome voltajes de entre 15 y 48Vdc y los
transforme a 48Vdc. La desventaja de esto no es sólo que el sistema se hace más
complejo y más costoso, sino que además los convertidores agregan ineficiencia al
sistema (generalmente tienen eficiencias de 80 a 90%).
Nuestro sistema propone una solución distinta al problema de los voltajes y se basa
en el hecho de que con la topología del inversor es posible agrupar en serie hasta 4
módulos ultracapacitores. Por otra parte, el motor a utilizar es de bajo voltaje y
presenta buena aislación para alto voltaje, pues está construido para ser utilizado
con un inversor. Esto permite que soporte el voltaje de los módulos tanto cuando
están completamente cargados (48Vdc) como cuando están descargados (15Vdc).
En el oscilograma a continuación, podemos observar claramente como el voltaje
aplicado a los terminales va variando en magnitud según el comportamiento que
vaya teniendo la corriente.
Figura 5-6: voltaje fase-fase del motor
Es importante notar, que existe un compromiso entre el balanceo de los voltajes y
la precisión con que se puede controlar la corriente y se debe al hecho de que al
64
activarse cada una de las bandas de histéresis se van ocupando más módulos en el
control; por ende entre más pequeño sea el margen del error (ancho de las bandas),
más módulos se usarán y existirán por ende menos opciones para balancear los
voltajes (ver Tabla 3-3). De esta forma, el sistema deberá reprogramarse (editando
las variables) según sea el comportamiento que se quiera privilegiar.
En la Figura 5-7 se muestra un oscilograma en que se puede apreciar un ciclo
completo de la corriente de línea y el voltaje fase-fase asociado a la misma. Como
se puede observar, la onda de voltaje no tiene ninguna forma particular, ya que lo
que se controla es directamente la corriente.
Figura 5-7: Corriente de línea (amarillo) y voltaje fase-fase (verde)
El control de voltajes, se encarga todo el tiempo de cargar y descargar los módulos
de manera lo más equilibrada posible, pero sin utilizar conmutaciones extras
(además de las necesarias para mantener el control de la corriente dentro de las
bandas) como otros métodos ocupan; de esta forma es altamente eficiente. Es
importante destacar además que los procesos de carga y descarga de los módulos,
se efectúan tanto en la aceleración normal como en el frenado regenerativo, ya que
65
no dependen del sentido de giro del motor, sino del signo del error de la corriente
(ver sección 3.3.4).
La eficacia del control de voltajes, dependerá de la capacidad que se le permita al
controlador de administrar los distintos módulos al ampliar la tolerancia al error de
la corriente; en otras palabras, si permitimos un error holgado para la corriente, los
voltajes serán ecualizados con una precisión muy fina y por el contrario será muy
difícil obtener una buena ecualización en el caso de que se fuerce a la corriente a
seguir muy ajustadamente la referencia.
En la Figura 5-8, se puede observar los datos obtenidos sobre el comportamiento
real de descarga de los módulos alimentando al motor, en donde al comienzo de la
operación todos los módulos presenta un nivel muy similar de voltaje.
Figura 5-8: Comportamiento de módulos con voltajes similares
Por otro lado, en la Figura 5-9 podemos observar el comportamiento del voltaje de
los módulos en el caso de estar desbalanceados al comienzo del proceso.
66
Es importante dejar en claro que los módulos del inversor son en total 6, sin
embargo el equipo de medición sólo tenía capacidad para 4 canales de entrada y
esto limitó lógicamente la capacidad de graficar todas las señales.
Figura 5-9: Comportamiento de módulos con voltajes diferentes
De los datos mostrados anteriormente, podemos concluir que el sistema de control
de voltajes se comporta de muy buena forma, tanto para el caso de tener todos los
módulos balanceados (caso esperable), como en el caso de que los módulos
presenten serias diferencias de tensión.
5.3 Análisis del sistema de frenado regenerativo
El sistema de frenado regenerativo y el sistema de aceleración, son manipulados
con una misma variable: el voltaje que entrega el potenciómetro del único pedal de
control del vehículo. La primera porción del pedal (modificable vía software)
controla el proceso de frenado y la porción restante controla el proceso de
aceleración del vehículo (ver Figura 5-10); exceptuando la operación en reversa en
donde no existe proceso de frenado regenerativo.
67
Max. freno
Min. freno
Min. acelerador Max.
acelerador
Figura 5-10: Esquema de pedal de control del vehículo
El frenado regenerativo, consiste básicamente en alimentar el estator con un campo
magnético girando en el mismo sentido de rotación normal, pero atrasado 120°
eléctricos con respecto al campo del rotor. Esto se logra invirtiendo la polaridad de
las corrientes y produce un torque negativo en el rotor de la máquina. Este campo
magnético de estator, se controla de la misma manera que el campo normal,
controlando el torque por medio de la magnitud de la corriente. A diferencia de la
operación normal del algoritmo de control de voltajes, para transformar la energía
cinética del vehículo y convertirla nuevamente en eléctrica, se utilizó el esquema
de control que se muestra en la Figura 5-11. El algoritmo se resume básicamente
en utilizar los módulos más descargados cuando sea necesario disminuir el nivel de
la pendiente de la corriente y aplicar un cortocircuito en el motor cuando se
necesite aumentar la pendiente de la misma, utilizando así la tensión inducida en el
motor por efecto de la rotación del mismo.
68
ALGORITMO PARA CONTROL DE
VOLTAJES
Banda > 0
ORDENAR PUENTES-H
POR VOLTAJE
(orden descendiente)
Seleccionar los últimos
“Banda” Puentes para usarlos
(cargando)
Disparar cortocircuito
SI
NO
Figura 5-11: Flujo del control de voltaje en regeneración
Según la referencia que se le aplique al pedal de control, y los correspondientes
limites que se programen por software; el controlador intentará frenar el motor con
la medida de corriente que se le indique. Esto se traduce en un freno regenerativo
de magnitud controlada, siempre que se cumpla con la condición, de que la
referencia sea más baja que el valor que tomaría la corriente al aplicar un
cortocircuito en los terminales del motor (durante un ciclo de conmutación). El
límite mencionado depende de la velocidad de giro del motor, pues de ésta
depende la magnitud de voltaje inducido en el motor, utilizado para la
regeneración.
Operando dentro de los límites en que el controlador puede imponer una referencia
de corriente, las formas de la corriente son como se muestra en el oscilograma de
la Figura 5-12.
69
Figura 5-12: Forma de corriente en regeneración (controlada)
Por otra parte, al tener una referencia situada sobre el límite de controlabilidad de
la corriente de regeneración, la forma de la corriente corresponde simplemente al
proceso de carga de los ultracapacitores; proceso que se lleva a cabo por medio del
rectificador formado por los diodos que componen cada puente H. Tal como se
observa en la Figura 5-13, en esta situación no existe ningún control sobre el nivel
de corriente y por ende tampoco de los voltajes.
Figura 5-13: Forma de corriente en regeneración (no controlada)
70
6. CONCLUSIONES Y TRABAJO FUTURO
Se puede concluir en primer lugar, que el objetivo central de este trabajo, es decir:
investigar la utilización de ultracapacitores avanzados como fuente primaria de energía
para vehículos eléctricos, se cumplió a cabalidad. Esto debido a que se logró llevar a la
práctica un prototipo de vehículo eléctrico, el cual con las nuevas generaciones de
ultracapacitores, alcanzará fácilmente una autonomía de 50 a 90 km. Si se piensa que la
mayoría de los automovilistas en ciudad viajan en promedio una distancia de 30 km, se
puede deducir que un automóvil utilizando este tipo de tecnología puede ser
perfectamente viable para la ciudad; más aún si se considera que podría cargarse en cosa
de minutos.
La utilización de ultracapacitores, además de lo expresado anteriormente, se vislumbra
como la tecnología del futuro para esta aplicación, puesto que su vida útil supera con
creces la de cualquier automóvil común. De esta manera, se rompería una de las grandes
barreras de los vehículos eléctricos que es el costo de reinversión en baterías.
Según el objetivo específico de este trabajo, se llevó a cabo la implementación completa
del sistema de control de tracción para el vehículo. Llegando a obtener los resultados
que se esperaban alcanzar, como son: sistema únicamente utiliza ultracapacitores,
presenta rápida respuesta a referencia de torque, es robusto en cuanto es tolerante a fallas
en los IGBTs e incorpora el sistema de frenado regenerativo.
En cuanto a los objetivos particulares del sistema de control, demostró ser eficaz en
poder controlar la forma rectangular de las corrientes, y por ende, mantener el torque
plano en la máquina para la mayoría del rango dinámico del vehículo. El
comportamiento de las corrientes se mostró adecuado para varios niveles de torque, aún
cuando la magnitud del error de la corriente no es proporcional a la referencia. Es así
como la corriente presenta menos distorsión para un nivel medio de torque, que para un
nivel bajo.
71
Por otro lado, el sistema de control de voltajes, el cual tiene como función ecualizar el
voltaje de los seis módulos, también demostró operar de manera correcta. El sistema de
control pudo controlar la diferencia de tensiones en distintos escenarios; por ejemplo con
todos los módulos totalmente desbalanceados y también cuando comienzan con el
mismo nivel de voltaje. De todas formas, es importante notar que el actuar del
controlador de tensión de los módulos, está sujeto al actuar del controlador de corriente.
En otras palabras, el control de voltajes no siempre actúa como tal, sino que está
restringido a la operación que dicta el control de corriente y por ende su efectividad es
variable. Aún así, para las pruebas realizadas se demostró una efectividad suficiente, ya
que el sistema no requiere un balance tan preciso de las tensiones.
En cuanto al inversor en sí, la topología adoptada no resultó ser la mejor para un motor
tipo BLDC. La disposición de los puentes H, permiten que la fase que no debe conducir
en la operación de seis pasos del motor, en realidad conduzca una pequeña corriente de
fuga, lo que produce una ineficiencia en el sistema. Por otro lado, la topología adoptada
se adecua perfectamente a un motor síncrono sinusoidal o bien un motor de inducción,
por lo tanto resulta muy útil y válida para trabajar con ella.
En cuanto al trabajo futuro, pareciera interesante investigar con otro tipo de topología en
el inversor, de modo de aumentar la eficiencia del mismo y ajustarlo mejor al tipo de
motor que pueda utilizarse en un futuro desarrollo.
Si bien el sistema de control cumple con los objetivos propuestos, podría mejorarse
involucrando más variables a la toma de decisiones y complejizando los algoritmos para
llegar a las mismas. Por ejemplo, podría programarse un sistema predictivo, de modo
que el control se ajuste mejor a los distintos niveles de exigencia del motor, los que
actualmente el sistema controla de forma pareja. Para lograr el objetivo anterior, de
mantenerse el control por banda de histéresis, el sistema podría estimar un ancho de la
banda según la referencia de torque o la velocidad de vehículo, en lugar de ser una
constante.
72
El sistema de frenado regenerativo, podría ser más eficaz si el nivel de corriente de
frenado (entregado por la referencia en el pedal), se ajustara según la velocidad del
automóvil, ya que guardan una relación directa.
Aún cuando el sistema de control contiene algunos mecanismos de seguridad, sobre todo
de sobrecorrientes, sería recomendable incorporar más señales para analizar las
contingencias, como por ejemplo la temperatura del inversor o del motor, o bien las
señales de falla de los puentes IGBT.
En la cadena de tracción del vehículo, es decir todos los componentes que se ve
involucrados desde el almacenamiento de la energía hasta su llegada a las ruedas del
mismo, se estimó una eficiencia máxima cercana a un 79%. Este valor es la resultante
del cálculo en cascada de las eficiencias de toda la cadena: ultracapacitores (98%),
inversor (91%), motor (95%) y transmisión (93%) (Barrero, Mierlo, & Tackoen, 2008).
Por otro lado, se estima que esta eficiencia puede descender hasta valores cercanos a
72%, producto de situaciones de conducción en donde el motor se aleje de las zonas de
eficiencia máxima (Reichel, 2008). Sin embargo, cualquiera de estos dos valores resulta
comparativamente muy alto, si se tiene en cuenta que la eficiencia de un vehículo de
combustión interna promedio se encuentra entre un 12 y 16% (Reichel, 2008) (Sutanto,
2004).
73
BIBLIOGRAFÍA
Ashabani, M., Kaviani, A., Milimonfared, J., & Abdi, B. (2008). Minimization of
commutation torque ripple in brushless DC motors with optimized input voltage control.
Power Electronics, Electrical Drives, Automation and Motion, 2008. SPEEDAM 2008.
International Symposium on , 250-255.
Bakhoum, E. (2009). New Mega-Farad Ultracapacitors. IEEE Transactions on
Ultrasonics, Ferroelectrics, and Frequency Control, 56(1) , 14-21.
Barrero, R., Mierlo, J., & Tackoen, X. (2008). Energy savings in public transport.
Vehicular Technology Magazine, IEEE , vol.3, no.3 , 26-36.
Bharatkar, S., Yanamshetti, R., Chatterjee, D., & Ganguli, A. (2008). Reduction of
commutation torque ripple in a brushless DC motor drive. Power and Energy
Conference, 2008. PECon 2008. IEEE 2nd International , 289-294.
Brown, R. (2008). Impact of Smart Grid on distribution system design. Power and
Energy Society General Meeting - Conversion and Delivery of Electrical Energy in the
21st Century, 2008 IEEE , 1-4.
Chan, C. (2007). The State of the Art of Electric, Hybrid, and Fuel Cell Vehicles.
Proceedings of the IEEE , 95(4) , 704-718.
Chang, C. C., & Wong, Y. S. (2004). Electric Vehicles Charge Forward. IEEE Power
and Energy Magazine, 2(6) , 24-33.
Corzine, K. (2000). A hysteresis current-regulated control for multi-level drives. IEEE
Transactions on Energy Conversion, 15(2) , 169-175.
D'Agostino, S. (1993). The electric car. IEEE Potentials, 12(1) , 28-32.
Farhangi, H. (2010). The path of the smart grid. Power and Energy Magazine, IEEE ,
vol.8, no.1 , 18-28.
74
Hashemnia, N., & Asaei, B. (2008). Comparative Study of Using Different Electric
Motors in the Electric Vehicles. ICEM 2008. 18th International Conference on
Electrical Machines (pp. 1-5). Vilamoura: Portugal.
Hughes, P. A. (1996, September). A History of Early Electric Cars. Retrieved Mayo 14,
2009, from http://www.geocities.com/Athens/Crete/6111/electcar.htm
Liu, Y., Zhu, Z., & Howe, D. (2007). Commutation-Torque-Ripple Minimization in
Direct-Torque-Controlled PM Brushless DC Drives. IEEE Transactions on Industry
Applications, 43(4) , 1012-1021.
Liu, Y., Zhu, Z., & Howe, D. (2005). Direct torque control of brushless DC drives with
reduced torque ripple. IEEE Transactions on Industry Applications, 41(2) , 599-608.
Lock, A., & da Silva, E. (2007). Improved Hysteresis Current Control of a Single Phase,
Three Level, Double PFC Converter. Power Electronics Specialists Conference, 2007.
PESC 2007. IEEE , 1326-1330.
Loh, P. C., Bode, G., Holmes, D., & Lipo, T. (2003). A time-based double-band
hysteresis current regulation strategy for single-phase multilevel inverters. IEEE
Transactions on Industry Applications, 39(3) , 883-892.
Loh, P., Bode, G., & Tan, P.-C. (2005). Modular hysteresis current control of hybrid
multilevel inverters. IEE Proceedings Electric Power Applications, 152(1) , 1-8.
Lu, R., Zhu, C., Tian, L., & Wang, Q. (2007). Super-Capacitor Stacks Management
System With Dynamic Equalization Techniques. IEEE Transactions on Magnetics,
43(1) , 254-258.
Maxwell Inc. (2009). BOOSTCAP® Product Guide. Retrieved Mayo 15, 2009, from
Maxwell Technologies:
http://www.maxwell.com/pdf/20090113_BOOSTCAP_Product_Guide_1014627.1.pdf
Microchip Technology Inc. (2009). Retrieved Septiembre 14, 2009, from
http://www.microchip.com/
75
Reichel, R. (2008). Power for mobility … pure e-motion. Power System Conference,
2008. MEPCON 2008. 12th International Middle-East , 1-11.
Rodriguez, F., & Emadi, A. (2007). A Novel Digital Control Technique for Brushless
DC Motor Drives. IEEE Transactions on Industrial Electronics, 54(5) , 2365-2373.
Rodriguez, J., Lai, J.-S., & Peng, F. Z. (2002). Multilevel inverters: a survey of
topologies, controls, and applications. IEEE Transactions on Industrial Electronics,
49(4) , 724-738.
Schindall, J. (2007). The Charge of the Ultracapacitors, Nanotechnology Takes Energy
Storage Beyond Batteries. IEEE Spectrum , 38-42.
Schneuwly, A., Maher, B., & Auer, J. (2004). Ultracapacitors, the New Thinking in the
Automotive World. Retrieved Abril 28, 2009, from Maxwell Technologies, Inc.:
http://www.maxwell.com/pdf/uc/white-papers/the_new_thinking.pdf
Sulzberger, C. (2004, Mayo). An Early Road Warrior. Retrieved Mayo 14, 2009, from
IEEE Power Engineering Society:
http://www.ieee.org/organizations/pes/public/2004/may/peshistory.html
Sutanto, D. (2004). Alternative energy resource from electric transportation. Power
Electronics Systems and Applications, 2004. Proceedings. 2004 First International
Conference on , 149-154.
The Mathwork Inc. (2008). Matlab (v7.6). [Software]: Disponible en
http://www.matlab.com.
Tolbert, L., Peng, F. Z., Cunnyngham, T., & Chiasson, J. (2002). Charge balance control
schemes for cascade multilevel converter in hybrid electric vehicles. IEEE Transactions
on Industrial Electronics, 49(5) , 1058-1064.
Tolbert, L., Peng, F., & Habetler, T. (1998). Multilevel inverters for electric vehicle
applications. Power Electronics in Transportation, 1998 , 79-84.
Weir, R. D., & Nelson, C. W. (2008). Patent No. 7.466.536 B1. Estados Unidos.
76
Yedamale, P. (2003, November 11). Brushless DC (BLDC) Motor Fundamentals.
Retrieved April 25, 2009, from Microchip Technology Inc.:
http://ww1.microchip.com/downloads/en/AppNotes/00885a.pdf
Zare, F., & Ledwich, G. (2002). A Hysteresis Current Control for Single-Phase
Multilevel Voltage Source Inverters: PLD Implementation. IEEE Transactions on
Power Electronics, 17(5) , 731-738.
77
ANEXOS
78
ANEXO A: Esquema de pines del microprocesador
1 RA6 GND 1 GND
2 RA7 2
3 3
4 4 RE5 RE4
5 RD13/HC 5 RE3 RE2
6 RD7/HB RD6/HA 6 RE1 RE0
7 7 RD5
8 RD4 8
9 RD2/L RD3 9
10 RD0/L RD1/L 10
11 GND 11 GND
12 12 RG6 RG7
13 13 RG8 RG9
14 3,3V 5V 14 3,3V 5V
15 AN5 AN4 15
16 AN3 AN2 16
17 AN1 AN0 17 AN8 AN9
18 RA3 18 RA14 RA15
19 RA2 19
20 GND 9V 20 GND 9V
21 U1RX 21
22 U1TX 22
23 RD15 U2RX 23 GND
24 RD14 U2TX 24 AN10 AN11
25 GND GND 25 AN12 AN13
26 26
27 RA5 27 RA9 RA10
28 AN6 RA4 28
29 RA1 29
30 AN7 RA0 30 AN14 AN15
IZQUIERDO DERECHO
79
ANEXO B: Tarjetas del controlador
Figura B. 1: Tarjeta principal, capa TOP (superior)
80
Figura B. 2: Tarjeta principal, capa BOTTOM (inferior)
81
Figura B. 3: Tarjeta principal, tVALUES (texto)
82
Figura B. 4: Tarjeta de disparos, capa TOP
83
Figura B. 5: Tarjeta de disparos, capa BOTTOM
84
Figura B. 6: Tarjeta de disparos, capa tVALUES
85
Figura B. 7: Tarjeta de sensores, capa TOP
86
Figura B. 8: Tarjeta de sensores, capa BOTTOM
87
Figura B. 9: Tarjeta de sensores, capa tVALUES
88
ANEXO C: Datasheet sensor de corriente
89
90
91
ANEXO D: Datasheet sensor de voltaje
92
93
ANEXO E: Datasheet conversores DC/DC
94
95
ANEXO F: Código fuente del microprocesador. Archivo main.cl
#include <plib.h> //debugging con el PC debe decir "DEBUG", para version stand-alone DEBU u otra cosa #define DEBU //evita que la corriente supere límites cercanos a los del sensor. Apaga en aprox. +-100A #define SAFEMODE #include "config.h" #include "disparos.h" #include "extras.h" /* CONSTANTES DE CONFIGURACION */ //multiplico por 8 para evitar sobre conmutacion //ojo que el sensor ve un voltaje más bajo que lo que realmente es (aprox 1.2 vol), cuidar el Vmax!! #define V_MAX 6500 // 7473 modulo en aprox. 47V ((46/2850)*250-1.2)*(1024/3.3)*8 #define V_MIN 150 // 287 modulo en aprox. 15V ((15/2850)*250-1.2)*(1024/3.3)*8 #define LIMITADOR_CORRIENTE 6 //divisor del potenciometro de entrada (acelerador) #define CONSTANTE_FRENO 40 #define DIVISOR_FRENO 2 //divisor de la referencia de corriente #define POTENCIA_FRENADO 1 //multiplicador de la referencia en frenado #define BandaP 10 //amperes de la banda principal (cada digito equivale a 0.2A aprox) #define BandaD 5 //delta de las demás bandas. Error máximo es BandaP+3*BandaD #define DIFF_MAX_CORRIENTE 400 //(80A)diferencia de corriente maxima medida entre el sensor que surte y el que drena corriente #define I0_CERO 491 //cero promedio, para calcular diferencia en sensores //definición del conversor para cada puente (según cables de la tarjeta) #define ADC_V1 4 #define ADC_V2 9 #define ADC_V3 5 #define ADC_V4 8 #define ADC_V5 6 #define ADC_V6 7
96
#define SLMIN 475 //Promedio minimo requerido en muestreo de sensores #define SLMAX 505 //Promedio máximo requerido en muestreo de sensores #define DELTA_MUERTO 7 //zona muerta del acelerador (solo en reversa) //numeros dados al leer los bits del puerto G / conector mainC #define NEUTRAL 832 #define FWD_NORMAL 704 #define FWD_REGEN 448 //(max sentido reloj, excepto 960 el tope) #define BWD 896 //(max sentido contra reloj) char regenerando=0; //determina cuando estamos regenerando 1 o no 0 //funciones void seleccionBanda(); void disparar(char banda, unsigned int enable); void configurar_puentes(char vector); void ordenar_puentes(); //variables globales char banda=0; int tiempo=1; int error=0; int muestra=0; //puntero para variable de muestreo #define MUESTRAS 2 //muestras que toma el buffer unsigned int v1m[MUESTRAS],v2m[MUESTRAS],v3m[MUESTRAS],v4m[MUESTRAS],v5m[MUESTRAS],v6m[MUESTRAS]; int acelerador=0; int corrienteA=0; int corrienteB=0; int corrienteC=0; int mSensorA=0; int mSensorB=0; int mSensorC=0; int muestras=0; unsigned int cmain=0; //conector para selector de marcha
97
char vector=0; char vector_anterior=0; unsigned int ha,hb,hc,cmain,rd15,haP,hbP,hcP; unsigned int error_software=0; //variable debuging int Hall=0; //sensor de efecto hall int Hallp=0; #define ON 1 #define OFF 0 //codigos de error #define ERROR_CORRIENTE1 -1 #define ERROR_CORRIENTE2 -2 #define ERROR_CORRIENTE3 -3 #define ERROR_VOLTAJE -4 #define ERROR_VOLTAJE2 -5 #define ERROR_HALL -6 unsigned int enable=0; //variable de disparo de puertas enable unsigned int disparo=0; //variable de disparo de puentes H char system_status=ON; int espera=6000000; char giro=NEG; //COMIENZO DEL PROGRAMA int main(void) { int contador=50; int i=0;
98
SYSTEMConfigPerformance(FOSC); //indispensable para usar R0-R1-R4-R5 !!! #ifndef DEBUG mJTAGPortEnable(DEBUG_JTAGPORT_OFF); #endif mOSCSetPBDIV(OSC_PB_DIV_2); //main conector PORTSetPinsDigitalIn(IOPORT_G, BIT_6 | BIT_7 | BIT_8 | BIT_9); //sensor Hall y switches PORTSetPinsDigitalIn(IOPORT_D, BIT_6|BIT_7|BIT_13 |BIT_4 |BIT_5 |BIT_14 |BIT_15); mCNOpen(CONFIG, PINS, PULLUPS); ConfigIntCN(INTERRUPT); //leds de placa (verde, amarillo, rojo) PORTSetPinsDigitalOut(IOPORT_D,LED_VERDE); mPORTDClearBits(LED_VERDE); PORTSetPinsDigitalOut(IOPORT_D,LED_AMARILLO); mPORTDClearBits(LED_AMARILLO); PORTSetPinsDigitalOut(IOPORT_D,LED_ROJO); mPORTDClearBits(LED_ROJO); //disparos principales PORTSetPinsDigitalOut(IOPORT_A,0xFFFF); //disparos apagado PORTSetPinsDigitalOut(IOPORT_E,0x3F); mPORTAClearBits(0xFFFF); mPORTESetBits(0x3F); //Apago todos los puentes mPORTBClearBits(TODOS); //limpio las salidas mPORTBSetPinsAnalogIn(TODOS); // activo todos los puertos como Análogos CloseADC10(); // Apagar ADC para poderlo configurar
99
OpenADC10(CONFIG_ADC_1,CONFIG_ADC_2,CONFIG_ADC_3,CONFIG_ADC_4,CONFIG_ADC_5); // Activar Modulo ADC //ADC automatico ConfigIntADC10(ADC_INT_ON | ADC_INT_PRI_3 | ADC_INT_SUB_PRI_1); // Configurar Interrupcion ADC // activo vector de interrupciones INTEnableSystemMultiVectoredInt(); EnableADC10(); // Activar Conversion ADC /* ###################################################################################### ################## SOFTWARE CONTROLADOR ####################################### ###################################################################################### ###################################################################################### */ /* Se debe llenar la variable de los disparos con las constantes que manejan las señales opticas del inversor definidas en disparos.h */ PUENTES[Ah].disparo[POS]=AH_p; PUENTES[Al].disparo[POS]=AL_p; PUENTES[Bh].disparo[POS]=BH_p; PUENTES[Bl].disparo[POS]=BL_p; PUENTES[Ch].disparo[POS]=CH_p; PUENTES[Cl].disparo[POS]=CL_p; PUENTES[Ah].disparo[NEG]=AH_n; PUENTES[Al].disparo[NEG]=AL_n; PUENTES[Bh].disparo[NEG]=BH_n; PUENTES[Bl].disparo[NEG]=BL_n; PUENTES[Ch].disparo[NEG]=CH_n; PUENTES[Cl].disparo[NEG]=CL_n; while(espera>0) espera--; //tiempo de espera para muestrear todas las variables
100
while(BusyADC10()); //lleno variable de voltajes for (i=0;i<6;i++){ PUENTES[i].id=i; } espera=100000; muestras=espera; while(espera>0){ espera--; mSensorA+=corrienteA; mSensorB+=corrienteB; mSensorC+=corrienteC; } mSensorA=mSensorA/muestras; mSensorB=mSensorB/muestras; mSensorC=mSensorC/muestras; //lleno variable de voltajes PUENTES[Ah].voltaje=v1m[0]; PUENTES[Al].voltaje=v2m[0]; PUENTES[Bh].voltaje=v3m[0]; PUENTES[Bl].voltaje=v4m[0]; PUENTES[Ch].voltaje=v5m[0]; PUENTES[Cl].voltaje=v6m[0]; // COMPROBACION DE SENSORES NO CONECTADOS O DEFECTUOSOS if((corrienteA <=SLMIN || corrienteA >=SLMAX) || (corrienteB <=SLMIN || corrienteB >=SLMAX) || (corrienteC <=SLMIN || corrienteC >=SLMAX)) system_status=ERROR_CORRIENTE1; //seguro contra sensores de corriente no conectados o defectuosos
101
if((mSensorA <=SLMIN || mSensorA >=SLMAX) || (mSensorB <=SLMIN || mSensorB >=SLMAX) || (mSensorC <=SLMIN || mSensorC >=SLMAX)) system_status=ERROR_CORRIENTE2; //seguro contra sensores de corriente defectuosos //COMPROBACION DE SENSORES DE VOLTAJE DEFECTUOSOS O MODULOS SIN VOLTAJE NECESARIO for (i=0;i<6;i++){ if(PUENTES[i].voltaje < V_MIN || PUENTES[i].voltaje > V_MAX) system_status=ERROR_VOLTAJE; } //COMPROBACION SENSORES DE EFECTO HALL CONECTADOS ha=mPORTDReadBits(BIT_6); hb=mPORTDReadBits(BIT_7); hc=mPORTDReadBits(BIT_13); Hall=ha+hb+hc; if(Hall==8384 || Hall==0) system_status=ERROR_HALL; //ENTREGA ERROR AL CONTROLADOR while(system_status > 0){ if(contador<0){ mPORTDToggleBits(LED_VERDE); //indicador de funcionamiento contador=8000; //luz en aprox. 3Hz }else{ contador--; } // LECTURA DE SENSOR EFECTO HALL | se lee justo antes de operar para no tener problemas con interrupciones ha=mPORTDReadBits(BIT_6); hb=mPORTDReadBits(BIT_7); hc=mPORTDReadBits(BIT_13); Hall=ha+hb+hc;
102
if(Hall==8384 || Hall==0){ //error al leer sensor, probamos otra vez. error_software=error_software | 1; ha=mPORTDReadBits(BIT_6); hb=mPORTDReadBits(BIT_7); hc=mPORTDReadBits(BIT_13); } Hall=ha+hb+hc; //LECTURA DEL COMANDO PRINCIPAL DE MARCHAS cmain=mPORTGReadBits(BIT_6 | BIT_7 | BIT_8 | BIT_9); //RESETEAMOS VARIABLES DE VOLTAJE PUENTES[Ah].voltaje=0; PUENTES[Al].voltaje=0; PUENTES[Bh].voltaje=0; PUENTES[Bl].voltaje=0; PUENTES[Ch].voltaje=0; PUENTES[Cl].voltaje=0; //SE GENERAN MUESTRAS for(i=0;i<MUESTRAS;i++){ PUENTES[Ah].voltaje += v1m[i]; PUENTES[Al].voltaje += v2m[i]; PUENTES[Bh].voltaje += v3m[i]; PUENTES[Bl].voltaje += v4m[i]; PUENTES[Ch].voltaje += v5m[i]; PUENTES[Cl].voltaje += v6m[i]; } //SE CALCULA EL PROMEDIO DE LAS MUESTRAS PUENTES[Ah].voltaje=(PUENTES[Ah].voltaje/MUESTRAS); PUENTES[Al].voltaje=(PUENTES[Al].voltaje/MUESTRAS); PUENTES[Bh].voltaje=(PUENTES[Bh].voltaje/MUESTRAS); PUENTES[Bl].voltaje=(PUENTES[Bl].voltaje/MUESTRAS); PUENTES[Ch].voltaje=(PUENTES[Ch].voltaje/MUESTRAS); PUENTES[Cl].voltaje=(PUENTES[Cl].voltaje/MUESTRAS); regenerando=0; //resetea la regeneracion #ifdef SAFEMODE //EVITA CORRIENTES MUY GRANDES POR EL SISTEMA (LIMITE DE LOS IGBT) if(corrienteA >= 1000 || corrienteB >= 1000 || corrienteC >= 1000)
103
system_status=ERROR_CORRIENTE1; if(corrienteA <= 25 || corrienteB <= 25 || corrienteC <= 25) system_status=ERROR_CORRIENTE1; #endif //SWITCH PRINCIPAL COMANDADO POR CONTROL DE MARCHA switch(cmain){ case FWD_REGEN: case FWD_NORMAL: //MARCHA HACIA ADELANTE if(acelerador>=CONSTANTE_FRENO){ //ACELERANDO if(Hall==8192) {vector=5; //SE CALCULA ERROR RESTANDOLE CONSTANTE DE FRENO A LA REFERENCIA //Y RESTANDOLE LA POSICIÓN DE CORRIENTE CERO AL SENSOR (OJO CON LOS PARENTESIS) error = (acelerador - CONSTANTE_FRENO)-(corrienteC-mSensorC); if(abs(corrienteC+corrienteA-2*I0_CERO)>DIFF_MAX_CORRIENTE) system_status=ERROR_CORRIENTE3;} //001 else if(Hall==8320) {vector=6; error = (acelerador - CONSTANTE_FRENO)-(corrienteC-mSensorC); if(abs(corrienteC+corrienteB-2*I0_CERO)>DIFF_MAX_CORRIENTE) system_status=ERROR_CORRIENTE3;} //011 else if(Hall==128) {vector=1; error = (acelerador - CONSTANTE_FRENO)-(corrienteA-mSensorA); if(abs(corrienteA+corrienteB-2*I0_CERO)>DIFF_MAX_CORRIENTE) system_status=ERROR_CORRIENTE3;} //010 else if(Hall==192) {vector=2; error = (acelerador - CONSTANTE_FRENO)-(corrienteA-mSensorA); if(abs(corrienteA+corrienteC-2*I0_CERO)>DIFF_MAX_CORRIENTE) system_status=ERROR_CORRIENTE3;} //110 else if(Hall==64) {vector=3; error = (acelerador - CONSTANTE_FRENO)-(corrienteB-mSensorB); if(abs(corrienteB+corrienteC-2*I0_CERO)>DIFF_MAX_CORRIENTE) system_status=ERROR_CORRIENTE3;} //100 else if(Hall==8256) {vector=4; error = (acelerador - CONSTANTE_FRENO)-(corrienteB-mSensorB);
104
if(abs(corrienteB+corrienteA-2*I0_CERO)>DIFF_MAX_CORRIENTE) system_status=ERROR_CORRIENTE3;} //101 else {banda=0; vector=0; error_software=error_software | 8;} //fallo en sensor }else{ //FRENO REGENERATIVO regenerando=1; if(Hall==8192 && giro==POS) {vector=5; //SE MULTIPLICA REFERENCIA NEGATIVA POR "POTENCIA_FRENADO", PARA EVITAR PONER VALOR =1 error = (acelerador - CONSTANTE_FRENO)*POTENCIA_FRENADO-(corrienteC-mSensorC); if(abs(corrienteC+corrienteA-2*I0_CERO)>DIFF_MAX_CORRIENTE) system_status=ERROR_CORRIENTE3;} //001 else if(Hall==8320 && giro==POS) {vector=6; error = (acelerador - CONSTANTE_FRENO)*POTENCIA_FRENADO-(corrienteC-mSensorC); if(abs(corrienteC+corrienteB-2*I0_CERO)>DIFF_MAX_CORRIENTE) system_status=ERROR_CORRIENTE3;} //011 else if(Hall==128 && giro==POS) {vector=1; error = (acelerador - CONSTANTE_FRENO)*POTENCIA_FRENADO-(corrienteA-mSensorA); if(abs(corrienteA+corrienteB-2*I0_CERO)>DIFF_MAX_CORRIENTE) system_status=ERROR_CORRIENTE3;} //010 else if(Hall==192 && giro==POS) {vector=2; error = (acelerador - CONSTANTE_FRENO)*POTENCIA_FRENADO-(corrienteA-mSensorA); if(abs(corrienteA+corrienteC-2*I0_CERO)>DIFF_MAX_CORRIENTE) system_status=ERROR_CORRIENTE3;} //110 else if(Hall==64 && giro==POS) {vector=3; error = (acelerador - CONSTANTE_FRENO)*POTENCIA_FRENADO-(corrienteB-mSensorB); if(abs(corrienteB+corrienteC-2*I0_CERO)>DIFF_MAX_CORRIENTE) system_status=ERROR_CORRIENTE3;} //100 else if(Hall==8256 && giro==POS) {vector=4; error = (acelerador - CONSTANTE_FRENO)*POTENCIA_FRENADO-(corrienteB-mSensorB); if(abs(corrienteB+corrienteA-2*I0_CERO)>DIFF_MAX_CORRIENTE) system_status=ERROR_CORRIENTE3;} //101 else {banda=0; vector=0; error_software=error_software | 8;} //fallo en sensor } break; case BWD: //MARCHA EN REVERSA
105
if(acelerador>DELTA_MUERTO){ if(Hall==8192) {vector=2; //a-c //SE DIVIDE LA REFERENCIA PARA LIMITAR LA REVERSA DEL VEHICULO error = acelerador/DIVISOR_FRENO - (corrienteA-mSensorA); if(abs(corrienteA+corrienteC-2*I0_CERO)>DIFF_MAX_CORRIENTE) system_status=ERROR_CORRIENTE3; } //001 else if(Hall==8320) {vector=3;//b-c error = acelerador/DIVISOR_FRENO - (corrienteB-mSensorB); if(abs(corrienteB+corrienteC-2*I0_CERO)>DIFF_MAX_CORRIENTE) system_status=ERROR_CORRIENTE3; } //011 else if(Hall==128) {vector=4;//b-a error = acelerador/DIVISOR_FRENO - (corrienteB-mSensorB); if(abs(corrienteB+corrienteA-2*I0_CERO)>DIFF_MAX_CORRIENTE) system_status=ERROR_CORRIENTE3; } //010 else if(Hall==192) {vector=5;//c-a error = acelerador/DIVISOR_FRENO - (corrienteC-mSensorC); if(abs(corrienteC+corrienteA-2*I0_CERO)>DIFF_MAX_CORRIENTE) system_status=ERROR_CORRIENTE3; } //110 else if(Hall==64) {vector=6;//c-b error = acelerador/DIVISOR_FRENO - (corrienteC-mSensorC); if(abs(corrienteC+corrienteB-2*I0_CERO)>DIFF_MAX_CORRIENTE) system_status=ERROR_CORRIENTE3; } //100 else if(Hall==8256) {vector=1;//a-b error = acelerador/DIVISOR_FRENO - (corrienteA-mSensorA); if(abs(corrienteA+corrienteB-2*I0_CERO)>DIFF_MAX_CORRIENTE) system_status=ERROR_CORRIENTE3; } //101 else {banda=0; vector=0; error_software=error_software | 2;} //fallo en sensor }else{ banda=0; vector=0;} break; case NEUTRAL: //SE RESETEAN LAS VARIABLES QUE CONTROLAN LOS DISPAROS banda=0; vector=0; default: //SE RESETEAN LAS VARIABLES QUE CONTROLAN LOS DISPAROS banda=0; vector=0; break; }
106
if(system_status==ON) seleccionBanda(); //selecciona la banda segun variable error configurar_puentes(vector); //segun variable vector selecciona y configura los puentes a disparar. ordenar_puentes(); //ya seleccionados los 4 puentes q intervienen, se deben ordenar por voltaje para ser disparados. disparar(banda, enable); //se dispara las señales elegidas Hallp=Hall; for (i=0;i<6;i++){ //SE CHEQUEA EL RANGO DE LOS VOLTAJES if(PUENTES[i].voltaje < V_MIN || PUENTES[i].voltaje > V_MAX) system_status=ERROR_VOLTAJE2; } }//end while // FIN DEL PROGRAMA //codigos de error disparar(V0, V0); //termino, apago todo los disparos mPORTDClearBits(LED_VERDE | LED_AMARILLO|LED_ROJO); //SE DISPARAN LOS CODIGOS DE ERROR A LOS LEDS switch(system_status){ case ERROR_CORRIENTE1: mPORTDSetBits(LED_VERDE | LED_ROJO); break; case ERROR_CORRIENTE2: mPORTDSetBits(LED_AMARILLO|LED_ROJO); break; case ERROR_CORRIENTE3: mPORTDSetBits(LED_AMARILLO); break; case ERROR_VOLTAJE: mPORTDSetBits(LED_AMARILLO|LED_VERDE); break;
107
case ERROR_VOLTAJE2: mPORTDSetBits(LED_ROJO); break; case ERROR_HALL: mPORTDSetBits(LED_AMARILLO|LED_ROJO | LED_VERDE); break; default: mPORTDSetBits(LED_VERDE); break; } } void configurar_puentes(char vector){ /* Definidos un conjuntos de 6 vectores, los cuales manejan en su totalidad la máquina BLDC, debe seleccionarse que vector utilizar, para conocer asi los puentes en juego y poder calcular el error de la corriente a controlar. */ char i=0; enable=0; //reseteamos disparos enable switch(vector){ case 1: //vector 1: a->b //los puentes de la fase A van en direccion positiva al aumentar la corriente PUENTES_SEL[0]=PUENTES[Ah]; PUENTES_SEL[0].signo=POS; PUENTES_SEL[1]=PUENTES[Al]; PUENTES_SEL[1].signo=POS; //los puentes de la fase B van en direccion negativa al aumentar la corriente PUENTES_SEL[2]=PUENTES[Bh]; PUENTES_SEL[2].signo=NEG; PUENTES_SEL[3]=PUENTES[Bl]; PUENTES_SEL[3].signo=NEG; //se carga el vector de bits ENABLE de los 4 puentes que se usan para el vector V1 enable=V1_EN; if(vector_anterior!=vector){ //SE CHEQUEA EL SENTIDO DE GIRO PARA EL FRENADO REGENERATIVO
108
if(Hallp==192) giro=POS; //ant 64 else giro=NEG; vector_anterior=vector; } break; case 2: //vector 2: a->c PUENTES_SEL[0]=PUENTES[Ah]; PUENTES_SEL[0].signo=POS; PUENTES_SEL[1]=PUENTES[Al]; PUENTES_SEL[1].signo=POS; PUENTES_SEL[2]=PUENTES[Ch]; PUENTES_SEL[2].signo=NEG; PUENTES_SEL[3]=PUENTES[Cl]; PUENTES_SEL[3].signo=NEG; enable=V2_EN; if(vector_anterior!=vector){ vector_anterior=vector; //para frenado regenerativo if(Hallp==64) giro=POS; //ant 8256 else giro=NEG; } break; case 3: //vector 3: b->c PUENTES_SEL[0]=PUENTES[Bh]; PUENTES_SEL[0].signo=POS; PUENTES_SEL[1]=PUENTES[Bl]; PUENTES_SEL[1].signo=POS; PUENTES_SEL[2]=PUENTES[Ch]; PUENTES_SEL[2].signo=NEG; PUENTES_SEL[3]=PUENTES[Cl]; PUENTES_SEL[3].signo=NEG; enable=V3_EN; if(vector_anterior!=vector){ vector_anterior=vector; //para frenado regenerativo if(Hallp==8256) giro=POS; //ant 8192 else giro=NEG; } break; case 4: //vector 1: b->a PUENTES_SEL[0]=PUENTES[Bh];
109
PUENTES_SEL[0].signo=POS; PUENTES_SEL[1]=PUENTES[Bl]; PUENTES_SEL[1].signo=POS; PUENTES_SEL[2]=PUENTES[Ah]; PUENTES_SEL[2].signo=NEG; PUENTES_SEL[3]=PUENTES[Al]; PUENTES_SEL[3].signo=NEG; enable=V4_EN; if(vector_anterior!=vector){ vector_anterior=vector; //para frenado regenerativo if(Hallp==8192) giro=POS; //ant 8320 else giro=NEG; } break; case 5: //vector 1: c->a PUENTES_SEL[0]=PUENTES[Ch]; PUENTES_SEL[0].signo=POS; PUENTES_SEL[1]=PUENTES[Cl]; PUENTES_SEL[1].signo=POS; PUENTES_SEL[2]=PUENTES[Ah]; PUENTES_SEL[2].signo=NEG; PUENTES_SEL[3]=PUENTES[Al]; PUENTES_SEL[3].signo=NEG; enable=V5_EN; if(vector_anterior!=vector){ vector_anterior=vector; //para frenado regenerativo if(Hallp==8320) giro=POS; //ant 128 else giro=NEG; } break; case 6: //vector 1: c->b PUENTES_SEL[0]=PUENTES[Ch]; PUENTES_SEL[0].signo=POS; PUENTES_SEL[1]=PUENTES[Cl]; PUENTES_SEL[1].signo=POS; PUENTES_SEL[2]=PUENTES[Bh]; PUENTES_SEL[2].signo=NEG; PUENTES_SEL[3]=PUENTES[Bl]; PUENTES_SEL[3].signo=NEG; enable=V6_EN; if(vector_anterior!=vector){ vector_anterior=vector; //para frenado regenerativo
110
if(Hallp==128) giro=POS; //ant 192 else giro=NEG; } break; default: //DE NO EXISTIR VECTOR SELECCIONADO, O SER CERO, SE ANULAN LAS SEÑALES DE DISPARO enable=0; banda=0; disparo=0; error_software | 16; giro=NEG; break; } } void ordenar_puentes(){ int i; char loop=1; puente temp; //ORDENAR PUENTES POR SU VOLTAJE DE MAYOR [0] A MENOR [3] while(loop>0){ loop=0; //burbuja promedio 300 ciclos, variable con while [min 103, max 784] for (i=0; i< 3; i++) if (PUENTES_SEL[i].voltaje < PUENTES_SEL[i+1].voltaje){ //mayor a menor temp = PUENTES_SEL[i]; PUENTES_SEL[i] = PUENTES_SEL[i+1]; PUENTES_SEL[i+1] = temp; loop=1; } } }
111
void __ISR(_ADC_VECTOR, ipl6) AdcHandler(void) { mAD1ClearIntFlag(); // Borrar flag interrupcion if(muestra>=MUESTRAS){ muestra=0; } //corrientes y acelerador se actualizan todo el tiempo corrienteA = ReadADC10(0); corrienteB = ReadADC10(1); corrienteC = ReadADC10(2); acelerador = ReadADC10(3)/LIMITADOR_CORRIENTE; //divido por limitador por la relacion con el sensor de corriente //voltajes los guarda en una variable BUFFER v1m[muestra] = ReadADC10(ADC_V1)<<3; //V1 lo lee en V1 | probado v2m[muestra] = ReadADC10(ADC_V2)<<3; //V2 lo lee en V2 | probado v3m[muestra] = ReadADC10(ADC_V3)<<3; //V3 lo lee en V6 | probado v4m[muestra] = ReadADC10(ADC_V4)<<3; //V4 lo lee en V5 | probado v5m[muestra] = ReadADC10(ADC_V5)<<3; //V5 lo lee en V3 | probado v6m[muestra] = ReadADC10(ADC_V6)<<3; //V6 lo lee en V4 | probado muestra++; } char sign(char a){ //FUNCION SIGNO if( a>=0) return 1; else return 0; } void seleccionBanda(){
112
char bandaT=0; //banda temporal int temp=0; //SE SELECCIONA LA BANDA SEGUN MAGNITUD Y SIGNO DEL ERROR if (error>=BandaP+3*BandaD){ bandaT=4;//subir corriente -4 } else if (error<BandaP+3*BandaD && error>=BandaP+2*BandaD){ bandaT=3;//subir corriente -3 } else if (error<BandaP+2*BandaD && error>=BandaP+BandaD){ bandaT=2; //subir corriente -2 } else if (error<BandaP+BandaD && error>=BandaP){ bandaT=1; //subir corriente -1 } else if (error>-(BandaP+BandaD) && error<=-BandaP){ bandaT=-1; //bajar corriente +1 } else if (error>-(BandaP+2*BandaD) && error<=-(BandaP+BandaD)){ bandaT=-2;//bajar corriente +2 } else if (error>-(BandaP+3*BandaD) && error<=-(BandaP+2*BandaD)){ bandaT=-3; //bajar corriente +3 } else if (error<=-(BandaP+3*BandaD)){ //subir corriente +4 bandaT=-4; //bajar corriente +4 }else bandaT=banda; //dentro de IREF+-tolerancia //si la banda no cambia de signo no la actualizo if (sign(bandaT)==sign(banda) && abs(bandaT) < abs(banda)) bandaT = banda; //si el modulo de la banda es menor al anterior y no cambia de signo, no actualizo if (abs(bandaT) < abs(banda) && sign(bandaT)==sign(banda)) bandaT=banda; banda=bandaT; } void __ISR(_TIMER_1_VECTOR, ipl3) Timer1Handler(void) // Funcion Interrupcion Timer1 { mT1ClearIntFlag(); // Borrar flag interrupcion tiempo++; //agregamos un conteo a la variable de tiempo
113
} void disparar(char banda,unsigned int enable){ char i=0; unsigned int aux,auxN; /* Como los puentes ya están ordenados por voltaje, sólo resta dispararlos en orden (según se este cargando o descargando) por lo que se eligen los primeros "banda" puentes para ello. Se asume que los que no se disparan quedarán en cero por la falta de señal. */ disparo=0; //reseteamos los disparos. if (regenerando==0){ //operacion normal if (banda > 0){ //Subiendo la corriente -> Descargo los más cargados, comienzo a usar desde el primero hacia abajo i=0; //comenzamos con el mas cargado (bit_0) while(banda>0){ //disparo los puentes hasta llegar al número requerido disparo = disparo | PUENTES_SEL[i].disparo[PUENTES_SEL[i].signo]; //signo directo pq invertimos la tension banda--; i++; } }else{ //Bajando la corriente -> Cargo los más descargados, comienzo a usar desde el último hacia arriba i=3; //comenzamos con el mas descargado (bit_3) while(banda<0){ //disparo los puentes hasta llegar al número requerido disparo = disparo | PUENTES_SEL[i].disparo[!PUENTES_SEL[i].signo]; //signo NEGADO, pues aumentamos la corriente banda++; i--; } } }else{ //regenerando //al estar regenerando el vector lo hace el auto con su voltaje, por ende debe invertirse el orden de selección de voltajes
114
if (banda > 0){ //Subiendo la corriente -> Cargo los más descargados i=3; //comenzamos con el mas descargado (bit_3) while(banda>0){ //disparo los puentes hasta llegar al número requerido disparo = disparo | PUENTES_SEL[i].disparo[PUENTES_SEL[i].signo]; //signo directo pq invertimos la tension banda--; i--; } }else{ //hago un chopper para regenerar, si quiereo bajar la corriente (hacerla más negativa), //hago cortocircuito en el motor disparo=0; } } /* Luego de haber calculado los puentes que seran disparados, se prodece a disparar las señales ópticas */ aux=disparo; auxN=aux ^ 0xFFFF; mPORTAClearBits(auxN); mPORTASetBits(aux); aux=enable; auxN=aux ^ 0x3F; mPORTEClearBits(auxN); mPORTESetBits(aux); }
115
ANEXO G: Código fuente del microprocesador. Archivo config.h
#include <plib.h> #pragma config FPLLMUL = MUL_18, FPLLIDIV = DIV_2, FPLLODIV = DIV_1, FWDTEN = OFF #pragma config POSCMOD = HS, FNOSC = PRIPLL, FPBDIV = DIV_2 // Let compile time pre-processor calculate the PR1 (period) #define FOSC 80E6 #define CONFIG (CN_ON | CN_IDLE_CON) #define PINS (CN15_ENABLE | CN16_ENABLE | CN19_ENABLE) #define PULLUPS (CN15_PULLUP_ENABLE | CN16_PULLUP_ENABLE | CN19_PULLUP_ENABLE | CN13_PULLUP_ENABLE | CN14_PULLUP_ENABLE | CN20_PULLUP_ENABLE | CN21_PULLUP_ENABLE | CN8_PULLUP_ENABLE | CN9_PULLUP_ENABLE | CN10_PULLUP_ENABLE | CN11_PULLUP_ENABLE ) #define INTERRUPT (CHANGE_INT_OFF | CHANGE_INT_PRI_5) //sin interrupcion #define TODOS 0xFFFF // Para conversor automático //########################## Conversor A/D // Prender ADC | Func. en IDLE | Formato Int 16 | Auto conv. | Sample secuencial #define CONFIG_ADC_1 (ADC_MODULE_ON | ADC_IDLE_CONTINUE | ADC_FORMAT_INTG16 | ADC_CLK_AUTO | ADC_AUTO_SAMPLING_ON) // Ref AVDD,AVSS | Sin Offset | Escaneo Sec.| Interrupcion 16th | Un buffer | No alternar mux #define CONFIG_ADC_2 (ADC_VREF_AVDD_AVSS | ADC_OFFSET_CAL_DISABLE | ADC_SCAN_ON | ADC_SAMPLES_PER_INT_10 | ADC_BUF_16 | ADC_ALT_INPUT_OFF) #define CONFIG_ADC_3 (ADC_SAMPLE_TIME_2 | ADC_CONV_CLK_PB | ADC_CONV_CLK_2Tcy) // Todos Analogo #define CONFIG_ADC_4 (ENABLE_ALL_ANA) #define CONFIG_ADC_5 (0) #define T1_TICK 1000// xx kHz #define CONFIG_T1 (T1_ON | T1_SOURCE_INT | T1_PS_1_1) // prende T1 | oscilador interno | preescalado de T1 en 256 #define CONFIG_INT1 (T1_INT_ON | T1_INT_PRIOR_7 | T1_INT_SUB_PRIOR_3) // prende int de T1 | T1 prioridad 7 | sub prioridad 3 //####################### fin de Timer 1
116
ANEXO H: Código fuente del microprocesador. Archivo disparos.h
//Definicion de bits segun placa disparos #define AhU BIT_0 #define AhV BIT_1 #define BhU BIT_2 #define BhV BIT_3 #define ChU BIT_4 #define ChV BIT_5 #define AlU BIT_6 #define AlV BIT_7 #define BlU BIT_9 #define BlV BIT_10 #define ClU BIT_14 #define ClV BIT_15 //definicion de bits de enable de puentes #define AH_en BIT_0 #define AL_en BIT_1 #define BH_en BIT_2 #define BL_en BIT_3 #define CH_en BIT_4 #define CL_en BIT_5 #define AH_p AhV #define AH_n AhU #define AH_0 AhU | AhV #define AL_p AlV #define AL_n AlU #define AL_0 AlU | AlV #define BH_p BhV #define BH_n BhU #define BH_0 BhU | BhV #define BL_p BlV #define BL_n BlU #define BL_0 BlU | BlV #define CH_p ChV #define CH_n ChU #define CH_0 ChU | ChV
117
#define CL_p ClV #define CL_n ClU #define CL_0 ClU | ClV #define V1_N1 AH_p | AL_0 | BH_0 | BL_0 #define V2_N1 AH_p | AL_0 | CH_0 | CL_0 #define V3_N1 BH_p | BL_0 | CH_0 | CL_0 #define V4_N1 AH_0 | AL_0 | BH_p | BL_0 #define V5_N1 AH_0 | AL_0 | CH_p | CL_0 #define V6_N1 BH_0 | BL_0 | CH_p | CL_0 #define V1_N2 AH_p | AL_p | BH_0 | BL_0 #define V2_N2 AH_p | AL_p | CH_0 | CL_0 #define V3_N2 BH_p | BL_p | CH_0 | CL_0 #define V4_N2 AH_0 | AL_0 | BH_p | BL_p #define V5_N2 AH_0 | AL_0 | CH_p | CL_p #define V6_N2 BH_0 | BL_0 | CH_p | CL_p #define V1_N3 AH_p | AL_p | BH_n | BL_0 #define V2_N3 AH_p | AL_p | CH_n | CL_0 #define V3_N3 BH_p | BL_p | CH_n | CL_0 #define V4_N3 AH_n | AL_0 | BH_p | BL_p #define V5_N3 AH_n | AL_0 | CH_p | CL_p #define V6_N3 BH_n | BL_0 | CH_p | CL_p #define V1_N4 AH_p | AL_p | BH_n | BL_n #define V2_N4 AH_p | AL_p | CH_n | CL_n #define V3_N4 BH_p | BL_p | CH_n | CL_n #define V4_N4 AH_n | AL_n | BH_p | BL_p #define V5_N4 AH_n | AL_n | CH_p | CL_p #define V6_N4 BH_n | BL_n | CH_p | CL_p #define V0 0 #define V1_EN AH_en | AL_en | BH_en | BL_en #define V2_EN AH_en | AL_en | CH_en | CL_en #define V3_EN BH_en | BL_en | CH_en | CL_en #define V4_EN AH_en | AL_en | BH_en | BL_en #define V5_EN AH_en | AL_en | CH_en | CL_en #define V6_EN BH_en | BL_en | CH_en | CL_en
118
ANEXO I: Código fuente del microprocesador. Archivo extras.h
/* Se define estructura "puente", debido a que es necesario llevar mucha información respecto de cada puente en todo el proceso de control, por lo que es la mejor manera de manejar la información sin perder la referencia de la misma. */ typedef struct puente{ unsigned int disparo[2]; //señales de disparo que llega al inversor char id; // id para proposito de debugging pues los puentes se desordenan en el controlador unsigned int voltaje; // valor de voltaje del puente char signo; //permite llevar información de en que sentido se debe disparar el puente }puente; //constantes para los puentes #define Ah 0 #define Al 1 #define Bh 2 #define Bl 3 #define Ch 4 #define Cl 5 #define POS 0 #define NEG 1 puente PUENTES[6]; //se define variable que almacena la informacino de los 6 puentes puente PUENTES_SEL[4]; //variable que almacena la informacion 4 puentes que han de dispararse en cada conmutacion #define LED_VERDE BIT_2 #define LED_AMARILLO BIT_1 #define LED_ROJO BIT_0
119
ANEXO J: Frecuencia en control de banda de histéresis (h)
Iref
h
∆t1 ∆t2
r1
r2dt
dIL
)(dt
dI L
)(
Por continuidad se puede aproximar .
Luego calculando las pendientes positiva y negativa de la corriente controlada (verde):
Despejando para encontrar la frecuencia de conmutación:
120
Para nuestro caso particular, podemos calcular la frecuencia máxima de conmutación,
considerando una sola fase:
Va
L
Vd/2
IL
Va
L
Vd/2
IL
Despejando las derivadas y reemplazando en las ecuaciones anteriores, tenemos:
En operación estacionaria, la referencia de corriente es plana para el motor BLDC, por
lo tanto , y las ecuaciones quedan:
121
Sumando ambas ecuaciones, se tiene:
Calculando la frecuencia de conmutación, tenemos:
Luego interesa calcular la frecuencia máxima, para esto buscamos la solución de
.
Reemplazando en la ecuación original se tiene la frecuencia máxima de conmutación del
sistema:
De esta manera se desprende que la frecuencia máxima de operación, puede ser
determinada en 4 partes, ya que el voltaje Vd depende del número de puentes en serie a
utilizar. Sin embargo como el ancho de la banda (h) va aumentando en la misma medida
del aumento del valor de Vd, los efectos se compensan en la ecuación y la frecuencia
máxima calculada resulta ser prácticamente la misma para todos los casos (exactamente
si las bandas adicionales son de la misma magnitud que la principal).
Con los parámetros de voltaje, inductancia del sistema, y considerando una banda de
±1.5A, el valor de la frecuencia máxima resulta ser:
122
Sin embargo, hay que recordar que la variación en la referencia de corriente incide en
este valor, por ende debe existir un sistema que limite la frecuencia máxima de
operación a un valor seguro para los IGBTs (20kHz).
123
ANEXO K: Códigos de error del controlador
124
ANEXO L: Construcción del inversor
Cada uno de los 6 puentes fue apernado a un mismo disipador de aluminio con gran
capacidad de disipación, incorporando de hecho 2 ventiladores de 6W cada uno en su
montaje. Por cada puente además se dispone en paralelo un circuito snubber, cuya
función es suprimir los transitorios de voltajes y un condensador electrolítico, que se
encarga de compensar la inductancia de los cables de potencia que llegan desde los
ultracapacitores. Construido con cables de cobre y placas del mismo material, se
construyó pensado en una corriente nominal de 100A por fase, lo que implica una
potencia nominal cercana a los 30kW. Las señales de control son enviadas por medios
de fibras ópticas, por lo que cada puente dispone de una tarjeta de control que convierte
las señales ópticas en comandos eléctricos para la operación de cada semiconductor.