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.

[SOLVED] Three phase sine wave generation using PWM

Status
Not open for further replies.

samic45mit1

Member level 3
Joined
Dec 11, 2009
Messages
62
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,286
Location
indore
Activity points
1,815
Hello,

I am working on three phase ACIM drive using dspic33fj64mc706. And i successfully generate PMW and control the three phase ACIM. I use gs004 application note for this (please see attachment).
But here the step size of 1Hz is possible and now I want the step size of 0.1Hz. So please anyone can guide me, how to modified this program(given in gs004) for 0.1Hz step size
 

Attachments

  • gs004.pdf
    154.2 KB · Views: 147

But here the step size of 1Hz is possible and now I want the step size of 0.1Hz.
I presume you are referring to the "Delta_Phase variable" calculation?

The output frequency doesn't have exactly 1 Hz resolution, it's about 0.3 Hz for the given PWM frequency and phase generation scheme and your Hz number will be rounded down to the next integer phase increment. You can easily change the calcukation to accept 1/10 Hz input, but it will still round to 0.3 Hz steps.

If you want exact output frequencies, you'll move to a fractional (NCO respectively DDS) phase accumulator scheme which gives effectively infinite resolution. https://en.wikipedia.org/wiki/Numerically_controlled_oscillator
 
Thank's for replay

I read the link, But how to implement this on microcontroller for V/F drive?.
 

Look at this code snippet

Code:
unsigned int Phase, Delta_Phase, Phase_Offset;

Phase += Delta_Phase; // Accumulate Delta_Phase in Phase variable
Phase_Offset = _120_DEGREES; // Add proper value to phase offset
Multiplier = sinetable[(Phase + Phase_Offset) >> 10];// Take sine info

Now only the upper 6 bits of variable Phase are used to address the sine table, 10 lower bits are already used as fractional bits. You can increase the resolution by using e.g. 32 bit variables for Phase and DeltaPhase and still use the 6 upper bits for the sine output.
 

Hi samic..

nw am doing my project v/f control of 3 phase induction motor by arduino uno.

generating 3 phase sine wave by 3 phase DDS , using SINE LOOK UP TABLE, timer ,interrupt.

check my sketch.

may it will help your project

regards

mobin
 

Attachments

  • sketch.txt
    6.1 KB · Views: 79
Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top