|   FOROS      |     Tutoriales    |     KIO4 |      
   Inicio B4A (Basic4Android) App inventor 2 Arduino
   Elastix - VoIP Cosas de Windows Webs interesantes  Telecomunicaciones

 


Nuevo concurso para España, Argentina, Brasil, Chile, Colombia, Ecuador, México, Perú y Portugal.

Arduino en español
Circuitos con Arduino - Juan Antonio Villalpando

-- Tutorial de iniciación a Arduino --

Volver al índice del tutorial                    Return to index tutorial

____________________________

Arduino. Buzzer

 

21.- Buzzer (zumbador).

Vamos a tomar contacto con el funcionamiento de un Buzzer.

En mi caso utilizo el Arduino Compatible Active Speaker Buzzer Module - Black , viene a costar m
enos de 1 €.

Las pruebas las he realizado con este módulo.

Tiene tres terminales (pines), pero solo utiliza dos de ellos el pin - (GND) y el pin S (Señal). (En otro modelo: IN)
El pin intermedio está destinado a la alimentación Vcc de 5 V, pero en este módulo de la izquierda no está conectado, así que solo utilizamos el pin - y el pin S.

- Si conectamos
el Pin - a GND del Arduino y
el Pin S a 5 V del Arduino, oiremos un sonido constante.

El Pin central no lo conectamos.




Podríamos conectar el Pin S a un pin de salida, por ejemplo el Pin 3, y según pongamos esa salida en HIGH o en LOW, se oirá el sonido o no.

En internet podemos encontrar muchos programas de ejemplos.

__________________________
1.- Conectamos el Pin S del Buzzer al Pin Digital 2 del Arduino. Sonará un pitido contínuo.
Cambia los valores de delayMicroseconds(50);
http://www.geeetech.com/wiki/index.php/Arduino_buzzer_Module

 

Programa para el Arduino.
int buzzPin = 2; // Connect Buzzer on Digital Pin2
void setup() 
{ 
pinMode(buzzPin, OUTPUT); 
} 
void loop() 
{ 
digitalWrite(buzzPin, HIGH); 
delayMicroseconds(50); 
digitalWrite(buzzPin, LOW); 
delayMicroseconds(50); 
}

Observa que en Arduino existe el delayMicroseconds y el delay.

delayMicroseconds(50); // microsegundos.

delay(50); // milisegundos.

__________________________
2
.- En este caso conectamos el Pin S del Buzzer al Pin 9 del Arduino. Se oirá un sonido intermitente.
http://www.faludi.com/2007/04/23/buzzer-arduino-example-code/

Programa para el Arduino.
// Buzzer example function for the CEM-1203 buzzer (Sparkfun's part #COM-07950).
// by Rob Faludi
// http://www.faludi.com

void setup() {
pinMode(9, OUTPUT); // set a pin for buzzer output
}

void loop() {
buzz(9, 2500, 500); // buzz the buzzer on pin 4 at 2500Hz for 500 milliseconds
delay(100); // wait a bit between buzzes
}


void buzz(int targetPin, long frequency, long length) {
long delayValue = 1000000/frequency/2; // calculate the delay value between transitions
//// 1 second's worth of microseconds, divided by the frequency, then split in half since
//// there are two phases to each cycle
long numCycles = frequency * length/ 1000; // calculate the number of cycles for proper timing
//// multiply frequency, which is really cycles per second, by the number of seconds to 
//// get the total number of cycles to produce
for (long i=0; i < numCycles; i++){ // for the calculated length of time...
digitalWrite(targetPin,HIGH); // write the buzzer pin high to push out the diaphram
delayMicroseconds(delayValue); // wait for the calculated delay value
digitalWrite(targetPin,LOW); // write the buzzer pin low to pull back the diaphram
delayMicroseconds(delayValue); // wait againf or the calculated delay value
}
}

__________________________
3.- Conectamos el Pin S del Buzzer al Pin 4 del Arduino. Sonará la música del can can, pero bastante mal.

Programa para el Arduino.
// Buzzer example function for the CEM-1203 buzzer (Sparkfun's part #COM-07950).
// by Rob Faludi
// http://www.faludi.com

// Additions by Christopher Stevens
// http://www.christopherstevens.cc

//referenced from http://www.phy.mtu.edu/~suits/notefreqs.html
//starting with F noteFreqArr[1]
int noteFreqArr[] = {
49.4, 52.3, 55.4, 58.7, 62.2, 65.9, 69.9, 74, 78.4, 83.1, 88, 93.2,
98.8, 105, 111, 117, 124, 132, 140, 148, 157, 166, 176, 186,
198, 209, 222, 235, 249, 264, 279, 296, 314, 332, 352, 373,
395, 419, 444, 470, 498, 527, 559, 592, 627, 665, 704, 746,
790, 837, 887, 940, 996, 1050, 1110, 1180, 1250, 1320, 1400, 1490,
1580, 1670, 1770, 1870, 1990, 2100};

void setup() {
pinMode(4, OUTPUT); // set a pin for buzzer output
}

void playNote(int noteInt, long length, long breath = 20) {
length = length - breath;
buzz(4, noteFreqArr[noteInt], length);
if(breath > 0) { //take a short pause or 'breath' if specified
delay(breath);
}
}

void loop() {
//main course
playNote(24,500);

playNote(17,1000);
playNote(19,250);
playNote(22,250);
playNote(21,250);
playNote(19,250);
playNote(24,500);
playNote(24,500);
playNote(24,250);
playNote(26,250);
playNote(21,250);
playNote(22,250);
playNote(19,500);
playNote(19,500);
playNote(19,250);
playNote(22,250);
playNote(21,250);
playNote(19,250);
playNote(17,250);
playNote(29,250);
playNote(28,250);
playNote(26,250);
playNote(24,250);
playNote(22,250);
playNote(21,250);
playNote(19,250);

playNote(17,1000);
playNote(19,250);
playNote(22,250);
playNote(21,250);
playNote(19,250);
playNote(24,500);
playNote(24,500);
playNote(24,250);
playNote(26,250);
playNote(21,250);
playNote(22,250);
playNote(19,500);
playNote(19,500);
playNote(19,250);
playNote(22,250);
playNote(21,250);
playNote(19,250);
playNote(17,250);
playNote(24,250);
playNote(19,250);
playNote(21,250);
playNote(17,250);
delay(250);
}

void buzz(int targetPin, long frequency, long length) {
long delayValue = 1000000/frequency/2; // calculate the delay value between transitions
//// 1 second's worth of microseconds, divided by the frequency, then split in half since
//// there are two phases to each cycle
long numCycles = frequency * length/ 1000; // calculate the number of cycles for proper timing
//// multiply frequency, which is really cycles per second, by the number of seconds to
//// get the total number of cycles to produce
for (long i=0; i < numCycles; i++){ // for the calculated length of time...
digitalWrite(targetPin,HIGH); // write the buzzer pin high to push out the diaphram
delayMicroseconds(delayValue); // wait for the calculated delay value
digitalWrite(targetPin,LOW); // write the buzzer pin low to pull back the diaphram
delayMicroseconds(delayValue); // wait againf or the calculated delay value
}
}

__________________________
4.- Conectamos el Pin S del Buzzer al Pin 9 del Arduino. Sonará un pitido intermitente.

Programa para el Arduino.
/*
Piezo

This example shows how to run a Piezo Buzzer on pin 9
using the analogWrite() function.

It beeps 3 times fast at startup, waits a second then beeps continuously
at a slower pace

*/

void setup() { 
// declare pin 9 to be an output:
pinMode(9, OUTPUT);
beep(50);
beep(50);
beep(50);
delay(1000);
} 

void loop() { 
beep(200); 
}

void beep(unsigned char delayms){
analogWrite(9, 20); // Almost any value can be used except 0 and 255
// experiment to get the best tone
delay(delayms); // wait for a delayms ms
analogWrite(9, 0); // 0 turns it off
delay(delayms); // wait for a delayms ms 
} 

__________________________
5
.- Mediante PWM. Conectamos el Pin S del Buzzer al Pin 9 del Arduino.
Funciona mediante PWM. Pitído contínuo. Cambia el valor entre 0 y 255.
http://www.arduino.cc/es/Tutorial/PWM

Programa para el Arduino.
int Pin = 9;

void setup() { 
// nothing happens in setup 
} 

void loop() { 
analogWrite(Pin, 250); // Cambiamos este valor para oir distintos sonidos. 
}

__________________________________

 

Otros modelos de módulos con tres pines.

 

Otros modelos tienen tres pines activos.
La Señal (S) entra por el pin 1.
Según el pin 2 (Vcc) esté en alto o en bajo, el buzzer dará sonido o no.

__________________________________

Efecto piezo eléctrico.

¿Qué es el efecto piezoeléctrico?

- Algunos elementos, como el cuarzo tienen efecto piezoeléctrico. Esto se manifiesta de dos maneras.

1.- Cuando aplicamos presión variable en las caras de este elemento, se genera una fuerza electro motriz (f.e.m.), es decir una diferencia de potencial (d.d.p.), o sea se generan voltios en sus terminales como se observa en la figura.

Para que exista tensión, la presión debe ser variable. En la figura de abajo aplicamos una presión variable en las caras del elemento y se observa que se genera una tensión alterna en sus extremos.

Hay mecheros (encendedores) que utilizan este principio, por ejemplo los encendedores de gas para cocina, termos y cigarrillos, se aplica una presión y salta una chispa debido a la d.d.p. generada, esa chispa enciende el gas.

Otra aplicación muy importante del efecto piezo eléctrico se utiliza en los micrófonos-piezoeléctricos. Hablamos delante del micrófono, nuestra voz provoca presión en el aire, este aire debido a esa presión llega a la membrana o diafragma del micrófono (Diaphragm), de tal manera que la presión llega al cristal piezo eléctrico, esa pequeñísima presión variable comunicada el cristal piezo eléctrico, produce en sus extremos una pequeña d.d.p. (Voltios) variable según la presión.

Esa d.d.p. se amplifica en circuitos posteriores.

                      

 

2.- Otra manifestación del efecto piezo eléctrico consiste en lo contrario, es decir aplicamos una tensión alterna en los extremos de un elemento piezo eléctrico y éste vibra.

Este es el efecto que utilizan estos buzzer piezoeléctrico, aplicamos una tensión variable a sus extremos y el elemento vibra según la frecuencia aplicada, esta vibración se acopla a una membrana que emite un sonido debido a su movimiento vibrante.

________________________________

Si quieres que este tutorial se mantenga y lo actualice con más programas, escríbeme un correo a Juan Antonio: juana1991@yahoo.com

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información