Basically, I'm looking to make loud noise

Hello all,
I am looking for guidance and suggestions on my (very) basic tone() amplifier. Attached is my drawn schematic of how I currently intend to wire up my circuit. Here is my goal, driving factors, and key hardware:

Goal: Use a 8ohm 10W speaker from an old TV and the tone() function nto create a short (200ms), intermittent (once or twice a minute), loud beep when criteria in my code is met. My piezo buzzer was far too quiet.

Driving Factor:

  • Simple: I'm just generating a short, single frequency tone. I don't want the complexity of an optimized, efficient, distortion free, audio amp. Its just not necessary. I intend to use the tone(); function.
  • Reliable: The build utilizing this "speaker beeper" needs to be able to rely on this beeper working long term. I really don't want the speaker or electronics to burn out from inadequate design.

Key Hardware (not limited to):

  • 5v logic from a Arduino Nano
  • 12v lipo for driving the speaker (plenty of power)
  • RLZ44N N-Channel MOSFETs
  • 8ohm 10W speaker

Questions that I have:

  • Is R1 even really required? If so, given 12v operation what spec resistor should I look for? Would a 10ohm 10W resistor be appropriate?
  • Is diode D1 required for flyback damage prevention? If so, what specs should I look for in a diode for that purpose?
  • Is capacitor C1 really required? If so, what spec capacitor should I look for? Is an aluminum electrolytic Low ESR capacitor suitable? That's what I have on hand.
  • Is there anything else that should be changed to avoid damaging components?

If my true best option is to just go buy a cheap class A or D audio amp or something, then I can understand that. I'd of course rather use the components I have on hand if that can get the job done simply and reliably.

Its difficult sometimes to piece together the small details of a project like this when I'm teaching myself online. These forums and helpful people like you are a blessing. Thank you so much for your input, it is much appreciated!

A speaker with a voice coil and magnet drives the speaker cone out and then drives it backward only when it is driven by AC. You are running DC at some voltage and then 0 volts, so the cone will only be driven one direction and then relax to the center position at zero volts.
So, if you want to create a loud sound, you need a proper amplifier that will send AC to the speaker.
There are REALLY loud beepers that run on 5 volts and will drive you away if left on for any length of time. An alternative device is a motorcycle horn running at 12 volts. Use a MOSFET and a 12 volt supply to make the sound.

Hi, @malinhiles
Welcome to the forum.



Tom.. :smiley: :+1: :coffee: :australia:

All I see is a source follower (always lower than the gate voltage), charging up a capacitor to 2-3volt.
That will make a single soft click, and then, nothing.
If you want to use that 12volt, then the speaker should be connected somehow to the drain, with the source of the fet grounded.

Did you try the toneAC library (not tone), with the piezo connected between two digital pins.

I am not running direct DC to the speaker as you may be thinking. I have been able to achieve a quiet sound out of the speaker using tone() function and the 5v out pin directly to the speaker with a current limiting resistor. I intend to send the same signal to the speaker, translated to a higher voltage and wattage source like a lipo via a MOSFET.

Hello Wawa, you might've missed in my post that I am using the tone() function to generate a PWM for the speaker. Ive driven the speaker straight from the Arduino with a current limiting resistor using this tone() function and it was pretty quiet. I am looking to translate this signal to a higher voltage and wattage source. With that considered, do you think my schematic would be sufficient?

Thanks @TomGeorge :grinning:

No, I didn't miss that.
I was wondering if you knew about the toneAC() library for the piezo,
where the piezo connects between two pins.

Google something like "mosfet speaker circuit" (images), to see that the speaker must go between supply and drain of the mosfet.

@Wawa Ah ok, my apologies then. Ive heard of the toneAC() library but have not used it. Is there a substantial increase in volume over the traditional tone() function in my use case with a MOSFET?

Also, in my google searches I noticed that some schematics wire the speaker across supply and drain and some wire between source and ground ( similar to my drawn schematic. What is the functional difference? between these two approaches?

An unbiased source follower ( the one you posted) outputs about 3volt less peak/peak on the drain than the logic of the Arduino, so about 2volt peak/peak.
The drain of a fet with grounded source can output the full supply, so 12volt peak/peak.
Destructables biases the gate on 5volt, which you don't, and has no cap in the source/speaker line.

You also just described running DC to the speaker. Yes, it alternates between 0 and 5 volts, but that is 0 volts DC and 5 volts DC. In order to get AC to a speaker, you need to use some form of push-pull output or a transformer.

Understood, but does the capacitor C1 in my drawing not eliminate that DC bias for the speaker? Trying to figure this out :thinking:. Additionally, given the functional nature of circuits similar to the one I've drawn (, would my drawn circuit not work?

I am not referring to bias. The capacitor does eliminate that, but you still have DC going form zero to some voltage and back.

Ahh ok. Would your recommendation be to instead use two mosfets to create more of a push pull output with the toneAC() function and vastly improve peak/peak output? If so, I think I'm starting to see the benefits of your implementation. Would the difference in perceived signal for the speaker look like this?

What would your schematic using tone(AC) to power a 8ohm speaker from a 12v source look like?

My schematic would look like any audio amplifier that has push-pull output.

This tiny class D module would work, but higher power one are available.

It needs to be powered separately from the Arduino.

I've seen these and could buy one, but i'd prefer to attempt using what I have on hand. After all I'm just generating a short beep.

Do you have any thoughts on my source follower amp I drew? Do you think it would work?

No, that circuit won't work because of the series capacitor in the source lead. Something like this will:


@jremington Ok understood. Thanks for that image. In light of wanting something a little more simple, hows something like this but arranged differently for use with a mosfet instead of the 2n2222 transistor?


If you use a logic level MOSFET instead of the 2n2222 that circuit will work fine. To get more volume, reduce R1 to 8-10 Ohms, remove R3 and C2, and increase C1 significantly (depends on the tone frequency).

1 Like