# ¿Cómo generar DTMF con PIC?



## Mushito (Dic 13, 2011)

Estimados amigos
Tengo el manual del pbp para generar DTMF y nada, lo armè en proto y nada lo simulè en el Proteus y nada, no se que estoy haciendo mal.
Por favor si alguien tiene un código en PBP o C, que le funcionó por favor súbalo al foro.
Por otra parte, no entiendo cómo se saca DTMF si esta señal vista con el osciloscopio es una mezcla de dos ondas senoidales y por la salida digital de un PIC es algo que no lo comprendo, o es la reconstrucción de PWM con condensadores?
Saludos.


----------



## D@rkbytes (Dic 14, 2011)

Mushito dijo:


> Estimados amigos
> Tengo el manual del pbp para generar DTMF y nada, lo armè en proto y nada lo simulè en el Proteus y nada, no se que estoy haciendo mal.
> Por favor si alguien tiene un código en PBP o C, que le funcionó por favor súbalo al foro.
> Por otra parte, no entiendo cómo se saca DTMF si esta señal vista con el osciloscopio es una mezcla de dos ondas senoidales y por la salida digital de un PIC es algo que no lo comprendo, o es la reconstrucción de PWM con condensadores?
> Saludos.


Necesitas subir tu código para ver en que estas mal.
Yo lo he hecho con PBP y si funciona, pero en protoboard, en el simulador no funciona bien.
Para obtener mejor respuesta en los tonos se recomienda usar un Xtal de 20Mhz
y a la salida del PIC se debe colocar un filtro integrador doble para reconstruir la forma de onda.
Si solo deseas escuchar los tonos, con un simple capacitor de 47uF a la salida del PIC
y una pequeña bocina de audífonos te servirá. Yo así escuchaba los tonos generados. 

Suerte.


----------



## Mushito (Dic 14, 2011)

Este es el codigo que no me funciona. Por favor sube el tuyo.


'****************************************************************
'*  Name    : manejo de DTMF                                                                          *
'*  Author  : xxxxxxxxxxx                                                                                 *
'*  Notice  : Copyright (c) 2011 [select VIEW...EDITOR OPTIONS]                           *
'*          : All Rights Reserved                                                                           *
'*  Date    : 22/11/2011                                                                                   *
'*  Version : 1.0                                                                                              *
'*  Notes   :                                                                                                                                                                  *
'*          :                                                                                                     *
'****************************************************************
@ device xt_osc ; oscilador externo XT 
define osc 20 ; especifica que se va a utilizar uno de 20 Mhz
INCLUDE "modedefs.bas"

DTMFOut PORTA.0,{2000,100},[0];acepta del 0 al 15 
Pause 100 ' Genera una pausa de 0.1 segundos.

END


----------



## lubeck (Dic 14, 2011)

Mushito dijo:


> DTMFOut PORTA.0,{2000,100},[0];acepta del 0 al 15
> 
> END



los corchetes no se ponen...

si no pones esos datos, toma los predeterminados...
por ejemplo si pones

DTMFOut PORTA.0,[1] manda al RA0 el tono de la tecla 1 y por default un onms de 200ms y un offms de 50ms, seria el equivalente a poner DTMFOut PORTA.0,200,50,[1]

si quieres unos tiempos diferentes pones por ejemplo...
DTMFOut PORTA.0,300,80,[1,5] manda el tono de la tecla 1 y 5


----------



## D@rkbytes (Dic 15, 2011)

Mushito dijo:


> Este es el codigo que no me funciona. Por favor sube el tuyo.


Saludos Mushito
Que tal lubeck ?
Ok. Mira Mushito, aqui te dejo el código que hice, ya tiene rato de esto.
Lo hice con un 16F628A usando un teclado matricial 3X4
Use el oscilador interno por que en esos dias andaba probando el oscilador interno.
Como sabras corre a 4 Mhz. Y la calidad de los tonos no es muy buena pero aceptable.
Otra de las cosas es que en ese tiempo no tenia un PIC mas grande
para agregar el teclado matricial y al mismo tiempo un Xtal de 20Mhz.
Y con el 16F628 al usar el teclado mas el Xtal me quedaba sin un PIN util para la salida del tono.
Como quiera funciona aceptablemente. Ya si te gusta como funciona, lo puedes hacer con un PIC mas grande.
PD. yo use solo los LED's para ver las salidas Q1 a Q4 en BCD
El display BCD no lo he buscado, y no creo que lo vendan, pero es opcional todo eso.
;***************************************************************
No se porque, pero se me ocurrio verificar los tonos con un decodificador que realize.
Y me di cuenta que tenia mal las instrucciones del * el 0 y el # 
Pero ya lo corregi, así que aqui les dejo el programa corregido,
mas el decodificador con el que comprobe los tonos generados por el PIC
para que coincidieran con el teclado matricial.

PD. El decodificador no funciona en Windows Vista 
Hasta luego y suerte.


----------



## Mushito (Dic 21, 2011)

Gracias! estimado brother, lo probarè


----------



## D@rkbytes (Dic 21, 2011)

Mushito dijo:


> Gracias! estimado brother, lo probarè


Ok. Espero te sea de utilidad.
Hasta luego, y suerte.


----------



## christiansinho747 (May 8, 2012)

Darkbytes dijo:


> Saludos Mushito
> Que tal lubeck ?
> Ok. Mira Mushito, aqui te dejo el código que hice, ya tiene rato de esto.
> Lo hice con un 16F628A usando un teclado matricial 3X4
> ...






hola me parece muy bueno tu programa para generar tonos dtmf y la aplicaicon que incluyes yo me encuentro desarrollando un proyecto similar para lo cual te pido si porfavor me puedes mandar el codigo del proyecto y si lo tienes en lenguaje c MUCHO MEJOR...espero tu respuesta y gracias de antemano


----------



## D@rkbytes (May 8, 2012)

christiansinho747 dijo:


> hola me parece muy bueno tu programa para generar tonos dtmf y la aplicaicon que incluyes yo me encuentro desarrollando un proyecto similar para lo cual te pido si porfavor me puedes mandar el codigo del proyecto y si lo tienes en lenguaje c MUCHO MEJOR...espero tu respuesta y gracias de antemano


Saludos.
El código del proyecto esta en el post #5
Esta en PIC BASIC PRO
Tengo un ejemplo escrito en C, con información acerca de la generación de ondas senoidales.
Aquí te lo adjunto, espero que te pueda servir.

Suerte y hasta luego.


----------



## dragon33 (Oct 19, 2012)

D@rkbytes dijo:


> Saludos Mushito
> Que tal lubeck ?
> Ok. Mira Mushito, aqui te dejo el código que hice, ya tiene rato de esto.
> Lo hice con un 16F628A usando un teclado matricial 3X4
> ...




¿Como se construye una señal lo mas cercana a la analógica en la salida hacia el altavoz?. Gracias.


----------



## D@rkbytes (Oct 19, 2012)

dragon33 dijo:


> ¿Como se construye una señal lo mas cercana a la analógica en la salida hacia el altavoz?. Gracias.


Utilizando filtros R/C puedes conformar la señal de salida del PIC.

Por aquí hay algunos enlaces que te pueden interesar.
https://www.forosdeelectronica.com/f24/generar-melodias-pic-9359/
https://www.forosdeelectronica.com/f24/melodias-tonos-pics-73371/
https://www.forosdeelectronica.com/f24/generar-audio-pic-2356/
https://www.forosdeelectronica.com/f24/caja-musical-pic16f84a-39190/

Suerte.


----------

