bclose

Buzzers o zumbadores

Sonido básico con Arduino

Objetivos

 

 

    • Familiarizarnos con un buzzer piezoeléctrico.
    • Las funciones tone() y notone().
    • Primeros pasos con la música electrónica
 

Material requerido.

Imagen de Arduino UNO

Arduino Uno o similar.

Esta sesión acepta cualquier otro modelo de Arduino.

 

Protoboard conexionesUna Protoboard más Cables .
Zumbador piezoelectrico Un buzzer piezoeléctrico.

 

Piezoelectricidad

 

Según la Wikipedia, la piezoelectricidad es un fenómeno que ocurre en determinados cristales que, al ser sometidos a tensiones mecánicas, adquieren una polarización eléctrica y aparece una diferencia de potencial y cargas eléctricas en su superficie que generan una tensión eléctrica.

Este fenómeno también ocurre a la inversa: se deforman bajo la acción de fuerzas internas al ser sometidos a un campo eléctrico. El efecto piezoeléctrico es normalmente reversible: al dejar de someter los cristales a un voltaje exterior o campo eléctrico, recuperan su forma.

Es decir, que son materiales (el cuarzo es el más conocido) que si los sometemos a una tensión eléctrica variable (como una señal PWM, que ya nos son familiares) vibran.

 
  • Es un fenómeno bastante conocido y muchos encendedores domésticos de gas funcionan bajo este principio. Un resorte golpea un cuarzo y como resultado tenemos la chispa que enciende el gas o el calentador de agua con un característico click).
  • En otro orden de cosas, los circuitos electrónicos digitales, suelen disponer de un reloj interno que vibra a una velocidad patrón, basados en cristales de cuarzo piezoeléctrico. El cristal de Arduino late a 16Mhz por segundo y la flecha indica su posición. Detalle posicion clock
  • En una sesión próxima utilizaremos uno de estos cristales  para sincronizar un circuito discreto con el corazón de un Arduino, el ATmega 328.
 

Si conectamos un piezo con una señal digital, vibran a una frecuencia sigue bastante fielmente la variación eléctrica con que los excita, y si vibran a la frecuencia audible, oiremos el sonido que producen. A un componente que hace esto, le llamamos Buzzer o zumbador.

Naturalmente, la calidad del sonido que producen dista bastante de lo que podríamos denominar alta fidelidad. Pero es suficiente para generar tonos audibles (como la típica alarma de los despertadores digitales) e incluso tonos musicales reconocibles que podemos secuenciar,  hasta en piezas musicales (por más que uno quisiera estar en otro lugar cuando las oyes).

Como antes o después, disponer de una señal acústica en vuestros proyectos, acaba siendo útil, vamos a ver cómo podemos montar estos elementos, y que tipo de opciones tenemos disponibles.

En esta sesión, montaremos un circuito muy sencillo con un zumbador.

Esquema electrónico

 

 

Esquema buzzerxxConectando un zumbador a arduino

La conexión es tan simple como conectar negativo a GND y positivo al pin 9. De todas maneras hay que tener cuidado. Los piezos tienen polaridad y hay que asegurarse de conectarlos correctamente.

 
  • Si los conectáis al revés, simplemente no sonará, y tendréis que dar la vuelta.
  • Además para este primer montaje, necesitamos usar un pin PWM (como el 9) porque es la alternancia entre HIGH y LOW lo que produce el efecto piezoeléctrico (recordad que una señal PWM envía un tren de ondas cuadradas de amplitud variable), por lo que lo más cómodo es usar un pin PWM en lugar de programar un efecto equivalente en un pin normal.
 

 

El Programa

Vamos a empezar creando una función, Beep(), que haga ruido simplemente:

     void beep(unsigned char pausa)
        {
            analogWrite(9, 20);
            delay(pausa);                 // Espera
            analogWrite(9, 0);            // Apaga
            delay(pausa);                 // Espera
        }

Y ahora prueba

     void setup()
        {
            pinMode(9, OUTPUT);
            beep(50);
            beep(50);
            beep(50);
            delay(1000);
        }
     void loop()
       {    beep(200);
       }

Lo único que beep () hace es poner una señal PWM en el pin 9 de 20 sobre 255. Podéis varias el valor, pero el tono de audio no cambiará gran cosa porque está controlado por la señal de base. Esto es suficiente para generar una de las molestas señales acústicas de un despertador barato.

¿Qué pasa si quiero generar señales de tono variable para hacer una melodía? Bueno pues Arduino uno dispone de la función tone() que genera una señal de la frecuencia indicada, y notone() que la corta:

     void setup()
        {
            int pinOut = 8;
            int freq = 440;
            int duration = 1000;
            tone(pinOut, freq, duration);
        }

La función tone() genera un audio de la frecuencia y duración definidas.

Podemos definir una matriz con las frecuencias de las notas a utilizar  y lee las correspondencias con las notas musicales. Veamos cómo generar una escala con un zumbador:

     int speakerPin = 9;
  
     int numTones = 10;
     int tones[ ] = {261, 277, 294, 311, 330, 349, 370, 392, 415, 440,466, 494};
                       // mid C C# D D# E F F# G G# A

     void setup()
        { }

     void loop()
        {
             for (int i = 0; i < numTones; i++)
                 {
                     tone(speakerPin, tones[i]);
                     delay(500);
                 }
             noTone(speakerPin);
       }
 
  • Dada la afición reinante a la física recreativa, me aterra la idea de ponerme a perorar sobre la relación entre las notas musicales y la frecuencia correspondiente, así como los distintos métodos de calcularlas y no digamos ya pretender hablar de las escalas temperadas.
  • Así que vamos a mencionar simplemente que existe una relación directa entre la frecuencia de una nota y su posición, en digamos el teclado de un piano.
  • Para aquellos con formación musical e interés en como calcular la frecuencia de una nota dada podeís hacer una búsqueda en  Google, que enseguida encontrareis de todo.
 

Por último, y para cerrar esta sesión, os diré que internet está lleno de gente a quien le sobra tiempo y lo dedica a las extravagancias más inverosímiles. Basta con indicaros aquí la página de alguien que ha dedicado un número indecente de horas en transcribir  la música de la guerra de las galaxias a orquesta de cámara, compuesta por Arduino y zumbador.Descargar ejemplo:

 

Resumen de la sesión

 

 

    • Hemos usado nuestro zumbador piezoeléctrico.
    • Son muy sencillos de usar aunque su calidad es pobre.
    • Son un sistema barato y rápido de añadir sonido a tus proyectos.
    • Hemos planteado unos primeros pasos en generación electrónica de sonido.Si tenemos ocasión dedicaremos algún otra sesión a la generación de sónidos electrónico y MIDI.
 

 

 

(38) Comments

    • Rodrigo

    Cordial saludo,
    Existe una manera de programar al buzzer para que diga palabras, ejemplo, HOLA.

Give a Reply

WordPress Anti-Spam by WP-SpamShield