Inversor Trifasico

Electrónica de Potencia 2 Inversor Trifásico con DsPic Alumnos: Santiago Baez Edgar Eduardo Martínez Méndez Adrián Pr

Views 106 Downloads 4 File size 785KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Electrónica de Potencia 2

Inversor Trifásico con DsPic

Alumnos: Santiago Baez Edgar Eduardo Martínez Méndez Adrián

Profesor: Fermi Vázquez Villanueva

19 de junio de 2017

Los inversores, o convertidores CC-CA, son un circuito utilizado para convertir corriente continua en corriente alterna. Un inversor tiene como función la de cambiar un voltaje CC de entrada en un voltaje CA simétrico a la salida, procurando que este posea la magnitud y frecuencia deseada por el usuario. Los inversores trifásicos son utilizados para la alimentación de cargas trifásicas que requieran corriente alterna. Algunas de las aplicaciones de estos inversores son las siguientes:

  

Fuentes de tensión alterna trifásica sin interrupciones Puesta en marcha de motores de corriente alterna trifásicos Conexión de fuentes que producen energía en continua con las cargas trifásicas (paneles fotovoltaicos

LCD1

7 8 9 10 11 12 13 14

D0 D1 D2 D3 D4 D5 D6 D7

RS RW E 4 5 6

1 2 3

VSS VDD VEE

LM016L

1 20 2 3 9 10 12

g RW

28 27

Incremento

D4 D5 D6 D7

RS RW E

U1

B

A

10k

C

Decremento

R1

MCLR VCAP/VDDCORE

RB0/CN4/RP0/C2IN-/AN2/EMUD1/PGD1 RB1/CN5/RP1/C2IN+/AN3/EMUC1/PGC1 RB2/CN6/RP2/AN4 RA0/CN2/VREF+/AN0 RB3/CN7/RP3/AN5 RA1/CN3/VREF-/AN1 RB4/CN1/RP4/SOSCI RA2/CN30/CLKI/OSCI RB5/CN27/RP5/ASDA1/EMUD3/PGD3 RA3/CN29/CLKO/OSCO RB6/CN24/RP6/ASCL1/EMUC3/PGC3 RA4/CN0/T1CK/SOSCO RB7/CN23/RP7/INT0 RB8/CN22/RP8/SCL1/PWM2H1/TCK RB9/CN21/RP9/SDA1/PWM2L1/TDO RB10/CN16/RP10/PWM1H3/TDI/EMUD2/PGD2 RB11/CN15/RP11/PWM1L3/TMS/EMUC2/PGC2 RB12/CN14/RP12/PWM1H2 RB13/CN13/RP13/PWM1L2 AVDD RB14/CN12/RP14/PWM1H1 AVSS RB15/CN11/RP15/PWM1L1

4 5 6 7 11 14 15 16 17 18 21 22 23 24 25 26

S. Giro

g

1

RS E D4 D5 D6 D7

R2

R3

1.2k

1.2k

A

R4 1.2k

B C D

H3 L3 H2 L2 H1 L1

C4

C5

2.2uF

2.2uF

C6 2.2uF

DSPIC33FJ32MC202 +24V +24V

+24V

+15V +15V

D1

D2

C1

H1

10 11

L1

12

HIN

3

U2

VC

VB

SD LIN

COM

HO VS LO

1N4148

3

Q1 6

+15V

C2 0.47uF

D3

0.47uF

IRF540

H2

7 5 1

10 11

L2

12

HIN

VC

SD LIN

COM

U3 VB HO VS LO

1N4148

Q3 H3

7 5 1

IR2112

Q2

B 2

10 11

A 2

3

IRF540 6

L3

12

HIN

VC

SD LIN

COM

U4 VB HO VS LO

1N4148

C3 0.47uF

Q5 IRF540

6 7 5 1 C

IR2112

IRF540

Q4 IRF540

2

IR2112

Q6 IRF540

Diagrama General del inversor trifásico

DsPIC

Es un microcontrolador es un circuito integrado digital que puede ser programado para diversas tareas. Los lenguajes típicos que se usan para este caso son ensamblador y C, pero su compilación tiene que ser en hexadecimal.

Diagrama del DsPIC

Mediante el DsPic se generaran lo pulsos de PWM que entraran a los drives, estos pulsos estarán regulados por push botón desde el micro. Otra de las tareas a programar en el micro es el desfase de cada una de las líneas con respecto a la otra, este desfase debe de ser de 120° entre cada línea. Después de haber programado el micropocesador se simula. A continuación, en la siguiente figura, se muestran las formas de onda desfasadas 120°. Las siguientes imágenes muestran la correcta programación del DsPIC

Pulsos que salen del DsPIC a los drivers

Ondas desfasadas 120°, imagen el osciloscopio en el simulador

Implementación de circuito Después de la programación y simulación del circuito se precedió al ensamble.

Circuito ensamblado

Después de ensamblar el circuito, se procedió a realizar las pruebas del mismo. A continuación se muestran las señales obtenidas.

La siguiente imagen, muestra el desfasamiento entre cada una de la fases, esta debe de ser de 120° entre cada línea. Se observan sólo dos líneas, ya que el osciloscopio cuenta únicamente con dos canales y no es posible visualizar la tercera línea, con su respectivo desfasamiento.

La siguiente imagen muestra el display y como este da en tiempo real el ciclo de trabajo del PWM, mientras más grande sea el ciclo de trabajo, más grande será el valor de la señal sinusoidal obtenida.

Se mostró que es posible realizar el inversor trifásico de baja calidad, controlando su amplitud mediante el ancho de pulso (PWM). La construcción de este también se llevó acabo con pocos elementos. Esta práctica mostró que para este caso es necesario tener las tierras comunes, ya que sino los drivers no activaban, esto se debe a que los pulsos de DsPIC no estaban referenciados y el micro no lo detectaba.

MATERIAL LCD dsPIC33FJ32MC202 6 MOSFET 3 DRIVER IR2110 3 DIODOS MUR 160 3 CAPACITORES 105 CABLES PROTOBOAR

3 CONDENSADORES DE 22U 3 RESISTENCIA DE 1.2K

Código del Micro

#include "stdio.h"

void config_timer1(void){

#include "config.h"

T1CONbits.TCS = 0;

#include "LCD.h"

T1CONbits.TGATE = 0;

#include "xc.h"

T1CONbits.TCKPS = 1;

#include "libpic30.h"

PR1 = cuenta_timer1;

#define PREESCALA 8

IPC0bits.T1IP = 1;

#define FTEMP 100 //Hz, T = 10 ms

IFS0bits.T1IF = 0;

int cuenta_timer1 (FCY/(FTEMP*PREESCALA))-1;

=

IEC0bits.T1IE = 1; T1CONbits.TON = 1;

short bandera = 0;

}

void _ISR _T1Interrupt(void){ IFS0bits.T1IF = 0;

#define NUM_MUESTRAS 36

bandera = 1; }_FOSCSEL( IESO_ON )

#define OFFSET_180 18 FNOSC_FRC

&

_FOSC( POSCMD_NONE OSCIOFNC_ON FCKSM_CSECMD)

& &

_FWDT( FWDTEN_OFF) _FICD( ICS_PGD1 & JTAGEN_OFF ) _FPOR( LPOL_ON & HPOL_ON & PWMPIN_ON)

#define OFFSET_120 12 #define OFFSET_240 24

unsigned int muestrasSeno[NUM_MUESTRAS] = { 17059, 25588,

20021, 28024,

22893,

30126, 33858,

31832, 34118,

33089,

33858, 30126,

33089, 28024,

31832,

25588, 17059,

22893, 14096,

20021,

11224, 3991,

8529,

6093,

PWM1CON1bits.PEN1H = 1; PWM1CON1bits.PEN2L = 1; PWM1CON1bits.PEN2H = 1; PWM1CON1bits.PEN3L = 1; PWM1CON1bits.PEN3H = 1; AD1PCFGLbits.PCFG5 = 1;

2285, RPINR12bits.FLTA1R = 3;

1028, 1028, 2285, 8529,

259,

0,

259, TRISBbits.TRISB3 = 1;

3991, 11224,

6093,

P1FLTACONbits.FAEN2 = 1;

14096

P1FLTACONbits.FAEN3 = 1;

};

P1FLTACONbits.FLTAM = 1;

#define FPWM 2160

P1FLTACONbits.FAOV1H = 0;

#define PRESCALA 1 unsigned int ValRegPer ((FCY/(FPWM*PRESCALA))-1); void InitPWM( void ){ P1TCONbits.PTEN = 0; P1TCONbits.PTCKPS = 0; P1TCONbits.PTMOD = 0; P1TMR = 0; P1TPER = ValRegPer; PWM1CON1bits.PMOD1 = 0; PWM1CON1bits.PMOD2 = 0; PWM1CON1bits.PMOD3 = 0; PWM1CON1bits.PEN1L = 1;

P1FLTACONbits.FAEN1 = 1;

P1FLTACONbits.FAOV1L = 0; =

P1FLTACONbits.FAOV2H = 0; P1FLTACONbits.FAOV2L = 0; P1FLTACONbits.FAOV3H = 0; P1FLTACONbits.FAOV3L = 0; P1DTCON1bits.DTAPS = 0; P1DTCON1bits.DTBPS = 0; P1DTCON1bits.DTA = 37; P1DTCON1bits.DTB = 37; P1DTCON2bits.DTS1A = 0; P1DTCON2bits.DTS1I = 1; P1DTCON2bits.DTS2A = 0;

P1DTCON2bits.DTS2I = 1;

indiceSen120 OFFSET_240;

P1DTCON2bits.DTS3A = 0;

=

indiceSen-

P1DC2 = escala*muestrasSeno[indiceSen120];

P1DTCON2bits.DTS3I = 1; P1TCONbits.PTOPS = 0;

indiceSen240 OFFSET_240;

IFS3bits.PWM1IF = 0;

=

indiceSen

if( indiceSen240 NUM_MUESTRAS )

IEC3bits.PWM1IE = 1;

+

>=

IPC14bits.PWM1IP = 3; indiceSen240 OFFSET_120;

P1DC1 = 0; P1DC2 = 0;

=

indiceSen-

P1DC3 = escala*muestrasSeno[indiceSen240];

P1DC3 = 0;

if(++indiceSen NUM_MUESTRAS)

P1TCONbits.PTEN = 1; }

indiceSen = 0;

short Amplitud = 95;

}

float escala = 0.95;

short contador = 0;

short indiceSen = 0;

short s_giro = 0;

void __attribute__((interrupt, auto_psv)) _MPWM1Interrupt(void){

#define INCREMENTO _RB1

IFS3bits.PWM1IF = 0; unsigned char indiceSen240;

short CT = 50;

indiceSen120,

#define DECREMENTO _RB0 #define SGIRO _RA3

P1DC1 escala*muestrasSeno[indiceSen];

=

char buffer[15]; int main(void) {

indiceSen120 OFFSET_120;

=

indiceSen

if( indiceSen120 NUM_MUESTRAS )

+ CLKDIVbits.FRCDIV = 0; >=

CLKDIVbits.PLLPOST = N2-2; CLKDIVbits.PLLPRE = N1-2; PLLFBDbits.PLLDIV = M-2;

==

RCONbits.SWDTEN=0;

bandera = 0;

__builtin_write_OSCCONH(0x01);

if( ++contador == 10 ){

__builtin_write_OSCCONL(0x01); while 0b001);

(OSCCONbits.COSC

contador = 0;

!=

if(INCREMENTO == 0){ if(Amplitud0){

LATBbits.LATB0 = 0;

Amplitud--;

TRISBbits.TRISB0 = 1;

}

CNPU1bits.CN4PUE = 1;

}

AD1PCFGLbits.PCFG2 = 1;

escala = Amplitud*0.01;

LATBbits.LATB1 = 0; TRISBbits.TRISB1 = 1; CNPU1bits.CN5PUE = 1;

lcd_gotoxy(1,2); sprintf(buffer, (float)Amplitud);

AD1PCFGLbits.PCFG3 = 1;

lcd_putstr(buffer);

LATAbits.LATA3 = 0;

}

TRISAbits.TRISA3 = 1;

}

CNPU2bits.CN29PUE = 1;

}

lcd_gotoxy(1,1);

return 0;

lcd_putstr("Hola Mundo"); while(1){ if(bandera == 1){

}

"A=

%f",