TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: psicopic en 02 de Octubre de 2004, 18:33:00

Título: como medir un tono con pic
Publicado por: psicopic en 02 de Octubre de 2004, 18:33:00
epa Gente....
Estoy comensando a ver la forma de medir la frecuencia de un tono de audio de 400 khz con que pic se podria lograr esto y que ideas me pueden dar a ver si me funciona lo que quiero ya que requiero detectar un tono especifico con un 10% +-
Gracias por las Ayudas
Título: RE: como medir un tono con pic
Publicado por: manex_1987 en 03 de Octubre de 2004, 14:01:00
Hola

Yo usaria un conversor frecuencia-voltaje (por internet hay varios esquemas) conectado al ADC de un pic, por ejemplo el 16F88, el 16F877, etc...



salu2
Título: RE: como medir un tono con pic
Publicado por: psicopic en 03 de Octubre de 2004, 15:12:00
gracias manex es buena la opcion vere que consigo en la red
Título: RE: como medir un tono con pic
Publicado por: wqtrp en 03 de Octubre de 2004, 15:23:00
hola,
q te parece si pones esa señal a la entrada de uno de los timers,

tipo timer 1 del f452, creo q eso te daria una buena precicion si con otro timer de precicion (con cristal, el oscilador ) lo mides durante un tiempo


Suerte .....
Título: RE: como medir un tono con pic
Publicado por: pocher en 04 de Octubre de 2004, 10:28:00
Si no te importa que el programa esté en C, los de CCS tienen un programa de un frecuencímetro que tiene un amplio margen de medida de frecuencias (1Hz hasta MHz) y para la frecuencia que tú quieres medir te la saca clavada. Está hecho para un 877 (para un 87x también valdría) y usa el TMR1 como contador externo de pulsos, utiliza un cristal de 20MHz.

Un saludo
Título: RE: como medir un tono con pic
Publicado por: Carlete71 en 04 de Octubre de 2004, 12:00:00

Pocher conoces algo como eso pero con el 16F84?

Saludos,
Título: RE: como medir un tono con pic
Publicado por: pocher en 04 de Octubre de 2004, 12:17:00
Como este no. En la web de Pablin hay un frecuencímetro para un 16C54 (que seguramente ya habrás visto).
Título: RE: como medir un tono con pic
Publicado por: Carlete71 en 04 de Octubre de 2004, 12:38:00
Si ese lo he visto, pero con el 16F84, hab"ia un par en la página de XooTRAooX, pero esta ya no existe

Bueno, la lo conseguiré.

Gracias de todos modos,

Saludos,
Título: RE: como medir un tono con pic
Publicado por: manex_1987 en 04 de Octubre de 2004, 14:38:00
Lo que hace la ignorancia jeje. Mis soluciones siempre son mas complejas que las vuestras por eso... pero nunca dejo de aprender!

salu2!
Título: RE: como medir un tono con pic
Publicado por: psicopic en 04 de Octubre de 2004, 20:26:00
Bueno - Bueno que les parece que consegui el 2917 que es un conversor de frecuencia a tension a ver si de pronto funciona con eso y les cuento primero ver si consigo el fulano integrado de todas maneras si alguin consigue o sabe otra solucion bien recibida sera....

saludos....
Título: RE: como medir un tono con pic
Publicado por: odukec en 05 de Octubre de 2004, 17:16:00
Hola..

Yo hice algo pero en c.. para el 16f84 sirve.. es lo siguiente..  habilito la interrupcion del tmr0 y la externa.. coloco el preescaler en 64 y con un cristal de 4Mhz, eso hace que este se desborde aproximadamente cada 1ms creo variables para medir el tiempo.. milisegundos, segundos.. cuando hay interrupcion externa (RB0), cambio de flanco de alto a bajo o viceversa, pongo a ceros estas variables, y un "flag" a uno .. cuando de nuevo hay interrupcion externa, miro el "flag"para saber si pongo a cero de nuevo las variables, de lo contrario capturo el valor de las variables de tiempo.. y tengo el periodo de dicha señal y de nuevo pongo el "flag" a cero..

Como dije anteriormente esta en lenguaje c.. lo uso para lo mismo para detectar un tono, de 425Hz y asi saber cual es su periodo, logicamente a la entrada de RB0 tiene que haber una señal cuadrada.

Saludos
Título: RE: como medir un tono con pic
Publicado por: PWRINVITRO en 14 de Octubre de 2004, 15:58:00
esos conversores de frecuencia a voltaje son para principiantes ademas de que tienes q montar toda una circuiteria como el conversor y un adc... no resulta prductivo.... la mejor manera es configurar el timer0 como contador de pulsos externos y SIN prescaler osea le asignas es prescaler al watchdog ya q  contar pulsos con prescaler es demasiado impreciso y mucho mas cuando se trata de frecuencias altas.... lo mejor es contar los pulsos de 1 en 1 o de 10 en 10 o de 100 en 100 todo depende de la frecuencia para 400k seria bueno contar los pulsos de 100 en 100 inicializando el timer en .156 cada vez q cuente 100 pulsos interrumpes al micro con la interrupcion por timer e incrementas un registro, recargas el timer y sales de la interrupcion para lograr esto con precision tienes q activar la interrupcion y enseguida yamar a un retardo de 1 segundo exacto, como se te va a desbordar el registro q estas encrementando necesitaras incremetar otro registro cuando se desborde al anterior para poder contar los 400 khz, justo cuando el segundo del retardo termine tendras la informacion disponible en los registros q estuviste incrementado en la interrupcion, los multiplicas por 100 y voala!!! esto te dara exelentes resultados con un margen de error muy pekeño casi imperceptible a lo sumo 2 hz siempre y cuando hagas una rutina muy optimizada...... luego del proceso ejecutas tu rutina de binario a BCD o a ACCII y la envias a un display o lcd o a un PC o lo q kieras hacer con esa data!!!  SUERTE, claro mientras mas baja sea la frecuencia mas exacto sera el conteo y por supuesto hasta necesitaras menos registros y podras contar de 10 en 10 o de 1 en 1 y sera mas facil.... !!!! ah y con un cristal de 4 megas podras medir aproximadamente 1MHZ
Título: RE: como medir un tono con pic
Publicado por: psicopic en 14 de Octubre de 2004, 19:38:00
gracias pwrinvitro... suena bien tratare de hacer eso a ver si me sale pero ufff  esta un pelo complicada la cuestion pero tratare de hacerlo a verrrrr si me sale si no pana te aviso para que me digas como es la cosa saludos pues y gracias...

Desde maracaibo.... Venezuela

Up..LA VINO TINTO
Título: RE: como medir un tono con pic
Publicado por: PWRINVITRO en 14 de Octubre de 2004, 20:27:00
Bueno suena complicado pero en realidad es muy facil solo incrementar un registro cada vez q se desborda el timer como el conteo va a yegar hata 4000 por ser una frecuencia de 400k necesitas 12 bits para poder contar hasta 4000 por ende debes incrementar otro registro al desbordarce el q estas incrementando los puedes yamar DATO_L y DATO_H, cada vez q se desborda dato_l incrementas dato_h esto lo haces chequeando la bandera Z del status eso no tiene gran problema lo unico q es medio engorroso es la rutina de multiplicacion por 100 un dato de 12 bits y sin embargo es solo codigo el resulta entra en 24 bits facilmente o 3 registros la rutina de binario a bcd si la haces diviendo entre 10 es un paseo... y ademas es un gran ejercicio ya q te acostumbras a trabajar con cantidades enormes de bits concatenados!!!
Título: RE: como medir un tono con pic
Publicado por: todopic en 14 de Octubre de 2004, 21:58:00
Hola Amig@s,... creo que hay un pequeñito error....un tono de audio de 400khz... ni los murcielagos lo van a escuchar je je
creo que hay una k de mas... y sera 400 hz...

Un abrazo

Norberto
Título: RE: como medir un tono con pic
Publicado por: psicopic en 15 de Octubre de 2004, 06:30:00
ESO ES VERDAD DISCULPEN ES 400 Hz gracias Todopic
Título: RE: como medir un tono con pic
Publicado por: PWRINVITRO en 15 de Octubre de 2004, 10:35:00
Si la frecuencia es de 400 hz entonces la rutina es demasiado facil,  cuentas los pulsos de 10 en 10 osea inicializas en timer en .246 entonces cada vez q se desborde incrementas un solo registro en la interrupcion... al finalizar el retardo de 1 segundo multiplicas el resultado por 10 claro el resulta es de 9 bits pero luego haces la rutina binario a bcd y listo con unidad decena y centena... demasiado sencillo si no lo puedes hacer me avisas para pasartela!!... si no kieres multiplicar por 10 entonces inicilaliza el timer en .255 y cuentas de 1 en 1 el resultado va a ser en 9 bits y yamas a la rutina binario a bcd al finalizar el retardo y listo!!...
Título: RE: como medir un tono con pic
Publicado por: fenix_jn en 24 de Octubre de 2004, 00:56:00
bueno, he visto algunas soluciones q dan aki, hace unos años me toco hacer ese proyecto, contando la frecuencia de 1 en 1 y usando la interrupcion solo para aumentar en 1 otro registro (cuenta en 16 bit), o sea mi frecuencia maxima era algo asi como 65355 pero si consideras salida a display y las operaciones internas eso t baja como a 60 o 55 KHz., a pesar de todo es bueno como frecuencimetro de audio, desafortunadamente no tengo el plano del ciruito pero si el codigo (LST) pero deberas agregar algun amplificador de señal para pasar a onda cuadrada porq eso no lo coloque, use un 16f84.
Título: RE: como medir un tono con pic
Publicado por: telekitor en 10 de Noviembre de 2004, 10:45:00
Bueno vamos a ver:
1) si es un tono de audio sera de frecencia menor a 20000 Hz
2)deteccion del tono
   ¿es un tono puro(sinusoidal pura)?¿o es una señal de audio normal?

Si es un tono puro el metodo de contar los cruces por cero pede funcionar
correctamente

Si la señal es mas compleja puedes tener muchos problemas, dependiendo
de la forma de a señal,(puede cruzar varias veces por cero debido a componentes
de frecuencia superiores)

Si esto es asi la solucion estaria en hacer una estimacion espectral, mediante
una FFT y buscar el pico en la frecuencia de 400 Hz

si no especificas para que lo quieres no puedo profundizar mas Giño

mira como saltan!!!!!!!!!!!!!!!!
RebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotadoRebotado
Título: RE: como medir un tono con pic
Publicado por: JacoPastorius2004 en 10 de Noviembre de 2004, 14:47:00
Hola!

No se que proyecto tenes en mente pero fijate si el LM567 te sirve, es un decodificador de tono muy barato.
Bajate el pdf del sitio de National.