SlideShare una empresa de Scribd logo
1 de 15
Descargar para leer sin conexión
UNIVERSIDAD TÉCNICA FEDERICO SANTA MARÍA
DEPARTAMENTO DE ELECTRÓNICA

Laboratorio de Electrónica Industrial
INFORME FINAL
“Modulación por ancho de pulsos
pulsos”

Experiencia
Grupo
Fecha

6

Lautaro Narvaez P.

8

Juan Vargas H.

05/10/2010

Revisado por

Nota
Laboratorio de Electrónica Industrial, Segundo Semestre 2010

INTRODUCCIÓN Y OBJETIVOS
Actualmente se encuentran varias posibilidades a la hora de implementar algoritmos de control,
principalmente micro controladores y plataformas como FPGA y DSP (Procesador Digital de
Señales). Cada uno de estos dispositivos posee características diferentes, las cuales permiten
discernir en su elección dependiendo de la aplicación en que se desee utilizar.
En esta experiencia se programa un DSP Texas Instruments TMS320F2407 montado sobre la
tarjeta de desarrollo eZdsp2407b, con el fin de controlar un inversor trifásico, el que a su vez,
alimenta un motor. Existen varias tipos de modulación de convertidores: Con portadora,
vectorial, eliminación selectiva de armónicas, etc. En particular, se trabajará la modulación con
portadora, que es la más utilizada en convertidores industriales.
A través del DSP se generan las señales de disparo (señales PWM) del inversor. Para ello se debe
configurar los módulos adecuados, seteando los registros y habilitando interrupciones. También
se busca poder controlar la velocidad de giro del motor de forma análoga, lo que se logra
habilitando un ADC del dispositivo.

1.

INFORME FINAL

En las siguientes secciones se detalla el desarrollo de la experiencia. Se incluyen las imágenes
más representativas, además de comentarios y conclusiones relevantes. Debido a un problema
con el almacenamiento de las capturas del osciloscopio, se debió utilizar las imágenes obtenidas
de otro grupo en la primera parte (generación de señales PWM).

1.1

Instrucciones DSP

El primer paso para la generación de señales PWM es el correcto seteo de los registros más
importantes. Para ello, se hace uso del material adecuado, como la documentación y archivos
disponibles en la web del ramo.
En el preinforme de la experiencia se nombraron y detallaron algunos registros, además de los
valores que debían adoptar sus bits. Dentro de la serie de archivos de la web, se encuentran tres
principales: main.c, interr.c y init.c. Para la primera parte, se setean los registros T1PR, ACTRA,
COMCONA, T1CON y DBTCONA, los cuales se ubican en init.c.
Cabe destacar que el oscilador del DSP utilizado es de 14.7456MHz, pero la CPU interna debe
considerarse del doble de esta frecuencia, 29.4912MHz. Luego, para poder configurar los
registros como si el reloj fuese el de 14M, se debe hacer un escalamiento x/2, el cual se realiza en
T1CON.

1
Laboratorio de Electrónica Industrial, Segundo Semestre 2010

El registro T1PR guarda el valor límite de la cuenta del reloj, según la frecuencia que se requiera.
En este caso, se pide tener una frecuencia aproximada de 3[kHz]. Considerando el
preescalamiento x/2 se tiene (según lo obtenido en el preinforme)
T 1PR =

T
14.7456 M
=
= 2458 ⇔ 0 x099 A
2 ⋅ Tclock
2 ⋅ 3K

Las siguientes tablas muestran los valores de cada registro con una breve explicación de la
función de los bits más relevantes. El símbolo * indica que no es necesario setear el(los) bit en
cuestión, pudiéndose asignar indistintamente 0 o 1.

Tabla 1. ACTRA = 0xF666
bit
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0

valor
1
1
1
1
0
1
1
0
0
1
1
0
0
1
1
0

Función

*Uso en PWM Vectorial

Salida activa baja de CMP6
Salida activa alta de CMP5
Salida activa baja de CMP4
Salida activa alta de CMP3
Salida activa baja de CMP2
Salida activa alta de CMP1

El registro ACTRA establece las acciones de control para el registro de comparación. Permite la
definición de las señales PWM y sus cuasi-complementos.

COMCONA es el registro que controla las unidades de comparación (para el gestor de eventos
EVA).

2
Laboratorio de Electrónica Industrial, Segundo Semestre 2010

Tabla 2. COMCONA = 0xA6FF
bit
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0

valor
1
0
1
0
0
1
1
0
1
1
1
1
1
1
1
1

Función
Comparador Habilitado
El registro de comparación CMPRx se recarga
cuando T1CNT = 0 ó T1CNT = T1PR
PWM vectorial deshabilitada
El registro de acción de control se recarga
cuando T1CNT = 0 ó T1CNT = T1PR
Salida del comparador activada
*Reservado

*Reservados

Tabla 3. T1CON = 0x0946
bit
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1

valor
0
0
0
0
1
0
0
1
0
1
0
0
0
1
1

Función
*Free
*Reservados
Modo de conteo: Up/Down Continuo
Preescala reloj de entrada: x/2
T2SWT1
Timer 1 habilitado
Selección de la fuente de reloj: Interno
El registro se recarga cuando el valor del
contador es 0 o igual a T1PR
Comparador habilitado
3
Laboratorio de Electrónica Industrial, Segundo Semestre 2010

0

0

SELT1PR

En T1CON los bits 9-8 son muy importantes ya que definen la base del reloj. Es necesario una
correcta y consecuente elección, de modo que T1PR pueda elegirse para lograr los 3kHz, tal y
como se hizo.
Tabla 4. DBTCONA = 0xFFEB
bit
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0

valor
1
1
1
1
1
1
1
1
1
1
1
0
1
0
1
1

Función

*Reservados

Periodo de la banda muerta (M=15)

Banda muerta para PWM5 y PWM6 habilitada
Banda muerta para PWM3 y PWM4 habilitada
Banda muerta para PWM1 y PWM2 habilitada
Preescala de la banda muerta (P=4)

*Reservados

Como se explicó en el preinforme, la implementación de un tiempo o banda muerta es muy
importante para evitar cortocircuitar la fuente de alimentación mientras conmutan los
semiconductores de una misma pierna. Es por esto que el registro DBTCONA es trascendental y
una correcta configuración asegura un funcionamiento inequívoco del circuito.
Teniendo en cuenta que DBTCONA[11-8] = M corresponden al periodo de la banda muerta (DB)
y DBTCONA[4-2] = x/P, donde x es el reloj del sistema y P la preescala, se tiene
DB = 2 µ s = P ⋅ M ⋅ Tclock
P ⋅ M = 2 µ ⋅ 29.4912 M ≈ 60
Por lo tanto se eligen convenientemente P y M, de modo tal que su producto sea 60. En este caso,
se eligió P = 4 y M = 15.

4
Laboratorio de Electrónica Industrial, Segundo Semestre 2010

Según se mencionó, todos estos registros se cargaron en el archivo init.c.
1.2

Señales PWM

Con la correcta disposición de cada uno de los registros expuestos en la parte anterior, se puede
proceder a generar señales PWM con ciclos de trabajo constantes (índice de modulación
constante). Para ello, se debe asignar valores adecuados a los comparadores CMPR1, CMPR2 y
CMPR3. Estos comparadores adoptan valores que se relacionan linealmente con T1PR,
considerando a este como un ciclo de trabajo de 100%, luego
CMPR1 = 20% ⋅ T 1PR = 492 = 0 x01EC
CMPR 2 = 40% ⋅ T 1PR = 983 = 0 x03D 7
CMPR3 = 20% ⋅ T 1PR = 1844 = 0 x0734
Utilizando el software adecuado se cargan los diferentes archivos y se procede a compilar el
proyecto. Se obtiene una imagen similar a la siguiente

Figura 1. Señales PWM y cuasi-complementarias con ciclo de trabajo 20%, 40% y 75%
A pesar de no ser la imagen original del grupo, se puede dar fe que las obtenidas en la
experiencia fueron muy similares respecto de los valores logrados.

5
Laboratorio de Electrónica Industrial, Segundo Semestre 2010

Comprobado el funcionamiento del módulo PWM, es pertinente apreciar si se cumple la
restricción del tiempo muerto. Para ello, basta con hacer un zoom a la conmutación de una señal
con su cuasi-complemento. Se aprecia una imagen como la siguiente

Figura 2. Banda muerta de 2[us]
Las últimas dos señales están separadas por una banda muerta de app. 2[us]. Si bien es cierto,
sólo se puede observar la característica para una señal, las otras dos contienen el mismo tiempo
ya que fueron configuradas de igual forma.
Extendiendo la idea para las señales, es posible generarlas con un índice de modulación variable,
dado por una señal sinusoidal. Luego, con la siguiente sección de código implementada en el
archivo de interrupciones (sólo lo relevante, ya que en el anexo se incluye el código completo), se
pueden obtener las señales antes mencionadas.
int A=0x04CD-50;
float freq=50.;
int offset=0x04CD;
if (t==(3000/freq)) t=0;
t=t+1;
arg=(4*Pi*freq *(t/3000));
CMPR1 = (int)(A*sin(arg))+offset;
CMPR2 = (int)(A*sin(arg+2*pi/3))+offset;
CMPR3 = (int)(A*sin(arg+4*pi/3))+offset;

Lo anterior admite una asignación variable (sinusoidal) a los comparadores de cada PWM, lo que
a su vez permite tener un índice de modulación variable. Se aprecia que existe un offset fijado
6
Laboratorio de Electrónica Industrial, Segundo Semestre 2010

justo en la mitad del valor de T1PR, lo que sumado a una sinusoidal de casi la misma amplitud
(se disminuye levemente el valor para poder generar las señales sin distorsión por
sobremodulación) entregan los valores de cada CMPRx. Además, se utiliza un contador t que
aumenta su cuenta cada vez que se ingresa a la interrupción y se recarga cuando alcanza el valor
de 3000/freq, que corresponde a los ciclos de portadora que calzan en un periodo de la referencia.
Con esto es posible generar una base de tiempo y así obtener las señales sinusoidales para las
referencias. Con la modificación hecha se puede cargar el código al DSP, obteniéndose una
imagen como la siguiente.

Figura 3. Señales PWM con referencia sinusoidal
Se observa un patrón que se repite cada 20[ms] ó su equivalente en frecuencia de 50[Hz].
1.3

Control a través de un potenciómetro

Ahora, para modificar la frecuencia y la amplitud de la referencia en tiempo real utilizamos el
conversor análogo digital (ADC) que posee la DSP.

Figura 4. Conexión de las señales analógicas de entrada
7
Laboratorio de Electrónica Industrial, Segundo Semestre 2010

El problema de la implementación que se hizo en la sección anterior es que una variación directa
de la frecuencia dentro de la sinusoide en tiempo real provocaría cambios de fase. Para
solucionarlo se implementa la frecuencia a través de la discretizacion del valor del ángulo
siguiente:
∆ߠ = ߱ ∗ ∆‫ݐ‬
Luego, se tiene la siguiente modificación del código
f=50*data/1023;
A=data*0x04CD/1023;
theta[1]=4*Pi*f/3000.+theta[0];
if(theta[1]>=2000*Pi) theta[1]=0;
theta[0]=theta[1];
CMPR1=(int)(A*sin(theta[1]))+offset;
CMPR2=(int)(A*sin(theta[1]+2.*Pi/3.))+offset;
CMPR3=(int)(A*sin(theta[1]-2.*Pi/3.))+offset;

La variable del ángulo se resetea a través del if, siendo todo lo demás un desglose de la ecuación
mostrada inicialmente. El registro data es una variable que va desde 0 a 1023 y proviene del
convertidor A/D pudiendo ser esta variable modificada a través del potenciómetro conectado.
Además de variar la frecuencia proporcionalmente variamos la amplitud: A=data*0x0999/1023.
Lo anterior, a partir de A/f = cte. que permite las variaciones proporcionales de amplitud y
frecuencia.

1.4

Conexiones

El siguiente paso fue la conexión de la DSP a un rectificador trifásico alimentado con una fuente
de poder DC y esto alimentando un motor AC. Entre el conversor AC/DC interviene un
transformador que permite el desacoplo de las tierras.

Figura 5. Interconexión de los los dispositivos
8
Laboratorio de Electrónica Industrial, Segundo Semestre 2010

1.5

Conexión Inversor y Motor

Por un tema de tiempo, ocupamos las conexiones del grupo vecino cambiando la DPS. Por lo
que los detalles de las conexiones no pudimos apreciarlos en su totalidad.
Una vez conectados los dispositivos, se comprobó que funcionaba correctamente el control de
la frecuencia y la amplitud de la señal de potencia, entregada al motor controlada por el
potenciómetro. Si aumentamos la frecuencia aumentamos la amplitud y si disminuimos la
frecuencia disminuimos la amplitud. La frecuencia máxima son los 50 ciclos por segundo, sin
embargo la amplitud disminuía a una tasa menor que a la que disminuía la frecuencia.
En la siguiente captura podemos apreciar el voltaje que se encuentra entre el punto medio de
una pierna y el 0 de la fuente.

Figura 6. Voltaje en un igbt y su fft
Se puede apreciar una señal de dos niveles pues el voltaje en un IGBT de la parte inferior de
una pierna puede tomar los valores Vcc y 0. Las formas oscilatorias, posiblemente se deben a
un problema de resolución de los instrumentos de medición, pues como lo indica la
transformada de Fourier que viene incluida en la captura, la frecuencia fundamental es la
frecuencia de switcheo (portadora de la PWM 3kHz).
En la siguiente captura podemos apreciar la corriente de 2 fases (verde y amarillo) y el voltaje
entre fases (morado).
9
Laboratorio de Electrónica Industrial, Segundo Semestre 2010

Figura 7. Voltaje entre 2 fases (morado) y corriente por 2 fases
La inductancia del motor filtra la componente de alta frecuencia y permite que la corriente sea
principalmente una señal de 50Hz, con un ligero riple, la amplitud de estas corrientes es de
203mA y su desfase es 129 grados, esto es porque las componentes armónicas ensanchan la señal
y resulta poco preciso con los punteros del osciloscopio medir el desfase.
La señal de voltaje posee 3 niveles porque es la resta de los voltajes de los IGBT de 2 piernas que
son cada una voltajes de 2 niveles como se indica en el siguiente diagrama:

Figura 8. Voltaje en los semiconductores y el voltaje entre 2 fases

10
Laboratorio de Electrónica Industrial, Segundo Semestre 2010

A medida que fuimos disminuyendo la frecuencia se comienza a apreciar de forma mas clara el
efecto del tiempo muerto sobre las señales.

Figura 9. Voltaje en los semiconductores y el voltaje entre 2 fases
Esto sucede porque cada vez que se invierte la polaridad de la corriente ocurre un cambio en el
voltaje positivo o negativo dependiendo de la polaridad de la corriente.

Figura 10. Efecto del tiempo muerto
Este efecto no lineal se puede compensar a través un lazo de control realimentado de corriente

11
Laboratorio de Electrónica Industrial, Segundo Semestre 2010

CONCLUSIONES
El desafío de esta experiencia fue implementar un algoritmo en un DSP que permitiera controlar
un inversor conectado a un motor. Para ello se configuraron señales PWM que sirvieron como
señales de disparo del inversor trifásico.
En la primera parte de la experiencia se debió establecer los valores de ciertos registros
necesarios para el funcionamiento del DSP. Dado que se contaba con los archivos “.c” necesarios
para crear un proyecto, basto con el seteo de registros para obtener señales con ciclo de trabajo
constante. En la siguiente implementación, se debió hacer variar la referencia para así lograr
controlar el índice de modulación. Para esto fue necesario el uso de interrupciones, las cuales
paralizan la ejecución normal del código para hacer una acción preajustada. Esto permite tener
una frecuencia a la salida del convertidor fijada con los parámetros del DSP. En el caso del
laboratorio, se utilizaron 50[Hz] los cuales se obtuvieron con un mínimo error.
En la segunda parte se modificó el código, para que con un potenciómetro, fuese posible variar en
tiempo real la amplitud y frecuencia de la sinusoidal que domina la referencia para las señales
PWM, de modo que estas tuviesen una relación proporcional (A/f=cte). De este modo, al conectar
el motor se pudo variar su velocidad de giro a través de un potenciómetro conectado al ADC del
DSP. Gracias a esto, se pudo observar de mejor manera los efectos producidos en la corriente y
voltaje del motor.
Un detalle importante, y que no se detalla en el informe ya que por razones de tiempo no se pudo
analizar con detención, es el uso de un transformador y optoacopladores para el aislamiento de
tierras. La principal razón es la aislación del circuito de control y de potencia, ya que una mala
implementación podría destruir el DSP.

12
Laboratorio de Electrónica Industrial, Segundo Semestre 2010

ANEXO
A continuación se presentan los códigos de los archivos main.c, interr.c y init.c.
main.c:
#include

"f2407_c.h"

/****************************** MAIN ROUTINE ***************************/
void main(void)
{
InitSCSr();
InitWD();
InitIOPort();
InitGPT();
InitADC();
/*** Setup the core interrupts ***/
IMR = 0x0000;
IFR = 0x003F;
IMR = 0x0001;

/* clear the IMR register */
/* clear any pending core interrupts */
/* enable desired core interrupts (_adc_isr) */

InitEVx();
/*** Enable global interrupts ***/
asm(" CLRC INTM");

/* enable global interrupts */

/*** Proceed with main routine ***/
while(1)
{asm ("
nop");
}
/* endless loop, wait for interrupt */
}
/* end of main() */

init.c:
#include
"f2407_c.h"
/*** Seteo de los registros de control de los timers,
y las unidades PWM ***/
void InitGPT(void)
{
T1PR=0x099A;
ACTRA=0xF666;
COMCONA=0xA6FF;
T1CON=0x0946;
DBTCONA=0xFFEB;
//CMPR1=0x01EC;
//CMPR2=0x03D7;
//CMPR3=0x0734;
}
/*** Seteo de los registros de control del conversor AD ***/
void InitADC(void)
{
/*Aquí coloque los registros de ajuste del ADC*/
GPTCONA= 0x0100;
ADCTRL1= 0x6480;
ADCTRL1= 0x2480;

13
Laboratorio de Electrónica Industrial, Segundo Semestre 2010

ADCTRL2= 0x4700;
ADCTRL2= 0x0700;
MAX_CONV=0x0000;
CHSELSEQ1=0x0000;
}

.
.
.

interr.c:
/********************** INTERRUPT SERVICE ROUTINES *********************/
#include
"f2407_c.h"
#include
<math.h>
#define Pi 3.1415926536
float data;
int z=0;
int n=0;
float t=0;
float theta[]={0,0};
int offset=0x04CD;
int A=0;
float f=0;
//int A=0x04CD-50;
//float f=50.;
interrupt void adc_isr(void)
{
/*Aquí coloque las interrupciones activadas por el ADC*/
data=RESULT0>>6;
f=50*data/1023;
A=data*0x04CD/1023;
theta[1]=4*Pi*f/3000.+theta[0];
if(theta[1]>=2000*Pi) theta[1]=0;
theta[0]=theta[1];
CMPR1=(int)(A*sin(theta[1]))+offset;
CMPR2=(int)(A*sin(theta[1]+2.*Pi/3.))+offset;
CMPR3=(int)(A*sin(theta[1]-2.*Pi/3.))+offset;
EVAIFRA=0xFFFF;
ADCTRL2=0x0700;
}
interrupt void timer1_isr(void)
{
}
interrupt void timer2_isr(void)
{
}

14

Más contenido relacionado

La actualidad más candente

Preinforme rectificador controlado
Preinforme rectificador controladoPreinforme rectificador controlado
Preinforme rectificador controladoLautaro Narvaez
 
Proyecto PWM (Español)
Proyecto PWM (Español)Proyecto PWM (Español)
Proyecto PWM (Español)Icarohack
 
Calculo de fallas simétricas (trifásica) en Sistemas Eléctricos de Potencia (...
Calculo de fallas simétricas (trifásica) en Sistemas Eléctricos de Potencia (...Calculo de fallas simétricas (trifásica) en Sistemas Eléctricos de Potencia (...
Calculo de fallas simétricas (trifásica) en Sistemas Eléctricos de Potencia (...Wilpia Centeno Astudillo
 
Eelectronica de potencia_momento_3
Eelectronica de potencia_momento_3Eelectronica de potencia_momento_3
Eelectronica de potencia_momento_3Erick Muñoz
 
Electrónica: El SCR (rectificador controlado de silicio)
Electrónica: El SCR (rectificador controlado de silicio)Electrónica: El SCR (rectificador controlado de silicio)
Electrónica: El SCR (rectificador controlado de silicio)SANTIAGO PABLO ALBERTO
 
Aplicaciones transistor
Aplicaciones transistorAplicaciones transistor
Aplicaciones transistorkalel32291
 
Ejemplos de retardos al paso de la señal
Ejemplos de retardos al paso de la señalEjemplos de retardos al paso de la señal
Ejemplos de retardos al paso de la señalRoss Jovel
 
FenóMenos Transitorios Asociados A La EnergizacióN De Transformadores
FenóMenos Transitorios Asociados A La EnergizacióN De TransformadoresFenóMenos Transitorios Asociados A La EnergizacióN De Transformadores
FenóMenos Transitorios Asociados A La EnergizacióN De TransformadoresEsteban
 
Flujo de potencia Unidad curricular: Sistemas Eléctricos de Potencia
Flujo de potencia Unidad curricular: Sistemas Eléctricos de Potencia Flujo de potencia Unidad curricular: Sistemas Eléctricos de Potencia
Flujo de potencia Unidad curricular: Sistemas Eléctricos de Potencia FrancilesRendon
 
Amplificadores operacionales 3
Amplificadores operacionales 3Amplificadores operacionales 3
Amplificadores operacionales 3Freddy B.
 
Trabajo de electronica
Trabajo de electronicaTrabajo de electronica
Trabajo de electronicaJimmy Grf
 
Calculo de diseño de convertidor elevador (1)
Calculo de diseño de convertidor elevador (1)Calculo de diseño de convertidor elevador (1)
Calculo de diseño de convertidor elevador (1)der
 
Informe previo y experimento nª1 del Lab. Circuitos Electronicos II UNSAAC(w...
Informe previo y experimento nª1 del  Lab. Circuitos Electronicos II UNSAAC(w...Informe previo y experimento nª1 del  Lab. Circuitos Electronicos II UNSAAC(w...
Informe previo y experimento nª1 del Lab. Circuitos Electronicos II UNSAAC(w...Watner Ochoa Núñez
 

La actualidad más candente (20)

Preinforme rectificador controlado
Preinforme rectificador controladoPreinforme rectificador controlado
Preinforme rectificador controlado
 
Proyecto PWM (Español)
Proyecto PWM (Español)Proyecto PWM (Español)
Proyecto PWM (Español)
 
22a clase generadores de pwm
22a clase generadores de pwm22a clase generadores de pwm
22a clase generadores de pwm
 
Fluke 434 configuracion y conexion
Fluke 434 configuracion y conexionFluke 434 configuracion y conexion
Fluke 434 configuracion y conexion
 
Electrónica: Multivibradores
Electrónica: MultivibradoresElectrónica: Multivibradores
Electrónica: Multivibradores
 
Calculo de fallas simétricas (trifásica) en Sistemas Eléctricos de Potencia (...
Calculo de fallas simétricas (trifásica) en Sistemas Eléctricos de Potencia (...Calculo de fallas simétricas (trifásica) en Sistemas Eléctricos de Potencia (...
Calculo de fallas simétricas (trifásica) en Sistemas Eléctricos de Potencia (...
 
Eelectronica de potencia_momento_3
Eelectronica de potencia_momento_3Eelectronica de potencia_momento_3
Eelectronica de potencia_momento_3
 
Electrónica: El SCR (rectificador controlado de silicio)
Electrónica: El SCR (rectificador controlado de silicio)Electrónica: El SCR (rectificador controlado de silicio)
Electrónica: El SCR (rectificador controlado de silicio)
 
Electrónica: Rectificación
Electrónica: RectificaciónElectrónica: Rectificación
Electrónica: Rectificación
 
Aplicaciones transistor
Aplicaciones transistorAplicaciones transistor
Aplicaciones transistor
 
Ejemplos de retardos al paso de la señal
Ejemplos de retardos al paso de la señalEjemplos de retardos al paso de la señal
Ejemplos de retardos al paso de la señal
 
FenóMenos Transitorios Asociados A La EnergizacióN De Transformadores
FenóMenos Transitorios Asociados A La EnergizacióN De TransformadoresFenóMenos Transitorios Asociados A La EnergizacióN De Transformadores
FenóMenos Transitorios Asociados A La EnergizacióN De Transformadores
 
Flujo de potencia Unidad curricular: Sistemas Eléctricos de Potencia
Flujo de potencia Unidad curricular: Sistemas Eléctricos de Potencia Flujo de potencia Unidad curricular: Sistemas Eléctricos de Potencia
Flujo de potencia Unidad curricular: Sistemas Eléctricos de Potencia
 
Amplificadores operacionales 3
Amplificadores operacionales 3Amplificadores operacionales 3
Amplificadores operacionales 3
 
Trabajo de electronica
Trabajo de electronicaTrabajo de electronica
Trabajo de electronica
 
Electrónica: Dispositivos de control
Electrónica: Dispositivos de controlElectrónica: Dispositivos de control
Electrónica: Dispositivos de control
 
Electrónica: El amplificador
Electrónica: El amplificadorElectrónica: El amplificador
Electrónica: El amplificador
 
Tema 13 Calculo de cortocircuito
Tema 13 Calculo de cortocircuitoTema 13 Calculo de cortocircuito
Tema 13 Calculo de cortocircuito
 
Calculo de diseño de convertidor elevador (1)
Calculo de diseño de convertidor elevador (1)Calculo de diseño de convertidor elevador (1)
Calculo de diseño de convertidor elevador (1)
 
Informe previo y experimento nª1 del Lab. Circuitos Electronicos II UNSAAC(w...
Informe previo y experimento nª1 del  Lab. Circuitos Electronicos II UNSAAC(w...Informe previo y experimento nª1 del  Lab. Circuitos Electronicos II UNSAAC(w...
Informe previo y experimento nª1 del Lab. Circuitos Electronicos II UNSAAC(w...
 

Destacado (13)

Presentacion pwm
Presentacion pwmPresentacion pwm
Presentacion pwm
 
Modulacion pwm
Modulacion pwmModulacion pwm
Modulacion pwm
 
Pwm
PwmPwm
Pwm
 
Ac ac monofasicos
Ac ac monofasicosAc ac monofasicos
Ac ac monofasicos
 
Introduccionpwm
IntroduccionpwmIntroduccionpwm
Introduccionpwm
 
Inversores trifásicos
Inversores trifásicosInversores trifásicos
Inversores trifásicos
 
Pwm
PwmPwm
Pwm
 
Rectificadores no controlados
Rectificadores no controladosRectificadores no controlados
Rectificadores no controlados
 
Circuito variador de velocidad de motor ac
Circuito variador de velocidad de motor acCircuito variador de velocidad de motor ac
Circuito variador de velocidad de motor ac
 
Control de velocidad de motores
Control de velocidad de motoresControl de velocidad de motores
Control de velocidad de motores
 
Inversor monofasico
Inversor monofasicoInversor monofasico
Inversor monofasico
 
Inversores y Cicloconvertidores
Inversores y CicloconvertidoresInversores y Cicloconvertidores
Inversores y Cicloconvertidores
 
Convertidores ac,dc
Convertidores ac,dcConvertidores ac,dc
Convertidores ac,dc
 

Similar a final PWM

Control digital: Introducción a control digital
Control digital: Introducción a control digital Control digital: Introducción a control digital
Control digital: Introducción a control digital SANTIAGO PABLO ALBERTO
 
Practicas comunicaciones digitales
Practicas comunicaciones digitalesPracticas comunicaciones digitales
Practicas comunicaciones digitalesCNT Movil
 
Tacometro digital
Tacometro digitalTacometro digital
Tacometro digitalsant1288
 
Diseño e implementación de un simulador de paciente con señales antropométric...
Diseño e implementación de un simulador de paciente con señales antropométric...Diseño e implementación de un simulador de paciente con señales antropométric...
Diseño e implementación de un simulador de paciente con señales antropométric...SalMndez5
 
Ctrl discreto de un motor de cc en velocidad
Ctrl discreto de un motor de cc en velocidadCtrl discreto de un motor de cc en velocidad
Ctrl discreto de un motor de cc en velocidadMiguel sosa
 
Implementacion de un rectificador con fines didacticos federico gaston rosales
Implementacion de un rectificador con fines didacticos  federico gaston rosalesImplementacion de un rectificador con fines didacticos  federico gaston rosales
Implementacion de un rectificador con fines didacticos federico gaston rosalesFerney Soler
 
Arquitectura del plc
Arquitectura del plcArquitectura del plc
Arquitectura del plcForrestMamani
 

Similar a final PWM (20)

Control nivel luz
Control nivel luzControl nivel luz
Control nivel luz
 
Modulacion pwm pmdc_v4
Modulacion pwm pmdc_v4Modulacion pwm pmdc_v4
Modulacion pwm pmdc_v4
 
Adc y usart pic16 f887
Adc y usart pic16 f887Adc y usart pic16 f887
Adc y usart pic16 f887
 
Control digital: Introducción a control digital
Control digital: Introducción a control digital Control digital: Introducción a control digital
Control digital: Introducción a control digital
 
Tutorial micro MSP430
Tutorial micro MSP430Tutorial micro MSP430
Tutorial micro MSP430
 
Practicas comunicaciones digitales
Practicas comunicaciones digitalesPracticas comunicaciones digitales
Practicas comunicaciones digitales
 
Adecuador
AdecuadorAdecuador
Adecuador
 
Semana6
Semana6Semana6
Semana6
 
conversor ad del pic16 f877
 conversor ad del pic16 f877 conversor ad del pic16 f877
conversor ad del pic16 f877
 
Caso timers
Caso timersCaso timers
Caso timers
 
Taller
TallerTaller
Taller
 
NCO
NCONCO
NCO
 
Tacometro digital
Tacometro digitalTacometro digital
Tacometro digital
 
Informe pwm
Informe pwmInforme pwm
Informe pwm
 
Informe dav
Informe  davInforme  dav
Informe dav
 
Diseño e implementación de un simulador de paciente con señales antropométric...
Diseño e implementación de un simulador de paciente con señales antropométric...Diseño e implementación de un simulador de paciente con señales antropométric...
Diseño e implementación de un simulador de paciente con señales antropométric...
 
Ctrl discreto de un motor de cc en velocidad
Ctrl discreto de un motor de cc en velocidadCtrl discreto de un motor de cc en velocidad
Ctrl discreto de un motor de cc en velocidad
 
Implementacion de un rectificador con fines didacticos federico gaston rosales
Implementacion de un rectificador con fines didacticos  federico gaston rosalesImplementacion de un rectificador con fines didacticos  federico gaston rosales
Implementacion de un rectificador con fines didacticos federico gaston rosales
 
166 476-1-pb
166 476-1-pb166 476-1-pb
166 476-1-pb
 
Arquitectura del plc
Arquitectura del plcArquitectura del plc
Arquitectura del plc
 

final PWM

  • 1. UNIVERSIDAD TÉCNICA FEDERICO SANTA MARÍA DEPARTAMENTO DE ELECTRÓNICA Laboratorio de Electrónica Industrial INFORME FINAL “Modulación por ancho de pulsos pulsos” Experiencia Grupo Fecha 6 Lautaro Narvaez P. 8 Juan Vargas H. 05/10/2010 Revisado por Nota
  • 2. Laboratorio de Electrónica Industrial, Segundo Semestre 2010 INTRODUCCIÓN Y OBJETIVOS Actualmente se encuentran varias posibilidades a la hora de implementar algoritmos de control, principalmente micro controladores y plataformas como FPGA y DSP (Procesador Digital de Señales). Cada uno de estos dispositivos posee características diferentes, las cuales permiten discernir en su elección dependiendo de la aplicación en que se desee utilizar. En esta experiencia se programa un DSP Texas Instruments TMS320F2407 montado sobre la tarjeta de desarrollo eZdsp2407b, con el fin de controlar un inversor trifásico, el que a su vez, alimenta un motor. Existen varias tipos de modulación de convertidores: Con portadora, vectorial, eliminación selectiva de armónicas, etc. En particular, se trabajará la modulación con portadora, que es la más utilizada en convertidores industriales. A través del DSP se generan las señales de disparo (señales PWM) del inversor. Para ello se debe configurar los módulos adecuados, seteando los registros y habilitando interrupciones. También se busca poder controlar la velocidad de giro del motor de forma análoga, lo que se logra habilitando un ADC del dispositivo. 1. INFORME FINAL En las siguientes secciones se detalla el desarrollo de la experiencia. Se incluyen las imágenes más representativas, además de comentarios y conclusiones relevantes. Debido a un problema con el almacenamiento de las capturas del osciloscopio, se debió utilizar las imágenes obtenidas de otro grupo en la primera parte (generación de señales PWM). 1.1 Instrucciones DSP El primer paso para la generación de señales PWM es el correcto seteo de los registros más importantes. Para ello, se hace uso del material adecuado, como la documentación y archivos disponibles en la web del ramo. En el preinforme de la experiencia se nombraron y detallaron algunos registros, además de los valores que debían adoptar sus bits. Dentro de la serie de archivos de la web, se encuentran tres principales: main.c, interr.c y init.c. Para la primera parte, se setean los registros T1PR, ACTRA, COMCONA, T1CON y DBTCONA, los cuales se ubican en init.c. Cabe destacar que el oscilador del DSP utilizado es de 14.7456MHz, pero la CPU interna debe considerarse del doble de esta frecuencia, 29.4912MHz. Luego, para poder configurar los registros como si el reloj fuese el de 14M, se debe hacer un escalamiento x/2, el cual se realiza en T1CON. 1
  • 3. Laboratorio de Electrónica Industrial, Segundo Semestre 2010 El registro T1PR guarda el valor límite de la cuenta del reloj, según la frecuencia que se requiera. En este caso, se pide tener una frecuencia aproximada de 3[kHz]. Considerando el preescalamiento x/2 se tiene (según lo obtenido en el preinforme) T 1PR = T 14.7456 M = = 2458 ⇔ 0 x099 A 2 ⋅ Tclock 2 ⋅ 3K Las siguientes tablas muestran los valores de cada registro con una breve explicación de la función de los bits más relevantes. El símbolo * indica que no es necesario setear el(los) bit en cuestión, pudiéndose asignar indistintamente 0 o 1. Tabla 1. ACTRA = 0xF666 bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 valor 1 1 1 1 0 1 1 0 0 1 1 0 0 1 1 0 Función *Uso en PWM Vectorial Salida activa baja de CMP6 Salida activa alta de CMP5 Salida activa baja de CMP4 Salida activa alta de CMP3 Salida activa baja de CMP2 Salida activa alta de CMP1 El registro ACTRA establece las acciones de control para el registro de comparación. Permite la definición de las señales PWM y sus cuasi-complementos. COMCONA es el registro que controla las unidades de comparación (para el gestor de eventos EVA). 2
  • 4. Laboratorio de Electrónica Industrial, Segundo Semestre 2010 Tabla 2. COMCONA = 0xA6FF bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 valor 1 0 1 0 0 1 1 0 1 1 1 1 1 1 1 1 Función Comparador Habilitado El registro de comparación CMPRx se recarga cuando T1CNT = 0 ó T1CNT = T1PR PWM vectorial deshabilitada El registro de acción de control se recarga cuando T1CNT = 0 ó T1CNT = T1PR Salida del comparador activada *Reservado *Reservados Tabla 3. T1CON = 0x0946 bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 valor 0 0 0 0 1 0 0 1 0 1 0 0 0 1 1 Función *Free *Reservados Modo de conteo: Up/Down Continuo Preescala reloj de entrada: x/2 T2SWT1 Timer 1 habilitado Selección de la fuente de reloj: Interno El registro se recarga cuando el valor del contador es 0 o igual a T1PR Comparador habilitado 3
  • 5. Laboratorio de Electrónica Industrial, Segundo Semestre 2010 0 0 SELT1PR En T1CON los bits 9-8 son muy importantes ya que definen la base del reloj. Es necesario una correcta y consecuente elección, de modo que T1PR pueda elegirse para lograr los 3kHz, tal y como se hizo. Tabla 4. DBTCONA = 0xFFEB bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 valor 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 Función *Reservados Periodo de la banda muerta (M=15) Banda muerta para PWM5 y PWM6 habilitada Banda muerta para PWM3 y PWM4 habilitada Banda muerta para PWM1 y PWM2 habilitada Preescala de la banda muerta (P=4) *Reservados Como se explicó en el preinforme, la implementación de un tiempo o banda muerta es muy importante para evitar cortocircuitar la fuente de alimentación mientras conmutan los semiconductores de una misma pierna. Es por esto que el registro DBTCONA es trascendental y una correcta configuración asegura un funcionamiento inequívoco del circuito. Teniendo en cuenta que DBTCONA[11-8] = M corresponden al periodo de la banda muerta (DB) y DBTCONA[4-2] = x/P, donde x es el reloj del sistema y P la preescala, se tiene DB = 2 µ s = P ⋅ M ⋅ Tclock P ⋅ M = 2 µ ⋅ 29.4912 M ≈ 60 Por lo tanto se eligen convenientemente P y M, de modo tal que su producto sea 60. En este caso, se eligió P = 4 y M = 15. 4
  • 6. Laboratorio de Electrónica Industrial, Segundo Semestre 2010 Según se mencionó, todos estos registros se cargaron en el archivo init.c. 1.2 Señales PWM Con la correcta disposición de cada uno de los registros expuestos en la parte anterior, se puede proceder a generar señales PWM con ciclos de trabajo constantes (índice de modulación constante). Para ello, se debe asignar valores adecuados a los comparadores CMPR1, CMPR2 y CMPR3. Estos comparadores adoptan valores que se relacionan linealmente con T1PR, considerando a este como un ciclo de trabajo de 100%, luego CMPR1 = 20% ⋅ T 1PR = 492 = 0 x01EC CMPR 2 = 40% ⋅ T 1PR = 983 = 0 x03D 7 CMPR3 = 20% ⋅ T 1PR = 1844 = 0 x0734 Utilizando el software adecuado se cargan los diferentes archivos y se procede a compilar el proyecto. Se obtiene una imagen similar a la siguiente Figura 1. Señales PWM y cuasi-complementarias con ciclo de trabajo 20%, 40% y 75% A pesar de no ser la imagen original del grupo, se puede dar fe que las obtenidas en la experiencia fueron muy similares respecto de los valores logrados. 5
  • 7. Laboratorio de Electrónica Industrial, Segundo Semestre 2010 Comprobado el funcionamiento del módulo PWM, es pertinente apreciar si se cumple la restricción del tiempo muerto. Para ello, basta con hacer un zoom a la conmutación de una señal con su cuasi-complemento. Se aprecia una imagen como la siguiente Figura 2. Banda muerta de 2[us] Las últimas dos señales están separadas por una banda muerta de app. 2[us]. Si bien es cierto, sólo se puede observar la característica para una señal, las otras dos contienen el mismo tiempo ya que fueron configuradas de igual forma. Extendiendo la idea para las señales, es posible generarlas con un índice de modulación variable, dado por una señal sinusoidal. Luego, con la siguiente sección de código implementada en el archivo de interrupciones (sólo lo relevante, ya que en el anexo se incluye el código completo), se pueden obtener las señales antes mencionadas. int A=0x04CD-50; float freq=50.; int offset=0x04CD; if (t==(3000/freq)) t=0; t=t+1; arg=(4*Pi*freq *(t/3000)); CMPR1 = (int)(A*sin(arg))+offset; CMPR2 = (int)(A*sin(arg+2*pi/3))+offset; CMPR3 = (int)(A*sin(arg+4*pi/3))+offset; Lo anterior admite una asignación variable (sinusoidal) a los comparadores de cada PWM, lo que a su vez permite tener un índice de modulación variable. Se aprecia que existe un offset fijado 6
  • 8. Laboratorio de Electrónica Industrial, Segundo Semestre 2010 justo en la mitad del valor de T1PR, lo que sumado a una sinusoidal de casi la misma amplitud (se disminuye levemente el valor para poder generar las señales sin distorsión por sobremodulación) entregan los valores de cada CMPRx. Además, se utiliza un contador t que aumenta su cuenta cada vez que se ingresa a la interrupción y se recarga cuando alcanza el valor de 3000/freq, que corresponde a los ciclos de portadora que calzan en un periodo de la referencia. Con esto es posible generar una base de tiempo y así obtener las señales sinusoidales para las referencias. Con la modificación hecha se puede cargar el código al DSP, obteniéndose una imagen como la siguiente. Figura 3. Señales PWM con referencia sinusoidal Se observa un patrón que se repite cada 20[ms] ó su equivalente en frecuencia de 50[Hz]. 1.3 Control a través de un potenciómetro Ahora, para modificar la frecuencia y la amplitud de la referencia en tiempo real utilizamos el conversor análogo digital (ADC) que posee la DSP. Figura 4. Conexión de las señales analógicas de entrada 7
  • 9. Laboratorio de Electrónica Industrial, Segundo Semestre 2010 El problema de la implementación que se hizo en la sección anterior es que una variación directa de la frecuencia dentro de la sinusoide en tiempo real provocaría cambios de fase. Para solucionarlo se implementa la frecuencia a través de la discretizacion del valor del ángulo siguiente: ∆ߠ = ߱ ∗ ∆‫ݐ‬ Luego, se tiene la siguiente modificación del código f=50*data/1023; A=data*0x04CD/1023; theta[1]=4*Pi*f/3000.+theta[0]; if(theta[1]>=2000*Pi) theta[1]=0; theta[0]=theta[1]; CMPR1=(int)(A*sin(theta[1]))+offset; CMPR2=(int)(A*sin(theta[1]+2.*Pi/3.))+offset; CMPR3=(int)(A*sin(theta[1]-2.*Pi/3.))+offset; La variable del ángulo se resetea a través del if, siendo todo lo demás un desglose de la ecuación mostrada inicialmente. El registro data es una variable que va desde 0 a 1023 y proviene del convertidor A/D pudiendo ser esta variable modificada a través del potenciómetro conectado. Además de variar la frecuencia proporcionalmente variamos la amplitud: A=data*0x0999/1023. Lo anterior, a partir de A/f = cte. que permite las variaciones proporcionales de amplitud y frecuencia. 1.4 Conexiones El siguiente paso fue la conexión de la DSP a un rectificador trifásico alimentado con una fuente de poder DC y esto alimentando un motor AC. Entre el conversor AC/DC interviene un transformador que permite el desacoplo de las tierras. Figura 5. Interconexión de los los dispositivos 8
  • 10. Laboratorio de Electrónica Industrial, Segundo Semestre 2010 1.5 Conexión Inversor y Motor Por un tema de tiempo, ocupamos las conexiones del grupo vecino cambiando la DPS. Por lo que los detalles de las conexiones no pudimos apreciarlos en su totalidad. Una vez conectados los dispositivos, se comprobó que funcionaba correctamente el control de la frecuencia y la amplitud de la señal de potencia, entregada al motor controlada por el potenciómetro. Si aumentamos la frecuencia aumentamos la amplitud y si disminuimos la frecuencia disminuimos la amplitud. La frecuencia máxima son los 50 ciclos por segundo, sin embargo la amplitud disminuía a una tasa menor que a la que disminuía la frecuencia. En la siguiente captura podemos apreciar el voltaje que se encuentra entre el punto medio de una pierna y el 0 de la fuente. Figura 6. Voltaje en un igbt y su fft Se puede apreciar una señal de dos niveles pues el voltaje en un IGBT de la parte inferior de una pierna puede tomar los valores Vcc y 0. Las formas oscilatorias, posiblemente se deben a un problema de resolución de los instrumentos de medición, pues como lo indica la transformada de Fourier que viene incluida en la captura, la frecuencia fundamental es la frecuencia de switcheo (portadora de la PWM 3kHz). En la siguiente captura podemos apreciar la corriente de 2 fases (verde y amarillo) y el voltaje entre fases (morado). 9
  • 11. Laboratorio de Electrónica Industrial, Segundo Semestre 2010 Figura 7. Voltaje entre 2 fases (morado) y corriente por 2 fases La inductancia del motor filtra la componente de alta frecuencia y permite que la corriente sea principalmente una señal de 50Hz, con un ligero riple, la amplitud de estas corrientes es de 203mA y su desfase es 129 grados, esto es porque las componentes armónicas ensanchan la señal y resulta poco preciso con los punteros del osciloscopio medir el desfase. La señal de voltaje posee 3 niveles porque es la resta de los voltajes de los IGBT de 2 piernas que son cada una voltajes de 2 niveles como se indica en el siguiente diagrama: Figura 8. Voltaje en los semiconductores y el voltaje entre 2 fases 10
  • 12. Laboratorio de Electrónica Industrial, Segundo Semestre 2010 A medida que fuimos disminuyendo la frecuencia se comienza a apreciar de forma mas clara el efecto del tiempo muerto sobre las señales. Figura 9. Voltaje en los semiconductores y el voltaje entre 2 fases Esto sucede porque cada vez que se invierte la polaridad de la corriente ocurre un cambio en el voltaje positivo o negativo dependiendo de la polaridad de la corriente. Figura 10. Efecto del tiempo muerto Este efecto no lineal se puede compensar a través un lazo de control realimentado de corriente 11
  • 13. Laboratorio de Electrónica Industrial, Segundo Semestre 2010 CONCLUSIONES El desafío de esta experiencia fue implementar un algoritmo en un DSP que permitiera controlar un inversor conectado a un motor. Para ello se configuraron señales PWM que sirvieron como señales de disparo del inversor trifásico. En la primera parte de la experiencia se debió establecer los valores de ciertos registros necesarios para el funcionamiento del DSP. Dado que se contaba con los archivos “.c” necesarios para crear un proyecto, basto con el seteo de registros para obtener señales con ciclo de trabajo constante. En la siguiente implementación, se debió hacer variar la referencia para así lograr controlar el índice de modulación. Para esto fue necesario el uso de interrupciones, las cuales paralizan la ejecución normal del código para hacer una acción preajustada. Esto permite tener una frecuencia a la salida del convertidor fijada con los parámetros del DSP. En el caso del laboratorio, se utilizaron 50[Hz] los cuales se obtuvieron con un mínimo error. En la segunda parte se modificó el código, para que con un potenciómetro, fuese posible variar en tiempo real la amplitud y frecuencia de la sinusoidal que domina la referencia para las señales PWM, de modo que estas tuviesen una relación proporcional (A/f=cte). De este modo, al conectar el motor se pudo variar su velocidad de giro a través de un potenciómetro conectado al ADC del DSP. Gracias a esto, se pudo observar de mejor manera los efectos producidos en la corriente y voltaje del motor. Un detalle importante, y que no se detalla en el informe ya que por razones de tiempo no se pudo analizar con detención, es el uso de un transformador y optoacopladores para el aislamiento de tierras. La principal razón es la aislación del circuito de control y de potencia, ya que una mala implementación podría destruir el DSP. 12
  • 14. Laboratorio de Electrónica Industrial, Segundo Semestre 2010 ANEXO A continuación se presentan los códigos de los archivos main.c, interr.c y init.c. main.c: #include "f2407_c.h" /****************************** MAIN ROUTINE ***************************/ void main(void) { InitSCSr(); InitWD(); InitIOPort(); InitGPT(); InitADC(); /*** Setup the core interrupts ***/ IMR = 0x0000; IFR = 0x003F; IMR = 0x0001; /* clear the IMR register */ /* clear any pending core interrupts */ /* enable desired core interrupts (_adc_isr) */ InitEVx(); /*** Enable global interrupts ***/ asm(" CLRC INTM"); /* enable global interrupts */ /*** Proceed with main routine ***/ while(1) {asm (" nop"); } /* endless loop, wait for interrupt */ } /* end of main() */ init.c: #include "f2407_c.h" /*** Seteo de los registros de control de los timers, y las unidades PWM ***/ void InitGPT(void) { T1PR=0x099A; ACTRA=0xF666; COMCONA=0xA6FF; T1CON=0x0946; DBTCONA=0xFFEB; //CMPR1=0x01EC; //CMPR2=0x03D7; //CMPR3=0x0734; } /*** Seteo de los registros de control del conversor AD ***/ void InitADC(void) { /*Aquí coloque los registros de ajuste del ADC*/ GPTCONA= 0x0100; ADCTRL1= 0x6480; ADCTRL1= 0x2480; 13
  • 15. Laboratorio de Electrónica Industrial, Segundo Semestre 2010 ADCTRL2= 0x4700; ADCTRL2= 0x0700; MAX_CONV=0x0000; CHSELSEQ1=0x0000; } . . . interr.c: /********************** INTERRUPT SERVICE ROUTINES *********************/ #include "f2407_c.h" #include <math.h> #define Pi 3.1415926536 float data; int z=0; int n=0; float t=0; float theta[]={0,0}; int offset=0x04CD; int A=0; float f=0; //int A=0x04CD-50; //float f=50.; interrupt void adc_isr(void) { /*Aquí coloque las interrupciones activadas por el ADC*/ data=RESULT0>>6; f=50*data/1023; A=data*0x04CD/1023; theta[1]=4*Pi*f/3000.+theta[0]; if(theta[1]>=2000*Pi) theta[1]=0; theta[0]=theta[1]; CMPR1=(int)(A*sin(theta[1]))+offset; CMPR2=(int)(A*sin(theta[1]+2.*Pi/3.))+offset; CMPR3=(int)(A*sin(theta[1]-2.*Pi/3.))+offset; EVAIFRA=0xFFFF; ADCTRL2=0x0700; } interrupt void timer1_isr(void) { } interrupt void timer2_isr(void) { } 14