You are on page 1of 156

PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE

ESCUELA DE INGENIERIA

SISTEMA MOTOR-INVERSOR
“SENSORLESS” PARA EL ARRANQUE
DE VEHÍCULO HÍBRIDO “PLUG-IN”

LORENZO E. URRUTIA PARRA

Tesis para optar al grado de


Magister en Ciencias de la Ingeniería

Profesor Supervisor:
JUAN W. DIXON ROJAS

Santiago de Chile, Diciembre de 2011.


 2011, Lorenzo Urrutia
PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE
ESCUELA DE INGENIERIA

SISTEMA MOTOR-INVERSOR “SENSORLESS”


PARA EL ARRANQUE DE VEHÍCULO HÍBRIDO
“PLUG-IN”

LORENZO E. URRUTIA PARRA

Tesis presentada a la Comisión integrada por los profesores:

JUAN W. DIXON ROJAS

DAVID E. WATTS CASIMIS

MICAH E. ORTÚZAR DWORSKY

JOAQUÍN DE CEA CHICANO

Para completar las exigencias del grado de


Magister en Ciencias de la Ingeniería

Santiago de Chile, Diciembre de 2011.


DEDICATORIA

A mi familia, a mis amigos, a todos


los que me apoyaron y en especial a
mi padre, quien siempre me impulsó
a seguir adelante.

II
AGRADECIMIENTOS

Agradezco a las personas del departamento de ingeniería eléctrica, quienes facilitaron la


realización de esta tesis, a mis compañeros del laboratorio de vehículos eléctricos y
especialmente a mi profesor guía Juan Dixon.

Aprovecho de manifestar mi agradecimiento al Núcleo Milenio de Electrónica Industrial y


Mecatrónica y al proyecto Fondecyt 1100175, los cuales apoyaron financieramente el
proyecto del cual este trabajo es parte. Esta tesis contó con el aporte de la beca de magister
del Programa Iniciativa Científica Milenio.

III
INDICE GENERAL

DEDICATORIA ............................................................................................................... II

AGRADECIMIENTOS ................................................................................................... III

ÍNDICE DE TABLAS .................................................................................................... VI

ÍNDICE DE ILUSTRACIONES ................................................................................... VII

RESUMEN........................................................................................................................ X

ABSTRACT ................................................................................................................... XII

1. INTRODUCCIÓN ...................................................................................................... 1

1.1. Vehículos Híbridos........................................................................................................ 4


1.2. Tesis de Investigación ................................................................................................... 7
1.2.1. Hipótesis................................................................................................................ 9
1.2.2. Objetivos ............................................................................................................. 10
1.2.3. Metodología ........................................................................................................ 10
2. ELECTRÓNICA ....................................................................................................... 13

2.1. Electrónica de Potencia ............................................................................................... 14


2.1.1. Elementos del Inversor ........................................................................................ 15
2.1.2. Construcción del Inversor .................................................................................... 18
2.2. Electrónica de Control ................................................................................................. 19
2.2.1. Elementos del Módulo de Control ....................................................................... 20
3. CONTROL ............................................................................................................... 23

3.1. Torque de Carga del ICE ............................................................................................. 23


3.2. Estrategia de Control del Inversor: SVPWM ............................................................... 26
3.3. Control de Corriente .................................................................................................... 30
3.4. Estimación de la Posición Inicial................................................................................. 32
3.4.1. Algoritmo ............................................................................................................ 37
3.5. Sobrecorriente y Temperatura ..................................................................................... 40
3.6. Proceso de Partida ....................................................................................................... 41

IV
3.6.1. Diagrama de Flujo del Proceso de Control .......................................................... 41
3.6.2. Diagrama de Flujo del Software .......................................................................... 43
4. RESULTADOS EXPERIMENTALES .................................................................... 48

4.1. Funcionamiento Algoritmo SVPWM .......................................................................... 48


4.2. Carga del Motor de Combustión Interna (ICE). .......................................................... 50
4.2.1. Control del Inversor Operando como Fuente de Voltaje ..................................... 51
4.2.2. Control del Inversor Operando como Fuente de Corriente .................................. 52
4.3. Relación Torque-Velocidad del ICE ........................................................................... 53
4.4. Detección de la Posición Inicial .................................................................................. 55
4.5. Temperatura del Generador ......................................................................................... 59
4.6. Funcionamiento General ............................................................................................. 61
5. CONCLUSIONES .................................................................................................... 63

REFERENCIAS ............................................................................................................... 67

ANEXOS ......................................................................................................................... 70

Anexo A: Hoja de Datos Módulo Intellimod .......................................................................... 71


Anexo B: Placa de Disparo ..................................................................................................... 77
Anexo C: Selección del Snubber ............................................................................................. 81
Anexo D: Placa de Alimentación ............................................................................................ 85
Anexo E: Dimensionamiento Térmico .................................................................................... 87
Determinación de la Potencia Disipada ............................................................................... 87
Dimensionamiento del Disipador ........................................................................................ 99
Elección del Disipador ...................................................................................................... 103
Anexo F: Circuito de la Flaca de Control .............................................................................. 106
Anexo G: Modelamiento del Torque de los Pistones en Matlab. ........................................... 109
Anexo H: Datos Técnicos de los Equipos ............................................................................. 111
Anexo I: Código del Programa .............................................................................................. 113

V
ÍNDICE DE TABLAS

Tabla N° 3.1: Selección de sector a partir del análisis de signo de las diferencias en los
máximos de corriente obtenidos....................................................................................... 39
Tabla N° 4.1: Determinación experimental de la relación corriente-velocidad. .............. 54

VI
ÍNDICE DE ILUSTRACIONES

Figura N° 1.1: Producción mundial de energía primaria y consumo de petróleo por


sector (2008)....................................................................................................................... 1
Figura N° 1.2: Comparación de las eficiencias de un motor de combustión interna y un
motor eléctrico (Pistoia, 2009). .......................................................................................... 3
Figura N° 1.3: Ventas mundiales de autos de pasajeros e intensidad promedio de emisión
de CO2 para vehículos nuevos en escenario 450 de la IEA (International Energy
Agency, 2010). ................................................................................................................... 4
Figura N° 1.4: Configuraciones de los vehículos eléctricos híbridos. ............................... 6
Figura N° 1.5: Topología del vehículo eléctrico híbrido “plug-in” y flujos de energía. ... 9
Figura N° 1.6: Diagrama de flujo resumido del proceso de arranque del ICE. ............... 12
Figura N° 2.1: Electrónica de control y potencia del generador del vehículo híbrido. .... 13
Figura N° 2.2: Módulo Inversor PM200CL1A060. ......................................................... 15
Figura N° 2.3: Diagrama de elementos del área de potencia del inversor. ...................... 16
Figura N° 2.4: Disposición de los principales elementos del inversor. ........................... 19
Figura N° 2.5: Diagrama de bloques del módulo de control. .......................................... 20
Figura N° 2.6: Placa con el circuito de control. ............................................................... 22
Figura N° 3.1: Torque de cada cilindro y aporte total al torque de carga para un ciclo
completo sin ignición de 720° mecánicos. ....................................................................... 24
Figura N° 3.2: Determinación experimental del torque y corriente mínimos necesarios
para girar el ICE a distintas velocidades. ......................................................................... 25
Figura N° 3.3: Topología de inversor tipo fuente de voltaje controlado por corriente. ... 27
Figura N° 3.4: Operación control SPWM: portadora triangular (vT), referencia sinusoidal
(vM) y componente fundamental del voltaje vA obtenido (v(1)A). ..................................... 28
Figura N° 3.5: Representación gráfica de los vectores de estado. ................................... 29
Figura N° 3.6: Fuente de voltaje controlada por corriente implementada. ...................... 31

VII
Figura N° 3.7: Inductancia para una fase respecto a la posición del rotor para hierro de
estator no-saturado (inductancia normal) y hierro de estator con saturación (inductancia
menor). ............................................................................................................................. 35
Figura N° 3.8: Casos de alineación del campo magnético del rotor y estator: I) hierro
estator normal y II) hierro estator saturado. ..................................................................... 36
Figura N° 3.9: Procedimiento por fase de aplicación de pulsos de voltaje DC y captura
de corrientes. .................................................................................................................... 37
Figura N° 3.10: Diferencias de corrientes máximas por fase para un ciclo completo. .... 38
Figura N° 3.11: Diagrama de flujo del proceso de arranque del ICE. ............................. 42
Figura N° 3.12: Diagrama de flujo del proceso de arranque del ICE. ............................. 43
Figura N° 3.13: Diagrama de flujo de la calibración de los sensores. ............................. 44
Figura N° 3.14: Diagrama de flujo la interrupción UART byte recibido. ....................... 44
Figura N° 3.15: Diagrama de flujo sección Partida. ........................................................ 45
Figura N° 3.16: Diagrama de flujo de la detección de la posición inicial. ...................... 46
Figura N° 3.17: Diagrama de flujo de la interrupción Término Periodo PWM............... 47
Figura N° 4.1: Capturas del funcionamiento del algoritmo SVPWM sobre una carga RL
a distintas frecuencias: 1, 2, 4 y 64 Hz. ............................................................................ 49
Figura N° 4.2: Capturas de corrientes por fase y voltaje fase-fase aplicados por el
inversor usando el algortimo SVPWM. ........................................................................... 50
Figura N° 4.3: Deformación de la corriente ante pérdida temporal de sincronismo del
PMSM operando como motor alimentado con fuente de voltaje AC. ............................. 51
Figura N° 4.4: Pérdida de sincronismo con inversor operando como fuente de voltaje
con una corriente 100 ARMS. ............................................................................................ 52
Figura N° 4.5: Corrientes de PMSM con inversor operando como fuente de voltaje
controlada por corriente con una magnitud del vector de 100 ARMS. .............................. 53
Figura N° 4.6: Determinación experimental del torque necesario para girar el ICE. ...... 54
Figura N° 4.7: Variación de la inductancia entre fases con la posición del rotor para el
generador PGS150 usado. ................................................................................................ 55

VIII
Figura N° 4.8: Aplicación de un pulso positivo de voltaje entre fases y corriente
alcanzada en la fase "A". .................................................................................................. 56
Figura N° 4.9: Aplicación de un pulso negativo de voltaje entre fases y corriente
alcanzada en la fase "A". .................................................................................................. 56
Figura N° 4.10: Diferencias promedio de corrientes máximas para dos periodos
eléctricos del rotor. ........................................................................................................... 58
Figura N° 4.11: Determinación del sector de posición angular del eje del rotor. ............ 58
Figura N° 4.12: Inductancia entre fases para hierro de estator no-saturado (inductancia
normal) e inductancia reconstruida para hierro de estator con saturación (con 150% de la
corriente nominal). ........................................................................................................... 59
Figura 4.13: Evolución de la temperatura del generador bajo distintos escenarios de
partidas sucesivas. ............................................................................................................ 61
Figura 4.14: Corrientes por fase en generador durante la rampa corriente-velocidad
durante el proceso de partida............................................................................................ 62
Figura 4.15: Corrientes por fase en generador en la etapa de corriente-velocidad
constantes durante el proceso de partida. ......................................................................... 62

IX
RESUMEN

Esta tesis presenta el desarrollo e implementación de un sistema “sensorless” de partida


para un motor de combustión interna (ICE) en un vehículo híbrido serie “plug-in”. Al no
poseer torque a la partida, el ICE requiere ser acelerado externamente hasta la velocidad
de encendido, usando generalmente un motor eléctrico de corriente continua. El vehículo
desarrollado dispone de un rectificador de frente activo que carga las baterías utilizando
la máquina síncrona como generador. En el trabajo se elabora el control que permite al
rectificador funcionar como inversor trifásico para operar momentáneamente el
generador síncrono de imanes permanentes acoplado al ICE como motor de partida, sin
necesidad de hardware extra. Dado que esta operación requiere del conocimiento de la
posición instantánea del rotor, se desarrolló una alternativa que no utiliza sensor de
posición (“sensorless”).

El objetivo de la tesis es elaborar un sistema de control “sensorless” capaz de llevar a la


partida al motor térmico usando el generador, superando los problemas derivados de la
falta de información de la posición angular del rotor y de la naturaleza variable del
torque de carga del ICE. El trabajo incluye el diseño y construcción de los equipos de
electrónica de potencia y el control digital necesarios.

La solución desarrollada aborda estos problemas creando un método que combina un


algoritmo de detección de la posición angular inicial del rotor del generador basado en la
variación angular de la inductancia entre fases de la máquina eléctrica con un esquema
de control del inversor de corriente-velocidad adaptado a las características de la carga.

El método implementado logra llevar al ICE a la velocidad de encendido evitando la


probabilidad de rotación inversa del ICE, la pérdida de sincronismo y el daño térmico en
el generador. Ofrece características de sencillez y robustez que lo hacen poco sensible a
variaciones en los parámetros del conjunto generador-ICE.

X
Palabras Claves: vehículo híbrido serie, motor síncrono de imanes permanentes,
estimación posición inicial, partida motor de combustión interna, control sensorless.

XI
ABSTRACT

This thesis presents the development and implementation of a sensorless starting system
for an Internal Combustion Engine (ICE) in a plug-in Series Hybrid Electric Vehicle (S-
HEV). Not having starting torque, the ICE needs to be accelerated externally to the start
speed, generally using a direct current electric motor. The developed S-HEV has an
Active Front End (AFE) rectifier. It charges the batteries using the synchronous machine
like a generator. This work elaborates a control that allows the AFE rectifier to use the
permanent magnet synchronous generator as a starting motor momentarily, without extra
hardware. Because this operation requires the instantaneous rotor position, a sensorless
alternative was developed.

The thesis objective is to develop a sensorless control system able to start the ICE using
the generator, overcoming the problems arising from the lack of information of the
angular rotor position and the changing nature of ICE load torque. The work includes the
design and construction of the power electronic and digital control devices required.

The developed solution approach these problems creating a method that combines an
algorithm for detecting the initial angular rotor position of the generator based on the
angular variation of the inductance between phases of the electrical machine with an
inverter control scheme of current-frequency adapted to the load characteristics.

The implemented method achieves the ICE ignition speed avoiding: the reverse rotation
probability, loss of synchronism and thermal damage of generator. It offers simplicity
and robustness features that make it less sensitive to parameters variations in the
generator-ICE set.

Keywords: hybrid electric vehicle, permanent magnet synchronous machine, initial


position estimation, internal combustion engine starting, sensorless control.

XII
1

1. INTRODUCCIÓN

El problema del agotamiento de las fuentes primarias tradicionales de energía como el


petróleo y carbón junto con la preocupación surgida por los efectos contaminantes de su
utilización, han generado un impulso en la investigación de fuentes alternativas de
generación y de métodos más eficientes para la transformación y utilización de energía.

Como se observa en la figura 1.1. el sector transporte utiliza más de la mitad del petróleo
producido en el mundo (U.S. Energy Information Administration, 2011) y en países
como Estados Unidos aproximadamente un 65% de este consumo se destina a gasolina
para motores de combustión interna. Por estas razones, una alta atención se ha
focalizado sobre los vehículos eléctricos e híbridos-eléctricos, gracias a sus bajas o nulas
emisiones y mayores eficiencias.

Carbón
28%
Transporte
54%

Petroleo
34%
Gas Natural Industria
23% 32%

Edificios 3%
Electricidad 2%

Energías Energía
Renovables Nuclear
10% 5%

Figura N° 1.1: Producción mundial de energía primaria y consumo de petróleo por


sector (2008).
2

Sin embargo, el estado actual de desarrollo de los vehículos eléctricos aún no permite
igualar las prestaciones de un automóvil convencional con motor de combustión interna.
El diesel y la gasolina presentan una energía específica cercana a los 12.000 Wh/kg,
mientras que las baterías convencionales de plomo-acido ofrecen sólo 30 Wh/kg, las de
níquel hidruro metálico 85 Wh/kg y las distintas variedades químicas de litio entre 90 y
250 Wh/kg (Read, 2011).

Por lo tanto, el mayor problema tecnológico actual de los vehículos eléctricos es la


capacidad de la batería, ya que comparado con un peso equivalente en gasolina, un
paquete de baterías ofrece una autonomía muy inferior y extensos tiempos de carga. Sin
embargo, en términos de energía entregada a las ruedas, las eficiencias de los motores
ICE son inferiores al 20%, mientras que en un motor eléctrico se aproximan al 80% (ver
figura 1.2). Así, se espera que cuando el desarrollo de las baterías alcance unos 1.500
Wh/kg, con 80 kg sería posible recorrer hasta 800 km. Pero esto requerirá, seguramente,
el desarrollo de nuevos compuestos químicos, por ejemplo la tecnología de litio-aire
(LiO2) con nanotubos de carbono que bajo condiciones de laboratorio ha logrado 2.500
Wh/kg (Mitchell et al, 2011).
3

Figura N° 1.2: Comparación de las eficiencias de un motor de combustión interna y un


motor eléctrico (Pistoia, 2009).

Ante este escenario, a la espera de nuevas y mejores tecnologías de almacenamiento de


energía, los vehículos híbridos se convierten actualmente en la alternativa natural de
transición entre el vehículo de combustión interna y el auto eléctrico, alcanzando un uso
más eficiente del combustible al utilizar una configuración electromecánica que combina
la mayor eficiencia de las máquinas eléctricas con la autonomía derivada de la enorme
capacidad energética de las gasolinas. El aporte más relevante en el corto plazo para
disminuir el consumo de petróleo y mitigar la cantidad de emisiones de CO2 está dado
por los vehículos híbridos y los vehículos híbridos “plug-in”. Así lo indican las
proyecciones para los próximos 20 años de la Agencia Internacional de Energía en la
venta de autos: eléctricos, híbridos y convencionales a gasolina, bajo el escenario 4501
(figura 1.3).

1
El escenario 450 consiste en limitar el contenido de CO2 en la atmósfera a 450 ppm para no incrementar
en más de 2°C la temperatura del planeta sobre los niveles preindustriales.
4

Figura N° 1.3: Ventas mundiales de autos de pasajeros e intensidad promedio de emisión


de CO2 para vehículos nuevos en escenario 450 de la IEA (International Energy
Agency, 2010).

1.1. Vehículos Híbridos

En un vehículo híbrido la fuente de energía para tracción es el motor de combustión


interna (Internal Combustion Engine: ICE), las baterías o una combinación de ambos.
Mientras el ICE corresponde a una fuente unidireccional de energía, el paquete de
baterías es una fuente bidireccional que permite la recuperación de energía a través del
frenado. Según se muestra en la figura 1.4, dependiendo de la forma cómo se realiza la
transferencia de energía, los vehículos híbridos suelen ser clasificados dentro de tres
configuraciones (Lo, 2009):
5

 Híbrido Serie

Corresponde a una extensión de un auto eléctrico puro. Para superar la autonomía


limitada de las baterías posee un generador acoplado a un motor térmico que
opera cargándolas preferentemente en el punto de máxima eficiencia cuando el
nivel de carga de las baterías es inferior a un umbral. En esta topología la
conexión mecánica entre ICE y las ruedas se suprime disminuyendo las pérdidas
de energía.

 Híbrido Paralelo

En este caso la energía es entregada de manera conjunta a un sistema de


transmisión especial que se encarga de sumar los aportes paralelos de torque
generados por el ICE y por el motor eléctrico, de manera que para un nivel
constante de potencia de salida el sistema en conjunto opera en el punto de
máxima eficiencia.

 Híbrido Serie-paralelo
Es una mezcla de las dos configuraciones anteriores que puede adicionar otros
elementos para mejorar las prestaciones, pero con el consiguiente aumento de la
complejidad y costo. En este sistema el ICE tiene la capacidad de aportar torque
al eje motriz o al generador para cargar las baterías directamente.
6

ICE

Generador Motor Eléctrico Transmisión

Baterías

a) Configuración Serie

ICE

Transmisión

Baterías Motor Eléctrico

b) Configuración Paralela

ICE

Transmisión

Generador Motor Eléctrico

Baterías

c) Configuración Serie-Paralela

Energía Eléctrica
Energía Mecánica

Figura N° 1.4: Configuraciones de los vehículos eléctricos híbridos.


7

En el laboratorio de vehículos eléctricos se desarrolla un vehículo híbrido serie “plug-


in”. La característica “plug-in” le permite cargar las baterías desde la red eléctrica
doméstica aprovechando fuentes más eficientes de generación, con lo cual se evita el
consumo de combustible y la emisión directa de gases. Este tipo de vehículo es también
considerado como eléctrico de rango extendido, pues posee autonomía eléctrica pura
dentro del rango que las baterías le permiten. Como parte del proyecto, la camioneta
Chevrolet S-10 eléctrica del laboratorio ha recibido la instalación de un motor de
combustión interna con una máquina síncrona de imanes permanentes (Permanent
Magnet Synchronous Machine: PMSM) acoplada al eje. Este grupo motor-generador
entregará la energía en la barra DC de las baterías cada vez que un sistema central de
administración de energía, que monitorea todos los parámetros de funcionamiento del
vehículo, lo decida. El desarrollo de este sistema inteligente es llevado a cabo en el
laboratorio como parte de la investigación de un alumno de doctorado. Este control
principal, control AES (Auxiliary Energy System), requerirá de un módulo de control
secundario que se encargue de partida del ICE.

1.2. Tesis de Investigación

Esta tesis aborda el problema de la puesta en marcha del ICE de un vehículo híbrido
“plug-in”. Los motores de combustión interna no entregan torque a velocidad cero por lo
que necesitan ser llevados a una velocidad de giro mínima para ser puestos en
funcionamiento. En general, para esto utilizan un motor DC con escobillas
exclusivamente para el arranque que: incorpora peso y volumen, incrementa el costo y
requiere mantenimiento.

Para el funcionamiento normal de la PMSM como generador el vehículo requiere de un


rectificador de frente activo que convierte la corriente alterna en continua para la carga
de las baterías. Dado la disponibilidad de este hardware, el rectificador puede ser
controlado durante la partida como un inversor trifásico de dos niveles para obtener
8

desde las baterías la corriente alterna necesaria para la operación como motor de la
PMSM.

El objetivo de este trabajo es la implementación de un sistema de partida para el ICE


utilizando el hardware presente en la configuración híbrida serie, eliminando la
necesidad del motor DC convencional de partida y remplazándolo por el generador
síncrono. Esto incluye la construcción del rectificador-inversor dimensionado para
ambos estados de operación y el desarrollo del control necesario para operarlo
momentáneamente como motor durante la partida.

La operación de la máquina síncrona como motor requiere del conocimiento permanente


de la posición angular del rotor para evitar la pérdida de sincronismo, la que se obtiene
comúnmente empleando un sensor de posición sobre eje que incrementa el costo y es
susceptible a fallas. Existen numerosas experiencias exitosas de métodos de estimación
de posición sin sensores (sensorless) implementadas en PMSM (Parasiliti et al., 1997;
Batzel y Lee, 2005) que utilizan la relación entre la EMF (electromotive force) y la
posición del rotor. Sin embargo, dado que la EMF es proporcional a la velocidad, estos
métodos no permiten la estimación con el rotor detenido y presentan problemas a baja
velocidad (condición durante la partida del ICE) debido a la escasa relación señal a ruido
disponible para las mediciones, lo cual podría provocar: errores en la dirección inicial de
rotación, daños en el eje, fallas en la partida o gasto adicional de energía de las baterías.

En los vehículos híbridos disponibles en el mercado, como el Toyota Prius o el Honda


Civic Hybrid, la mayoría posee la capacidad para arrancar el ICE utilizando el generador
acoplado usando un sistema denomino ISG (Integrated Starter Generator). Sin embargo,
al contar con sensor de posición en el rotor, logran obtener control óptimo de torque de
la máquina eléctrica sin necesidad de implementación de un método sensorless.

La configuración electro-mecánica del vehículo puede verse en la figura 1.5, donde se


exhiben también los flujos de energía tanto en el funcionamiento normal como durante
la partida del ICE.
9

Figura N° 1.5: Topología del vehículo eléctrico híbrido “plug-in” y flujos de energía.

En base a estos antecedentes podemos describir: la hipótesis, los objetivos y la


metodología de trabajo.

1.2.1. Hipótesis

El generador síncrono de un vehículo eléctrico híbrido serie “plug-in” puede ser


utilizado como motor síncrono sin sensor de posición para dar partida al motor de
combustión interna.
10

1.2.2. Objetivos

El objetivo principal de esta tesis es el desarrollo de un sistema de control


“sensorless” y la construcción de un inversor trifásico capaz de llevar a la partida
el ICE usando como motor de arranque el generador acoplado.

Dentro de los objetivos específicos están: i) la construcción de los equipos de


electrónica de potencia y electrónica de control diseñados según las
características de potencia eléctrica y mecánica requeridas, incluyendo las
consideraciones térmicas y de espacio disponibles, ii) la creación de la lógica de
control para el funcionamiento del inversor trifásico como fuente controlada de
corriente alterna, iii) la implementación de un sistema de estimación de posición
inicial del rotor, lo que permitiría entregar desde el principio la corriente nominal
para obtener torque máximo y evitar problemas de rotación inversa o fallas en la
partida, iv) la implementación de un método de control de lazo abierto sin control
de torque que no sea afectado por la naturaleza altamente variable del torque de
carga del motor de combustión interna donde puede ocurrir pérdida de
sincronismo, v) el desarrollo e incorporación al algoritmo de control de
elementos que consideren las características particulares del sistema y mejoren la
tasa de éxito en la partida.

1.2.3. Metodología

Para alcanzar estos objetivos, se comenzó con el desarrollo del control del
inversor como fuente controlada de corriente y la programación, principalmente
en lenguaje C, del microcontrolador dsPIC escogido. Una vez realizado el
dimensionamiento térmico y construido el inversor, fueron desarrollados ensayos
con cargas RL en un banco de pruebas para evaluar su desempeño. Un modelo
elaborado en Matlab Simulink permitió probar algoritmos y simular el
11

comportamiento del sistema en distintos escenarios considerando el


modelamiento del: inversor, generador e ICE.

Con la carga real acoplada (el ICE) se analizó el funcionamiento del inversor
como fuente de voltaje y como fuente de corriente. Se obtuvieron datos
experimentales de la corriente necesaria para mantener el sincronismo durante la
partida analizando la relación torque-velocidad del ICE apagado. Dichas
características se incorporaron al algoritmo de control, revisando la evolución
térmica del generador y del inversor luego de una secuencia de ciclos de partida.

Se implementó un método de detección de la posición inicial del rotor basado en


la variación en la impedancia de los enrollados del estator dependiendo de la
ubicación de los imanes permanentes del rotor (Matsui y Takeshita, 1994;
Boussak, 2005). Este método utiliza información de las pendientes de las curvas
de corriente producidas por la inyección de una secuencia de pulsos de voltaje.

Finalmente se llevó a cabo la integración de las distintas partes del control y de la


electrónica construida con el hardware del vehículo.

La figura 1.6 resume la secuencia llevada a cabo por el algoritmo de control


desarrollado para arrancar el ICE. El proceso, que se inicia con la orden
proveniente del AES de dar arranque al motor, contiene una etapa de detección
de la posición angular inicial del rotor, una etapa de aceleración en rampa y una
etapa de mantención de la velocidad de arranque. Este proceso puede ser
interrumpido por la detección de sobre-temperatura o por la indicación del AES
de que ya se ha alcanzado la ignición del ICE.
12

Inicio
Interrupción: Interrupción:
Deshabilita Detención AES Sobretemperatura
Inversor

Control AES
SI NO
indica partida

Detección de la
Posición inicial

Compara
Pulsos de Rampa Corriente-
Valores de
Voltaje Frecuencia
Tabla

Suma
Muestra Selección
Medición Aumenta Mantiene
Ángulo
Corriente Corriente- Corriente-
Inicial
Máxima Frecuencia Frecuencia
Vector

NO 5 muestras SI NO 1 Segundo SI NO 9 Segundos SI

Figura N° 1.6: Diagrama de flujo resumido del proceso de arranque del ICE.

Los capítulos que son expuestos a continuación están separados en dos áreas principales,
la primera describe la electrónica de potencia y control empleada. La segunda se enfoca
en la descripción y justificación de la lógica de control implementada. En un tercer
capítulo se exponen ensayos y resultados. Al final se agrega un capítulo que resume las
conclusiones de la investigación.
13

2. ELECTRÓNICA

En un vehículo serie, la energía producida por el ICE fluye desde el generador hacia los
motores eléctricos de tracción a través de las baterías. En la camioneta del laboratorio, el
enlace entre el generador síncrono de imanes permanentes y las baterías es el
rectificador de frente activo (Active-Front-End: AFE). Este elemento de electrónica de
potencia cuenta con una topología de semiconductores tal que es posible la operación en
los cuatro cuadrantes de potencia compleja. Así, con el control adecuado, este
convertidor permite manejar la magnitud y dirección del flujo de energía eléctrica, tanto
desde las baterías hacia el PMSM en la partida, como desde el PMSM hacia las baterías
durante la operación normal.

Rectificador AFE

UP VP WP

Motores
de
Tracción CV dc PMSM ICE
150 Vdc
UN VN WN

iA iB
Controlador Control
AES Inversor

Inversor

Figura N° 2.1: Electrónica de control y potencia del generador del vehículo híbrido.
14

Como se muestra en la figura 2.1, el rectificador AFE o inversor está constituido por un
módulo de electrónica de potencia, que es básicamente el arreglo de semiconductores de
estado sólido, y la electrónica de control, que implementa la inteligencia del algoritmo
de control midiendo variables y actuando sobre la electrónica de potencia del inversor.
Ambas secciones son comunicadas usando fibra óptica para eliminar una posible
alteración en el funcionamiento del inversor a causa de la interferencia electromagnética
generada, principalmente, por este mismo.

2.1. Electrónica de Potencia

El inversor utilizado corresponde a un rectificador trifásico AFE regenerativo de dos


niveles de voltaje, dimensionado para los 7 kW nominales de potencia que entrega el
generador. Fue implementado usando un módulo Intellimod PM200CL1A060 fabricado
por POWEREX que consta de 6 IGBTs distribuidos en tres piernas con capacidad para
200 A cada una. Este módulo ha sido diseñado para aplicaciones de potencia en el
suministro y respaldo de energía. Dentro de sus principales características destaca que
fue construido minimizando las inductancias parásitas internas y posee tres sistemas de
protección que bloquean el funcionamiento del módulo: cortocircuito, sobre temperatura
y bajo voltaje. Puede operar con una frecuencia de conmutación de hasta 20 kHz
(POWEREX, 2009). Más datos se entregan en el anexo A.
15

Figura N° 2.2: Módulo Inversor PM200CL1A060.

El módulo tiene incorporada la circuitería de control de las compuertas del IGBT y los
circuitos de protección en su interior, sin embargo requiere de un circuito externo de
interface utilizado para las señales de disparo y para la alimentación, que está
implementado en la placa de disparo.

2.1.1. Elementos del Inversor

En la figura 2.3 se aprecian los principales elementos de la sección de potencia


del inversor. A continuación se explica la función que cumple cada uno de estos
elementos en el inversor.
16

Sensores de
Barra Condensador Corriente
Snubber Generador
DC barra DC

Módulo Intellimod

Circuito de
Disparo

Interfaz
Circuito de
Óptica
Alimentación Fibra Óptica Circuito de
Control
Placa de Disparo

Figura N° 2.3: Diagrama de elementos del área de potencia del inversor.

 Módulo Inversor Intellimod: Integra los 6 IGBTs de potencia con sus


diodos antiparalelos. Tiene solo los dos conectores para la barra DC y los
tres para la salida alterna trifásica. Sus señales digitales de entrada
permiten el control por conmutación de la magnitud de la corriente de
cada pierna usando modulación por ancho de pulso (Pulse Width
Modulation: PWM). Tiene como salidas digitales las señales de falla
activadas por los circuitos internos de protección.
 Circuito de Disparo: Implementa, a través de optocuplas, la aislación
eléctrica entre las señales de control y falla referenciadas a un mismo
nivel lógico, y las señales de potencia que controlan la compuerta de cada
IGBT. También alimenta a los IGBTs usando cuatro fuentes de voltaje
DC-DC aisladas: una para los tres IGBTs inferiores de cada pierna que
comparten emisor (UN, VN y WN) y una para cada uno de los IGBTs
superiores de las piernas (UP, VP y WP). Tal como lo indica el fabricante
en las recomendaciones de diseño (POWEREX, 2007), el uso de estas
17

fuentes aisladas son necesarias para eliminar los “loops” o circuitos


cerrados generados en los retornos a tierra de la compuerta y del emisor
de los IGBTs donde, por las magnitudes de las variaciones de corriente,
las inductancias parásitas podrían generar voltajes que disparen de
manera no controlada algún IGBT.
 Interfaz Óptica: circuito que se encarga de recibir las señales de fibra
óptica desde el módulo de control y transformarla a niveles lógicos de
voltaje para el control del Intellimod. Además, implementa por hardware
los tiempos muertos necesarios para evitar el fenómeno “shoot-through”.
Este se produce porque el IGBT tiene un tiempo de apagado hasta 2 µs
mayor que de encendido. Dado que en cada pierna los semiconductores
operan en modo complementario, podrían conducir ambos IGBT
simultáneamente durante las conmutaciones, cortocircuitando la fuente
DC y dañando el semiconductor. Así, el tiempo muerto es un retardo
aplicado al pulso de encendido del IGBT.
 Placa de disparo: Esta placa fusiona el circuito de la interfaz óptica y del
circuito de disparo con el objetivo de integrar toda la electrónica
requerida por el Intellimod en una sola placa y hacer más compacto el
inversor. Su esquemático y placa construida pueden verse en el anexo B.
A través de fibra óptica recibe los tres estados ON/OFF a aplicar en cada
una de las piernas del módulo, además de una señal de ENABLE que
habilita o apaga todo el módulo. Como salida, envía la señal de falla a la
placa de control.
 Snubber: Condensador de muy baja inductancia ubicado directamente
sobre los terminales de la barra DC del módulo que absorbe transitorios
de voltaje. Dada la inductancia parásita del circuito de potencia, en el
apagado de un IGBT la rápida variación de la corriente podría provocar
una sobretensión que supere los 600 V máximos entre colector y emisor
del IGBT. La elección y tipo de Snubber se detalla en el anexo C.
18

 Condensador Barra DC: Filtra las variaciones de voltaje producidas por el


inversor al conmutar sobre la carga inductiva, protegiendo las baterías y
los demás elementos de la barra DC.
 Sensores de Corriente: Los sensores LEM HASS-100 miden dos fases de
corriente entregando a la placa de control las señales de realimentación
necesaria para el control de corriente. Al operar por efecto Hall brinda
aislación entre el circuito primario de potencia y el secundario de control.
 Circuito de alimentación: Placa que recibe 12 V desde la fuente auxiliar
del vehículo y distribuye 5 V y 24 V a la placa de disparo y 12 V a los
ventiladores. Como es posible ver en el anexo D, incorpora también los
fusibles para cada salida.

2.1.2. Construcción del Inversor

En la construcción del inversor se evaluaron las condiciones de espacio


disponibles para su ubicación en el habitáculo del motor del vehículo. Esto
definió la orientación de los cables y disposición de los elementos del inversor.
La estructura base del inversor es el disipador. Dado que una de las causas
principales de degradación en la vida útil de los semiconductores de potencia es
el exceso de temperatura de juntura (Motto, 1977) es muy relevante el correcto
dimensionamiento del disipador, de modo que la temperatura del inversor
permanezca siempre dentro de los límites nominales de operación. El diseño
térmico puede verse en el anexo E. En la figura 2.4 se muestra el inversor
construido. Todos los elementos de potencia fueron tapados por una cubierta de
aluminio con el objeto de protegerlos del polvo y limitar la emisión de ruido
electromagnético. En las placas de los circuitos electrónicos también se tomaron
medidas para reducir la vulnerabilidad a interferencia electromagnética, como el
uso de planos de tierra, reducción del largo de las pistas, etc.
19

Conector
Generador

Sensores de
Corriente
Fibra Óptica
Snubber
Conector
Condensador Barra DC

Módulo
Placa de Intellimod
Disparo

Figura N° 2.4: Disposición de los principales elementos del inversor.

2.2. Electrónica de Control

Este módulo reúne todos los dispositivos de electrónica digital y analógica requerida
para realizar el control del inversor, además de elementos de programación y depuración
de software necesarios para probar los algoritmos implementados. Su núcleo es el
microcontrolador Microchip dsPIC30F4011 que controla los actuadores en base a la
información recibida por los sensores de temperatura y corriente. Fue diseñado para
aplicaciones de conversión de energía y control de motores. Es capaz de operar a 30
MIPS (mega instrucciones por segundo). Su arquitectura de 16 bits contiene un motor
DSP (Digital Signal Processor) capaz de realizar cada una de las operaciones aritméticas
20

de un set de instrucciones especiales en solo un ciclo (Microchip, 2008). La placa de


control se ubica en el habitáculo del vehículo donde queda más protegida. El
esquemático del circuito puede verse en el anexo F.

Electrónica Digital

Puertos de
Comunicación

UART/
ISCP
U
Emisores V Fibra
Microntrolador PWM
Ópticos W
E Óptica
ADC

iA Sensores de
Fuente de Filtros Pasa Circuito de iB
Corriente y
T
Alimentación Bajos Sensores Temperatura

Electrónica Analógica

Figura N° 2.5: Diagrama de bloques del módulo de control.

2.2.1. Elementos del Módulo de Control

A continuación se detalla el funcionamiento de los elementos del módulo de


control.

 Microcontrolador dsPIC30F4011: Implementa la lógica de control. Se


utilizan el módulo PWM para el disparo de los IGBT y el módulo ADC
21

(Analog-Digital Converter) para la lectura de los sensores. También envía


la señal de habilitación del inversor.
 Emisores Ópticos: Circuitería que adapta los niveles digitales de voltaje
del módulo PWM a los pulsos de luz (650 nm) utilizados por la fibra
óptica.
 Circuito de Sensores: Área que contiene los circuitos necesarios para el
funcionamiento y conexión de los sensores de corriente y temperatura,
tales como filtros de voltaje de alimentación y cargas resistivas de los
secundarios de los sensores de corriente.
 Filtro Pasa Bajos: Módulo que elimina toda la banda de alta frecuencia
considerada ruido que se infiltra en las señales de los sensores. Esto se
debe principalmente a la longitud de los cables, pese a que estos están
apantallados. Es importante sobre todo para la precisión del algoritmo de
identificación de la posición inicial. Consta de un amplificador seguidor
de emisor que le otorga alta impedancia a la señal de entrada y de un
filtro activo de segundo orden pasa bajos en configuración Sallen-Key.
 Puertos de comunicación: área del circuito que implementa la
comunicación UART usada por el control AES para manejar
externamente el inversor y para ver la evolución en tiempo real de
algunas variables a través de alguna interfaz. Aquí se encuentra también
la conexión ICSP (In-Circuit Serial Programming) necesaria para
programar el microcontrolador con la interfaz ICD2 de Microchip.
 Fuente de Alimentación: Se encarga de convertir y filtrar la alimentación
proveniente de la fuente auxiliar de 12 V del vehículo a los 5 V que
utilizan todos los elementos de la placa de control y los sensores.
22

Figura N° 2.6: Placa con el circuito de control.


23

3. CONTROL

En este capítulo se describe la estrategia de control y de detección de la posición inicial


del generador del vehículo híbrido. El objetivo principal es utilizar este generador como
motor de arranque para llevar al motor de combustión interna a una velocidad de giro
que permita su encendido. Para esto es necesario crear el algoritmo de control que
realice un análisis del comportamiento dinámico de la carga en el eje, seleccione un
método de control del inversor e implemente el método escogido para superar las
limitaciones existentes.

Una de las diferencias entre un motor y un generador síncrono es que generalmente este
último no incorpora un sensor de posición angular en el eje. Este sensor es
imprescindible para que el generador pueda operar como motor de arranque. Como el
generador utilizado no tiene sensor de posición, se desarrolla una estrategia de control
“sensorless” para usarlo como motor arranque.

3.1. Torque de Carga del ICE

Resulta importante conocer la magnitud máxima del torque de carga que opone el ICE
para definir la corriente y tipo de control “sensorless” del generador. El ciclo Otto del
ICE desarrolla los cuatro tiempos del proceso en dos vueltas del cigüeñal o 720°
mecánicos: admisión, compresión, expansión y escape (Pulkrabek, 2004). El motor de
combustión interna usado posee tres cilindros, por lo que la carga en el eje está
compuesta por las suma de la contribuciones iguales de cada pistón desplazadas en 240°.
De la curva de torque de cada pistón, la sección más relevante para el control es la etapa
de compresión, donde el torque de carga alcanza su máximo rápidamente. En este
periodo, el volumen de la mezcla al interior del cilindro se comprime en una relación
8.8:1 (Anexo H). En la figura 3.1 puede verse la curva de torque de cada cilindro y total
modelado en Matlab (Anexo G) en base a los datos del fabricante. Esta curva se ha
24

generado asumiendo que la ignición no ha ocurrido o es incompleta, tal como ocurre en


las primeras vueltas de motor a la partida, por lo que no hay aporte de la expansión. La
curva considera sólo la fuerza producida por el cambio de presión al variar el volumen
de los pistones. A este torque debe agregarse el necesario para mover los otros
componentes mecánicos del sistema, como: el árbol de levas, las válvulas, la bomba de
aceite y agua, el mecanismo de encendido, los rodamientos, etc. Mediciones sobre el eje
del motor sin bujías (sin compresión) mostraron que este componente adicional es
variable y tiene un máximo comprendido entre los 22 y 24 Nm.

12 Compresión
9
6
Torque [Nm]

3
0
-3
-6
-9
-12
0 120 240 360 480 600 720
Grados Mecánicos [°]

Cilindro 1 Cilindro 2 Cilindro 3 Total Cilindros

Figura N° 3.1: Torque de cada cilindro y aporte total al torque de carga para un ciclo
completo sin ignición de 720° mecánicos.

El motor de partida convencional (anexo H), considerando la relación de engranajes,


lleva al ICE una velocidad de 160 RPM en el arranque, aplicando un torque mínimo de
25

33 Nm y uno máximo de 70,68 Nm. Con esta información y considerando que la


constante de torque del generador es de 0,482 Nm/A, puede deducirse que para mover el
ICE se necesitaría entre 68,5 ARMS y 146,6 ARMS, lo que excede entre un 13% y 142% la
corriente nominal de 60,5 ARMS del generador. Así, de inmediato se impone una
restricción sobre el tiempo de operación del generador como motor en la partida con el
fin evitar su sobrecalentamiento.

Para conocer mejor el comportamiento dinámico del ICE y aprovechando el


conocimiento de la constante de torque del generador, se realizó un conjunto de ensayos
que determinaron experimentalmente el torque mínimo requerido para mover el eje a
distintas velocidades, lo cual se resume en el gráfico de la figura 3.2. Estos demostraron
que hay un incremento, lineal en esta zona, del torque que opone el ICE con un aumento
de la velocidad.

140 70
Corriente Generador [Arms]

Torque del ICE [Nm]


120 60
100 50
80 40
60 30
40 20
20 10
0 0
0 20 40 60 80 100 120 140 160 180
Velocidad de Giro [RPM]

A rms Torque

Figura N° 3.2: Determinación experimental del torque y corriente mínimos necesarios


para girar el ICE a distintas velocidades.
26

Finalmente, independientemente de la lógica de control que se implemente, se requiere


que el generador desarrolle un torque máximo no inferior a 61 Nm para cumplir el
objetivo propuesto.

3.2. Estrategia de Control del Inversor: SVPWM

El generador utilizado corresponde a uno síncrono de imanes permanentes con un flujo


que induce una FEM (voltaje inducido) sinusoidal. Por lo tanto, se desarrolló un control
sinusoidal de corriente para utilizar este generador como motor de arranque.

Como el generador es de corriente alterna trifásica, para ser utilizado como motor se
partida necesita, además del algoritmo de control “sensorless”, un dispositivo
electrónico que transforme la tensión continua de las baterías en tensión alterna. Para
ello se diseñó y construyó un inversor trifásico en base a IGBTs (Insulated Gate Bipolar
Transistors), cuya operación permite esa transformación. La conversión dc-ac se realiza
en sincronismo con la información entregada por el sistema “sensorless”. Este mismo
inversor, una vez que el motor de combustión interna comience a operar, trabajará como
rectificador para permitir la carga de las baterías. El inversor trifásico utilizado es del
tipo “fuente de voltaje” controlado por corriente y su topología se muestra en la Fig. 3.3.
(Rodríguez, 2005).
27

UP VP WP

ZA

CV dc ZB
ZC
150 Vdc
UN VN WN

iA iB
Control
Îref PWM
ia,b,c

Figura N° 3.3: Topología de inversor tipo fuente de voltaje controlado por corriente.

En control de fuentes sinusoidales de voltaje-corriente, los métodos más ampliamente


usados se reducen a dos (Da Silva et al, 2011): SPWM (Sinusoidal Pulsewidth
Modulation) y SVPWM (Space Vector Pulsewidth Modulation).

El primero corresponde a la implementación clásica que compara una señal sinusoidal


modulante con una portadora triangular para encender y apagar los semiconductores.
Este tiene una fácil implementación en circuitos con electrónica analógica y su estrategia
de operación para encender y apagar los IGBTs se muestra en la Fig. 3.4.
28

vT vM
v*A v*B v*C
VM VT
Control:
t
VM
VT

v(1)A : Fundamental de vA

V(1)A VDC /2
Potencia:
t
V(1)A VDC /2

Figura N° 3.4: Operación control SPWM: portadora triangular (vT), referencia sinusoidal
(vM) y componente fundamental del voltaje vA obtenido (v(1)A).

El segundo método se basa en la aplicación de un vector de voltaje sobre la carga con


dirección y magnitud predeterminadas. La variación en el tiempo del ángulo del vector
aplicado simula la aplicación de una onda sinusoidal de voltaje. Este vector es
construido usando la representación espacial de los ocho diferentes vectores que se
observan al graficar las combinaciones posibles de encendido y apagado de los
semiconductores del inversor, tal como se aprecia en la figura 3.5.
29

II S2 Estado Conducción IGBT


S3
Vector UP VP WP UN VN WN
S0 0 0 0 1 1 1
III I S1 0 0 1 1 1 0
S'
S2'
S2 0 1 1 1 0 0
S7 S0 S1' S3 0 1 0 1 0 1
S4 S1 S4 1 1 0 0 0 1
IV VI S5 1 0 0 0 1 1
S6 1 0 1 0 1 0
S7 1 1 1 0 0 0
S5 V S6

Figura N° 3.5: Representación gráfica de los vectores de estado.

Por lo tanto, para aplicar un vector de voltaje se seleccionan los vectores de estado
adyacentes y se calcula la magnitud de las componentes S1’ y S2’ de modo de formar
S’. La magnitud de las componentes corresponde al tiempo de aplicación de los vectores
de estado, valores que se traspasan a los registros que guardan los ciclos de trabajo de
los módulos PWM. Por lo tanto, para producir un fasor de voltaje se actualiza en cada
periodo de conmutación la magnitud y ángulo del vector aplicado de acuerdo a voltaje y
frecuencia deseados.

Este método resulta de sencilla y directa programación en circuitos de electrónica


digital, el cual fue escogido porque el control digital permite alcanzar mayor flexibilidad
y complejidad en los algoritmos. Implementado, el control SVPWM como bloque recibe
el ángulo y magnitud del vector de voltaje y entrega los valores de los tres registros
PWM necesarios para obtener ese vector.
30

3.3. Control de Corriente

El control de corriente consiste en ajustar la magnitud del vector de voltaje aplicado por
el inversor de acuerdo a las corrientes medidas en las fases del generador. Desde el
punto de vista de la teoría de control: el módulo del vector de corriente es la variable
controlada, la magnitud del vector de voltaje es la variable manipulada, el inversor es el
actuador y el conjunto generador-ICE es la planta. Para obtener el módulo del vector de
corriente es necesario sensar las corrientes de cada fase. Como al conocer las corrientes
de dos fases la tercera queda determinada, sólo se requieren dos sensores de corriente
para calcular este módulo.

Tomando una referencia para la magnitud del vector de corriente y comparándola con el
módulo obtenido con las corrientes medidas, se establece el error que es procesado por
el control proporcional-integral (PI), entregando el nuevo valor de magnitud del vector
de voltaje para la siguiente iteración.

El diagrama de bloques del control implementado puede verse en la figura 3.6. Según se
puede observar, el control de velocidad ocurre en lazo abierto. Dado que hemos
establecido la relación torque mínimo – velocidad requerida para mover el eje, entonces
si los valores de referencia de velocidad y referencia de corriente respetan esta relación
no habrá pérdida de sincronismo, evitando la necesidad de instalación de un sensor de
posición para controlar la máquina síncrona. Luego, la estrategia adoptada en la partida
para mover el ICE es aplicar una rampa de corriente-velocidad para llegar a los 160
RPM requeridos.
31

150 Vdc
CV dc
ω

UN

UP
Referencia de θ
Velocidad SVPWM

VN

VP
|V|
I/O
+ _ PI

WP
WN
Referencia de |Î|
Corriente |Î|
iB

PMSM
T°<110° T°

Figura N° 3.6: Fuente de voltaje controlada por corriente implementada.

El control de corriente presenta ventajas respecto al control de voltaje porque responde


de mejor forma a las variaciones presentes en el toque de carga del ICE. En una máquina
síncrona, la FEM es:

EG (t )  I r  Ler    sent
(3.1)

Donde:

Ir es la corriente rotórica.

Ler es la inductancia mutua rotor-estator.

ω es la velocidad angular.
32

Dado que la magnitud del vector de voltaje modulado de estator es fija sin control de
corriente, la componente oscilatoria del torque de carga afecta los valores ω y Eg de la
ecuación 3.1 produciendo variaciones en la magnitud y ángulo del vector de corriente de
estator, de la cual depende el torque entregado por el PMSM. Estas oscilaciones le
agregan inestabilidad al sistema electromecánico, lo que aumenta la posibilidad de
pérdida de sincronismo y falla en el proceso de partida. Como el control de corriente
compensa las variaciones de corriente entregando un vector de magnitud fija,
contrarresta el efecto de las oscilaciones del ICE, convirtiéndolo en un método de
control mejor adaptado a las características de esta carga.

3.4. Estimación de la Posición Inicial

Si bien se han determinado las condiciones de torque necesarias para mover el ICE
usando el generador a la partida sin pérdida de sincronismo, existe un problema con la
posición inicial con la que el generador comienza a mover el ICE. En un motor a
combustión el sentido de giro del eje es importante en la partida, pues la ignición de la
mezcla ocurre cerca del punto muerto superior (PMS) del pistón. Como en este punto la
biela del pistón se encuentra paralela al brazo del cigüeñal, prácticamente no genera
torque sobre el eje. Por lo tanto, la presión generada en la ignición de la mezcla
inyectada a la cámara de combustión es aprovechada en el sentido de giro que el eje
tenga en ese instante.

Al no haber sensor de posición en el eje, el control no conoce la orientación angular del


rotor. Cuando el inversor comienza el proceso de partida y aplica un vector de voltaje
con una dirección determinada, el eje se alinea con el campo magnético de estator
girando para el lado con menos desviación angular, lo cual implica, con probabilidad ½,
que pueda girar en sentido inverso. Así, al no controlar la posición inicial del rotor,
existe el riesgo de que el ICE comience a operar en sentido contrario y provoque la falla
de la partida. También pueden producirse daños en el sistema de admisión de aire del
33

motor, el cual no está preparado para evacuar los gases a alta temperatura quemados
durante la explosión de la mezcla.

Una estrategia ampliamente utilizada es conocida como alineación forzada (Batzel y


Lee, 2005). En ésta, previamente al inicio del proceso de partida, el control aplica un
vector de voltaje de magnitud creciente hacia una posición previamente determinada. De
este modo, el rotor progresivamente se va alineando hacia esa posición. Este método
presenta varios inconvenientes: necesita la instalación de un mecanismo que inhiba la
ignición de la mezcla durante el proceso de alineación, prolonga los tiempos de arranque
y requiere mantener un pulso de corriente de gran magnitud en una dirección fija,
aumentando a través del tiempo la probabilidad de daño de las bobinas del generador por
exceso de temperatura.

Por ello, resulta importante conocer la posición inicial del rotor en el proceso de partida.
La mayoría de los métodos de detección de la posición del eje “sensorless” para PMSMs
están basados en la medición de la FEM. En este caso, estos no pueden ser aplicados,
pues cuando el eje está detenido el voltaje inducido en el estator, que es proporcional a
la velocidad, es cero.

Sin embargo, existe otro grupo de métodos de detección de la posición del rotor que
toman ventaja de los cambios que sufre la inductancia de estator al variar la posición
angular del rotor. Estos métodos utilizan información derivada de la ocurrencia de
fenómenos de saturación del hierro y/o variación de la reluctancia del estator (Schroedl,
1988; Matsui, 1996). Usando un estímulo externo, como la aplicación de un patrón de
pulsos de voltaje DC (Tursini et al, 2003), la inyección de una señal de alta frecuencia
(Dae-Woong Chung, 1999), etc., estos métodos buscan generar una respuesta que
permita obtener información útil para la detección del rotor.
34

Los efectos de la posición del rotor sobre la inductancia de fase del estator pueden ser
descritos por la siguiente relación (Boussak, 2005):

  2    2   
l S  L0  L  cos 2 
L0 L
   L  cos 2    0  L  cos 2  
2  3  2  3  
 
 2    2  
L   L0
 L  cos 2   l S  L0  L  cos 2   
L0
 L  cos 2  

2  3   3  2
  2    2   
 0  L  cos 2 
L0 L
  L  cos 2   l S  L0  L  cos 2  
 2  3  2  3  (3.2)

Donde:

ls es la inductancia de fuga.

L0 es el componente de autoinductancia debido al flujo de entrehierro.

Lθ es el componente de autoinductancia debido al flujo dependiente de la


posición del rotor

θ es el ángulo eléctrico del rotor.

La ecuación 3.2 demuestra que la inductancia de cada fase se comporta como una
componente contínua con una componente sinusoidal que varía con la posición de
manera que ocurren dos periodos por uno del rotor. Esta curva posee una forma que
queda resumida en la ecuación 3.3 (donde LC, L1 y K son constantes):

L   LC  L1  cos2  K  (3.3)

Tal comportamiento del valor de la inductancia por fase se explica gráficamente en la


figura 3.7 (curva hierro estator no saturado).
35

140
Inducatancia [%]
120
LC L1
100
80
60
40
20
0 60 120 180 240 300 360
Grados Eléctricos[°]
Hierro Estator No-saturado Hierro Estator Saturado

Figura N° 3.7: Inductancia para una fase respecto a la posición del rotor para hierro de
estator no-saturado (inductancia normal) y hierro de estator con saturación (inductancia
menor).

Entonces, la posición inicial del rotor puede ser estimada considerando esta propiedad de
la inductancia, a partir de lo cual varios algoritmos han sido desarrollados. En esta
implementación se utiliza un método simplificado que aprovecha información
proveniente de la saturación intencional del circuito magnético del estator.

Como muestra la figura 3.8, cuando el campo magnético del rotor está alineado con el
campo del estator pueden ocurrir sobre la inductancia dos situaciones:

I. La dirección de los campos es opuesta, situación en la cual el flujo magnético


total en el hierro del estator es reducida, entonces éste está trabajando en la
zona lineal de la curva de histéresis del hierro y la inductancia es normal.
II. La dirección de campo es la misma para ambos, por lo tanto si el valor de la
corriente es lo suficientemente alto el hierro del estator estará trabajando en
la zona de saturación de su curva de histéresis y, por lo tanto, la inductancia
de estator se reduce.
36

N B
N
FLUJO
ESTATOR
S = S
S FLUJO N
CORRIENTE II
N + S
N FLUJO
N
I
IMANES
H

S S LI > LII
I) II)

Figura N° 3.8: Casos de alineación del campo magnético del rotor y estator: I) hierro
estator normal y II) hierro estator saturado.

El primer estado de operación sigue el patrón mostrado en la curva no-saturada de la


figura 3.7. El segundo estado origina la curva saturada de la misma figura. El problema
con usar solo la información de la primera curva es que hay dos posibles ángulos para un
valor de inductancia, pudiendo solo determinar la orientación del campo magnetico del
rotor y no la dirección. Para determinar directamente la posición con la segunda curva,
dado que en general el valor L1 de la ecuación 3.3 no está diseñado para ser grande, se
requiere aplicar pulsos con corrientes muy altas o usar sensores de corriente muy
precisos.

En lugar de esto, operando el estator en la zona de saturación del hierro podemos


obtener curvas de diferencias de corriente según el proceso que se describe a
continuación.
37

3.4.1. Algoritmo

El procedimiento utilizado para la determinación de la posición inicial del rotor


comienza con la aplicación de un pulso de voltaje positivo seguido de uno
negativo sobre uno de los enrollados del estator (figura 3.9). Al final de cada
pulso la corriente máxima alcanzada es medida y la diferencia entre el máximo
positivo y el máximo negativo es calculada. En la zona de saturación del hierro
del estator la diferencia entre los máximos es mayor debido a que en una
dirección la corriente fluye con menor inductancia.

+imáx Mediciones
A
+VDC de Corriente +
VDC
B C

t
Pulsos de + C B
VDC
Voltaje
-imáx A
-VDC

Figura N° 3.9: Procedimiento por fase de aplicación de pulsos de voltaje DC y


captura de corrientes.

Esta secuencia es repetida para cada fase y las diferencias obtenidas son
evaluadas usando la tabla 3.1 para establecer el sector donde el rotor se
38

encuentra. La tabla 3.1 fue construida revisando el comportamiento de las


diferencias para las tres fases en un periodo completo del rotor, lo que está
descrito en la figura 3.10.

15 I II III IV V VI
Diferencia de corrientes Pico [A]

10

0
0 30 60 90 120 150 180 210 240 270 300 330 360
-5

-10

-15
Grados Eléctricos [°]
Fase A Fase B Fase C

Figura N° 3.10: Diferencias de corrientes máximas por fase para un ciclo


completo.
39

Tabla N° 3.1: Selección de sector a partir del análisis de signo de las diferencias
en los máximos de corriente obtenidos.

Signo de la diferencia
Sector
Fase A Fase B Fase C
I (0°-60°) + + -
II (60°-120°) + - -
III (120°-180°) + - +
IV (180°-240°) - - +
V (240°-300°) - + +
VI (300°-360°) - + -

Finalmente, el algoritmo de control incorpora sólo esta tabla en el código, la cual


permite obtener la posición inicial con 60° eléctricos de presición y, en este caso,
15° mecanicos (generador con 4 pares de polos). Con esta información podemos
elegir como punto inicial de giro el límite más cercano del sector encontrado en
la dirección de giro correcta del ICE. Esto impone que el ángulo de torque, al
estar dentro del sector, esté comprendido sólo entre 0° y 60° electrícos. Entonces,
gracias a este algoritmo de detección de la posición inicial siempre se obtiene un
ángulo de torque menor de 90°, lo que implica que no ocurrirá rotación inversa,
permitiendo aplicar la máxima corriente para obtener máximo torque a esa
velocidad.

Para reducir la variabilidad de las muestras de corriente se obtiene un valor


promedio a partir la repetición de las mediciones. La duración de estos pulsos de
prueba se establece previamente considerando: las curvas de saturación
obtenidas, la precisión de los sensores y los límites de corriente del generador por
40

desmagnetización y temperatura. La aplicación los pulsos no afecta la posición


final del rotor, pues cada pulso positivo es seguido por uno negativo, con lo cual
el torque resultante es anulado. Además los tiempos de aplicación de cada pulso
son breves. Esta implementación reducida no involucra la necesidad de instalar
hardware adicional. Solo requiere mediciones de corriente, además de una
evaluación inicial de la respuesta de la máquina a los pulsos para construir la
tabla.

3.5. Sobrecorriente y Temperatura

El torque nominal del generador es 29,16 Nm a 60,5 ARMS. El torque mínimo necesario
para mover el ICE en la partida es 61 Nm. Esto requiere de una corriente de 126.6 A RMS,
excediendo en un 109% la corriente nominal. Según datos entregados por el fabricante
(Anexo H), la corriente máxima que puede ser suministrada al generador es 180 ARMS
por un periodo no mayor a 15 segundos. Por lo tanto, es posible alcanzar el torque
requerido pero es necesario monitorear la temperatura del generador y los tiempos de
aplicación de la corriente de partida de modo de evitar dañar permanentemente el
generador.

El límite térmico de funcionamiento de un motor eléctrico está dado por la clase de


aislación que este posea según los materiales usados en su construcción. El generador
utilizado posee clase F, lo cual implica que es capaz de resistir temperaturas de hasta
155° C. El fabricante recomienda no superar los 120° C. Por esta razón, se instaló un
sensor de temperatura AD22100 directamente sobre un enrollado de estator, el cual
entrega un voltaje proporcional a la temperatura que es medido por el convertidor
análogo-digital del microcontrolador. Éste se preocupa de la temperatura del generador
de dos formas:
41

i. Monitorea constantemente la temperatura del generador en proceso de partida,


apagando el inversor en caso de superar 105°.
ii. Controla que la condición de sobrecorriente de la partida no permanezca por un
periodo superior a 10 segundos.

Luego de un proceso de partida de 10 segundos de duración a temperatura ambiente, el


incremento de temperatura del generador solo alcanzó los 4° C. El control de término del
arranque y de los tiempos entre partidas recae sobre el controlador AES.

3.6. Proceso de Partida

El procedimiento de arranque comienza cuando el controlador del inversor recibe la


orden del controlador AES de iniciar el proceso de partida. A continuación realiza el
algoritmo de detección del sector donde se ubica el rotor, determinando el ángulo donde
el inversor aplicará el vector de corriente. Desde este punto empieza a aplicar una rampa
de corriente-frecuencia para llegar en 1 segundo a los 160 RPM, los que serán
mantenidos durante 9 segundos más, a menos que el controlador AES indique que se
detenga el proceso porque se alcanzó la ignición o la temperatura del generador haya
superado el máximo permitido.

3.6.1. Diagrama de Flujo del Proceso de Control

En la figura 3.11 se representa el control del proceso de partida en un diagrama


de flujos.
42

Inicio

Deshabilita
Control AES
SI NO Inversor
indica partida

Habilita Inversor Interrupción:


Detención AES

Detección de la
Posición inicial Rampa Corriente-
Frecuencia

Aplica Pulso
de Voltaje Aumenta
Corriente-
Frecuencia

Medición
Corriente
Máxima Suma
Sobre-
Muestra NO SI
temperatura

Sobre
SI temperatura NO
NO 1 Segundo SI

SI 10 muestras NO Mantiene
Corriente-
Frecuencia

Compara
Valores de
Tabla Sobre-
NO temperatura SI

Selección
Ángulo
Inicial
NO 9 Segundos SI
Vector

Figura N° 3.11: Diagrama de flujo del proceso de arranque del ICE.


43

3.6.2. Diagrama de Flujo del Software

El código programado para el microcontrolador fue desarrollado de manera modular


principalmente en lenguaje C. Algunas rutinas fueron implementadas en lenguaje
ensamblador para aprovechar la rapidez de cálculo de procesador. El código completo
puede ser revisado en el anexo I. Los siguientes diagramas de esta sección conforman
una versión detallada del diagrama de flujo general mostrado en la figura 3.11. El
control tiene dos interrupciones: recepción en el módulo UART de la orden de inicio o
detención del proceso de arranque y fin del periodo PWM, en la cual se implementa el
control PI midiendo y calculando variables de control a aplicar en el próximo periodo.

Inicio

Inicialización
Variables y
Funciones

Habilitación de
Interrupciones:
PWM
UART

Main

Configuración Inicialización Calibra Sensores de


General Control PID Corriente

Inicialización Inicialización Control AES


NO SI
ADC PWM indica partida

Inicialización Inicializa
Partida
UART Inversor

Figura N° 3.12: Diagrama de flujo del proceso de arranque del ICE.


44

Calibra Sensores
de Corriente

Mide Corriente

Determina
Suma Muestra
Offset

Fin Calibra Sensores


NO 50 Muestras SI
de Corriente

Figura N° 3.13: Diagrama de flujo de la calibración de los sensores.

Interrupción UART
Byte Recibido

Control AES Indica


NO Partida SI
Partida

NO Apaga SI Apaga Inversor

FIN Interrupción UART


Byte Recibido

Figura N° 3.14: Diagrama de flujo la interrupción UART byte recibido.


45

Partida

Enciende Interrupción UART:


Inversor AES indica fin

Detección Posición
Inicial
Rampa Corriente-
Velocidad

Rampa Corriente-
Velocidad

NO Completa 10 SI
Segundos
Corriente-
frecuencia Inicial

Apaga
NO 160 RPM SI
Inversor

Aumenta
Corriente-
Fin de Partida
Velocidad

Figura N° 3.15: Diagrama de flujo sección Partida.


46

Detección de la
Posición Inicial

Configura variables y
N° de Muestras

Fase A Fase B Fase C

Aplica Pulso Aplica Pulso Aplica Pulso


Voltaje Positivo Voltaje Positivo Voltaje Positivo

Mide Corriente Mide Corriente Mide Corriente Cálculo de Máximos


Máxima Máxima Máxima Promedio

Aplica Pulso Aplica Pulso Aplica Pulso Determina Sector


Voltaje Voltaje Voltaje Usando Tabla de
Negativo Negativo Negativo Signos

Mide Corriente Mide Corriente Mide Corriente


Máxima Máxima Máxima

Fin Detección de la
Posición Inicial

Suma Suma Suma


Diferencia de Diferencia de Diferencia de
Máximas Máximas Máximas

NO Alcanza N° de Alcanza N° de Alcanza N° de


SI NO SI NO SI
Muestras Muestras Muestras

Figura N° 3.16: Diagrama de flujo de la detección de la posición inicial.


47

Interrupción
Término Periodo
PWM

Actualiza Ángulo de
Vector de Voltaje

Mide Corriente y
Control PI SVPWM
Temperatura

Calcula Ubica Sector


Mide Módulo de Angular del
Corrientes Vector de Vector de
Corriente Voltaje

Calcula
Calcula Error
Componentes
Corrige Offset Respecto
de Vectores de
Referencia
Estado

Aplica
Escalamiento
Mide Ganancias
Magnitud
Temperatura Proporcional
Vector Voltaje
e Integral

Devuelve Actualiza
Sobre
SI NO Módulo Vector Ciclos de
Temperatura
de Voltaje Trabajo PWM

Apaga Inversor

Fin Interrupción
Término Periodo
PWM

Figura N° 3.17: Diagrama de flujo de la interrupción Término Periodo PWM.


48

4. RESULTADOS EXPERIMENTALES

Este capítulo presenta información obtenida en los ensayos realizados en el generador


cuando opera como motor de arranque en el vehículo híbrido. Se evalúa el
funcionamiento de algoritmos y elementos de hardware en distintas etapas de desarrollo
del sistema de partida implementado.

4.1. Funcionamiento Algoritmo SVPWM

El algoritmo SVPWM (Space Vector Pulse Width Modulation) fue aplicado al inversor
que controla el motor para que éste opere como fuente de voltaje. El método fue testeado
en un banco de pruebas con una carga resistiva-inductiva a distintas frecuencias. La
carga RL empleada tiene una impedancia de 2,6 Ohm y 10,7 mH, a la cual se aplicó un
voltaje modulado de 30 Vf-f RMS con una fuente de voltaje de 52 VDC. La figura 4.1
muestra los resultados obtenidos en esta prueba.
49

Figura N° 4.1: Capturas del funcionamiento del algoritmo SVPWM sobre una carga RL
a distintas frecuencias: 1, 2, 4 y 64 Hz.

Tal como lo muestra la figura 4.1, la implementación del algoritmo satisface el objetivo
principal de obtener una fuente de corrientes sinusoidales con frecuencia y magnitud
modificables a elección a partir de la fuente de voltaje continua disponible en el paquete
de baterías del vehículo híbrido.
50

En la figura 4.2 se aprecian las corrientes por fase y una medida del voltaje entre fases
que aplica el inversor a la carga para una frecuencia de 80 Hz. Ésta revela cómo la
modulación por ancho de pulso del voltaje DC, a una frecuencia de conmutación de los
IGBTs de 10 KHz, genera las corrientes sinusoidales requeridas.

Figura N° 4.2: Capturas de corrientes por fase y voltaje fase-fase aplicados por el
inversor usando el algortimo SVPWM.

4.2. Carga del Motor de Combustión Interna (ICE).

Los oscilogramas que se muestran a continuación exponen las diferencias en la corriente


que entrega el inversor en su operación como fuente de voltaje y como fuente de
corriente. Estos oscilogramas dan cuenta de cómo es afectada esa corriente por las
variaciones del torque de carga del ICE.
51

4.2.1. Control del Inversor Operando como Fuente de Voltaje

Las Figuras 4.3 y 4.4 muestran la operación del sistema cuando el inversor
trabaja como fuente de voltaje. La figura 4.3 corresponde a una captura de las
corrientes suministradas al PMSM (Permanent Magnet Synchronous Motor) para
mover el ICE a una velocidad de 15 RPM. La imagen muestra cómo las ondas de
corrientes son deformadas por la naturaleza variable del torque de carga del
motor a combustión. En el centro de la imagen se puede ver cómo la corriente es
afectada por la pérdida temporal de sincronismo. En este punto hay un instante
donde el torque que entrega el PMSM ha sido superado por torque que opone la
carga, lo cual incrementa la probabilidad de giro inverso del ICE mientras
alcanza nuevamente el sincronismo. La corriente aplicada alcanza los 80 ARMS.

Figura N° 4.3: Deformación de la corriente ante pérdida temporal de sincronismo


del PMSM operando como motor alimentado con fuente de voltaje AC.
52

La figura 4.4 muestra otro caso de pérdida de sincronismo donde el inversor


aplica un voltaje mayor al PMSM para elevar la corriente de 80 a 100 ARMS. En
este caso, la pérdida de sincronismo ocurre cuando el ICE ha alcanzado las 45
RPM, lo cual indica que se debe aplicar mayores corrientes si se quiere aumentar
la velocidad del ICE y asegurar su ignición.

Figura N° 4.4: Pérdida de sincronismo con inversor operando como fuente de


voltaje con una corriente 100 ARMS.

4.2.2. Control del Inversor Operando como Fuente de Corriente

En la figura 4.5 el control aplica al PMSM un vector de corriente de 100 ARMS a


una frecuencia que permite al motor girar a 45 RPM. Esta corriente alcanza la
misma magnitud y frecuencia que la aplicada en el caso mostrado en la figura
4.4, pero sin pérdida de sincronismo. Este caso ejemplifica cómo se obtiene un
53

mejor rendimiento del conjunto PMSM-ICE a la partida cuando se implementa


una estrategia de control de corriente.

Figura N° 4.5: Corrientes de PMSM con inversor operando como fuente de


voltaje controlada por corriente con una magnitud del vector de 100 ARMS.

4.3. Relación Torque-Velocidad del ICE

Con el objeto de establecer de mejor manera el comportamiento dinámico del torque de


la carga en el eje impuesto por el ICE, se procedió a efectuar una serie de ensayos que
permitieran delimitar el torque necesario para mover el eje según la velocidad de giro.
La metodología consistió en encontrar el vector de corriente de magnitud mínima
requerida para, sin observar pérdidas temporales, mantener en régimen el sincronismo.
En base a los datos encontrados y usando la constante de torque del generador, se
confeccionó la tabla 4.1 para el rango de velocidades requerido por el proceso de
arranque del ICE. Esta misma información se resume en la figura 4.6. La tabla fue
54

posteriormente utilizada para establecer las magnitudes de corrientes aplicadas en la


rampa de aceleración y durante la operación en régimen.

Tabla N° 4.1: Determinación experimental de la relación corriente-velocidad.

Frecuencia Velocidad Corriente Corriente Torque


Inversor Eje Estator Estator
[Hz] [RPM] [AMÁX] [ARMS] [Nm]
1 15 110 77,78 37,5
2 30 120 84,85 40,9
3 45 125 88,39 42,6
4 60 130 91,92 44,3
5 75 140 98,99 47,7
6 90 145 102,53 49,4
7 105 150 106,07 51,1
8 120 160 113,14 54,5
9 135 170 120,21 57,9
10 150 175 123,74 59,6
11 165 180 127,28 61,3

140 70
Corriente Generador [Arms]

Torque del ICE [Nm]


120 60
100 50
80 40
60 30
40 20
20 10
0 0
0 20 40 60 80 100 120 140 160 180
Velocidad de Giro [RPM]

A rms Torque

Figura N° 4.6: Determinación experimental del torque necesario para girar el ICE.
55

4.4. Detección de la Posición Inicial

El principio del método de detección de la posición inicial implementado está basado en


la variación de la inductancia entre fases que presenta el PMSM a medida que varía el
ángulo del rotor. En la figura 4.7 el gráfico muestra la intensidad y comportamiento
sinusoidal con las cuales se presenta esta característica en la máquina síncrona
empleada. La figura está formada en base a datos recolectados cada 15° eléctricos.

430
Inductancia [µH]

420
410
400
390
380
370
360
350
0 60 120 180 240 300 360
Grados Eléctricos[°]

Figura N° 4.7: Variación de la inductancia entre fases con la posición del rotor para el
generador PGS150 usado.

Tal como fue anticipado en el capítulo 3, esta curva entrega información de la


orientación pero no de la dirección de campo magnético del rotor. Por ello, el algoritmo
implementado debe inyectar un pulso de voltaje extenso para obtener información a
través de la saturación de la inductancia. Los efectos de esta saturación pueden verse en
las figuras 4.8 y 4.9 que muestran cómo la corriente máxima alcanza distintas
magnitudes al aplicar un pulso de voltaje positivo y uno negativo sobre un par de fases
de estator.
56

Figura N° 4.8: Aplicación de un pulso positivo de voltaje entre fases y corriente


alcanzada en la fase "A".

Figura N° 4.9: Aplicación de un pulso negativo de voltaje entre fases y corriente


alcanzada en la fase "A".
57

La diferencia entre los máximos de corriente da cuenta de la saturación del circuito


magnético. En el primer pulso la corriente máximo de la fase "A" alcanza los 112 A,
mientras que para un pulso de igual duración pero con signo opuesto la corriente
máxima llega a 104 A para la misma posición del rotor. Esto indica que durante el pulso
positivo el flujo magnético generado por la corriente y el flujo magnético de los imanes
del rotor se superponen sobre el estator en la misma dirección, incrementando el flujo
total en el hierro estatórico al nivel de saturarlo. El fenómeno se refleja como una caída
en el valor de la inductancia, dado que no hay capacidad para incrementar el flujo
magnético con el aumento de la corriente. Así, en esta posición angular, durante un
pulso de voltaje con corrientes lo suficientemente altas hay una menor inductancia que
se opone al cambio de corriente, por lo que el máximo medido al fin del periodo es
mayor en una dirección que en la otra.

En la figura 4.10 se muestra el resultado de aplicar este mismo proceso para distintos
ángulos del rotor para dos periodos eléctricos. En ella se grafican las diferencias
promedios obtenidas entre las corrientes máximas luego de realizar 150 muestras cada 5
grados mecánicos.

Observando los signos de las curvas para las diferencias de corriente de la figura 4.10, es
posible visualizar que un periodo de 360 grados eléctricos puede ser dividido en seis
secciones tal como se muestra en la figura 4.11. A partir de ello se construyó la tabla 3.1,
incluida en el capítulo anterior, la cual es almacenada finalmente en el software que
implementa el algoritmo de detección de la posición inicial.

La figura 4.12 muestra una curva de inductancia entre fases reconstruida usando los
valores de corrientes máximas solo de la aplicación de pulsos positivos de voltaje, dando
cuenta como la inductancia es afectada cuando se satura el hierro de estator al llegar a
valores que superan en 50% la corriente nominal. A diferencia de esta curva, la
aplicación de pulsos negativos satura la segunda porción de la curva.
58

10,0
Diferencia de Corrientes Máximas [A]
8,0
6,0
4,0
2,0
0,0
0 20 40 60 80 100 120 140 160 180
-2,0
-4,0
-6,0
-8,0
-10,0
Grados Mecánicos [°]
Fase A Fase B Fase C

Figura N° 4.10: Diferencias promedio de corrientes máximas para dos periodos


eléctricos del rotor.

I II III IV V VI
Diferencia de Corrientes Máxima [A]

10
8
6
4
2
0
-2 0 30 60 90 120 150 180 210 240 270 300 330 360
-4
-6
-8
-10
Grados Eléctricos [°]
Promedio Fase A Promedio Fase B Promedio Fase C

Figura N° 4.11: Determinación del sector de posición angular del eje del rotor.
59

430
410
Inducatancia [µH]

390
370
350
330
310
290
270
250
0 60 120 180 240 300 360
Grados Eléctricos[°]
Hierro Estator No-saturado Hierro Estator Saturado

Figura N° 4.12: Inductancia entre fases para hierro de estator no-saturado (inductancia
normal) e inductancia reconstruida para hierro de estator con saturación (con 150% de la
corriente nominal).

Tras haber realizado ensayos cada 5 grados mécanicos del rotor del algoritmo de
detección de la posición inicial, este presentó una cantidad de 20 errores en la estimación
del sector dentro de un total de 360 experimentos, lo que representa una tasa de falla del
6%. La magnitud máxima de estos errores fue de un sector. Además, estos se produjeron
sólo en algunos ángulos que estaban en los límites entre un sector y otro.

4.5. Temperatura del Generador

Se realizó una prueba para mostrar el comportamiento térmico del generador al ser
sometido a las sobrecorrientes necesarias para la partida del ICE. Se efectuaron dos
escenarios. En uno se aplicó solo un proceso de arranque y se monitoreó la evolución de
60

la temperatura durante una hora. En el segundo se efectuaron procesos de arranque


sucesivos cada 10 minutos. La información fue obtenida empleando un sensor de
temperatura situado en una bobina de estator. Cada proceso de arranque tuvo una
duración de 10 segundos e incluyó partida en rampa de corriente-frecuencia de 1
segundo seguido por una zona de corriente-frecuencia constante de 9 segundos.

Las temperaturas alcanzadas por el generador pueden ser vistas en la figura 4.13. Allí se
observa que el incremento de temperatura posterior al primer arranque sólo alcanza 4 °C
y que el alza se produce en un tiempo inferior a tres minutos, luego de lo cual comienza
a descender lentamente. Al cabo de 10 minutos la temperatura del generador logró bajar
hasta llegar a sólo un grado sobre la temperatura inicial.

En el escenario de partidas sucesivas la magnitud y tiempo del incremento es similar al


caso anterior. Al final del proceso de 6 partidas el generador acumula un incremento de
temperatura inferior a 6 °C, permaneciendo siempre bajo el límite de temperatura que el
fabricante recomienda no superar (105 °C).

Otro aspecto importante que aparece en este ensayo es que el comportamiento de cada
proceso en términos de magnitud y duración del incremento de temperatura es
independiente del orden en que fue efectuado, mostrando que no hay un aumento
progresivo en la tasa de cambio de la temperatura que sea preocupante para este nivel de
repetición.
61

31
29
27
Temperatura [°C]

25
23
21
19
17
15
0 10 20 30 40 50 60
Tiempo [m]

Partidas cada 10 Minutos Partida Única

Figura 4.13: Evolución de la temperatura del generador bajo distintos escenarios de


partidas sucesivas.

4.6. Funcionamiento General

En esta sección se muestran capturas de la corriente que el inversor suministra al


generador durante distintas etapas del proceso de partida. En la figura 4.14 se muestra la
evolución de la corriente durante el inicio del proceso en rampa corriente-velocidad para
dos ángulos diferentes de partida. La figura 4.15 muestra las formas de onda obtenidos
con el control de corriente etapa de corriente-velocidad constante. En ambas figuras se
aprecia que no hay perturbaciones que indiquen pérdida de sincronismo como en la
figura 4.3 y 4.4.
62

Figura 4.14: Corrientes por fase en generador durante la rampa corriente-velocidad


durante el proceso de partida.

Figura 4.15: Corrientes por fase en generador en la etapa de corriente-velocidad


constantes durante el proceso de partida.
63

5. CONCLUSIONES

En esta tesis se desarrolló e implementó un sistema de partida “sensorless” para el


arranque de un motor de combustión interna que provee de energía a un vehículo
híbrido-serie “plug-in”. El sistema logra llevar al motor de combustión interna a la
velocidad de encendido usando el generador acoplado al eje como motor de arranque y
el rectificador de frente activo como inversor, sin necesidad de incorporar hardware
adicional al requerido para la operación normal del vehículo. La realización de la tesis
requirió de la construcción de los equipos de electrónica de potencia y de control digital
necesarios para la operación del sistema.

Las principales dificultades de la implementación surgieron a partir del desconocimiento


de la posición angular instantánea del rotor necesaria para un control óptimo y de la
naturaleza variable del torque de carga que opone el ICE durante el arranque. La
solución propuesta aborda estos problemas combinando un método de detección de la
posición angular inicial del rotor del generador con un esquema de control del inversor
de corriente-velocidad adaptado a las características de la carga. Este esquema de control
está constituido por un control de corriente en lazo cerrado y control de frecuencia en
lazo abierto.

La implementación de un control en lazo cerrado de corriente que operara el inversor


como una fuente de voltaje controlada por corriente demostró tener mejor rendimiento
que el control en lazo abierto solo como fuente de voltaje. Para una determinada
velocidad y magnitudes iguales de corriente, el control de corriente logró mantener en
sincronismo al conjunto generador-ICE mientras que con el control de voltaje el ángulo
de torque superó el límite de estabilidad y se perdió el sincronismo.

El control de velocidad en lazo abierto comprende una etapa en rampa de aumento de la


frecuencia que entrega el inversor y una etapa de frecuencia constante. La mantención
del sincronismo se aseguró aplicando los valores determinados experimentalmente de
corriente necesarios para operar a una determinada frecuencia.
64

Como fue analizado en el capítulo 3, la determinación de la posición inicial del rotor


resulta importante. Iniciar la secuencia de arranque desde una posición inapropiada
puede causar rotación inversa, desencadenar la falla del proceso de partida e incluso
dañar los elementos del conjunto generador-ICE. La manera más sencilla de conocer
esta información es a través de la instalación de un sensor de tipo efecto hall u otro sobre
el rotor dedicado a esta función. Por razones de espacio, costo y probabilidad de falla
resulta de interés la elaboración de una alternativa “sensorless” de detección de posición.
Este objetivo fue alcanzado usando un método que emplea los sensores de corriente ya
instalados.

Dado que las alternativas “sensorless” que utilizan la medición de la FEM no funcionan
a velocidad cero, el método escogido para la detección de la posición inicial del rotor
pertenece al grupo que utiliza la relación existente entre el valor de la inductancia en las
fases del generador y la posición angular del rotor. Como esta propiedad permite
detectar la orientación del rotor pero no la individualización de sus polos magnéticos, el
método implementado utiliza el cambio producido en la inductancia al saturar el flujo
magnético de estator. Los cambios en la inductancia de fase fueron medidos a través de
los valores máximos alcanzados por la corriente luego de la aplicación de una serie de
pulsos de voltaje.

La aplicación de los pulsos de voltaje no afectó la posición del rotor por tres razones: la
duración de los pulsos es breve, un pulso positivo es sucedido por un pulso negativo,
anulando los torques producidos, y la magnitud de la inercia mecánica del conjunto
generador-ICE es alta.

Para la deducción del sector angular donde se ubica el rotor, el método utiliza una tabla
previamente construida con los signos de las diferencias de corrientes máximas
alcanzadas. Los signos establecen una relación cualitativa con cada sector. De este
modo, al no depender de un análisis cuantitativo, el método es menos sensible a cambios
en los parámetros físicos del sistema, como en el caso de las variaciones de la
impedancia de la máquina con la temperatura. También la estimación de la posición del
65

rotor es robusta respecto los cambios presentados en las condiciones de carga del motor,
principalmente porque no utiliza variables mecánicas tales como: torque, momentos de
inercia, etc.

El método fue implementado para detectar el rotor dentro de uno de los 6 sectores en
que fue dividido el espacio angular del rotor. Como fue analizado en el capítulo 3, esta
resolución de 60° eléctricos, permite que el ángulo de torque con el cual es iniciado el
proceso de partida no supere los 60° eléctricos. Esto evita la posibilidad de rotación
inversa del ICE y permite la aplicación del torque máximo desde el inicio, a diferencia
del método de alineación forzada.

Otra característica de este método es que permite su utilización en máquinas síncronas


BLDC, las cuales, al ofrecer una FEM trapezoidal, requieren de una resolución de 60°
eléctricos para ser controladas y en las cuales la solución puede ser extendida no sólo a
la determinación de la posición inicial sino a velocidades del rotor mayores. Sin
embargo, para que este método pueda ser empleado requiere que la variación de la
impedancia sea lo suficientemente grande para que se alcancen magnitudes de corriente
tal que permitan su sensado de manera práctica y no sean dañinas para la máquina.

Por otro lado, la estimación de la posición con este método a bajas velocidades es
posible pero presenta el inconveniente de que el proceso de partida debe ser
periódicamente interrumpido para su aplicación. En estas interrupciones la corriente
resulta afectada por la aplicación de los pulsos, alterando también el torque entregado
con riesgo de aumentar la probabilidad de pérdida de sincronismo.

Si bien el grado de resolución alcanzado es suficiente para las necesidades del proceso
de arranque del ICE, es posible lograr sectores de hasta 30° eléctricos usando también
relaciones cualitativas entre las corrientes alcanzadas. En la versión implementada del
método de estimación se alcanzó una tasa de error de 6%. El grado de resolución y la
tasa de error obtenibles dependen de factores como: la precisión de los sensores de
corriente, la resolución de los convertidores análogos-digitales y el límite máximo de
66

corriente aplicable a la máquina síncrona sin dañarla por sobretemperatura o


desmagnetización.

Finalmente, este método de detección de la posición inicial también puede tener una
importante función en aplicaciones donde se requiere de una partida suave o evitar
rotación temporal inversa, como en tracción eléctrica.

Dada la potencia del generador, se requirió la aplicación de corrientes 210% mayores


que la corriente nominal para lograr satisfacer las necesidades de torque del ICE en la
partida. Esta situación obliga a limitar la duración del proceso de arranque y a
monitorear constantemente la temperatura del generador. En los ensayos realizados se
demostró que procesos de partida con duración de 10 segundos, valor bastante más
extenso que el par de segundos que normalmente emplea el ICE en encender, no
afectaron significativamente la temperatura del generador, operando en una zona térmica
segura.

En esta tesis se ha demostrado que el generador síncrono de imanes permanentes puede


ser usado para dar arranque al motor de combustión interna utilizando un enfoque
“sensorless” sencillo y robusto. La utilización de una estrategia que combina la
estimación de la posición inicial y la utilización del control de corriente demuestra ser lo
suficientemente buena como método de partida del conjunto generador-ICE del vehículo
híbrido serie “plug-in” que se está desarrollando.

Esta implementación no involucra el uso de hardware adicional y no hace uso intensivo


de la capacidad de cálculo del controlador, sólo requiere de mediciones de corriente.
Tampoco requiere parámetros del generador o ICE, solo una evaluación inicial de la
respuesta de la corriente de la máquina eléctrica.
67

REFERENCIAS

Batzel, T. D., & Lee, K. Y. (2005). Electric propulsion with sensorless permanent
magnet synchronous motor: Implementation and performance. Energy Conversion,
IEEE Transactions on, 20(3), 575-583.

Boussak, M. (2005). Implementation and experimental investigation of sensorless speed


control with initial rotor position estimation for interior permanent magnet synchronous
motor drive. Power Electronics, IEEE Transactions on, 20(6), 1413-1422.

Da Silva, E. R. C., Cipriano dos Santos, E., & Jacobina, C. B. (2011). Pulsewidth
modulation strategies. Industrial Electronics Magazine, IEEE, 5(2), 37-45.

Dae-Woong Chung, Jun-Koo Kang, & Seung-Ki Sul. (1999). Initial rotor position
detection of PMSM at standstill without rotational transducer. Electric Machines and
Drives, 1999. International Conference IEMD '99, 785-787.

EPCOS. (2010). Metallized polypropylene film capacitors (MKP) EPCOS AG.


International Energy Agency. (2010). World energy outlook 2009. France: International
Energy Agency.

Lo, E. W. C. (2009). Review on the configurations of hybrid electric vehicles. Power


Electronics Systems and Applications, 2009. PESA 2009. 3rd International Conference
on, 1-4.

Maruti Ltd. (1999). Cranking system. In Service manual –M800 (Suzuki Motor
Corporation ed., pp. 497). India: MARUTI SUZUKI INDIA LIMITED.

Matsui, N. (1996). Sensorless PM brushless DC motor drives. Industrial Electronics,


IEEE Transactions on, 43(2), 300-308.

Matsui, N., Takeshita, T., & Yasuda, K. (1992). A new sensorless drive of brushless DC
motor. Industrial Electronics, Control, Instrumentation, and Automation, 1992. Power
68

Electronics and Motion Control., Proceedings of the 1992 International Conference on,
430-435 vol.1.

Microchip. (2009). dsPIC30F4011/4012 datasheet: High-performance, 16-bit digital


signal controllers. U.S.A.: Microchip Technology Incorporated.

Mitchell, R. R., Gallant, B. M., Thompson, C. V., & Shao-Horn, Y. (2011). All-carbon-
nanofiber electrodes for high-energy rechargeable li-O2 batteries. Energy &
Environmental Science, 4(8), 2952-2958.

Motto, J. W. (1977). POWER SEMICONDUCTOR DEVICE PROTECTION. In


Introduction to solid state power electronics (pp. 5)

Parasiliti, F., Petrella, R., & Tursini, M. (1997). Sensorless speed control of a PM
synchronous motor by sliding mode observer. Industrial Electronics, 1997. ISIE '97.,
Proceedings of the IEEE International Symposium on, 1106-1111 vol.3.

Pistoia, G. (2009). Vehicle applications: Traction and control systems. In Battery


operated devices and systems - from portable electronics to industrial products (First
ed., pp. 321) Elsevier.

Powerex Inc. (2007). L-series power devices application note. Pennsylvania: Retrieved
from http://www.pwrx.com/pwrx/app/L_Series_Power_Device_Application_Note.pdf

Powerex Inc. (2009). [Intelligent Power Module PM200CL1A060 Datasheet].


Pennsylvania: Retrieved from http://www.pwrx.com/pwrx/docs/PM200CL1A060.pdf

Pulkrabek, W. W. (2004). Chapter 3: Engine cycles. In Engineering fundamentals of the


internal combustion engine (Segunda ed., pp. 72). Plateville: ASME.

Read, K. (2011, July). Free range. Electric & Hybrid Vehicle Technology International,
46-52.
69

Rodriguez, J. R., Dixon, J. W., Espinoza, J. R., Pontt, J., & Lezana, P. (2005). PWM
regenerative rectifiers: State of the art. Industrial Electronics, IEEE Transactions on,
52(1), 5-22.

Schroedl, M. (1988). Detection of the rotor position of a permanent magnet synchronous


machine at standstill. Italy. 195-197.

Tursini, M., Petrella, R., & Parasiliti, F. (2003). Initial rotor position estimation method
for PM motors. Industry Applications, IEEE Transactions on, 39(6), 1630-1640.

U.S. Energy Information Administration. (2011). International energy outlook 2011.


Washington: U.S. Departament of Energy.
70

ANEXOS
71

Anexo A: Hoja de Datos Módulo Intellimod


72
73
74
75
76
77

Anexo B: Placa de Disparo

Figura B1: Esquemático del área de interfaz óptica y tiempos muertos placa de disparo.
78

Figura B2: Esquemático del área circuito de disparo de la placa de disparo.


79

Figura B3: Diseño final de la placa de disparo.


80

Figura B4: Placa de disparo instalada en el inversor.


81

Anexo C: Selección del Snubber

Debido a las inductancias parásitas que existen en el circuito de potencia del inversor, tal
como muestra la figura C2, pueden inducirse sobretensiones producto de los cambios
bruscos en la corriente por las conmutaciones. Estas sobretensiones pueden superar los
voltajes tolerables por los semiconductores del módulo si no se toman las medidas
adecuadas.

Para evitar que esas sobretensiones dañen los IGBTs se utiliza un dispositivo conocido
como Snubber que implementa en su interior un circuito amortiguador. Hay diferentes
tipos de Snubbers. Las topologías más comunes se muestran en la figura C1. La
estructura más sencilla consta de un condensador que conecta los colectores de IGBTs
superiores con los emisores de IGBTs inferiores, como se muestra en la figura C1 A).
Este tipo de snubber suele ser lo suficientemente efectivo en el control, sin pérdidas, de
transitorios de voltaje para aplicaciones de baja potencia (Powerex, 2007).

Figura C1: Estructura de Snubbers más empleadas (Powerex, 2007).


82

Para el módulo de 6 IGBTs usado, el fabricante recomienda un Snubber de tipo


capacitivo con la estructura A) de la figura C1, colocado en paralelo a la barra DC
directamente sobre los terminales P y N del módulo (Powerex, 2009).

Para que el Snubber sea capaz de filtrar estos sobrevoltajes, la recomendación es usar un
condensador con una baja inductancia parásita entre sus terminales y con una capacidad
que satisfaga una tasa mínima de 1 uF por cada 100 A de corriente de colector. La
corriente máxima que alcanza el colector es:

I Cmáx  160 [ A]

Por lo tanto, la capacidad del Snubber deberá ser por lo menos:

1[ F ]
C Snubbermín  I Cmáx 
100[ A]
C Snubbermín  1,6[ F ]

Figura C2: Inductancias parásitas en los snubbers y líneas (Powerex, 2007).


83

Por otro lado existen limitaciones sobre la inductancia parásita del Snubber. Esta se
ilustra en la figura C2 como L2. El máximo incremento de voltaje que soporta el módulo
entre sus terminales, según la hoja de datos del semiconductor, es:

VCCmáx( surge)  500[V ]

Como el voltaje de la barra DC a plena carga es:

VDC  158[V ]

Entonces, el máximo incremento de voltaje que podría soportar el módulo por una
sobretensión producida en la inductancia parásita del snubber es:

Vmáx  342[V ]

El fabricante indica que para los módulos, el incremento de corriente en el tiempo puede
aproximarse como:

di 0,01
  IC
dt 1[nS ]

En este caso tenemos:

di 0,01
  160[ A]
dt 1[nS ]
di
 1,6[ A / nS ]
dt

Entonces, considerando el máximo incremento de voltaje, la inductancia del Snubber


debe estar limitada a:

V 342[V ]
LSnubbermáx  
di 1,6[ A / nS ]
dt
LSnubbermáx  213,8[nH ]
84

Habiendo establecido la capacidad mínima y la inductancia máxima requeridas,


finalmente se utilizó un Snubber EPCOS B32656S0155 existente en el laboratorio de
muy baja inductancia parásita (EPCOS, 2010) con características cercanas a las recién
estimadas, que soporta hasta 1.000 VDC y tiene una capacidad de:

CSnubber  2[F ]

Figura C3: Snubber EPCOS B32656S0155 utilizado.


85

Anexo D: Placa de Alimentación

Figura D1: Esquemático placa de alimentación.


86

Figura D2: Diseño final de la placa de alimentación.

Figura D3: Placa de alimentación construida e instalada.


87

Anexo E: Dimensionamiento Térmico

Datos relevantes para el dimensionamiento térmico:

 Máquina síncrona:
o Velocidad Nominal = 2500 RPM.
o Frecuencia eléctrica nominal = 166,67 Hz.
o Voltaje Nominal (f-f) = 67,63 V.
o Potencia nominal = 7 kW.
o Corriente nominal por fase = 60,5 ARMS.
o Corriente máxima a la partida = 160 APEAK.
o Resistencia por fase = 0,03348 Ohms.
o Inductancia por fase = 0,20116 mH.
 Módulo Intellimod:
o Temperatura máxima de juntura del módulo (Tjmax) = 150°C.

Determinación de la Potencia Disipada

El primer paso en el diseño térmico es la estimación de la potencia disipada según las


condiciones de operación. Tres son los escenarios de operación. En el primero, la
máquina síncrona opera como motor para darle arranque al motor térmico por no más de
10 segundos. En el segundo caso, la máquina opera como generador. Es decir, el
inversor actuará como rectificador de frente activo. El último escenario analiza la
operación por conmutación natural. Se han utilizado los lineamientos del fabricante para
los cálculos (Powerex, 2007).

a) Operación como Motor

En los semiconductores de un inversor, las pérdidas térmicas que necesitan ser disipadas
pueden clasificarse según dos fuentes: pérdidas por conmutación y pérdidas por
conducción.
88

Figura E1: Pérdidas por conmutación y conducción en un IGBT (Powerex, 2007).

Para un inversor PWM de dos niveles la potencia disipada por cada IGBT es:

PA  PQ  PD  PSS  PSW  PDC  PRR

Donde:

PA es la pérdida total de elemento completo IGBT y diodo antiparalelo.

PQ
es la pérdida en el IGBT.

PD es la pérdida en el diodo antiparalelo.


89

PSS
es la pérdida por conducción en el IGBT.

PSW es la pérdida por conmutación en el IGBT.

PDC es la pérdida por conducción en el diodo antiparalelo.

PRR es la pérdida por recuperación en el diodo antiparalelo.

La pérdida en por conducción en el IGBT se calcula como:

1 D 
PSS  I CP  VCE ( SAT )    cos 
 8 3 

Donde:

I CP es el valor pico de la corriente sinusoidal producida por el inversor

VCE (SAT ) es la caída del voltaje en el IGBT cuando conduce

D es el ciclo de trabajo

cos  es el factor de potencia

La corriente máxima producida por el inversor en este escenario, aunque por un breve
periodo, es de 160 APEAK. Para el Intellimod, el voltaje de saturación colector-emisor es
1,6 V a 160 A.
90

En la operación como motor a una velocidad de giro baja, prácticamente no existe


BEMF (Back Electro-motive Force), por lo tanto para limitar la corriente el voltaje
aplicado por el inversor no puede superar los 10,71 V, dada la impedancia de los
enrollados de estator. El ciclo de trabajo para un inversor trifásico PWM de dos niveles
operado sin sobremodulación:

3
VMOD f  f peak  D  VDC  con 0  D  1
2

Entonces, si:

VMOD f n RMS max  10,71[V]

El ciclo de trabajo máximo será:

2
VMOD f  n RMS max  Dmax  VDC 
4
VMOD f  n RMS max 4 10,71[V ] 4
 Dmax    
VDC 2 150[V ] 2
 Dmax  0,202

De los datos de placa de corriente y voltaje, el factor de potencia es:

P 7000[W ]
cos( )  
3  VF  N  I F 3  39,05[V ]  60.5 A]
cos( )  0,9874
91

Luego, remplazando:

 1 0,202 
PSS  160  [ A]  1,6[V ]     0,9874 
8 3 
PSS  37,4[W ]

La pérdida en por conmutación en el IGBT se calcula como:

PSW  E SW ( on)  E SW ( off )   f SW


1

Los valores de pérdidas para varios niveles de corriente pico están en la hoja de datos
del Intellimod (Anexo A).

Por lo tanto, para los niveles máximos de corriente:

ESW (on)  7[mJ / Pulse]

ESW ( off )  3[mJ / Pulse]

La frecuencia de conmutación de los IGBT seleccionada es:

f SW  10 [ KHz]

Remplazando los valores:

PSW  7[mJ / Pulse ]  3[mJ / Pulse ]  10[ KHz]


1

PSW  31,83[W ]
92

Las pérdidas del diodo por conducción se calculan:

1 D 
PDC  I EP  VEC    cos 
 8 3 

Donde:

I EP es la corriente pico que circula por el diodo.

VEC es la caída de voltaje en el diodo cuando conduce.

Para este caso la corriente pico que circula por el diodo es la misma que circula por el

IGBT. El voltaje de caída VEC para una corriente de 160 A es 1,2 V. Remplazando los
valores:

 1 0,202 
PDC  160[ A]  1,2[V ]     0,9874 
8 3 
PDC  19,9[W ]

Las pérdidas por recuperación del diodo son:

PRR  0,125  I RR  t RR  VCEpeak  f SW

Donde:

I RR es la corriente pico de recuperación del diodo.


93

t RR es el tiempo de recuperación de polarización inversa.

VCEpeak
es el voltaje pico del diodo durante la recuperación.

Remplazando, tenemos:

PRR  0,125  160[ A]  0,2 E  6[ s]  1,6[V ]  10[ KHz]


PRR  0,51[W ]

Finalmente, las pérdidas térmicas totales son:

PA  PSS  PSW  PDC  PRR  37,4[W ]  31,8[W ]  19,9[W ]  0,5[W ]


PA  89,7[W ]

Considerando que tenemos seis IGBT funcionando en el módulo Intellimod:

Pmódulo  6  PA
Pmódulo  538,2[W ]

b) Operación como rectificador de frente activo

El cálculo térmico es similar al caso anterior, solamente cambian tres parámetros: la


corriente (nominal), el ciclo de trabajo y el factor de potencia. La operación de la
máquina síncrona como motor o generador depende fundamentalmente del desfase
angular entre el voltaje de la fuerza electromotriz de la máquina (Vs) y el voltaje
modulado por el inversor (Vmod).
94

Figura E2: Operación de un convertidor bidireccional con factor de potencia unitario: b)


rectificador y c) inversor (Rodríguez et al, 2005):

Tomando como referencia la FEM, cuando la máquina opera con factor de potencia
unitario, existe un desfase δ de valor negativo entre el voltaje FEM y el voltaje
modulado cuando opera como rectificador. Visto desde el punto de vista del voltaje
modulado por el inversor, el desfase con la corriente es un δ que también es el ángulo φ
del factor de potencia.

Por lo tanto, que el inversor opere como AFE con factor de potencia unitario implica:

I S  60,5 0 [ A]
67,7
VS   0 [V ]  39,09 0 [V ]
3

Considerando la impedancia del motor:

Z S  j  2  f  LS  2  166.67[ Hz]  2[mH ]  90


Z S  12,62 90
95

Se tiene que el voltaje modulado debe ser:

VMOD  VS  I S  Z S  39,09 0 [V ]  60,5 0 [ A]  12,62 90


VMOD  41,09  17,89

Ahora, tomando como referencia el voltaje modulado se tiene:

  17,89
 cos( )  0.952

Por otro lado, el ciclo de trabajo debe ser:

VMOD f  n RMS 4 41,09[V ] 4


D   
V DC 2 150[V ] 2
 D  0,775

Desarrollamos nuevamente las ecuaciones para pérdidas por conmutación y conducción.

Pérdidas por conducción en el IGBT:

1 D   1 0,775 
PSS  I CP  VCE ( SAT )    cos    60,5  2[ A]  1,3[V ]     0,952 
 8 3  8 3 
PSS  22,61[W ]
96

Pérdidas por conmutación en el IGBT:

PSW  E SW ( on)  E SW ( off )   f SW


1

PSW  2,6[mJ / Pulse]  2[mJ / Pulse ]  10[ KHz]
1

PSW  14,64[W ]

Pérdidas por conducción en el diodo:

1 D 
PDC  I EP  VEC    cos  
 8 3 
 1 0,775 
PDC  60,5  2[ A]  1,2[V ]     0,952 
8 3 
PDC  4,80[W ]

Pérdidas por recuperación del diodo:

PRR  0,125  I RR  t RR  VCEpeak  f SW


PRR  0,125  60  2[ A]  0,2 E  6[ s]  1,2[V ]  10[ KHz]
PRR  2,28[W ]

Finalmente, las pérdidas térmicas totales son:

PA  PSS  PSW  PDC  PRR  22,6[W ]  14,6[W ]  4,8[W ]  2,2[W ]


PA  44,3[W ]
97

Considerando que tenemos seis IGBT funcionando en el módulo Intellimod:

Pmódulo  6  PA
Pmódulo  266,0[W ]

c) Operación del inversor como un rectificador auto conmutado

Un tercer escenario es el uso del rectificador como un puente de Graetz, de manera que
en la etapa DC exista un chopper tipo boost funcionando como fuente de corriente para
cargar el paquete de baterías.

En este caso, las pérdidas en el inversor corresponden solo a las de conducción y


recuperación del diodo, el cual conmuta solo una vez por periodo.

Como cada diodo conduce durante la mitad del periodo, las pérdidas del diodo por
conducción serán:

1
PDC  I E  VEC 
2

La corriente que circula por el diodo es 60 A, con una caída de voltaje en el diodo
VEC

de 1,2 V. Remplazando los valores:

1
PDC  60,5[ A]  1,2[V ] 
2
PDC  36,3[W ]

Para las pérdidas por recuperación del diodo son:

PRR  0,125  I RR  t RR  VCEpeak  f SW


98

Remplazando, tenemos:

PRR  0,125  60  2[ A]  0,2 E  6[ s]  1,2[V ]  167[ Hz]


PRR  0,04[W ]

Finalmente, las pérdidas térmicas totales son:

PA  PDC  PRR  36,3[W ]  0,04[W ]


PA  36,3[W ]

Considerando que tenemos seis IGBT funcionando en el módulo Intellimod:

Pmódulo  6  PA
Pmódulo  218,0[W ]
99

Dimensionamiento del Disipador

Para este nivel de operación se requiere dimensionar un disipador. El circuito térmico se


muestra en la figura E3.

TJ TC TF TA

PIGBT θJC

PDIODO θJC

PIGBT θJC

PDIODO θJC

PIGBT θJC

PDIODO θJC

θCF θFA
PIGBT θJC

PDIODO θJC

PIGBT θJC

PDIODO θJC

PIGBT θJC

PDIODO θJC

Figura E3: Modelo térmico equivalente del inversor.


100

La temperatura máxima que soporta el módulo es 150°C pero los sistemas de protección
del módulo operan con normalidad bajo 125°C, por lo tanto:

TJmáx 125C

Asumiendo que la temperatura ambiente del habitáculo donde se ubicará el inversor,


donde también se encuentra el ICE, es:

TA  60C

 Operación como motor

La temperatura máxima carcasa de cada IGBT será:

TCQ  TJ  PQ   JQ
TCQ  125  69,3  0,2
TCQ  113,92[C ]

Por otro lado, la temperatura máxima carcasa de cada diodo será:

TCD  TJ  PD   D
TCD  125  20.4  0,3
TCD  119,9[C ]

La temperatura de carcasa máxima más baja es la del IGBT, entonces la temperatura


de juntura debe ser menor que ese valor:

TC  min(TCQ , TCD )
TC  113,9[C ]
101

Finalmente podemos calcular la resistencia térmica máxima que debe cumplir el


disipador:

(TC  TA )
 FA    CF
Pmódulo
(113,9  60)
 FA   0,023
262,07
 FA  0,0772 [C  / W ]

 Operación como AFE

La temperatura máxima carcasa de cada IGBT será:

TCQ  TJ  PQ   JQ
TCQ  125  37,27  0,2
TCQ  117,6[C ]

Por otro lado, la temperatura máxima carcasa de cada diodo será:

TCD  TJ  PD   D
TCD  125  7,1  0,3
TCD  120,5[C ]

La temperatura de carcasa máxima más baja es la del IGBT, entonces la temperatura


de juntura debe ser menor que ese valor:

TC  min(TCQ , TCD )
TC  117,6[C ]
102

Finalmente podemos calcular la resistencia térmica máxima que debe cumplir el


disipador:

(TC  T A )
 FA    CF
Pmódulo
(117,6  60)
 FA   0,023
266,0
 FA  0,1934 [C  / W ]

 Operación como Rectificador Auto-Conmutado

La temperatura máxima carcasa de cada diodo será:

TCD  TJ  PD   D
TCD  125  36,3  0,3
TCD  114,1[C ]
 TC  114,1[C ]

Finalmente podemos calcular la resistencia térmica máxima que debe cumplir el


disipador:

(TC  TA )
 FA    CF
Pmódulo
(114,1  60)
 FA   0,023
218,0
 FA  0,2251 [C  / W ]
103

Un resumen de resistencias térmicas máximas se muestra en la tabla E1.

Tabla E1: Potencias y resistencias térmicas por escenario.

Resistencia térmica
Potencia disipada
Modo de funcionamiento máxima disipador
[W]
[°C/W]
Inversor 538,18 0,0772

Rectificador frente activo 266,0 0,1934

Rectificador auto-conmutado 218,0 0,2251

Elección del Disipador

Calculada la resistencia térmica máxima que debe tener el disipador, se puede elegir el
disipador adecuado. De los disponibles con convección natural, estos presentan un gran
tamaño que dificulta su instalación en el vehículo. Finalmente se optó por utilizar un
disipador ventilado por convección forzada perteneciente a la etapa de inversión un
convertidor ABB modelo ACS1000, que fue donado por esta empresa. Las ventajas que
ofrece este disipador son:

- Su reducido volumen de 1800 cm3 (15cm x 12,5cm x 10cm).

- Un diseño de aletas que maximiza la capacidad de disipación usando ventilación


forzada y que además le entrega la robustez necesaria para utilizar el disipador
como soporte de los componentes eléctricos.

- Una inercia térmica suficiente para limitar algún incremento brusco en la


temperatura que servirá para estados excepcionales como en la partida.

Luego de realizar mediciones en el laboratorio utilizando una fuente continua de calor


implementada con una resistencia de níquel-cromo y analizando el comportamiento
104

transitorio y de régimen de la temperatura bajo la juntura se concluyó que este disipador


presenta una impedancia térmica de:

Rsa = 0,114 °C/W

Csa = 0,058 W/(°C*hora)

Si bien la resistencia térmica del disipador escogido es cerca de un 40 % mayor que la


requerida para operar como motor a 160 A en la partida, como este estado de
funcionamiento es breve y excepcional (no nominal), pues ocurre solo cuando la carga
de las baterías cae bajo un umbral, esa cantidad de energía disipada será absorbida
primero por la capacidad térmica del disipador para luego ser evacuada a la velocidad
que el disipador permite, antes de elevar la temperatura del módulo.

El ensayo se realizó una temperatura ambiente de 17 °C, alcanzándose en la juntura una


temperatura de 29 °C al disipar 210 W (valor cercano a las condiciones nominales de
operación como AFE) con un flujo de aire de 80 CFM.

CSA

ΘJS RSA
TA=17°
TS=29°

P=210W

Figura E4: modelo térmico en las pruebas del disipador usado.


105

35
Temperatura Juntura [°C]

30
25
20
15
10
5
0
0 20 40 60 80 100 120 140 160 180
Tiempo [minutos]

Figura E5: Comportamiento dinámico de la temperatura de juntura del disipador.

La ventilación forzada se realiza mediante dos ventiladores de 40 CFM cada uno, que
consumen en conjunto una potencia de 3,4 W.
106

Anexo F: Circuito de la Flaca de Control

Figura F1: Esquemático de la sección digital de la placa de control.


107

Figura F2: Esquemático de la sección analógica de la placa de control.


108

Figura F3: Diseño final de la placa de control.

Figura F4: Placa de control construida.


109

Anexo G: Modelamiento del Torque de los Pistones en Matlab.

Scope

thetha
Piston Torque
w

Cylinder 1

In1 Out1
thetha
240 ° Shift Piston Torque
Crankshaft Angle w
Add Total
Cylinder 2

In1 Out1
thetha
480 ° Shift Piston Torque
2*pi w

Angular Speed Cylinder 3

Figura G1: Modelamiento del conjunto de tres cilindros.

cos(u)

Fcn

1
thetha
1
Piston
Product 1 Torque
sin(u)
sin(u)
asin(u) Add 2 Fcn3
Fcn1
2 Product 2 Fcn2
w
0.036

Crankshaft Arm Length 1


Divide
0.1018

Connecting Rod Length

theta
R Compression Force
L
beta
Cylinder Compression

1 logic J Q

< CLK Switch


pi 0
Relational !Q
K
Piston Surface 1 Operator 1 intake and exhaust states
J-K
Flip -Flop

Figura G2: Modelamiento para un cilindro.


110

0.0073 0.2399 1.586

X0 Constante K Atmospheric Pressure

Scope 1
1 cos(u)
theta
Fcn1
Product 3
2
Add 1 1
R
Compression
3 Divide Force
L
Add 2
4 cos(u) Product 1
beta
Fcn2

Figura G2: Modelamiento de la compresión del cilindro 1.


111

Anexo H: Datos Técnicos de los Equipos

 Características Generador:
o Fabricante: Perm Motor GMBH.
o Modelo: PGS150.
o Tipo de Máquina: Síncrono de tipo disco (flujo axial) con imanes
permanentes.
o Peso: 23,4 kg.
o Pares de Polos: 4 (50 Hz a 750 RPM).
o Material Magnético: Neodimio-Fierro-Boro.
o Ventilación: Aire. 5 m/s mín.
o Clase de Aislación: F (hasta 155 °C).
o Velocidad Nominal: 2500 RPM.
o Voltaje Nominal: 67,63 Vf-f.
o Potencia nominal: 7 kW.
o Potencia Máxima: 14 kW a 6000 RPM.
o Corriente nominal: 60,5 ARMS.
o Corriente Máxima: 180 ARMS < 15 segundos.
o Torque nominal: 29,16 Nm.
o Constante de Torque: 0,482 Nm/A.
o Inercia J: 58,6 Kg/cm2.
o Resistencia U-V: 0,066963 Ohms.
o Inductancia U-V: 0,402333 mH.

 Microcontrolador:
o Fabricante: Microchip.
o Modelo: dsPIC30F4011 30I/P.
o Velocidad: 30 MIPS.
o Características: instrucciones DSP, módulos PWM, ADC 10 bits 1KHz.
112

 Características del Motor de Combustión Interna:


o Fabricante: Suzuki Maruti.
o Modelo: F8B.
o Potencia: 37 Bhp a 5000 RPM.
o Torque Máximo: 59 Nm a 2500 RPM.
o Relación de Compresión: 8.8:1.
o Sentido de Giro: Anti-horario visto desde el volante.
 Motor de Arranque:
o Tipo: Continuo tipo serie.
o Dientes del piñon: 8.
o Dientes del flywheel ring gear: 96.
o Relación de engranajes: 12.

Tabla H1: Datos del motor de arranque del motor F8B.


113

Anexo I: Código del Programa

El código implementado en el microcontrolador dsPIC30F4011 fue confeccionado de


manera modular, en el cual el archivo inversor.c contiene la rutina de entra principal. A
continuación se listan los distintos módulos del software:

 inversor.c: archivo principal que desarrolla el proceso de arranque.


 confgene.s: contiene la configuración general del circuito integrado.
 modADC.c: configura e inicializa el convertidor análogo-digital para la toma de
muestras de corriente y temperatura.
 modPWM.c: configura e inicializa la modulación por ancho de pulso que
controla los tiempos de disparo de los IGBTs.
 modUART.c: configura e inicializa el módulo de comunicación universal
asíncrono que enlaza con el controlador AES.
 controlPID.c: realiza el lazo realimentación del control PI para la fuente de
voltaje controlada por corriente.
 svpwm.c: calcula los tiempos de los ciclos de trabajo del módulo PWM para
aplicar un vector se voltaje usando un enfoque de espacio vectorial.

En las páginas siguientes de este anexo se agrega el contenido de cada uno de estos
archivos.
114

Archivo “inversor.c”:

///////////////////////////////////////////////////////////////////////////
//
//
//
// Control Sensorless de Inversor para Generador en Vehículo Híbrido
//
// Lorenzo Urrutia
// Diciembre de 2011
//
///////////////////////////////////////////////////////////////////////////

#include <p30f4011.h>
#include <confgene.h>
#include <modpwm.h>
#include <modadc.h>
#include <math.h>
#include <svpwm.h>
#include <modUART.h>
#include <uart.h>
#include "dsp.h"
#include <controlPID.h>

//Declaración de Constantes
#define ctePI (double)(3.1416)
#define FPWM (unsigned int) (10000)
#define VOLTAJE_DC (int)(51)

//Declaración de Variables
extern fractional CORRIENTE_FASEA;
extern fractional CORRIENTE_FASEB;
extern fractional CORRIENTE_FASEC;
extern fractional TEMPERATURA;
extern fractional MODULO_CORRIENTE;

unsigned int theta = 0;


unsigned int delta_theta = 0;
unsigned int frecuencia = 0;
double voltaje_norm = 0; //almacena el vtje. normalizado de referencia
double voltaje = 0; //almacena el voltaje de //referencia
fractional corriente_ref = 0; //variable que almacena la corriente de
//referencia. 0,875 = 01110000 00000000 equivale a 150[A].
unsigned int start = 0; //indicador de proceso de partida
unsigned char rbuf[4]; // Buffer para datos recibidos

//Prototipo de funciones
int posicionInicial(void);
void retardo(unsigned int microseg);
void RetardoG(unsigned int horas);
void PromCorriente(void);
void promIfaseA(void);
void histograma(void);
int detectaCuadranteI(void);
int detectaAnguloI(int);
void initInversor(void);
void fuenteVoltaje( double voltaje_aux);
115

void fuenteCorriente(fractional corriente_aux);


void fuenteFrecuencia(unsigned int frecuencia_aux);
void partida(void);
void enciendeInversor(void);
void apagaInversor(void);

//Interrupciones
//Interrupcion de Módulo PWM: Se ejecuta por cada término del Duty Cycle.
void __attribute__((interrupt, no_auto_psv)) _PWMInterrupt()
{
//Borra el flag de interrupción del término del periodo PWM
IFS2bits.PWMIF = 0;

//Actualiza el ángulo
theta = theta + delta_theta; //Actualiza el angulo en base a la
//frecuencia de referencia

//=====Control lazo abierto: fuente de voltaje ===========================


/*
//Generación del voltaje del estator

Vector_Voltaje(theta, voltaje_norm); //Aplica el vector de voltaje

*/
//=====Control lazo cerrado: fuente de corriente =========================

//Lectura de la variable controlada


MidCorriente();
//Medición de corriente

//Cálculo PID
voltaje_norm= LazoControlPI(corriente_ref, CORRIENTE_FASEA,
CORRIENTE_FASEB);

//Variable Manipulada
Vector_Voltaje(theta, voltaje_norm); //Aplica el vector de voltaje

//Envía los valores de corriente y temperatura a la interfaz UART


static unsigned int z = 0;
if(z == 5000)
{
char tempUART = (char)(TEMPERATURA >> 8);
char mod_corrienteUART = (char)(MODULO_CORRIENTE >> 8);
char corrienteUART = (char)(corriente_ref>> 8);
char Txdata[] = { 1, mod_corrienteUART, corrienteUART, tempUART};
//Espera que el puerto esté libre
while(BusyUART1());
putsUART1((unsigned int *)Txdata);
z=0;
}
z++;
}

//Interrupción por entrada de dato en módulo UART


void __attribute__((interrupt, no_auto_psv)) _U1RXInterrupt(void)
{
IFS0bits.U1RXIF = 0;
116

unsigned int i = 0;

//Lee todo el buffer de entrada de la UART1


while( DataRdyUART1())
{
rbuf[i] = ReadUART1();
i++;
}
if( rbuf[0] == '0' && rbuf [1] == '0' && rbuf[2] == '0' && rbuf [3] ==
'0')
{
apagaInversor(); //Apaga el inversor (señal de enable)
voltaje_norm = 0;
}
else if( rbuf[0] == '1' && rbuf [1] == '1' && rbuf[2] == '1' && rbuf
[3] == '1')
{
enciendeInversor(); //Enciende el inversor
}
else if( rbuf[0] == 'v' && rbuf [1] == 'l')
{
unsigned int volt_aux = (unsigned int)rbuf[2];
if(frecuencia !=0)
{
fuenteVoltaje(volt_aux); //Aplica el voltaje seleccionado
}
}
else if( rbuf[0] == 'c' && rbuf [1] == 't')
{
fractional cte_aux = (fractional)rbuf[2];
if(frecuencia !=0)
{
cte_aux = cte_aux<<7;
fuenteCorriente(cte_aux);//Aplica la corriente seleccionada
}
}
else if( rbuf[0] == 'f' && rbuf [1] == 'r')
{
unsigned int frec_aux = (unsigned int)rbuf[2];
if( frec_aux != 0) //Cuida de no aplicar un pulso permanente
{
frecuencia = frec_aux;
fuenteFrecuencia(frecuencia); //Aplica la frecuencia
//seleccionada
}
}
else if( rbuf[0] == 'm' && rbuf [1] == 'o' && rbuf[2] == 't' && rbuf
[3] == 'o') //Comienza secuencia de partida
{
start = 1;
}
//Espera que el puerto esté libre
while(BusyUART1());
char Txdata[] = {2,'O','k','\0'};
putsUART1 ((unsigned int *)Txdata);
}

int main(void)
117

{
ConfiguracionGeneral(); //Configura parámetros generales de
//funcionamiento del IC.
InitADC(); //Inicializa el módulo del conversor análogo-
//digital.
InitUART(); //Inicializa la comunicación a través del
//módulo UART
InitControlPID(); //Inicializa la librería DSP para control PID
InitPWM(); //Inicializa el módulo PWM
EnciendeADC();
retardo(65000); //Retardo para eliminar el ruido de la partida

while(1)
{
if(partida == 1)
{
partida();
start = 0;
char Txdata[] = {2,'O','k','\0'};
putsUART1 ((unsigned int *)Txdata);
}
}
return 0;
}

void partida(void)
{
//Detección del cuadrante
theta = posicionInicial();

//Arranque
initInversor(); //Inicializa los parámetros PWM del funcionamiento
//como Inversor
enciendeInversor();
//Rampa corriente-frecuencia
fuenteFrecuencia(1);
fuenteCorriente( Q15(0.275));
RetardoG(3000);
fuenteFrecuencia(2);
fuenteCorriente( Q15(0.3));
RetardoG(3000);
fuenteFrecuencia(3);
fuenteCorriente( Q15(0.3125));
RetardoG(3000);
fuenteFrecuencia(4);
fuenteCorriente( Q15(0.325));
RetardoG(3000);
fuenteFrecuencia(5);
fuenteCorriente( Q15(0.35));
RetardoG(3000);
fuenteFrecuencia(6);
fuenteCorriente( Q15(0.3625));
RetardoG(3000);
fuenteFrecuencia(7);
fuenteCorriente( Q15(0.375));
RetardoG(3000);
fuenteFrecuencia(8);
118

fuenteCorriente( Q15(0.4));
RetardoG(62000);
//Termino de proceso de arranque
apagaInversor();
}

int posicionInicial(void)
{
int cuadranteI = 0;
int teta_cero = 0;

//Detección del Cuadrante


do
{
cuadranteI = detectaCuadranteI();
}
while(cuadranteI == 0);

//Inicio al final del cuadrante


teta_cero = cuadranteI*65536/6;

return teta_cero;
}

int detectaCuadranteI(void)
{
int t_pulso = 330; //Largo de los pulsos en microsegundos.
unsigned int pausa = 200; //Largo de las pausas en microsegundos.
unsigned int muestras = 5; //Número de muestras de peaks de
//corriente.
unsigned int contador = 0;

double dif_PeakCte_fA = 0;
double dif_PeakCte_fB = 0;
double dif_PeakCte_fC = 0;
int cuadrante = 0;

//Detección del Cuadrante

EnciendeADC();

while(contador<muestras)
{
Pulso(t_pulso,'A','P');
while(PORTEbits.RE1) //Espera el fin del Pulso.
MidCorriente();
dif_PeakCte_fA = dif_PeakCte_fA + CORRIENTE_FASEA; //Variable
//que registra la corriente medida en la fase A.
while(!IFS2bits.PWMIF); //Espera que se complete el periodo de
//switching.
IFS2bits.PWMIF=0; //Limpia flag de interrupción fin periodo PWM.

RetardoG(pausa);

Pulso(t_pulso,'A','N');
while(PORTEbits.RE5); //Espera el fin del Pulso.
MidCorriente();
119

dif_PeakCte_fA = dif_PeakCte_fA + CORRIENTE_FASEA; //Variable


//que registra la corriente medida en la fase A.
while(!IFS2bits.PWMIF); //Espera que se complete el periodo de
//switching
IFS2bits.PWMIF=0; //Limpia flag de interrupción fin periodo PWM.

RetardoG(pausa);

contador++;

contador = 0;
while(contador<muestras)
{
Pulso(t_pulso,'B','P');
while(PORTEbits.RE3); //Espera el fin del Pulso.
MidCorriente();
dif_PeakCte_fB = dif_PeakCte_fB + CORRIENTE_FASEB; //Variable
//que registra la corriente medida en la fase A.
while(!IFS2bits.PWMIF); //Espera que se complete el periodo de
//switching
IFS2bits.PWMIF=0; //Limpia flag de interrupción fin periodo PWM.

RetardoG(pausa);

Pulso(t_pulso,'B','N');
while(PORTEbits.RE1); //Espera el fin del Pulso.
MidCorriente();
dif_PeakCte_fB = dif_PeakCte_fB + CORRIENTE_FASEB; //Variable
//que registra la corriente medida en la fase A.
while(!IFS2bits.PWMIF); //Espera que se complete el periodo de
//switching
IFS2bits.PWMIF=0; //Limpia flag de interrupción fin
//periodo PWM.

RetardoG(pausa);

contador++;

contador = 0;
while(contador<muestras)
{
Pulso(t_pulso,'C','P');
while(PORTEbits.RE5); //Espera el fin del Pulso.
MidCorriente();
dif_PeakCte_fC = dif_PeakCte_fC + CORRIENTE_FASEC; //Variable
//que registra la corriente medida en la fase A.
while(!IFS2bits.PWMIF); //Espera que se complete el periodo de
//switching
IFS2bits.PWMIF=0; //Limpia flag de interrupción fin periodo PWM.

RetardoG(pausa);

Pulso(t_pulso,'C','N');
while(PORTEbits.RE1); //Espera el fin del Pulso.
MidCorriente();
120

dif_PeakCte_fC = dif_PeakCte_fC + CORRIENTE_FASEC; //Variable


//que registra la corriente medida en la fase A.
while(!IFS2bits.PWMIF); //Espera que se complete el periodo de
//switching
IFS2bits.PWMIF=0; //Limpia flag de interrupción fin
//periodo PWM.

RetardoG(pausa);

contador++;

//Promedios
dif_PeakCte_fA = dif_PeakCte_fA/50;
dif_PeakCte_fB = dif_PeakCte_fB/50;
dif_PeakCte_fC = dif_PeakCte_fC/50;

//Tabla de selección de sector


if(dif_PeakCte_fA >0 && dif_PeakCte_fB >0 && dif_PeakCte_fC <0)
{
cuadrante = 1;
}
else if(dif_PeakCte_fA >0 && dif_PeakCte_fB <0 && dif_PeakCte_fC <0)
{
cuadrante = 2;
}
else if(dif_PeakCte_fA >0 && dif_PeakCte_fB <0 && dif_PeakCte_fC >0)
{
cuadrante = 3;
}
else if(dif_PeakCte_fA <0 && dif_PeakCte_fB <0 && dif_PeakCte_fC >0)
{
cuadrante = 4;
}
else if(dif_PeakCte_fA <0 && dif_PeakCte_fB >0 && dif_PeakCte_fC >0)
{
cuadrante = 5;
}
else if(dif_PeakCte_fA <0 && dif_PeakCte_fB >0 && dif_PeakCte_fC <0)
{
cuadrante = 6;
}
else
{
cuadrante = 0;
}
ApagaADC();
return cuadrante;
}

void retardo(unsigned int microseg)


//Realiza un retardo hasta 65535 instrucciones
{
unsigned int i=0;
while(i<microseg)
{
i++;
121

}
}

void RetardoG(unsigned int horas)


//Realiza un retardo hasta 65535 instrucciones
{

unsigned int i=0;


while(i<horas)
{
retardo(300);
i++;
}

void promIfaseA(void)
//Función creada para tomar 100 muestras de corriente y mostrar la
//diferencia
{
extern int CORRIENTE_FASEA;
extern int CORRIENTE_FASEB;

int t_pulso = 330; //Largo de los pulsos en


//microsegundos.
unsigned int pausa = 180; //Largo de las pausas en
//microsegundos.

unsigned int contador = 0;


double peakPosiFA = 0;
double peakNegaFA = 0;
double peakPosiFB = 0;
double peakNegaFB = 0;
double deltaPeakA = 0;
double deltaPeakB = 0;

while(contador<50)
{
EnciendeADC();
Pulso(t_pulso,'B','P');
while(PORTEbits.RE3); //Espera el fin del Pulso.
MidCorriente();
peakPosiFA = peakPosiFA + CORRIENTE_FASEA; //Variable que
//registra la corriente medida en la fase A.
peakPosiFB = peakPosiFB + CORRIENTE_FASEB;
while(!IFS2bits.PWMIF); //Espera que se complete el periodo de
//switching.
IFS2bits.PWMIF=0; //Limpia flag de interrupción fin
//periodo PWM.

RetardoG(pausa);

Pulso(t_pulso,'B','N');
while(PORTEbits.RE1); //Espera el fin del Pulso.
MidCorriente();
peakNegaFA = peakNegaFA + CORRIENTE_FASEA; //Variable
//que registra la corriente medida en la fase A.
122

peakNegaFB = peakNegaFB + CORRIENTE_FASEB;


while(!IFS2bits.PWMIF); //Espera que se complete el periodo de
//switching
IFS2bits.PWMIF=0; //Limpia flag de interrupción fin
//periodo PWM.

RetardoG(pausa);

contador++;
}

peakPosiFA = peakPosiFA/50;
peakNegaFA = peakNegaFA/50;
deltaPeakA = peakPosiFA + peakNegaFA;
peakPosiFB = peakPosiFB/50;
peakNegaFB = peakNegaFB/50;
deltaPeakB = peakPosiFB + peakNegaFB;

ApagaADC();
}

void initInversor(void) //Inicializa el inversor


{
//Configuración del módulo PWM
//Deshabilita el módulo PWM
PTCONbits.PTEN = 0;

//Ciclo de trabajo con alineación central


PTCONbits.PTMOD = 2; //10 = PWM time base operates in a
//continuous up/down counting mode

//Habilitando Interrupciones
IFS2bits.PWMIF = 0; // Borra PWM Interrupt flag
IEC2bits.PWMIE = 1; // Habilita interrupción PWM (PTER
//match cero)

//Habilita módulo PWM


PTCONbits.PTEN=1;
}

void fuenteVoltaje( double voltaje_aux)


{
unsigned int vS_max = 51; //Definición de la magnitud máxima del
//vector de voltaje de estator

//Generación de voltaje de estator


if(voltaje_aux > vS_max) //Limitador de Voltaje
{
voltaje_aux = vS_max;
}
voltaje_norm = voltaje_aux/VOLTAJE_DC; //Normaliza el voltaje
}

void fuenteCorriente( fractional corriente_aux)


{
123

fractional cS_max = Q15(0.5); //Máxima magnitud del vector de


//corriente de estator = 180 [A]

//Generación de voltaje de estator


if(corriente_aux > cS_max) //Limitador de Corriente
{
corriente_aux = cS_max;
}
corriente_ref = corriente_aux;
}

void fuenteFrecuencia(unsigned int frecuencia_aux)


{
double k = 6.5536; // 1 bit = 65536/FPWM

//Generación de la frecuencia
k = k * frecuencia_aux;
//El valor del cambio de angulo es igual a la frecuencia/FPWM
delta_theta = k ;
}

void enciendeInversor(void)
{
PTCONbits.PTEN = 1; //Habilita el módulo PWM
PORTFbits.RF0 = 1;
}

void apagaInversor(void)
{
PTCONbits.PTEN = 0; //Deshabilita el módulo PWM
PORTFbits.RF0 = 0;
}
124

Archivo “confgene.s”:

.include "p30F4011.inc"

.GLOBAL _ConfiguracionGeneral

;Configuración del oscilador


; B15:14=FSCKM1:0 1x = Clock switching is disabled, Fail-Safe Clock
Monitor is disabled
; B9:8=FOS1:0 11 = Primary Oscillator (Primary Oscillator mode
selected by FPR<3:0>)
; B3:0=FPR3:0 0111 = XT w/ PLL 16x - XT Crystal Oscillator mode
with 16x PLL enabled (4 MHz-10 MHz crystal)
config __FOSC, 0b1100001100000111

;Configuración del Watch-Dog Timer


; B15=FWDTEN 0 = Watchdog Disabled (LPRC oscillator can be
disabled by clearing the SWDTEN bit in the RCON register.)
; B5:4=FWPSA1:0 00 = 1:1 Prescale Value Selection for Watchdog Timer
Prescaler A bits
; B3:0=FWPSB3:0 0000 = 1:1 Prescale Value Selection for Watchdog
Timer Prescaler B bits
config __FWDT, 0b0000000000111111

;Configuración de BOR and POR


; B15=MCLREN MCLR Pin Function Enable bit, 1 = Pin function is
MCLR (default case)
; B10=PWMPIN Motor Control PWM Module Pin Mode, 0 = PWM module
pins controlled by PWM module at device Reset (configured as output pins).

; B9=HPOL Motor Control PWM Module High-Side Polarity, 1 = PWM


module high-side output pins have active-high output polarity.
; B8=LPOL Motor Control PWM Module Low-Side Polarity, 1 = PWM
module low-side output pins have active-high output polarity.
; B7=BOREN PBOR Enable bit 1 = PBOR Enabled 0 = PBOR
Disabled
; B5:4=BORV1:0 Brown-out Voltage Select bits, 11 = 2.0V
; B3:0=FPWRT3:0 Power-on Reset Timer Value Selection bits, 0011 =
PWRT = 4 ms
config __FBORPOR, 0b1000001110110011
.text

_ConfiguracionGeneral:

; Feature=Interrupts - Disable Interrupts during configuration

; clear int flags:

; B15=CN B14=BCL B13=I2C B12=NVM B11=AD B10=U1TX B9=U1RX B8=SPI1

; B7=T3 B6=T2 B5=OC2 B4=IC2 B3=T1 B2=OC1 B1=IC1 B0=INT0

CLR IFS0
125

; B15:12=IC6:3 B11=C1 B10=SPI2 B9=U2TX B8=U2RX

; B7=INT2 B6=T5 B5=T4 B4=OC4 B3=OC3 B2=IC8 B1=IC7 B0=INT1

CLR IFS1

; B12=FLTB B11=FLTA B10=LVD B9=DCI B8=QEI

; B7=PWM B6=C2 B5=INT4 B4=INT3 B3:0=OC8:5

CLR IFS2

CLR IEC0

CLR IEC1

CLR IEC2

; Feature=Reset - Reset configuration

; B15=TRAPR B14=IOPWR B13=BGST B12=LVDEN B11:8=LVDL3:0

; B7=EXTR B6=SWR B5=SWDTEN B4=WDTO B3=SLEEP B2=IDLE B1=BOR B0=POR

MOV #0x0003, W0
MOV W0, RCON

; Feature=Oscillator - Oscillator configuration

; method to override OSCCON write protect

; B13:12=COSC1:0 B9:8=NOSC1:0

MOV.B #0x03, W0

MOV.B #0x78, W1

MOV.B #0x9A, W2

MOV.W #OSCCON, W3

MOV.B W1, [W3+1]

MOV.B W2, [W3+1]

MOV.B W0, [W3+1]

; B7:6=POST1:0 B5=LOCK B3=CF B1=LPOSCEN B0=OSWEN

CLR.B W0

MOV.B #0x46, W1

MOV.B #0x57, W2
126

MOV.B W1, [W3+0]

MOV.B W2, [W3+0]

MOV.B W0, [W3+0]

; interrupt priorities IP

; B14:12=T1 B10:8=OC1 B6:4=IC1 B2:0=INTO

MOV #0x4444, W0
MOV W0, IPC0

; B14:12=T3 B10:8=T2 B6:4=OC2 B2:0=IC2

MOV #0x4444, W0
MOV W0, IPC1

; B14:12=AD B10:8=U1TX B6:4=U1RX B2:0=SPI1

MOV #0x4444, W0
MOV W0, IPC2

; B14:12=CN B10:8= BCLB6:4=I2C B2:0=NVM

MOV #0x4444, W0
MOV W0, IPC3

; B14:12=OC3 B10:8=IC8 B6:4=IC7 B2:0=INT1

MOV #0x4444, W0
MOV W0, IPC4

; B14:12=INT2 B10:8=T5 B6:4=T4 B2:0=OC4

MOV #0x4444, W0
MOV W0, IPC5

; B14:12=C1 B10:8=SPI2 B6:4=U2TX B2:0=U2RX

MOV #0x4444, W0
MOV W0, IPC6

; B14:12=PWM B10:8=C2 B6:4=INT4 B2:0=INT3

MOV #0x4444, W0
MOV W0, IPC9

; B14:12=FLTA B10:8=LVD B6:4=DCI B2:0=QEI

MOV #0x4044, W0
MOV W0, IPC10

; external interrupt enables

; B15=NSTDIS B10=OVATE B9=OVBTE B8=COVTE


127

; B4=MATHERR B3=ADDRERR B2=STKERR B1=OSCFAIL

CLR INTCON1

; B15=ALTIVT B4:0=INTnEP4:0

CLR INTCON2

; Feature=CPU - CPU register configuration

CLR SR

CLR SR

CLR W0

CLR W1

CLR W2

; Feature=Interrupts - enable interrupts

; feature interrupt enables IE

; B15=CN B14=BCL B13=I2C B12=NVM B11=AD B10=U1TX B9=U1RX B8=SPI1

; B7=T3 B6=T2 B5=OC2 B4=IC2 B3=T1 B2=OC1 B1=IC1 B0=INT0

CLR IEC0

; B15:12=IC6:3 B11=C1 B10=SPI2 B9=U2TX B8=U2RX

; B7=INT2 B6=T5 B5=T4 B4=OC4 B3=OC3 B2=IC8 B1=IC7 B0=INT1

CLR IEC1

; B12=FLTB B11=FLTA B10=LVD B9=DCI B8=QEI

; B7=PWM B6=C2 B5=INT4 B4=INT3 B3:0=OC8:5

CLR IEC2

return
128

Archivo “modADC.c”:

/////////////////////////////////////////////////
//
// modADC.c
// Inicializa, configura y utiliza el conversor análogo digital de 10 bits
// Lorenzo Urrutia
// Abril 2010
//
// Archivos:
// opermat.s
//
/////////////////////////////////////////////////

#include <p30f4011.h>
#include "dsp.h" //Necesario por definición de fractional
#include "libq.h"

fractional limiteTemp = 0b0100010010000000;


//Voltaje limite para temperatura 110°=3,8525[V]=0,54101[Fraccional]

fractional CORRIENTE_FASEA=0; //Variable que registra la corriente


//medida en la fase A.
fractional CORRIENTE_FASEB=0; //Variable que registra la corriente
//medida en la fase B.
fractional CORRIENTE_FASEC=0; //Variable que registra la corriente
//medida en la fase C.
fractional TEMPERATURA = 0; //Variable que registra la temperatura
//del generador.
int VOLTAJE_FASEAB=0; //Variable que registra el voltaje
//medidos entre las fases A y B.
int VOLTAJE_FASEBC=0;

void InitADC(void);
void MidCorriente(void);
void MidTemperatura(void);
void EnciendeADC(void);
void ApagaADC(void);

void InitADC(void)
{

//Configura PortB

ADCON1bits.ADON=0;//Selecciona estado del módulo. 0=Módulo ADC apagado.

TRISB=0xFFFF; //Todas entradas

ADPCFG=0xFFC0; //Las entradas AN0, AN1, AN2, AN3, AN4


//y AN5 como análogas. 0 = n analog imput pin in analog mode

//ADCON1: A/D Control Register 1


ADCON1bits.ADON=0; //Selecciona estado del módulo. 0=Módulo ADC
//apagado.
129

ADCON1bits.ADSIDL=0; //0=Módulo ADC opera en estado IDLE.

ADCON1bits.FORM=3; //Selecciona formato de salida de la


//conversión. 01=Salida en formato entero con signo. 11=Fraccional con
//signo

ADCON1bits.SSRC=7; //Selección de la fuente de disparo de la


//conversión. 111 = Internal counter ends sampling and starts conversion
//(auto convert), 000 = Clearing SAMP bit ends sampling and starts
//conversion

ADCON1bits.SIMSAM=1; //Selección de muesteo simultáneo. ADCON1bits.


//1 = Samples CH0, CH1, CH2, CH3 simultaneously (when CHPS = 1x) or Samples
//CH0 and CH1 simultaneously (when CHPS = 01)

ADCON1bits.ASAM=0; //Selección de auto partida del muestreo. 0 =


//Sampling begins when SAMP bit set.

//ADCON2: A/D Control Register 2

ADCON2bits.VCFG=3; //Configuración de los voltajes de referencia.


//011 = External VREF+ pin, External VREF- pin.

ADCON2bits.CHPS=3; //Selecciona canales utilizados. 1x = Converts


//CH0, CH1, CH2 and CH3.

ADCON2bits.SMPI=0; //Configura el tipo de interrupción. 0000 =


//Interrupts at the completion of conversion for each sample/convert
//sequence.

ADCON2bits.BUFM=0; //Modo del Buffer. 0 = Buffer configured as


//one 16-word buffer ADCBUF(15...0.).

//ADCON3: A/D Control Register 3

ADCON3bits.SAMC=5; //Tiempo de adquisición antes de iniciar la


//conversión. 10= 2 Tad

ADCON3bits.ADRC=0; //Fuente de Clock para la conversión A/D. 0 =


//Clock derived from system clock, 1 = RC internal oscillator

ADCON3bits.ADCS=4; //Selecciona tipo de Clock para la conversión


//A/D. 000000 = TCY/2 • (ADCS<5:0> + 1) = TCY/2

//ADCHS: A/D Input Select Register

ADCHSbits.CH123SA=1; //Channel 1, 2, 3 Positive Input Select for


//MUX A Multiplexer Setting bits. 1 = CH1 positive input is AN3, CH2
//positive input is AN4, CH3 positive input is AN5

ADCHSbits.CH123NA=0; //Channel 1, 2, 3 Negative Input Select for


//MUX A Multiplexer Setting bits. 0x = CH1, CH2, CH3 negative input is
//VREFbit

ADCHSbits.CH0SA=2; //Channel 0 Positive Input Select for MUX A


//Multiplexer Setting bits. Channel 0 positive input is AN2

ADCHSbits.CH0NA=0; //Channel 0 Negative Input Select for MUX A


//Multiplexer Setting bit. 0 = Channel 0 negative input is VREF.
130

//ADCSSL: A/D Input Scan Select Register


ADCSSL=0; //Selecciona desde AN0 hasta AN3. 0 = Skip ANx
//for input scan.
}

void MidCorriente()
{
ADCON1bits.SAMP=1; //Inicia la adquisición

while(!ADCON1bits.DONE); //Espera a que termine la conversión

ADCON1bits.DONE=0;

CORRIENTE_FASEA=ADCBUF0; //Lectura de AN2 = Pin 4


CORRIENTE_FASEB=ADCBUF1; //Lectura de AN3 = Pin 5
TEMPERATURA=ADCBUF2; //Lectura de AN4 = Pin 6

//Ajuste de Voltajes del LEM


fractional ajusteA = 0b0000000110000000;
fractional ajusteB = 0b0000000110000000;

CORRIENTE_FASEA=_Q15sub( CORRIENTE_FASEA, ajusteA); //Sintonización del


//valor real de corriente
CORRIENTE_FASEB=_Q15sub( CORRIENTE_FASEB, ajusteB); //Sintonización del
//valor real de corriente

//Código para módulo con referencias de voltaje externas

// CORRIENTE_FASEA=CORRIENTE_FASEA-7; //Sintonización del valor real de


//corriente
// CORRIENTE_FASEA=CORRIENTE_FASEA>>1; //Escalamiento de valores

// CORRIENTE_FASEB=CORRIENTE_FASEB-4; //Sintonización del valor real de


//corriente
// CORRIENTE_FASEB=CORRIENTE_FASEB>>1; //Escalamiento de valores

// CORRIENTE_FASEC=-CORRIENTE_FASEA-CORRIENTE_FASEB;

// VOLTAJE_FASEAB=ADCBUF2; //Lectura de AN4 = Pin 6


// VOLTAJE_FASEBC=ADCBUF3; //Lectura de AN5 = Pin 7
}

void MidTemperatura(void) //Protección de sobre-temperatura


{
if(TEMPERATURA>limiteTemp)
{
PORTFbits.RF0=0; //Apaga el inversor (señal de enable)
}
}

void EnciendeADC(void)
{
ADCON1bits.ADON=1; //Enciende el módulo ADC.
}

void ApagaADC(void)
{
ADCON1bits.ADON=0; //Apaga el módulo ADC.
}
131

Archivo “modPWM.c”:

/////////////////////////////////////////////////
// modPWM.c
// Inicializa, configura y utiliza el módulo PWM
// Lorenzo Urrutia
// Enero 2010
//
// Archivos:
// opermat.s
//
// Funciones:
// InitPWM
// Pulso
// Sinusoide
// OndaCuadrada
//
//
/////////////////////////////////////////////////

#include <p30f4011.h>

#define FCY 29491200 // Frecuencia de intrucciones del dsPIC = 30 MIPS.


#define FPWM 10000 // Frecuencia de conmutación de los IGBT = 10 kHz.

//Declaracion de Prototipos de funciones


void InitPWM(void);
void Sinusoide(unsigned int voltS, unsigned int frecS);
void Pulso (unsigned int largo, unsigned char fase, unsigned char signo);
void OndaCuadrada (unsigned int ciclotrab);

void InitPWM(void)
{

//////////////////////////////
//Configuración del Módulo PWM
//////////////////////////////

// Preparación

//Configura PortF
//Configuración del bit0 del PortF para la señal de Enable del Inversor
PORTF=0;
TRISF=0xFFFE;

//Deshabilita el inversor

PORTFbits.RF0=0; //Deshabilita el inversor (señal de enable)

//PTCON: PWM Time Base Control register


132

PTCON=0; // Desabilitado durante la inicialización.

//PTMR: PWM Time Base register

PTMR=0; // Desabilitado durante la inicialización.

//PTPER: PWM Time Base Period register

PTPER=0x0001; // Desabilitado durante la inicialización.

//SEVTCMP: PWM Special Event Compare register

SEVTCMP=0; // Desabilitado durante la inicialización.

//Inicialización

//PWMCON1: PWM Control register #1

PWMCON1bits.PMOD3=1; // 0= Selecciona las


//salidas PWM3 independientes, 1= complementarias.
PWMCON1bits.PMOD2=1; // 0= Selecciona las
//salidas PWM3 independientes, 1= complementarias.
PWMCON1bits.PMOD1=1; // 0= Selecciona las
//salidas PWM3 independientes, 1= complementarias.

PWMCON1bits.PEN3H=1; //Habilita la salida PWM3H.


PWMCON1bits.PEN2H=1; //Habilita la salida PWM2H.
PWMCON1bits.PEN1H=1; //Habilita la salida PWM1H.

PWMCON1bits.PEN3L=0; //Desabilita la salida PWM3L.


PWMCON1bits.PEN2L=0; //Desabilita la salida PWM3L.
PWMCON1bits.PEN1L=0; //Desabilita la salida PWM3L.

//PWMCON2: PWM Control register #2


/*
bit 11-8 SEVOPS<3:0>: PWM Special Event Trigger Output Postscale Select
bits
1111 = 1:16 Postscale
0001 = 1:2 Postscale
0000 = 1:1 Postscale
bit 2 IUE: Immediate Update Enable bit
1 = Updates to the active PDC registers are immediate
0 = Updates to the active PDC registers are synchronized to the PWM time
base
bit 1 OSYNC: Output Override Synchronization bit
1 = Output overrides via the OVDCON register are synchronized to the PWM
time base
0 = Output overrides via the OVDCON register occur on next TCY boundary
bit 0 UDIS: PWM Update Disable bit //Bloqueo de
actualizaciones
1 = Updates from duty cycle and period buffer registers are disabled
0 = Updates from duty cycle and period buffer registers are enabled
*/
133

PWMCON2=0;
PWMCON2bits.OSYNC=0;
PWMCON2bits.UDIS=0;

//DTCON1: Dead Time Control Register 1

DTCON1=0; //No implementado. Tiempos muertos por hardware externo

//FLTACON: Fault A Control Register


FLTACON=0; //No implementado.

//OVDCON: Override Control Register


/*
bit 15-8 POVD4H-POVD1L: PWM Output Override bits
1 = Output on PWMxx I/O pin is controlled by the PWM generator
0 = Output on PWMxx I/O pin is controlled by the value in the corresponding
POUTxx bit
bit 7-0 POUT4H-POUT1L: PWM Manual Output bits
1 = PWMxx I/O pin is driven ACTIVE when the corresponding POVDxx bit is
cleared
0 = PWMxx I/O pin is driven INACTIVE when the corresponding POVDxx bit is
cleared
*/

OVDCON=0b0011111100000000; //Salidas PWM controladas por módulo PWM

//Duty Cycles

PDC1=0;
PDC2=0;
PDC3=0;

//Periodo de conmutación

PTPER =(FCY/FPWM-1)>>1; //Periodo de conmutación con alineación al


//centro. 3000 intrucciones = 1 ciclo a 10 KHZ (100uS)

void Sinusoide(unsigned int voltS, unsigned int frecS)


{

//Deshabilita el módulo PWM

PTCONbits.PTEN=0;

//Ciclo de trabajo con alineación central

PTCONbits.PTMOD = 2; //10 = PWM time base operates in a continuous


//up/down counting mode

//Habilitando Interrupciones
134

IFS2bits.PWMIF = 0; // Borra PWM Interrupt flag


IEC2bits.PWMIE = 1; // Habilita interrupción PWM (PTER match cero)

//Habilita módulo PWM

PTCONbits.PTEN=1;

int m=0;
while(m<2)
{
m++;
}

void Pulso (unsigned int largo, unsigned char fase, unsigned char signo)
{

//Deshabilita el módulo PWM


PTCONbits.PTEN=0;

//Deshabilitando Interrupciones

IEC2bits.PWMIE = 0; // Deshabilita interrupción PWM (PTER match cero)

//Ciclo de trabajo con alineación en flanco subida

PTCONbits.PTMOD = 1; //01 = PWM time base operates in a Single


//Event PWM Operation mode

//Periodo de conmutación

PTPER=(FCY/1000-1); //Periodo de conmutación con alineación al


//centro. 3000 instrucciones = 1 ciclo a 10 KHZ (100uS)

//Aplica el largo del pulso

switch (fase)
{
case 'A':
switch (signo)
{
case 'P':
PDC1=largo*60;
PDC2=0;
PDC3=0;
break;
case 'N':
PDC1=0;
PDC2=largo*60;
PDC3=largo*60;
break;
}
;
break;
135

case 'B':
switch (signo)
{
case 'P':
PDC1=0;
PDC2=largo*60;
PDC3=0;
break;
case 'N':
PDC1=largo*60;
PDC2=0;
PDC3=largo*60;
break;
}
;
break;

case 'C':
switch (signo)
{
case 'P':
PDC1=0;
PDC2=0;
PDC3=largo*60;
break;
case 'N':
PDC1=largo*60;
PDC2=largo*60;
PDC3=0;
break;
}
;
break;

default :
PDC1=0;
PDC2=0;
PDC3=0;
break;
}

//Habilita módulo PWM

PTCONbits.PTEN=1;

//Habilita el inversor

PORTFbits.RF0=1; //Habilita el inversor (señal de enable)

}
136

Archivo “modUART.c”:

/////////////////////////////////////////////////
// modUART.c
// Configura la comunicación serie asíncrona universal.
// Aprovecha las funciones disponibles en uart.h
//
// Lorenzo Urrutia
// Enero 2011
//
/////////////////////////////////////////////////

#include <p30f4011.h>
#include <uart.h>

void InitUART(void)
{
//Configura PortC
PORTC=0;
TRISC=0xDFFF; // bit0 del PortF para Enable del Inversor

//Deshabilita el inversor
PORTFbits.RF0=0;

//Variables para confuguración de UART1


unsigned int baudvalue;
unsigned int U1MODEvalue;
unsigned int U1STAvalue;

//Cierra el módulo UART


CloseUART1();

//Configura las interrupciones para Rx y Tx


ConfigIntUART1(UART_RX_INT_EN & UART_RX_INT_PR6 &
UART_TX_INT_DIS & UART_TX_INT_PR2);

// Configura UART1 para: 8 bit,


baudvalue = 191; //Baud Rate = FCY/(16 * (BRG + 1)); BRG == baudvalue
U1MODEvalue = UART_EN & UART_IDLE_CON &
UART_DIS_WAKE & UART_DIS_LOOPBACK &
UART_DIS_ABAUD & UART_NO_PAR_8BIT &
UART_1STOPBIT;
U1STAvalue = UART_INT_TX_BUF_EMPTY &
UART_TX_PIN_NORMAL &
UART_TX_ENABLE & UART_INT_TX_BUF_EMPTY &
UART_ADR_DETECT_DIS &
UART_RX_OVERRUN_CLEAR;
OpenUART1(U1MODEvalue, U1STAvalue, baudvalue);

char Txdata[] = {2,'H','o','l','a','\0'}; // '2' indica envío de string


putsUART1 ((unsigned int *)Txdata);

//Espera al final de la transmisión


while(BusyUART1());
}
137

Archivo “controlPID.c”:

///////////////////////////////////////////////////////////////////////////
//
// controlPID.c
// Calcula el lazo de control PID de corriente.
//
// Lorenzo Urrutia
// Agosto 2011
//
//
//
///////////////////////////////////////////////////////////////////////////

#include <p30f4011.h>
#include "dsp.h" //Librería DSP
#include "libq.h" //Librería punto fijo

fractional MODULO_CORRIENTE;

//Declaración de una estructura de datos para las funciones de control de


//la librería dsp.h
tPID estructuraPID;

//Variables para punteros a coeficientes de estructuraPID ubicados en el


//espacio X y punteros a variables
// de estado ubicados en el espacio Y del microcontrolador
fractional abcCoefficient[3] __attribute__ ((section (".xbss, bss,
xmemory")));
fractional controlHistory[3] __attribute__ ((section (".ybss, bss,
ymemory")));

//Coeficientes [Kp,Ki,Kd] del control PI


fractional coeficientesPID[] = {0,0,0};

//estructuraPID.controlOuput = &controlOuput;

//Prototipos de funciones
void InitControlPID(void);
double LazoControlPI(fractional referencia_aux, fractional
corrienteMedidaA, fractional corrienteMedidaB);

void InitControlPID(void)
{
estructuraPID.abcCoefficients = &abcCoefficient[0]; //asigna las
//direcciones de memoria a los punteros de la estructura tPID
estructuraPID.controlHistory = &controlHistory[0];

PIDInit(&estructuraPID);

coeficientesPID[0] = Q15(0.99);
coeficientesPID[1] = Q15(0.3);
138

coeficientesPID[2] = Q15(0.0);
PIDCoeffCalc(&coeficientesPID[0], &estructuraPID);
}

double LazoControlPI(fractional referencia_aux, fractional


corrienteMedidaA, fractional corrienteMedidaB)
{
//Multiplicación con DSP
register int resultadoMult asm("A"); //Variable a registro Acumulador
resultadoMult = __builtin_clr(); //Limpiar acumulador

//Procesamiento de las corrientes


volatile fractional x = corrienteMedidaA;
volatile fractional y = corrienteMedidaB;
volatile fractional d = Q15(0.33333);
fractional modulo_corriente;

// (4/3*(x^2+y^2+x*y))^0,5
resultadoMult = __builtin_mac(resultadoMult, x, x, NULL, NULL, 0, NULL,
NULL, 0, 0, resultadoMult);
resultadoMult = __builtin_mac(resultadoMult, y, y, NULL, NULL, 0, NULL,
NULL, 0, 0, resultadoMult);
resultadoMult = __builtin_mac(resultadoMult, x, y, NULL, NULL, 0, NULL,
NULL, 0, 0, resultadoMult);
x = __builtin_sac(resultadoMult,0); //Devuelve el resultado del
//acumulador
resultadoMult = __builtin_mpy(x, d, NULL, NULL, 0, NULL, NULL, 0);
modulo_corriente = __builtin_sac(resultadoMult,0); //Devuelve el
//resultado del acumulador
modulo_corriente = _Q15sqrt(modulo_corriente);
modulo_corriente = modulo_corriente << 1; // *(4^0.5)

//Actualización del valor visible del módulo de la corriente


MODULO_CORRIENTE = modulo_corriente;
//Variables de entrada
estructuraPID.controlReference = referencia_aux;
estructuraPID.measuredOutput = modulo_corriente;

//Variables de salida
PID(&estructuraPID);
fractional corrienteOut = estructuraPID.controlOutput;
double voltajeOut = (double)_itofQ15(corrienteOut);

if(voltajeOut > 1)
{
voltajeOut = 1;
}

return voltajeOut;
}
139

Archivo “svpwm.c”:

/////////////////////////////////////////////////
// svpwm.c
// Aplica el vector de voltaje de estator en base al ángulo y
// magnitud dados.
//
// Lorenzo Urrutia
// Junio 2010
//
// Observaciones:
// voltaje_S debe estar entre 0 y 1
// theta debe estar entre 0 y 65536 para una vuelta
//
/////////////////////////////////////////////////

#include <p30f4011.h>
#include <math.h>
#include <svpwm.h>

#define FCY 29491200 // Frecuencia de intrucciones del dsPIC = 30 MIPS.


#define FPWM 10000 // Frecuencia de conmutación de los IGBT = 10 kHz.
#define PTPER (unsigned int)((FCY/FPWM-1)>>1)
#define t_ciclo (unsigned int)((PTPER - 2) << 1)
#define sesentaG (unsigned int)(1024)
#define cientoveinteG (unsigned int)(2048)
#define cientoochentaG (unsigned int)(3072)
#define doscuarentaG (unsigned int)(4096)
#define trescientosG (unsigned int)(5120)

unsigned int t1 = 0;
unsigned int t2 = 0;
unsigned int mitad_t0 = 0;

const unsigned int coseno [1025] =


{
2546,2544,2543,2541,2540,2538,2537,2535,2534,2532,2530,2529,2527,2526,2524,
2523,2521,2520,2518,2517,2515,2513,2512,2510,2509,2507,2506,2504,2502,2501,
2499,2498,2496,2495,2493,2491,2490,2488,2487,2485,2483,2482,2480,2479,2477,
2475,2474,2472,2470,2469,2467,2466,2464,2462,2461,2459,2457,2456,2454,2452,
2451,2449,2447,2446,2444,2442,2441,2439,2437,2436,2434,2432,2431,2429,2427,
2425,2424,2422,2420,2419,2417,2415,2414,2412,2410,2408,2407,2405,2403,2401,
2400,2398,2396,2395,2393,2391,2389,2388,2386,2384,2382,2380,2379,2377,2375,
2373,2372,2370,2368,2366,2365,2363,2361,2359,2357,2356,2354,2352,2350,2348,
2347,2345,2343,2341,2339,2337,2336,2334,2332,2330,2328,2326,2325,2323,2321,
2319,2317,2315,2314,2312,2310,2308,2306,2304,2302,2300,2299,2297,2295,2293,
2291,2289,2287,2285,2284,2282,2280,2278,2276,2274,2272,2270,2268,2266,2265,
2263,2261,2259,2257,2255,2253,2251,2249,2247,2245,2243,2241,2239,2237,2235,
2234,2232,2230,2228,2226,2224,2222,2220,2218,2216,2214,2212,2210,2208,2206,
2204,2202,2200,2198,2196,2194,2192,2190,2188,2186,2184,2182,2180,2178,2176,
2174,2172,2170,2168,2166,2164,2162,2160,2158,2156,2154,2151,2149,2147,2145,
2143,2141,2139,2137,2135,2133,2131,2129,2127,2125,2123,2120,2118,2116,2114,
2112,2110,2108,2106,2104,2102,2100,2097,2095,2093,2091,2089,2087,2085,2083,
2081,2078,2076,2074,2072,2070,2068,2066,2063,2061,2059,2057,2055,2053,2051,
2048,2046,2044,2042,2040,2038,2035,2033,2031,2029,2027,2025,2022,2020,2018,
140

2016,2014,2011,2009,2007,2005,2003,2000,1998,1996,1994,1992,1989,1987,1985,
1983,1981,1978,1976,1974,1972,1969,1967,1965,1963,1960,1958,1956,1954,1952,
1949,1947,1945,1942,1940,1938,1936,1933,1931,1929,1927,1924,1922,1920,1918,
1915,1913,1911,1908,1906,1904,1902,1899,1897,1895,1892,1890,1888,1885,1883,
1881,1879,1876,1874,1872,1869,1867,1865,1862,1860,1858,1855,1853,1851,1848,
1846,1844,1841,1839,1837,1834,1832,1830,1827,1825,1822,1820,1818,1815,1813,
1811,1808,1806,1804,1801,1799,1796,1794,1792,1789,1787,1784,1782,1780,1777,
1775,1773,1770,1768,1765,1763,1761,1758,1756,1753,1751,1748,1746,1744,1741,
1739,1736,1734,1731,1729,1727,1724,1722,1719,1717,1714,1712,1710,1707,1705,
1702,1700,1697,1695,1692,1690,1687,1685,1683,1680,1678,1675,1673,1670,1668,
1665,1663,1660,1658,1655,1653,1650,1648,1645,1643,1640,1638,1635,1633,1630,
1628,1625,1623,1620,1618,1615,1613,1610,1608,1605,1603,1600,1598,1595,1593,
1590,1588,1585,1583,1580,1577,1575,1572,1570,1567,1565,1562,1560,1557,1555,
1552,1549,1547,1544,1542,1539,1537,1534,1532,1529,1526,1524,1521,1519,1516,
1514,1511,1508,1506,1503,1501,1498,1495,1493,1490,1488,1485,1482,1480,1477,
1475,1472,1470,1467,1464,1462,1459,1456,1454,1451,1449,1446,1443,1441,1438,
1436,1433,1430,1428,1425,1422,1420,1417,1414,1412,1409,1407,1404,1401,1399,
1396,1393,1391,1388,1385,1383,1380,1377,1375,1372,1369,1367,1364,1361,1359,
1356,1353,1351,1348,1345,1343,1340,1337,1335,1332,1329,1327,1324,1321,1319,
1316,1313,1311,1308,1305,1303,1300,1297,1294,1292,1289,1286,1284,1281,1278,
1276,1273,1270,1267,1265,1262,1259,1257,1254,1251,1248,1246,1243,1240,1237,
1235,1232,1229,1227,1224,1221,1218,1216,1213,1210,1207,1205,1202,1199,1196,
1194,1191,1188,1185,1183,1180,1177,1174,1172,1169,1166,1163,1161,1158,1155,
1152,1150,1147,1144,1141,1138,1136,1133,1130,1127,1125,1122,1119,1116,1113,
1111,1108,1105,1102,1100,1097,1094,1091,1088,1086,1083,1080,1077,1074,1072,
1069,1066,1063,1060,1058,1055,1052,1049,1046,1044,1041,1038,1035,1032,1029,
1027,1024,1021,1018,1015,1013,1010,1007,1004,1001,998,996,993,990,987,984,9
81,979,976,973,970,967,964,962,959,956,953,950,947,945,942,939,936,933,930,
927,925,922,919,916,913,910,907,905,902,899,896,893,890,887,885,882,879,876
,873,870,867,864,862,859,856,853,850,847,844,841,839,836,833,830,827,824,82
1,818,815,813,810,807,804,801,798,795,792,789,787,784,781,778,775,772,769,7
66,763,760,758,755,752,749,746,743,740,737,734,731,728,726,723,720,717,714,
711,708,705,702,699,696,693,691,688,685,682,679,676,673,670,667,664,661,658
,655,652,650,647,644,641,638,635,632,629,626,623,620,617,614,611,608,605,60
3,600,597,594,591,588,585,582,579,576,573,570,567,564,561,558,555,552,549,5
47,544,541,538,535,532,529,526,523,520,517,514,511,508,505,502,499,496,493,
490,487,484,481,478,475,472,470,467,464,461,458,455,452,449,446,443,440,437
,434,431,428,425,422,419,416,413,410,407,404,401,398,395,392,389,386,383,38
0,377,374,371,368,365,362,359,356,353,350,347,344,341,338,336,333,330,327,3
24,321,318,315,312,309,306,303,300,297,294,291,288,285,282,279,276,273,270,
267,264,261,258,255,252,249,246,243,240,237,234,231,228,225,222,219,216,213
,210,207,204,201,198,195,192,189,186,183,180,177,174,171,168,165,162,159,15
6,153,150,147,144,141,138,135,132,129,126,123,120,117,114,111,108,105,102,
99,96,93,90,87,84,81,78,75,72,69,66,63,60,57,54,51,48,45,42,39,36,33,30,27,
24,21,18,15,12,9,6,3,0};

void Vector_Voltaje(unsigned int theta, double voltaje_S)


{
//Transformación de radianes a valores de tabla (1024*6 = 60° * 6 = 360°).
theta = theta/32;
theta = theta*3; //Transforma los grados multiplicando por K = 3/32;

//Separación de sectores
//Sector I
if(theta < sesentaG)
{
t1 = coseno[theta];
theta = sesentaG - theta;
t2 = coseno[theta];
141

//Escalando los valores con respecto al voltaje de estator requerido


t1 = t1*voltaje_S;
t2 = t2*voltaje_S;
mitad_t0 = t_ciclo-t1-t2;
mitad_t0 = mitad_t0>>1;

PWMCON2bits.UDIS=1;
PDC1 = t1+t2+mitad_t0;
PDC2 = t2+mitad_t0;
PDC3 = mitad_t0;
PWMCON2bits.UDIS=0;
}
//Sector II
else if(theta < cientoveinteG)
{
theta = theta - sesentaG;
t1 = coseno[theta];
theta = sesentaG - theta;
t2 = coseno[theta];

//Escalando los valores con respecto al voltaje de estator requerido


t1 = t1*voltaje_S;
t2 = t2*voltaje_S;
mitad_t0 = t_ciclo-t1-t2;
mitad_t0 = mitad_t0>>1;

PWMCON2bits.UDIS=1;
PDC1 = t1 + mitad_t0;
PDC2 = t1 + t2 + mitad_t0;
PDC3 = mitad_t0;
PWMCON2bits.UDIS=0;
}
//Sector III
else if(theta < cientoochentaG)
{
theta = theta - cientoveinteG;
t1 = coseno[theta];
theta = sesentaG - theta;
t2 = coseno[theta];

//Escalando los valores con respecto al voltaje de estator requerido


t1 = t1*voltaje_S;
t2 = t2*voltaje_S;

mitad_t0 = t_ciclo-t1-t2;
mitad_t0 = mitad_t0>>1;

PWMCON2bits.UDIS=1;
PDC1 = mitad_t0;
PDC2 = t1 + t2 + mitad_t0;
PDC3 = t2 + mitad_t0;
PWMCON2bits.UDIS=0;
}
//Sector IV
else if(theta < doscuarentaG)
{
theta = theta - cientoochentaG;
t1 = coseno[theta];
142

theta = sesentaG - theta;


t2 = coseno[theta];

//Escalando los valores con respecto al voltaje de estator requerido


t1 = t1*voltaje_S;
t2 = t2*voltaje_S;

mitad_t0 = t_ciclo-t1-t2;
mitad_t0 = mitad_t0>>1;

PWMCON2bits.UDIS=1;
PDC1 = mitad_t0;
PDC2 = t1 + mitad_t0;
PDC3 = t1 + t2 + mitad_t0;
PWMCON2bits.UDIS=0;
}
//Sector V
else if(theta < trescientosG)
{
theta = theta - doscuarentaG;
t1 = coseno[theta];
theta = sesentaG - theta;
t2 = coseno[theta];

//Escalando los valores con respecto al voltaje de estator requerido


t1 = t1*voltaje_S;
t2 = t2*voltaje_S;

mitad_t0 = t_ciclo-t1-t2;
mitad_t0 = mitad_t0>>1;

PWMCON2bits.UDIS=1;
PDC1 = t2 + mitad_t0;
PDC2 = mitad_t0;
PDC3 = t1 + t2 + mitad_t0;
PWMCON2bits.UDIS=0;
}
//Sector VI
else
{
theta = theta - trescientosG;
t1 = coseno[theta];
theta = sesentaG - theta;
t2 = coseno[theta];

//Escalando los valores con respecto al voltaje de estator requerido


t1 = t1*voltaje_S;
t2 = t2*voltaje_S;

mitad_t0 = t_ciclo-t1-t2;
mitad_t0 = mitad_t0>>1;

PWMCON2bits.UDIS=1;
PDC1 = t1 + t2 + mitad_t0;
PDC2 = mitad_t0;
PDC3 = t1 + mitad_t0;
PWMCON2bits.UDIS=0;
}
}
143

You might also like