Driving a 150 ohm speaker

I am looking to drive a small low frequency speaker (10-100Hz) and the only commercially available speakers (digikey) have 150 ohm resistance.

Can someone please suggest how I change the following procedure (obtained from ‘melody’ in the Arduino examples) to drive a 150 ohm speaker, instead of an 8 ohm speaker?

I really appreciate any help you can provide.
Cheers, Lucy


Plays a melody


  • 8-ohm speaker on digital pin 8

created 21 Jan 2010
modified 30 Aug 2011
by Tom Igoe

This example code is in the public domain.

#include “pitches.h”

// notes in the melody:
int melody = {

// note durations: 4 = quarter note, 8 = eighth note, etc.:
int noteDurations = {
4, 8, 8, 4,4,4,4,4 };

void setup() {
// iterate over the notes of the melody:
for (int thisNote = 0; thisNote < 1; thisNote++) {

// to calculate the note duration, take one second
// divided by the note type.
//e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
int noteDuration = 1000/noteDurations[thisNote];
tone(8, melody[thisNote],noteDuration);

// to distinguish the notes, set a minimum time between them.
// the note’s duration + 30% seems to work well:
int pauseBetweenNotes = noteDuration * 100.30;
// stop the tone playing:

void loop() {
// no need to repeat the melody.

First - You should NOT connect an 8-Ohm speaker directly to the Arduino! If you are using an 8-Ohm speaker, you need a series resistor to limit the current. (This will also reduce speaker volume.)

A 150 Ohm speaker will simply draw less current. You don't have to change the software (sketch).

The Arduino is rated for 40mA maximum. From [u]Ohm's Law[/u], 5V/8 Ohms = 0.625 Amps (625 milliamps). You're not actually going to get 625mA... But Ohm's Law is ALWAYS true... The voltage is going to drop, and the Arduino is going to overheat and possible get fried.

...and the only commercially available speakers (digikey) have 150 ohm resistance.

As my old boss used to say, "Stranger than truth!" :D Most speakers are 8 Ohms. Most car stereo speakers are 4 Ohms.

Thanks for your reply - sorry, I forgot to point out that the speaker is in series with a 100ohm resistor - which I'm guessing will save the arduino (?).

Since the speaker and resistor are in series in my current deign (8 ohm and 100ohm), if i were to replace the 8ohm speaker with a 150ohm speaker, would i just need a 30ohm resister?

or will the procedure fail to work with the higher resistance speaker?

One would think: 5V/150ohm = 33mA, no additional resistor needed.

Speaker's are actually rated in impedance, not resistance, which means the effective resistance varies with frequency. Typically dropping with frequency. If you measure the resistance with a meter, you would be measuring at 0 Hz, you will see a lower number - add a resistor to that number to bring the resistance up to 150 ohms to keep your arduino output pin safe,

I think the concept of using a 8 ohm speaker with a series 150 ohm resistor (required to protect the output pin) will be very disappointing. Think of the ratio of power being used up by the 150 resistor and what is left over to power the 8 ohm speaker, talk about inefficiency! The best solution is to obtain a small audio amplifier module to drive the speaker properly without damaging the output pin, and you can even use the arduino 5V pin to power a small amp module.

For one possible example: Below is a $2 (with free shipping!) stereo amp module (just use one channel) that you can power from an arduino 5V pin. Heck you could just hot glue the sucker to the back of the speaker magnet and you are good to go. You might want to add a pot or resistor divider between the output pin and the modules audio input to adjust the volume to your and the speaker's taste.


Is it this one ? http://www.digikey.nl/product-detail/en/AR027150MR-R/668-1225-ND/ Did you read that the power is only 0.015 W ? When you connect that to the output pin of the Arduino (0 to 5V), it gets too much power.

Peter_n: Is it this one ? http://www.digikey.nl/product-detail/en/AR027150MR-R/668-1225-ND/ Did you read that the power is only 0.015 W ? When you connect that to the output pin of the Arduino (0 to 5V), it gets too much power.

Yea, 5 volt output signal to 150 ohm load is 166 milliwatts (V squared / ohms) so way over the max rating of that speaker, so you are back to needing a series resistor, not to protect the output pin this time but rather that specific speaker. Use a 8 ohm speaker and a amp module.

.015W, 15mW. So do the math: P=IV = V^2/R .015 = 5^2/R, or R = 25/.015 = 1667 ohm 150 is +/-15%, or 127.5 to 172.5, worst case being 127. 1667 - 127 = 1540, so add a 1.5K resistor in series if that particular speaker is being used.


Who, me? What gave it away? My accent? My use of Digikey (Minnesota), Mouser (Texas), and DipMicro (Niagara Falls) as sources (vs Farnell, RS)? My referring to Boston area, without saying England? Something on my website? "US flat rate shipping"

I'm going to have to find a castle here in New England to get my picture taken in front of ...

This is really embarassing. That question was actually directed at Lucy Palmer , the OP for the "Adding a new chip to the UNO bd" thread. I must have started replying to one thread , got sidetracked and opened the wrong thread to finish my post. Multitasking is over-rated. Sorry. My bad.

8) It happens - I've done the same. Only the response is usually "What does that solution have to do with this topic?"

I’m going to have to find a castle

You do teach fencing, when you get your picture taken make sure you wear chain mail.
You have the beard :wink:
I know you use a foil not a sword.

I found the thread, it's this one: http://forum.arduino.cc/index.php?topic=233780.new;topicseen#new

No, I use an Epee, not a foil. Epee being French for sword :) most like a rapier. Biggest difference is target area - in epee the whole body can be scored on, in foil just the torso - and in fencing "convention" - in foil and sabre you have to have priority to score, meaning you started the attack, or successfully parried an attack and then made your own -while in epee either opponent can score anywhere at any time, and double touches are possible - both fencers can score if the touches are within 1/25th of a second. In foil/sabre you have both score lights go on and the referee determines who gets the point - and only 1 fencer will score. If too close to call, neither scores.

Must be late there raschemmel - LucyPalmer is not even in that thread :wink:

I get eye injections every 8 weeks and say épée as he jabs me in my eye…

I think I would say Ouch!

Like I said , multi-tasking is over-rated... :roll_eyes:

..the math right ? What if : I/O-pin -> (very small resistor) -> condensor -> 150 Ohm SPKR -> 3.3V ?