varying the voltage for 3-phase inverter  - Page 1
Forum section: electronics / projects

author: hussamaldean
author_rank: Unknown
timestamp: May 22, 2019, 01:28:58 pm
content: 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 voltageis it done using duty cycle or there is something I am missing ?regardsnote: It took around three months of extensive study of timers in arduino and how to generate the SPWM signal

author: MagicSmoker
author_rank: Super Contributor
timestamp: May 22, 2019, 03:53:49 pm
content: 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).

author: hussamaldean
author_rank: Unknown
timestamp: May 22, 2019, 03:55:42 pm
content: Quote from: MagicSmoker on May 22, 2019, 03:53:49 pmI am using IR2104 with IRF510 mosfetjust adjusting the duty cycle?

author: schmitt trigger
author_rank: Super Contributor
timestamp: May 22, 2019, 04:30:47 pm
content: 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.

author: MagicSmoker
author_rank: Super Contributor
timestamp: May 22, 2019, 06:46:32 pm
content: Quote from: hussamaldean on May 22, 2019, 03:55:42 pmThe 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.

author: hussamaldean
author_rank: Unknown
timestamp: May 22, 2019, 07:27:22 pm
content: Quote from: MagicSmoker on May 22, 2019, 06:46:32 pmwell, I used a lookup table with 100 sample and from 0 to 180 and there is no change in the directionhowever, 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

author: MagicSmoker
author_rank: Super Contributor
timestamp: May 22, 2019, 10:32:52 pm
content: Quote from: hussamaldean on May 22, 2019, 07:27:22 pmSomething 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.Quote from: hussamaldean on May 22, 2019, 07:27:22 pmAnd 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.