Electronics engineers very often need to measure low voltages with great accuracy, for example, the voltage from a pressure or temperature detector, or the output voltage of a Wheatstone bridge (often of the order of a millivolt). Microcontrollers are handy and fairly easy to program, but everyone knows that the accuracy of their converters isn’t brilliant (often 8/10/12 bits). In addition, to measure low voltages, these need to be processed, often with the help of op-amps. Confronted yet again by this same problem, I decided to find a solution that would be both satisfactory and reusable. The inspiration was there alright, all it now needed was the perspiration bit. The requirements were clear: I needed an interface that would be easy to connect to any microcontroller and easy to put together using common, cheap components. Two ICs in the Microchip catalog caught my eye: – the MCP602 high-performance amplifier; – the MCP3421 18-bit programmable ADC with I²C interface, built-in 2.048 V reference, and programmable amplifier.
When we want to process low voltages for digitizing, we often use a configuration called an instrumentation amplifier, built using three op-amps. Here, I’m using the MCP602’s two op-amps IC2A and IC2B in a differential configuration to drive the programmable-gain amplifier in the MCP3421. The output voltage of this first stage will be proportional to the voltage difference between the circuit’s measuring inputs M+ and M− (Figure 1). The gain of the first stage is given by:
G1+= 1 + R5/R3
G1− = 1 + R6/R4
Since we want the amplification of the voltage at the M+ input to be the same as that for the M− input, we’ll choose R5 = R6 and R3 = R4. With the values shown on the circuit, we’ll have:
G1 = 1 + 100 = 101
Make sure you select 1% tolerance resistors for R3–R6, otherwise you risk having a serious asymmetry in the input stage. Let’s move on to the second stage, built around amplifier/ADC IC1. Used in symmetrical mode, it accepts voltages from −2.048 V to +2.048 V between its pins 1 and 6. Since the gain G2 of the amplifier it contains is software-programmable, it will be possible to select different ranges for the input voltage from the first stage. The total gain of the circuit G = G1 × G2 will thus vary between 101 for G2 = 1 and 808 for G2 = 8.
Table 1 gives a list of the possible values. If these ranges don’t suit you, change the value of R3–R6.
The interface is powered at 5 V. In the presence of weak signals, noise from the power supply can become a problem—and this circuit is no exception. Whatever type of supply you choose, it must be accurate and generate as little noise as possible. Using 18-bit accuracy conversion, the slightest supply noise will interfere with your measurements. I also recommend using a soft start power supply so as to reduce drift due to variations in component characteristics. It would be possible to use software delay timing for this, but that wouldn’t benefit all the components on the board. In  I suggest just such a power supply, based around a MIC2941 low-loss regulator from Micrel.
Construction and use
Construction of the 35 × 25 mm PCB (Figure 2) ought not to cause any problems for readers familiar with SMDs. If you design your own PCB, to obtain optimum performance, do adhere to the advice given in the MCP3421 datasheet. This is also very helpful when it comes to using the project. Watch out for the MCP3421’s I²C address: this depends on the exact type number of the device you buy. This is also detailed in the datasheet.
By way of an example, I’ve developed an application around a PIC18F452 (or PIC16F876A) microcontroller which displays the voltage read from the MCP3421 via the I²C bus on the LCD. You’ll find that elsewhere in this issue. It measures the low voltage (a few millivolts) from a strain gauge wired into a Wheatstone bridge. The PIC receives the digitized voltage from the MCP3421, and the PICBASIC program converts the value into pressure. The ADC output voltage and the pressure then appear on an LCD. This program shouldn’t be too hard to port to an Arduino, for example. You’ll be able to use this inexpensive circuit (less than $20) in lots of different projects. And you won’t have a reason any longer to curse the ADC in your favorite microcontroller.
Internet Links www.elektor-labs.com/node/3053