I'm working with an Arduino Due's two DAC pins.

I want to output to a single 4W 5.7Ohm speaker to test my code, with the intent of eventually outputting to a set of speakers (woofer, mid-range, and tweeter) for better quality for frequencies between 87.31Hz to 3520Hz+.

I'm using the DAC pins in 12 bit mode, with output between .55 - 2.75V @ 3mA according to the linked sources (I know forums aren't definitive sources, but I've cross checked and many forum posts and sites are around this range. 3mA comes from total for all I/O pins of 130mA divided by 42 I/O pins total, not counting the 12 PWMs)

I understand that I need a circuit like the following:

  1. DAC output to "reconstruction filter" to smooth the quantized output.
  2. anti-aliasing filter, possibly the same as above, to remove noise (Nyquist Frequency stuff)
  3. Use an audio-tapered potentiometer for volume control by reducing amplitude of signal.
  4. Removal of both the DC offset and centering the signal on 0v using a capacitor/filter.
  5. Use an OpAmp to as a voltage follower to buffer the Arduino Due from the load of the speakers.
  6. Use an OpAmp (possibly the same one as above) to increase the power of the signal (via an external power source probably, because the Due cant drive much) to a range suitable for the speaker.
  7. A high pass filter to remove unwanted noise from the output.

I will be playing a sample at 16kHz, which I assume means I will have a variable duty cycle and therefore cannot use anything sensitive to this to function properly.

My questions are the following:

  1. Is this overkill for this kind of circuit, or way under the bar for a proper setup?
  2. How do I know where my high pass filter cutoff frequency should be, as my sample is of an acoustic instrument with natural overtones, meaning knowing just the frequency of the root note is not enough.
  3. Without a power source providing positive and negative voltage, is it enough to offset with a capacitor to get a balance on 0v, and is this lost over the OpAmp if it does not have a negative voltage going in? Can I just balance it at the end with a capacitor then?
  4. Is the OpAmp buffer/voltage follower enough to stop my Arduino from dying?

Thanks for the help. I'm new to audio circuits, my experience is in DC and programming the Arduino.

  • $\begingroup$ Welcome to engineering SE. I scanned your questions, and everything you want achieve can be achieve and might need additional circuitry. Question for you: Have you or can your generated for example 1 V peek to peek 1KHz tone. $\endgroup$ – Mahendra Gunawardena Oct 7 '20 at 12:41

Your understanding of the issues is good.

Q1: It's not overkill at all. All of the elements you've mentioned are needed.

Q2: The low-pass filter frequency needs to significantly attenuate all frequencies above 1/2 the sampling frequency. It makes sense for a 'low fi' arrangement to reduce the filter frequency a bit so as to simplify filter design which otherwise tends to be complicated.

Consider a Chebyshev filter design.

Q3: You refer to a design style known as a 'false ground' of 1/2 supply voltage. You need to bias an amplifier so that the output is at 0.5*Vsupply. You can then capacitively couple the load.

Q4: Yes, the buffer is the solution.

In passing, please note than an op-amp will not have sufficient current output to drive a speaker. There are many suitable chip amplifiers for that purpose and some are configured for gain, filtering etc just the same way as an op-amp.

Hopefully you won't need a low pass filter at the output. The anti-aliasing filter ought to suffice.


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.