arduino-buzzer-activo

Alarma con Arduino y buzzer activo (zumbador)

¿Qué es un buzzer activo?

Los buzzer activos, en ocasiones denominados zumbadores, son dispositivos que generan un sonido de una frecuencia determinada y fija cuando son conectados a tensión.

Un buzzer activo incorpora un oscilador simple por lo que únicamente es necesario suministrar corriente al dispositivo para que emita sonido. En oposición, los buzzer pasivos necesitan recibir una onda de la frecuencia.

Al incorporar de forma interna la electrónica necesaria para hacer vibrar el altavoz un buzzer activo resulta muy sencillo de conectar y controlar. Además, no suponen carga para el procesador ya que no este no tiene que generar la onda eléctrica que se convertirá en sonido.

En contra posición, tienen la desventaja de que no podremos variar el tono del sonido emitido, por lo que no podremos realizar melodías, cosa que si podremos hacer con los buzzer pasivos.

Físicamente pueden ser muy parecidos, o incluso idénticos, a los buzzer pasivos, por lo que puede llegar a ser difícil determinar a simple vista si un buzzer es activo o pasivo.

Existen buzzer activos en un gran abanico de tamaños y potencias, desde tonos casi imperceptibles hasta alarmas realmente estridentes. El consumo eléctrico, lógicamente, también varia con la potencia del buzzer.

Podemos emplear los buzzer activos de menor potencia, por ejemplo, para dar avisos al usuario o proporcionar un feedback ante alguna acción, como pulsar un botón, para que el usuario compruebe que su acción ha sido recibida.

Por su parte, los buzzer de mayor potencia son adecuados para generar alarmas de forma sencilla, por ejemplo, combinados con un sensor de movimiento, un sensor de agua, o un sensor de llama, entre otros.

Precio

Existen una gran variedad de buzzer activos que podemos usar en nuestros proyectos de Arduino. Por ejemplo, podemos encontrar unas placas con un buzzer activo y la electrónica necesaria para hacerlo funcionar por 0.45€, en vendedores internacionales de eBay y AliExpress.

arduino-buzzer-activo-modulo

Respecto a los buzzer activos de mayor potencia, podemos encontrar de 90 a 110 dB por 2 a 3€.

arduino-buzzer-activo-componente

En este caso, necesitaremos una etapa de potencia para poder activar suministrar la potencia requerida por el buzzer.

Esquema de montaje

Si usamos una placa con la electrónica integrada el montaje es realmente sencillo, ya que el propio módulo incorpora los componentes necesarios para proporcionar la corriente necesaria al buzzer activo.

Por tanto, simplemente alimentamos el módulo conectando Vcc y GND a 5V y GND de Arduino, y finalmente

arduino-buzer-montaje

Si necesitamos conectar un buzzer activo de mayor potencia, deberemos emplear un transistor BJT, o MOSFET para amplificar la corriente, o emplear una salida por relé.

Por ejemplo, si usamos un módulo con un MOSFET IRF520N el montaje sería el siguiente.

arduino-buzzer-activo-mosfet-montaje

En ambos casos la conexión vista desde Arduino es la misma, ya que únicamente necesitamos usar una salida digital para encender el módulo.

arduino-buzzer-activo-conexion

Ejemplo de código de montaje

El código necesario es sencillo, ya que para a controlar el buzzer únicamente necesitamos emplear una salida digital, tal y como vimos en la entrada salidas digitales.

Por ejemplo, el siguiente código simplemente encendería y apagaría el diodo láser 5 segundos, dejándolo descansar 20 segundos.

const int pin = 9;

void setup() {
  pinMode(pin, OUTPUT);  //definir pin como salida
}
 
void loop(){
  digitalWrite(pin, HIGH);   // poner el Pin en HIGH
  delay(5000);               // esperar 5 segundos
  digitalWrite(pin, LOW);    // poner el Pin en LOW
  delay(20000);               // esperar 20 segundos
}

En el siguiente ejemplo, queremos que el buzzer se active como alarma ante un determinado evento. Supongamos que tenemos una cierta función GetSystemState() que realiza las mediciones de sensores y cálculos necesarios para determinar si la alarma tiene que ser encendida.

Simplemente realizamos la llamada a la función, y encendemos la alarma si es necesario, manteniéndola encendida un mínimo de 5 segundos.

const int pin = 9;

bool isAlarmOn = 0;     //almacena el estado de la alarma

void setup() {
  pinMode(pin, OUTPUT);  //definir pin como salida
}

bool GetSystemState()
{
    return true;  //cambiar en función del sensor usado
}
 
void loop(){
  isAlarmOn = GetSystemState();

  if(isAlarmOn)
  {
     digitalWrite(pin, HIGH);    // poner el Pin en HIGH
     delay(5000);               // esperar 5 segundos
  }
  else
  {
     digitalWrite(pin, LOW);    // poner el Pin en LOW
  }
  delay(1000);
}

Descarga el código

Todo el código de esta entrada está disponible para su descarga en Github. github-full