Вы находитесь на странице: 1из 17

INVERSOR DC/AC DE ONDA PURA PARA CARGAS MONOFASICAS A

TRAVEZ DE SPWM CON ARDUINO

JAIME POTES PARDO


ALDAIR JACOME
MICHAEL CHARRIS

PROFESOR
ING. VICTOR OLIVEROS

ELECTRONICA III

INGENIERIA ELECTRONICA
FACULTAD DE INGENIERIA
UNIVERSIDAD DEL MAGDALENA
SANTA MARTA DTCH
2016-II
INTRODUCCION

Hoy en da el eje de la vida cotidiana es la energa elctrica, prcticamente


todos los elementos de uso diario utilizan energa elctrica de diversas
maneras. El propsito de este proyecto es disear e implementar un
convertidor DC/AC para transformar el voltaje DC de una fuente de voltaje
(batera, panel fotovoltaico, generador elico, etc.), en una seal sinusoidal
pura de aproximadamente 110 VAC a 60 Hz; haciendo uso del mtodo de
SPWM para la generacin de la onda sinusoidal pura, esta parte se podra
decir que es el punto principal del proyecto, el SPWM se puede realizar de
manera anloga o digital, en este proyecto se pondr en uso de manera
digital, de este proceso se har cargo el microcontrolador, el cual tendr
como funcin tomar una seal seno de referencia y encargarse de que la
parte de potencia (MOSFET) entregue la seal final con los parmetros
adecuados.
OBJETIVOS

OBJETIVO GENERAL

Disear e implementar un inversor de corriente dc/ac de onda pura para


cargas monofsicas a travs de spwm con microcontroladores, funcional.

OBJETIVOS ESPECIFICOS

Hacer uso de SPWM utilizando microcontroladores para generar una


onda sinusoidal pura
Realizar adecuadamente una etapa de potencia que me permita
generar un voltaje de 110 VAC
Combinar adecuadamente la frecuencia y fase de mi seal generada
con la seal de la red elctrica
DISEO

SPWM
Para controlar el voltaje de salida de los inversores, se necesita con
frecuencia hacer frente a las variaciones de voltaje. El mtodo ms
eficiente de controlar la ganancia es incorporar controlo por PWM
(Pulse Width Modulation) en los inversores. Uno de los usos comunes
de la PWM es la SPWM (Sinusoidal Pulse Width Modulation), en la cual
se hace variar el ancho de cada pulso en proporcin o funcin de la
amplitud de una onda senoidal.

Esta seal, va a ser generada por una board de hardware libre


arduino, ms especficamente, arduino uno; por medio de la
programacin de esta tarjeta se obtendrn dos seales SPWM, porque
dos? Si solo necesitamos una onda sinodal. Pues, los pines digitales
del arduino solo pueden dar como valores de salida voltajes en el
intervalo de 0 V hasta 5 V, en los pines para PWM, cosa que dificulta
el encontrar en qu momento se encuentra la seal en el medio ciclo
positivo o en el medico ciclo negativo, ya que generara una onda
sinoidal pero de voltaje pico a pico completamente positivo.

Para solucionar ese problema se opt por generar dos seales PWM
pero solo de medio ciclo cada una, y adems cada una de esas
seales esta desfada 90 una con respecto a la otra. De esta manera
se puede diferenciar un ciclo positivo y el ciclo negativo (al ser las
seales simtricas entre si no hay problemas para decidir cual seal
ser la del ciclo positivo y cul del ciclo negativo, las dos sirven para
cualquiera de estos ciclos). Adicional a estas dos seales, la
programacin genera una seal cuadrada la cual se encuentra en uno
lgico durante medio ciclo adems se encuentra sincronizada con una
de las seales SPWM.
Simulacin Original.
INVERSORES

Antes de pasar al diseo interno del inversor hay que decidir primero
el tipo de inversor a disear. Primero que todo, los inversores se
pueden clasificar segn el nmero de fases que vayan a suministrar,
monofsicos y trifsicos; en este proyecto vamos a implementar un
inversor monofsico.

Primera base o estndar de trabajo seleccionado, ahora, la manera en


que se va a generar la seal de onda pura puede ser anloga,
utilizando componentes semiconductores para la generacin de la
seal SPWM; el otro mtodo es generar la SPWM de manera digital
utilizando microcontroladores o algn otro tipo de controlador o
procesador digital. En este caso nuestro inversor va a generar la
SPWM de manera digital utilizando microcontroladores, ya sea con los
Atmega utilizados en arduino o microcontroladores PIC, como la serie
16Fx de MICROCHIP, en nuestro caso fue el Atmega328. Otro tipo de
clasificacin para los inversores es la fuente de energa que alimenta
inicialmente al inversor, corriente o voltaje, en este caso vamos a
utilizar ya sea una de las fuentes de voltaje del laboratorio o una
batera de moto o carro, en ambos casos son fuentes de voltaje
relativamente estable. Tercer lineamiento seleccionado, el cuarto y
ltimo tipo de clasificacin que vamos a tener en cuenta es el tipo de
topologa de potencia, es decir la manera en que la parte de potencia
va a generar la seal de salida. Las topologas de potencia ms
comunes son:
1. Topologa Push-Pull: se basa en el empleo de un transformador
con TAP central, de manera que con nicamente dos interruptores
se consigue aplicar a la carga tensiones desde el valor positivo del
bus de continua hasta el mismo valor de polaridad contraria.

2. Topologa
Medio
Puente: se
basan en
generar una
tensin
intermedia a
travs de un
par de condensadores, esta topologa aplicar a la carga una
tensin mxima de la mitad del valor de tensin del bus DC. Los
interruptores deben soportar la tensin total, es decir, la suma de
ambas fuentes.

3. Topologa Puente
Completo: emplea cuatro
interruptores. De esta forma,
con una sola fuente de
continua, se pueden aplicar a
la carga tanto tensiones
positivas como negativas o
cero con un simple cambio
de los interruptores que
conducen en cada momento.
En este caso, utilizaremos la topologa de puente completo la cual
nos ofrece las ventajas de:
La tensin aplicada en la carga es la tensin de la fuente de
continua (Salvo polaridad).
Se puede aplicar a la carga +Vdc, Vdc y 0V .
Mejor utilizacin del bus DC. Ya que la tensin mxima de
salida es la tensin del bus DC
La tensin que deben soportar los interruptores es el valor
de la fuente de continua
Ahora hagamos recuento de los parmetros establecidos para nuestro
inversor:
1. Monofsico
2. Digital, por lo que utilizara microcontroladores (Arduino)
3. Fuente original para hacer la conversin, es de voltaje constante
4. Inversor de Puente completo
Ya definidas las bases generales del inversor se comienza el diseo interno
del mismo, teniendo como base las decisiones tomadas anteriormente.
Al manejar solo una fase solo hay que disear una etapa de potencia y una
seal SPWM, ahorrando as trabajo. Como es digital la generacin del SPWM
se facilita ya que solo se necesita realizar una programacin que la genere,
la cual contara con una seal de onda cuadrada la cual cambia de estado
cada medio ciclo, y la seal PWM en funcin de la amplitud de la seal seno.
Esto para generar la conmutacin adecuada de los MOSFET de la etapa de
potencia.
La etapa de potencia se realizara a travs de un puente completo tambin
conocido como puente H, el cual ser controlado por drivers que en funcin
de la seal SPWM entregada por el microcontrolador realizaran la
conmutacin de los MOSFET.
A la salida de la etapa de potencia se colocara un filtro para suprimir
armnicos no deseados. Aqu si se quisiera trabajar en una red aislada
estara listo para ser suministrada la energia. Pero si se trabaja conectado a
la red habra que realizar una etapa de acoplamiento entre la seal

SPWM+SEAL
generada y la seal de la red.

CIRCUITO
4.1. Diagrama de diseo

ES CONMUTADOR ETAPA DE
ETAPA DE
CUADRADAS PARA LA FILTROS ACOPLAMIENT
POTENCIA
(UNA INVERSA O (OPCIONAL)
Diagrama de bloques

ETAPA DE
A LA OTRA) POTENCIA
Controlador
Compuertas
Arduino es MOSFET
logicas
IR2110

Puente H
con
Filtro C
MOSFET de
potencia
Diagrama de Componentes

4.2. METODOLOGIA DE DISEO


Siguiendo la lgica de los diagramas anteriores, lo primero que nos
dedicamos a realizar e investigar fue la programacin para el arduino que
nos generara las seales SPWM y las cuadradas a aproximadamente 60 Hz.
Despus de consultar muchos tutoriales y de intentar realizar el cdigo por
nosotros mismos (no logrando generar las seales cuadradas
adecuadamente). Encontramos un tutorial en el cual haban varios cdigos
para generar las seales SPWM (Terbytes, 2016) y una de las seales
cuadradas.

Ya teniendo las seales Spwm solo se conecta la seal cuadrada a una


compuerta NOT la cual nos generara nuestra segunda seal cuadrada con el
debido desface, la cual estar sincronizada con nuestra segunda SPWM.
De ahora estas seales deben ir a unos controladores de MOSFET los cuales
tendrn como funcin activar adecuadamente los MOSFET del puente H.
Para esta funcin se utilizo el circuito integrado IR2110, de International
Rectifier, Esta integrado tiene una notable caracterstica, pues puefe
alimentar dos MOSFET o dos IGBT de una misma fase, desde una referencia
comn. El IR2110 permiteal par de transistores trabajar con tensiones de
alimentacin continua de hasta 600Vdc. Las caractersticas funcionales del
integrado son las siguientes:

Diseado para operar como bootstrap 1


entre canales flotantes
Tensiones de operacin mxima +500V
y +600V
Inmune al transiotrio negativa dv/dt
Rango de alimentacin de gate desde
10 a 20 V
Fuente de alimentacin deparada de 5
a 20V
Proceso de apagado entre ciclo y ciclo
Salidas en fase con las entradas

Ir2110 en proteus

A cada
controlador debe
entrar una seal
SPWM y una
cuadrada que
debe estar
desfasada a la
SPWM para que
de esta manera
funcionen
despus el puente H.

Teniendo en cuenta que el puente completo del inversor manejara


corrientes altas, 1 amperio o ms, hay que seleccionar con
precaucin los dispositivos de conmutacin.

Para el puente H se seleccionaron Mosfet IRZ44N, los cuales son


capaces de manejar una corriente de hasta 50 amperios lo cual lo
hace una buena opcin para circuitos en los cuales se necesita
potencia, como este.

Con estos transistores se plane hacer la parte de puente H, y se


adecuaron de acuerdo al siguiente circuito. (ya que el proteus no

1 un circuito de bootstrap es uno donde se aplica parte de la salida de una


etapa de amplificador a la entrada, a fin de alterar la impedancia de entrada
del amplificador
cuenta con el IRFZ44N dentro de sus componentes se procedi a
reemplazarlo por un 2n7002, pero solo en las simulaciones)

En esta parte la resistencia que dice carga ser la simulacin de donde ira la
conexin del transformador elevador de voltaje luego de esto, paralelo a las
salidas del transformador, o paralelo al dispositivo a conectar, se conectara
un capacitor el cual tendr como funcin el filtrar las seales a alta
frecuencia dejando solo las bandas laterales de la onda generada, es decir,
si se seleccion bien el capacitor, debera medirse correctamente una seal
Sinusoidal completa y con
frecuencia de
aproximadamente 60 Hz.

De esta manera tericamente


deba funcionar nuestro
inversor. La primera parte
funciono correctamente se
generaron correctamente las
seales SPWM y las cuadradas
(ver imagen), el inconveniente
vino fue con los controladores de MOSFET los cuales no funcionaron
correctamente por lo cual no se pudo seguir el diseo implementado en este
informe al pie de la letra. Se intent utilizando distintas configuraciones
para dicho controlador pero todo fue en vano.
Como solucin a este problema se decidi utilizar un puente H
generalmente utilizado para controlar inversin de giro en motores DC, el
cual es un mdulo L298n, el cual cuenta con dos puentes H independientes
formados por transistores BJT npn; cuenta con un mximo de corriente de
salida de 2 Amperios y 35 V, a este solo tuvimos que ingresarles como seal
de entrada las dos seales SPWM a las entradas de uno de los dos puentes
H independientes, teniendo como resultado dos seales SPWM amplificadas
y pasadas de aproximadamente 12 Vdc a 8 Vac.

Esos 8 Vac se le ingresan al transformador y despus se mide el voltaje AC a


la salida y se va subiendo o bajando el voltaje de alimentacin dependiendo
de si a la salida del transformador hay o no 110 V ac.

Nosotros contamos con transformador genrico de 12V a 115 V pero este


transformador es de 4,2 amperios por lo cual la sola corriente utilizada por
el transformador es alta. Cuando se conecta una carga relativamente alta el
puente H comienza a calentar por lo cual solo dejamos conectado el sistema
lo suficiente para hacer algunas mediciones.

4.3. EXPLICACION DEL FUNCIONAMIENTO DEL SISTEMA


La parte inicial del inversor se va a realizar puramente a travs de la
programacin del microcontrolador, este nos va a generar dos seales una
seal SPWM estas dos seales se van a conectar a las entradas 1 y 2 del
mdulo L298n (las entradas 3 y 4 tambin sirven) de aqu salen dos seales
estas se envan directamente al transformador se le ubica un capacitor en
paralelo a las salidas del transformador, y de ah ya puede conectarse
adecuadamente a cualquier carga monofsica que consuma poca corriente
(para mejora de vida til de L298n)
5. PROBLEMAS Y RETOS A SOLUCIONAR
(a)Realizar adecuadamente la seal SPWM con el
microcontrolador a la frecuencia adecuada
(b)Utilizar adecuadamente el controlador de Mosfet
(c) Realizar bien la etapa de filtros de tal manera que no
atenu demasiado la seal limpia que sale de la etapa de
potencia
(d)Realizar bien la etapa de potencia, para poder aprovechar lo
mejor posible la energa y que esta no oscile sino que
mantenga los 110V de manera adecuada
(e)Conseguir o disear el transformador adecuado para elevar
el voltaje.

CONCLUSIONES
El disear e implementar un inversor monofsico hay que tener en cuenta
muchas cosas, ya que este est dividido en varias partes, todas y cada una
fundamental para la seal final.
A pesar de que se utilice como gua documentos de circuitos ya
implementados eso no asegura que el circuito montado por uno funcione
adecuadamente.
Es necesario mejora la potencia de salida del inversor para evitar que
cuando se conecte una carga a la salida del inversor el voltaje disminuya
demasiado.
Para realizar un inversor no es necesario un esquemtico muy complicado,
puede realizarse con un circuito o esquemtico bastante sencillo (un
arduino, un mdulo, un transformador y capacitor)
Al momento de disear no solo hay que tener en cuenta las diferentes
cargas que se van a conectar al sistema si no tambin la potencia disipada
o consumida por los implementos utilizados en el circuito.
BIBLIOGRAFIA

1. Diseo e Implementacin de un inversor DC/AC para Implantar


en un Sistema Fotovoltaico para Suministrar Energa Elctrica
a una Finca. Bocachica, Franci; Hernndez Miguel. Universidad de
San Buenaventura 2009

2. Diseo e Implementacin Experimental de un Inversor


Monofsico Operando en Modo Isla. Martin Delgado, Ral.
Universidad Carlos II 2012

3. Diseo Didctico de Convertidores CD-CA (a): Inversor


Monofsico. Meja, Luna; Moctezuma, Gregorio; Mendoza, Abraham;
Campos, Daniel.

4. Generacin de Seales Sinodales Mediante PWM y Filtros


activo de segundo Orden: Cortes, Jimmy. Universidad Tecnolgica
de Pereira

5. Implementation of an sPWM signal.


https://github.com/Terbytes/Arduino-Atmel-sPWM

6. Datasheet L298n y IRZ 44N


ANEXOS
ANEXO A: Codigo de programacin

#include <avr/io.h>
#include <avr/interrupt.h>

#define LookupEntries (512)

//Varible declaration
static int microMHz = 16; // Micro clock frequency
static int freq; // Sinusoidal frequency
static long int period; // Period of PWM in clock cycles. 1600 gives
10KHz.
static unsigned int lookUp[LookupEntries];
static char theTCCR1A = 0b10000010; //varible for TCCR1A
static unsigned long int phaseinc, switchFreq;
static double phaseincMult;

//Function prototypes
int setFreq(int _freq);
int setSwitchFreq(int sfreq);
void registerInit(void);

void setup(){
Serial.begin(9600);
setSwitchFreq(10000);
setFreq(60);
registerInit();
}

void loop(){

/*// Un-comment inorder to read from A1 to change the switching


frequency, note that if you have a noisey potentiometer the
// it will disrupt the signal as the lookup table needs to be
regenerated everytime the switing frequency is changed
int sensorValue = analogRead(A1);
static int sensorValue2;
if(sensorValue > sensorValue2*1.01 || sensorValue <
sensorValue2*0.99){
sensorValue2 = sensorValue;
setSwitchFreq(map(sensorValue, 0, 1023, 1000, 19000));

Serial.println(switchFreq);
Serial.print(phaseinc>>23);
Serial.print(".");
Serial.print(phaseinc&0x007FFFFF);
Serial.print("\n");
}

// Value read in from A0 changes the frequency of the sine wave


int sensorValue = analogRead(A0);
static int sensorValue2;
if(sensorValue > sensorValue2*1.01 || sensorValue <
sensorValue2*0.99){
sensorValue2 = sensorValue;
setFreq(map(sensorValue, 0, 1023, 5, 300));

Serial.print(phaseinc>>23);
Serial.print(".");
Serial.print(phaseinc&0x007FFFFF);
Serial.print("\n");
}*/
}

ISR(TIMER1_OVF_vect){
static unsigned long int phase, lastphase;
static char delay1, trig = LOW;

phase += phaseinc;

if(delay1 > 0){ // toggle the output pins one ISR call after phase has
overflowed
theTCCR1A ^= 0b10100000;// Toggle connect and disconnect of
compare output A and B.
TCCR1A = theTCCR1A;
delay1 = 0;
}
else if((phase>>31 != lastphase>>31) && !(phase>>31)){ //if
phase has overflowed . . .
delay1++;
trig = !trig;
digitalWrite(13,trig); // pin can be used as triggre on oscilloscope
}
lastphase = phase;

OCR1A = OCR1B = lookUp[phase >> 23];

int setFreq(int _freq){


if(_freq < 0 || _freq > 1000){ // returns 0 if the frequency value is
invalid
return 0;
} else {
freq = _freq;
phaseinc = (unsigned long int) phaseincMult*_freq;
return 1; // returns 1 if freqency set sucessfully
}
}

int setSwitchFreq(int sfreq){


double temp;

if(sfreq <= 0 || sfreq > 20000){


return 0;
} else {
switchFreq = sfreq;
period = microMHz*1e6/sfreq;
cli(); //disable global interupts while lookup table is made
TCCR1A = 0b00000010; //disconnect compare A and B while lookup
table is generated
ICR1 = period;
for(int i = 0; i < LookupEntries; i++){ // Generating the look up
table.
temp = sin(i*M_PI/LookupEntries)*period;
lookUp[i] = (int)(temp+0.5); // Round to integer.
}
//sindevisions*decimalbits/1MHz =
//1024*2^23/1e6 = 8,589.934592
phaseincMult = (double) period*8589.934592/microMHz;
phaseinc = (unsigned long int) phaseincMult*freq;
TCCR1A = theTCCR1A; // reconnect compare outputs
sei(); //re-enable interupts now that table has been made
return 1;
}
}

void registerInit(void){
// Register initilisation, see datasheet for more detail.
TCCR1A = theTCCR1A; // 0b10000010;
/*10 clear on match, set at BOTTOM for compA.
00 compB disconected initially, toggled later to clear on match, set
at BOTTOM.
00
10 WGM1 1:0 for waveform 15.
*/
TCCR1B = 0b00011001;
/*000
11 WGM1 3:2 for waveform 15.
001 no prescale on the counter.
*/
TIMSK1 = 0b00000001;
/*0000000
1 TOV1 Flag interrupt enable.
*/
sei(); // Enable global interrupts.
// Set outputs pins.
DDRB = 0b00000110; // Set PB1 and PB2 as outputs.
pinMode(13, OUTPUT); // Set trigger pin to output
}
ANEXO B: Esquematico General

Вам также может понравиться