Ayuda con dibujar una forma de onda con un DAC

lo que quiero hacer es dibujar una señal DTMF pero la verdad no se por donde empezar

bueno para empezar tengo algunas ideas de como formar una forma de onda con el DACR2R
pero si quiero dibujar una senoidal por ejemplo

¿hay alguna forma de graficarla no se si en exel o matlab?:unsure:
para poder dar valores de resolucion y despues pasarlas aun microcontrolador y de ahi a un DAC

y una vez probados en el DAC hay forma de cosntruir la señal en PWM

son cosas que quiero probar pero por aveces falta de tiempo no he podido:(

me gustaria ver algunas opiniones y experiencias que me puedan ayudar
 
Hola.
Sí, se puede generar una aproximación digital de señal con un DAC. Cuantos más bits tenga el puerto que uses, mejor precisión.

Para averiguar los valores, tenés que partir, por ejemplo, de que tenés 8 bits de puerto.

Entonces, los valores digitales van de 0 a 255.

La función sería 255.sen(wt).

Lo que necestás hacer es ver qué valor digital está más aproximado en cada momento:
La función tiene un pico de 255 bits, donde la salida del DAC va a ser 5V.

Agarrás el excel, y graficás la función con por ejemplo, 30 valores de t.

En el instante 0 vas a tener 0, en el "pi"/2 vas a tener 255, y en el 2pi, 0 de nuevo.
En cada punto, buscàs el valor que màs se aproxime; en algunos te va a dar 122,35409 ; lo que se convierte a 122. Hay funciones de excel que te lo redondean automàticamente, pero lo podés hacer mentalmente...

Una vez obtenidos los valores, podés generar tu onda, por aproximación, punto a punto.

Sobre el mismo gráfico "analógico" de la función 255.sen(wt), graficá uno "digital" con tus valores obtenidos para cada instante. Si vez alguna irregularidad, cambiás un número y lo haces a tu gusto.

Un saludo, espero que te sirva y me hayas entendido. De lo contrario, preguntá.
 
digamos que quiero dibujar un seno montado en otro seno
como ejemplo
una senoide de 10khz y otro seno de 20khz
sumados me dan un tono DTMF por ejemplo

lo puedo representar en una grafica exel?
 
Pequenia pero importante aclaracion, 255.sen(wt) da valores entre -255 y 255. Por ello es mejor, suponiendo que mi DAC trabaja en el rango de 0 a 255, escribir 127.sen(wt)+127, lo que me dara valores de 0 a 254, o 127.5xsen wt + 127.5 para obtener todo el rango de 0 a 255.

Con respecto a los dos senos. Si, se puede hacer tranquilamente la tabla en Excel. Comenza por una tabla simple para un seno, ponela aca y de ahi vemos como seguis.

Saludos
 
Última edición:
Hola.
Algunos PIC tienen un DAC con poca resolucion con la cual puedes formar una onda sen. pero para generar un DTMF estandar utilizado en telefonia se deben cumplir algunas reglas que tratan con los tiempos minimos, la modulacion, la amplitud y frecuencia de cada señal, etc.
Hace un par años tuve la necesidad de enviar coordenas GPS mediante radios de dos bias asi que utilize DTMF para enviar la informacion. En el AN257A de microchip explica bien el proceso de generacion pero sus ejemplos no soy muy faciles de implementar al menos desde mi punto de vista. buscaba algo mas simple y encontre algunos otros documentos con los cuales pude lograr la comunicacion DTMF.

http://www.ti.com/lit/an/slaae16/slaae16.pdf
http://www.romanblack.com/SG/SG_tutorial.htm#DTMF

El ultimo ejemplo muestra realmente una solucion simple al utilizar el modulador PWM aplicado un condensador, captando la idea no tuve mucho problemas en implementarlo en un PIC18F14K50 he probado con varios CI decodificadores como el CM8880 o el HT9102 y funciona muy bien.

Saludos. Pablo
 
bueno mi idea es un poco bizarra
quiero guardar datos en un casset de audio como los extintos DATASETTE
pero si he usado el HT9102 pero es muy lento y no me sirve para guardar almenos un bit

por eso pensaba crearlo desde el microcontrolador

la pregunta es como lo dibujo en matlab o exel y que me de valores de los puntos
ahi es donde estoy perdido :(
 
No entiendo bien que quieres hacer. Por ejemplo si quieres usar la grafica para guiarte en la reconstruccion digital de la señal, por ejemplo para una señal {y=sin(x)} te dara valores en y desde -1 hasta 1 en el intervalo de 0 a 6.28 (osea un periodo de la señal).

Para pasar esta informacion a una forma escalonada de 255 niveles (8 bits) lo que yo haria es graficar y=(2.55sin(x)+2.55)/2 y de alli sacar la tabla de valores. Ahora explico la función.

2.55 es simplemente 255/100 para simplificar.
el + 2.55 es para que la funcion no tenga parte negativa ahora el minimo no es -2.55 sino 0
y el /2 es por que al sumarle 2.55 el maximo se ubica en 5.10 y queremos que esté en 2.55.

Adjunto la tabla de valores de dicha función.

Ver el archivo adjunto tabla xy.txt
 
Atrás
Arriba