Arduino Nano & 0.5W 8Ω Speaker

Hello, I am trying to hook up an Arduino Nano with a 0.5W 8Ω Speaker as mentioned to play a music (WAV) file from an SD card. I have successfully written the code and read from the SD card, but get very quiet and bad sound from the speaker. I followed this schematic:


Yet I am unsure about the choice of the resistor value and the necessary transistor, so I would love to get some help on it.

That circuit is for ON/OFF control.

For linear speaker operation, use something like a class D amplifier.


or lm386

Speakers need AC only - any strong DC component will push the coil to the end-stop
and it won’t be able to move properly. This means they need a push-pull amplifier
not a single transistor - the LM386 mentioned above is one possibility, and there are some
5V powered class-D chips available too.

Having that 100 ohm resistor in series massively reduces the power that can go to the
speaker - this is another reason why it is quiet.

Ok, so a quick update. I tried using the LM386, and the sound is louder, and probably just a tiny bit better, but still terrible. There is speech in the played file and it is practically incomprehensible. Any idea why?

tl;dr there is a lot of noise

can be overloaded, use potentiometer

>I have successfully written the code<
Are you sure? I assume you know the regular Arduino doesn’t have a true-analog output?

Have you tried TMRpcm? It “fakes” PCM/analog with fast PWM, but you still won’t get “CD quality”.

You might want to try your code (or TMRpcm) with regular powered computer speakers so you can test & debug the hardware & software separately. DON’T connect your home stereo because unfiltered PWM can do “bad things” to an analog amplifier. (Also “be careful” if you have expensive computer speakers.)

And/or test the LM386 circuit with your phone or computer as a sound source.

>but get very quiet and bad sound from the speaker.<
Try taking-out the 100 Ohm resistor. And reduce the base resistor to around 200 Ohms. It’s still not a linear-analog amplifier circuit but it can work with PWM (TMRpcm).

That circuit is almost right, but still assumes an AC input. If you are driving it from a logic device such as a Nano, it must have a capacitor - say 10 µF - in series with the input.

And add a capacitor and resistor to prevent oscillations on the output.