Documente Academic
Documente Profesional
Documente Cultură
utilizando un microcontrolador.
Director
M.Sc. Alfonso Alzate Gmez
II
Nota de Aceptacin
Jurado Evaluador
Fecha
III
Dedicatoria
Dedico este trabajo a mi Dios, a mis padres, mis hermanos y amigos por todo su
gran apoyo espiritual durante este proyecto. Nada mejor en la vida, que una
familia unida.
Cesar Augusto Chiquito Manzo
A Dios, a mis padres, mis hermanos y amigos por confiar y creer en m durante
este proyecto.
Jonathan Alejandro Aguirre Daz
IV
AGRADECIMIENTOS
INTRODUCCIN
A travs de los ltimos aos se han postulado una variedad de tcnicas de control
para inversores que difieren en la variable de aplicacin: voltaje, corriente,
frecuencia. Una de las tcnicas de control ms reciente es la de modulacin por
vector espacial o SVM. Dicha tcnica propone un mayor desempeo del inversor
para alimentar la carga, a travs de combinaciones especficas en la conmutacin
de los IGBT utilizados, aprovechando al mximo su fuente DC a la entrada.
El estudio terico realizado al SVM se reflejar en este trabajo con los resultados
obtenidos en un esquema simulado en MatLab. Por lo tanto, en el primer captulo
de este trabajo se mencionar el ambiente de los inversores, y el uso de
microcontroladores en el control de equipos. En el segundo captulo, se expondr
el proceso realizado para su diseo. En el tercer y cuarto captulo se mostrarn
los pasos realizados para la simulacin y puesta a prueba del control del inversor.
En el quinto captulo se analizarn los resultados obtenidos en la simulacin,
finalizando con las conclusiones pertinentes.
VI
OBJETIVOS
Objetivo General
Objetivos Especficos
VII
INDICE GENERAL
AGRADECIMIENTOS...V
INTRODUCCION......Vl
OBJETIVOS......VII
OBJETIVOS GENERALES..VII
OBJETIVOS ESPECIFICOSVII
INDICE...VIII
LISTA DE FIGURAS.X
LISTA DE TABLAS.XIII
1. CAPITULO ASPECTOS TEORICOS. .............................................................. 14
1.1 Convertidores en electrnica de potencia........................................................................ 14
1.2 El inversor ............................................................................................................................. 15
1.2.1 Aplicaciones. .................................................................................................. 15
1.3 Control de inversores. ......................................................................................................... 18
1.3.1 SVPWM ........................................................................................................... 19
2.1.2.1
2.1.2.2
............................................................................................................................................... 32
2.1.3
2.1.4
4.2
4.2.1
4.2.2
Emigracin de C a Codewarrior............................................................... 55
IX
LISTA DE FIGURAS
Figura 1.1_ Esquema de conversin de energa.14
Figura 1.2_Rectificador e inversor.14
Figura 1.3_ Clasificacin de un inversor......16
Figura 1.4_Topologias del inversor:....17
Figura 1.4 (a) _Half Bridge (Monofsico)........17
Figura 1.4 (b) _Push Pull (Monofsico)..17
Figura 1.4 (c) _Full Bridge (Monofsico)...17
Figura 1.4 (d) _Three phase voltaje source inverter...17
Figura 1.5_ Representacin de un sistema trifsico en un plano bidimensional.19
Figura 1.6_ Esquema usado para aplicar SVM.21
Figura 1.7_Combinacin de interrupciones para el inversor.....22
Figura 1.8_ Hexgono de vectores con cada vector.....23
Figura 1.9_Voltaje mximo obtenido dentro del hexgono.......24
Figura 1.10_Descomposicin del vector de referencia en vectores adyacentes.24
Figura 1.11_Patrones de secuencia de conmutacin.26
Figura 1.12_Secuencia de pulsos en cada sector...27
Figura 2.1_ Esquema de la red Snubber.........29
Figura 2.2_ Modelo trmico bsico..32
Figura 2.3_ Inversor trifsico con la posicin de los fusibles35
Figura 2.4_ Diseo del filtro..37
Figura 2.5.a_ Configuracin de los pines del circuito integrado LM7815.38
Figura 2.5.b_ Configuracin de los pines del circuito integrado LM7805...38
Figura 2.6.a _Fotografa del LM7815..39
Figura 2.6.b_ Fotografa del LM7805..39
Figura 2.7_ Rectificador monofsico..40
XI
XII
LISTA DE TABLAS
XIII
unin, pero todo este proceso en la electrnica de potencia da un gran avance cuando en
el ao 1956 se descubre el tiristor. A partir de estos acontecimientos se han planteado
una gran cantidad de dispositivos semiconductores [2], con capacidad de responder a las
distintas necesidades.
1.2 El inversor
1.2.1 Aplicaciones
Las diferentes aplicaciones donde hace parte un inversor son bastantes e importantes, y
sin lugar a duda, la evolucin de estos elementos se hace una prioridad. La tabla 1.1
muestra algunas de las aplicaciones a la que hacen alusin algunos autores [3] [4].
15
16
18
1.3.1 SVPWM
()
()
( )
El primer condicionamiento sugiere que uno de los ejes del espacio de tres dimensiones
coincida con un eje del plano de dos dimensiones y el segundo es que haya una
separacin de 120 entre cada eje proyectado en el plano bidimensional [9].
( )
( )
( )
( )
( )
( )
) ()
( )
Ahora, para pasar del plano bidimensional al plano complejo, ste debe rotar a una
velocidad angular t.
(
(
(
)
)
)
)(
)
(
)
)(
( )
( )
( )
20
( )
( )
=0
(8)
Vectores
Polaridad en la carga
Estados lgicos
Combinacin
1
Voltaje
(- - -)
[0 0 0]
(+ - -)
[1 0 0]
(+ + -)
[1 1 0]
( )
(- + -)
[0 1 0]
(- + +)
[0 1 1]
(- - +)
[0 0 1]
(+ - +)
[1 0 1]
(+ + +)
[1 1 1]
22
El punto tangente del crculo con los lados del hexgono determina el valor mximo del
vector referencia y del ndice de modulacin (m=1), logrando una modulacin vectorial de
voltajes sinusoidales. Ahora el espacio exterior al crculo inscrito en el hexgono
corresponde a la sobremodulacion, lo que se interpreta como un ndice de modulacin
m>1, y significa que el inversor trabajar en la zona no lineal y la forma de onda de salida
es no sinusoidal.
))
(10)
(11)
(12)
(13)
Ahora, luego de obtener los tiempos en cada sector y definiendo el nmero de muestras,
se analiza la secuencia de las conmutaciones. Se debe elegir una secuencia que asegure
un voltaje fase-neutro con simetra de cuarto de onda para reducir las armnicas impares
en sus espectros [12]. En este sentido, hay variedad de secuencias:
mencionada, cada periodo de conmutacin inicia y finaliza con un vector cero y los
vectores activos se intercambian, pero esta presenta mayores prdidas por conmutacin.
La secuencia The bus campled sequence (Figura 1.11 (e)), plantea que una rama del
inversor se mantenga a potencial negativo o positivo por varios periodos de conmutacin,
lo que conlleva a reducir frecuencia y prdidas por conmutacin en los dispositivos
semiconductores [12] [13] [14].
En la siguiente figura se presenta la secuencia de los pulsos en cada cambio de sector
planteado por Alternating zero vector sequence. Ms adelante se detallar la forma de
seleccionar dichos pulsos a travs de un algoritmo en lenguaje C.
27
Para su diseo fue necesario tener en cuenta algunas consideraciones, tales como la
proteccin en el encendido y apagado de los transistores IGBTs, proteccin por
temperatura y por ltimo la proteccin por sobre corriente, a continuacin se hablar de
los procedimientos a seguir para proporcionar dicha proteccin.
28
Los diodos que se encuentran en paralelo con los IGBTs, los protegen contra altos picos
de voltaje (manteniendo el flujo de corriente en la misma direccin), los condensadores
aseguran un nivel mnimo de voltaje en el dispositivo hasta que la corriente sea cero,
garantizando con esto reducir las prdidas de potencia en la conmutacin, y las
resistencias limitan el pico de corriente de descarga a travs del transistor a un valor
seguro, adems se puede concluir que los circuitos RCD intervienen solo durante las
conmutaciones.
La fiabilidad del interruptor aumenta puesto que el pico de potencia que ha de disipar se
reduce y las oscilaciones de alta frecuencia provocadas por los elementos parsitos del
circuito se ven amortiguadas.
Una condicin de diseo importante es que el condensador se descargue totalmente
durante la conduccin del transistor para poder comenzar el siguiente periodo de
conmutacin con condiciones iniciales de tensin nulas. Por lo tanto, la constante de
tiempo RC en el mencionado Snubber, debe ser menor que el periodo de conmutacin ya
que se ha de dar tiempo suficiente al condensador C para cargarse y descargarse en
cada ciclo de trabajo.
29
Potencia disipada.
La energa almacenada en el condensador
se disipa bsicamente en la
resistencia
durante el encendido del transistor, por lo que sta debe de
soportar sin deteriorarse la potencia:
Resistencia mnima.
Hay que tener en cuenta el pico de corriente que aparece en instante inicial
de la descarga de C sobre el interruptor, ya que ste se suma a la corriente
del transistor durante el encendido.
30
Resistencia mxima.
El mnimo tiempo que se considera aceptable para permitir la descarga de
Cs es de tres veces la constante de tiempo RC. De donde podemos
estimar que:
(
31
2.1.2
El disipador de calor en los circuitos electrnicos es una pieza clave, sobre todo si se trata
de electrnica de potencia, donde las elevadas corrientes por los semiconductores
pueden causar su destruccin. Tanto as, que en muchas aplicaciones, la potencia
mxima de un circuito de potencia est limitada por el diseo trmico del sistema [4].
32
Dnde:
: Representa la potencia de prdida disipada en cada semiconductor IGBTs.
: Representa la resistencia trmica entre la juntura y la carcasa del
semiconductor IGBTs.
: Resistencia trmica entre la carcasa del semiconductor IGBTs y el disipador
de calor.
: Resistencia trmica entre el disipador y el ambiente.
: Representa la temperatura de la juntura del semiconductor IGBTs.
: Representa la temperatura de la de la carcasa.
: Representa la temperatura del disipador.
: Representa la temperatura ambiente.
La resistencia
no depende del semiconductor, sino del tipo de disipador a usar, por
tanto es una cantidad que depende del material, el pulimiento de su superficie, el tamao
y la diferencia de temperatura entre el disipador y la temperatura ambiente.
De la hoja de datos tcnicos del IGBT IRG4PC50FD (Anexo A) obtenemos los parmetros
de acuerdo a lo especificado anteriormente en la tabla 2.1.
De la curva
vs
, que se encuentra en la hoja de datos tcnicos del IGBT
IRG4PC50FD (Anexo A), se observa que el valor
33
Se utilizaron las siguientes ecuaciones para calcular las incgnitas faltantes para el
diseo del disipador
Primero se calcula la temperatura del disipador
(
Con
se puede calcular
se tiene:
Pero cuando el disipador que se utiliza no es plano y con aletas, las dimensiones
calculadas son ms pequeas, por tal razn se escoge un disipador de calor de aluminio
por conveccin natural, con dimensiones A = 263.78
, para el inversor [4] [19].
34
2.1.3
Los convertidores de potencia pueden provocar cortos circuitos o fallas, y las corrientes
resultantes debern eliminarse con rapidez. Con el fin de prevenir situaciones de riesgo
para los usuarios o el mismo puente inversor, se instalaron fusibles, el cual su objetivo es
que, en funcionamiento fuera de rango o cuando se presenten situaciones anormales,
estos operen, es decir, se destruyan antes que otros dispositivos de mayor importancia
para el inversor o antes que se produzcan incendios o explosiones.
Las condiciones a tener en cuenta en la seleccin del fusible son:
1.
2.
3.
Para este inversor las condiciones son ms conservadoras, debido a que no se pudo
acceder a fusibles ms avanzados como son los fusibles rpidos en respuesta ante
condiciones anormales de funcionamiento. Se utiliz fusibles de 5A de 5 ciclos por
segundo, para cada salida y entrada del inversor tal y como se ve en la Figura 2.3.
35
3.
Se puede observar que para esta seleccin de fusible las condiciones se cumplen.
36
37
38
39
Dicho rectificador est constituido por un puente de diodos, filtrado con un condensador.
Adems tiene los dos circuitos integrados LM7805 y LM7815 que sirven como
reguladores, donde se generan tensiones de 5
para alimentar la tarjeta del
microcontrolador, 5
y 15
para alimentar la tarjeta de disparo y de 3-5
tensin
que se piensa utilizar para alimentar el inversor. En la Figura 2.8 se observa el
esquemtico de la fuente de alimentacin elaborada en el software EAGLE 4.11.
40
41
En la figura 2.8 y figura 2.9 se puede observar que se adiciono un circuito el cual se
encarga de entregar la seal de control que es equivalente en voltaje a la entrada DC al
inversor, este circuito cuenta con un puente de diodos, un condensador de 10F, a la
salida de este se conect un trimmer con el objetivo de reducir voltaje, un circuito LM7805
que funciona como regulador y por ultimo un filtro pasa bajo RC con frecuencia de corte
de 2 Hz.
43
Para asignar los pines y tener la interfaz entre el programa del control y el
microcontrolador fue necesario utilizar un quemador que fue suministrado en el
laboratorio de electrnica. En la figura 2.11 se observa el circuito quemador para el
microcontrolador.
44
46
47
48
49
Ahora, con los valores de tiempo y usando una seal portadora de forma triangular, con
una amplitud de 0.01 a una frecuencia de 1000Hz, se obtienen los pulsos invariantes en
el tiempo o base como se muestra en la figura 3.6:
51
52
Para obtener la tensin esperada en la salida del inversor y poder regularla de manera
ptima fue necesario desarrollar un programa basado en la metodologa de modulacin
por espacio vectorial, el cual fue programado en el microcontrolador por medio del
programa Codewarrior. Pero para llegar a programar en microcontrolador se gener un
cdigo en la plataforma DEV C++ para luego emigrarlo al programa Codewarrior.
4.2.1
La programacin en C es considerado un lenguaje de medio nivel, es un lenguaje semiestructurado, ya que no est completamente estructurado en bloques, porque no permite
declarar procedimientos o funciones dentro de otro procedimiento, es decir, su
compilacin es lnea por lnea. De acuerdo a la simulacin realizada en SIMULINK y
gracias a su forma explcita fue sencillo su traslado a lenguaje C, ya que permiti una
comparacin paso por paso en cada lnea. Las libreras utilizadas se pueden observar
en la figura 4.1.
4.2.2
Emigracin de C a Codewarrior
55
56
Para terminar de crear el proyecto se tiene otras cuatro ventanas ms, una que indica si
se tienen archivos para agregar al proyecto y las otras tres ventanas que tienen
herramientas como Device inicialization que permite configurar el microcontrolador
externamente, pero que si no se tiene conocimiento de cmo usarla es mejor dejar el
valor por defecto, as que se da en la opcin siguiente hasta finalizar y empezar el
proyecto.
57
58
59
5. ANALISIS DE RESULTADOS
En este captulo se muestran los resultados de las simulaciones realizadas en Simulink,
DEVC++, y Codewarrior, para diferentes situaciones de carga, ndice de modulacin y
voltaje de referencia. En Simulink se obtuvo resultados para dos diferentes tipos de carga
trifsicas, resistiva R y resistiva-inductiva RL.
Como se plantea en la teora del SVM, las dos variables principales a los diferentes
sistemas fueron el ndice de modulacin, y voltaje de referencia o voltaje requerido para la
carga.
CARGA RESISTIVA
En la figura 5.1 se muestran los pulsos entregados a la salida del inversor antes del filtro
y las ondas balanceadas a la salida despus del filtro. El valor de la carga trifsica
resistiva fue constante en la simulacin, con un valor de 1 . Para este caso se requera
un valor de salida de 50 V AC a la carga, con un ndice de modulacin de 1.
En la figura 5. 2 mostrada a continuacin, permite ver la seal antes del filtro, la seal
despus del filtro, voltaje en la carga, y corriente. Para este caso, se requiere en la salida
del inversor una seal de 1000 V AC, con ndice de modulacin 1. Esto indica que para
61
valores muy grandes de tensin, la simulacin funciona, entregando una respuesta acorde
a lo esperado.
62
Figura 5.3_ Seal deseada y seal obtenida, alimentacin 4 V CD al inversor, ndice 0.5.
63
CARGA RL.
En esta parte del captulo se analizaran los resultados obtenidos en la simulacin con una
carga resistiva-inductiva.
En la figura 5.5 se muestran los pulsos antes del filtro, la seal despus del filtro y la
corriente por una fase. Se utiliz una carga resistiva-inductiva con un valor de resistencia
de 1 y de inductancia 2 mH. El voltaje de alimentacin al inversor es de 1000 V CD e
ndice de modulacin de 0.5, donde se observa una seal trifsica balanceada con un
valor de amplitud igual al de la seal de referencia.
64
Por ltimo, en la figura 5.8 se muestra en detalle una seal de salida trifsica de amplitud
100 V, con ndice de modulacin de 0.8. All se observa un comportamiento similar de la
seal de salida al descrito anteriormente para un ndice de modulacin de 0.5 (figura 5.3),
solo que en esta ocasin, las fluctuaciones disminuyeron, mostrando una seal que,
inicialmente aumenta y luego se estabiliza mucho ms al valor de 100 V.
DEVC++
En DEVC++ se imprime en pantalla los resultados arrojados por el cdigo desarrollado.
En la figura 5.9 se muestran los pulsos base (Rojo, azul, verde), y los pulsos aplicados
para el sector 5 (Amarillo) en el tiempo, correspondientes a los planteados en la teora del
SVM. Debido a la limitacin del compilador no se puede mostrar ms datos y observar un
comportamiento ms detallado de los pulsos.
66
68
CONCLUSIONES
El voltaje de salida present buena regulacin en un amplio rango de operacin, debido a
que el control por Space Vector Modulation (SVM) aplicado al inversor trifsico funcion
con eficiencia, lo que nos permiti ver una onda sinusoidal con mnima distorsin
armnica.
Los programas desarrollados en las diferentes plataformas implementando un control por
modulacin vectorial, permiti tener mayor dominio sobre los tiempos de operacin, y a
tratar al inversor trifsico como una sola unidad, ayudndonos a mejorar la calidad de la
seal y a disminuir las prdidas por conmutacin, factores primordiales al momento de
evaluar un control.
De acuerdo a los resultados obtenidos en Simulink se encuentra que el ndice de
modulacin afecta el valor de la amplitud de la seal trifsica que se requiere en la salida,
es decir, entre mayor sea el ndice de modulacin la seal se estabiliza.
Se encontr una eficiencia en los pulsos del SVM al emigrar de una plataforma a otra, ya
que se tena un mayor dominio sobre las variables. Este hecho permiti observar en
detalle los pulsos generados por la tcnica. Aunque, durante la emigracin del control se
presentaron partes complejas en cuanto a la programacin, replanteando soluciones a
dichos problemas.
A pesar que la tcnica SVM plantea una cantidad elevada de datos para su
procesamiento, los compiladores utilizados respondieron de buena manera, logrando as
un anlisis de los resultados obtenidos.
Como conclusin final, los resultados obtenidos muestran a la tcnica de modulacin
como un potencial referente de uso en aplicaciones que requieran valores de tensin
muy precisos, y que puede satisfacer al usuario final.
RECOMENDACIONES
Para trabajos futuros implementar la tcnica del SVM usando otro tipo de patrn de
secuencia y observar el comportamiento en la salida.
Implementar algoritmos ms complejos para explotar de manera ptima todas las
funciones y cualidades que nos proporciona el microcontrolador, ya que muchas de ellas
no se tuvieron en cuenta debido a que no eran necesarias en el momento del desarrollo
del proyecto.
69
BIBLIOGRAFA
[1] CIDRAS, J. ALBA, E. CARRILLO, C. Modelos de inversores PWM para los mtodos
de flujos de potencia, Universidad de Vigo. Presentacin, Recursos y Tecnologas
Electro-Energticas, Orense, Espaa. Octubre 1994.
[2] MORA, J. Maquinas elctricas, 5 Edicin. Editorial Mc GRAW-Hill. Madrid, Espaa.
2003. ISBN: 8448139135
[3] GONZALEZ, J. Inversores PWM. Universidad de Oviedo, Gijn, Espaa, 1999.
[4] TORRES, C. Diseo y construccin de un inversor trifsico controlado por PWM.
Universidad tecnolgica de Pereira, Pereira, Colombia, 2006.
[5] Introduccin a la electrnica de potencia. Tema 2, electrnica industrial [En lnea].
<http://www.iuma.ulpgc.es/~roberto/asignaturas/EI/transparencias/EI_Tema_2.Intro_EP.pdf >
[6] TONELLI, M. Modulacin vectorial de inversores de potencia. Universidad de la plata,
La plata, Argentina, 2004.
[7] GUAMASCHELLI, D. Apunte de ctedra: Electrnica II. [En lnea]
< http://www.frsf.utn.edu.ar/matero/visitante/bajar_apunte.php?id_catedra=192&id_apunte=2951 >
[8] LONDOO, C. Anlisis y simulacin de algunas estrategias de control SPWM y
SVPWM en corriente para un puente inversor. Universidad Tecnolgica de Pereira,
Colombia, 2008.
[9] IRIBE, V. PEREZ, J. BERISTAIN, J. y AGANZA, A. Implementacin de la tcnica de
modulacin de vectores espaciales utilizando un controlador digital de seal
dsPIC30F3010. RIEE&C, Revista de ingeniera elctrica, electrnica y computacin, Vol.6
No. 1, Junio 2009.
[10] VALENTINE, R. AC Induction Motor Control. Motor. Control Electronics
Hand Book, McGraw-Hill.1999.
[11] ZHOU, K. WANG, D. Relationship between Space-Vector Modulation and threephase carrier-based PWM: A comprehensive analysis. IEEE transactions on industrial
electronics, Vol. 49, N 1, February 2002.
[12] POSADA, J. Modulacin por ancho de pulso (PWM) y modulacin vectorial (SVM):
Una introduccin a las tcnicas de modulacin. El hombre y la mquina, N 25, pp 70-83.
Universidad Autnoma de Occidente, Julio-diciembre 2005.
[13] PRASAD, V. BOROJEVIC, D. ZHANG, R. Analysis and comparison of Space vector
modulation schemes for three-leg and four-leg voltage source inverters. Applied power
electronics conference and exposition, Vol.2, 1997.
70
71
ANEXOS
Anexo A: Hoja de datos tcnicos del IGBT IRG4PC50FD
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include <stdlib.h>
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <math.h>
#define PI 3.141592
#define f 60
#define Ts 0.0166/10
#define vdc 4 //seal de entrada al inversor ser 4 volts DC
#define w 2*PI*60
using namespace std;
int main(int argc, char *argv[])
{
short int n1,S1,S2,S3,S4,S5,S6,sal1,sal2,sal3,sal4,sal5,sal6;
float i;
floatT,alpha1,m,m1,alpha,r,t,va,vb,vc,vd,vq,mag,vmax,sector,Ta,Tb,T0,S,x,y,z,j2,o,Tz;
Printf ("Introduce el ndice de modulacin: ");
Scanf ("%f",&m);
T=100; //tiempo de actuacin
if (T>0) // para un valor de tiempo=0 no ejecuta el programa
{
for (i=1; i<=3600000; i+=0.005)
{
r=(i*PI/180);
t=r/(w); // tiempo hallado de wt=ngulo de la seal seno
if (t<T) // condicional para que el programa pare
{
mag=vdc/sqrt(3);
va= mag*sin(r);
vb=mag*sin(r-(2*PI/3)); //sistema trifsico
vc=mag*sin(r+(2*PI/3));
vd=2*((va)+(vb*cos(2*PI/3))+(vc*cos(4*PI/3)))/3;
vq=2*((vb*sin(2*PI/3))+(vc*sin(4*PI/3)))/3;
if ( vd>0 && vq>0) // clculo del ngulo de referencia
{
89
alpha=atan(vq/vd);
}
else if (vd>0 && vq<0)
{
alpha=2*PI+atan(vq/vd);
}
else if (vd<0 && vq<0)
{
alpha= PI+atan(vq/vd);
}
else if (vd<0 && vq>0)
{
alpha= PI+atan(vq/vd);
}
sector=ceill((alpha*3)/PI); //sector
n1=ceill(sector);
alpha1= (alpha*180/PI);
if (m>=0.5 && m<=1)
{
m1=m;
o=m/4; // RELACIN PARA EL ERROR DEL LOS TIEMPOS
switch(n1)
{
case 1 :
Ta=(sqrt(3)/2)*Ts*m1*cos(((PI/6))+(PI/6))/4;
break;
case 2 :
Ta=(sqrt(3)/2)*Ts*m1*cos((PI/2)+(11*PI/6))/4;
break;
case 3 :
Ta=(sqrt(3)/2)*Ts*m1*cos((5*PI/6)+(3*PI/2))/4;
break;
case 4 :
Ta=(sqrt(3)/2)*Ts*m1*cos((7*PI/6)+(7*PI/6))/4;
break;
case 5 :
Ta=(sqrt(3)/2)*Ts*m1*cos((9*PI/6)+(5*PI/6))/4;
break;
case 6 :
Ta=(sqrt(3)/2)*Ts*m1*cos((11*PI/6)+(PI/2))/4;
break;
90
default:;
}
switch(n1)
{
case 1 :
Tb=(sqrt(3)/2)*Ts*m1*cos((PI/6)+(3*PI/2))/4;
break;
case 2 :
Tb=(sqrt(3)/2)*Ts*m1*cos((PI/2)+(7*PI/6))/4;
break;
case 3 :
Tb=(sqrt(3)/2)*Ts*m1*cos((5*PI/6)+(5*PI/6))/4;
break;
case 4 :
Tb=(sqrt(3)/2)*Ts*m1*cos((7*PI/6)+(PI/2))/4;
break;
case 5 :
Tb=(sqrt(3)/2)*Ts*m1*cos((9*PI/6)+(PI/6))/4;
break;
case 6 :
Tb=(sqrt(3)/2)*Ts*m1*cos((11*PI/6)+(11*PI/6))/4;
break;
default:;
}
switch(n1)
{
case 1 :
T0= (Ts-Ta-Tb)/(5/o);
case 2 :
T0=(Ts-Ta-Tb)/(5/o);
break;
case 3 :
T0=(Ts-Ta-Tb)/(5/o);
break;
case 4 :
T0=(Ts-Ta-Tb)/(5/o);
break;
case 5 :
T0=(Ts-Ta-Tb)/(5/o);
break;
case 6 :
T0=(Ts-Ta-Tb)/(5/o);
91
break;
default:;
}
else
{
return 0;
}
x=Ta/4;
y=Tb/4;
z=T0;
Tz=T0+Tb+Ta;
j2=0;
do
{
j2=j2+1;
}
while(t > j2*Tz);
S1=0;
S2=1;
S3=0;
S4=1;
S5=0;
S6=1;
//primer pulso
if((j2-1)*Tz<t && j2*Tz>=t)
{
if(((j2-1)*Tz+z)>t)
{
S1=0;
S2=1;
}
else if(((j2-1)*Tz+z)<t && (j2*Tz)-z>t )
{
S1=1;
S2=0;
}
else if ((j2*Tz)-z<t && (j2*Tz)>=t)
{
S1=0;
S2=1;
92
}
}
// Segundo pulso
if((j2-1)*Tz<t && j2*Tz>=t)
{
if(((j2-1)*Tz+z+x)>t)
{
S3=0;
S4=1;
}
else if(((j2-1)*Tz+z+x)<t && (j2*Tz)-z-x>t )
{
S3=1;
S4=0;
}
else if ((j2*Tz)-z-x<t && (j2*Tz)>=t)
{
S3=0;
S4=1;
}
}
//tercer pulso
if((j2-1)*Tz<t && j2*Tz>=t)
{
if(((j2-1)*Tz+z+x+y)>t)
{
S5=0;
S6=1;
}
else if(((j2-1)*Tz+z+x+y)<t && (j2*Tz)-z-x-y>t )
{
S5=1;
S6=0;
}
else if ((j2*Tz)-z-x-y<t && (j2*Tz)>=t)
{
S5=0;
S6=1;
}
}
93
sal5=S1;
sal6=S2;
}
else if (n1==6)
{
sal1=S1;
sal2=S2;
sal3=S5;
sal4=S6;
sal5=S3;
sal6=S4;
}
printf("__sal1=%d__sal3=%d__sal5=%d__n1=%d_t=%.4f\n",sal1,sal3,sal5,n1,t);
}
else
{
return(0);
}
} }
system("PAUSE");
return EXIT_SUCCESS;
}
95
/**********************Progamacion C codewarrior**************////////
#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */
#include "main_asm.h" /* interface to the assembly module */
#include <stdio.h>
#include<math.h>
#define f 60
#define vdc 4
#define m 0.5
#define PI 3.141516
//inicializacin de variables
float t, w, r, mag;
short int sal1,sal2,sal3,sal4,sal5,sal6,S1,S2,S3,S4,S5,S6;
unsigned int sector,j2,i,n1;
// interrupciones//
//void interrupt(nombre de la funcin de interrupcion)
//subrutinas//
void funcion(){
float T0,Ta,Tb,Ts,z1,z2;
T0=0.000145/2; Ta=0.000145/2; Tb=0.00007; Ts=0.0005;
z1=Tb+T0;
z2=T0+Ta+Tb;
mag=vdc/sqrt(3);
w=2*PI*f;
96
j2=0;
n1=0;
CONFIG1_COPD = 1;
for(i=1;i<=20000;i++){
r=(i*PI)/180;
t=(r/w);
if(t > j2*Ts){ j2=j2+1; }
else {}
////****primer pulso****/////////////
if((j2-1)*Ts+Tb>t){
S1=0;S2=1; }
if((j2-1)*Ts+Tb<t &&(j2*Ts)-Tb>=t){
S1=1;S2=0; }
if(((j2*Ts)-Tb<t) &&(j2*Ts)>t){
S1=0;S2=1; }
if((j2-1)*Ts+z1>t){
S3=0;S4=1; }
S3=1;S4=0; }
S3=0;S4=1; }
///////*********tercer pulso*******///////
if((j2-1)*Ts+z2>t){
S5=0;S6=1;
S5=1;S6=0;
S5=0;S6=1;
/////////************////////////////////
n1++;
if(n1<=360){
97
if(n1<=60)
{ sector=1;
sal1=S1;
sal2=S2;
sal3=S3;
sal4=S4;
sal5=S5;
sal6=S6; }
if(n1>60 && n1<=120){ sector=2;
sal1=S3;
sal2=S4;
sal3=S1;
sal4=S2;
sal5=S5;
sal6=S6; }
if(n1>120 && n1<=180){ sector=3;
sal1=S5;
sal2=S6;
sal3=S1;
sal4=S2;
sal5=S3;
sal6=S4; }
if(n1>180 && n1<=240){ sector=4;
sal1=S5;
sal2=S6;
sal3=S3;
98
sal4=S4;
sal5=S1;
sal6=S2; }
if(n1>240 && n1<=300){ sector=5;
sal1=S3;
sal2=S4;
sal3=S5;
sal4=S6;
sal5=S1;
sal6=S2; }
if(n1>300 && n1<=360){ sector=6;
sal1=S1;
sal2=S2;
sal3=S5;
sal4=S6;
sal5=S3;
sal6=S4; }
}
else { n1=0; }
// if(t>=T) break;// comparador que para el programa
__RESET_WATCHDOG();
}
}
//cuerpo del programa//
void main(void) {
//configuracion de puertos//
funcion();
99
}
//Asignacin de puertos para el microcontrolador
void Configuracionpuertossalida();{
DDRA_DDRA0=1; DDRA_DDRA1=1;
DDRA_DDRA2=1; DDRA_DDRA3=1;
DDRA_DDRA4=1; DDRA_DDRA5=1;
if(n1<=60)
{ sector=1;
PTA_PTA0=S1;
PTA_PTA1=S2;
PTA_PTA2=S3;
PTA_PTA3=S4;
PTA_PTA4=S5;
PTA_PTA5=S6; }
PTA_PTA1=S4;
PTA_PTA2=S1;
PTA_PTA3=S2;
PTA_PTA4=S5;
PTA_PTA5=S6; }
PTA_PTA1=S6;
PTA_PTA2=S1;
PTA_PTA3=S2;
PTA_PTA4=S3;
PTA_PTA5=S4; }
PTA_PTA1=S6;
PTA_PTA2=S3;
PTA_PTA3=S4;
PTA_PTA4=S1;
PTA_PTA5=S2; }
PTA_PTA1=S4;
PTA_PTA2=S5;
PTA_PTA3=S6;
PTA_PTA4=S1;
PTA_PTA5=S2; }
PTA_PTA1=S2;
PTA_PTA2=S5;
PTA_PTA3=S6;
PTA_PTA4=S3;
PTA_PTA5=S4; } }
100