13
\$\begingroup\$

I want to use a standard piezo buzzer on one of the Arduino Uno's analog pins without the use of a resistor. Will connecting this be a problem for the Arduino board? Why?

\$\endgroup\$
  • \$\begingroup\$ I recommend you do away with the direct connection and use both a transistor and a inductor, to get a decent volume out of the piezo. It's a pretty simple circuit, see http://cladlab.com/electronics/components/piezos. It's the first image under "How To Drive A Piezo". This of course only applies if you are using a piezo without any driving circuitry inside. By the comments below, I assume you are not. \$\endgroup\$ – gbmhunter May 2 '13 at 8:48
  • 1
    \$\begingroup\$ I drive them directly. Here is the siren I use: ebay.com/itm/… and here is the beeper: ebay.com/itm/… - I have run them in parallel frm the same pin from a Nano and from Uno. No problem. \$\endgroup\$ – SDsolar Sep 23 '17 at 20:03
11
\$\begingroup\$

Specific to a piezoelectric buzzer: Apart from the current limiting concerns as already expressed in other answers, there is an additional risk to a direct connection:

A piezoelectric element or piezo bender (the thin flat circular portion that vibrates to generate sound) can generate large voltages when knocked or tapped: This capability is frequently used in knock sensors, and piezo pick-ups for percussion musical instruments.

The voltages involved can be as high as several tens of volts, for instance if the buzzer falls onto a hard surface. Without some form of protection, such as at the least a resistor in series, such voltages can overcome the ESD protection within the Arduino's microcontroller, and damage the device.

Therefore using a resistor is strongly recommended.

The reverse voltage is more of a concern than drive current, since unlike the magnetic (coil) buzzers some answers refer to, a piezoelectric buzzer consumes very little current for normal operation. Refer to the datasheet for your specific buzzer: operating currents from 5 to 30 mA are common, and won't be a risk to the Arduino.

\$\endgroup\$
14
\$\begingroup\$

Given this common buzzer, it has a coil resistance of about 42 ohms running at 5V, it would try to draw 119mA if connected directly, far more than the 40mA (per pin) the Arduino can supply. Drawing this current could damage the Arduino. Adding an inline 100ohm resistor could drop the current draw to about 35ohms, within safe limits.

Also, as a magnetic component, you should place a diode across it to prevent back EMF from damaging the Arduino. Sound vibrations can cause the buzzer to generate a voltage and the diode can prevent that from damaging the Arduino.

\$\endgroup\$
  • 2
    \$\begingroup\$ I believe you mean 35mA, not ohms. \$\endgroup\$ – jwal Mar 5 '15 at 0:19
4
\$\begingroup\$

The I/O pins can provide up to 40mA of current before damage occurs. (Although many recommend keeping that in the 20-30mA to be safe.)

If the buzzer does not draw more than that, you are fine.

If you don't know the buzzer's current draw, a small resistor can help to limit the current.

\$\endgroup\$
3
\$\begingroup\$

The Arduino pins can take up to 40 mA of current. Measure how much current the buzzer takes when it is given 3-5V. If it is below 40 mA, you're fine.

It really depends on the buzzer. Piezo buzzers usually are fine, you have to be careful with normal buzzers.

Generally, adding a 200-300 ohm resistor protects the pins from almost all damage. I'd suggest using one anyway, especially if the buzzer is drawing current in the 30-40mA range.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.