Safari Demo Theory of Operation - ArrowElectronics/arrow-safari GitHub Wiki
- 3 analog output sensors- accelerometer, temperature probe, pressure sensor.
- Safari board
- Meerkat board
- UART-to-USB
- Linux OS and the Python programs used by Meerkat SBC board to set registers of ADC on the Safari board, obtain SPI data and convert to UART
- GUI software running on User's PC which allows user to plot sensors' outputs
- All Sensors feed LPF which is present on each input on board prior to being input to the AD7124-8.
- On the AD7124-8 each of the 8 inputs (16 single-ended) goes into a MUX where one input is selected at a time to go to the ADC.
- The AD7124 provides analog signal conditioning via a PGA as well as a pre-charge buffer. Note this buffer is present on the AD7124-8 B-grade only; this is why it was selected for Safari.
- The analog signal now enters the 24-bit Sigma-Delta ADC where output is converted to digital and digital filtering (user-selectable) is applied.
- From here the parallel digital data is serialized and sent out via a SPI interface to the host board, which for the Safari kit is the Meerkat 96Board.
- On the Meerkat the data is sent out via a 3.3V UART interface to a UART-to-USB conversion cable; the cable connects to a USB port on the User's PC.
For the demonstration the AD7124-8 is configured as shown here:
Global Settings
Individual Channel Settings
The sensors used in the demonstration all output analog voltages. Conversion from V to g’s, degC, Pa is done by the MCU residing on the Meerkat board. Note: each formula is specific to the particular sensors used in the demo and may not be accurate if alternate sensors are connected.
Accelerometer- Analog Devices ADXL203CE
Range: +/-1.7g
Output(V)= Vdd/2 +/- 620mV/g for Vdd=3.3V
Convert to g’s:
Acceleration(g)= (Vmeas-Vdd/2) x 1g/620mV
where Vmeas= output of accelerometer and Vdd=3.3V
For example, if Output=2.05V:
Acceleration(g)= (2.05V-1.65V=400mV) x 1g/620mV=0.645g
Resistance Temperature Device (RTD)- Adafruit 3290 PT100 RTD
Range: -200 to 550 degrees Celsius
Resistance of RTD= 100 ohms + 0.385/degC
To calculate the temperature:
a) Calculate resistance of the RTD
b) Use this value to determine the temperature
If you have the inputs configured in Unipolar mode use this formula:
RTD= (Code x 5.11kohms)/ (2^24 × 16) click for detailed explanation
Where
RTD= resistance of the Resistive Temperature Device
Code= digital output of AD7124-8 A/D
5.11kohms= value of the precision resistor connected to the board
24= number of bits of the ADC in the AD7124
16= gain setting of PGA within the AD7124
Once you calculate the value of the RTD, substitute into this equation:
Temp(degC)= (RTD-100)/0.385
Example: Code=5862504
a) RTD= (Code x 5.11kohms)/(2^24 × 16)= 111.6 ohms
b) Temp= (111.6- 100)/0.385= 30.1degC
Pressure Sensor- Sensirion SDP816-125PA
Range: -12.5 to 125 Pascal
Differential Pressure (DP)= (190 x Aout)/Vdd – 38
where Aout= output voltage of sensor (see datasheet page 4, Section 3.1, Linear configuration)
This particular pressure sensor has an output of 90% of Vdd; for Vdd=3.3V this translates to 3.3 x 0.9= 2.97V. For this measurement we have elected to use the Safari's on-board 2.5V precision reference, so the sensor output needs to be scaled down accordingly. Using Safari's on-board resistive dividers R6A, R6B and R6C we remove jumper JP1 and connect jumper JP2 to attenuate the signal by 2.5/3.3.
So the AD7124 input sees: Vin= Aout x (2.5/3.3)
Where
Aout= output of sensor and
Vin= input to AD7124 after the resistive divider
And the formula used by the Meerkat to calculate pressure is:
Differential Pressure (DP)= 190 x {Vin x (3.3/2.5)}/Vdd – 38
Since Vdd=3.3V this translates to:
DP= 190 x Vin/2.5 - 38
Example: Let Vmeas= 875mV
Then DP= (190 x 0.875V)/3.3V -38= 12.38Pa
Code=(2^N × AIN x Gain)/VREF (page 48 of AD7124-8 datasheet, Unipolar mode)
Where Code=digital output of the ADC, N=number of bits of the ADC
AIN= input voltage and VREF=reference voltage used by the ADC
For our temperature measurement, input AIN= voltage drop measured across the RTD (let’s call this VRTD),
and reference voltage VREF=voltage drop measured across the external precision resistor RREF.
Substituting VRTD for AIN and rearranging we have:
Code= (2^N × Gain) x VRTD/VREF
For our test we are putting the same 500uA through both the RTD and the reference resistor. So the ratio
VRTD/VREF= (RTD x Itest)/( RREF x Itest)= R(RTD)/RREF
Substituting RTD/RREF for VRTD/VREF we have:
Code= (2^N × Gain) x RTD/RREF
Rearranging in terms of RTD:
RTD= (Code x RREF)/ (2^N × Gain)
Since we know the values of RREF (5.11kohms), N(24 bit ADC) and Gain(16), by reading the Code we can solve for RTD:
RTD= (Code x 5.11kohms)/ (224 × 16)