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.

sine wave inverter feedback control

Status
Not open for further replies.

siktec

Junior Member level 3
Joined
Jan 19, 2009
Messages
26
Helped
3
Reputation
6
Reaction score
4
Trophy points
1,283
Activity points
1,447
hi every one. i have being working on pure sine wave inverter using pic16f887. i have archived it to an extend. it can only power small load, i guess the problem is lack of feedback control. need it to be able to deliver at least 2000w. can someone suggest how i can implement the feedback control and also possible source code for the control. i am willing to shear the code i have written so far.
 

It depends on the load you are using. Normally, SPWM are sensorless or open loop, but in some cases (big loads, for example motors) you need a current feedback to change the SPWM on the fly and adapt it.
 

You generally shouldn't need feedback to drive a load, since the inverter itself should be a very low impedance. You would only need feedback in cases where you need extremely low distortion, or you're driving very high power levels with excellent regulation.

What actually happens to your inverter when you try to increase the load?
 

I think he is talking about the voltage stability,all inverters build without feed back loop it lacks stability because their will be a voltage drop when ever the inverter is loaded ,so the feedback control ensure that the output voltage becomes stable even when you load the inverter and that is done by using ADC of the micro controller being used therefore a code is written for that purpose.
 
thanks for your response, the output voltage of the inverter reduce relative to load. i believe a feedback control will solve the problem can you be of help pls.
 

Hi siktec,
If the input DC is steady and the output voltage is reducing with increase in load you have to increment the sine table according to the load using a correction table so that the output is stable.
regards ani
 
hi picgak
thanks for your response. can you explain to me how to implement the correction table or suggest a reference materials for me.
 

hi Tahmid,
I checked thru your blog for information on inverter feedback control as you suggested. I must commend you for your effort, i learn t a lot on the blog. I notice that the feedback control code were separated for explanation sake. i am not too clear with the way the table pointer works. can you kindly provide a complete working code for inverter feedback control. Thanks in anticipation of your kind response.
 

hi every one,
i have difficulty making commentary or ask questions in blogs. can somebody tell what to do.
 

hi Tahmid,
I checked thru your blog for information on inverter feedback control as you suggested. I must commend you for your effort, i learn t a lot on the blog. I notice that the feedback control code were separated for explanation sake. i am not too clear with the way the table pointer works. can you kindly provide a complete working code for inverter feedback control. Thanks in anticipation of your kind response.

I think you can understand better about the feedback if you go through the discussion that has gone on the blog comments section. For convenience and ease of understanding, I've compiled them into a list of question and answers:


Question: I am designing a pure sine wave inverter using an output H bridge at 310vdc. Is there any need for feed back control if I keep the 310 Vdc steady?
Answer: If you can keep the 310VDC steady, then there is no need for feedback of SPWM. Your output will be relatively stable, since the DC bus is regulated.

Question: Why is the feedback not necessary, since there will be a voltage drop when there is increase in load? Remember the code is not incrementing or decrementing at this time. Now take an example of your normal modified sine inverter using SG3524 or any PWM IC. The output voltage drops when
there is increase in load but the battery voltage doesn't change. Therefore there will be a need to control the code also. Right?
Answer: When there is increase in load, you will notice that the battery voltage always decreases due to the internal resistance. Measure the battery voltage of the inverter under load and you will see that it decreases as load increases. A battery that measures about 12-13V open circuit may drop to 11V or lower under load. Plus, there is a significant drop by the transformer under load.

Also, think about this: in the H-bridge converter, when load increases (and so current increases) but the +ve bus voltage is constant, where will the voltage be dropped? There is no transformer to deal with, as
the primary side PWM will take care of drops by the transformer (and battery voltage drop) and keep the output fixed. The only place for voltage drop is the MOSFETs and there will be a drop in voltage in the MOSFETs, but not so large that the output voltage will be beyond acceptable bounds.

Question: You have shown 32 values for each duty cycle in the program. Can I use 192 for my 3.5kHz design?
Answer: You can use any number of duty cycle values in an array. 32 is usually sufficient, but with 192, greater precision can be had, especially since the frequency is 3.5kHz and the time period is much longer as compared to 16kHz. So, the SPWM is more accurate. However, just keep in mind that all of the values are stored in program memory. So, it will consume more program memory. You can use the software Smart Sine to generate the sine table: https://www.edaboard.com/blog/1798/
For manual calculation, go through this tutorial: **broken link removed**

Question: What about this unsigned char I can see (416) in the code. What is it used for?
Answer: 32 values correspond to the sine wave at one duty cycle. I have set 13 duty cycle settings. 13 * 32 = 416
There are total 416 values in the array, 13 sets, and each set (containing 32 values) corresponds to one duty cycle setting.

Each set of values corresponding to one duty cycle has 32 values.

A table pointer is used to retrieve the values for a given duty cycle. So, when the value of the table pointer is 0, the program reads the first 32 values (65% duty cycle), then the next 32 values when value of table pointer is 1 and so on.

Practical Example:
The microcontroller first starts with the lowest duty cycle and then analyses the output voltage.

If the output voltage must be increased, the value of the table pointer is incremented and so, the next set of values is retrieved, increasing duty cycle and thus output voltage. If output voltage must be decreased, the value of the table pointer is decremented so that the previous set of values is retrieved, lowering duty cycle and thus output voltage. The table pointer keeps increasing by 1 to increase the duty cycle and so, the output voltage of the inverter.
Practical example: At the beginning of program execution, the table pointer is zero and the microcontroller starts with 65% duty cycle. Let's assume we have a 8V (primary) to 256V (secondary) transformer and a full bridge converter is being used to drive the transformer. The bridge is being driven by signals from the microcontroller - these SPWM signals.

The RMS voltage to the transformer primary will be (0.65 * 12/1.4142135)V = 5.5V.
Turns ratio of the transformer (primary:secondary) is 1:32.
So, secondary voltage (assuming 100% transformer efficiency) will be 32*5.5V = 176V.
As we require an output of 220V, this is lower than required. So, output voltage must be increased. So, table pointer is incremented to 1.
Then, duty cycle is 67.5% and output voltage is 183V.
Table pointer is incremented to 2.
Duty cycle is 70% and output voltage is 190V.
Table pointer is incremented to 3.
Duty cycle is 72.5% and output voltage is 197V.
Table pointer is incremented to 4.
Duty cycle is 75% and output voltage is 204V.
Table pointer is incremented to 5.
Duty cycle is 77.5% and output voltage is 210V.
Table pointer is incremented to 6.
Duty cycle is 80% and output voltage is 217V.
Table pointer is incremented to 7.
Duty cycle is 82.5% and output voltage is 224V.
Table pointer is decremented to 6.
Duty cycle is 80% and output voltage is 217V.
Table pointer is incremented to 7.
Duty cycle is 82.5% and output voltage is 224V.
Table pointer is decremented to 6.
Duty cycle is 80% and output voltage is 217V.
.
.
.
.
And so on.

This is how regulation is achieved.

This is all at 12V. But, you can see how the table pointer will be changed to maintain a constant output.





Hope this helps.
Tahmid.
 

hi Tahmid,
i understand how regulation is achieved by varying the % of the duty cycle. my major problem is the table pointer arrangement and assignment. can you provide a complete working code for that.
 

hi every one.
does any body understand how Tahmid's table pointer code for feedback control works. i have being trying to implement it without success. can somebody add commentary to the code please.
 

Hi every one,
I am still waiting 4 assistance on inverter feedback control. i have tried Tahmids code but its not working. can anybody suggest some references for. Thanks in anticipation of your kind response.
 

To understand the basic of table pointer first, go here:

Then the feedback method should become simple. Once you've understood what's mentioned here (), you should understand the feedback method yourself. If not, feel free to ask then.

Hope this helps.
Tahmid.
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top