6
\$\begingroup\$

I've read in my research that most microcontrollers are not built with DAC outputs as they are expensive to include on silicon chips. Also applications that require analogue outputs typically need a higher resolution than is feasible on a microcontroller and would probably use a dedicated IC anyway.

I am planning to build an analogue synthesizer with patch memory (storage and recall of voltage states). Apparently these functioned by reading the voltage of an analogue potentiometer into a microcontroller and applying a control voltage to the synthesizer using a DAC. This state could then be saved and recalled as 'presets'.


I would like to know a suitable way to control multiple analogue outputs to a circuit from an Arduino. The analogue outputs in most (if not all) Arduino boards are actually PWM, and I want to output a true analog signal.

\$\endgroup\$
7
  • \$\begingroup\$ In your last sentence, what do you mean by "control"? The Arduino gives you 6 analog outputs, as well as a few more digital-PWM ones. (All of them are actually PWM). Are you asking for a "true" analog output? \$\endgroup\$ Apr 15 '13 at 15:51
  • 1
    \$\begingroup\$ @Manishearth - Was it really necessary to correct the British English Analogue to American English Analog? \$\endgroup\$
    – Mark Booth
    Apr 15 '13 at 15:56
  • \$\begingroup\$ @MarkBooth: hm, didn't know that it was BrE. In my experience, "Analogue" means "Something that bears an analogy to something else" only. But you're right, oh well. \$\endgroup\$ Apr 15 '13 at 15:59
  • \$\begingroup\$ Anyway, no harm in editing since it was on the top in the first place. Plus I did a retag now :) \$\endgroup\$ Apr 15 '13 at 16:00
  • \$\begingroup\$ @Manishearth - The Arduino Uno does not provide analogue outputs, only PWM that can be filtered down to a DC voltage. The 'control' refers to the need for the Arduino to output multiple analogue voltages to various points in the synthesizer. \$\endgroup\$
    – blarg
    Apr 15 '13 at 16:08
9
\$\begingroup\$

The Due is the only Arduino board with a built in DAC. (Two of them.) If you need more than two outputs or want to use a board such as the Uno, then you need to consider building a DAC.

Option 1: PWM Using a RC-filter you can create a low-pass filter that allows you to create true analog voltages from a PWM pin. This method could be difficult to calibrate or may not work depending on the impedance of the circuit you are driving.

Option 2: R-2R The most common method is a R-2R ladder, explained here: http://en.wikipedia.org/wiki/Resistor_ladder

Option 3: DAC Chip The most efficient, but most expensive, method would be to use an external DAC chip. You can pick one that is designed specifically for the voltages you need and potentially find one with multiple outputs. Regardless, most DAC chips feature a SPI or I2C interface, so you can chain multiple chips to a single Arduino.

The Maxim MAX5214 is an example of a high resolution (14bit) single output DAC, with a SPI interface. http://www.maximintegrated.com/datasheet/index.mvp/id/7119

\$\endgroup\$
1
  • \$\begingroup\$ I've since discovered the (circa 1979) idea used in synthesizers of using one DAC and multiplexing it to several sample and hold cells. \$\endgroup\$
    – blarg
    Dec 1 '13 at 16:43

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.