Op-amps and virtual ground Apr 2016

The voltage-divider-tied-to-3.3V trick allows shifting the level of an input voltage to another range. But there are a few issues with it.

The first one is that we still cannot measure anything above 3.3V this way. Regardless of the values of Z1 and Z2, higher voltage would cause Vout to rise above 3.3V: not good for the ADC.

We could consider combining two voltage dividers, i.e. the first to reduce the voltage swing, feeding the second one for level shifting, but generally that’s not a good idea:

One reason is that a voltage divider assumes that there is no current flowing in or out of Vout. With cascaded voltage dividers, we break that assumption and their behaviour will change.

There’s another way - instead of tying the divider to 3.3V, we tie it to a lower fixed voltage:

So far so good, but we need to reference this divider to some voltage. Let’s say we tie it to 2.4V:

This is not quite inside the allowed range, but by increasing Z2 a bit for a slightly higher division ratio than 3:1 (perhaps 2.2 kΩ or 2.4 kΩ), the maths will work out and place Vout well in range.

Which brings up the next question: how do we create a 2.4V reference voltage?

Again, we could use a voltage divider, such as a 26 kΩ Z1 in series with a 24 kΩ Z2 between +5V and ground. But that that’s a bad idea for exactly the same reason as before: combining voltage dividers leads to currents flowing in unintended ways.

What we need is a stiff 2.4V supply: one which doesn’t change if we load it a bit and draw some current (or feed it some current, when Vin > 2.4V).

Meet another workhorse of the electronics words, the Operational Amplifier, and its notation:

The topic of op-amps is far too extensive to cover in full, but we only need a few properties here:

Also important to know is that Vs+ and Vs- are the power supply connections, and that both inputs (V+ and V-) and the output (Vout) will be limited by those two supply levels.

The circuit we are going to need here is the voltage follower:

Considering the above properties, Vout will “follow” Vin: when Vin goes up, V+ becomes higher than V-, forcing up Vout until Vin and Vout match again. Similarly when Vin goes down.

Since the input draws almost no current, yet the output can supply or consume current, this is also called a buffer amplifier: it isolates or buffers the input from loading effects on the output. Which makes it ideal for creating a “stiff” voltage reference:

The output is 2.5V, same as the V+ input, since it’s tied to a 2:1 voltage divider across the 5V supply. But unlike the input, it can supply many milliamps without affecting its output voltage. This voltage level can be used as a “virtual ground”, i.e. as a reference for other voltages.

Perfect for our needs. By tweaking the resistors a bit, we can produce any voltage we want, and use that as reference for the second (right-hand side) part of that first diagram above:

So with 4 suitably-chosen resistors, this will map any ± Vin voltage to the 0..3.3V of the ADC. But there’s another important drawback, which requires another op-amp and 2 more voltages.

Weblog © Jean-Claude Wippler. Generated by Hugo.