Author Topic: varying the voltage for 3-phase inverter  (Read 1818 times)

0 Members and 1 Guest are viewing this topic.

Offline hussamaldeanTopic starter

  • Supporter
  • ****
  • Posts: 266
  • Country: iq
varying the voltage for 3-phase inverter
« on: May 22, 2019, 01:28:58 pm »
Hi all,
I am currently doing a prototype of variable voltage variable frequency (for learning purposes) and I managed to generate the required pulses from arduino mega and also the frequency is variable.
now I am using regulated PS which set to 12VDC and I want to change the DC to the output of the inverter without changing the input voltage
is it done using duty cycle or there is something I am missing ?
regards
note: It took around three months of extensive study of timers in arduino and how to generate the SPWM signal :D
 

Offline MagicSmoker

  • Super Contributor
  • ***
  • Posts: 1408
  • Country: us
Re: varying the voltage for 3-phase inverter
« Reply #1 on: May 22, 2019, 03:53:49 pm »
Yes, for a straight up "V/Hz" (aka scalar) 3-ph. inverter you adjust the width of each pulse in the sinusoidal sequence in proportion to the desired RMS output voltage. Where most people get into trouble is with extremely narrow pulses near the zero crossings of the sine wave - just because the MCU can generate a 50ns wide pulse doesn't mean the bridge switches can reproduce it (especially IGBTs).

 
The following users thanked this post: hussamaldean

Offline hussamaldeanTopic starter

  • Supporter
  • ****
  • Posts: 266
  • Country: iq
Re: varying the voltage for 3-phase inverter
« Reply #2 on: May 22, 2019, 03:55:42 pm »
Yes, for a straight up "V/Hz" (aka scalar) 3-ph. inverter you adjust the width of each pulse in the sinusoidal sequence in proportion to the desired RMS output voltage. Where most people get into trouble is with extremely narrow pulses near the zero crossings of the sine wave - just because the MCU can generate a 50ns wide pulse doesn't mean the bridge switches can reproduce it (especially IGBTs).
I am using IR2104 with IRF510 mosfet
just adjusting the duty cycle?
 

Offline schmitt trigger

  • Super Contributor
  • ***
  • Posts: 2270
  • Country: mx
Re: varying the voltage for 3-phase inverter
« Reply #3 on: May 22, 2019, 04:30:47 pm »
There are many ways to skin a cat, MagicSmoker has proposed the preferred solution, and briefly outlined its pitfalls.
But to follow on your idea that you want to change the DC output bus to the inverter, FOR LEARNING AND EXPERIMENTATION purposes I would suggest:

Make a front-end buck converter, whose output voltage would increases/decreases simultaneously and directly with the value of with the synthesized output frequency.
In other words the converter's duty cycle is proportional to the frequency you are synthesizing.



 

Offline MagicSmoker

  • Super Contributor
  • ***
  • Posts: 1408
  • Country: us
Re: varying the voltage for 3-phase inverter
« Reply #4 on: May 22, 2019, 06:46:32 pm »
I am using IR2104 with IRF510 mosfet
just adjusting the duty cycle?

The parts you are using for the gate driver and bridge switches aren't really relevant because you change the duty cycle in software*. I am not a programmer, but the general idea to digitally synthesize a variable voltage, variable frequency sine wave is to store a series of sine constants in a lookup table** and then multiply all of the sine table values with another constant to get the on time for the bridge switch which is supposed to be active for that portion of the waveform. In fact, one of my favorite old-school web sites has (among other interesting things) a calculator that generates all the constants for a sine lookup table with however many bits you want: https://www.daycounter.com/Calculators/Sine-Generator-Calculator.phtml



* - it is entirely possible to do this strictly with analog circuitry, or mixed analog and digital logic, but doing it this way is either obsolete ot a lost art, depending on your perspective.

** - usually just the values from 0 to 90 degrees are stored.
 

Offline hussamaldeanTopic starter

  • Supporter
  • ****
  • Posts: 266
  • Country: iq
Re: varying the voltage for 3-phase inverter
« Reply #5 on: May 22, 2019, 07:27:22 pm »
I am using IR2104 with IRF510 mosfet
just adjusting the duty cycle?

The parts you are using for the gate driver and bridge switches aren't really relevant because you change the duty cycle in software*. I am not a programmer, but the general idea to digitally synthesize a variable voltage, variable frequency sine wave is to store a series of sine constants in a lookup table** and then multiply all of the sine table values with another constant to get the on time for the bridge switch which is supposed to be active for that portion of the waveform. In fact, one of my favorite old-school web sites has (among other interesting things) a calculator that generates all the constants for a sine lookup table with however many bits you want: https://www.daycounter.com/Calculators/Sine-Generator-Calculator.phtml



* - it is entirely possible to do this strictly with analog circuitry, or mixed analog and digital logic, but doing it this way is either obsolete ot a lost art, depending on your perspective.

** - usually just the values from 0 to 90 degrees are stored.
well, I used a lookup table with 100 sample and from 0 to 180 and there is no change in the direction
however, the frequency is so stable beyond my imagination.
anyway, do you advice using the loop to make stable voltage and vvvf ?
the frequency is variable and remains the voltage 
 

Offline MagicSmoker

  • Super Contributor
  • ***
  • Posts: 1408
  • Country: us
Re: varying the voltage for 3-phase inverter
« Reply #6 on: May 22, 2019, 10:32:52 pm »
well, I used a lookup table with 100 sample and from 0 to 180 and there is no change in the direction

Something might be lost in translation here. The only values you need to store if using the common lookup table method for SPWM are for 0-90 degrees because 90-180 can be described by simply reversing the order of the 0-90 values, then invert the sign of the 0-90 values to generate the 180-270 values, and, finally, invert the sign and reverse the order of the 0-90 values to describe the 270-360/0 values.


anyway, do you advice using the loop to make stable voltage and vvvf ?
the frequency is variable and remains the voltage

And something else has been lost in translation... If the goal is to make a 3ph. motor controller then I would use an off-the-shelf motor control library rather than reinvent this particular wheel. If the goal is to learn how to do something the hard (yet usually lasting) way then I would do what I've already advised you to do. Just think through the steps logically. If you have stored a value for sin 30 of 0.5 and you carrier frequency is 10kHz then for full voltage output you would assign an on time of 0.5 * 1 * 100us for that particular pulse (that is, 50us). If you need to run the motor at half speed then you would instead assign an on-time of 0.5 * 0.5 * 100us = 25us for that pulse in the sequence, and so on for the rest of the lookup table values.

Once you've got the V/Hz thing sorted out you can then move on to dynamically adjusting the multiplier to compensate for supply voltage variations, or even to add a bit of torque boost at low RPMs (assuming a motor is being driven, which is pretty much the only application for a variable frequency, variable voltage 3ph. inverter).

And then after doing all that you might come to appreciate the superiority of the vector control schemes that apply precisely the right voltage at the right time to  extract maximum torque from a 3ph. motor.

 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf