I believe this will an easy question for some of you --
-- I use my arduino and make simple programs, some of which use the tone commands to output simple tones to play songs.
-- Until now I have connected the arduino to a small 8ohm 0.4watt speaker ... to a pin and the ground in the normal way and it works fine.
-- But I just took apart a crummy radio and got the speaker out and I'd like to try to use it also. BUT this speaker is a bit bigger. and on the back I can see that it is 8ohm 3watt.
-- So... if I simply connect this to the arduino like I did with the previous smaller speaker, will this much higher wattage cause it to blow out my arduino?
... Or should I put a resistor in (from the speaker to the ground)? What strength resistor?
... or should I do something else to be able to use this 8ohm 3watt speaker?
Thanks for any tips! Note that I'm not great at electronics so putting any tips in very concrete form ("put a 10,000K 1/watt resistor between X and Y") will be more handy... I'm eager to learn the electronics logic also but I won't be able to apply it if that's the only answer I see
The power rating of 3 watts or 0.4 watts is only the maximum power a speaker can handle. Connecting it directly to the Arduino is not going to exceed 0.4 w so using a 3 w speaker is of no consequence.
However, you should not be connecting an 8R speaker of any wattage rating to an Arduino pin because it will damage the pin, so for all speakers I would recommend a minimum seriese resistor of at least 120R.
But once you connect your speaker via a 120R resistor you will only get around 6% of the signal developed across the speaker. You really need to connect a low-gain amplifier to the arduino output and connect the speaker to the amplifier output. See here for further explanation
So we are talking a logic signal - square/rectangular waves, for which a (linear) audio amplifier isn't actually
necessary.
I'd just use a MOSFET low-side driver as a buffer, my favorite the MIC4422 has about 1.2ohm output resistance
at 5V supply and if you use a MIC4421 (inverting) and a MIC4422 (nont-inverting) you can do a bridge circuit
and push 10V pk-to-pk out. And usefully they are available both as DIP and SOIC...
I've used them for class-D drive with L-C filter on the output, using high frequency PWM, and this works
well. You also have the option of going upto 12V with these chips, although heatsinking may become
an issue.
Consider that the arduino pwm and tone outputs have 200 to 500 ohms. That is the equivalent resistance of their rather small transistors, so if you don't want it then buy an op amp or something off chip. Consider the equivalent circuit of running any 8 Ohm speaker from a tone with a couple of hundred ohms internal resistance. Most of the power just makes your arduino hot, with 2% to 5% going to your speaker.
I think that your best bet is to read up on the 5532 Op Amp, which might do what you want.
Next best would be to move to smaller speakers from dismantling someones' walkman headset or similar. Those tend to be 30 to 80 Ohms, so not a perfect match to ardunio but less mismatched than 8 Ohm.
The NE5532 is not a 5V device, definitely not rail-to-rail, and its not a power device (output short circuit
current 40mA). (Its also outperformed by the NE5534A anyway, but no matter!
These days those old classics are kicked into the dust by modern high performance devices - for
instance the AD8656 has lower noise, higher bandwidth, much more output current (220mA),
and is 5V rail-to-rail.
But as I said this is a logic signal, no analog devices are needed.
Indeed, simple emitter follower like that is cheaper too (!). A bit less output voltage but only need
one NPN and one PNP and blocking cap. The base resistor isn't needed really for a follower.
From what I remember about speakers, is that square waves kill coils. Maybe this is only true for large speakers (like car audio).
Also, underpowering speakers (or similarly overdrawing amp/power source) causes crummy speaker-killing signals.