# How to power a 6-14v piezo from an Arduino?

I have a Arduino Nano and I'm trying to run this Piezo Siren off the circuit. The Arduino is currently powered by a USB plug. The siren expects 6-14v and the digital output pins on the nano are giving me about 4.6v. If I run the siren directly from VCC to ground (around 4.70v) then it works, but if I go from a digital output to ground then I get no sound (I do get sound from a smaller speaker on the same pins). If I use the exact same setup with my Arduino Duemilanove then it works as well.

What is the easiest way to get this siren to work based on a trigger from the Arduino? (A bonus would be if I can get the required parts in store from RadioShack so I don't have to wait on shipping anything...)

• Don't try to drive the siren directly from an Arduino pin. Use an NPN transistor, with its base connected to the Arduino through about 1k$\Omega$ and its emitter at ground. Connect the siren between the transistor's collector and the power supply. Just about any common NPN will do, such as a 2N2222 or 2N3904. – Joe Hass Jul 27 '13 at 17:40
• @JoeHass, that did the trick. Thanks for the info. – NotDan Jul 29 '13 at 23:44
• I drive my Piezo sirens directly from Arduino D output pins - I use this model: ebay.com/itm/… – SDsolar Sep 23 '17 at 20:01

The siren is rated for 150 mA at 12 Volts - which gives us an idea of what current it would need to operate, even if it did operate at 4.7 Volts.

The ATmega328 microcontroller used in the Arduino Nano and Duemilanove (or ATmega168 on older ones) has an absolute maximum rating of 40 mA per GPIO pin. While it may deliver higher current with a low enough load impedance, that would severely stress the microcontroller, driving it beyond any guarantee of sustained use or survival. I prefer to not load any GPIO pin beyond about 25 mA, but your risk appetite may differ.

By wiring the siren directly to the Arduino output pins, you are provoking the imminent destruction of its microcontroller, i.e. magic blue smoke, Arduino kaput. That it may have "worked" on some Arduino board is irrelevant to this point.

Here are two options for getting that siren to work with an Arduino. The first option uses the 5 Volt output from the Arduino, so whether it works is all up to chance. The second schematic uses an external voltage source (6xAA alkaline cells = 7.5 Volts) and will work consistently even after the batteries deplete a fair amount.

simulate this circuit – Schematic created using CircuitLab

An inexpensive 2n7000 MOSFET (if you need through-hole) or IRLML2502 (if SMD is acceptable) will serve fine as the switching component.

• That helps. I got it working with something very similar to the first schematic but I'm going to try to increase the voltage to get some more volume out of the speaker. – NotDan Jul 29 '13 at 23:43
• For an SMD option, there's also the 2N7002, which is not too dissimilar. – Sixtyfive Dec 1 '20 at 13:24

Your "Piezo Siren" is not designed to operate on less than 6 volts. The fact that you have found that it will operate at 4.7v but not at 4.6v demonstrates that you have discovered the operational threshold of your particular unit. Other units might or might not operate at the same voltage point. Things could change with temperature, and usually do.

I suspect that it works with your Duemilanove because there is slightly more voltage available due to its voltage regulator (by chance) being on the high side of the tolerances, or something like that.

You said "The Arduino is currently powered by a USB plug." Try using an external power source (6-20 V) instead and see if the situation improves.

The main thing here is: READ THE DATASHEET, DESIGN WITHIN THE SPECS.