Maverickmax said:Hi
I have been doing a small experiment as I get the reading such as 920 from ADC channel when the input voltage is 680V. Then I get the value - 82 when the voltage is 0V.
920 - 680V
82 - 0V
How to convert between 920 and 82 into 680V and 0V respectively for my code?
So far I have done a little calculation:
680/920 = 0.739
so 0.739*920 will yields 680V
but when I try to calculate 0.739 * 82 and I would expect OV but I get 60.6V
So I have done summat wrong with my calculation. Any help would be appreicated
Maverickmax
int Voltage_measurement(void)
{
int Temp;
Temp = 680*((adc_result[6]-82)/(920-82));
return Temp;
}
int Temp;
Temp = 680*((920-82)/(920-82));
return Temp;
int Voltage_measurement(void)
{
int Temp;
Temp = 680*(adc_result[6]-82)/(920-82);
return Temp;
}
Maverickmax said:I have tested the equation: Temp = 680*(N-82)/(920-82);
where N is 920, 900, 500 etc
The result is not what I have been looking for.
It doesn't solve my problem.... :-(
it's not been solved by the equation proposed by echo47 ?Maverickmax said:How to convert between 920 and 82 into 680V and 0V respectively for my code?
Maverickmax said:I have been doing a small experiment as I get the reading such as 920 from ADC channel when the input voltage is 680V. Then I get the value - 82 when the voltage is 0V.
int Voltage_measurement(void)
{
int Temp;
Temp = (int)680*(adc_result[6]-82)/(920-82);
return Temp;
}
unsigned int Voltage_measurement(void)
{
unsigned int Temp;
Temp = (unsigned int)680*(adc_result[6]-82)/(920-82);
return Temp;
}
artem said:(32 bits calculation is a must as result can exceed 0xffff)
C:\Borland\projects\test2>bcc32 -IC:\Borland\BCC55\Include\ -LC:\Borland\BCC55\Lib test.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
test.c:
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
C:\Borland\projects\test2>test
sizeof int 4
sizeof long int 4
size of short int 2
test with 32 bit integer
result is 0
result is 16
result is 32
result is 48
result is 64
result is 81
result is 97
result is 113
result is 129
result is 146
result is 162
result is 178
result is 194
result is 210
result is 227
result is 243
result is 259
result is 275
result is 292
result is 308
result is 324
result is 340
result is 357
result is 373
result is 389
result is 405
result is 421
result is 438
result is 454
result is 470
result is 486
result is 503
result is 519
result is 535
result is 551
result is 568
result is 584
result is 600
result is 616
result is 632
result is 649
result is 665
test with 16 bit integer
result is 0
result is 16
result is 32
result is 48
result is 64
result is 2
result is 19
result is 35
result is 51
result is 67
result is 5
result is 22
result is 38
result is 54
result is 70
result is 8
result is 25
result is 41
result is 57
result is 73
result is 11
result is 27
result is 44
result is 60
result is 76
result is 14
result is 30
result is 47
result is 63
result is 1
result is 17
result is 33
result is 50
result is 66
result is 4
result is 20
result is 36
result is 53
result is 69
result is 7
result is 23
result is 39
C:\Borland\projects\test2>type test.c
#include <stdio.h>
void main(void)
{
volatile unsigned long int temp;
volatile unsigned short int temp1;
int tint;
printf("sizeof int %d\n",sizeof(int));
printf("sizeof long int %d\n", sizeof(long int));
printf("size of short int %d\n",sizeof(short int));
puts("test with 32 bit integer");
for(tint=82; tint < 920;tint += 20)
{
temp= 680 * (tint-82);
temp = temp/(920-82);
printf("result is %d\n", temp);
}
puts("test with 16 bit integer");
for(tint=82; tint < 920;tint += 20)
{
temp1= 680 * (tint-82);
temp1 = temp1/(920-82);
printf("result is %d\n", temp1);
}
}
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?