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
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",