How to scale and shift voltage signal?

I want to scale and shift my voltage signal by below relation:

$$V_{out} = \frac {10} {12} \cdot V_{in} - 10$$

Indeed my primary voltage is from 0v to 24v and I want to put it from -10v to +10v.

I try to use the below circuit but its gain is always greater than 1. Image from SLOA097 TI.

Does anyone know how I can achieve my goal? I have ±12v and 5v power lines.

EDIT:
According to the innovative solution by scorpdaddy, I thought it would be valuable to edit my question:

1. High input impedance is required to decrease load effects. How can it be achieved?
2. How can I achieve the more and more accuracy?
• Try putting a resistor across Co. – Andy aka May 8 '17 at 14:27

This can be done in a single stage. Moreover, it can be done by inspection, using a trick, explained below.

Using the trick, the gain of Vin amounts to R1/R4 = 100/120 on the plus side. The gain of the 5 V ref is R1/R5 or 100/50, so its input is v5 * 100/50 = 10v on the negative side. The output equation is thus Vin*10/12 - 10v.

The other thing to watch is the magnitude of the input signals. With Vin at 24 V the op amp plus pin is about 5v due to the divider of R2,R3,R4. So its ok.

The rest of the resistors are the trick. R4 is offset by R6 on the other pin of the op amp. R5 is offset on the other side of the op amp by R3. And finally R1 is offset on the plus side by R2. The sum of the gains on the plus side (R1/R2 + R1/R3 + R1/R4) minus the gains on the minus side (R1/R5 + R1/R6) is 1.00. If the sum of the gains is 1.00 then the individual gains can be determined by inspection as R1/Rx. That's the trick.

If one wants, R2 and R3 can be combined.

Input bias currents also cancel out in this arrangement.

A proof of this trick is left to the reader. While it works and allows one to design the algebraic function in a single stage, the proof is complicated and the method a little misleading.

• Nice solution! 1. Can I add an op-amp as buffer before Vin to increase my input impedance? 2. Isn't it sensitive to accuracy of resistor's value? – Pana May 8 '17 at 15:32
• Yes. You can also scale up all the resistors by 10x. If you have an input impedance requirement, it should be provided in the question. And yes. The accuracy of the resistors matters. It's part of why I don't combine, eg. R2,R3. If there is an accuracy requirement that must also be provided in the question. – scorpdaddy May 8 '17 at 16:26
• +1 Perfect. For the OP: In a real situation the reference would typically be something more precise and stable than the power supply voltage. – Spehro Pefhany May 8 '17 at 17:56
• @SpehroPefhany Could you please give us some examples of things you have mentioned they are more precise and stable than the power supply voltage? – Pana May 9 '17 at 10:14
• I think you mean the gain of the 5V ref is R1/R5. – jcoffland May 12 at 8:16

$$V_{out} = \frac {10} {12} \cdot V_{in} - 10$$

Rearranging this for a single differential OpAmp;

using $V_{out}=k*V_{in+}* (|A_v|+1) - V_{ref}*|A_v|$ where $A_v=-Z_f/Z_{in-}$ Can you choose a programmable Zener or LDO Vref = 5V exactly and solve for k , and Av?

Vout=k* Vin+*(|Av|+1) - |Av|*5V) thus for Av=2 , k * (|2|+1) to become 10/12 the +input divide ratio must be 10/12 divide by 3 or 5/18

thus in @scorpdaddy 's layout , R5=R1 for Av-=-1 and Av+=2 , R6=DNP (donotpopulate)

and R2/(R4+R2) = 5/18 and R3=DNP

So if R2//R4=R/2 for Iin offset nulling, then solve this.

See if I made a boo-boo, as I get a different result.