Electronic – arduino – 12V sound transducer not loud enough

arduinopiezo-buzzertransducer

I implemented the circuit below using these components:

  • LOUDITY LD-BZEN-1212 – its description is "Sound transducer: electromagnetic; without built-in generator" and I am guessing it works like an active buzzer; datasheet here
  • PN2222A transistor
  • 1K resistor to drive the transistor
  • 1K resistor in parallel with the transducer
  • 1N4148 diode in parallel with the transducer
  • 100uF electrolytic capacitor in parallel with the transducer
  • 100nF and 100uF bypass capacitors on the input
  • 12V / 1A supply for the transducer (also powers the Arduino board through a L7805ACT regulator and another component through a LF533CV regulator; they both share the bypass input caps with the transducer)

I drive it with an Arduino Pro Mini through PWM port 6 using the tone() function, like this:

tone(9, 2489);
delay(1000);
noTone(9);

The problem is that the buzzer makes a very low noise. I want it to be as loud as the common buzzers on PC motherboards that signal BIOS POST / errors (I know those are passive as they have only one tone).

The transducer datasheet says "Rated Current (MAX): 40mA".
The PN2222A datasheet says "collector current (DC): 600mA".
The 1N4148 diode datasheet says "I(F) continuous forward current: 200mA".
The power source is rated 1A.

So where's the problem?

Here's the schematic (only the transducer part):

schematic

simulate this circuit – Schematic created using CircuitLab

Best Answer

You need to run it at 2.40 kHz get maximum sound pressure level (SPL). The transducer is mounted in a ported acoustic cavity which has a definite resonant frequency. Here is a typical response curve for a 2kHz transducer:

http://www.qinlon.com/products.asp?Action=Detail&ID=149

You'll still get a fair bit of noise at other frequencies (you can even use these things as horrible little speakers), but not maximum.

But most importantly, and as @RichardCrowley says ,that 100uF is totally wrong, get rid of it. And take care you don't accidentally leave it with the output on at 100% duty cycle, it will probably fry the coil.