Safari Demo Theory of Operation - ArrowElectronics/arrow-safari GitHub Wiki

The Safari Demo consists of the following:

  • 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

Table of Contents:

  1. Description of data flow
  2. ADC Configuration Settings
  3. Sensor conversion formulas

Description of data flow-

  1. All Sensors feed LPF which is present on each input on board prior to being input to the AD7124-8.
  2. 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.
  3. 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.
  4. The analog signal now enters the 24-bit Sigma-Delta ADC where output is converted to digital and digital filtering (user-selectable) is applied.
  5. 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.
  6. 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.

ADC Configuration Settings

For the demonstration the AD7124-8 is configured as shown here:

Global Settings

Individual Channel Settings

Sensor Conversion Formulas

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


Details of Temperature Calculation

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)

⚠️ **GitHub.com Fallback** ⚠️