First the ADC needs to be converted into KPA for yourformuls to work.
You will need to have the ADC setup with a 3.0 volt reference.
Using the old formula of
y = mx-b
y = output 'Volts
m = slope
x = input units
b = offset
You are wanting to read form 0 to 30 amps.
You are wanting to read form 0 to 3.92kpa.
Output is 0.6 to 3 volts.
Start off by look at the output in volts. You have a 2.4 volt span. Giving a span of 3.92 / 2.4 = 1.633
m = 1.633
The offset. Starting at 0.6 volts. 0.6 volts = 0 kpa. The offset is 0.6 * 1.633 = 0.98
b = 0.98
Plug all this into the formula and lets say the input is 3.0 volts.(full scale)
y = (1.633 * 3) - 0.98
y = 3.92
Now convert this to an 10 bit PIC resolution.
10 bits ADC = 0 to 1023, 1024 steps.
At 3.0 volts one volt of input will will read 341.
Spanning 2.4 volts or 818 steps (2.4 * 341).
New value for m. 3.92 / 818 = 0.00479
m = 0.00479
The new offset starting at 205, (0.6 * 341).
205 * 0.00479 = 0.98
b = 0.98
y = (ADC * 0.00479) - 0.98
ADC = 1023
y = 3.92kpa
ADC is from the sensor.
Now for some code.
Code:
' m = 0.00479
' b = 0.98
' y = (ADC * 0.00479) - 0.98
' ADC = 1023
' y = 3.92kpa
M CON 479 'm = 0.00479 * 10,000
B CON 98 'b = 0.98 * 100
ADC VAR WORD 'INPUT FROM SENSOR
Y VAR WORD 'KPA
Z VAR WORD 'DUMMY VAR
Z1 VAR WORD 'DUMMY VAR
'V = SQRT((2 * (Y/1000)) / 1.225)
V VAR WORD 'METERS/SECOND
D CON 122 'AIR DENSITY
START:
ADC = 1023 'FULL SCALE HARD CODED, NO SENSOR
Z = ADC * M
Z1 = DIV32 1000
Y = Z1 - B
Z = (2 * Y * 10000)
Z1 = DIV32 1000
V = SQR(Z1 / D *100)
LCDOUT $FE,1,"KPA= ",DEC Y/100,".",DEC Y//100
LCDOUT $FE,$C0,"M/S= ",DEC V
PAUSE 250
GOTO START
Bookmarks