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):
simulate this circuit – Schematic created using CircuitLab