Precision ADC for Arduino and AVR with amplifier

Precision ADC for Arduino and AVR with amplifier in a data acquisition application

A Precision ADC for Arduino and AVR with amplifier provides users with a complete solution to acquire high resolution signal fast. The SC1-24-75 is Precision ADC for Arduino and AVR with amplifier for local or remote sensing. As shown in the figure, the signal to be recorded is sent to the ADC, amplified, digitized. The signal can remain on the module or transmited to a computer. You can change the gain of the amplifier from 0.1 to 10000 X which allows acquisition of signals from 100 volts down to uV. In this post we explain features of the amplifier, connecting the hardware, setting up the library  and a brief discussion on noise to maximize the resolution of the ADC.

Some application and features of the ADC 

  • 6-Digit voltage, current and parameter data acquisition systems
  • Weight Scales
  • Direct Temperature Measurement
  • Gas Analyzers
  • Strain-Gage Transducers
  • Instrumentation
  • Industrial Process Control
  • Completely shielded for maximum performance
  • 110dB rejection at 50Hz or 60Hz
  • 7 programmable gain using jumpers (ask for custom range)
  • Software library for communication with Arduino and AVR chips.

An example of using Precision ADC for Arduino and AVR with amplifier

24 bit Data acquisition system using Arduino
24 bit Data acquisition system using Arduino

A typical application shown here uses the precision ADC to acquire signal at a remote location and transmit the information to a computer. An enclosure is chosen with excellent electromagnetic interference (EMI) shielding characteristics. We recommend the SimCase Arduino and BNC enclosure . The image shows the AFE placed close to the BNC connectors (left) and an Arduino module at the bottom left with USB and power interface. The ADC module is enclosed with another layer of  EMI shielding. The two layer shielding produces extremely low noise data.

The SimCase Arduino and BNC enclosure comes with two BNC’s , power port and USB communication port for the Arduino. For networking or other application, simply contact us with a description of the customization required for the enclosure.

Parts of the Precision ADC module

Internal structure of the SC1-24-75 analog front end and ADC module
Internal structure of the SC1-24-75 analog front end and ADC module

The ADC module consist of a programmable amplifier, precision ADC and a micro-controller as shown here. The signal presented at the analog input is first amplified by the amplifier. The gain of the amplifier is  be set by the user using a jumper at the edge of the module. The signal when amplified is sent to the precision 24 bit ADC and converted to a digital value. The digital value is processed, stored and made available to the Arduino or the user’s micro-controller.


Analog input signal to the ADC module

The input signal to be converted can be a single sided or a differential signal. The input impedance of the amplifier is in the Tera ohms range which allows direct connection to most sensors or signals with close to zero loading of the signal.

Programmable gain amplifier

Differential gain setting of the amplifier
Differential gain setting of the amplifier

The gain of the amplifier can be programmed externally by placing a jumper at the gain setting header. Standard gain of 0.01 to 10000 is provided. Custom gain setting can be provided on request. The table shows the gain setting for single ended and differential signals with the minimum and maximum voltages. The gain setting is provided with measurement resolution that can be obtained. Caution: Addition caution required with voltage exceeding 40 V.

ADC and micro-controller

Application example of NTC thermistor , ADC module and ArduinoThe module has a precision 24 bit ADC that converts analog signal to a digital value. The value range from 0 to 16777216. For differential measurement on wheatstone bridge the values range from 0 to 16777216 with zero differential voltage being 8388608.

Designing high resolution temperature logger with conventional ADC’s micro-controllers and amplifiers requires solving the equation for wheatstone bridge.  The solution is then programmed in the micro-controller. All of this is mitigated by simply setting some parameters in your code for the equation . The module will then send data in Kelvin, Fahrenheit or Celsius to your Arduino or micro controller.

Lookup table (LUT) that converts this value to temperature measurement from standard NTC and PTC thermistors is currently being developed. Other LUTs provided are force and resistance measurements. Feel free to contact us for any questions for your application.


Software Structure of communication library
Software Structure of communication library

This 24 bit ADC module was designed to decrease development time for high technology products by providing state of the art performance with easy to use libraries. The list of libraries continues to grow as new drivers are completed.  The list at the end of this section is provided with an estimated release date of the drivers currently in development.

The ADC module comes with a software library that is compatible with  Arduino , Atmel  micro-controller. The software is structured as components to enable the user flexibility and ease of use. The lowest level is the board layer which consists of files that are configured based on what pins are used to communicate with the ADC. Other setting that can be configured in these files include types of measurements being performed such as temperature or force and parameters of the circuit such as the resistor values and the sensor’s information. The drivers, components and services layer has all the required code to communicate and process the information that is supplied by the ADC module. Your micro controller  application code runs separately from the driver.  The driver automatically updates a variable with most recent measurements which you can use.

Using the library

To use the library, you have to specify what pins are connected to the module hardware abstraction file located in the boards folder , what the application is for example temperature , force etc. and the type of circuit you are using with its parameters. The communication with the driver is handled automatically. The driver provides an interface as if the module is part of your micro-controller.

High resolution Temperature measurement example

Wheatstone bridge and temperature VS resistance graph.
Wheatstone bridge and temperature VS resistance graph.

Temperature measurement can be done by using a Wheatstone bridge where one of the leg of the bridge is replaced with a thermistor as shown. In this example, the resistors are 100k ohms and the thermistor is also a 100k ohm at room temperature.

The thermistor has a negative temperature coefficient (NTC) with a beta value of 3964K . With NTC thermistors, the resistance decreases with increase temperature. With Positive Temperature Coefficient (PTC) thermistor, the resistance increases as the temperature increase.  At room temperature, the voltage at node A equals the voltage at node B . As the temperature increases, the voltage at node B decreases due to the thermistor on that leg and the voltage difference is amplified by the ADC module and digitized.



Configuring the hardware connection

ADC module Hardware abstraction/physical layer.
ADC module Hardware abstraction/physical layer.

To use the driver, you have to inform the software where the ADC module is connected on your Arduino or micro-controller. There are four values which define a connection as shown in the figure. The first variable ending with PORTR. It tells the software which port is used for that physical connection. The second variable ending with _BIT tells the software which pin is used for that connection. The third and fourth variable ending in _DDR and _PINReg is used by the software to configure the function of the pin. For example: if you connect the PB2 pin of your micro-controller to the MISO pin on the ADC, you will use the following code to inform the software about this connection. The other 3 connection are shown entered in the file.

Parameters of wheatstone Bridge
Parameters of wheatstone Bridge

The values of the resistors on the bridge, the voltage applied to the bridge and the thermistor parameters are entered in the NTC_brg.h file. In your main program you have to enable the NTC bridge by defining #NTC_BRG_EN . To initialize the temperature library, simply call init_ntc_brg(). The temperature measurements are stored in the global variable hrtmp. The values store are in kelvin by default.  To change to to Celsius or Fahrenheit simple use the functions toCelcius(AFE) or toFahrenhiet(AFE). The module can be used to display the measured value directly on an LCD .  Please feel free to contact us for further information.

High resolution DC voltage measurement

With all measurement system, noise can be a limiting factor on resolution. To understand noise and the effect on high resolution analog to digital conversion, we look at components of noise and ways to shield or eliminate it.

A brief look at noise

60/50 Hz noise . No signal
60/50 Hz noise . No signal

Ambient noise can be separated into two major groups namely 50\60 Hz and random noise. The 50/60 Hz noise comes from the radiation of the power lines . The random noise comes from many sources which are super-positioned and show up as random. The electromagnetic interference is shown in the figure where the first and second noise are the 50 and 60 Hz noise radiated from power lines. The third signal is the random noise. When all the noise are super-positioned we get the fourth signal. With zero volt applied to the ADC and no signal shielding, the ADC will be presented with the values shown in the fourth graph.

-110 dB noise reduction
-110 dB noise reduction

The ADC module comes with a state of the art notch filter that automatically reduces the 50/60 Hz noise by -110 dB. To bring this into perspective, the noise amplitude is reduced by a factor of 0.000004 from 800 mV to 3uV. You may contact us for specific application of low level signals.


The high frequency noise is somewhat more difficult to remove. The noise has so far been dealt with in the electrical domain.  Another layer of noise reduction is done by the enclosure of the ADC. The material was selected with high shielding characteristics. Most of this however would be in vain if noise is not considered at the application level. At the application an instrument enclosure, shielded wires and proper connectors should be chosen. Please feel free to contact us for further information



Features that are currently being developed for the precision ADC include built-in FFT which allows for frequency domain analysis, advanced pattern recognition using Wavelet processing and programmable lookup table for multi-processing support. These features are made available as free upgrade to customers currently implementing the AFE. Please contact us for further information on upgrades.