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
- 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
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
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
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
The 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.
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.
Using the library
High resolution Temperature measurement example
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
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.
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
A brief look at noise
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.
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.
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.