# applying equations on ADC samples in mikroC

Status
Not open for further replies.

#### hafizimran18

##### Member level 4 i want to apply these given equations in mikroC, please help me out #### EC.Engineer

##### Junior Member level 1 If you are taking V, Itotal and Ifundamental as analog inputs, then you can easily apply those equations directly in mikroC. Its all straight forward.

Code:
unsigned int V, Itotal, Ifund;
unsigned long Swith_harmonic;
double Iharmonic, Qharmonic, distAngle, TrueActPwr ;

V = ADC_Read(channel_V); // channel_V is the analog channel where you give the V input;

Swith_harmonic = V * Itotal;

Iharmonic = sqrt((Itotal * Itotal) - (Ifund * Ifund)); // Select the C_Math library for using this function

Qharmonic = V * Iharmonic;

distAngle = asin(Qharmonic  / Swith_harmonic);

TrueActPwr = Swith_harmonic * cos(distAngle);

#### hafizimran18

##### Member level 4 but what about scaling? when input is at peak, adc value will be maximum i.e 1024 and thus calculations will be no more in 2 bytes i.e unsigned int type, what about that?
If you are taking V, Itotal and Ifundamental as analog inputs, then you can easily apply those equations directly in mikroC. Its all straight forward.

Code:
unsigned int V, Itotal, Ifund;
unsigned long Swith_harmonic;
double Iharmonic, Qharmonic, distAngle, TrueActPwr ;

V = ADC_Read(channel_V); // channel_V is the analog channel where you give the V input;

Swith_harmonic = V * Itotal;

Iharmonic = sqrt((Itotal * Itotal) - (Ifund * Ifund)); // Select the C_Math library for using this function

Qharmonic = V * Iharmonic;

distAngle = asin(Qharmonic  / Swith_harmonic);

TrueActPwr = Swith_harmonic * cos(distAngle);

- - - Updated - - -

but what about scaling? when input is at peak, adc value will be maximum i.e 1024 and thus calculations will be no more in 2 bytes i.e unsigned int type, what about that?

i found this thing some helpfull ,, but still there is a problem,, when using simpe multiplications i.e p=v*i;
it gives exactly 25watt power with d.c source of 5V and 5A current,, but when same source is applied using these equations it do not give 25watt,, please help,, i am in trouble

Code:
unsigned int V, Itotal, Ifund;
unsigned long Swith_harmonic;
double Iharmonic, Qharmonic,a, distAngle, TrueActPwr ;

void main()
{
TRISA  = 0xFF;  // PORTA is input
TRISB  = 0x3F;  // Pins RB7, RB6 are outputs
TRISD  = 0;     // PORTD is output
do
{

V = ADC_Read(0); // channel_V is the analog channel where you give the V input;

V = (V%1024)*5;

Itotal = (Itotal%1024)*5;

Ifund = (Ifund%1024)*5;

Swith_harmonic = V * Itotal;

Iharmonic = sqrt((Itotal * Itotal) - (Ifund * Ifund)); // Select the C_Math library for using this function

Qharmonic = V * Iharmonic;

distAngle = asin(Qharmonic  / Swith_harmonic);

TrueActPwr = Swith_harmonic * cos(distAngle);

PORTD = TrueActPwr;

} while(1);
}

Status
Not open for further replies.