Reproducir sonidos con Arduino y un buzzer pasivo o altavoz


arduino-buzzer-altavoz

¿Qué es un buzzer o un altavoz?

Un buzzer pasivo o un altavoz son dispositivos que permiten convertir una señal eléctrica en una onda de sonido. Estos dispositivos no disponen de electrónica interna, por lo que tenemos que proporcionar una señal eléctrica para conseguir el sonido deseado.

En oposición, los buzzer activos disponen de un oscilador interno, por lo que únicamente tenemos que alimentar el dispositivo para que se produzca el sonido.

Pese a tener la complejidad de proporcionar y controlar nosotros la señal eléctrica, los buzzer pasivos y de los altavoces tienen la ventaja de que podemos variar el tono emitido modificando la señal que aplicamos al altavoz, lo que nos permite generar melodías.

Precio

Podemos encontrar modelos de pequeños buzzer pasivo para usar en nuestros montajes y proyectos por muy poco dinero, desde 0,45€ en vendedores internacionales de eBay y AliExpress.

arduino-buzzer-altavoz-componente

Frecuentemente, el buzzer pasivo se acompaña en una placa para facilitar su conexión, que incorpora un transistor y resitencias necesarias para hacer funcionar el buzzer pasivo o altavoz sin más que conectarlo.

Anuncio: Tus propias PCBs a media en PCBWAY

Respecto a los altavoces, podemos encontrar de todo tipo de tamaños y precios. En general son más caros que los buzzer, y hay que tener en cuenta que frecuentemente requieren un amplificador de audio, lo que supone un coste adicional.

¿Cómo funciona un buzzer y un altavoz?

Técnicamente tanto buzzers como altavoces son transductores electroacústicos, es decir, dispositivos que convierten señales eléctricas en sonido. La diferencia entre ambos es el fenómeno en el que basan su funcionamiento.

Los buzzer son transductores piezoeléctricos. Los materiales piezoeléctricos tiene la propiedad especial de variar su volumen al ser atravesados por corrientes eléctricas.

arduino-buzzer-funcionamiento

Un buzzer aprovecha este fenómeno para hacer vibrar una membrana al atravesar el material piezoeléctrico con una señal eléctrica.

arduino-buzzer-funcionamiento2

Los buzzer son dispositivos pequeños y compactos, con alta durabilidad, y bajo consumo eléctrico. Por contra, la calidad de sonido es reducida.

Por su parte, un altavoz basa su funcionamiento en el magnetismo. Se dispone de un imán permanente que, normalmente, es fijo a la carcasa. Por otro lado, una bobina móvil se acopla a una membrana flexible.

arduino-altavoz-funcionamiento

Al hacer circular una corriente por la bobina el campo magnético resultante genera una atracción con el imán, haciendo vibrar la membrana.

Los altavoces, por presentan una mejor calidad de sonido pero, en general, necesitan mayor potencia y es necesario disponer de dispositivos de amplificación para su uso.

Esquema de montaje

Si usamos una de las placas comerciales para pequeños proyectos y hobbies, que incorporan la electrónica y terminales necesarios, la conexión con Arduino es realmente sencilla. Simplemente alimentamos el módulo conectando Vcc y GND a Arduino, y la entrada de señal a cualquier salida digital de Arduino.

El esquema de conexión visto desde el componente sería el siguiente

arduino-buzer-montaje

Mientras que el esquema de conexión visto desde Arduino quedaría así

arduino-buzzer-altavoz-conexion

Si queremos usar un altavoz, que consumen mayor corriente de la que puede proporcionar Arduino, tendremos que proporcionar una etapa de amplificación, como vimos en la entrada de transistores BJT.

arduino-altavoz-montaje

Aunque en general, en estos casos lo normal es que empleemos un amplificador específico diseñado para audio, en lugar de hacerlo nosotros mismos. Conseguiremos mejores niveles de calidad e incluso un menor coste.

Ejemplos de código

Arduino dispone de dos funciones que nos permiten generar fácilmente señales eléctricas para convertir en sonido, usando cualquiera de las salidas digitales disponibles.

Estas funciones son tone() y noTone() y, como su nombre indican, permiten generar o detener la señal del tono en un pin.

La función tone() también permite especificar la duración del sonido generado.

Pese a su sencillez, al usar las funciones para la generación de tone tenemos que asumir importantes limitaciones.

  • La función Tone emplea el Timer 2, por lo que mientras este funcionando no podremos usar las salidas PWM en los pines 3 y 11 en Arduino Nano y Uno (pines 9 y 10 en Arduino Mega).
  • No podemos usar la función tone() en dos pines de forma simultánea. Deberemos apagar el tono con la funcion noTone() antes de poder usarlo en otro pin.
  • Los rangos de la función tone son de 31 Hz a 65535 Hz.

    El siguiente código muestra el uso de estas funciones estas funciones en un ejemplo simple, en el que empleamos el buzzer o altavoz conectado en el Pin9 para generar una función de 440Hz durante un segundo, pararlo durante 500ms, y finalmente un tono de 523Hz durante 300ms, para repetir el programa tras una pausa de 500ms.

    El siguiente, también muy básico, emplea un array con frecuencias que recorremos secuencialmente para realizar un barrido que aproxima las distintas notas musicales.

    Si te ha gustado esta entrada y quieres leer más sobre Arduino puedes consultar la sección Tutoriales de Arduino

    Anuncio:

    Previous Controla tus proyectos con Arduino y Joystick analógico
    Next Interruptor táctil con Arduino y sensor capacitivo touchless

    1
    ¡Deja un comentario!...

    1000
    1 Comment threads
    0 Thread replies
    0 Followers
     
    Most reacted comment
    Hottest comment thread
    1 Comment authors
    newest oldest
    leonardo

    Excelente tutorial estimado. Aunque me surge una duda: será posible conectar los módulos de sonido de los peluches y habilitar la energía enviando los 5 volts desde el propio arduino? Tengo uno con la clásica risita de bruja, se me ocurrió, hacer con este, un arduino UNO, un sensor de ultrasonidos y un servo, una especie de micro casa del terror, en la que al pasar frente al sensor ultrasonico, este ennvíe una señal al arduino quien moverá el servo con un mini esqueleto y reproducirá el sonido directamente desde la plaquita, sin necesidad de presionar un boton o pilas… Read more »