Do not follow Simple Audio Player example - DAC0 now non-functional on DUE

Just to let everyone know - do not follow the Arduino Due Simple Audio Player example and connect a speaker direct to DAC0 without resistors. My DAC is now damaged.

Is there anyway to get a replacement? I know it is normally experimenter beware, but I was just following directions in the official IDE...

Did you use a 8-Ohm speaker?

I once read that the Due DAC's highest voltage is about 2.55 V, with 8 Ohm I get about 318 mA. Isn't that already too high for the uC? Possible options: 318 mA are no problem or it isn't 8 Ohm because the impedance depends on the frequency. Another related question: If 8 Ohm Speakers work without a resistor, is it then possible to use 4 Ohm Speakers and simply add a 4 Ohm resistor? I'm hoping for appropriate help :)

Greetings decrux

You need an audio amplifier chip between the Due and the speaker. There are many but the LM380 or LM383 would work nicely.

318 mA are no problem

Yes it is.

it isn’t 8 Ohm because the impedance depends on the frequency.

True but the impedance is still too low for the pin.

is it then possible to use 4 Ohm Speakers and simply add a 4 Ohm resistor?

No.
The current limit on a Due is about 15mA so a 220R resistor is about as small as you can go. At that there will be so little current trough the speaker I doubt if you can hear anything. I would recommend a headphone ear piece, a 1uF capacitor and a 470R resistor all in series. Or an external amplifier.

That tutorial is clearly wrong and I am sorry it slipped past the QA process…
It’s being removed now.
jknighton please write to support (at) arduino.cc explaining the situation and you’ll get a new board

I’m sorry for the inconvenient

m

for what it's worth, I have had good success creating sound using a powered PC speakerset.

just find the (green) plug of the speakerset and connect ground and a channel to the gnd and dac pin respectively.

Hi,
My DAC0 has also just died, in my case the Arduino was connected to an LM386 amp. I cannot find any problems with the amp, I am posting in case others have similar experiences.

Can I also suggest that any future DAC related tutorials include a series current limiting resistor - I was not using one, but if the issue was one my side it might have same my DAC0.

Duane B

rcarduino.blogspot.com

The LMxxx amps have an input bias voltage. If the impedance of this voltage source is low enough, it could feed back into the DAC and damage it's output driver. I've measured the LM383 and find 0.6V. There should be at least a series coupling capacitor. Also, a current limiting resistor would certainly be appropriate for testing purposes.

Hi,

if the DAC seems to have given up the ghost,
could you please try this simple test sketch ?

I was messing with the Simple Audio Player too, and did not get any signal from the dac. might have been me,
but just maybe there is a problem in the simple audio player code, instead of a hardware failure…

this sketch outputs a ramp on both dac channels forever. if you have no oscilloscope, you should see a non-zero voltage (i measured about 2.3 volts) on a multimeter.

void setup() {
Serial.begin(19200);
Serial.println("program start");
}

void loop() {
  for (int i = 0; i <256; i++) analogWrite(DAC0,i); 
  for (int j = 0; j <256; j++) analogWrite(DAC1,j); 
}

The very first sketch I ran in my DUE was the "Simple Audio Player" and it worked great with a Seeed SD card shield and a 16 ohm RadioShack speaker (made in China). I haven't tried again since then. May be I was lucky.

My DAC0 doesn't work either. I don't think I've ever had it connected to anything though (until now, obviously!) It's one of the early boards where DAC0 is marked as "DAC2", and I've only ever used DAC1, which works fine. Very strange :~

Hi, I was using my own DDS Code - http://rcarduino.blogspot.com/2012/12/arduino-due-dds-part-1-sinewaves-and.html - against an LM386 circuit which I have used extensively on UNO's and Mega's. DAC0 is dead, as a quick test I tried DAC1 and its still working, I do not want to use it though until I know why DAC0 has failed.

My board has the DAC outputs labelled DAC1 and DAC0 .

Duane B

rcarduino.blogspot.com

hi,

my DAC0 also died :frowning: but DAC1 is still working… why is it the DAC0 only dies and not the DAC1??
is that a hardware failure? or something else?

and what do do now? van this be fixed somehow?

Floris

DAC0 is the one you learn on, DAC1 is the one you then take care of.

Duane B

I’m still confused as to how exactly we have blown these up. Technically there is only one DAC, it is multiplexed to two sample/hold buffers. So somehow we must have blown the last output transistor. Yet the pin still works fine for digitalWrite/Read. Personally I’m waiting for the Due to be more widely available, then I was going to try overloading DAC1 in a controlled way until it breaks too, to try and find where the limits are.

Incidentally by my calculation it should be possible to get 11 bits at 41kHz from the PWM hardware, and that has 8 channels :smiley:

Rather than blow one up which tells you little why not look in the data sheet. The problem with a distruction test is that it tells you nothing of the situation where it still works but damage is being done so that it has a reduced life time.

Grumpy_Mike:
Rather than blow one up which tells you little why not look in the data sheet.

The SAM3X/A datasheet:
Page 1369:
45.5.3 Conversion Performances

  • For performance and electrical characteristics of the DACC, see the product DC Characteristics
    section.

Page 1391:
46.2 DC Characteristics
I(OH) (ISource) for pins in Group 2 (which include the DAC), is -3mA.
I(OL) (ISink) for pins in Group 2 (which include the DAC), is 6mA.

Pins in Group 2:
PA[1-6], PA8, PA[10-13], PA[16-17], PA[20-24], PB[4-7], PB9, PB[12-13], PB[15-21],PB[25-31],PE[10-14], PE16, PE22,
PE24, PE26, PF[3-5]

Group 1 (most other) pins have limits of -15/9mA.


The minimum allowed load (by spec, conservative) is 3.3V/.003A =1100 ohms. Personally, I would never intentionally come close to this low of a load for this chip.

The information in this thread: http://arduino.cc/forum/index.php/topic,132130.0.html applies to everyone, even us audio guys.

-Chris
(not an audio guy)

DuaneB: DAC0 is the one you learn on, DAC1 is the one you then take care of.

Duane B

destructive testing :~

chriskner:
I(OH) (ISource) for pins in Group 2 (which include the DAC), is -3mA.
I(OL) (ISink) for pins in Group 2 (which include the DAC), is 6mA.

That is the spec for the digital output stage of the PIO pins, not the analog stage of the DAC. (They are the maximum loads for the digital output to reach a specified voltage level at a specified speed - not the absolute maximum current)

What I’m looking for is some specification of output impedance or output resistance (ie the minimum resistance on the output so that the output voltage is still accurate to 12 bits without distortion) - usually called RL or RLOAD or Z

I’ve looked and looked through the SAM3X datasheet for the specifications for the DAC and they are missing. But I think I may have found something useful. The SAM3S datasheet has a section on the electrical characteristics of its DAC which is mostly the same as the SAM3X, except that it also includes a table on analog output specifications (on p1033), which gives RLOAD as minimum 5k ohms. Given the similarities I shall assume this is true for the SAM3X too.

http://www.atmel.com/Images/Atmel_6500_32-bit-Cortex-M3-Microcontroller_SAM3S_Datasheet.pdf