I'm working on a DIY analog synth based on the CEM3340 chip. When feeding it 12V at VCC it will output waves at different amplitudes that I'll want to scale to 5V to -5V:

Square: 0-10.7V

Sawtooth: 0-8V

Triangle: 0-4V

To scale those waves to -5V - 5V I'm using a differential op-amp config with the values calculated here as seen above:

differential op amps

My question is: using that calculator, I need to keep VRef relatively low, around 2.5V otherwise I start to get negative values for resistors. In my circuit, I have a 10V ref voltage that I would like to use as VRef. Is it possible to change the op-amp config to divide my 10V voltage ref to 2.5V? I've tried to use a voltage divider before R15/R17/R19 but failed. I would also like to keep the config non-inverting. Is something like this possible with only one op-amp unit?

Thank you!

  • \$\begingroup\$ What are the bipolar supply voltages? They cannot be +/- 5 with that OA. \$\endgroup\$ Commented Jan 15, 2022 at 16:09
  • \$\begingroup\$ Also each OA must use Vref equal to V mean input. \$\endgroup\$ Commented Jan 15, 2022 at 16:15
  • \$\begingroup\$ 12V / -12V for supply voltages. What is V mean input? half of peak to peak value? \$\endgroup\$ Commented Jan 15, 2022 at 20:22
  • \$\begingroup\$ Yes, mean = avg then choose gain = (1+ Rf/Rin ) x input attenuation \$\endgroup\$ Commented Jan 15, 2022 at 20:57
  • \$\begingroup\$ so I need another Op amp per wave to scale my 10V ref to mean? \$\endgroup\$ Commented Jan 15, 2022 at 21:05

3 Answers 3


You can replace R15 (R17, R19) and the 2.5V with its Thevenin equivalent: two resistors arranged as a voltage divider to yield 2.5V, with a parallel impedance of R15 (R17, R19). For example, 27K and 81K will drop 10V to 2.5V with an effective resistance of 20K.

enter image description here

However, it doesn’t look like the values shown will generate your desired -5V to +5V swing:

The R16/R12 (etc) divider is converting all inputs to a 0V – 3.3V range. When the input is 0V, so is the negative input of the opamp. So current will flow from the 2.5V source through 20K (R15), and that same current will continue to flow through another 20K (R21) which will therefore generate the same voltage (2.5V) across it, so the output voltage is going to be -2.5V, not -5V.

When the input is at its 3.3V peak, the voltage across R15 is now 3.3-2.5 = 0.8V, and this will also be the voltage across R21. So the output will be 3.3V + 0.8V = 4.1V, not +5V.

What your circuit does is reduce the input to a known swing, 0-3.3V in your case, and amplifies it by 2 (1 + 20K/20K). This will result in a 6.6V voltage swing with some sort of voltage offset.

What you want is a gain of 3 to get your 10V swing, so double R21 or halve R15, something like this:

enter image description here

  • \$\begingroup\$ Thank you so much! I was not taking impedance into account! digesting this right now :) \$\endgroup\$ Commented Jan 19, 2022 at 11:48
  • \$\begingroup\$ How do I find a voltage divider-Thevenin equivalent to a voltage source + resistor? Is there an easy calculation? \$\endgroup\$ Commented Jan 19, 2022 at 12:49
  • \$\begingroup\$ If a voltage V is applied to a resistor R1, and R1 connects to R2 which connects to ground, then R1 and R2 form a voltage divider. The junction of R1 and R2 will have a voltage of V(R2/(R1+R2)). For example, for V=10, R1=40.2K, R2=13.3K, the voltage at the midpoint, let’s call it Vt, is 10(13.3/(13.3+40.2) = 2.49V. The output impedance of the resistor network (Rt) is the parallel impedance of R1 and R2, which is (R1*R2)/(R1+R2), which is 10K here. Thevenin says you can replace R1,R2, and the 10V with a source of Vt and an impedance of Rt – the two circuits will appear the same to a load. \$\endgroup\$
    – td127
    Commented Jan 20, 2022 at 17:40

A simple general formula for the two resistors to create the Thevenin equivalence given the supply voltage Vs and the desired equivalent voltage Vt and resistance Rt (Vs >= Vt) can be found with a bit of algebra:


simulate this circuit – Schematic created using CircuitLab

R1 = \$\frac{V_S}{V_T}\cdot R_t\$

R2 = \$\frac{V_S}{V_S-V_T}\cdot R_t\$

Eg. Rt = 20kΩ, Vs = 10, Vt = 2.5

R1 = 80kΩ

R2 = 26.667k


The source of \$V_{REF}\$ is being loaded by multiple modules, each sinking/sourcing current through its impedance, current which varies with every module's output. This current will cause \$V_{REF}\$ to fluctuate as a function of all three module outputs.

The answer by @td127 is great, but it must be repeated for each individual module, to avoid loading by the others. If you want to share a single 2.5V reference between multiple modules, then you require a zero output impedance source for \$V_{REF}\$. That can obtained with negative feedback, using an op-amp voltage follower:


simulate this circuit – Schematic created using CircuitLab

This reference node REF can be shared with multiple modules, but it can only sink/source 10mA or so. This means that every load upon it must be light. If you have 3 modules sharing this reference, each must sink/source no more than about 3mA. Ideally you should aim for much less than this.

This requires that your choice of resistors such as R15 and R21 must pass no more than 3mA with the module's output at either extreme, +12V or -12V.

For instance, for the square output module, the highest REF current flows when SQUARE_OUT is at -12V, which would place \$+2.5V - (-12V) = 14.5V\$ across R15+R21. This would invoke a current of \$\frac{14.5V}{20k\Omega+20k\Omega}=360\mu A\$, which is fine.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.