I'm trying to come up with a solution to use the analog output of a DAC to drive the X-Y axis control of a commercially available laser 'closed-loop moving magnet' driver.

I found an explanation on how to use an op-amp to create a differential amplifier here and a calculator here, but I can't get that to work without a 2.5V reference voltage.

I also found a simpler design for such a circuit here, but when I try that in a simulator (I use iCircuit on my iPad) it doesn't swing from -10V to 10V but from -8V to 12V (approximately). This is the circuit:

enter image description here

This is my testing in iCircuit:

enter image description here

Tried it with the included circuit simulator, don't know how it works exactly:


simulate this circuit – Schematic created using CircuitLab

My question is, is this simpler design the way to go, but are my resistor values wrong? Or do I need to go with the first circuit design but need to add something to get a 2.5V reference?

I have very little information on the exact electrical requirements of the scanner, but I'm assuming it's a product designed to be used in an ILDA laser device and fairly compatible to that standard.

UPDATE In iCircuit, I replaced the lower 10K resistor with 20K and the feedback resistor from 15K to 30K, and it looks like I'm getting the desired output now. Still, I don't know if this is trustworthy or not.

Bonus question: I have an ST LM324N opamp lying around from an old lab kit. Do you consider this device suitable for this task, if I supply +12V/-12V to it?

  • \$\begingroup\$ What is the reference voltage? Are you measuring everything against the ground? \$\endgroup\$ – John Dvorak Jan 13 '14 at 11:09
  • \$\begingroup\$ Yes, I believe in iCircuit, I measure against ground. Perhaps I should try and include the iCircuit circuit here. \$\endgroup\$ – Dave Van den Eynde Jan 13 '14 at 11:13
  • \$\begingroup\$ Why not use a 4-quadrant DAC in the first place? \$\endgroup\$ – Ignacio Vazquez-Abrams Jan 13 '14 at 11:26
  • \$\begingroup\$ @IgnacioVazquez-Abrams because I have no idea what that is. I'm a binary guy grin. I want a 12-bit SPI DAC that I can control from my Arduino at high speed, and that's commonly available on a breakout board or in a DIP package (for prototyping). I don't even know if such a device exists. \$\endgroup\$ – Dave Van den Eynde Jan 13 '14 at 11:29
  • \$\begingroup\$ The MicroChip MCP4921 is a 12 bit DAC with an SPI interface, and available in DIP-8 packages. \$\endgroup\$ – Anindo Ghosh Jan 13 '14 at 12:42

Your circuit is incorrect. What you are trying to do is a gain+offset (negative offset) so you want to gain it up and offset the virtual ground point. You don't need that 10k/10k voltage divider as you've drawn it to provide a 2.5V reference.

Since your full scale output from the DAC is 5V, and you want a full scale output from the opamp of 20V (-10 to +10) then you need to have a gain of 4 in the opamp. That gives you 0-20V. So you want (DAC x Gain) - Offset.

In a non-inverting op-amp, the + input has a gain set by the (feedback resistor/input resistor)+1. However, the negative input has a gain of simply the (feedback resistor/input resistor). So a non-inverting input with a gain of 4 will have a a gain of 3 from the negative input. You can use the negative input to offset the fullscale 20V to -10 to +10. So you want 10/3 = 3.33 volts at the negative input.


simulate this circuit – Schematic created using CircuitLab

At the point I marked 3.333V, for a standard non-inverting op-amp configuration, that point would be GND. But you want to add the negative input's gain to the output too, so you need 3.333V there.

The LM324 will work fine,but it's not a precision opamp and has some significant input offsets itself, and you might lose precision of the DAC input, but it can be trimmed out if you need to. If you don't want to trim anything then you can use a precision opamp with good DC characteristics.

  • \$\begingroup\$ Thank you. I'll try to simulate that. Would you care to answer my bonus question? Can I try this on my LM324N? \$\endgroup\$ – Dave Van den Eynde Jan 13 '14 at 12:44
  • \$\begingroup\$ I just edited to add that. \$\endgroup\$ – Brian Onn Jan 13 '14 at 12:46
  • \$\begingroup\$ Also note that the LM324 can only go to 1.5V below the top rail, and can get close to the bottom rail, so you need to use at least -10.5 to +11.5V on the LM324. \$\endgroup\$ – Brian Onn Jan 13 '14 at 12:52
  • \$\begingroup\$ This circuit will not work. The current through R1 will make your 3.33V reference not 3.33V. In simulation, the output goes down to about -8V, and clips against the positive rail. \$\endgroup\$ – Phil Frost Jan 13 '14 at 13:07
  • \$\begingroup\$ Yes, that 3.333 needs to be low impedance, i.e. a buffered reference.I've updated the circuit drawing, thanks! \$\endgroup\$ – Brian Onn Jan 13 '14 at 13:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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