Autor Tema: Dotando de salida analógica a nuestro PIC  (Leído 35782 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Dotando de salida analógica a nuestro PIC
« en: 20 de Diciembre de 2007, 09:18:03 »
Nuestros PIC disponen de una gama enorme de periféricos entre los cuales casi satisfacen todas las necesidades, pero sin embargo y sorprendentemente no tienen una salida analógica de gran resolución. Sólo disponen de una salida de tensión variable de 4 bits de resolución que suele como Vref para el comparador, aunque es insuficiente para la mayoría de aplicaciones.

Pues bien, he probado una técnica muy simple aprendida durante el montaje de la fuente de Valdorre, que consiste en inyectar una señal PWM a un conjunto formado por resistencia + condensador y nos encontraremos la señal analógica en la unión de ambos.

Os dejo aquí un ejemplo de uso, con señal de 2KHz inyectada sobre resistencia de 47K y condensador de 10uF, con su simulación en Proteus y código fuente en CCS.

El programa es muy simple: he puesto un par de botones para aumentar o disminuir el Duty Cicle y un LCD que nos muestra los parámetros que corren en el sistema.

Si no habéis probado nunca esta técnica, os recomiendo que lo probéis; es muy ilustrativo.


Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Dotando de salida analógica a nuestro PIC
« Respuesta #1 en: 20 de Diciembre de 2007, 10:14:52 »
Y como hacias el dimmerizado en tu dimmer por control remoto ??? :lol: :lol:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Dotando de salida analógica a nuestro PIC
« Respuesta #2 en: 20 de Diciembre de 2007, 11:05:27 »
Aunque no tiene nada que ver, me corroe la duda: ¿no está al revés el condensador de 10u? El lado rayado es el que va a tierra ¿no?

Desconectado elmasvital

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 1713
Re: Dotando de salida analógica a nuestro PIC
« Respuesta #3 en: 20 de Diciembre de 2007, 11:14:32 »
Es logico que no traigan salidas analogicas... meter condensadores y resitencias dentro del pic salen caros... para eso está la combinación pwm y como bien pones condensador y resistencia.

1 saludo

Desconectado Azicuetano

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1020
    • Aplicaciones Electrónicas en Alicante.
Re: Dotando de salida analógica a nuestro PIC
« Respuesta #4 en: 20 de Diciembre de 2007, 11:16:27 »
Jejee... si es que un buen filtro vale para casi todo :mrgreen:


Un saludo desde Alicante.

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 624
Re: Dotando de salida analógica a nuestro PIC
« Respuesta #5 en: 20 de Diciembre de 2007, 11:38:20 »
Bueno , eso de que ningun PIC tiene una salida analogica no es tan cierto, el PIC16F877A tiene el Pin RA2 conectado un generador interno de voltaje que es usado para el comparador ,  entonces el pin RA2 puede usarse como una salida analoga , algo limitada a las ecuaciones del generador de voltaje, pero señal analoga al fin. EL PIC16F627A tambien tiene esta caracteristica y por lo visto el PIC18F2520 tambien la tiene.

Claro que el metodo PWM es general para cualquier PIC
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Dotando de salida analógica a nuestro PIC
« Respuesta #6 en: 20 de Diciembre de 2007, 12:09:13 »
Sí, tienes razón, juanfe, pero Proteus es tan malo que ni siquiera se había dado cuenta. Acabo de darle la vuelta y sigue funcionando perfectamente.

Marcos, el "dimmerizado" lo hago recortando el tiempo de la alterna, no generando una señal analógica.

Elmasvital, no puedo discutir contigo de algo que no tengo ni idea, pero creía que la entrada del convertidor ADC se basa precísamente en eso; en el tiempo de carga y descarga de un condensador interno.

Sander, tienes toda la razón, y te agradezco la aclaración. Los PIC tienen un generador de voltaje de 4 bits de resolución que suele utilizarse como Vref del módulo comparador. Habrá muchas situaciones en las que esta característica sea suficiente. Editaré mi mensaje original para no dar lugar a confusiones.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Dotando de salida analógica a nuestro PIC
« Respuesta #7 en: 20 de Diciembre de 2007, 15:35:08 »
Elmasvital, no puedo discutir contigo de algo que no tengo ni idea, pero creía que la entrada del convertidor ADC se basa precísamente en eso; en el tiempo de carga y descarga de un condensador interno.

Si, la captura se hace con un capacitor de "muestreo" pero es de un pequeño valor.

Lo de tener o no tener salidas analógicas es más que nada por un tema de costos y escasa aplicación más que por que no se pueda embeber.  Texas tiene una línea de microcontroladores con DACs internos de 12 bits y no son tan caros. 

Lo que ocupa mucho lugar en el silicio son las resistencias, no tanto los capacitores.

El método del PWM para generar una onda contínua es perfectamente válido para la aplicación que se está comentando ya que no se necesita extremada precisión ni saltos abruptos de tensión de un momento a otro cosa que sí puede hacer un dac.  :mrgreen:

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 624
Re: Dotando de salida analógica a nuestro PIC
« Respuesta #8 en: 20 de Diciembre de 2007, 18:47:29 »
Bueno aprovechando este topic , he decidido hacer mi primer aporte real a TODOPIC,  he hecho un ejemplo para usar el generador de referencia interna del PIC como DAC.

El ejemplo es muy simple, utilizo el PIC16F627A, la salida del DAC es RA2 y conecto dos pulsadores,   un pulsador a RB6  para incrementar el voltaje en RA2 y otro en RB7 para decrementar, RB6 y RB7 tienen sus PULL UPS habilitadas.

Segun la hoja de datos el modulo de referencia de voltaje puede trabajar en un rango alto y en un rango bajo, para variar el voltaje  se utilizan los 4 primeros bits del registro VRCON segun las siguientes ecuaciones:

Para el rango bajo:

Vref = (Vr<3:0>)*Vdd/24

Para el rango alto:

Vref =(0,25*Vdd) + (Vr<3:0>)*Vdd/32

Viendo la ecuacion para el rango alto vemos que el voltaje minimo que saca es 0,25*Vdd  Si Vdd = 5 , el voltaje minimo del rango alto es 1,25 V.  y valor maximo seria 3,59 V

1,25 V en el rango bajo equivalen a un Vr<3:0> = 6 , a partir de aqui los pasos que se dan en el rango bajo son mayores que los que se dan con el rango alto , por ejemplo:

Si  Vr<3:0> = 7 , en el rango bajo tenemos Vref = 1,458 , para esta misma condicion tenemos que:

     Vr<3:0> = 1, en el rango alto Vref =  1,406

Si  Vr<3:0> = 8 , en el rango bajo tenemos Vref = 1,666 , para esta misma condicion tenemos que:

     Vr<3:0> = 2, en el rango alto Vref =  1,562

El programa hace esta distincion, es decir que , al incrementar comenzamos en el rango bajo y cuando Vr<3:0> llega a 6 cambiamos al rango alto, esto nos permite tener pasos mas pequeños a partir de 1,25 V si Vdd = 5.

Como conlusion decir que no hay que fiarse del todo del proteus, bueno aunque ya lo sabia ultimamente no me fallaba, en la version que estoy usando del proteus la 7.2 toma el Vdd como si valiera 0,05 V y valor que sale por RA2 esta en el rango de los mV, yo lo corregi haciendo que Vdd=500 y esto hace que el valor por RA2 sea el correcto.

Bueno creo que eso es todo.

Saludos
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Dotando de salida analógica a nuestro PIC
« Respuesta #9 en: 21 de Diciembre de 2007, 06:29:07 »
Interesante aplicación, Sander. Es una pena realmente que no hayan dotado a ese periférico de mayor resolución. Total, ya que está metido, ¿porqué lo dejan a medias?.

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 624
Re: Dotando de salida analógica a nuestro PIC
« Respuesta #10 en: 21 de Diciembre de 2007, 12:08:21 »
Creo que Maunix puso algunos de los motivos por los cuales lo dejaron a medias , me parece que el principal podria ser el de escasa aplicacion,  la verdad no se me ocurren muchas aplicaciones donde sean necesarias un DAC con buena resolucion y ademas mas rapido de lo que se pueda realizar con PWM.

Bueno no se si entra aqui , pero tambien se puede sacrificar unos cuantos pines del PIC para unirlos con una red de resistencias y obtener un DAC de mayor resolucion que con el modulo VREF y mas rapido que con el PWM.

Talvez tambien seria bueno poner un ejemplo de esto ultimo , no creen?

Saludos
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Dotando de salida analógica a nuestro PIC
« Respuesta #11 en: 21 de Diciembre de 2007, 13:18:55 »
Creo que Maunix puso algunos de los motivos por los cuales lo dejaron a medias , me parece que el principal podria ser el de escasa aplicacion,  la verdad no se me ocurren muchas aplicaciones donde sean necesarias un DAC con buena resolucion y ademas mas rapido de lo que se pueda realizar con PWM.
Hacer un dac bueno no es un tema trivial de allí que tal vez no lo hayan incorporado.  Aplicaciones para un dac hay muchas pero tal vez no tantas como para justificar hacer un desarrollo de precisión con un componente interno de un microcontrolador.  Tal vez ocupa mucha área en el silicon (lo cual redunda en u$s) que prefieren usar para dotar al pic de más puertos o memoria, o lo que sea.


Bueno no se si entra aqui , pero tambien se puede sacrificar unos cuantos pines del PIC para unirlos con una red de resistencias y obtener un DAC de mayor resolucion que con el modulo VREF y mas rapido que con el PWM.

Talvez tambien seria bueno poner un ejemplo de esto ultimo , no creen?

He usado dacs R2R (que son los que creo estás queriendo mencionar).  El punto a tener en cuenta principalemnte es que las resistencias sean realmente R y de 2R.  También que no sean de baja impedancia ya que se le sacaría corriente al pic en forma innecesaria.  Por último un buen operacional con buen rango de salida completo, se llaman Rail to Rail.  No tengo ningún esquemático acá pero son un diseño bastante conocido y no estaría mal comentarlo.

El punto débil es el gran uso de pines aunque con un shift register externo uno puede terminar usando pocos pines :)
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado roboticsBCN

  • PIC10
  • *
  • Mensajes: 17
Re: Dotando de salida analógica a nuestro PIC
« Respuesta #12 en: 23 de Diciembre de 2007, 03:45:11 »
Efectivamente el motivo de que la gran mayoría de uC no incorporen un DAC es la cantidad de silicio que ocupan en el propio chip y porque necesitan de una alimentación MUY precisa para poder operar. Precisamente la alimentación interna de un uC para nada disfruta de estas características.

Si os fijáis, hay algunos uC con AD, pero la gran mayoría son de baja resolución (10 bit). Incrementar la resolución significa mejorar la relación se señal ruido y eso sale muy caro.

Buena faena Nocturno, si me permites un comentario: el problema que veo en el esquema, es que con estos componentes, la señal analógica de salida es MUY lenta. Propongo incrementar la freq. del PWM a cambio de reducir el valor de los componentes (especialmente el condensador).

Salu2!

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Dotando de salida analógica a nuestro PIC
« Respuesta #13 en: 23 de Diciembre de 2007, 04:32:56 »
Sí, es de reacción lenta. Para la aplicación que necesito no es preciso mayor velocidad (regular la tensión de salida de una fuente de alimentación) pero me gustaría conocer la relación entre frecuencia del PWM, valor de la resistencia, valor del condensador y velocidad de respuesta.

Desconectado Menta

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 607
Re: Dotando de salida analógica a nuestro PIC
« Respuesta #14 en: 23 de Diciembre de 2007, 09:59:28 »
Bueno, el valor óptimo no sé cual es, habría que calcularlo con la ecuación exponencial de carga y descarga de un RC, pero con 47K y 10uF la constante de tiempo es de 470 ms que es mucho más grande que el valor óptimo, el resultado es poco riple, pero respuesta lerdísima. Ese es el problema del filtro RC, si queremos poco riple es en detrimento de la velocidad...
Hice unos cálculos con mi calculadora  :mrgreen:

Carga = (5-V) * (1 - e(-t/RC))

Descarga = V * e(-t/RC)

Frecuencia = 2Khz ==> T = 0,5 ms

Duty 50% ==> ton = 0,25 ms toff = 0,25 ms

1) RC = 0.3 ms tenemos un riple de 0.85V es decir una salida oscilante entre 1.62 y 3.35
    (demora unos 2ms en establecerse partiendo de 0V)

2) RC = 3ms tenemos un riple de 0.09V es decir salida oscilante entre 2.4 y 2.59
    (demora unos 15ms en establecerse partiendo de 0V)

Haciendo una estimación con esos valores supongo que una constante RC=10ms dará por resultado una oscilación de 30 mV y un tiempo de establecimiento de 50ms.

Para ello fijo C en 1uF y R = 10ms/1uF = 10k
« Última modificación: 23 de Diciembre de 2007, 10:02:25 por Menta »