Silicon Pressure Sensor DataSheet Analysis
Motorola MPX10/D (Jameco Part #218827)
10kPa Uncompensated Silicon Pressure Sensor
Silicon Pressure Sensors work by transforming pressure into an electrical quantity. A silicon diaphragm is used with piezoresistive strain gauges acting as resistive elements. Under the pressure-induced strain, the resistive values of the strain guages change. The resistors are connected as a Wheatstone Bridge, the output of which is directly proportional to the pressure. Pressure increases the value of the radial resistors, and decreases the value of the resistors transverse to the radius. A differential sensor has two ports to measure two different pressures. Read more on how pressure sensors work.
On this sensor, the output voltage increases if the difference between the strain increases. If there is increased pressure on the pressure side of the sensor (the protruding black part in the photo) as compared to the vacuum side (the flat back), the voltage increases, and as vacuum increases on the vacuum side as compared to the pressure side, the voltage output increases as well. The pressure side (P1) contains silicone gel which isolates the die.
According to the datasheet, the maximum pressure is 75 kPa, with burst pressure of 100 kPa, which I think means it will take a couple tons of pressure (100 kPa = 2000 pounds/sq.foot). 1 kPa is approximately the pressure exerted by a 10-g mass resting on a 1-cm2 area.
The temperature range seems good, as pressure sensors are notoriously sensitive temperature. This operates with a plus or minus 0.5 hysteresis between -40 and 125 degrees C, and its pressure hysteresis is 0.1. Response time is generally 1.0 milliseconds.
A Wheatstone Bridge is used for further resistance between the sensor and microcontroller. (photo on left from Tom's site)
Comparison: Compared to these Honeywell brand pressure sensors, these are limited in that they only measure in a dry air medium, not wet.
Code: Here is code to compare the two voltage outputs. Code from Tom Igoe.
' Define ADCIN parameters ' Set number of bits in result DEFINE ADC_BITS 10 ' Set clock source (3=rc) DEFINE ADC_CLOCK 3 ' Set sampling time in microseconds DEFINE ADC_SAMPLEUS 10
' serial constants and pin assignments: tx var portc.6 rx var portc.7 n9600 con 16468
adcVar VAR WORD ' Create variable to store result adcvar2 var word result var word
' Set PORTA to all input TRISA = %11111111
' Set up ADCON1 ADCON1 = %10000010
Pause 500 ' Wait .5 second
main: ADCIN 0, adcVar ' Read channel 0 pause 10 ' let the ADC settle adcin 1, adcvar2 ' read channel 1
' get the difference between the two: result = abs(adcvar - adcvar2) ' send out the result SEROUT2 tx, n9600, [DEC result, 10, 13] Pause 10 ' let the ADC settle GoTo main