I have a pressure sensor(transducer) that reads from 0 to 500 psi using .5 volts for 0 psi & 4.5 volts for 500 psi.
The only way I know to do it it is to read the voltage from 0 to 1023 which would only leave about 820 increments to use to get my pressure. I would like to be reasonably accurate to one decimal point so is there a way to read voltage in smaller increments than 0 to 1023 ?
Use external ADC, you need 13-bit at least, AD7705 or similar
What is the range you actively use if that is 0..100psi you could use analogReference.
set this to External and use a voltage divider to supply the AREF with the max voltage you expect.
google is your friend
Thanks for the ideas ,
The average working pressures will be anywhere from 50 psi to 400 psi with some exceptions above & below. After thinking more about it, If the accuracy was within plus or minus 1 psi that would really be fine. I just think with 1024 increments out of 500 psi I wouldn't expect it to be very accurate. The decimals are nice to display but really not that big a factor. I'm going to have to do some research on external ADC or AREF because I have no idea how they work before i go any further.
If the accuracy was within plus or minus 1 psi that would really be fine. I just think with 1024 increments out of 500 psi I wouldn't expect it to be very accurate.
The resolution of the ADC is better than +/- 1 psi, and it is probably more accurate than your pressure sensor, so what is the problem?
The 10-bit A/D of the Arduino will be more accurate than the sensor.
Try to read the sensor multiple times before you map that total to psi.
Like this.
analogRead(1); // one unused reading from A1
for (int x = 0; x < 16; x++) { // 16 analogue readings
total = total + analogRead(1); // add each value
}
Then map the total (with sensor min/max offsets) to psi.
e.g. value 632-15230 to 0-500 psi.
Leo..
Wawa:
The 10-bit A/D of the Arduino will be more accurate than the sensor.
Try to read the sensor multiple times before you map that total to psi.
Like this.
analogRead(1); // one unused reading from A1
for (int x = 0; x < 16; x++) { // 16 analogue readings
total = total + analogRead(1); // add each value
}
Then map the total (with sensor min/max offsets) to psi.
e.g. value 632-15230 to 0-500 psi.
Leo..
I like that idea,
No matter what I use fore the AD conversion that will also help compensate for the sensor fluctuations too.