gopal_amlekar
Junior Member level 1
- Joined
- Jun 14, 2009
- Messages
- 17
- Helped
- 2
- Reputation
- 4
- Reaction score
- 2
- Trophy points
- 1,283
- Location
- Pune, India
- Activity points
- 1,468
Hi all,
In my inverter project, I am generating a sine wave 230V with PWM using a full bridge of MOSFETs. The feedback is to be measured with an ADC built in the MCU. I need to regulate this 230V upto a load of 800VA.
I would like to know expert opinions on what should be the method to measure the sinewave accurately. I am briefing below things I have tried and problems I observed in those:
1. Stepped down output 230V to about 15V using a transformer and then rectified, filtered with a diode bridge and a capacitor. Fed this DC voltage to ADC input via a resistive divider. Problems observed in this is that when sinewave starts clipping at higher loads, the DC voltage variation reduces a lot. For e.g. a non clipped 230V sinewave generates a DC voltage of 19V and a clipped 230V sinewave generates DC voltage of 18V. This introduces an error in feedback at higher loads, which I want to avoid.
2. I stepped down the 230V sinewave via resistive divider and fed it to an OP-AMP whose one input is biased at 2.5V. This way the OP-AMP generates a sinewave centered at 2.5V. This centerline 2.5V is used to detect zero crossings. Now I measured peak value between two zero crossings and took that peak value as reference. Again, when sinewave is clipped, this peak values does not give correct indication because peak remains same (the clipped level) even though actual RMS varies. Another problem with this method is that sometimes peak gets skipped due to other overhead running in MCU, so in some cycles, I get errorneous readings of a lower peak.
3. I am trying to average the instantaneous values between a positive ZC and negative ZC. I am not yet finished with this method so do not konw pros and cons.
I am using a PIC16F72 running at 20MHz (It has an instruction cycle of 200nsec). All programming is in assembly. There is no hardware multiply, divide etc. So that way, it is quite low-end design.
Can someone please suggest me which approach I should take in this regard?
Best regards,
Gopal
In my inverter project, I am generating a sine wave 230V with PWM using a full bridge of MOSFETs. The feedback is to be measured with an ADC built in the MCU. I need to regulate this 230V upto a load of 800VA.
I would like to know expert opinions on what should be the method to measure the sinewave accurately. I am briefing below things I have tried and problems I observed in those:
1. Stepped down output 230V to about 15V using a transformer and then rectified, filtered with a diode bridge and a capacitor. Fed this DC voltage to ADC input via a resistive divider. Problems observed in this is that when sinewave starts clipping at higher loads, the DC voltage variation reduces a lot. For e.g. a non clipped 230V sinewave generates a DC voltage of 19V and a clipped 230V sinewave generates DC voltage of 18V. This introduces an error in feedback at higher loads, which I want to avoid.
2. I stepped down the 230V sinewave via resistive divider and fed it to an OP-AMP whose one input is biased at 2.5V. This way the OP-AMP generates a sinewave centered at 2.5V. This centerline 2.5V is used to detect zero crossings. Now I measured peak value between two zero crossings and took that peak value as reference. Again, when sinewave is clipped, this peak values does not give correct indication because peak remains same (the clipped level) even though actual RMS varies. Another problem with this method is that sometimes peak gets skipped due to other overhead running in MCU, so in some cycles, I get errorneous readings of a lower peak.
3. I am trying to average the instantaneous values between a positive ZC and negative ZC. I am not yet finished with this method so do not konw pros and cons.
I am using a PIC16F72 running at 20MHz (It has an instruction cycle of 200nsec). All programming is in assembly. There is no hardware multiply, divide etc. So that way, it is quite low-end design.
Can someone please suggest me which approach I should take in this regard?
Best regards,
Gopal