Академический Документы
Профессиональный Документы
Культура Документы
UTESA
1-14-0054
Matricula
Hoy en día existen varios tipos de inversores que son capaces de convertir
un voltaje de corriente directa (DC) en un voltaje de corriente alterna (AC);
físicamente la mayoría de inversores son muy parecidos en sí, pero lo que
realmente diferencia un inversor de otro es el tipo de switcheo utilizado
para activar los mosfet (interruptores) que controlaran la potencia
entregada por el equipo. En este caso estaremos estudiando el inversor
sinusoidal pulse width modulation (spwm) el cual switchea los mosfet de
manera muy seguida para ir generando una onda lo mas parecida a una
señal senoidal.
Por esa razón el inversor true online debe ofrecer una eficiencia máxima, el
voltaje exterior que reciba el inversor solo será utilizado para cargar las
baterías que alimentan la etapa de switcheo de los mosfet. En caso de que
el inversor presente alguna anomalía este debe contar con un bypass con
dispositivos semiconductores para reducir el tiempo de transferencia de
energía de una fuente a otra, así mientras un equipo especializado revisa el
inversor los equipos que dependan de este pueden seguir operando con el
voltaje proveniente del exterior mientras el bypass este activado, una vez
finalizada la revisión del inversor y que este todo en orden se puede
desactivar el bypass y volver a utilizar el voltaje proveniente del inversor.
Explicación de etapas
Microcontrolador: este es el cerebro del inversor, es el responsable de
realizar la onda spwm que va al drive que activara los mosfet. También
tomara la decisión de activar el bypass si el usuario acciona el selector
externo.
Conclusión
Este tipo de inversores es uno de los mejores que podemos encontrar en el
mercado, estos inversores son usados en laboratorios donde se necesite
mantener estable el voltaje que alimenta los equipos, en el proceso de
desarrollo de este proyecto aprendimos a generar una señal spwm que
busca imitar la forma de onda senoidal mediante pulsos continuos que
buscan imitar la onda de senoidal. Se hizo uso de un puente en H para
activar y desactivar los mosfet correctamente ya que si estos no desactivan
a tiempo se produce un corto circuito en la entrada del transformador.
Para finalizar es importante recordar que la etapa que nos permitirá tener
un inversor senoidal puro es la etapa del filtrado por esa razón debemos
elegir bien los capacitores y bobinas que utilizaremos en esta etapa para
garantizar una forma de onda correcta y estable.
Anexo el código en Arduino:
#include "avr/pgmspace.h"
#include "avr/io.h"
#include <LiquidCrystal.h>
// tabla con los valores senoidales obtenidos para activar los pines pwm
127,130,133,136,139,143,146,149,152,155,158,161,164,167,170,173,176,178,181,184,187,190,192,195,
198,200,203,205,208,210,212,215,217,219,221,223,225,227,229,231,233,234,236,238,239,240,
242,243,244,245,247,248,249,249,250,251,252,252,253,253,253,254,254,254,254,254,254,254,253,253,
253,252,252,251,250,249,249,248,247,245,244,243,242,240,239,238,236,234,233,231,229,227,225,223,
221,219,217,215,212,210,208,205,203,200,198,195,192,190,187,184,181,178,176,173,170,167,164,161,
158,155,152,149,146,143,139,136,133,130,127,124,121,118,115,111,108,105,102,99,96,93,90,87,84,81,
78,
76,73,70,67,64,62,59,56,54,51,49,46,44,42,39,37,35,33,31,29,27,25,23,21,20,18,16,15,14,12,11,10,9,7,6
,5,5,4,3,2,2,1,1,1,0,0,0,0,0,0,0,1,1,1,2,2,3,4,5,5,6,7,9,10,11,12,14,15,16,18,20,21,23,25,27,29,31,
33,35,37,39,42,44,46,49,51,54,56,59,62,64,67,70,73,76,78,81,84,87,90,93,96,99,102,105,108,111,115,1
18,121,124};
int x;
float dfreq;
const uint64_t twoTo32 = pow(2, 32); // compute value at startup and use as constant
//******************************************************************
void setup()
lcd.begin(16, 2);
lcd.print("Inversor SPWM");
lcd.setCursor(0,1);
lcd.print(".....");
pinMode(on, INPUT);
pinMode(1, OUTPUT);
pinMode(bypass, INPUT);
digitalWrite(1,LOW);
setup_timer1();
setup_timer2();
cbi (TIMSK0, TOIE0); // disable Timer0 !!! delay() is now not available
//******************************************************************
void loop()
long frequency = twoTo32 * 800 / refclk; // calulate DDS new tuning word
noInterrupts() ;
//******************************************************************
// timer1 setup
// set prscaler to 1, PWM mode to phase correct PWM, 16000000/512 = 31.25kHz clock
void setup_timer1(void)
//******************************************************************
// timer2 setup
// set prscaler to 1, PWM mode to phase correct PWM, 16000000/512 = 31.25kHz clock
void setup_timer2()
//******************************************************************
ISR(TIMER2_OVF_vect)
sbi(PORTD, TEST_PIN); // Test / set PORTD,TEST_PIN high to observe timing with a oscope
icnt = phase_accum >> 24; // use upper 8 bits for phase accu as frequency information
c4ms++;
icnt1 = 0;