
Getting Started with Anabit's Flex Differential ADC
Share
Flex Differential ADC summary:
The Flex Differential ADC reference design is a 14 bit 2MSPS ADC with a pseudo differential input. It comes with every thing you need to make fast and accurate measurements including an anti-aliasing filter (~750kHz cutoff frequency), high bandwidth op amp driver, 1Mohm input termination, and a precision voltage reference. The Flex ADC offers three different precision voltage reference options: 2.5V, 3.3V, and 4.096V. SPI communication is used to interface with the Flex so any microcontroller or microprocessor that supports SPI can control it. The Flex Differential ADC is powered by a 5V source, but the 2.5V reference voltage version can run off a 3.3V source. For voltage logic level flexibility, it features an optional digital power input which powers the digital circuits and sets the logic level voltage for communication and control of the Flex.
Features and Technical Notes
How the Flex's pseudo differential input works:
- Instead of having a single input that is referenced to ground, it has two inputs (+IN and -IN) that are referenced to a common mode voltage that is equal to VREF / 2.
- Each of the differential inputs has a range of 0V to VREF (2.5V,3.3V, or 4.096V).
- The ADC returns a measurement code that is equal to +IN - -IN. Each differential input gets a full 14 bit scale or codes from 0 to 16383, which is equivalent to 15 bits of resolution across both inputs
- The reason it is a pseudo differential input instead of a full differential input is because neither input signal can be negative in terms of the ground potential the ADC is connected to. Also the common mode voltage of the input is fixed at VREF / 2.
- Refer to the example code or the ADC's datasheet to see how to convert the ADC's output codes to voltages, links to both can be found below.
Communicating with the ADC and setting its sample rate:
- The Flex runs off standard SPI communication in mode 0, sending the data MSB first. The chip select pin is required since its high to low level changes trigger ADC measurements
- The sample rate of the Flex is dependent on the SPI clock rate and the speed that the chip select pin can change levels.
- The max specified SPI clock frequency for the ADC is 40MHz, which is the clock frequency you need to run it at its max sample rate. We have played around with overclocking it. We used it at clock rates up to 80MHz, which still captured data but at a reduced amplitude.
Measures down to true zero volts with no amplifier saturation
- The Flex features a negative bias low voltage charge pump circuit that is used with the input driver op amps
- This small negative voltage (-0.23V) ensures the op amp does not saturate when signals swing close to or at 0V (ground)
The Flex Differential ADC Includes second "raw" ADC input
- The Flex Differential has a second ADC measurement channel that can be accessed via an onboard MUX. This second channel can be accessed by applying a logic high to the "Chan Sel" pin
- The second ADC is configured as a single ended input (AIN2) that is referenced to ground (not differential).
- We call this a "raw" input since there is no filtering or op amp driver in front of it. Making it only good for low sample rate measurements or for already conditioned signals
Flex Differential ADC Pin Description:
Below is a diagram of the Flex Differential ADC's pins or connections. If you are facing the Flex pin headers, the analog ADC input and voltage reference output pins are on the right. The input power, SPI communication, and hardware control pins are found of the left. The layout of the design was done to keep the noisy power and digital signals on one side of the design and the precision analog signals on other. The following is a detailed description of the Flex pins:
- The VIN pin along with the GND pin is where to connect your 5V power source to power the Flex. As mentioned earlier the 2.5V reference version can support input power voltages as low as 3.3V.
- The DVIN pin is optional and is meant for interfacing with a device like a microcontroller that does not use 5V logic. You can input a 1.8V to 5V power source along with a GND connection to power the digital circuits and set the logic level.
- The next three pins are used for SPI communication:
- SPI Clock (SCLK) pin is the input clock signal for the SPI communication.
- The Control In Peripheral Out (CIPO) pin is the communication line that fetches data from the ADC
- The Chip Select (CS) pin is not optional and needed for triggering new acquisitions
- The channel select pin (Ch Sel) can be pulled high to access the second ADC channel. It is automatically pulled low so you can leave it unconnected if you do not need to use the second ADC channel
- Moving to the pins on the right, the VREF pin allows you to access the Flex's on board precision voltage reference.
- The IN+ and IN- pins are the ADC's differential inputs
Flex Differential ADC Example Arduino Code and Where to get Help:
The Flex example code was made to run in the Arduino programming environment and should work on any Arduino board that has hardware SPI capabilities. There is also a second version of the code specifically for ESP32 based development boards. This second ESP32 specific version of the example code was developed to take advantage of the ESP32 function calls that perform faster digital write speeds then the standard Arduino digitalWrite() library. Using fast digital logic changes on the chip select pin helps achieve faster sampling rates on the Flex.
Both versions of the example code perform two user selectable measurement types on the Flex:
- Single measurements that are made every couple of seconds and printed out to the serial monitor
- Burst measurements that are made continuously as fast as possible and stored in an array. That array can then be printed to either the serial monitor or the serial plotter
Links to the two versions of the Flex Differential example code on github:
- Link to general Arduino code example for Flex Differential ADC
- Link to ESP32 specific Arduino code example for Flex Differential ADC
Have a question about the Flex Differential ADC or run into any issues getting started with it? Please use the Anabit ADC Forum
Flex Differential ADC Specifications:
- Measurement accuracy is about +/- 1.2mV (4.8 LSB) at full scale or about ±0.058% of reading
- Performing a simple two point calibration on the ADC can yield accuracies ~±0.25 mV (1 LSB)
- Flex Design can be powered by a 5V power source (3.3V works for 2.5V reference version). Max current consumption is ~10mA (includes digital power). Max digital power current consumption ~3mA.
- Front end input circuit includes 1Mohm input termination, 760kHz anti-alias filter, buffer amp to drive ADC input, and charge bucket filter to prevent measurement glitches