Inverted dual-slope ADC boosts dynamic range

Article By : Stephen Woodward

Gain five-plus bits of dynamic range by flipping a dual-slope converter on its head.

For at least four decades, dual-slope integrating A-to-D conversion has formed the core of most every digital multimeter and many industrial and instrumentation applications besides. Elegant in its simplicity, a DSADC (dual-slope analog-to-digital converter) employs an analog integrator coupled to a comparator and control logic to accumulate (integrate) the input signal, Vin, for a fixed interval, T1 – comprising the first “slope” – then to switch the integrator’s input to a fixed negative reference, Vref, to ramp the integrand back to zero – the second “slope” – while measuring the time required to do so, T2. The input voltage is thus:

Vin = Vref · T2 / T1          [1]


This Design Idea applies a twist to the familiar algorithm: Simply reversing the order of signal and reference integration results in what I call a reciprocal dual-slope integrating ADC (RDSADC).

Here, Vref is integrated for a fixed interval, T1. Then the integrator input is switched to -Vin, and the time T2 required to ramp back down to zero is measured. Thus:

Vin = Vref · T1 / T2          [2]


Given the similar equations, you might reasonably ask: “So what?” So this:

In equation 2, the conversion result is inversely proportional to time measurement T2 and therefore to 1 / Vin, and differential calculus tells us that the rate of change of inverses varies, not linearly, but as the square of the inverse of the measured value, i.e.,

dT2 / dVin = 1 / Vin2        [3]


The payoff is therefore a nonlinear conversion measurement that maintains high resolution for low amplitude inputs without any need for auto-ranging of the Vin scale factor. A practical implementation of the RDSADC is shown in Figure 1. It converts inputs in the 10-bit range of 1mV to 1V while maintaining a 10-bit resolution at both extremes: 1mV resolution at Vin = 1V, and 1µV resolution at Vin = 1mV. This translates to a 1,000,000:1, 20-bit dynamic range with only a 15-bit 32k count resolution for T2. In other words, a 20-bit dynamic range is achieved with only a 15-bit count, for a 32:1 improvement in conversion time over a similar resolution conventional DSADC. In fact, Vin can go a bit negative, and all the way to 5V at reduced resolution.

Figure 1  RDSADC reverses the usual order of integration to get a big increase in dynamic range.


Here’s how it works:

The RDSADC cycle begins with connection of Vref to the “+” input of integrator A2 (pin 3) by S1 through the R4/(R3 + R4) voltage divider, and integration during interval T1, ending when V2 = Vref, switching comparator A1’s output low.


Figure 2  RDSADC timing diagram:

T1: 1 ms (Vref integration)

T2: 1-32 ms (Vin integration)

Count frequency: 1 MHz

Sample rate: 30-500 Hz


S1 then lets A2’s “+” input drop nearly to ground (more on that later), while S2 switches A2’s “-” input nearly to Vin through R1. V2 then ramps downward at a rate nearly proportional to Vin, defining counting interval T2. Arrival of V2 at the low threshold of A1 terminates T2, completing the ADC cycle and beginning a new one, ad infinitum.

About those nearlies: Astute readers will have noticed that during T2, when S1 removes Vref from A1’s “+” input, a 42 mV positive bias is created by R5. The purpose of this bias is to keep A2’s output alive all the way down to the end of the T2 slope despite use of a unipolar power supply.

Also during T2, R2 creates an effective 32 mV bias1 to ensure that T2 remains finite (never more than 32 ms), even when Vin approaches zero. Thus:

Vin = T1 / T2 – 0.032     [4]


This idealized arithmetic ignores real-world tolerances like A1 and A2 input offsets, Vref accuracy, and resistor variations, but these imperfections can be easily compensated computationally with a simple two-point Vfullscale and Vzero calibration.


1 The 32 mV comes from the R1-R2 voltage-division of the 2.5 V Vref (50 mV), which provides 1.6 µA (32 mV / 20 kΩ) of offset current to the Vin / 20 kΩ input current, minus the “keep-alive” bias provided by divider R3-R5 (18 mV).  Hence 50 mV – 18 mV = 32 mV.


Related articles:


 —W. Stephen Woodward is one of EDN’s most prolific and innovative Design Ideas authors, with dozens of contributions to his credit.



Leave a comment