I am currently building a project involving a laser scanner (two galvanometers with mirrors that deflect a laser beam) that I want to control. The galvos need +-10V differential signals (and I'd like to have a least 12Bit) that I want create with some small board.

Most Arduinos I know use PWM to create an analog output which is not usable for this project. I found the Teensy3.1 which has at least one 12Bit DAC so that also doesn't work. An alternative would be a DAC breakout board like "MCP4725" but it would be nicer to just have a single board with no additional parts.

The best thing would be a small board with already two 12Bit DACs. (even If I had to upscale the voltage +-10v)

Is there a board I haven't found so far? Or have I missed a completely different approach?

  • Why is filtering the PWM not an option? Aug 15, 2015 at 9:57
  • Would it be a solution? I'm not that deep into electronics, so it could possibly be a solution for me. How does it work?
    – FooTheBar
    Aug 15, 2015 at 10:07
  • Adding a capacitor to smooth out the PWM?
    – EJTH
    Aug 15, 2015 at 10:13

1 Answer 1


For 12-bit dual DAC you want the MCP4822 which has two channels of 0-4.095V in 1mV steps.

The output of that you would then need to pass through a suitable amplifier arrangement with an op-amp giving a gain of 5 and adding an offset of -10V. The gain would change the 0-4.095V to 0-20.475V, and the -10V offset would change that to -10V to +10.475V. If you want to get more precise you could use an offset of -10.2375V (it's not easy to make an offset voltage that precise) then you would get -10.2375V to 10.2375V in 12-bit resolution.

It's doubtful you'll find a board already made up with that specific arrangement (it's fairly specialised) but it's not something that's hard to make - all the components are available as DIP or other through hole components, and the circuit for the amplification stage is pretty simple (check for non-inverting op-amp circuits online, there's millions), so building it up on strip board or matrix board would be easy enough.

  • Thanks! Did you already know this component or how did you search for it? I only found SMD-parts (like the MAX5322) when searching and I don't have the equipment for them.
    – FooTheBar
    Aug 15, 2015 at 10:31
  • It's a component I know well. I have a number of them in my bits box, they're very useful.
    – Majenko
    Aug 15, 2015 at 10:33
  • If you already used it, could you maybe check if I understand the chip correctly: To communicate, I send two-byte messages as described on page 22 and select the output via bit 15, set Bit 13 to 1 to get the 4.095-Range, SHDN(12) to 1 to enable the output and fill 11-0 with my data. To synchronize the outputs, I set the LDAC-Pin(5) to high (VDD, Pin1), write messages for both outputs, set it back to VSS (Pin7) and then the output-voltage is updated.
    – FooTheBar
    Aug 15, 2015 at 11:35
  • From what I recall that sounds right, Yes.
    – Majenko
    Aug 15, 2015 at 12:02
  • I just found thist library: hacking.majenko.co.uk/MCPDAC :) I think that's an easier way to use the chip
    – FooTheBar
    Aug 15, 2015 at 12:03

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.