Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

SPWM Inverter calculations suggested reading

Status
Not open for further replies.

Dale Gregg

Junior Member level 3
Joined
Jul 23, 2013
Messages
29
Helped
2
Reputation
4
Reaction score
2
Trophy points
3
Location
Leeds, United Kingdom
Activity points
263
Hi, I'm working on a project designing an inverter using a H-bridge topology and PIC to control the switches. I'm using two of Marty Browns books for reference, PS cook book and world class designs, at the moment but the calculations and most of the books are centred around DC/DC converters.

Could anyone advise of any good inverter design resources that details the equations required? Or can the buck/boost theory be applied with some other considerations?

This is what I've got so far,

I have 39 values of DC for a half wave signal the average of those values is,
0.64 DCavg

50 hz Desired Frequency
0.02 T
0.01 1/2 T Half wave period
256uS T/div Carrier Period
163uS Ton Average Time on

0.2 RL Load
100 IL Desired Output Current
20 VL Resulting Voltage
2000 WL Resulting Power
0.65 Eff Estimated Efficiency
3077 WIn Required Power in
240 Vin Supply Volts
12.82 Iin Required input Current

Now, this is where I think I'm missing a RMS consideration, for the voltage to be supplied to the H-bridge (Vin) I've divided the load voltage(Vout) (should this be converted from rms?) by the average DC for a half wave.

Vin=VL/DC
31.47 Vsin

I'm probably way off which is why I'm after some further reading. Any help would be great, Thanks in advance, Dale
 

Hi Dale,

Your values for load (output) current and voltage are RMS, so

Pout = Iout • Vout
Pin = Iin • Vin

But the input current is equal to the output current (there's no current leakage in your H-bridge, just resistive losses) so

Iin = Iout --> Pout = Iin • Vout;

Given that

Pin = Pout / efficiency;

then,

Vin(RMS) = Vout(RMS) / efficiency

Vin(peak) = Vin(RMS) √2 = 43.5V

Your H-bridge must be supplied with at least 43.5Vdc.
 
Thank you for your reply,

wouldn't the Vin peak be equal to the peak of the rms Vout?

20Vrms*sqrt(2)=28.28V
 

Hi Dale,

Yes, Vin peak would be 20√2 = 28.28V if the efficiency of your H-bridge were 100%.

But you said you have an estimated efficiency of 65%, so you'll have to increase Vin(DC) to 43.5V to compensate for this inefficiency.

In other words, you'll be supplying more than 3000W to get 2000W at the load. The difference (1000W) is power loss and will be dissipated in form of heat.

Best regards.
Luis
 
Hello there can you please help me to calculate well so my signal be applicable to the gates of MOSFET via MOSFET drives;I used Tahmid approaches but I am not getting the good results please help with correction;here below are my codes:
PHP:
unsigned char sin_table[64]={0, 12, 25, 37, 50, 62, 74, 86, 97, 108,
 120, 130, 141, 151, 161, 170, 179, 187, 195, 203, 210, 217, 222, 
 228, 233, 237, 241, 244, 246, 248, 249, 250, 250, 249, 248, 246, 
 244, 241, 237, 233, 228, 222, 217, 210, 203, 195, 187, 179, 170, 161, 151,
 141, 130, 120, 108, 97, 86, 74, 62, 50, 37, 25, 12,0};


unsigned int TBL_POINTER_NEW, TBL_POINTER_OLD, TBL_POINTER_SHIFT, SET_FREQ;
unsigned int TBL_temp;
unsigned char DUTY_CYCLE;

void interrupt(){
     if (TMR2IF_bit == 1){
        TBL_POINTER_NEW = TBL_POINTER_OLD + SET_FREQ;
        if (TBL_POINTER_NEW < TBL_POINTER_OLD){
           CCP1CON.P1M1 = ~CCP1CON.P1M1; //Reverse direction of full-bridge
        }
        TBL_POINTER_SHIFT = TBL_POINTER_NEW >> 10;
        DUTY_CYCLE = TBL_POINTER_SHIFT;
        CCPR1L = sin_table[DUTY_CYCLE];
        TBL_POINTER_OLD = TBL_POINTER_NEW;
        TMR2IF_bit = 0;
     }
}

void main() {
     SET_FREQ = 256;
     TBL_POINTER_SHIFT = 0;
     TBL_POINTER_NEW = 0;
     TBL_POINTER_OLD = 0;
     DUTY_CYCLE = 0;
      PR2=149; ///for 20Khz at 12MHZ of quartz
      TRISB=0x00;
    // CCP1CON=0x4D;
       CCP1CON=0x4C;
     TMR2IF_bit = 0;
     T2CON = 4; //TMR2 on, prescaler and postscaler 1:1
     while (TMR2IF_bit == 0);
     TMR2IF_bit = 0;
     TRISB=0;
     TMR2IE_bit = 1;
     GIE_bit = 1;
     PEIE_bit = 1;

     while(1);
}
I want 20KHZ ,I am using a quartz of 12MHz and I want to get the frequency on the gate of 50Hz.
Please help.Thanks
 

Without modifying your algorithm in your C source (not PHP), in order to get a 50Hz sinusoid I would try SET_FREQ = 328.

Hope this helps.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top