TODOPIC

FORO TÉCNICO => Foro Técnico => Mensaje iniciado por: micro_pepe en 21 de Julio de 2006, 13:49:54

Título: Conversor DAC por PWM
Publicado por: micro_pepe en 21 de Julio de 2006, 13:49:54
Hola, estoy intentando hacer un DAC con una salida PWM y un filtro paso bajo formado por una resistencia y un condensador. Pero no consigo encontrar una relaccion entre ambos que no sea demasiado lenta, y al mismo tiempo de una salida de continua estable.

Estoy empleando un periodo para la señal PWM de 100msg, y los mejores resultados los he obtenido con un condensador de 100uF y una resistencia de 10K. Pero la salida me oscila entre +/- 25mV.

Me gustaria saber como construir el filtro, o si existe otra solución mejor para hacer un DAC de 10 bits que no use muchos pin del pic.

Saludos y gracias.
Título: Re: Conversor DAC por PWM
Publicado por: Modulay en 21 de Julio de 2006, 14:23:39
Quizá debieras aumentar un poco la frecuencia del pwm.
También puedes probar a añadir un operacional y ponerle otro paso bajo a la salida
Título: Re: Conversor DAC por PWM
Publicado por: JavisusII en 21 de Julio de 2006, 15:01:56
Buenas,

En primer lugar espero que no me borren esta imagen, porque ya llevo 3.

Efectivamente Micro_pepe, como dice Modulay debes augmentar la frecuenciay poner
otra celula RC lo cual es muy usual .

OJO Micro_pepe, tus cálculos son acertados, pero date cuenta que el condensador que has puesto es muy grande y peligroso para otros dispositivos. Sea la solución que sea
pon la resistencia grande y disminuye el condensador.


Saludos
Título: Re: Conversor DAC por PWM
Publicado por: jfh900 en 21 de Julio de 2006, 16:06:15
micro_pepe que es exactamente lo que quieres hacer un DAC o una fuente regulable?.

Un saludo
Título: Re: Conversor DAC por PWM
Publicado por: maunix en 21 de Julio de 2006, 16:10:30
Hola, estoy intentando hacer un DAC con una salida PWM y un filtro paso bajo formado por una resistencia y un condensador. Pero no consigo encontrar una relaccion entre ambos que no sea demasiado lenta, y al mismo tiempo de una salida de continua estable.

Estoy empleando un periodo para la señal PWM de 100msg, y los mejores resultados los he obtenido con un condensador de 100uF y una resistencia de 10K. Pero la salida me oscila entre +/- 25mV.

Me gustaria saber como construir el filtro, o si existe otra solución mejor para hacer un DAC de 10 bits que no use muchos pin del pic.

Saludos y gracias.

Mi sugerencia es que uses una red RC como te ha dicho JavissII o bien usar algún filtro de 2do ordenn con operacionales.

En cuanto a la precisión, no he hecho los cálculos pero no se si puedas lograr 10 bits de precisión en el lado de DC solo por el hecho de usar 10bits de precisión del lado del PWM.  La respuesta del filtro RC o de 2do orden no es lineal por lo que dudo que sea así la relación.

Título: Re: Conversor DAC por PWM
Publicado por: micro_pepe en 21 de Julio de 2006, 16:50:59
Hola, lo que pretendo hacer es dar una tension de referencia a un comparador para hacer una fuente de alimentacion, de eso viene que quiera precision y estabilidad.

He visto un esquema de una revista (Nº260 ELEKTOR 2002) que hace eso del PWM para dar la referencia de voltaje, que determina el voltaje de salida de la fuente.

Respecto a lo del PWM he intentado hacerlo con el modulo que trae el pic, y tengo una duda que es si ambas salidas (CCP1 y CCP2) pueden funcionar con una precision de 10 bits, pues las pruebas en el proteus me dicen que no.

Saludos y gracias.
Título: Re: Conversor DAC por PWM
Publicado por: maunix en 21 de Julio de 2006, 16:53:59
Hola, lo que pretendo hacer es dar una tension de referencia a un comparador para hacer una fuente de alimentacion, de eso viene que quiera precision y estabilidad.

He visto un esquema de una revista (Nº260 ELEKTOR 2002) que hace eso del PWM para dar la referencia de voltaje, que determina el voltaje de salida de la fuente.

Respecto a lo del PWM he intentado hacerlo con el modulo que trae el pic, y tengo una duda que es si ambas salidas (CCP1 y CCP2) pueden funcionar con una precision de 10 bits, pues las pruebas en el proteus me dicen que no.

Saludos y gracias.

Me suena raro pero a los fines de responderte con precisión ¿qué pic estas usando?

Título: Re: Conversor DAC por PWM
Publicado por: micro_pepe en 21 de Julio de 2006, 17:00:41
Hola, maunix, estoy usando un PIC16F876A, y el de la fuente que menciono, es un PIC16F84, por lo que deduzco que usa una interrupción con el TIMER0 para generar el PWM, que es lo que usé yo para hacer las primeras pruevas que comente en este hilo.

Saludos y gracias.
Título: Re: Conversor DAC por PWM
Publicado por: jfh900 en 21 de Julio de 2006, 17:01:48
Bueno ya vamos aclarando algo. Lo que quieres es una fuente de CC y no un DAC. Podrias poner el esquema, para aclarar como lo estas haciendo?.

Un saludo
Título: Re: Conversor DAC por PWM
Publicado por: maunix en 22 de Julio de 2006, 00:01:57
Bueno ya vamos aclarando algo. Lo que quieres es una fuente de CC y no un DAC. Podrias poner el esquema, para aclarar como lo estas haciendo?.

Un saludo

jhf900 creo que nuestro amigo quiere decir que está usando el PWM + filtro para obtener una tensión continua que le permita "controlar" la tensión de referencia de la fuente .

Un DAC puede hacerse R2R, a capacitores conmutados, en fin de varias formas y también con un PWM .  En el PWM el 'duty cycle' tiene su correspondencia con una tensión al pasarse por el filtro.  Es la forma más simple y con menor hardware que conozco para un DAC :)  .

La conversión digital analógica será --> el valor 'digital' del duty cycle al cual se le terminará correspondiendo un valor de tensión continua.

micro_pepe en ese pic se comparte el timer de generación del PWM (eso te obliga a que ambos pwm tengan idéntica frecuencia y comienzo del ciclo de trabajo) pero de ninguna forma unon debe ser de 8 y otro de 10.

Puedes usar ambos a 10, uno a 8 y otro a 10, o ambos a 8.

Cada uno tiene un registro de configuración por separado.

Título: Re: Conversor DAC por PWM
Publicado por: jfh900 en 22 de Julio de 2006, 07:23:36
Si lo que vas a obtener a la salida es una tensión continua eso no es un DAC. Un DAC te permite hacer sintesis de ondas y este sistema no.

Un saludo.
Título: Re: Conversor DAC por PWM
Publicado por: micro_pepe en 22 de Julio de 2006, 10:10:09
Efectivamente se trata de controlar la referencia de la fuente, os dejo un esquema simplificado de la fuente:

(http://img50.imageshack.us/img50/9792/forofuentehh6.jpg)

Por otra parte estoy haciendo este programa de prueva para el PWM, pero no consigo un ciclo del 100%.

Citar
# include <16F876a.h>
# use delay(clock=4000000)
# fuses HS,NOWDT,NOPUT,PROTECT,NODEBUG,NOBROWNOUT,NOLVP,CPD
# BYTE PORTA   =  0x05
# USE FAST_IO(A)
# USE FAST_IO(B)
# USE FAST_IO(C)
long var1, var2;

void main(){
set_tris_a(0x00);
Setup_Timer_2(T2_DIV_BY_1,124,2);
Setup_CCP1(CCP_PWM);
Setup_CCP2(CCP_PWM);

var1=100;
var2=1023;

While(1){
Set_PWM1_Duty(var1);
Set_PWM2_Duty(var2);

}
}


Saludos y gracias.
Título: Re: Conversor DAC por PWM
Publicado por: Modulay en 22 de Julio de 2006, 11:58:02
Otra opción podría ser usar un conversor dc-dc tipo buck,boost,buck-boost...
Son sencillos de implementar y la tensión de salida va controlada por pwm
Les dejo un archivo donde pueden ver estos circuitillos.
De todas formas,micro_pepe,deberías probar antes a subir la frecuencia dle pwm...la frecuencia de corte de tu filtro está relativamente cercana a la de la señal que estás usando,por lo que la componente es poco absorvida por el filtro.
Perfectamente puedes usar un pwm de 1 o 10 kHz,seguramente obtendrás mejores resultados
Título: Re: Conversor DAC por PWM
Publicado por: jfh900 en 22 de Julio de 2006, 15:24:22
Tambien es conveniente realizar una realimentación negativa para estabilizar la salida y eliminar los armonicos que no suprima el filtro.

Saludos.
Título: Re: Conversor DAC por PWM
Publicado por: micro_pepe en 24 de Julio de 2006, 17:44:55
Gracias por las respuestas, efectivamente aumentando la frecuencia (unos 3Khz) la salida es mucho mas estable.

Saludos.
Título: Re: Conversor DAC por PWM
Publicado por: maunix en 24 de Julio de 2006, 19:31:35
Si lo que vas a obtener a la salida es una tensión continua eso no es un DAC. Un DAC te permite hacer sintesis de ondas y este sistema no.

Un saludo.

jfh900.. sigo sin entender tu punto.  No es que sea cabeza dura, simplemente quiero entender tu idea.

Con un PWM + filtro puedes hacer una seno , pero por supuesto no una seno de 200mhz, sino una seno de mucha menor frecuencia.

Es un dac limitado, más limitado que otros pero en definitiva estás variando y logrando una tensión analógica en función de una digital...  :)



Título: Re: Conversor DAC por PWM
Publicado por: maunix en 24 de Julio de 2006, 19:34:00
Gracias por las respuestas, efectivamente aumentando la frecuencia (unos 3Khz) la salida es mucho mas estable.

Saludos.

Es que debes aumentar la frecuencia.  Yo no haría un pwm de estas características con una frecuencia baja.  Comienza con 10Khz o más.

En cuanto a tu software, el duty cycle configuralo antes de ingresar al while.  No hace falta refrescarlo todo el tiempo.

Estas usando modo 8 bits o los 10 bits completos? Si es así, recuerda que los bits restantes estan en el registro CCPR1L (para lograr el 100%)

Saludos
Título: Re: Conversor DAC por PWM
Publicado por: jfh900 en 24 de Julio de 2006, 22:55:58
Vamos a ver. Si utilizas pwm y aplicas un filtro para obtener la frecuencia fundamental habras echo un generador senoidal pero no un DAC. El DAC debe generar cualquier forma de onda  que quieras dentro de las limitaciones de conversión que tiene, y no solo una corriente continua o una función senoidal. Ademas las implementaciones reales del DAC se hacen mediante un divisor de resistencias calculadas adecuadamente, que es mucho mas sencillo que un pwm. Claro que si tienes un circuito que solo obtiene una forma de onda y lo quieres llamar un DAC, pues lo damos por bueno. :-)

Un saludo
Título: Re: Conversor DAC por PWM
Publicado por: micro_pepe en 25 de Julio de 2006, 13:21:32
Hola, efectivamente estoy usando 10 bits, aunque no tengo muy claro como funciona el PWM, pues solo obtengo el 100% en 10 bits si pongo:

Setup_Timer_2(T2_DIV_BY_1,255,1);

con lo cual al tener en la base de tiempo 255 no puedo superar los 3,5Khz.

Saludos y gracias.
Título: Re: Conversor DAC por PWM
Publicado por: maunix en 27 de Julio de 2006, 22:12:47
Hola, efectivamente estoy usando 10 bits, aunque no tengo muy claro como funciona el PWM, pues solo obtengo el 100% en 10 bits si pongo:

Setup_Timer_2(T2_DIV_BY_1,255,1);

con lo cual al tener en la base de tiempo 255 no puedo superar los 3,5Khz.

Saludos y gracias.

micro_pepe estás confundiendo frecuencia con duty cycle.

Frecuencia = 1/Periodo

Período = [(PR2) + 1] • 4 • TOSC • (Prescaler Timer2)


Ejemplo 1:

PR2 = 10
Clock = 4 Mhz
Prescaler = 1

Periodo = (10+1) * 4  * 250nseg * 1 = 11useg
Frec =  90,909 KHz


Ejemplo 2:

PR2 = 50
Clock = 20 Mhz
Prescaler = 1

Periodo = (50+1) * 4  * 50 nseg * 1 = 10,2 useg
Frec =  98,039 KHz


Como puedes observar, es fácil lograr una gran frecuencia.

Desconozco como es esa función que usas (porque no uso CCS) , pero es muy probable que el
valor del medio sea el PR2, en cuyo caso la frecuencia disminuye drásticamente.


Veamos los mismos parámetros del Ejemplo1 pero con un PR2 de 255.

Ejemplo 3:

PR2 = 255
Clock = 4 Mhz
Prescaler = 1

Periodo = (255+1) * 4  * 250nseg * 1 = 256useg
Frec =  3,906 KHz



El DutyCycle lo manejas con el CCPR1L  y los bits CCP1CON<5:4>

Si pones CCPR1L = 255
y los bits 5 y 4, del CCP1CON en 1, tendrás tu 100% de dutycycle.



Saludos
Título: Re: Conversor DAC por PWM
Publicado por: Chaly29 en 28 de Julio de 2006, 00:47:12
Hola jfh900, creo que deberias verificar bien lo que dices, ya que con el PWM puedes hacer un DAC como cualquier otro, y segun este diseñado el filtro pasa-bajos de salida es la frecuencia máxima que poseeras, en cuanto a la forma de onda de salida tiene la misma limitación que los DAC comunes, pero puede generar cualquier tipo de onda, incluso si mal no recuerdo hay DAC que funcionan con el principio del PWM al igual que en este caso.

En este caso estoy totalmente deacuerdo con maunix.

Un saludo.

Atte. CARLOS.
Título: Re: Conversor DAC por PWM
Publicado por: jfh900 en 28 de Julio de 2006, 06:36:04
Perdona por mi desconocimiento, pero no se como se puede obtener una onda triangular a partir de una cuadrada y sin realizar ningun cambio poder obtener una señal por ejemplo exponencial. Yo creo que el DAC con PWM solo se limita a señales senoidales, donde se recupera la frecuencia fundamental mediante un filtro y se desechan los armónicos.

Un saludo.
Título: Re: Conversor DAC por PWM
Publicado por: Chaly29 en 28 de Julio de 2006, 08:17:34
Hola jfh900, viendo que no terminas de entender como el PWM puede generar distintas formas de onda, aquí te adjunto una simulación en proteus 6.7, usando el 16F628A con el PWM y generando una onda triangular.

Espero puedas sacar algo el claro.

Un saludo.

Atte. CARLOS
Título: Re: Conversor DAC por PWM
Publicado por: jfh900 en 28 de Julio de 2006, 08:46:34
Gracias Carlos por tomarte la molestia de realizar el circuito y enviarlo. Pero el circuito que me envias tiene trampa, el PWM no genera la señal triangular, si no el integrador que has puesto a continuación. De echo este circuito solo genera una onda triangular y si ahora quiero un diente de sierra? tengo que modificar el circuito? Un  autentico DAC te genera la señal que quieras sin cambiar ningun componente. Ademas no se que problema hay con los DAC, cuando con un puñado de resistencias  y si acaso un operacional, lo tenemos montado, y este si que generá la señal que queramos con solo programarle.

Un saludo.
Título: Re: Conversor DAC por PWM
Publicado por: micro_pepe en 28 de Julio de 2006, 09:33:31
Hola maunix, seguramente como dices el valor del medio es PR2, y efectivamente hice pruevas a ponerlo mas bajo del valor que puse de 255 y daba una frecuencia mayor de 3,9Khz. El problema estaba en que con la funcion del CCS que regula el duty-cicle (    Set_PWM1_Duty(var1);    ), no conseguia el 100%, probare ha hacerlo directamente con los registros que me indicas a ver que pasa.
Título: Re: Conversor DAC por PWM
Publicado por: maunix en 28 de Julio de 2006, 09:57:08
Hola maunix, seguramente como dices el valor del medio es PR2, y efectivamente hice pruevas a ponerlo mas bajo del valor que puse de 255 y daba una frecuencia mayor de 3,9Khz. El problema estaba en que con la funcion del CCS que regula el duty-cicle (    Set_PWM1_Duty(var1);    ), no conseguia el 100%, probare ha hacerlo directamente con los registros que me indicas a ver que pasa.

Bien, los registros que te pasé son del microcontrolador, es decir accedes 'directamente al hardware' sin pasar por ninguna función del CCS con lo cual te debieran funcionar si o si.  :) :)
Título: Re: Conversor DAC por PWM
Publicado por: Modulay en 28 de Julio de 2006, 11:15:07
Estoy de acuerdo con jfh900.
Chaly,mediante pwm y circuiteria adicional se pueden conseguir formas de onda concretas,pero no un DAC que pueda entregar formas de onda arbitraria.
Con un integrador tras el generador de pwm,conigues una triangular,si colocas un inversor en puente completo sacarás una senoide,etc...
Pero si quieres un diente de sierra como propone jfh900 ya la cosa se complica,ó si quieres una señal aperiódica más aún.
Un DAC tiene la forma que jfh900 indica,compuesto por unas cuantas resistencias colocadas en serie con cada uno de los bits a convertir y todas estas ramas a la entrada de un operacional(hay otras configuraciones).Con eso se consigue ya no sólo garantizar que podrás generar cualquiera forma de onda ó cualquier valor instantáneo de tensión,sino que te libras de de tener que hacer un proceso de los bits para generar posteriormente un pwm,se hace de forma directa.
En la imagen se ve un DAC típico
Título: Re: Conversor DAC por PWM
Publicado por: Chaly29 en 28 de Julio de 2006, 11:46:55
Hola a todos, vamos nuevamente, ahora generando un diente de sierra con el mismo circuito.

Un saludo a todos.

Atte. CARLOS.
Título: Re: Conversor DAC por PWM
Publicado por: jfh900 en 28 de Julio de 2006, 13:12:25
Bueno Carlos te he puesto un ejemplo muy sencillo. Pero solo era un ejemplo, puedo imaginar cientos de formas de ondas que podrias realizar con el PWM y circuitos auxiliares especificos para cada forma de onda, pero no sería un auténtico PWM. Otro ejemplo, quiero tener un tercio de periodo que sea una señal triangular, otro tercio una senoide y otro tercio una onda cuadrada (con circuiteria adicional también se puede realizar), pero con un DAC es muy sencillo.

Algúnos esquemas los pongo a continuación.

Un saludo
Título: Re: Conversor DAC por PWM
Publicado por: AlexFBP en 07 de Agosto de 2011, 19:03:03
Chaly,mediante pwm y circuiteria adicional se pueden conseguir formas de onda concretas,pero no un DAC que pueda entregar formas de onda arbitraria.

¡Pero si según lo que tengo entendido, el DAC en sí, sería la red RC y el amplificador op! El que viene a controlar la salida del DAC en efecto viene a ser la señal PWM, o sea que, para definir la forma de onda (sea cual sea), NO la definen mas componentes externos de los que mencioné anteriormente, la define en efecto el microcontrolador usado, pues, segun tengo entendido, a mas o menos duty cycle configurado en el módulo PWM del PIC16F87xA, pues ese circuito a la salida va a tener mas o menos voltaje respectivamente, no?
Título: Re: Conversor DAC por PWM
Publicado por: rivale en 07 de Agosto de 2011, 19:06:18
el post tiene 5 años desde que se creo, tal vez ya resolvieron el problema :mrgreen:
Título: Re: Conversor DAC por PWM
Publicado por: AlexFBP en 20 de Julio de 2012, 07:25:27
el post tiene 5 años desde que se creo, tal vez ya resolvieron el problema :mrgreen:
Auto LOL XD  :oops: ajajajaj :D