Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

04/03/2011 #1


Como generar sonido con el pic 16F877? Sólo un "beeek"
Buenas noches.

He desarrollado un pequeño programa que consiste en una alarma. El pic está conectada a 4 puertas de la casa, cuando una de estas puertas se abre, dejo 10 segundos para que el usuario la apague, si no lo hace saltará la alarma (se encenderá un led), también tengo un interruptor que enciende o apaga el sistema y un botón para resetear la alarma (el led). Ahora mi duda está...como puedo ponerle un altavoz para que suene? Es decir, no quiero ninguna melodía ni nada, con el "beek" del pc me basta, pero no tengo ni idea de como hacerlo (estoy empezando en esto de los microcontroladores) y he colocado el altavoz al lado del led para que cuando la alarma (el led) se encienda, también suene, pero al ejecutar en "Proteus" no hace nada. Me podéis echar una mano?

Gracias.

P.D: Adjunto la imagen del diseño

04/03/2011 #2

Avatar de snakewather

Si estas trabajando en Pic Basic Pro:

INSTRUCCIÓN SOUND
FORMATO
SOUND NN_PIN, [TONO1,PERIODO1,TONO2,PERIODO2]
SOUND, genera tonos audibles o ruido blanco en un pin del PIC. Se pueden combinar más de una frecuencia de 1 a 27 que son los tonos y de 128 a 255 que corresponde al ruido blanco.

EJEMPLO:
SOUND PORTB.0,[50,10,100,20] ; Se ha combinado dos frecuencias de 3937 Hz cona una duración de 10 ms y 7874 Hz con una duración de 20 ms.

si estas programando en CCS:

Las notas se generarán utilizando una librería que trae el CCS. La librería de llama “TONES.C” e incluye esta función:

generate_tone(frequency, duration)

Esta función nos permitirá crear las notas musicales. Para usarla debemos tener en cuenta los siguientes parámetros:

“frecuency” es una variable que tomará el valor de la nota que queramos generar.
“duration” es el tiempo que durará la nota y está dada en milisegundos.
05/03/2011 #3


Gracias por la respuesta, aunque me han quedado dudas. En el ejemplo que has puesto:

SOUND PORTB.0,[50,10,100,20] ; Se ha combinado dos frecuencias de 3937 Hz cona una duración de 10 ms y 7874 Hz con una duración de 20 ms.

La salida será un sonido de 10ms a 3937Hz a la vez con una de 20ms a 7874Hz? o primero una y luego la otra? De donde sale que ese 10 y ese 20 son milisegundos, porque son mili? de donde sale el valor de las frecuencias?

y por último, si lo que quiero es que mientras PORTA,5=1 salga un sonido "beeek" hasta que PORTA,5=0, como lo hago?

Gracias
05/03/2011 #4

Avatar de Basalto

Otra solucion mas facil es que le pongas un zumbador, que suene con 5V de continua.
05/03/2011 #5


Basalto dijo: Ver Mensaje
Otra solucion mas facil es que le pongas un zumbador, que suene con 5V de continua.
Pero eso puedo hacerlo con proteus?
05/03/2011 #6

Avatar de Basalto

Pones un Buzzer y en editar le pones que funcione a 5 v. Mira esto http://es.wikipedia.org/wiki/Zumbador
05/03/2011 #7


Basalto dijo: Ver Mensaje
Pones un Buzzer y en editar le pones que funcione a 5 v. Mira esto http://es.wikipedia.org/wiki/Zumbador
Voy a ver si proteus tiene este componente jejejej

P.D: Vale, si que lo tiene, esta tarde lo provaré a ver que tal va. Aunque...si la velocidad de reloj de mi pic es de 4Mhz, se escuchará algo? (como nosotros escuchamos hasta unos 20Khz...)
05/03/2011 #8

Avatar de Basalto

Pero es que el zumbador funciona con continua. Pones un pin a 1 y se suena seguido, el zumbador tiene dentro unas placas que vibran y provocan la frecuencia que escuchas. Cuando quieres que pare pones el pin a 0 y se acabo. Lo que tienes que mirar es cuanto consume que no pueden superar los 20 mA, por que si no tienes que poner un transistor. Por ejemplo, este te sirve y lo puedes colocar directamente al un pin del PIC http://es.farnell.com/kingstate/kpeg...ezo/dp/1193672
05/03/2011 #9


Basalto dijo: Ver Mensaje
Pones un Buzzer y en editar le pones que funcione a 5 v. Mira esto http://es.wikipedia.org/wiki/Zumbador
He puesto el Buzzer exáctamente donde tenía el altavoz, lo he modificado para que funcione a 5v y está a una frecuencia de 500Hz y cuando se enciende el led (se pone a 1) el Buzzer no hace nada. Que puede pasar? O.o
05/03/2011 #10

Avatar de Basalto

Es que el led esta en serie con el Buzzer, entonces en el led cae 1.4 voltios y gran parte en la resistencia, entonces casi no le llega tensión al Buzzer. Coloca el led en otra salida.
05/03/2011 #11


Basalto dijo: Ver Mensaje
Es que el led esta en serie con el Buzzer, entonces en el led cae 1.4 voltios y gran parte en la resistencia, entonces casi no le llega tensión al Buzzer. Coloca el led en otra salida.
Cambiaré el puerto del Buzzer, tengo que ponerle algún tipo de resistencia o conectadola a otro puerto y que este genere 5v sobra?
05/03/2011 #12

Avatar de Basalto

No hace falta que conectas nada. Pero para imprementarlo yo utilizaria un transistor y piensa que cuanto mas tensión mas alto te va a sonar. Lo cual puedes darle 24 v, si vas a meter en trafo le pones un regulador a 24 v y otro de 5 v para el micro. Si te llega el volumen a 5 voltios esta bien
05/03/2011 #13


Basalto dijo: Ver Mensaje
No hace falta que conectas nada. Pero para imprementarlo yo utilizaria un transistor y piensa que cuanto mas tensión mas alto te va a sonar. Lo cual puedes darle 24 v, si vas a meter en trafo le pones un regulador a 24 v y otro de 5 v para el micro. Si te llega el volumen a 5 voltios esta bien
Símplemente he puesto el Buzzer en el PORTA,1 que tenía libre y configurando todo para cuando se encienda el led de la alarma, también salga un 1 por el PORTA,1 nada más, necesito algo simple =)

EDITO: Lo que he hecho no funciona...uff, a ver que le pasa...

EDITO2: La resistencia del componente era muy baja, la he puesto a 10k y ya funciona. Gracias por las molestias =)
06/03/2011 #14

Avatar de snakewather

marhuen dijo: Ver Mensaje
Gracias por la respuesta, aunque me han quedado dudas. En el ejemplo que has puesto:

SOUND PORTB.0,[50,10,100,20] ; Se ha combinado dos frecuencias de 3937 Hz cona una duración de 10 ms y 7874 Hz con una duración de 20 ms.

La salida será un sonido de 10ms a 3937Hz a la vez con una de 20ms a 7874Hz? o primero una y luego la otra? De donde sale que ese 10 y ese 20 son milisegundos, porque son mili? de donde sale el valor de las frecuencias?

y por último, si lo que quiero es que mientras PORTA,5=1 salga un sonido "beeek" hasta que PORTA,5=0, como lo hago?

Gracias

Hola por lo que veo si estas trabajando con PBP en el ejemplo:

EJEMPLO:
SOUND PORTB.0,[50,10,100,20] : Son dos sonidos primero el tono 15 que dura 10 milisegundos y despues el tono 100 que dura 20 ms en la practica he notado que el segunda sonido se mazcla poquito el segundo tono cuando esta por terminar el primero ya empezo a sonar el segundo.

de donde sale el valor de las frecuencias?

R= salen por pin del puerto que eligas para SOUND en este caso SOUND PORTB.0

mientras PORTA,5=1 salga un sonido "beeek" hasta que PORTA,5=0, como lo hago?

R= WHILE (PORTA.5=1)
SOUND PORTB.0,[50,10]
WEND
Instrucciones en caso de que PORTA.5=0


Ademas te dejo una imagen del isis donde debes de seleccionar los buzers, bocinas, motores, lamparas, leds que digan en su descripcion ACTIVE ya que son ANIMADOS, esto quiere decir que tienen movimiento visible(caso de motor), se ve que prenden y apagan (caso de leds) y producen sonido al simular por tus bocinas de la PC (en caso de bocinas y buzers)


Consulta este Curso de PBP:
http://www.forosdeelectronica.com/f2...sic-pro-20658/

PD: Algunas cosas ya estan en el foro.

Imágenes Adjuntas
Tipo de Archivo: jpg Disp Animados ISIS.jpg (60,5 KB (Kilobytes), 97 visitas)
09/03/2011 #15


Mis queridos amigos...¡¡¡

yo utlizo en pbp la siguiente sentencia:

sound portb.0 [120,50]

pero al momento de programar el pic me genera salidas de pulsos de 5 vol, mas no los tonos, que puede ser la razon de eso ?
10/03/2011 #16

Avatar de Basalto

Es que los pulsos a una determinada frecuencia, al conectarlos a un altavoz son los tonos
10/03/2011 #17


es mas con una simple rutina como la de prender y apagar un led puedes producir un sonido

inicio:
HIGH PORTc.7
pause 80
low PORTc.7
pause 80



goto inicio
end

aunque con "sound portb.0" hay un poco mas de control en que sonido quieres
16/03/2012 #18

Avatar de bondadoso

snakewather y con ccs como generaria un ruido blanco?? osea una señal que contenga todas las frecuencias,
29/01/2013 #19


snakewather dijo: Ver Mensaje
Si estas trabajando en Pic Basic Pro:

INSTRUCCIÓN SOUND
FORMATO
SOUND NN_PIN, [TONO1,PERIODO1,TONO2,PERIODO2]
SOUND, genera tonos audibles o ruido blanco en un pin del PIC. Se pueden combinar más de una frecuencia de 1 a 27 que son los tonos y de 128 a 255 que corresponde al ruido blanco.

EJEMPLO:
SOUND PORTB.0,[50,10,100,20] ; Se ha combinado dos frecuencias de 3937 Hz cona una duración de 10 ms y 7874 Hz con una duración de 20 ms.

si estas programando en CCS:

Las notas se generarán utilizando una librería que trae el CCS. La librería de llama “TONES.C” e incluye esta función:

generate_tone(frequency, duration)

Esta función nos permitirá crear las notas musicales. Para usarla debemos tener en cuenta los siguientes parámetros:

“frecuency” es una variable que tomará el valor de la nota que queramos generar.
“duration” es el tiempo que durará la nota y está dada en milisegundos.
Saludos a todos, quería preguntar como sabes el valor de la frecuencia cuando usas el comando sound?? Por ejemplo cuando dics: SOUND PORTB.0,[50,10,100,20] ; Se ha combinado dos frecuencias de 3937 Hz cona una duración de 10 ms y 7874 Hz con una duración de 20 ms. Como sabes que 50 o 100 equivalen a 3937hz y 7874Hz respectivamente??, espero su pronta respuesta, de ante mano gracias .
30/01/2013 #20

Avatar de Basalto

sydjoe dijo: Ver Mensaje
Saludos a todos, quería preguntar como sabes el valor de la frecuencia cuando usas el comando sound?? Por ejemplo cuando dics: SOUND PORTB.0,[50,10,100,20] ; Se ha combinado dos frecuencias de 3937 Hz cona una duración de 10 ms y 7874 Hz con una duración de 20 ms. Como sabes que 50 o 100 equivalen a 3937hz y 7874Hz respectivamente??, espero su pronta respuesta, de ante mano gracias .
http://www.todopic.com.ar/pbp_sp.html#sound

Note 1 es aprox. 78,74 Hz y Note 127 es aproz. 10000 Hz . Utiliza interpolación.
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.